From 7e65e3ba5653f0da30b72c6ab096b566c42ab6cf Mon Sep 17 00:00:00 2001 From: "claude[bot]" <41898282+claude[bot]@users.noreply.github.com> Date: Thu, 10 Sep 2026 05:26:44 +0000 Subject: [PATCH] docs: Claude Code v2.1.267 - maxEffortLevel cap, Linux sandbox, tool name limit doubled, new Anthropic repo in discovery Co-Authored-By: claude-yolo[bot] --- content/.metadata.json | 862 +++++++++--------- content/CHANGELOG.md | 56 ++ content/claude-code-manifest.json | 41 +- content/claude/government/changelog.md | 4 + .../config/plugins-and-connectors.md | 2 +- content/claude/government/config/settings.md | 2 +- .../government/connectors/microsoft-365.md | 24 +- .../government/deploy-desktop/configure.md | 33 +- .../security/security-and-data-handling.md | 50 +- .../claude-desktop/connectors-m365.md | 6 +- .../claude-desktop/data-storage.md | 7 +- .../agents-and-tools/tool-use/define-tools.md | 2 +- content/en/api/beta.md | 8 - content/en/api/beta/sessions.md | 8 - content/en/api/beta/sessions/events.md | 4 - content/en/api/beta/sessions/events/stream.md | 4 - content/en/api/beta/sessions/threads.md | 4 - .../en/api/beta/sessions/threads/events.md | 4 - .../beta/sessions/threads/events/stream.md | 4 - content/en/api/cli/beta.md | 304 ------ content/en/api/cli/beta/sessions.md | 304 ------ content/en/api/cli/beta/sessions/events.md | 152 --- .../en/api/cli/beta/sessions/events/stream.md | 152 --- content/en/api/cli/beta/sessions/threads.md | 152 --- .../api/cli/beta/sessions/threads/events.md | 152 --- .../beta/sessions/threads/events/stream.md | 152 --- content/en/api/cli/completions.md | 33 - content/en/api/cli/completions/create.md | 33 - content/en/api/completions.md | 2 - content/en/api/completions/create.md | 2 - content/en/api/csharp/beta.md | 8 - content/en/api/csharp/beta/sessions.md | 8 - content/en/api/csharp/beta/sessions/events.md | 4 - .../api/csharp/beta/sessions/events/stream.md | 4 - .../en/api/csharp/beta/sessions/threads.md | 4 - .../csharp/beta/sessions/threads/events.md | 4 - .../beta/sessions/threads/events/stream.md | 4 - content/en/api/csharp/completions.md | 2 - content/en/api/csharp/completions/create.md | 2 - content/en/api/go/beta.md | 8 - content/en/api/go/beta/sessions.md | 8 - content/en/api/go/beta/sessions/events.md | 4 - .../en/api/go/beta/sessions/events/stream.md | 4 - content/en/api/go/beta/sessions/threads.md | 4 - .../en/api/go/beta/sessions/threads/events.md | 4 - .../go/beta/sessions/threads/events/stream.md | 4 - content/en/api/go/completions.md | 2 - content/en/api/go/completions/create.md | 2 - content/en/api/java/beta.md | 8 - content/en/api/java/beta/sessions.md | 8 - content/en/api/java/beta/sessions/events.md | 4 - .../api/java/beta/sessions/events/stream.md | 4 - content/en/api/java/beta/sessions/threads.md | 4 - .../api/java/beta/sessions/threads/events.md | 4 - .../beta/sessions/threads/events/stream.md | 4 - content/en/api/java/completions.md | 2 - content/en/api/java/completions/create.md | 2 - content/en/api/php/beta.md | 4 - content/en/api/php/beta/sessions.md | 4 - content/en/api/php/beta/sessions/events.md | 2 - .../en/api/php/beta/sessions/events/stream.md | 2 - content/en/api/php/beta/sessions/threads.md | 2 - .../api/php/beta/sessions/threads/events.md | 2 - .../beta/sessions/threads/events/stream.md | 2 - content/en/api/php/completions.md | 2 - content/en/api/php/completions/create.md | 2 - content/en/api/python/beta.md | 8 - content/en/api/python/beta/sessions.md | 8 - content/en/api/python/beta/sessions/events.md | 4 - .../api/python/beta/sessions/events/stream.md | 4 - .../en/api/python/beta/sessions/threads.md | 4 - .../python/beta/sessions/threads/events.md | 4 - .../beta/sessions/threads/events/stream.md | 4 - content/en/api/python/completions.md | 2 - content/en/api/python/completions/create.md | 2 - content/en/api/ruby/beta.md | 8 - content/en/api/ruby/beta/sessions.md | 8 - content/en/api/ruby/beta/sessions/events.md | 4 - .../api/ruby/beta/sessions/events/stream.md | 4 - content/en/api/ruby/beta/sessions/threads.md | 4 - .../api/ruby/beta/sessions/threads/events.md | 4 - .../beta/sessions/threads/events/stream.md | 4 - content/en/api/ruby/completions.md | 2 - content/en/api/ruby/completions/create.md | 2 - content/en/api/typescript/beta.md | 8 - content/en/api/typescript/beta/sessions.md | 8 - .../en/api/typescript/beta/sessions/events.md | 4 - .../typescript/beta/sessions/events/stream.md | 4 - .../api/typescript/beta/sessions/threads.md | 4 - .../beta/sessions/threads/events.md | 4 - .../beta/sessions/threads/events/stream.md | 4 - content/en/api/typescript/completions.md | 2 - .../en/api/typescript/completions/create.md | 2 - content/en/claude_api_primer.md | 2 +- content/en/docs/claude-code/admin-setup.md | 9 +- content/en/docs/claude-code/advisor.md | 17 +- .../docs/claude-code/agent-sdk/agent-loop.md | 26 +- .../agent-sdk/claude-code-features.md | 14 +- .../claude-code/agent-sdk/custom-tools.md | 12 +- content/en/docs/claude-code/agent-sdk/mcp.md | 4 +- .../agent-sdk/modifying-system-prompts.md | 12 +- .../docs/claude-code/agent-sdk/permissions.md | 14 +- .../en/docs/claude-code/agent-sdk/python.md | 8 +- .../claude-code/agent-sdk/streaming-output.md | 12 +- .../docs/claude-code/agent-sdk/subagents.md | 2 +- .../docs/claude-code/agent-sdk/typescript.md | 181 ++-- content/en/docs/claude-code/agent-teams.md | 2 +- content/en/docs/claude-code/agent-view.md | 4 +- content/en/docs/claude-code/amazon-bedrock.md | 17 + content/en/docs/claude-code/artifacts.md | 26 +- content/en/docs/claude-code/authentication.md | 14 +- .../en/docs/claude-code/auto-mode-config.md | 6 +- content/en/docs/claude-code/changelog.md | 56 ++ .../claude-code/claude-apps-gateway-deploy.md | 70 +- .../claude-code/claude-apps-gateway-on-aws.md | 6 +- .../docs/claude-code/claude-apps-gateway.md | 19 +- .../claude-code/claude-code-on-the-web.md | 4 +- .../en/docs/claude-code/claude-directory.md | 16 +- content/en/docs/claude-code/cli-reference.md | 38 +- content/en/docs/claude-code/commands.md | 6 +- content/en/docs/claude-code/context-window.md | 4 +- .../en/docs/claude-code/debug-your-config.md | 2 +- .../en/docs/claude-code/discover-plugins.md | 2 +- content/en/docs/claude-code/env-vars.md | 17 +- content/en/docs/claude-code/errors.md | 374 +++++++- content/en/docs/claude-code/glossary.md | 2 +- content/en/docs/claude-code/headless.md | 13 +- content/en/docs/claude-code/hooks-guide.md | 2 +- content/en/docs/claude-code/hooks.md | 25 +- content/en/docs/claude-code/iam.md | 14 +- .../en/docs/claude-code/interactive-mode.md | 31 + content/en/docs/claude-code/keybindings.md | 36 +- .../en/docs/claude-code/large-codebases.md | 18 +- .../docs/claude-code/llm-gateway-protocol.md | 15 +- .../docs/claude-code/llm-gateway-rollout.md | 2 +- .../en/docs/claude-code/managed-settings.md | 15 +- content/en/docs/claude-code/mcp.md | 10 +- content/en/docs/claude-code/memory.md | 2 +- content/en/docs/claude-code/model-config.md | 14 +- content/en/docs/claude-code/network-config.md | 1 + content/en/docs/claude-code/output-styles.md | 38 +- .../en/docs/claude-code/permission-modes.md | 6 +- content/en/docs/claude-code/permissions.md | 44 +- .../docs/claude-code/plugin-dependencies.md | 2 + .../docs/claude-code/plugin-marketplaces.md | 15 +- .../en/docs/claude-code/plugins-reference.md | 4 +- content/en/docs/claude-code/plugins.md | 7 +- content/en/docs/claude-code/prompt-caching.md | 18 +- content/en/docs/claude-code/remote-control.md | 9 +- content/en/docs/claude-code/sandboxing.md | 3 + content/en/docs/claude-code/security.md | 2 +- .../self-hosted-environments-configuration.md | 14 +- .../self-hosted-environments-deploy.md | 22 +- .../self-hosted-environments-reference.md | 18 +- .../claude-code/server-managed-settings.md | 30 +- content/en/docs/claude-code/sessions.md | 6 +- .../en/docs/claude-code/settings-example.md | 11 +- .../en/docs/claude-code/settings-reference.md | 112 ++- content/en/docs/claude-code/settings.md | 7 +- content/en/docs/claude-code/sub-agents.md | 33 +- .../en/docs/claude-code/tools-reference.md | 3 +- content/en/docs/claude-code/vs-code.md | 13 +- content/en/docs/claude-code/workflows.md | 12 +- ...how-do-i-log-out-of-all-active-sessions.md | 2 +- ...-can-i-delete-my-claude-console-account.md | 4 +- ...k-settings-on-team-and-enterprise-plans.md | 2 +- ...ser-feedback-settings-on-claude-console.md | 2 +- .../10593882-share-and-unshare-chats.md | 6 +- ...ith-local-mcp-servers-on-claude-desktop.md | 2 +- content/support/11101966-use-voice-mode.md | 8 +- ...the-claude-lti-in-canvas-by-instructure.md | 2 +- ...and-memory-to-build-on-previous-context.md | 10 +- ...being-asked-to-verify-my-payment-method.md | 2 +- .../11869629-use-claude-with-android-apps.md | 2 +- ...or-team-and-seat-based-enterprise-plans.md | 10 +- ...12173-get-started-with-claude-in-chrome.md | 2 +- ...eam-plan-from-monthly-to-annual-billing.md | 4 +- ...11783-create-and-edit-files-with-claude.md | 6 +- .../12157520-claude-code-usage-analytics.md | 2 +- .../support/12260368-use-incognito-chats.md | 2 +- .../support/12293051-use-claude-in-xcode.md | 2 +- ...age-usage-credits-for-paid-claude-plans.md | 2 +- ...6728-troubleshoot-claude-error-messages.md | 2 +- .../support/12512180-use-skills-in-claude.md | 2 +- ...d-using-the-desktop-extension-allowlist.md | 8 +- .../12618689-claude-code-on-the-web.md | 6 +- ...-quick-entry-with-claude-desktop-on-mac.md | 2 +- ...analytics-for-team-and-enterprise-plans.md | 24 +- ...2446-claude-in-chrome-permissions-guide.md | 4 +- .../12997503-team-plan-billing-faqs.md | 2 +- .../13132885-set-up-single-sign-on-sso.md | 8 +- ...3133195-set-up-jit-or-scim-provisioning.md | 6 +- ...1-configuring-session-security-settings.md | 6 +- .../13189465-log-in-to-your-claude-account.md | 2 +- .../13325567-account-management-faqs.md | 2 +- ...13345190-get-started-with-claude-cowork.md | 2 +- ...mizing-your-console-appearance-settings.md | 2 +- ...13371040-log-in-to-your-console-account.md | 2 +- ...13641943-visual-and-interactive-content.md | 6 +- .../support/13756069-public-sector-faqs.md | 2 +- ...33-manage-plugins-for-your-organization.md | 2 +- .../support/13837440-use-plugins-in-claude.md | 4 +- ...hedule-recurring-tasks-in-claude-cowork.md | 2 +- ...gn-tasks-from-anywhere-in-claude-cowork.md | 4 +- ...ur-tasks-with-projects-in-claude-cowork.md | 12 +- ...sync-works-for-enterprise-organizations.md | 4 +- content/support/14503613-sso-login.md | 6 +- ...43-set-up-scim-in-claude-for-government.md | 6 +- content/support/14503775-mcp-web-search.md | 2 +- ...-up-your-design-system-in-claude-design.md | 2 +- ...min-guide-for-team-and-enterprise-plans.md | 2 +- ...14604416-get-started-with-claude-design.md | 2 +- ...t-a-default-model-for-your-organization.md | 2 +- ...nage-model-access-for-your-organization.md | 8 +- ...1-get-started-with-1password-for-claude.md | 2 +- ...rstanding-your-pro-or-max-plan-invoices.md | 2 +- ...program-to-workspaces-in-claude-console.md | 12 +- .../8114491-get-started-with-claude.md | 2 +- ...8230524-delete-or-rename-a-conversation.md | 16 +- .../support/8325618-paid-plan-billing-faqs.md | 2 +- ...27-customizing-your-appearance-settings.md | 6 +- ...nt-to-a-team-or-enterprise-organization.md | 2 +- ...77-how-can-i-create-and-manage-projects.md | 8 +- ...9-manage-project-visibility-and-sharing.md | 10 +- ...d-usage-reporting-in-the-claude-console.md | 8 +- .../9547008-publish-and-share-artifacts.md | 8 +- ...e-public-projects-for-your-organization.md | 2 +- discovery.json | 3 +- tombstones.json | 2 +- 229 files changed, 1938 insertions(+), 2815 deletions(-) diff --git a/content/.metadata.json b/content/.metadata.json index 07fd421ba..be6fffa3a 100644 --- a/content/.metadata.json +++ b/content/.metadata.json @@ -1,7 +1,7 @@ { "metadata": { "version": "2.0", - "fetch_date": "2026-09-09T18:54:28.793138Z", + "fetch_date": "2026-09-10T05:24:52.053555Z", "section": "all" }, "items": [ @@ -219,7 +219,7 @@ "url": "https://platform.claude.com/docs/en/agents-and-tools/tool-use/define-tools", "status": "success", "path": "en/agents-and-tools/tool-use/define-tools.md", - "sha256": "c25ce034e35f0c5d1ca3fdd2504d41a951f02665c8e86d789551b8ae55637441", + "sha256": "58d22e8fdeebaf5874019f7aa06bb2950423ef42c0c0043d6ee65a583c172f85", "size": 37555 }, { @@ -1745,15 +1745,15 @@ "url": "https://platform.claude.com/docs/en/api/completions", "status": "success", "path": "en/api/completions.md", - "sha256": "4c8bf98cb1ce9521a1d8046ab06972cae8f503860cb5beadcbe85ebefa439d99", - "size": 14288 + "sha256": "feeeda2e7b55e7d6e7378458e696aab359cabce6b13d4c16c2b199031a8a79d8", + "size": 14265 }, { "url": "https://platform.claude.com/docs/en/api/completions/create", "status": "success", "path": "en/api/completions/create.md", - "sha256": "b8efb8acfe13c3839927c3b78360813bee67356f9aa764a1b71b915f1f289708", - "size": 11393 + "sha256": "89653663a29793495a061d87b77efe74256094b3b91892a32a4bf3c549436c9f", + "size": 11370 }, { "url": "https://platform.claude.com/docs/en/api/messages", @@ -1962,8 +1962,8 @@ "url": "https://platform.claude.com/docs/en/api/beta", "status": "success", "path": "en/api/beta.md", - "sha256": "0b073779d05a37d8a8ec258eff3cb63c2e299a645870db8f1c2a23d3a280bf50", - "size": 2124775 + "sha256": "e833db03264772b497cfbbda1960093da9ff4ec72ca9c3acc251b6356aba12ba", + "size": 2124327 }, { "url": "https://platform.claude.com/docs/en/api/beta/models", @@ -2228,8 +2228,8 @@ "url": "https://platform.claude.com/docs/en/api/beta/sessions", "status": "success", "path": "en/api/beta/sessions.md", - "sha256": "178c0a7f88e103af2b06b598237cfe0d10f76819a6333b2d80d6163349ed7daf", - "size": 720493 + "sha256": "4915403938586b4545b26417ab3ba7bd05ea599e38eb0971eace1e1b2eaefbbf", + "size": 720045 }, { "url": "https://platform.claude.com/docs/en/api/beta/sessions/create", @@ -2277,8 +2277,8 @@ "url": "https://platform.claude.com/docs/en/api/beta/sessions/events", "status": "success", "path": "en/api/beta/sessions/events.md", - "sha256": "1b3add0b0ea12b75e84991f8be26a8550c58a1bb9e494991f0611dbafe16af06", - "size": 406114 + "sha256": "0a36f1debd490a66c93a458e50f4bd783ec13eca347c4609e5fe9cb2ab3c2882", + "size": 405896 }, { "url": "https://platform.claude.com/docs/en/api/beta/sessions/events/list", @@ -2298,8 +2298,8 @@ "url": "https://platform.claude.com/docs/en/api/beta/sessions/events/stream", "status": "success", "path": "en/api/beta/sessions/events/stream.md", - "sha256": "62dd00ae8c82a2b873cd02a22daceb441147788ed51440297ac6de070eee8dac", - "size": 69067 + "sha256": "74e9bd3a25f0ef148c906e3c1f60a18d6489a3569076104420dfcd0858351d10", + "size": 68849 }, { "url": "https://platform.claude.com/docs/en/api/beta/sessions/resources", @@ -2347,8 +2347,8 @@ "url": "https://platform.claude.com/docs/en/api/beta/sessions/threads", "status": "success", "path": "en/api/beta/sessions/threads.md", - "sha256": "6922ba006ea66782fa19a1faf048a58410b1b91d17ccb3509dbd1d3836daf7c9", - "size": 288219 + "sha256": "0360745cae552625277f266a5ecb44b9ce5ffc55e50487087c6419c54e8b6431", + "size": 287989 }, { "url": "https://platform.claude.com/docs/en/api/beta/sessions/threads/list", @@ -2375,8 +2375,8 @@ "url": "https://platform.claude.com/docs/en/api/beta/sessions/threads/events", "status": "success", "path": "en/api/beta/sessions/threads/events.md", - "sha256": "8ab7a3a94b1a667e697f555130634e8d7c0fae669e5c3353cf785d51c557c338", - "size": 134875 + "sha256": "0f4399d7a8d1ad6a2d1bec1eb59f7057549611bba012810a44e78723ac44996a", + "size": 134645 }, { "url": "https://platform.claude.com/docs/en/api/beta/sessions/threads/events/list", @@ -2389,8 +2389,8 @@ "url": "https://platform.claude.com/docs/en/api/beta/sessions/threads/events/stream", "status": "success", "path": "en/api/beta/sessions/threads/events/stream.md", - "sha256": "4f6a53d57f23ab3035d490f0e562b67ced81e29ba4bd7623aa7898f98ac38bac", - "size": 69169 + "sha256": "0cbbaf63bc25ab3d075ebaeeae0bef39ec920c0d3aea880b8cfd9e5da1ffa4cd", + "size": 68939 }, { "url": "https://platform.claude.com/docs/en/api/beta/deployments", @@ -4888,7 +4888,7 @@ "url": "https://platform.claude.com/docs/en/claude_api_primer", "status": "success", "path": "en/claude_api_primer.md", - "sha256": "b4cdb755c75808de14a6f1676808e0194462734b634b7de145dbac2d1ea5cab3", + "sha256": "606cd1bee7353e93f3a3d244d6561bd708a3e49ae6d0d9cf5cc9d60eba9b6317", "size": 28147 }, { @@ -4923,8 +4923,8 @@ "url": "https://code.claude.com/docs/en/changelog", "status": "success", "path": "en/docs/claude-code/changelog.md", - "sha256": "06dd6bf9134ce020cb4bb76d4ee55fcb365cff27b7466e4e82c28cfcb5533bb6", - "size": 671658 + "sha256": "bf5f577551ad6459d444e473d210238aaab280881c9162a8be00ed72e88faffe", + "size": 679797 }, { "url": "https://code.claude.com/docs/en/how-claude-code-works", @@ -4944,36 +4944,36 @@ "url": "https://code.claude.com/docs/en/claude-directory", "status": "success", "path": "en/docs/claude-code/claude-directory.md", - "sha256": "d00af7e2458e3135ff9509781dd35723ab61265cb2674a06916e519d692683f7", - "size": 99440 + "sha256": "949efc8d560f951e3db828976f873ac73dcfc281133a9af1935690589ad97cd6", + "size": 99321 }, { "url": "https://code.claude.com/docs/en/context-window", "status": "success", "path": "en/docs/claude-code/context-window.md", - "sha256": "ccb5e7b8acd4d35afe57f57e46c6a4c6c48956c87969e6b27a99582521fdc966", - "size": 61555 + "sha256": "aed34268947d9ad8e5eaee057f7428eeb913b72da1a8e34ab105fd5558424a06", + "size": 61504 }, { "url": "https://code.claude.com/docs/en/prompt-caching", "status": "success", "path": "en/docs/claude-code/prompt-caching.md", - "sha256": "72b79475888820e70ca030f10701e84817015f0938375d954f55eb7a348cbf89", - "size": 39915 + "sha256": "48fc7bdce45dae304fcfbccb74328e7358936f22c9daf1e85fd1607722f9ccca", + "size": 40852 }, { "url": "https://code.claude.com/docs/en/memory", "status": "success", "path": "en/docs/claude-code/memory.md", - "sha256": "20fc80cfc8a59ed983f36887690e609bda37db74692ff8fff5ea57b0ddb8e69d", - "size": 37368 + "sha256": "69a0358e18ac29f59dc3f1782384eba4e2c6bae29e4320611a6390a5aef81067", + "size": 37525 }, { "url": "https://code.claude.com/docs/en/sessions", "status": "success", "path": "en/docs/claude-code/sessions.md", - "sha256": "bb939bdc512b175ecdda2ad3b65d15bb99c6d38f4887a3cff817b4335778f302", - "size": 38317 + "sha256": "ded87757c4421ed8ccafabba28b541781ee3d0e360f4b543acc3b04c02b8ec93", + "size": 38784 }, { "url": "https://code.claude.com/docs/en/common-workflows", @@ -5007,8 +5007,8 @@ "url": "https://code.claude.com/docs/en/remote-control", "status": "success", "path": "en/docs/claude-code/remote-control.md", - "sha256": "539f5edda29533e116af024f1cc80e36812d1547681bfc09281f6237551ed6b8", - "size": 62530 + "sha256": "358742fd85c6163107ba64ac9e182a0548c7fd239357162de4efc0e18bed4d74", + "size": 62738 }, { "url": "https://code.claude.com/docs/en/mobile", @@ -5035,8 +5035,8 @@ "url": "https://code.claude.com/docs/en/vs-code", "status": "success", "path": "en/docs/claude-code/vs-code.md", - "sha256": "64b79624947f142a047644976c52eb7f3ef1bf30e7d8c36c1bf1c1235c29a96a", - "size": 64453 + "sha256": "a0e5b3aa4e3e200ef7e076ea9a4736201d98ff8ec10dba1a4559178bb0d533c3", + "size": 66151 }, { "url": "https://code.claude.com/docs/en/jetbrains", @@ -5070,8 +5070,8 @@ "url": "https://code.claude.com/docs/en/claude-code-on-the-web", "status": "success", "path": "en/docs/claude-code/claude-code-on-the-web.md", - "sha256": "732c47ee8aff55c054990863267847a78ec9ea06ed66b8a9bdc21af96c22bab6", - "size": 38852 + "sha256": "71a62b53b59053b863af0c96ee6c5f5c2f519c6a244cd67465e283b13511b98d", + "size": 39265 }, { "url": "https://code.claude.com/docs/en/routines", @@ -5189,22 +5189,22 @@ "url": "https://code.claude.com/docs/en/sub-agents", "status": "success", "path": "en/docs/claude-code/sub-agents.md", - "sha256": "1f6010ad306bb13aa6120597668a7b9cd32f02f2638f6d197a567f2431ea0a87", - "size": 113120 + "sha256": "73532b0b6accc67223319be1b24adec1e3b41a9d96a580770694ce718437d2bc", + "size": 113078 }, { "url": "https://code.claude.com/docs/en/agent-view", "status": "success", "path": "en/docs/claude-code/agent-view.md", - "sha256": "5fd0a7ebbee7aeb99703dda7bac9fa27f623adf66d907c2a624b6b92cf5d5112", - "size": 249650 + "sha256": "3867379da06226c4f1337dfcb980da342a841c30d0f9e419afe7b77d9fdefbe5", + "size": 249764 }, { "url": "https://code.claude.com/docs/en/agent-teams", "status": "success", "path": "en/docs/claude-code/agent-teams.md", - "sha256": "d746d5be8e828ad123a07dc1342100d81c211064a84e794c024cdea64d68138e", - "size": 40760 + "sha256": "f1eda9dccfdb487448e693fad701d0198d4690241650e3859624303e2a9f970e", + "size": 40971 }, { "url": "https://code.claude.com/docs/en/cross-session-messaging", @@ -5217,8 +5217,8 @@ "url": "https://code.claude.com/docs/en/workflows", "status": "success", "path": "en/docs/claude-code/workflows.md", - "sha256": "a11d4cee1cf55e1614adc849d50227e66aece34b5f4b71341a1b7420fa4185bf", - "size": 38556 + "sha256": "7bcd5b7fb045d11fac39e8ccf6025d38c79e8df6dfa8862d9bbab81995ae2dfd", + "size": 39615 }, { "url": "https://code.claude.com/docs/en/worktrees", @@ -5238,8 +5238,8 @@ "url": "https://code.claude.com/docs/en/mcp", "status": "success", "path": "en/docs/claude-code/mcp.md", - "sha256": "d0c06aae1fd430e5e1e2a6d9e9e761cc5e0c1221e878981f2d7604bb68c197a3", - "size": 112086 + "sha256": "6eb0ec76ddcb57cd8a138b2f3bef5020f186262ab9c2fe620adfa51fcce13603", + "size": 113035 }, { "url": "https://code.claude.com/docs/en/skills", @@ -5252,28 +5252,28 @@ "url": "https://code.claude.com/docs/en/discover-plugins", "status": "success", "path": "en/docs/claude-code/discover-plugins.md", - "sha256": "8aeebd7458df6f4be47eec725e0ed7953768907bccb6f5616004382718cbfd37", - "size": 33962 + "sha256": "54bdd0313e00579d8bfecf68144ea25d68ae37d6d627521f519d70303da98ab2", + "size": 33950 }, { "url": "https://code.claude.com/docs/en/plugins", "status": "success", "path": "en/docs/claude-code/plugins.md", - "sha256": "f4c9cd6cba060f7e2d7ea1b5e90231d9386f0f08324cba3032da5c65ae44ebb9", - "size": 29069 + "sha256": "5a0772d4f9dbfb3ccc384af5ae3a1bc6fc9daea6713ac2d47c63553e6bd464c8", + "size": 30162 }, { "url": "https://code.claude.com/docs/en/artifacts", "status": "success", "path": "en/docs/claude-code/artifacts.md", - "sha256": "e0e8a04c2feb8903a2e6b55124f5b2e5f8c3e4128d66f34f514156c133c61f12", - "size": 37524 + "sha256": "0f148397173f2e9c29244248740ba037c793e5fa3c4a75b7a741a7ff6b947431", + "size": 40529 }, { "url": "https://code.claude.com/docs/en/hooks-guide", "status": "success", "path": "en/docs/claude-code/hooks-guide.md", - "sha256": "72a1eed90101d2107d7843c990f7b1b77fb4bdb67b36e45202e9ee23f8546f35", + "sha256": "b5632cf6b8c78f04797a91ed590ed7718f6af17cc923a856cbad3b3a2f7138a8", "size": 81859 }, { @@ -5301,8 +5301,8 @@ "url": "https://code.claude.com/docs/en/headless", "status": "success", "path": "en/docs/claude-code/headless.md", - "sha256": "0c383578287609e7cfcc0c091688d4079d94fe6d55515cb5c12840f4813206b9", - "size": 35442 + "sha256": "8c3d88d22cbde5db709f29f43c225e08fbdf0d347098e87a84d2b399fbde80b5", + "size": 36066 }, { "url": "https://code.claude.com/docs/en/deep-links", @@ -5315,8 +5315,8 @@ "url": "https://code.claude.com/docs/en/large-codebases", "status": "success", "path": "en/docs/claude-code/large-codebases.md", - "sha256": "2119e2a0200fa627d151b6bfc5567b9f2339c7b7cb9ca47ab02a2f93423ddecd", - "size": 35434 + "sha256": "ccaf014e4b5bb5d1f89b6320784d680179ee94039a1856f40119fe4d8aa467a9", + "size": 35714 }, { "url": "https://code.claude.com/docs/en/troubleshoot-install", @@ -5336,22 +5336,22 @@ "url": "https://code.claude.com/docs/en/debug-your-config", "status": "success", "path": "en/docs/claude-code/debug-your-config.md", - "sha256": "bcfefa14489e66b73ebc45cbb21a2f42aa44f47fbf38f63ad61753cd96537217", - "size": 23689 + "sha256": "08a9a7963a467a947e86ce53d7545ab0701100f213f37232e54befed4441a137", + "size": 23694 }, { "url": "https://code.claude.com/docs/en/errors", "status": "success", "path": "en/docs/claude-code/errors.md", - "sha256": "28b95740873af7700a13ae1bc7f8c25386e30175cf530d509dfbe663a3621f6a", - "size": 369555 + "sha256": "c0b0753e850810f04f73c043924cca1e519fd14f77141f1a1e515ae9bc00ffea", + "size": 402528 }, { "url": "https://code.claude.com/docs/en/admin-setup", "status": "success", "path": "en/docs/claude-code/admin-setup.md", - "sha256": "30763d703d7fb5cc216996e7f4e0d47fee943fb0079ef75bc11649b3af7c376d", - "size": 40423 + "sha256": "be808602dcfae635423ddeb59347c1d58ce53ca6e9debb1c89f3eb8754299f5a", + "size": 41437 }, { "url": "https://code.claude.com/docs/en/setup", @@ -5364,22 +5364,22 @@ "url": "https://code.claude.com/docs/en/authentication", "status": "success", "path": "en/docs/claude-code/authentication.md", - "sha256": "3f6e642c34855e58d8d88ed766a8fc1878aabed1a9ed76b1cda4cf27efe74ce4", - "size": 28458 + "sha256": "bf535f977b9e5d794b07a3375039a42b3a97e8ba4f896e83d493456c392bf96f", + "size": 29535 }, { "url": "https://code.claude.com/docs/en/managed-settings", "status": "success", "path": "en/docs/claude-code/managed-settings.md", - "sha256": "b38741fa2b67d61834d4d7209de877d93463d763505ef2090df03c32faf04d75", - "size": 62195 + "sha256": "474fabdd0e21e3681c0623388b1798edfe31f25d56e84af43f844b92b9b7b4a7", + "size": 64391 }, { "url": "https://code.claude.com/docs/en/server-managed-settings", "status": "success", "path": "en/docs/claude-code/server-managed-settings.md", - "sha256": "093eb5863706732863549bae3177b7deb146e87d16f858053ece3c0a4f2938b7", - "size": 44463 + "sha256": "8e7a0e4545e8e12507ad6ac1004e608e1d02179be6b8435f265f07d0f195ef0c", + "size": 46110 }, { "url": "https://code.claude.com/docs/en/managed-mcp", @@ -5392,8 +5392,8 @@ "url": "https://code.claude.com/docs/en/auto-mode-config", "status": "success", "path": "en/docs/claude-code/auto-mode-config.md", - "sha256": "d3a8c7f034a5b056a70afbd540adfe9d9e6497a9b8919462ff86bacf0123d2ee", - "size": 35413 + "sha256": "8cf836f14171b07eb4c9a26c47e65ca41a27f4053c939898252a172210081192", + "size": 35791 }, { "url": "https://code.claude.com/docs/en/third-party-integrations", @@ -5413,8 +5413,8 @@ "url": "https://code.claude.com/docs/en/amazon-bedrock", "status": "success", "path": "en/docs/claude-code/amazon-bedrock.md", - "sha256": "156256e9b96ae11c8e6dfb36382889c68c8dbe5ab10a610e16c3e6422b8bf785", - "size": 41197 + "sha256": "8128f8bd49a21a8917324981a467fa4c1826fb1a3d6d57f192ccabcbc2c0c0d7", + "size": 42834 }, { "url": "https://code.claude.com/docs/en/claude-platform-on-aws", @@ -5441,8 +5441,8 @@ "url": "https://code.claude.com/docs/en/network-config", "status": "success", "path": "en/docs/claude-code/network-config.md", - "sha256": "a8809399f9232704d0c3e42bb6219cee31321bf438c1cfd52554ca0309ee628f", - "size": 39068 + "sha256": "37954df0b7775772198b3ffc6690ff19b520ee8974633a22f1719b8db07aa3fd", + "size": 39698 }, { "url": "https://code.claude.com/docs/en/corporate-launcher", @@ -5469,8 +5469,8 @@ "url": "https://code.claude.com/docs/en/claude-apps-gateway", "status": "success", "path": "en/docs/claude-code/claude-apps-gateway.md", - "sha256": "2cdfbcbd137c3844d977b51a182ac4b3eed7bc7d1ffd229b4dd47b3542800fff", - "size": 57603 + "sha256": "e93487955aced4946e1cff68b094d56224f333f1e656401c76d06911d6034ac4", + "size": 58757 }, { "url": "https://code.claude.com/docs/en/claude-apps-gateway-config", @@ -5490,15 +5490,15 @@ "url": "https://code.claude.com/docs/en/claude-apps-gateway-deploy", "status": "success", "path": "en/docs/claude-code/claude-apps-gateway-deploy.md", - "sha256": "c3f8c11ce41d5c758933be80761c424f5a60f88098fbde12990cdd8d5e2e815c", - "size": 54711 + "sha256": "0b0fbd350248e16167f1fedcbcf88570088408c1e80ae020810b0c3f5557c1ba", + "size": 69931 }, { "url": "https://code.claude.com/docs/en/claude-apps-gateway-on-aws", "status": "success", "path": "en/docs/claude-code/claude-apps-gateway-on-aws.md", - "sha256": "039b3519cf692bdd7ac27a4d85d2e8c960fab31a84560570fb7152237236a60d", - "size": 50780 + "sha256": "f2bfe2859aefd42acffcc4d8e61d3c3fb1572a24bcb3a05ea391a29b877422df", + "size": 51083 }, { "url": "https://code.claude.com/docs/en/claude-apps-gateway-on-gcp", @@ -5525,15 +5525,15 @@ "url": "https://code.claude.com/docs/en/llm-gateway-rollout", "status": "success", "path": "en/docs/claude-code/llm-gateway-rollout.md", - "sha256": "025814d0a36d440c1153d6a35079b5a3d70481d852e8a991b609941d40ddcc9f", - "size": 32592 + "sha256": "12a0e018c724b243a3b57f71633ec5ea5856be0e860b9a784c3f5da31a72df4d", + "size": 32752 }, { "url": "https://code.claude.com/docs/en/llm-gateway-protocol", "status": "success", "path": "en/docs/claude-code/llm-gateway-protocol.md", - "sha256": "09d9b059ef57328ab83263db2b5d6c8bf82932c2e4d3732aa600c3d661150e08", - "size": 34622 + "sha256": "a7202b36cfd845a5dadb303d407ae1f737d8de66a43d2e3574497d7f69949783", + "size": 34879 }, { "url": "https://code.claude.com/docs/en/monitoring-usage", @@ -5560,15 +5560,15 @@ "url": "https://code.claude.com/docs/en/plugin-marketplaces", "status": "success", "path": "en/docs/claude-code/plugin-marketplaces.md", - "sha256": "ed1d6ff6bd440957c09f3a2ba937ff6901b83e9cdfee9cfc8b73e5573ad2665e", - "size": 116750 + "sha256": "b4e24fbb220bba40120fff65cf2f0f17556b1f313abd6507dbb71e0a84fe52d3", + "size": 117783 }, { "url": "https://code.claude.com/docs/en/plugin-dependencies", "status": "success", "path": "en/docs/claude-code/plugin-dependencies.md", - "sha256": "cc3f69f1e2868e4a242c75a9ad76a26854ae71ac5616e017906e08e6b8e0f975", - "size": 24148 + "sha256": "566c016cf497b7e27052dffed7a4458b7875fa7f48a360c7b1a1e43995fea154", + "size": 24396 }, { "url": "https://code.claude.com/docs/en/plugin-hints", @@ -5588,8 +5588,8 @@ "url": "https://code.claude.com/docs/en/security", "status": "success", "path": "en/docs/claude-code/security.md", - "sha256": "1a79ec70c2c3f73fa21bba5d5e6908e717d8ef9de04c50dbaf89dff855571100", - "size": 12646 + "sha256": "b1e29041159b512f992ed30ec0b081fb01ab465fc47166190002df9ca13f8638", + "size": 12878 }, { "url": "https://code.claude.com/docs/en/data-usage", @@ -5623,43 +5623,43 @@ "url": "https://code.claude.com/docs/en/settings", "status": "success", "path": "en/docs/claude-code/settings.md", - "sha256": "8f4f41b72ef40c332e1a0b21e274795934be75d77bc879b24e9a6f0f7b8bd041", - "size": 57951 + "sha256": "21ae4e9c5eb6ba961e39b6d2215344bd301f2a6313cbc18c4f107fdd3f73ff01", + "size": 58564 }, { "url": "https://code.claude.com/docs/en/settings-reference", "status": "success", "path": "en/docs/claude-code/settings-reference.md", - "sha256": "b4f721e577a95ae4f5fcec10ab9cca9df25e592aabb8191061e657ba62ea5e15", - "size": 428690 + "sha256": "ca8028b4bef6b527283a2bf08e4b8fb9f8513f4be3958250b9152be402f26386", + "size": 434670 }, { "url": "https://code.claude.com/docs/en/settings-example", "status": "success", "path": "en/docs/claude-code/settings-example.md", - "sha256": "2241aa001dd72b36754f430b82a9fd18f26473e4ee36224ccd0a1d23601513c5", - "size": 15016 + "sha256": "86e06ed3ff05f33354094cf76fa5d2d51cb0ea6ee23e4a690c69fdb01a640afa", + "size": 15669 }, { "url": "https://code.claude.com/docs/en/permissions", "status": "success", "path": "en/docs/claude-code/permissions.md", - "sha256": "2d34cc2010ae31732d660ac4e3d203bef8140cbe1926467bac197e777644ad64", - "size": 77965 + "sha256": "6cc02236c28e33b38f1977f95d5c1b3c8805c0ad97cb377866cd1de1c5cb8cbc", + "size": 79884 }, { "url": "https://code.claude.com/docs/en/permission-modes", "status": "success", "path": "en/docs/claude-code/permission-modes.md", - "sha256": "9e060f198a8927cd21500af5ff1ed847c2d5e6c096928be841043e740c650f33", - "size": 80148 + "sha256": "72ecdef3d08bf2164052cc57fd5db8021a5a2b54f26a650a19724d8213f1b9f3", + "size": 80189 }, { "url": "https://code.claude.com/docs/en/sandboxing", "status": "success", "path": "en/docs/claude-code/sandboxing.md", - "sha256": "b97101f6ba0705b2290bf4f310a33937379a234fc0ee8e98716fbd37d894c7fc", - "size": 74083 + "sha256": "9173fa7bfc40900080b167be86897899912ce55ff61ad1072f71a5eab69e80ce", + "size": 75062 }, { "url": "https://code.claude.com/docs/en/sandbox-environments", @@ -5693,15 +5693,15 @@ "url": "https://code.claude.com/docs/en/self-hosted-environments-deploy", "status": "success", "path": "en/docs/claude-code/self-hosted-environments-deploy.md", - "sha256": "cb42afcb2a5fca1a55043918f0f21ac42d637d8807a7baf537f36848914a19da", - "size": 58733 + "sha256": "ca956e16e1ac95806858a845c8e1ff60a4b2c8a11397404d430c16db3753ac5c", + "size": 60811 }, { "url": "https://code.claude.com/docs/en/self-hosted-environments-configuration", "status": "success", "path": "en/docs/claude-code/self-hosted-environments-configuration.md", - "sha256": "d3c12f32a742fc9e62ef2187775ac21a885ca8bf26c555b80bbb7cd7291797a6", - "size": 52532 + "sha256": "ea12d20d5a276a8ea1fdead3ba100fa8021a10d8d5e0e7e08c6c65b7b6e34e9d", + "size": 53114 }, { "url": "https://code.claude.com/docs/en/self-hosted-environments-testing", @@ -5714,8 +5714,8 @@ "url": "https://code.claude.com/docs/en/self-hosted-environments-reference", "status": "success", "path": "en/docs/claude-code/self-hosted-environments-reference.md", - "sha256": "60212158e9622fe7aba3bef515930d2c942f3d07219c34d89f2c0e442873e5c2", - "size": 86181 + "sha256": "4739e5cb92adb1b34c04e2d5a81861d3f93cd8358bc7504aa5de16b03690d782", + "size": 86490 }, { "url": "https://code.claude.com/docs/en/self-hosted-environments-identity", @@ -5728,8 +5728,8 @@ "url": "https://code.claude.com/docs/en/model-config", "status": "success", "path": "en/docs/claude-code/model-config.md", - "sha256": "ab87291087ba35fa70800f0ae579cd62053161f21aec2c544ffd2e2f05d2976c", - "size": 109319 + "sha256": "ee7bc6489e19d93a548a0e4b9e74f18e6b823d759e2a004b55e1ab5c7821ae21", + "size": 110275 }, { "url": "https://code.claude.com/docs/en/fast-mode", @@ -5742,15 +5742,15 @@ "url": "https://code.claude.com/docs/en/advisor", "status": "success", "path": "en/docs/claude-code/advisor.md", - "sha256": "19bb7ba9d8109401a141b3b2c8007fc2ed821741fbdc239e6b989ff7169b5ab3", - "size": 17727 + "sha256": "85cf79fb9bbbfd3931d4e5862e0edc795e325a7f772f53d52b15c66853628d90", + "size": 18362 }, { "url": "https://code.claude.com/docs/en/output-styles", "status": "success", "path": "en/docs/claude-code/output-styles.md", - "sha256": "d8c88e6e4a3e9588a030e3a894696d5d58e7a5443e7b9489e27b23a307a98a39", - "size": 11488 + "sha256": "ee687cf4fca32cf584f711e0e53a2dc161e9874d61bdd0e9d21fff9696edf71e", + "size": 11621 }, { "url": "https://code.claude.com/docs/en/terminal-config", @@ -5791,43 +5791,43 @@ "url": "https://code.claude.com/docs/en/keybindings", "status": "success", "path": "en/docs/claude-code/keybindings.md", - "sha256": "3fac64d235a72d3397e17312cbabdb3398ce70cb862a7eab04ddd83ac8630bac", - "size": 43875 + "sha256": "d170308ad1e378b3128caf78e55aa713ed11470d01463d89a3bcd30eca23c6b4", + "size": 44158 }, { "url": "https://code.claude.com/docs/en/cli-reference", "status": "success", "path": "en/docs/claude-code/cli-reference.md", - "sha256": "6ae8a3d11304335d6120418865a78a44316661756d5e9ed5cb12d1989560f272", - "size": 109589 + "sha256": "adb9c54834d3b757be74a6010ade324b2e7822cdf6add91d7fb0413873293509", + "size": 113300 }, { "url": "https://code.claude.com/docs/en/commands", "status": "success", "path": "en/docs/claude-code/commands.md", - "sha256": "721d78821ddce13b839376bbf37dc6139bd8f08737f2bde564844bdb0257ec22", - "size": 175101 + "sha256": "427c727590e91f7f06fc5bf233af574ef24ddc9bfd20a7d6df65ece628434a9b", + "size": 175106 }, { "url": "https://code.claude.com/docs/en/env-vars", "status": "success", "path": "en/docs/claude-code/env-vars.md", - "sha256": "a35fda0578aa4831ca6cb64ee7deba9818a9eff2618a37fe77f6a53f024b082d", - "size": 481454 + "sha256": "a2e450e338df4921fedf8a4d6349da010fb4bd9de2cbc5f1d02529ca47e45555", + "size": 484329 }, { "url": "https://code.claude.com/docs/en/tools-reference", "status": "success", "path": "en/docs/claude-code/tools-reference.md", - "sha256": "3aa16013a3ecf2e62f268ec48825e5ac25d3820e4777886aed9d7eaa9c69db7e", - "size": 106691 + "sha256": "6f4311f69231cc54b54ae9deced919c7937f3545f182bf352bb92d38ce58c1e2", + "size": 106766 }, { "url": "https://code.claude.com/docs/en/interactive-mode", "status": "success", "path": "en/docs/claude-code/interactive-mode.md", - "sha256": "89164db03cc606e2f994016896a0fc784b55e73ff8bcffe1c0aaba3431ab2099", - "size": 87344 + "sha256": "9ddab25ddb7ac5e181e7bf4fd110161b5410461ed61ead720b1cf7115c2d938b", + "size": 90000 }, { "url": "https://code.claude.com/docs/en/checkpointing", @@ -5840,15 +5840,15 @@ "url": "https://code.claude.com/docs/en/hooks", "status": "success", "path": "en/docs/claude-code/hooks.md", - "sha256": "e4dec0f63dbf6d4556f2ea0b7c5a71c7c250aab568d265d70473fb8e46017110", - "size": 319363 + "sha256": "b387875a7957cf3451e74471c48c88c5afc0843850788aaaecefc4599ca2b4f0", + "size": 319955 }, { "url": "https://code.claude.com/docs/en/plugins-reference", "status": "success", "path": "en/docs/claude-code/plugins-reference.md", - "sha256": "fd266dad75176c0c4f997ff587401bafffb41399ba3bc78c9ba9d6927cabb5be", - "size": 117944 + "sha256": "65ccac0ce011a4d500c5613cf74cb850f55ab3e0927bfa91c8d6d02471b5baf4", + "size": 118247 }, { "url": "https://code.claude.com/docs/en/channels-reference", @@ -5861,8 +5861,8 @@ "url": "https://code.claude.com/docs/en/glossary", "status": "success", "path": "en/docs/claude-code/glossary.md", - "sha256": "545f84773f3c55d32941a94b885a31625b55e4d84ae15540c6a6a929f84567c5", - "size": 23456 + "sha256": "8dc3e3e2f1b5d37a54dd2d622ec5d95fc5f9509ec6553351cd3ec837e3af582d", + "size": 23506 }, { "url": "https://code.claude.com/docs/en/agent-sdk/overview", @@ -5903,15 +5903,15 @@ "url": "https://code.claude.com/docs/en/agent-sdk/agent-loop", "status": "success", "path": "en/docs/claude-code/agent-sdk/agent-loop.md", - "sha256": "9228c381aca0943bbaad8952cef9209f18944ca8ca57c46d5d3de16bfdf9f089", - "size": 48906 + "sha256": "a2b4426257b024dfdec36a164df4db3bb7dc9b9203d441aad19855496a9f797f", + "size": 49605 }, { "url": "https://code.claude.com/docs/en/agent-sdk/claude-code-features", "status": "success", "path": "en/docs/claude-code/agent-sdk/claude-code-features.md", - "sha256": "651d36b3a2a9adb30b9ea58524a2e5b7744bdbd700d99642721807cbcf5cfbf7", - "size": 28070 + "sha256": "57e4ddef10b85b80215ae060afb7a1c9a9dad7701a52a57f8390d411c8d71f19", + "size": 29536 }, { "url": "https://code.claude.com/docs/en/agent-sdk/sessions", @@ -5945,8 +5945,8 @@ "url": "https://code.claude.com/docs/en/agent-sdk/streaming-output", "status": "success", "path": "en/docs/claude-code/agent-sdk/streaming-output.md", - "sha256": "fff2a8384040829deade1431be8d2e9344e1836a0a81fbdeadb99acf72f6ef64", - "size": 13994 + "sha256": "500f01fde1a92663ff70d4d61e19f7fa454b941e32cdd2171acb41216bf19bb4", + "size": 14833 }, { "url": "https://code.claude.com/docs/en/agent-sdk/structured-outputs", @@ -5959,15 +5959,15 @@ "url": "https://code.claude.com/docs/en/agent-sdk/custom-tools", "status": "success", "path": "en/docs/claude-code/agent-sdk/custom-tools.md", - "sha256": "9759f40090b27cbb53a882f76bd8c6c1c9d47771a43a6bdda138f55ac97b6076", - "size": 41094 + "sha256": "839f9e77351743e25c28455ae2fe841498dba2cc2e0cca090fa5533e856f65aa", + "size": 41393 }, { "url": "https://code.claude.com/docs/en/agent-sdk/mcp", "status": "success", "path": "en/docs/claude-code/agent-sdk/mcp.md", - "sha256": "38d3bf3173e53b1f8a4bdf8e574a561ca1f1ad28600c9e91b20ea508bf3d7d09", - "size": 35875 + "sha256": "6c825ca20031c7494d157449c68deb67bf1596790b8a2596c704eee9902cf0aa", + "size": 35899 }, { "url": "https://code.claude.com/docs/en/agent-sdk/tool-search", @@ -5980,15 +5980,15 @@ "url": "https://code.claude.com/docs/en/agent-sdk/subagents", "status": "success", "path": "en/docs/claude-code/agent-sdk/subagents.md", - "sha256": "74ec0f8f4f1690b1eebcb3879f0215ffa456d67995730e6bb35d0cfb81db5382", - "size": 45398 + "sha256": "279ffda8a50c4a30333720c7939cef049cf64ea4876e07260d5ddd8e58cd1ed7", + "size": 45403 }, { "url": "https://code.claude.com/docs/en/agent-sdk/modifying-system-prompts", "status": "success", "path": "en/docs/claude-code/agent-sdk/modifying-system-prompts.md", - "sha256": "8f6d7fc8148988538521ff74ffecb748e2344c358bcd497a5b2363a8a3208adc", - "size": 25833 + "sha256": "e337ab15ea5a1172b8a1a09c332ac01c6472d559ba3ea775a67661bd36a02912", + "size": 27675 }, { "url": "https://code.claude.com/docs/en/agent-sdk/skills", @@ -6008,8 +6008,8 @@ "url": "https://code.claude.com/docs/en/agent-sdk/permissions", "status": "success", "path": "en/docs/claude-code/agent-sdk/permissions.md", - "sha256": "7b1310733aaa94ef09d460072e4134e1d46e6442d67c1ba56fc8ba708b3a114e", - "size": 24738 + "sha256": "7d0d0929f4e41e635803e5c20ad027944ed01f14f55a4bb02a814ca3c743b3f5", + "size": 25000 }, { "url": "https://code.claude.com/docs/en/agent-sdk/hooks", @@ -6064,8 +6064,8 @@ "url": "https://code.claude.com/docs/en/agent-sdk/typescript", "status": "success", "path": "en/docs/claude-code/agent-sdk/typescript.md", - "sha256": "9296d3ad1b7719850fd50c291ae09ea49d2bf6cfe121db22e77b523cdb6f0da0", - "size": 336397 + "sha256": "21bb02873d4aee6d6ffd39c9401dca891c57423489b9133e98fdac8513d9ac65", + "size": 356693 }, { "url": "https://code.claude.com/docs/en/agent-sdk/typescript-v2-preview", @@ -6078,8 +6078,8 @@ "url": "https://code.claude.com/docs/en/agent-sdk/python", "status": "success", "path": "en/docs/claude-code/agent-sdk/python.md", - "sha256": "065665ff7e6119d00741c2f1d92164bfbeccf1f16773621b5314a2e666462aa8", - "size": 198313 + "sha256": "14b214e0ffde49dc2fd7b9ec157be353fd1e0576dd762cd8b07a3c83c9cbfc2c", + "size": 198289 }, { "url": "https://code.claude.com/docs/en/whats-new/index", @@ -8738,8 +8738,8 @@ "url": "https://support.claude.com/en/articles/8114491-get-started-with-claude", "status": "success", "path": "support/8114491-get-started-with-claude.md", - "sha256": "19fc3b490a570ad50c22b18ab929ae20b4917ae2c9f958927671554a03099e50", - "size": 5298 + "sha256": "0fb92db3c74a3744784afd67fad6b8e95f6320e6314c739b170913eeaeba9c44", + "size": 5306 }, { "url": "https://support.claude.com/en/articles/8114494-how-up-to-date-is-claude-s-training-data", @@ -8815,8 +8815,8 @@ "url": "https://support.claude.com/en/articles/8230524-delete-or-rename-a-conversation", "status": "success", "path": "support/8230524-delete-or-rename-a-conversation.md", - "sha256": "4bec8acf71a660c0e4c4707a81e513c8d4cb855ac1e2d548432b92af1cf04692", - "size": 5887 + "sha256": "2ab7534ed0b6e815cbd346a73df6f28463baa3a8953ebe8bb30950b514f38b29", + "size": 5885 }, { "url": "https://support.claude.com/en/articles/8241126-upload-files-to-claude", @@ -8885,8 +8885,8 @@ "url": "https://support.claude.com/en/articles/8325618-paid-plan-billing-faqs", "status": "success", "path": "support/8325618-paid-plan-billing-faqs.md", - "sha256": "3f9c8c2d413d6fc87b2de9bdccd3ae36b055aff0f55796155748c8b76817142e", - "size": 4551 + "sha256": "9cad379460d2758cddba4b5d61f271b943662db73a866633107ea1019494995b", + "size": 4553 }, { "url": "https://support.claude.com/en/articles/8325621-i-would-like-to-input-sensitive-data-into-my-chats-with-claude-who-can-view-my-conversations", @@ -8948,8 +8948,8 @@ "url": "https://support.claude.com/en/articles/8887527-customizing-your-appearance-settings", "status": "success", "path": "support/8887527-customizing-your-appearance-settings.md", - "sha256": "606d1c999f08aa69d7a9d1e4a80dd929dc9c14e803797642db39bab73128bd53", - "size": 1874 + "sha256": "f7374e8c84a91d024fc0e047f8d3a3843a996ba54bfd9f0c079153b67ff7735f", + "size": 1870 }, { "url": "https://support.claude.com/en/articles/8896518-does-anthropic-crawl-data-from-the-web-and-how-can-site-owners-block-the-crawler", @@ -9123,7 +9123,7 @@ "url": "https://support.claude.com/en/articles/9267400-move-your-personal-claude-account-to-a-team-or-enterprise-organization", "status": "success", "path": "support/9267400-move-your-personal-claude-account-to-a-team-or-enterprise-organization.md", - "sha256": "4fcb5c445f39a76a064e9d7d97c7d365b5608584ba707a1d86fc546fc91e6f4f", + "sha256": "fe79c65bd5904c0998a9a0b5e434eb5cd717a7bfeda1c3ed02c98bd39f4df1fd", "size": 9729 }, { @@ -9172,15 +9172,15 @@ "url": "https://support.claude.com/en/articles/9519177-how-can-i-create-and-manage-projects", "status": "success", "path": "support/9519177-how-can-i-create-and-manage-projects.md", - "sha256": "34f55785f07ab65efbca3ec54e37d2c8a4362fa001f871b9468b8a694d163c99", - "size": 9415 + "sha256": "9569e9811f37b88de9388e4a300a7f88531668fa940916b07bd0a6ab45665eaa", + "size": 9423 }, { "url": "https://support.claude.com/en/articles/9519189-manage-project-visibility-and-sharing", "status": "success", "path": "support/9519189-manage-project-visibility-and-sharing.md", - "sha256": "ee380ba195b58515ba3715fafc4eb28cbf4dbbfa0c9496f06d3294b06a8b2cc8", - "size": 8573 + "sha256": "d5eaf218ba1381e9cae7f4f2eebec082a066467eba365e1b380dc8a1a498d948", + "size": 8561 }, { "url": "https://support.claude.com/en/articles/9519291-what-is-anthropic-s-policy-for-handling-governmental-requests-for-user-information", @@ -9200,15 +9200,15 @@ "url": "https://support.claude.com/en/articles/9534590-cost-and-usage-reporting-in-the-claude-console", "status": "success", "path": "support/9534590-cost-and-usage-reporting-in-the-claude-console.md", - "sha256": "39b7414f8000921f176d9e4f082a76d9b36bee3643af341109be3e440a52f050", - "size": 5098 + "sha256": "4d407aaa74a923925314a81201ba03e72b236ef038d153c97b62033c76e76a33", + "size": 5108 }, { "url": "https://support.claude.com/en/articles/9547008-publish-and-share-artifacts", "status": "success", "path": "support/9547008-publish-and-share-artifacts.md", - "sha256": "1aa5e845a9cc9d81d1877a051408492ad660f39e42f9beee89d10da3f2ba6ac5", - "size": 7187 + "sha256": "ee5bc5af059dd7901bf6cc125796f9f04226e77d939a2cfc5e338ef3ecc99107", + "size": 7201 }, { "url": "https://support.claude.com/en/articles/9612887-install-claude-for-android", @@ -9284,8 +9284,8 @@ "url": "https://support.claude.com/en/articles/9927533-disable-public-projects-for-your-organization", "status": "success", "path": "support/9927533-disable-public-projects-for-your-organization.md", - "sha256": "23bff92491e4bf2f14c82d99bbaf154b23276c99a243ec3017afa2bcdcef51cc", - "size": 2580 + "sha256": "100233b868bfe73a62d993df752c984302792f8d4a7838e10b8c74522182a829", + "size": 2578 }, { "url": "https://support.claude.com/en/articles/9927624-add-or-update-your-team-plan-s-tax-or-vat-id", @@ -9424,15 +9424,15 @@ "url": "https://support.claude.com/en/articles/10310342-how-do-i-log-out-of-all-active-sessions", "status": "success", "path": "support/10310342-how-do-i-log-out-of-all-active-sessions.md", - "sha256": "1c95416f074e6ac57cfee58cdd49758528d10b253f0912eb0f4f63d902595383", - "size": 2494 + "sha256": "f6c5dbe107d83f9ab052f49c7e23c98b95c30206a28f1a7b4b284326c7c5d90a", + "size": 2492 }, { "url": "https://support.claude.com/en/articles/10366376-how-can-i-delete-my-claude-console-account", "status": "success", "path": "support/10366376-how-can-i-delete-my-claude-console-account.md", - "sha256": "9f39c9a0f80d1c9d28eca85beafe6ba7bc87daf9be47f282fea33376e10db0eb", - "size": 3163 + "sha256": "7c2730cdc9b1b65d06804b2e3a6570e90a5c39ad43c69a08e2a5eb30d7cd6014", + "size": 3167 }, { "url": "https://support.claude.com/en/articles/10366389-how-can-i-get-higher-rate-limits-on-the-claude-api", @@ -9473,14 +9473,14 @@ "url": "https://support.claude.com/en/articles/10504844-manage-user-feedback-settings-on-team-and-enterprise-plans", "status": "success", "path": "support/10504844-manage-user-feedback-settings-on-team-and-enterprise-plans.md", - "sha256": "72623393ba4436657876c026b171e4d81362ed5ae8926cc30006978f97e68d3b", + "sha256": "87d32711127d44db7a362dc8a782e2dc3aa25287161ea73cbb2498d0ed98522b", "size": 1034 }, { "url": "https://support.claude.com/en/articles/10504853-manage-user-feedback-settings-on-claude-console", "status": "success", "path": "support/10504853-manage-user-feedback-settings-on-claude-console.md", - "sha256": "7665a85d87cef1e1cbbab3d0831d6a0f51b09ed3d417dda53a44edf0b158e1eb", + "sha256": "81a99121b67f9b56a35d126c385f3b1bf3ce0935f4d7d1a15641fdacac05f3b6", "size": 997 }, { @@ -9494,8 +9494,8 @@ "url": "https://support.claude.com/en/articles/10593882-share-and-unshare-chats", "status": "success", "path": "support/10593882-share-and-unshare-chats.md", - "sha256": "1191bf77286bd3b56fd843abce5de4f0e95c4a73d209d3e6e147546a995bd1e9", - "size": 4018 + "sha256": "4f188adb8fa9caf54f80a9794c47aef6a1ebf402f0e6d949d581d5054f84af08", + "size": 4014 }, { "url": "https://support.claude.com/en/articles/10684626-enable-and-use-web-search", @@ -9522,8 +9522,8 @@ "url": "https://support.claude.com/en/articles/10949351-getting-started-with-local-mcp-servers-on-claude-desktop", "status": "success", "path": "support/10949351-getting-started-with-local-mcp-servers-on-claude-desktop.md", - "sha256": "e8a30b92fe1ba9b8552e0b4c5160ddbcf9a8bc5a41489c36e4f40f5c521d8405", - "size": 8267 + "sha256": "deaf3abe3e0965da2fc5596b1e994e30b0282d5c0c265a50c0cfb69f97ab512a", + "size": 8269 }, { "url": "https://support.claude.com/en/articles/11049741-what-is-the-max-plan", @@ -9564,8 +9564,8 @@ "url": "https://support.claude.com/en/articles/11101966-use-voice-mode", "status": "success", "path": "support/11101966-use-voice-mode.md", - "sha256": "b67410039b23b3c8491e7dd786f1b5277fa735a7101bf866b7c91c071e2d04f1", - "size": 10550 + "sha256": "289395364d99fdfe4ad9feaaef3222ad84f5a9a4cddf1247fa55d5d240f61b5d", + "size": 10556 }, { "url": "https://support.claude.com/en/articles/11107691-why-is-a-coupon-or-promotion-not-available-for-my-account", @@ -9697,7 +9697,7 @@ "url": "https://support.claude.com/en/articles/11725453-set-up-the-claude-lti-in-canvas-by-instructure", "status": "success", "path": "support/11725453-set-up-the-claude-lti-in-canvas-by-instructure.md", - "sha256": "4cc9f9536b489229e161fe853a18214956a94e6c2b5a5f86d9993ac0ea84efca", + "sha256": "8e6523603c62b432bd792e2629dcf7a356a45f6f2c88e7787b12c79e787ea708", "size": 2748 }, { @@ -9711,14 +9711,14 @@ "url": "https://support.claude.com/en/articles/11817273-use-claude-s-chat-search-and-memory-to-build-on-previous-context", "status": "success", "path": "support/11817273-use-claude-s-chat-search-and-memory-to-build-on-previous-context.md", - "sha256": "4dea2ac383b5cf82a03e3e0cd56a8dd964822b862b959d75c3a6d7d321b51cf8", - "size": 25690 + "sha256": "45ddaeb77eae3f0698b11b8e0981fb57bfa08ec8f222f9a8c1ec73a1cfa50bd6", + "size": 25692 }, { "url": "https://support.claude.com/en/articles/11818288-why-am-i-being-asked-to-verify-my-payment-method", "status": "success", "path": "support/11818288-why-am-i-being-asked-to-verify-my-payment-method.md", - "sha256": "0bc0bc1d2eef46e91821a629b8fcab561e590df969230305cebf521951c679a0", + "sha256": "d0049fd353af635bbd14041505629fae07db4b575a2e181f36dfbe26ecd0fc4f", "size": 816 }, { @@ -9753,8 +9753,8 @@ "url": "https://support.claude.com/en/articles/11869629-use-claude-with-android-apps", "status": "success", "path": "support/11869629-use-claude-with-android-apps.md", - "sha256": "6be04c89c27820f0a3a9f5ae83dd6f47564aa2f4b0e4998eeccf3c94200284e1", - "size": 13993 + "sha256": "297d19922a6fe7890136432e59417694e72652ebeb282d1bc49843572966bb1c", + "size": 13995 }, { "url": "https://support.claude.com/en/articles/11932705-automated-security-reviews-in-claude-code", @@ -9788,15 +9788,15 @@ "url": "https://support.claude.com/en/articles/12005970-manage-usage-credits-for-team-and-seat-based-enterprise-plans", "status": "success", "path": "support/12005970-manage-usage-credits-for-team-and-seat-based-enterprise-plans.md", - "sha256": "0a9e51d845ff88df5028f8f56a57f9d7d55630c733bd94b2fd692f7750e268c5", - "size": 9703 + "sha256": "c413f725996db2d2c7ebf672c1e6cad08b158fe7f041e5b464243c6def2bd2a6", + "size": 9711 }, { "url": "https://support.claude.com/en/articles/12012173-get-started-with-claude-in-chrome", "status": "success", "path": "support/12012173-get-started-with-claude-in-chrome.md", - "sha256": "872941a150e4610d5230495e973e49bf95c32c3ed18592b714da50ee366c98a6", - "size": 14853 + "sha256": "6e74568cafd30b9fc3a06e3940452cf8b671f3b83d3f768869ede2e93591bb83", + "size": 14855 }, { "url": "https://support.claude.com/en/articles/12053672-what-happens-to-a-user-s-data-when-they-are-removed-from-a-team-or-enterprise-organization", @@ -9809,7 +9809,7 @@ "url": "https://support.claude.com/en/articles/12083917-change-your-team-plan-from-monthly-to-annual-billing", "status": "success", "path": "support/12083917-change-your-team-plan-from-monthly-to-annual-billing.md", - "sha256": "24cba28b16a06a0b643a7b8026b26ac989b111234567a2c85b97e942eb7517db", + "sha256": "7ffa9c510f4a843382f4a5c835a4a36bc854d7e96680e3a262d9452950464fc9", "size": 1394 }, { @@ -9823,8 +9823,8 @@ "url": "https://support.claude.com/en/articles/12111783-create-and-edit-files-with-claude", "status": "success", "path": "support/12111783-create-and-edit-files-with-claude.md", - "sha256": "d53cfb56e8ae27f0a31b3c761e48e64bec62eb0e8dd3e9999686b8146b578812", - "size": 17956 + "sha256": "8ba7030ed6ada8916b75ddcec5b5f1fdb208647ab3780904f6b7bc17b1572ed5", + "size": 17962 }, { "url": "https://support.claude.com/en/articles/12119250-model-safety-bug-bounty-program", @@ -9851,22 +9851,22 @@ "url": "https://support.claude.com/en/articles/12157520-claude-code-usage-analytics", "status": "success", "path": "support/12157520-claude-code-usage-analytics.md", - "sha256": "a50ceec0cda89198cb3d059992e8770cb227807f2dc58c165c7aa9c0e4820af0", - "size": 6427 + "sha256": "332d95c7244507cc691dee5340887ed3aea25be6aa615d51c9efc2a5e5e9ec07", + "size": 6429 }, { "url": "https://support.claude.com/en/articles/12260368-use-incognito-chats", "status": "success", "path": "support/12260368-use-incognito-chats.md", - "sha256": "28533efaedbda79336c570458fee37073e779a9aa85c294fe22c57670bb21c9d", - "size": 3594 + "sha256": "19ef259adfc9e750e6f0c5c805ccb57c68c078ad9c440a01764e5878b2fbd81b", + "size": 3600 }, { "url": "https://support.claude.com/en/articles/12293051-use-claude-in-xcode", "status": "success", "path": "support/12293051-use-claude-in-xcode.md", - "sha256": "3e3f353b327512d3c575d26ce49d9401fc0c975931217edf46442021326f966b", - "size": 1909 + "sha256": "d2c3b61dfeb14aa12b746e4b130d4c1515e2cde87ad232f002addab0fdaf79a8", + "size": 1907 }, { "url": "https://support.claude.com/en/articles/12304248-manage-api-key-environment-variables-in-claude-code", @@ -9907,14 +9907,14 @@ "url": "https://support.claude.com/en/articles/12429409-manage-usage-credits-for-paid-claude-plans", "status": "success", "path": "support/12429409-manage-usage-credits-for-paid-claude-plans.md", - "sha256": "198653dd6964088ee69b16186095b27c8d9cd670f4591c435d46016997c76711", + "sha256": "eb005c28a30cf18d3ed5c22f663b16ef0612beae82926dfd40b3cd8cbcad6971", "size": 6414 }, { "url": "https://support.claude.com/en/articles/12466728-troubleshoot-claude-error-messages", "status": "success", "path": "support/12466728-troubleshoot-claude-error-messages.md", - "sha256": "a78d3b75fd34f6fa24d4b7a101d13844d15f4dd481cedb5d526db7b7a69488fb", + "sha256": "e89236db8f626e3ead4176a84c4474b11dc0a9f0c19c29479b980369858e0f1b", "size": 4232 }, { @@ -9935,8 +9935,8 @@ "url": "https://support.claude.com/en/articles/12512180-use-skills-in-claude", "status": "success", "path": "support/12512180-use-skills-in-claude.md", - "sha256": "12609b03858943cec4cfc914fab5d49dc3f2c3b34041d95b170967c1e20c1452", - "size": 15920 + "sha256": "655c6a8a090b17c5d1d1682348626221a83034092d7c29e6137882bfaf1f4e59", + "size": 15918 }, { "url": "https://support.claude.com/en/articles/12512198-how-to-create-custom-skills", @@ -9956,8 +9956,8 @@ "url": "https://support.claude.com/en/articles/12592343-enabling-and-using-the-desktop-extension-allowlist", "status": "success", "path": "support/12592343-enabling-and-using-the-desktop-extension-allowlist.md", - "sha256": "548538c98fc5df91f32f95be356d248fae8e8e06e101bb6c2e32f5db4904a309", - "size": 5704 + "sha256": "64a8cb8cd61e40590b58267737c63570cf02b9bd1c7550f40859f01b10afdacc", + "size": 5714 }, { "url": "https://support.claude.com/en/articles/12611117-deploy-claude-desktop-for-macos", @@ -9970,8 +9970,8 @@ "url": "https://support.claude.com/en/articles/12618689-claude-code-on-the-web", "status": "success", "path": "support/12618689-claude-code-on-the-web.md", - "sha256": "fe13373174e8c1df0aadd1a9b945b3e4e599fb8fe6526542677e1f87b3893afa", - "size": 10970 + "sha256": "1ea523df4f65df4cfed97f5e1faa7433af59291a3d0bb9ce540ae0fad056ada3", + "size": 10958 }, { "url": "https://support.claude.com/en/articles/12622667-enterprise-configuration-for-claude-desktop", @@ -9991,8 +9991,8 @@ "url": "https://support.claude.com/en/articles/12626668-use-quick-entry-with-claude-desktop-on-mac", "status": "success", "path": "support/12626668-use-quick-entry-with-claude-desktop-on-mac.md", - "sha256": "7ddf7852e91d788fed9505ba3945d0b8a56daa51b2f5fecf955071fc4006be29", - "size": 5976 + "sha256": "6c4ad34ad615bc73d219bf4e9d67a515e28b6028c1226b764228b77e430104b0", + "size": 5972 }, { "url": "https://support.claude.com/en/articles/12684923-microsoft-365-connector-security-guide", @@ -10026,8 +10026,8 @@ "url": "https://support.claude.com/en/articles/12883420-view-usage-analytics-for-team-and-enterprise-plans", "status": "success", "path": "support/12883420-view-usage-analytics-for-team-and-enterprise-plans.md", - "sha256": "37d010d0bf359b1f74edcc235923915efdbbf2a92824db5106df730a5517c517", - "size": 13933 + "sha256": "aa4c33881972445a082b6044857f71974fcc0d82203114d4c4cc80643be7150c", + "size": 13921 }, { "url": "https://support.claude.com/en/articles/12902405-claude-in-chrome-troubleshooting", @@ -10047,8 +10047,8 @@ "url": "https://support.claude.com/en/articles/12902446-claude-in-chrome-permissions-guide", "status": "success", "path": "support/12902446-claude-in-chrome-permissions-guide.md", - "sha256": "6fd3867dad7a9fd16d5191590011f726a00fba1f7be40edabd7559adbdd4b416", - "size": 9559 + "sha256": "73aea6c6931a14c1b5289ef28764db323e57b63ef889c7dc5402d437589e6c94", + "size": 9567 }, { "url": "https://support.claude.com/en/articles/12938627-how-to-gift-a-claude-subscription", @@ -10075,7 +10075,7 @@ "url": "https://support.claude.com/en/articles/12997503-team-plan-billing-faqs", "status": "success", "path": "support/12997503-team-plan-billing-faqs.md", - "sha256": "14ff3528fa93cc1ebb65d240348042f031edfd8e6824e694c74bde6910ca09ad", + "sha256": "347f5e0eeda358d86dd5548e692efedf79055996d370a08445eba5d482f82e71", "size": 4853 }, { @@ -10124,14 +10124,14 @@ "url": "https://support.claude.com/en/articles/13132885-set-up-single-sign-on-sso", "status": "success", "path": "support/13132885-set-up-single-sign-on-sso.md", - "sha256": "73372ce6f88d6c8abab097f43fdcedbe2811fcafff856f851382e1ce15ac4ba1", - "size": 13323 + "sha256": "d1cf1d8f7782a3af3fc41df94be0fa20c902e33bd00d4a625053a6162f71afa1", + "size": 13325 }, { "url": "https://support.claude.com/en/articles/13133195-set-up-jit-or-scim-provisioning", "status": "success", "path": "support/13133195-set-up-jit-or-scim-provisioning.md", - "sha256": "c2c3516c81b0d55d1aff330068e14c87f91b2f667d7a9295e8b63a9d4c582eff", + "sha256": "5f91c1fd2e4dcef90a441108a175ad2ae5fd21bc3ffaa48490dc0becea870ec1", "size": 19695 }, { @@ -10159,8 +10159,8 @@ "url": "https://support.claude.com/en/articles/13163631-configuring-session-security-settings", "status": "success", "path": "support/13163631-configuring-session-security-settings.md", - "sha256": "f0be0a62dddae040a58cc5d57c5348adac95e81807543c304864147fa7dcc07e", - "size": 3702 + "sha256": "60619154f04717829c95ba20cfaaf5a5e17c3210a3240ab736a21c8c05b19619", + "size": 3696 }, { "url": "https://support.claude.com/en/articles/13171706-crisis-helpline-support-in-claude", @@ -10173,8 +10173,8 @@ "url": "https://support.claude.com/en/articles/13189465-log-in-to-your-claude-account", "status": "success", "path": "support/13189465-log-in-to-your-claude-account.md", - "sha256": "630eda7d7d635d7c2916692841666cea6e7cfbcc04eab25c9bebc3d1461e9ca9", - "size": 7036 + "sha256": "41f7772c332720c5dc4fb9e209a51caf4eb233f2b70b79576ee01c30e8c3a400", + "size": 7044 }, { "url": "https://support.claude.com/en/articles/13198485-enforce-network-level-access-control-with-tenant-restrictions", @@ -10201,22 +10201,22 @@ "url": "https://support.claude.com/en/articles/13325567-account-management-faqs", "status": "success", "path": "support/13325567-account-management-faqs.md", - "sha256": "afe956a7bd3483dc0c414f0eba7dbfcf184e0d6ca214772dcf3606420cff2159", - "size": 2634 + "sha256": "10337043e11420bd640648953de37b345b846f20d580bd96722372d8c1f92402", + "size": 2632 }, { "url": "https://support.claude.com/en/articles/13345190-get-started-with-claude-cowork", "status": "success", "path": "support/13345190-get-started-with-claude-cowork.md", - "sha256": "547022802fe268f89ba2d061e2534c0e5c9f25446e2a4941f5479642a8bfb714", - "size": 21514 + "sha256": "0cba197c2b7b039cbecb5c82ccd4ee7f559f97d41765ac3802c1837e681f4848", + "size": 21516 }, { "url": "https://support.claude.com/en/articles/13346458-customizing-your-console-appearance-settings", "status": "success", "path": "support/13346458-customizing-your-console-appearance-settings.md", - "sha256": "6de7deda9e15aae3a3d9a005748c617fc18d8ba20ab4892a9f5fc3a763e125f2", - "size": 609 + "sha256": "413a4dbc91bc5b389d94acdb4456c49b7361883f6e7b47934f28549f20a1cdd8", + "size": 605 }, { "url": "https://support.claude.com/en/articles/13346720-export-your-organization-s-data", @@ -10236,8 +10236,8 @@ "url": "https://support.claude.com/en/articles/13371040-log-in-to-your-console-account", "status": "success", "path": "support/13371040-log-in-to-your-console-account.md", - "sha256": "0692618806436677529bc1e3d47f80e0b1c4ca33914a442a09c162e991249fe7", - "size": 4613 + "sha256": "a01e0ce5403fdad2027479bbcc52bdff62313fb973a352a385ee27b44a9ae4b2", + "size": 4609 }, { "url": "https://support.claude.com/en/articles/13393991-purchase-and-manage-seats-on-enterprise-plans", @@ -10292,8 +10292,8 @@ "url": "https://support.claude.com/en/articles/13641943-visual-and-interactive-content", "status": "success", "path": "support/13641943-visual-and-interactive-content.md", - "sha256": "c1510a7055f92c3767b4e4b73eca60ecfea73bbcb86348c64db00a898e86ef5d", - "size": 6505 + "sha256": "f663cbd38bd5ce577104f3a1d7d1615a9c947ac90fe298de1f575e1e707412e2", + "size": 6511 }, { "url": "https://support.claude.com/en/articles/13663666-use-visual-and-interactive-content-on-team-and-enterprise-plans", @@ -10320,7 +10320,7 @@ "url": "https://support.claude.com/en/articles/13756069-public-sector-faqs", "status": "success", "path": "support/13756069-public-sector-faqs.md", - "sha256": "296b356be3ec80bdd1e5af316939141999cb8e2e7bedafc1504ec7c368036e1d", + "sha256": "ffc35fc9035c37b7d9aed00c8fdc8ab3309a4d832836d17e660bc9b3d4cb9c6f", "size": 8376 }, { @@ -10348,21 +10348,21 @@ "url": "https://support.claude.com/en/articles/13837433-manage-plugins-for-your-organization", "status": "success", "path": "support/13837433-manage-plugins-for-your-organization.md", - "sha256": "ecbfb2394b59374f2e7688039dd99133d166a0e7ee9d9ba0db1def682be2336f", - "size": 21287 + "sha256": "c07d150f7f6ec1134045c7448bf9857ad36f337cb38ef3b109e3af3865e1640b", + "size": 21285 }, { "url": "https://support.claude.com/en/articles/13837440-use-plugins-in-claude", "status": "success", "path": "support/13837440-use-plugins-in-claude.md", - "sha256": "16024be231d000510850329d55592015992fdf2451e9f5a7eb25a5d39bf39811", - "size": 10768 + "sha256": "601e9c4b783bf1874d6c1422469ca10f87802e5d45ce1e4f24ec7ed2c476dbd7", + "size": 10760 }, { "url": "https://support.claude.com/en/articles/13854387-schedule-recurring-tasks-in-claude-cowork", "status": "success", "path": "support/13854387-schedule-recurring-tasks-in-claude-cowork.md", - "sha256": "ff74b06b59a0d7d8f07f8afaf69ab8e589ade2c70ece76377c398f7b35844c4e", + "sha256": "0123079c6e3b90b87eb8ffc901c7d740ab5f1b5bdfcaefa4725d6896ee9e7f8e", "size": 4745 }, { @@ -10453,8 +10453,8 @@ "url": "https://support.claude.com/en/articles/13947068-assign-tasks-from-anywhere-in-claude-cowork", "status": "success", "path": "support/13947068-assign-tasks-from-anywhere-in-claude-cowork.md", - "sha256": "1e187d289f6928b86c553125b43be4e4e0c4d00c4312dbd35cf74c4689b5a88f", - "size": 8524 + "sha256": "ab1ee002b647ac047482189d267fc387c5f1dfa8775b5eae5979b2f41fd40d20", + "size": 8522 }, { "url": "https://support.claude.com/en/articles/13979539-custom-visuals-in-chat-and-cowork", @@ -10474,8 +10474,8 @@ "url": "https://support.claude.com/en/articles/14116274-organize-your-tasks-with-projects-in-claude-cowork", "status": "success", "path": "support/14116274-organize-your-tasks-with-projects-in-claude-cowork.md", - "sha256": "67cd8faf63d61c55969ec4ac09c93ca2f5e36d7f98bca25f87f7adb9534c552b", - "size": 6249 + "sha256": "199d9fd871cfa2a7890a73fd2d572f492137f217d5fb2cc65d77caadb087a3a2", + "size": 6269 }, { "url": "https://support.claude.com/en/articles/14128542-let-claude-use-your-computer-in-cowork", @@ -10544,7 +10544,7 @@ "url": "https://support.claude.com/en/articles/14499648-how-scim-sync-works-for-enterprise-organizations", "status": "success", "path": "support/14499648-how-scim-sync-works-for-enterprise-organizations.md", - "sha256": "6915ab4785de7af309820bdcd7b3cbe4e5fb14af132da79f43183e0f1d1967d1", + "sha256": "db4a2a338d9353a342ad01cca16ef82c3b1b004a780973be71f26752b78e9f05", "size": 7672 }, { @@ -10565,15 +10565,15 @@ "url": "https://support.claude.com/en/articles/14503613-sso-login", "status": "success", "path": "support/14503613-sso-login.md", - "sha256": "0b916299dee1774874bd84768e052a579adfbde807b3d0d4d4dcdfe508af88d8", - "size": 6698 + "sha256": "c79760c4ae5926a7605bc30ef5c71202cd10cae402ecf1d7fd9d266bcac9e746", + "size": 6690 }, { "url": "https://support.claude.com/en/articles/14503643-set-up-scim-in-claude-for-government", "status": "success", "path": "support/14503643-set-up-scim-in-claude-for-government.md", - "sha256": "cdaae84f2aed407166f195f064857b0fb6dacf38e7727102d8df82f2a0190ac9", - "size": 6425 + "sha256": "5725c63fd2d39fdac55aaf9ab5ef997deb39e391b76634f6fdcfe45a4eb1edbf", + "size": 6421 }, { "url": "https://support.claude.com/en/articles/14503675-organization-instructions-in-claude-for-government", @@ -10600,7 +10600,7 @@ "url": "https://support.claude.com/en/articles/14503775-mcp-web-search", "status": "success", "path": "support/14503775-mcp-web-search.md", - "sha256": "2c20014c885dec15504bc10429230f20e6868c06410f582fd49ab4982202613d", + "sha256": "cb8292e2e08fcc1bccbf248e0d244a4348c4b6283c29d3bc3ca15309fa5eb63f", "size": 4681 }, { @@ -10698,22 +10698,22 @@ "url": "https://support.claude.com/en/articles/14604397-set-up-your-design-system-in-claude-design", "status": "success", "path": "support/14604397-set-up-your-design-system-in-claude-design.md", - "sha256": "f587e00e259d36e81d78153c635b7cc733df7b79dff17773d4f0ffd93901d5a3", - "size": 4398 + "sha256": "dc4f20d2970d7ee184f8e3498a231d3910bba0b728e18b1f4dea0a199ed1500a", + "size": 4394 }, { "url": "https://support.claude.com/en/articles/14604406-claude-design-admin-guide-for-team-and-enterprise-plans", "status": "success", "path": "support/14604406-claude-design-admin-guide-for-team-and-enterprise-plans.md", - "sha256": "6b0338c9d5b2fca23cd2e45641f48f063dbd45b48b0cb89adec02acdfa9d62e5", - "size": 12733 + "sha256": "08c667ed3b50fe99f46375be24d6ca5a21752863d29a3c27826fd41551ca3e77", + "size": 12735 }, { "url": "https://support.claude.com/en/articles/14604416-get-started-with-claude-design", "status": "success", "path": "support/14604416-get-started-with-claude-design.md", - "sha256": "94d2a8687af18f48134e5e36dcb7e929e7dc086296cda6d65bbb0802248715b3", - "size": 11132 + "sha256": "f3370182b36da8e6abd2715ece477d6ff7a9d5dfc0c1328c19b2c6b373295d71", + "size": 11134 }, { "url": "https://support.claude.com/en/articles/14604842-real-time-cyber-safeguards-on-claude-opus-and-sonnet", @@ -10838,8 +10838,8 @@ "url": "https://support.claude.com/en/articles/15330088-set-a-default-model-for-your-organization", "status": "success", "path": "support/15330088-set-a-default-model-for-your-organization.md", - "sha256": "2497dd93649b57dcb20a7ad848a138c83cd89958dbc268de0bfd067045d051b3", - "size": 7774 + "sha256": "4b728605dc31bc1ba6d3160a10eb6cfe5046bc484c799bb283ce9aebe33f7602", + "size": 7770 }, { "url": "https://support.claude.com/en/articles/15330651-claude-enterprise-admin-api-reference-guide", @@ -10950,8 +10950,8 @@ "url": "https://support.claude.com/en/articles/15694740-manage-model-access-for-your-organization", "status": "success", "path": "support/15694740-manage-model-access-for-your-organization.md", - "sha256": "ed955fcf24dba1e285a4b2d19ff6d8d50a03cb62501d21b89b00c6efeabacc55", - "size": 10139 + "sha256": "c16ac8b1470bff0b76257873994df8a1a1210d8055882456ef4011e74333aeb8", + "size": 10145 }, { "url": "https://support.claude.com/en/articles/15707726-using-claude-for-legal-work-privilege-confidentiality-and-how-to-think-about-configuration", @@ -10985,7 +10985,7 @@ "url": "https://support.claude.com/en/articles/15936181-get-started-with-1password-for-claude", "status": "success", "path": "support/15936181-get-started-with-1password-for-claude.md", - "sha256": "d1d8c943201d074a70ca2b33169a466acd55c2076f28d1ded18cb3c436358d0a", + "sha256": "222d34bc0e7c0c196cfd97f96deac66093f51c4509838d5274bcdd8ae3900e1c", "size": 5060 }, { @@ -11034,8 +11034,8 @@ "url": "https://support.claude.com/en/articles/16607638-understanding-your-pro-or-max-plan-invoices", "status": "success", "path": "support/16607638-understanding-your-pro-or-max-plan-invoices.md", - "sha256": "19a1acbda1b252d3de66c8230dd4d9559fdaa90bf1db6f85646968cc4e54c86c", - "size": 5437 + "sha256": "ca1652b6f1a739af5cb50b3380690b2b44d61d1cd2f093758ea97be487d521ce", + "size": 5439 }, { "url": "https://support.claude.com/en/articles/16607668-understanding-your-team-plan-invoices", @@ -11097,8 +11097,8 @@ "url": "https://support.claude.com/en/articles/16764810-assign-a-program-to-workspaces-in-claude-console", "status": "success", "path": "support/16764810-assign-a-program-to-workspaces-in-claude-console.md", - "sha256": "e33f7eac4bfb75a2a0230ee118c58b6cfb2ff38421425a6808aebc2eb42f8d0e", - "size": 5105 + "sha256": "37101c5b44a7beb1ea65e0b9e8cb9d8c5b4766c97e8ce2070e93fd90205b0e94", + "size": 5097 }, { "url": "https://support.claude.com/en/articles/16824617-turn-on-data-retention-for-a-workspace-in-a-zero-data-retention-organization", @@ -12084,8 +12084,8 @@ "url": "https://claude.com/docs/government/changelog", "status": "success", "path": "claude/government/changelog.md", - "sha256": "e8aab9ccfb1858b2031f5d7e86d19f20c244bca67952d54751fca1885badbf2e", - "size": 5245 + "sha256": "fb483333e87c1bd6f7d041bb5a018a309af25f1d0e47ed33f0e48c94b4743aab", + "size": 5611 }, { "url": "https://claude.com/docs/government/config/overview", @@ -12098,22 +12098,22 @@ "url": "https://claude.com/docs/government/config/plugins-and-connectors", "status": "success", "path": "claude/government/config/plugins-and-connectors.md", - "sha256": "4ab72452ae374241af6a0144059345c259cd6b9771bf44a658517aadf6086898", - "size": 11552 + "sha256": "ab9517d1cff11a23f7960a58d9dcb716245a3398c9d953775cc9f8ff5a54a8fa", + "size": 11512 }, { "url": "https://claude.com/docs/government/config/settings", "status": "success", "path": "claude/government/config/settings.md", - "sha256": "b1e9b7f3adf12d036aedc8347dee66813318f944a53b4989358e0af9db853af8", - "size": 28572 + "sha256": "76a7ec3530925b7fd109e0834eb5924f3507dcff1ab3bf99e113af3e9d752cc0", + "size": 28582 }, { "url": "https://claude.com/docs/government/connectors/microsoft-365", "status": "success", "path": "claude/government/connectors/microsoft-365.md", - "sha256": "d187dd25d75a331342d6f863ffd69ec709df173ef2f7ad0a0da15212ee03ab44", - "size": 31118 + "sha256": "8c28f5c3b3fad351583a4d286d7f8a9bd6defc427224ef9c0f4c6c1ffe1a284d", + "size": 31481 }, { "url": "https://claude.com/docs/government/connectors/overview", @@ -12126,8 +12126,8 @@ "url": "https://claude.com/docs/government/deploy-desktop/configure", "status": "success", "path": "claude/government/deploy-desktop/configure.md", - "sha256": "257907f4ba58e540a4090073e2a93ab21601dfa732a163abc9bb35b36669ad64", - "size": 45216 + "sha256": "11d42974119089cac3f2b0e0acb12c0ef1d4064f9ace6003f297053f7249606d", + "size": 48145 }, { "url": "https://claude.com/docs/government/deploy-desktop/windows-checklist", @@ -12252,8 +12252,8 @@ "url": "https://claude.com/docs/government/security/security-and-data-handling", "status": "success", "path": "claude/government/security/security-and-data-handling.md", - "sha256": "a569cac0c6a35ec92f81b3631362829f93e85976afcaa8aec41129a4af3a3a09", - "size": 33392 + "sha256": "15aec2cdbb78ce7541c457abc97b634b452e8aecd35726f2a75fe6a7d3b98167", + "size": 39682 }, { "url": "https://claude.com/docs/government/tenant-admin/admins", @@ -12518,8 +12518,8 @@ "url": "https://claude.com/docs/third-party/claude-desktop/connectors-m365", "status": "success", "path": "claude/third-party/claude-desktop/connectors-m365.md", - "sha256": "9ce83f49629ef7b1e0003b49a49ebc0499d7241af0517b48394915260d4fc08e", - "size": 51596 + "sha256": "a3ee6e1471b07ce975acf9b964e238560416fc6a5d401293d2a6c28713a77a00", + "size": 51653 }, { "url": "https://claude.com/docs/third-party/claude-desktop/credential-helper", @@ -12532,8 +12532,8 @@ "url": "https://claude.com/docs/third-party/claude-desktop/data-storage", "status": "success", "path": "claude/third-party/claude-desktop/data-storage.md", - "sha256": "a9023bf0cf90ee0bdb765c82b45eb641066234f89941d735138892b58b877a7e", - "size": 16865 + "sha256": "17a4c61369d51d1f40723fd0739c23bef6774b3c28297d59b28ea42d9d2da493", + "size": 17346 }, { "url": "https://claude.com/docs/third-party/claude-desktop/entra-broker", @@ -12693,8 +12693,8 @@ "url": "https://code.claude.com/docs/en/iam", "status": "success", "path": "en/docs/claude-code/iam.md", - "sha256": "3f6e642c34855e58d8d88ed766a8fc1878aabed1a9ed76b1cda4cf27efe74ce4", - "size": 28458 + "sha256": "bf535f977b9e5d794b07a3375039a42b3a97e8ba4f896e83d493456c392bf96f", + "size": 29535 }, { "url": "https://code.claude.com/docs/en/agent-sdk/slash-commands", @@ -12707,8 +12707,8 @@ "url": "https://platform.claude.com/docs/en/api/java/completions", "status": "success", "path": "en/api/java/completions.md", - "sha256": "2a5e3a96d0a3b8a2ec75a2d9e1b5b51788901cece65062b4c6126b782e506b58", - "size": 13476 + "sha256": "6c705330ee4696eb78506e5610459d226dd5f5f3d1c083fe878c21a3d62459b4", + "size": 13453 }, { "url": "https://platform.claude.com/docs/en/api/java/messages", @@ -12721,8 +12721,8 @@ "url": "https://platform.claude.com/docs/en/api/java/beta", "status": "success", "path": "en/api/java/beta.md", - "sha256": "09a03a328088ef8ecffdb4f4cd99d4a6ce682f740d4a25379aa34a796eb4049d", - "size": 2277814 + "sha256": "44b0ce231724289490815bc89403ec78bbbb56003fb04a365a9e18b4c64dc80c", + "size": 2277604 }, { "url": "https://platform.claude.com/docs/en/api/java/models", @@ -12735,8 +12735,8 @@ "url": "https://platform.claude.com/docs/en/api/go/completions", "status": "success", "path": "en/api/go/completions.md", - "sha256": "879a03a861da4667c4b6390eae79889437211cc24fbfb96cdbc04f1d82ee1c67", - "size": 16083 + "sha256": "3e75894e078a38f05084af6594e54783f3f5e3ada12deb65a2dfde62f6438bef", + "size": 16050 }, { "url": "https://platform.claude.com/docs/en/api/go/messages", @@ -12749,8 +12749,8 @@ "url": "https://platform.claude.com/docs/en/api/go/beta", "status": "success", "path": "en/api/go/beta.md", - "sha256": "ac3a7936d131e3a1db049d224149425fe07ed5719f1c8b4620bd9338d63c550c", - "size": 2695270 + "sha256": "bce8b5e1c081bb22b4a2097df48fe7dde2221da2463f65c31af660a4c671e352", + "size": 2695036 }, { "url": "https://platform.claude.com/docs/en/api/go/models", @@ -12763,8 +12763,8 @@ "url": "https://platform.claude.com/docs/en/api/csharp/completions", "status": "success", "path": "en/api/csharp/completions.md", - "sha256": "4c8bf98cb1ce9521a1d8046ab06972cae8f503860cb5beadcbe85ebefa439d99", - "size": 14288 + "sha256": "feeeda2e7b55e7d6e7378458e696aab359cabce6b13d4c16c2b199031a8a79d8", + "size": 14265 }, { "url": "https://platform.claude.com/docs/en/api/csharp/messages", @@ -12777,8 +12777,8 @@ "url": "https://platform.claude.com/docs/en/api/csharp/beta", "status": "success", "path": "en/api/csharp/beta.md", - "sha256": "fcdbceb1c314e947d566a26f446425e3a644bef1b3337603f8d5407da88c77ad", - "size": 2238655 + "sha256": "ff159e421f3ce06dcd7c3043167f737dee0119f961589808fdd9f5546e400f3f", + "size": 2238445 }, { "url": "https://platform.claude.com/docs/en/api/csharp/models", @@ -12791,8 +12791,8 @@ "url": "https://platform.claude.com/docs/en/api/typescript/completions", "status": "success", "path": "en/api/typescript/completions.md", - "sha256": "fd657112c20e403b01e87d10aed1a040003ab86a7b039465650b6e67b11c9ea5", - "size": 15116 + "sha256": "eb4eda6f83ab81ed93e0f3b8508eefb857b6b4c7cc3c15ad10e38ad7f95dea00", + "size": 15100 }, { "url": "https://platform.claude.com/docs/en/api/typescript/messages", @@ -12805,8 +12805,8 @@ "url": "https://platform.claude.com/docs/en/api/typescript/beta", "status": "success", "path": "en/api/typescript/beta.md", - "sha256": "9869570899b7aa8dc643583d740ac61b9da2e6ec06f0fe85e3e0c3e5ea9cf002", - "size": 2152299 + "sha256": "88143ef6352af8210a6e17ade086e125e3b70280bbe2986447559ea3e42d1d03", + "size": 2151857 }, { "url": "https://platform.claude.com/docs/en/api/typescript/models", @@ -12819,8 +12819,8 @@ "url": "https://platform.claude.com/docs/en/api/ruby/completions", "status": "success", "path": "en/api/ruby/completions.md", - "sha256": "55e14b45e967fc7603989bc720d235e397e0d7155c5069ff2dfae7bebe430fbc", - "size": 14177 + "sha256": "1325510b6db3af0d216ea13bae422a2d41c81ddcb9e24bb239bbe480b51e925a", + "size": 14155 }, { "url": "https://platform.claude.com/docs/en/api/ruby/messages", @@ -12833,8 +12833,8 @@ "url": "https://platform.claude.com/docs/en/api/ruby/beta", "status": "success", "path": "en/api/ruby/beta.md", - "sha256": "b3c8545021049b73cba21c77bdacf2b9310d0d1b02c20fa529e9231e4e18564b", - "size": 2067044 + "sha256": "efaef6e9db702992a3343c7045ab17d1f5c8305304a1a1dac2a31c06e88f1306", + "size": 2066602 }, { "url": "https://platform.claude.com/docs/en/api/ruby/models", @@ -12847,8 +12847,8 @@ "url": "https://platform.claude.com/docs/en/api/cli/completions", "status": "success", "path": "en/api/cli/completions.md", - "sha256": "fb9ec7069393bd129aad8182132f4b4091c49b31999e4483786a5fd799e4d6d8", - "size": 10328 + "sha256": "2d64543670684bdcee644ce754d6090469c31055695506e015bf76ac944f79e8", + "size": 9411 }, { "url": "https://platform.claude.com/docs/en/api/cli/messages", @@ -12861,8 +12861,8 @@ "url": "https://platform.claude.com/docs/en/api/cli/beta", "status": "success", "path": "en/api/cli/beta.md", - "sha256": "0f0d83fc26c75b63861907198d71695afc57295cb814739b8e016957b43a8b19", - "size": 1423238 + "sha256": "9145ddb2d2bb82a716cf509187613bf280644bf7455b116b6da6a71c5f9b5238", + "size": 1408435 }, { "url": "https://platform.claude.com/docs/en/api/cli/models", @@ -12875,8 +12875,8 @@ "url": "https://platform.claude.com/docs/en/api/python/completions", "status": "success", "path": "en/api/python/completions.md", - "sha256": "4c8bf98cb1ce9521a1d8046ab06972cae8f503860cb5beadcbe85ebefa439d99", - "size": 14288 + "sha256": "feeeda2e7b55e7d6e7378458e696aab359cabce6b13d4c16c2b199031a8a79d8", + "size": 14265 }, { "url": "https://platform.claude.com/docs/en/api/python/messages", @@ -12889,8 +12889,8 @@ "url": "https://platform.claude.com/docs/en/api/python/beta", "status": "success", "path": "en/api/python/beta.md", - "sha256": "ab8a03542b454c50506f79108327f408cd3a49174a9a4104d1e282dbcf3c2d5c", - "size": 2146735 + "sha256": "97c6ef32d2d2f34b3f8a9354ec39cb09d913878653b3a00e5a328fa4dc8c1c0c", + "size": 2146551 }, { "url": "https://platform.claude.com/docs/en/api/python/models", @@ -12903,8 +12903,8 @@ "url": "https://platform.claude.com/docs/en/api/php/completions", "status": "success", "path": "en/api/php/completions.md", - "sha256": "4c8bf98cb1ce9521a1d8046ab06972cae8f503860cb5beadcbe85ebefa439d99", - "size": 14288 + "sha256": "feeeda2e7b55e7d6e7378458e696aab359cabce6b13d4c16c2b199031a8a79d8", + "size": 14265 }, { "url": "https://platform.claude.com/docs/en/api/php/messages", @@ -12917,8 +12917,8 @@ "url": "https://platform.claude.com/docs/en/api/php/beta", "status": "success", "path": "en/api/php/beta.md", - "sha256": "01753034d0b2a66619f2369aee260bb75a6378d3690a76845464cddef151143f", - "size": 628828 + "sha256": "e5490ea7a331f6c9608bc74efe89875953738c37411ef443ebd5c8f03ab7a72c", + "size": 628746 }, { "url": "https://platform.claude.com/docs/en/api/php/models", @@ -12931,8 +12931,8 @@ "url": "https://platform.claude.com/docs/en/api/php/completions/create", "status": "success", "path": "en/api/php/completions/create.md", - "sha256": "b8efb8acfe13c3839927c3b78360813bee67356f9aa764a1b71b915f1f289708", - "size": 11393 + "sha256": "89653663a29793495a061d87b77efe74256094b3b91892a32a4bf3c549436c9f", + "size": 11370 }, { "url": "https://platform.claude.com/docs/en/api/php/beta/deployments", @@ -12987,8 +12987,8 @@ "url": "https://platform.claude.com/docs/en/api/php/beta/sessions", "status": "success", "path": "en/api/php/beta/sessions.md", - "sha256": "87bf311c0c103033ded460c6eb23eb4bd9f1bd7f63e93a3ce53d25470041d500", - "size": 156832 + "sha256": "51353d95a4b5dd613ebd34e3bc27a90cbc882a7ffff61cb0c355dd951ffc9031", + "size": 156750 }, { "url": "https://platform.claude.com/docs/en/api/php/beta/deployment_runs", @@ -13120,8 +13120,8 @@ "url": "https://platform.claude.com/docs/en/api/php/beta/sessions/events", "status": "success", "path": "en/api/php/beta/sessions/events.md", - "sha256": "f4aa5d1e53d104e8296785eedd0d9535ab88cabe1b7656074c05b51f40422bfb", - "size": 101754 + "sha256": "7abf66a0734642dd99d2222a7b0e5c7162bdd76368904726d9862d8db2ab085f", + "size": 101716 }, { "url": "https://platform.claude.com/docs/en/api/php/beta/sessions/list", @@ -13169,8 +13169,8 @@ "url": "https://platform.claude.com/docs/en/api/php/beta/sessions/threads", "status": "success", "path": "en/api/php/beta/sessions/threads.md", - "sha256": "9fcdb04e19b811221002c18392581dabc3bde7f2e93f4322f5cec1ef37626bc2", - "size": 68122 + "sha256": "9c84a4355e9b4637e8142f90c41adfd0c0135d280b83cc25531d8993434d37bc", + "size": 68078 }, { "url": "https://platform.claude.com/docs/en/api/php/beta/deployments/run", @@ -13911,8 +13911,8 @@ "url": "https://platform.claude.com/docs/en/api/php/beta/sessions/events/stream", "status": "success", "path": "en/api/php/beta/sessions/events/stream.md", - "sha256": "0e17be3126fbb3814ac51c78ff8a81d374662cd9ab942d6360fa0c1fe18eec08", - "size": 19019 + "sha256": "d942e4b0e338d1694bb51b7bc03606fa42de3bce02bfd91319d5325ecd6bb006", + "size": 18981 }, { "url": "https://platform.claude.com/docs/en/api/php/beta/sessions/events/send", @@ -13960,8 +13960,8 @@ "url": "https://platform.claude.com/docs/en/api/php/beta/sessions/threads/events", "status": "success", "path": "en/api/php/beta/sessions/threads/events.md", - "sha256": "b9a6472e761a9a445ae62b6ea02c01a23dd4b13f72e9d01a4aefc2392c47dae3", - "size": 36755 + "sha256": "1ef312560e3c9fa71404b5776c8fd18a604ec10d01b03f372f2cc426b2aa6aef", + "size": 36711 }, { "url": "https://platform.claude.com/docs/en/api/php/beta/sessions/threads/list", @@ -13995,15 +13995,15 @@ "url": "https://platform.claude.com/docs/en/api/php/beta/sessions/threads/events/stream", "status": "success", "path": "en/api/php/beta/sessions/threads/events/stream.md", - "sha256": "1eb9af624680efeb13631ed94394ecd8041e003922f1d4c49b55daec68cf527b", - "size": 19198 + "sha256": "ed3b1f54c7bba5b034196cd7439bff34e75b658ac6ebed5a6a33e0d70450a95e", + "size": 19154 }, { "url": "https://platform.claude.com/docs/en/api/python/completions/create", "status": "success", "path": "en/api/python/completions/create.md", - "sha256": "b8efb8acfe13c3839927c3b78360813bee67356f9aa764a1b71b915f1f289708", - "size": 11393 + "sha256": "89653663a29793495a061d87b77efe74256094b3b91892a32a4bf3c549436c9f", + "size": 11370 }, { "url": "https://platform.claude.com/docs/en/api/python/beta/deployments", @@ -14058,8 +14058,8 @@ "url": "https://platform.claude.com/docs/en/api/python/beta/sessions", "status": "success", "path": "en/api/python/beta/sessions.md", - "sha256": "1250a8d1e2aefad6f22a1f0ccfcbea74f12e425ad90148dc346af17c906992f4", - "size": 724027 + "sha256": "35712adcf1303b1d8130afcc093476f11a257a802c8cd6fe5b11e8502efc6187", + "size": 723843 }, { "url": "https://platform.claude.com/docs/en/api/python/beta/deployment_runs", @@ -14191,8 +14191,8 @@ "url": "https://platform.claude.com/docs/en/api/python/beta/sessions/events", "status": "success", "path": "en/api/python/beta/sessions/events.md", - "sha256": "777fd15213a66d367e2430ef5fdecaa3933c2e679796edcba0ed1f1762a8a496", - "size": 394516 + "sha256": "68bf6b09eaa0dec10095e4d908227bf689320d6943ca285ff0ce6aab61625674", + "size": 394430 }, { "url": "https://platform.claude.com/docs/en/api/python/beta/sessions/list", @@ -14240,8 +14240,8 @@ "url": "https://platform.claude.com/docs/en/api/python/beta/sessions/threads", "status": "success", "path": "en/api/python/beta/sessions/threads.md", - "sha256": "67509074494a63b286e67c3dc2a262ad6af21398db073d68b4ab35eeaa5caecd", - "size": 287481 + "sha256": "a1df9239b15ea716dfaa3046dcd34def181fbbd32d49aef560bc3f68189e0af9", + "size": 287383 }, { "url": "https://platform.claude.com/docs/en/api/python/beta/deployments/run", @@ -14989,8 +14989,8 @@ "url": "https://platform.claude.com/docs/en/api/python/beta/sessions/events/stream", "status": "success", "path": "en/api/python/beta/sessions/events/stream.md", - "sha256": "2c747b3d5494a41c161ed8df4c72f7a07768f1f8d775311d98040144a610d2f8", - "size": 67679 + "sha256": "cf966c7ee4367f21cce6fbc569dfb15c453bfb5b6683bdc935b76284f6f4be3e", + "size": 67593 }, { "url": "https://platform.claude.com/docs/en/api/python/beta/sessions/events/send", @@ -15038,8 +15038,8 @@ "url": "https://platform.claude.com/docs/en/api/python/beta/sessions/threads/events", "status": "success", "path": "en/api/python/beta/sessions/threads/events.md", - "sha256": "e2655f69ee0e1d0fd82fff744ff341eca4f14727ba44d4db349bd970e8e2354f", - "size": 132288 + "sha256": "854d030461bc235cdb7faad3d53941a99ab14177c38d7d85af61fe1d6b5d993b", + "size": 132190 }, { "url": "https://platform.claude.com/docs/en/api/python/beta/sessions/threads/list", @@ -15073,15 +15073,15 @@ "url": "https://platform.claude.com/docs/en/api/python/beta/sessions/threads/events/stream", "status": "success", "path": "en/api/python/beta/sessions/threads/events/stream.md", - "sha256": "a8c9e59768f7b39ee0957d35f82a88554c0135b097f964bc6145c15d261a5732", - "size": 67834 + "sha256": "1020040a9ffe20732c3922ced2945addb5b5bc13797bba0befca7e0ab491d851", + "size": 67736 }, { "url": "https://platform.claude.com/docs/en/api/cli/completions/create", "status": "success", "path": "en/api/cli/completions/create.md", - "sha256": "81b832223eac33dcedbee3ee946bc17494e345e61f2eb0015d22431ca8840c82", - "size": 7712 + "sha256": "039e19cbcdbc3b8891722e8411587c40a988ff6dba61d6d26524a4881294a2c5", + "size": 6795 }, { "url": "https://platform.claude.com/docs/en/api/cli/beta/deployments", @@ -15136,8 +15136,8 @@ "url": "https://platform.claude.com/docs/en/api/cli/beta/sessions", "status": "success", "path": "en/api/cli/beta/sessions.md", - "sha256": "8aadd460ae8c582df4b3876915f1eb2d169973713cd35c40d0d085939bf636c3", - "size": 666910 + "sha256": "8d240a66de4d7e278e3fd2e098e7c22f49a58c21a7454fe3687b2c623fa19de6", + "size": 652107 }, { "url": "https://platform.claude.com/docs/en/api/cli/beta/deployment_runs", @@ -15269,8 +15269,8 @@ "url": "https://platform.claude.com/docs/en/api/cli/beta/sessions/events", "status": "success", "path": "en/api/cli/beta/sessions/events.md", - "sha256": "bd59ac674b103755de9ce15bf9a9aa79a3ddbe471667dd77af9dfb2f2267aa22", - "size": 409372 + "sha256": "491d023ada0e03011431cddab0d45d2a8f722f66dd6dd4578b9ed180841622b6", + "size": 401977 }, { "url": "https://platform.claude.com/docs/en/api/cli/beta/sessions/list", @@ -15318,8 +15318,8 @@ "url": "https://platform.claude.com/docs/en/api/cli/beta/sessions/threads", "status": "success", "path": "en/api/cli/beta/sessions/threads.md", - "sha256": "9454506924c9ad87abf1454ff52861e4526ced7f65c8ad4ebccffaa686151139", - "size": 294394 + "sha256": "89806c7dfd39fd27353139e8c956fe2369fe45ec563c12d1a6fffbdae5890917", + "size": 286986 }, { "url": "https://platform.claude.com/docs/en/api/cli/beta/deployments/run", @@ -16067,8 +16067,8 @@ "url": "https://platform.claude.com/docs/en/api/cli/beta/sessions/events/stream", "status": "success", "path": "en/api/cli/beta/sessions/events/stream.md", - "sha256": "41481f260d7fdbfe71fb4fb0ecc06d93d638657aff7afd920677780431109ae3", - "size": 76597 + "sha256": "c8a2d433c479885cfdcb775258bd5151f015f68374a26999ed8075bf9f1c1d00", + "size": 69202 }, { "url": "https://platform.claude.com/docs/en/api/cli/beta/sessions/events/send", @@ -16116,8 +16116,8 @@ "url": "https://platform.claude.com/docs/en/api/cli/beta/sessions/threads/events", "status": "success", "path": "en/api/cli/beta/sessions/threads/events.md", - "sha256": "b195c908075553efb9786c8e8de54462974e3f193b1af97a3eea0cafaf95268f", - "size": 145168 + "sha256": "1af80859a3966a5b30dd8e667af05d9aa61d69902e0bfbad2335c042e9ec3a38", + "size": 137760 }, { "url": "https://platform.claude.com/docs/en/api/cli/beta/sessions/threads/list", @@ -16151,15 +16151,15 @@ "url": "https://platform.claude.com/docs/en/api/cli/beta/sessions/threads/events/stream", "status": "success", "path": "en/api/cli/beta/sessions/threads/events/stream.md", - "sha256": "d74b29e9e1f133f10bf12ebfeb79ec4992e8e047a9f62cc88c818be1ff1e0c41", - "size": 76793 + "sha256": "a4e0595b6c1e5bb11c658feae63d975cdde104c7ddc7e6eea879b6cb409c9060", + "size": 69385 }, { "url": "https://platform.claude.com/docs/en/api/ruby/completions/create", "status": "success", "path": "en/api/ruby/completions/create.md", - "sha256": "9cf843010fda583ae14a6037d61a459dbad0d78a84feae021474e7da152e07d5", - "size": 11284 + "sha256": "ea73daf5550c3377daf681c269949aedabb66711b8e163dfde94a1702c06efed", + "size": 11262 }, { "url": "https://platform.claude.com/docs/en/api/ruby/beta/deployments", @@ -16214,8 +16214,8 @@ "url": "https://platform.claude.com/docs/en/api/ruby/beta/sessions", "status": "success", "path": "en/api/ruby/beta/sessions.md", - "sha256": "bd02742095797adda8f50b8eadd78505c66ee65734a03085911ab693e60a1812", - "size": 705386 + "sha256": "ed9756a3a9604d242d41f1e01f597b2558f263d6e862f4489d2c0895ae8ecc8d", + "size": 704944 }, { "url": "https://platform.claude.com/docs/en/api/ruby/beta/deployment_runs", @@ -16347,8 +16347,8 @@ "url": "https://platform.claude.com/docs/en/api/ruby/beta/sessions/events", "status": "success", "path": "en/api/ruby/beta/sessions/events.md", - "sha256": "4ac3197ef9f1f4565463b3d8dbd06a4d9a3b78d281ec6fa9b6f4535ab7ee3a08", - "size": 398416 + "sha256": "342e4ebc49dff6423b38db27ee2f30bbc6235768bb409d40ea70e4672b88d763", + "size": 398201 }, { "url": "https://platform.claude.com/docs/en/api/ruby/beta/sessions/list", @@ -16396,8 +16396,8 @@ "url": "https://platform.claude.com/docs/en/api/ruby/beta/sessions/threads", "status": "success", "path": "en/api/ruby/beta/sessions/threads.md", - "sha256": "38a7f6a337d7dfb0162672ea569d214fad3fb6e933a4c6437a090b7c15b3f6a9", - "size": 283093 + "sha256": "5689a5bf15a2aa47d2e2461cbf19659faf9c1362ed4c61789fa66a70a119d009", + "size": 282866 }, { "url": "https://platform.claude.com/docs/en/api/ruby/beta/deployments/run", @@ -17145,8 +17145,8 @@ "url": "https://platform.claude.com/docs/en/api/ruby/beta/sessions/events/stream", "status": "success", "path": "en/api/ruby/beta/sessions/events/stream.md", - "sha256": "b3833981f81ffe08bdee5ee0d17fa5dcf922762ecbcac20b9c6d0c75bfc84ab7", - "size": 67957 + "sha256": "50a5db57fbd73a42daa1ca8bfd1a3be9ef488235b2d0c9819c4d3750714fa6e3", + "size": 67742 }, { "url": "https://platform.claude.com/docs/en/api/ruby/beta/sessions/events/send", @@ -17194,8 +17194,8 @@ "url": "https://platform.claude.com/docs/en/api/ruby/beta/sessions/threads/events", "status": "success", "path": "en/api/ruby/beta/sessions/threads/events.md", - "sha256": "0c13cd6e8920a64d50ab4643c21c668f9855b2ea8ecb84d918d32ae538871a55", - "size": 132714 + "sha256": "e2c614d138a69994bc9676be1991574dd588f37c1461ea6811eba0ef9a25851b", + "size": 132487 }, { "url": "https://platform.claude.com/docs/en/api/ruby/beta/sessions/threads/list", @@ -17229,8 +17229,8 @@ "url": "https://platform.claude.com/docs/en/api/ruby/beta/sessions/threads/events/stream", "status": "success", "path": "en/api/ruby/beta/sessions/threads/events/stream.md", - "sha256": "6e5c1eda7cfbea2058ffb49727bb8f7fbf0fe7df1970a4e8c3dc560dd1019db2", - "size": 68133 + "sha256": "89179ec7a17876d476ea2385dfab15e83555e6c1ea8c319d7b2c059e218bb7d6", + "size": 67906 }, { "url": "https://platform.claude.com/docs/en/api/beta/webhooks/unwrap", @@ -17243,8 +17243,8 @@ "url": "https://platform.claude.com/docs/en/api/typescript/completions/create", "status": "success", "path": "en/api/typescript/completions/create.md", - "sha256": "0dfe8bf61045a82b245b97524a701b8c33ec0807eba73b070ca171c7fec29ec8", - "size": 12383 + "sha256": "7e0d17553ce3e67035007ab44f9812f3b0540d69e64a80d45f16dd27d50aef48", + "size": 12367 }, { "url": "https://platform.claude.com/docs/en/api/typescript/beta/deployments", @@ -17299,8 +17299,8 @@ "url": "https://platform.claude.com/docs/en/api/typescript/beta/sessions", "status": "success", "path": "en/api/typescript/beta/sessions.md", - "sha256": "5463cdfac9695202cc2aadc79f80c1ff68d8fdd05473e949661272a8c712c8bf", - "size": 706604 + "sha256": "2455fc4d81859b0f21aaf707f70d2f02034042031b68d20b32889e2e928eea6e", + "size": 706162 }, { "url": "https://platform.claude.com/docs/en/api/typescript/beta/deployment_runs", @@ -17432,8 +17432,8 @@ "url": "https://platform.claude.com/docs/en/api/typescript/beta/sessions/events", "status": "success", "path": "en/api/typescript/beta/sessions/events.md", - "sha256": "1eca35b355a03da79bc5ecf62401e485b45715965458d94b2dd3082f37b73212", - "size": 396018 + "sha256": "b555adc929231a7ddb536f76ab69be0e445889a1c952ae6ada5cb5dccc772ed6", + "size": 395803 }, { "url": "https://platform.claude.com/docs/en/api/typescript/beta/sessions/list", @@ -17481,8 +17481,8 @@ "url": "https://platform.claude.com/docs/en/api/typescript/beta/sessions/threads", "status": "success", "path": "en/api/typescript/beta/sessions/threads.md", - "sha256": "411ef1aebd3c5f6d0956899bc2f8de8a1c60c60e8ef7d613dad9042dc40fe8f4", - "size": 281604 + "sha256": "9ceafed100d032727cdbee3ce94c43a9d1f331225d32728233bed65445fcccee", + "size": 281377 }, { "url": "https://platform.claude.com/docs/en/api/typescript/beta/deployments/run", @@ -18230,8 +18230,8 @@ "url": "https://platform.claude.com/docs/en/api/typescript/beta/sessions/events/stream", "status": "success", "path": "en/api/typescript/beta/sessions/events/stream.md", - "sha256": "e6bd3026082fec263a7d4a5a590ec4badf7dc33a917a3d2d584dace3e616730e", - "size": 67531 + "sha256": "cd7e74195a1350cc6bb1346cb5db065b393fc40fc8424a12cd2e0497a37b0911", + "size": 67316 }, { "url": "https://platform.claude.com/docs/en/api/typescript/beta/sessions/events/send", @@ -18279,8 +18279,8 @@ "url": "https://platform.claude.com/docs/en/api/typescript/beta/sessions/threads/events", "status": "success", "path": "en/api/typescript/beta/sessions/threads/events.md", - "sha256": "cf19d07cf25b731fb09df8a664d70c6ecb87501126841ae7a3c83d1d2c170197", - "size": 132065 + "sha256": "5d2ca2e5c57a23f9dce55dba8c5160a48b0c727e6f1ea53316a58e8e6df7e229", + "size": 131838 }, { "url": "https://platform.claude.com/docs/en/api/typescript/beta/sessions/threads/list", @@ -18314,15 +18314,15 @@ "url": "https://platform.claude.com/docs/en/api/typescript/beta/sessions/threads/events/stream", "status": "success", "path": "en/api/typescript/beta/sessions/threads/events/stream.md", - "sha256": "13a684e918447e7b10d1c2456387e02c42299f61070dc114c81cffe89bae5e91", - "size": 67757 + "sha256": "41cf2f4b35a03115a71e229cf7e69597e9610540c34157dd3a4e83cfc9c42a24", + "size": 67530 }, { "url": "https://platform.claude.com/docs/en/api/csharp/completions/create", "status": "success", "path": "en/api/csharp/completions/create.md", - "sha256": "b8efb8acfe13c3839927c3b78360813bee67356f9aa764a1b71b915f1f289708", - "size": 11393 + "sha256": "89653663a29793495a061d87b77efe74256094b3b91892a32a4bf3c549436c9f", + "size": 11370 }, { "url": "https://platform.claude.com/docs/en/api/csharp/beta/deployments", @@ -18377,8 +18377,8 @@ "url": "https://platform.claude.com/docs/en/api/csharp/beta/sessions", "status": "success", "path": "en/api/csharp/beta/sessions.md", - "sha256": "4c067cc69eb8ee0105828f3487c40f165bf9af7cda2ad99caa1ee663202bcf21", - "size": 709579 + "sha256": "394ada2b5c32ddd7dcb32a1960eb51b2e11de501f3ce8d8dd1bbf43ffbeb3f44", + "size": 709369 }, { "url": "https://platform.claude.com/docs/en/api/csharp/beta/deployment_runs", @@ -18510,8 +18510,8 @@ "url": "https://platform.claude.com/docs/en/api/csharp/beta/sessions/events", "status": "success", "path": "en/api/csharp/beta/sessions/events.md", - "sha256": "33d072893736e902f38236d02f0c4bd3c07d7ae831a70d4c78a16d7ce749550a", - "size": 393215 + "sha256": "a4e747502508a0092c0be75821e37bdbf6867702ed5639f22c69e26e9084f834", + "size": 393116 }, { "url": "https://platform.claude.com/docs/en/api/csharp/beta/sessions/list", @@ -18559,8 +18559,8 @@ "url": "https://platform.claude.com/docs/en/api/csharp/beta/sessions/threads", "status": "success", "path": "en/api/csharp/beta/sessions/threads.md", - "sha256": "701f3d5cb3d9c808b835d757852cd5abd1d3aea1b37e91a99d7b3c56b679826d", - "size": 284128 + "sha256": "fad603b10e47a73c888a5f65853b68b795d50dfa2b6f794ed0baad9976bf238b", + "size": 284017 }, { "url": "https://platform.claude.com/docs/en/api/csharp/beta/deployments/run", @@ -19308,8 +19308,8 @@ "url": "https://platform.claude.com/docs/en/api/csharp/beta/sessions/events/stream", "status": "success", "path": "en/api/csharp/beta/sessions/events/stream.md", - "sha256": "1927799e29c1b7d6736328ac3499060b696108b4de8a7c5baac95bf8adc0c006", - "size": 67627 + "sha256": "5f05eea95d5c4c6d895a3c3b402560735aecf1b69bac45c9ff79bddc11ae96d2", + "size": 67528 }, { "url": "https://platform.claude.com/docs/en/api/csharp/beta/sessions/events/send", @@ -19357,8 +19357,8 @@ "url": "https://platform.claude.com/docs/en/api/csharp/beta/sessions/threads/events", "status": "success", "path": "en/api/csharp/beta/sessions/threads/events.md", - "sha256": "38f7275ae7bd2437a3bee394149b7b4e91fae2cd7e664aada91c962c5b3e3d17", - "size": 132202 + "sha256": "ebefbea73c0bb14c9ea3ce372de0cedc57e6b5a7c7b718e7deac1f050646a1e8", + "size": 132091 }, { "url": "https://platform.claude.com/docs/en/api/csharp/beta/sessions/threads/list", @@ -19392,15 +19392,15 @@ "url": "https://platform.claude.com/docs/en/api/csharp/beta/sessions/threads/events/stream", "status": "success", "path": "en/api/csharp/beta/sessions/threads/events/stream.md", - "sha256": "7f10ea858ccbd085f34e79d179616f2367d3fd07cdb82b0a5a50841e7f17c00d", - "size": 67851 + "sha256": "3c2d4492931aad692bcb030bf03e59b2d83878fe12e4103a6f884c0f1fed96a3", + "size": 67740 }, { "url": "https://platform.claude.com/docs/en/api/go/completions/create", "status": "success", "path": "en/api/go/completions/create.md", - "sha256": "ba9cea8e82eb2676378dc8c1f66f72bcc7e54ace66d08f420641015374c2a373", - "size": 12649 + "sha256": "73db12a834870c98448a0e10d046e0d42e2ce920ec9c538187115e944e1da345", + "size": 12616 }, { "url": "https://platform.claude.com/docs/en/api/go/beta/deployments", @@ -19455,8 +19455,8 @@ "url": "https://platform.claude.com/docs/en/api/go/beta/sessions", "status": "success", "path": "en/api/go/beta/sessions.md", - "sha256": "97d55d1d1ea782dff31db7c58b88bf0736538ef2cf93a515f9aa4acbbc464daf", - "size": 806137 + "sha256": "09ca6bfc7676f7f604040e4fe354cf746a6fb39b3fd01c9937d7431449bd7d16", + "size": 805903 }, { "url": "https://platform.claude.com/docs/en/api/go/beta/deployment_runs", @@ -19588,8 +19588,8 @@ "url": "https://platform.claude.com/docs/en/api/go/beta/sessions/events", "status": "success", "path": "en/api/go/beta/sessions/events.md", - "sha256": "efc429bf4ade0187f9db04df03f38a6e0dcf5dc8678e5216d8f8e5606a2dd2c4", - "size": 435854 + "sha256": "ab8ed6b64e37e9d829f44a17a00c9295ad762ffb4fe0b19708ca63aaa58b6cf3", + "size": 435743 }, { "url": "https://platform.claude.com/docs/en/api/go/beta/sessions/list", @@ -19637,8 +19637,8 @@ "url": "https://platform.claude.com/docs/en/api/go/beta/sessions/threads", "status": "success", "path": "en/api/go/beta/sessions/threads.md", - "sha256": "67f3d17b2fbdd80594bc3f71fef12a0d931d1f16352514ad20cc866e75feea71", - "size": 319132 + "sha256": "d2e3d6e24318b97ebb46634cd83e14b70ea4b11fbe3913b829fa1b2a9f622f95", + "size": 319009 }, { "url": "https://platform.claude.com/docs/en/api/go/beta/deployments/run", @@ -20386,8 +20386,8 @@ "url": "https://platform.claude.com/docs/en/api/go/beta/sessions/events/stream", "status": "success", "path": "en/api/go/beta/sessions/events/stream.md", - "sha256": "7a2c7e48ab954d2c2299c26ed0d20ac58b32acb462080e54f09101b904a09e3e", - "size": 75168 + "sha256": "3741c9f8459728707a15ba9a1c7caacf276c4767e89500b018324fc86063a2a8", + "size": 75057 }, { "url": "https://platform.claude.com/docs/en/api/go/beta/sessions/events/send", @@ -20435,8 +20435,8 @@ "url": "https://platform.claude.com/docs/en/api/go/beta/sessions/threads/events", "status": "success", "path": "en/api/go/beta/sessions/threads/events.md", - "sha256": "7f62ab6789b90fb5812048dfa2ac474bfa970f9469f03283acd4c63a5d4b134a", - "size": 147114 + "sha256": "3450987f37f34437e445dd3e8f9192859702ecfb68a38569e2eb3072e58adec8", + "size": 146991 }, { "url": "https://platform.claude.com/docs/en/api/go/beta/sessions/threads/list", @@ -20470,15 +20470,15 @@ "url": "https://platform.claude.com/docs/en/api/go/beta/sessions/threads/events/stream", "status": "success", "path": "en/api/go/beta/sessions/threads/events/stream.md", - "sha256": "8ca5630b5ea8848d91cbc5f2aa017372116db2cc30ed503dfc654fe0c2cad458", - "size": 75397 + "sha256": "860c68e36ff23c25638465c6e5c7b45576b9320a6eebfb3eee99554e1acceed0", + "size": 75274 }, { "url": "https://platform.claude.com/docs/en/api/java/completions/create", "status": "success", "path": "en/api/java/completions/create.md", - "sha256": "6c13bebe266c7a181992899c7b9c82ea585c4ed6d5050579f28f162a9c9c672d", - "size": 10593 + "sha256": "3d73c7f5f1607088d5f845671ab97a1bfa09d9452161f73cb772c8b7ffdadfa0", + "size": 10570 }, { "url": "https://platform.claude.com/docs/en/api/java/beta/deployments", @@ -20533,8 +20533,8 @@ "url": "https://platform.claude.com/docs/en/api/java/beta/sessions", "status": "success", "path": "en/api/java/beta/sessions.md", - "sha256": "be3f0c9436d4dda4001649fa481d18b3464862000dc3121dbe45c27bb572f0ad", - "size": 694710 + "sha256": "8d68b736bd757b02862abea4099ca4ea919b08708422ca805c19d13d126900cd", + "size": 694500 }, { "url": "https://platform.claude.com/docs/en/api/java/beta/deployment_runs", @@ -20666,8 +20666,8 @@ "url": "https://platform.claude.com/docs/en/api/java/beta/sessions/events", "status": "success", "path": "en/api/java/beta/sessions/events.md", - "sha256": "5afdcf02645357b3ebc7fe81b72b64cd42377d2d1bfc716c5642209e01bfb283", - "size": 377625 + "sha256": "350b4e96c82cdb4fc33d668a121aad35a84da8f36c4b940d41912e24d935fd2b", + "size": 377526 }, { "url": "https://platform.claude.com/docs/en/api/java/beta/sessions/list", @@ -20715,8 +20715,8 @@ "url": "https://platform.claude.com/docs/en/api/java/beta/sessions/threads", "status": "success", "path": "en/api/java/beta/sessions/threads.md", - "sha256": "a7ff5ce97465bea4fbbbd4a8c82ddcf5950daefec8c99ac91dc6b1a68dc1fa7c", - "size": 277107 + "sha256": "0b13969da347441257e71aea8f37c4e0b2973a305b9f576198760bbb551a5f31", + "size": 276996 }, { "url": "https://platform.claude.com/docs/en/api/java/beta/deployments/run", @@ -21464,8 +21464,8 @@ "url": "https://platform.claude.com/docs/en/api/java/beta/sessions/events/stream", "status": "success", "path": "en/api/java/beta/sessions/events/stream.md", - "sha256": "45f59fdb295e23ad36fbd2196f2023252b6a93c3e4ddf152241a730a7508f667", - "size": 65496 + "sha256": "9f82689fac6408a6c0f0d85430312d7642b992a1cf5d9f498b59803184bedb71", + "size": 65397 }, { "url": "https://platform.claude.com/docs/en/api/java/beta/sessions/events/send", @@ -21513,8 +21513,8 @@ "url": "https://platform.claude.com/docs/en/api/java/beta/sessions/threads/events", "status": "success", "path": "en/api/java/beta/sessions/threads/events.md", - "sha256": "fc68eae63904d6e39bb6429ec24ab7b6118aff08b6c4c476e055fd22d640d98e", - "size": 128046 + "sha256": "eec6a435caf5ad946317e0dfb36dae8e68d1939d9400de5aa8f3dfd7038e418d", + "size": 127935 }, { "url": "https://platform.claude.com/docs/en/api/java/beta/sessions/threads/list", @@ -21548,8 +21548,8 @@ "url": "https://platform.claude.com/docs/en/api/java/beta/sessions/threads/events/stream", "status": "success", "path": "en/api/java/beta/sessions/threads/events/stream.md", - "sha256": "b5b7106600be8c6f49220034b764a229b17e2a4265b534e9951de9204807a5b3", - "size": 65783 + "sha256": "2d1097ec89d580048c1855de8d5c0e55f7a815cd18541768f4aae36a64bb04cd", + "size": 65672 }, { "url": "https://raw.githubusercontent.com/anthropics/claude-cookbooks/main/.claude/agents/code-reviewer.md", diff --git a/content/CHANGELOG.md b/content/CHANGELOG.md index 32c20acca..0b4c5e01e 100644 --- a/content/CHANGELOG.md +++ b/content/CHANGELOG.md @@ -1,5 +1,61 @@ # Changelog +## 2.1.267 + +- Added `maxEffortLevel` setting (top-level or per model under `modelSettings`): caps the effort level on every provider, including Bedrock, Vertex and Foundry; users can still pick a lower level +- Added `--system-prompt-snapshot off` to render the system prompt fresh on every request instead of reusing the conversation's recorded prompt (for iterating on prompt text) +- Fixed Cowork scheduled tasks in the cloud failing at startup for organizations whose managed settings require sandboxing +- Fixed `/context` and other local command output rendering blank on mobile clients +- Fixed shift+enter and option+backspace not working after reconnecting to a tmux or ssh session inside an agent view +- Fixed the dim last-prompt header not appearing at the top of the conversation when scrolling up in fullscreen mode +- Fixed Workflow `agent()` calls with large output schemas being refused in auto mode instead of being checked by the safety classifier +- Fixed a case where a marketplace entry path containing a backslash could bypass the containment check for fetched marketplaces on macOS and Linux +- Fixed expired AWS or Google Cloud credentials under a host app such as Claude Desktop retrying ten times with a generic "request failed" before the re-authenticate error appeared +- Fixed resuming a session after `/compact` or another slash command ran via `-p --resume`: a spurious "Continue from where you left off." turn is no longer inserted +- Fixed resuming a large session (transcript over 5 MB): parallel tool calls and their hook output are no longer dropped from the reloaded conversation +- Fixed managed `allowedHttpHookUrls`, `httpHookAllowedEnvVars` and `allowedChannelPlugins` to admit nothing, not everything, when unreadable +- Fixed `/login` on machines whose managed settings require Claude apps gateway sign-in: Esc now closes the dialog instead of doing nothing +- Fixed artifact publishes cut off by a dropped connection mid-upload: they now retry once when Claude Code can tell the upload never completed, instead of reporting an unknown outcome +- Fixed `effort:` frontmatter on custom commands, skills, and subagents being ignored on models whose default effort is still pinned (Opus 4.7, Opus 4.8, Fable 5) +- Fixed artifact publish failing with an unhelpful error when the page file isn't valid UTF-8 or contains a replacement character (U+FFFD); the error now names the line and column to fix +- Fixed `claude agents` `@` directory menu not listing repositories created after the session started +- Fixed Remote Control clients that join a Claude Desktop or VS Code session showing a stale permission mode until it was changed again +- Fixed `claude remote-control` exiting and dropping every attached session when its server credential expires (about 30 days after start); the host now re-registers and keeps going +- Fixed the usage-limit warning flickering on and off during a session when requests for different models or modes report different limit windows +- Fixed earlier reasoning being dropped when an MCP server re-sends, or a built-in tool re-renders, a tool the model already loaded +- Fixed a tool that disappears mid-conversation, from a disconnected MCP server or an upgrade, rewriting the tool list and discarding earlier thinking +- Fixed a background worker forked from a conversation adding EnterWorktree to the conversation's tool block mid-session, which broke prompt-cache reuse +- Fixed mid-session MCP and plugin tools being added to the tool list in sessions without ToolSearch, which broke prompt-cache reuse; supported models now receive them as deferred definitions +- Fixed switching models with /model re-sending every tool definition (a prompt-cache miss); commit and PR attribution text now arrives as a conversation note that updates on model changes +- Fixed resumed sessions rewriting the inline tool set when an MCP connector reconnects at a different moment than before +- Fixed resumed sessions re-rendering tool descriptions instead of replaying the recorded ones when the first turn ran a tool +- Fixed prompt-cache misses and dropped extended thinking when a claude.ai connector's tools change between a session and its resume +- Fixed resumed sessions rewriting earlier MCP tool announcements (and dropping extended thinking) before their connectors reconnect +- Fixed a prompt-cache break when a print-mode (`-p`) conversation is resumed interactively: the system prompt prefix no longer changes +- Improved the `/diff` panel: it no longer flashes "0 files changed" and a spinner before settling, and its empty state is centered in the panel +- Improved the Bash tool's description guidance so Claude describes what a command does in plain words instead of echoing the command +- Improved sandbox guidance so Claude suggests `/copy` when clipboard commands such as `pbcopy` fail inside the sandbox +- Improved `--resume` first-render time for sessions with many Bash tool calls +- Improved prompt input responsiveness: keystrokes no longer occasionally wait a frame behind spinner or streaming repaints +- Improved prompt-cache stability: subagents and sessions started with `--system-prompt` or `--append-system-prompt` now record the system prompt and tool definitions once instead of re-rendering them +- Improved Artifact tool publish errors: when a publish is refused, the message now says why and what to do about it +- Self-hosted runner: Changed `--use-anthropic-git-proxy` to be reported to the server at registration and to print a warning for each session that still clones through the legacy git proxy +- Gateway: Changed `forward_user_identity` upstreams to return a 429 as-is to a developer whose email was forwarded, instead of failing over to the next upstream, so the proxy's per-user limits hold +- [VSCode] Fixed the extension host hanging at 100% CPU when forking, editing an earlier message, or rewinding in a conversation whose saved transcript contains a cyclic parent link +- [VSCode] Fixed pasting a screenshot on WSL2/WSLg inserting raw image bytes into the chat input; the image is now attached when the clipboard provides it, otherwise the paste is ignored +- [VSCode] Fixed chat diff blocks always rendering with a dark editor theme; they now follow the active VS Code color theme, including high contrast +- [VSCode] Fixed mixed right-to-left and English text rendering in the wrong order while typing in the message input +- [VSCode] Fixed accepting an edit in the diff view on a file with Windows (CRLF) line endings failing with "String not found in file" +- [VSCode] Fixed @-mentions dropping files whose paths contain spaces +- [VSCode] Fixed the sessions list view failing to load in windows connected over Remote-SSH when the workspace folder exists only on the remote host +- [VSCode] Fixed runaway ripgrep processes when viewing files in large or symlink-heavy workspaces +- [Claude Code on the web] Fixed GitHub Enterprise Server sessions showing your GitHub account as disconnected once its token expired; PR and issue operations now refresh it automatically +- [Claude Code on the web] Fixed `gh` and GitHub API calls failing in organizations without the Claude GitHub App; they now use your connected GitHub account and say so when none is connected +- [Claude Tag] Added a "Use a custom connector" link to the preset connection forms in Claude Tag admin settings, so you can switch to a custom connection without starting over +- [Claude Tag] Fixed Claude replying "The API rejected the request as invalid" when the organization has run out of usage credits; the reply now says so and explains how to add more +- [Claude Tag] Fixed thread requests to edit or delete a message Claude posted at the channel's top level being answered with a correction instead of reaching the session that posted it +- [Claude Tag] Fixed **Connect** on Tool access requests under Admin settings > Review requests failing with "Authorization failed" or showing the requested access bundle as deleted + ## 2.1.266 - Fixed a 2.1.265 regression affecting LLM-gateway and proxy setups: the undocumented `CLAUDE_CODE_USE_GATEWAY` environment variable, previously ignored unless `ANTHROPIC_BASE_URL` and `ANTHROPIC_AUTH_TOKEN` were both set, began forcing Cloud-gateway sign-in on its own in 2.1.265, so configurations that set it alongside an API key, `apiKeyHelper`, or custom auth headers failed every request with "Not signed in to the Cloud gateway". The variable on its own is ignored again; no configuration change is needed diff --git a/content/claude-code-manifest.json b/content/claude-code-manifest.json index 13170b8b1..5517baa0c 100644 --- a/content/claude-code-manifest.json +++ b/content/claude-code-manifest.json @@ -6,25 +6,25 @@ "url": "https://github.com/anthropics/claude-code/issues" }, "dist": { - "shasum": "8131af031e5f87916de71cdc1d7de5b165dcf102", - "tarball": "https://registry.npmjs.org/@anthropic-ai/claude-code/-/claude-code-2.1.266.tgz", + "shasum": "11710a497103b7cd03f8035c587875bd91b7925d", + "tarball": "https://registry.npmjs.org/@anthropic-ai/claude-code/-/claude-code-2.1.267.tgz", "fileCount": 7, - "integrity": "sha512-zaEL5S5twZgQzmF1b/SBMSOllwMrJiqHXTd25ZWwaZRKr1jUKy4jGTPR/uMLYWsuv9Az1neiaWGLJu93lPYO8w==", + "integrity": "sha512-0rErYxMp/5uJKt2Z8zJVRmuGEijTiDOb659YnELpGsxyrOp0BKhoOrT8tyNrK5yn8VLYXxc3X3KXfT9woL0R4g==", "signatures": [ { - "sig": "MEUCIE7kuc4yEyRUgRcbZY6aKecOk7iMo1yryrHAdsvAFJBgAiEAmpzIPDqm40tHEVbVbiBYqRt682+eY5EPcPjLzrFCJZg=", + "sig": "MEUCIFpmXPZ5ll+CSpQW+LFPMeOm1741byDHpMfapVR9fA+EAiEAlP0PSv35fr6LYteaMx4wHmy0ijceGR4zLVj69G9HpeE=", "keyid": "SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U" }, { - "sig": "MEUCIQCsxcFhg6saF60TQxbvUJeQP/s04NyzGpfHeFd3AbgThgIgODyqgVFXU+oi/kDgVEkQjmGVsaqsk6esQ17Fgm56Fpk=", + "sig": "MEUCIQDyMK3VagZW7DBKtAQdF8VHrJvvUfowA94KtJRkDuZ/VAIgA3sPfsXKE2DYqKeUpbKd0qWV3R+gpNqDJ0f3v+GP0WE=", "keyid": "SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U" } ], - "unpackedSize": 183459 + "unpackedSize": 183634 }, "name": "@anthropic-ai/claude-code", "type": "module", - "_from": "file:staged-npm/anthropic-ai-claude-code-2.1.266.tgz", + "_from": "file:staged-npm/anthropic-ai-claude-code-2.1.267.tgz", "author": { "name": "Anthropic", "email": "support@anthropic.com" @@ -42,8 +42,8 @@ "email": "wolffiex@anthropic.com" }, "homepage": "https://github.com/anthropics/claude-code", - "_resolved": "/home/runner/work/claude-cli-internal/claude-cli-internal/staged-npm/anthropic-ai-claude-code-2.1.266.tgz", - "_integrity": "sha512-zaEL5S5twZgQzmF1b/SBMSOllwMrJiqHXTd25ZWwaZRKr1jUKy4jGTPR/uMLYWsuv9Az1neiaWGLJu93lPYO8w==", + "_resolved": "/home/runner/work/claude-cli-internal/claude-cli-internal/staged-npm/anthropic-ai-claude-code-2.1.267.tgz", + "_integrity": "sha512-0rErYxMp/5uJKt2Z8zJVRmuGEijTiDOb659YnELpGsxyrOp0BKhoOrT8tyNrK5yn8VLYXxc3X3KXfT9woL0R4g==", "_npmVersion": "11.19.0", "description": "Use Claude, Anthropic's AI assistant, right from your terminal. Claude can understand your codebase, edit files, run terminal commands, and handle entire workflows for you.", "directories": {}, @@ -104,20 +104,21 @@ "_nodeVersion": "24.20.0", "dependencies": {}, "_hasShrinkwrap": false, + "readmeFilename": "README.md", "optionalDependencies": { - "@anthropic-ai/claude-code-linux-x64": "2.1.266", - "@anthropic-ai/claude-code-win32-x64": "2.1.266", - "@anthropic-ai/claude-code-darwin-x64": "2.1.266", - "@anthropic-ai/claude-code-linux-arm64": "2.1.266", - "@anthropic-ai/claude-code-win32-arm64": "2.1.266", - "@anthropic-ai/claude-code-darwin-arm64": "2.1.266", - "@anthropic-ai/claude-code-linux-x64-musl": "2.1.266", - "@anthropic-ai/claude-code-linux-arm64-musl": "2.1.266" + "@anthropic-ai/claude-code-linux-x64": "2.1.267", + "@anthropic-ai/claude-code-win32-x64": "2.1.267", + "@anthropic-ai/claude-code-darwin-x64": "2.1.267", + "@anthropic-ai/claude-code-linux-arm64": "2.1.267", + "@anthropic-ai/claude-code-win32-arm64": "2.1.267", + "@anthropic-ai/claude-code-darwin-arm64": "2.1.267", + "@anthropic-ai/claude-code-linux-x64-musl": "2.1.267", + "@anthropic-ai/claude-code-linux-arm64-musl": "2.1.267" }, "_npmOperationalInternal": { - "tmp": "tmp/claude-code_2.1.266_1788910352776_0.7502309496387738", + "tmp": "tmp/claude-code_2.1.267_1788978342725_0.5239077374707701", "host": "s3://npm-registry-packages-npm-production" }, - "_id": "@anthropic-ai/claude-code@2.1.266", - "version": "2.1.266" + "_id": "@anthropic-ai/claude-code@2.1.267", + "version": "2.1.267" } \ No newline at end of file diff --git a/content/claude/government/changelog.md b/content/claude/government/changelog.md index 9bc390202..87944b17d 100644 --- a/content/claude/government/changelog.md +++ b/content/claude/government/changelog.md @@ -6,6 +6,10 @@ > Release notes for Claude for Government + + * Changed how the "Telemetry headers" setting and your connectors are delivered to Claude Desktop, ahead of Claude Desktop retiring the older formats: nothing changes in your settings or for members, and the notice about deprecated configuration fields that Claude Desktop 1.40609.0 or later can show no longer lists them. + + * Fixed web fetch failing in Claude Desktop's Code sessions on networks that block `api.anthropic.com`: sessions no longer contact that host before fetching a page, which takes effect on Claude Desktop 1.37937.0 or later after a restart. * Fixed the sign-in page Claude Desktop opens in the browser showing an error instead of a field to enter the code when it is opened without a code or with an expired one. diff --git a/content/claude/government/config/plugins-and-connectors.md b/content/claude/government/config/plugins-and-connectors.md index dfc44dfce..7fc0dd75c 100644 --- a/content/claude/government/config/plugins-and-connectors.md +++ b/content/claude/government/config/plugins-and-connectors.md @@ -70,4 +70,4 @@ To remove a plugin, click its remove icon and save the change. Removing a plugin You add and edit connectors on the **Connectors** card, and for each one you choose the products that receive it and set a policy for each of its tools. See [Connectors](/docs/government/connectors/overview) for the three-step wizard. -On Claude Desktop, that tool policy shapes what members experience. A tool you switch off is blocked, so Claude cannot use it. A tool you switch on is available and asks the member on every use, and members are not offered a lasting approval for it. A tool you do not list is left to the member to turn on or off, and its approval prompts follow the member's own choices, which can include lasting approval unless your organization turns that off. +On Claude Desktop, that tool policy shapes what members experience. A tool you switch off is blocked, so Claude cannot use it. A tool you switch on is available and asks the member on every use, and members are not offered a lasting approval for it. A tool you do not list is left to the member to turn on or off, and its approval prompts follow the member's own choices, which can include lasting approval. diff --git a/content/claude/government/config/settings.md b/content/claude/government/config/settings.md index 1ecda2c9d..8216fcbac 100644 --- a/content/claude/government/config/settings.md +++ b/content/claude/government/config/settings.md @@ -144,7 +144,7 @@ Turning a switch off also changes this layout. For example, with **Chat in Claud ### Allowed network hosts -A list of hostnames that tools in Claude Desktop may reach, for example to install packages or fetch web pages. This covers the tools Claude uses during Cowork tasks, web fetch in Chat, and the sandboxed shell commands of Code sessions on macOS. For how the list applies to Code sessions on each operating system, see [Code in Claude Desktop](/docs/government/security/security-and-data-handling#code-in-claude-desktop). The connection to Claude is always allowed and does not need to be listed. An empty list shows as **Claude connection only**. Use **Add package registries** to add npm, PyPI, GitHub, crates.io, and other common registries so that Claude can install libraries; hosts added this way appear together as a single **Package registries** pill with a count. +A list of hostnames that tools in Claude Desktop may reach, for example to install packages or fetch web pages. This covers the tools Claude uses during Cowork tasks, web fetch in Chat, and the sandboxed shell commands of Code sessions on macOS and Linux. For how the list applies to Code sessions on each operating system, see [Code in Claude Desktop](/docs/government/security/security-and-data-handling#code-in-claude-desktop). The connection to Claude is always allowed and does not need to be listed. An empty list shows as **Claude connection only**. Use **Add package registries** to add npm, PyPI, GitHub, crates.io, and other common registries so that Claude can install libraries; hosts added this way appear together as a single **Package registries** pill with a count. Entries are hostnames or wildcard patterns such as `*.example.com`, which matches subdomains at any depth but not `example.com` itself, so list both if you need both. The list does not accept IP addresses or ports, and unless you allow all traffic with a `*` entry, the tools this list covers cannot reach a destination by its IP address. Web search, connectors, and the app's own connections, such as sign-in, updates, and telemetry export, do not use this list. Web fetch refuses localhost and private-network addresses regardless of what the list contains. Because entries match by name, a hostname you list is reachable even when it resolves inside your network, so treat the list as one layer alongside your own network controls. diff --git a/content/claude/government/connectors/microsoft-365.md b/content/claude/government/connectors/microsoft-365.md index bc8769a21..d6d5aa6ea 100644 --- a/content/claude/government/connectors/microsoft-365.md +++ b/content/claude/government/connectors/microsoft-365.md @@ -119,17 +119,17 @@ Whatever you select here must also be added and approved on the Entra app regist ### Read access -| Permission | What it lets Claude do | -| --------------------------------- | --------------------------------------------------------------------------- | -| `Mail.Read` (Default) | Read the member's mail | -| `Mail.Read.Shared` (Default) | Read mail in mailboxes shared with the member | -| `Calendars.Read` (Default) | Read the member's calendar events | -| `Calendars.Read.Shared` (Default) | Read events on calendars shared with the member and find free meeting times | -| `Files.Read.All` (Default) | Read files the member can open in OneDrive and SharePoint | -| `Sites.Read.All` (Default) | Read SharePoint site content the member can open | -| `Chat.Read` (Default) | Read the member's Teams chats | -| `OnlineMeetings.Read` (Default) | Read the member's online meetings | -| `MailboxSettings.Read` | Read the member's mail rules and automatic-reply settings | +| Permission | What it lets Claude do | +| --------------------------------- | ------------------------------------------------------------------------------------------------------------ | +| `Mail.Read` (Default) | Read the member's mail | +| `Mail.Read.Shared` (Default) | Read mail in mailboxes shared with the member | +| `Calendars.Read` (Default) | Read the member's calendar events | +| `Calendars.Read.Shared` (Default) | Read events on calendars shared with the member and find free meeting times | +| `Files.Read.All` (Default) | Read files the member can open in OneDrive and SharePoint | +| `Sites.Read.All` (Default) | Read SharePoint site content the member can open | +| `Chat.Read` (Default) | Read the member's Teams chats | +| `OnlineMeetings.Read` (Default) | Read the member's online meetings | +| `MailboxSettings.Read` | Read the member's mailbox time zone so that dates in requests follow the member's local time rather than UTC | ### Read access requiring administrator approval @@ -154,7 +154,7 @@ Write permissions let Claude take actions in Microsoft 365 on the member's behal | `ChatMessage.Send` | Send messages in the member's existing Teams chats | | `ChannelMessage.Send` | Post messages to Teams channels | | `Chat.Create` | Start new Teams chats | -| `MailboxSettings.ReadWrite` | Manage the member's labels, mail rules, and automatic replies | +| `MailboxSettings.ReadWrite` | Create and delete the member's mail rules, manage labels, and configure automatic replies | Removing a permission from the **Access** picker changes what Claude Desktop requests the next time a member signs in, but it does not revoke permissions that Microsoft Entra has already approved for the application. To revoke a permission entirely, remove it in the Entra admin center under **Enterprise applications** > your application > **Permissions**. diff --git a/content/claude/government/deploy-desktop/configure.md b/content/claude/government/deploy-desktop/configure.md index 150ef7e4b..6203d230d 100644 --- a/content/claude/government/deploy-desktop/configure.md +++ b/content/claude/government/deploy-desktop/configure.md @@ -45,6 +45,10 @@ https:///gateway-api/user/bootstrap The Claude for Government host is the same domain name you use to access Claude for Government. If you are unsure of it, ask your Anthropic representative. The app uses the address exactly as entered; it fetches each user's configuration from it and starts sign-in from it, so include the full path. +Use the host exactly as it was provided to your agency. An alias that your agency sets up on its own, such as a DNS record, redirect, or reverse proxy under your own domain that forwards to Claude for Government, does not work as the bootstrap address. The app accepts sign-in addresses only on the host in `bootstrapUrl`, and Claude for Government answers sign-in only on the host provided to your agency, so the app cannot sign in through such an alias. + +With any alias of this kind, the app still offers **Sign in with your organization**, but sign-in fails as soon as the user chooses it; see [Troubleshooting](#troubleshooting). The app supports routing its traffic through your network's proxy server, as the [Security and data handling](/docs/government/security/security-and-data-handling#network-egress-required-domains-and-proxies) page describes. + ### How the app uses the bootstrap address The address is the same for every device and user in your agency and carries no credentials or user information, so the same profile is safe to push to your whole fleet. A request to the address without a signed-in session is refused. @@ -125,7 +129,11 @@ The recommended profile contains two keys. In the macOS and Windows profiles bel | `bootstrapUrl` | `https:///gateway-api/user/bootstrap` | Required. Points the app at Claude for Government. | | `disableDeploymentModeChooser` | `"true"` | Recommended. Hides the claude.ai sign-in option so users can only sign in to Claude for Government. Like any recognized key other than the automatic update settings, it also marks the device as managed (see [Order of deployment](#order-of-deployment)). | -No other keys are needed to connect the app; Claude for Government supplies everything else per user after sign-in. If your agency distributes Claude Desktop updates itself, [Automatic updates](#automatic-updates) below describes one more key to add. The profile contains no secrets, only a host. Keys documented for other Claude plans, such as `forceLoginOrgUUID` or `loginSsoOrgDomain`, apply only to claude.ai workspaces and are not used here. +No other keys are needed to connect the app; Claude for Government supplies everything else per user after sign-in. If your agency distributes Claude Desktop updates itself, [Automatic updates](#automatic-updates) below describes one more key to add. The profile contains no secrets, only a host. + +Keys documented for other Claude plans, such as `forceLoginOrgUUID` or `loginSsoOrgDomain`, apply only to claude.ai workspaces and are not used here. Keys for a separate sign-in provider, such as `bootstrapOidc` and `inferenceGatewayOidc` in the Claude Desktop [configuration reference](/docs/third-party/claude-desktop/configuration), do not work with Claude for Government either. Leave them unset, because you cannot connect the app directly to your identity provider. + +With Claude for Government, the name the app shows for the connection in the lower-left corner of its window and at the top of its account menu is not controlled through device management. Leave the `deploymentDisplayName` and `deploymentDisplaySubtitle` keys unset, because the app discards them once it downloads the user's configuration after sign-in. ### macOS @@ -230,17 +238,18 @@ Run through these checks on a configured machine from either path. ## Troubleshooting -| What you see | Likely cause | What to do | -| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| Only the claude.ai sign-in screen; no organization option | The configuration never reached the app: the profile was not delivered, a key name is misspelled, the value is in the wrong location or registry type, or the app was not relaunched after the change | Verify delivery in your management console, generate a diagnostic report and check its Configuration section, then fully quit and reopen the app | -| Sign-in times out, or the browser says the code expired | The app stops waiting after about five minutes | Cancel and start sign-in again; a fresh code is issued | -| The diagnostic report or `main.log` shows "Managed configuration is invalid; local settings are disabled until it is fixed" | The app detected a managed profile but could not read any of its values | Correct the profile and redeploy; the report's Configuration section names each key that failed | -| Signed in, but the model picker is empty, or the app shows a **Configuration can't be used** banner whose **Details** or **Copy report for IT** text says the provider returned no usable models | The user has no seat tier, or none of the tier's models is available in Claude for Government, so the app received an empty model list. Nothing is wrong with the device's configuration | Have an organization owner check the user's seat tier on the [Users](/docs/government/org-admin/users) page and the tier's models on the [Seat tiers](/docs/government/org-admin/seat-tiers) page | -| An **Apply settings from your organization?** window appears after sign-in or at every launch, or the app quits when the user dismisses that window | The bootstrap address was entered in the app or set per user (for example under `HKEY_CURRENT_USER`), so the app asks each user to allow the gateway address that Claude for Government sends before it applies any of the organization's settings, and the user has not yet clicked **Allow**. Choosing **Quit**, pressing Esc, or closing the window quits the app, and it asks again on the next launch. | Have the user expand **Gateway base URL** in that window, confirm that the address is on your Claude for Government host, and click **Allow**. The window does not take focus when it opens, so have the user switch to the Claude app to find it. If the address is not on your host, check the bootstrap address configured on that device. To stop the prompt across a fleet, deliver the bootstrap address through machine-wide device management, as described under [Deploy to your fleet](#deploy-to-your-fleet). Versions earlier than 1.32352.0 that ask for this approval also show a **Configuration sync issue** banner that says "bootstrap response is missing required field(s): inferenceGatewayBaseUrl" for the same cause. Update the app to the latest version, then answer the prompt. | -| The browser shows a connection error instead of Claude for Government or its sign-in page: "Secure Connection Failed" with `PR_CONNECT_RESET_ERROR` in Firefox, or `ERR_CONNECTION_RESET` in Chrome | A web filter, firewall, or proxy reset the connection, either on your agency's network or on the Claude for Government side. | If the address opens in another browser on the same computer, check the first browser's proxy and DNS settings. Otherwise, open the address from outside your agency's network, for example on a phone using cellular data. If the phone shows a web page, not a connection error, have your network team allow the host in that address and the hosts described under [Before you begin](#before-you-begin). If the phone also fails, or the team finds no block, contact your Anthropic representative with the address, the time and time zone of the error, and your network's public IP addresses. | -| During sign-in, the browser shows a Microsoft page titled "You cannot access this right now", sometimes in one browser but not in another | Microsoft Entra ID shows this page when one of your agency's Conditional Access policies blocks the sign-in, for example a policy that limits which browsers, devices, or locations can sign in. The refusal happens before the sign-in reaches Claude for Government, so nothing in the app or in this portal changes it. | Ask your identity team to find the failed sign-in in the identity provider's sign-in logs. In the Microsoft Entra admin center, the sign-in event's **Conditional Access** tab names the policy that blocked it and the condition that was not met. Adjust the policy, or have the user sign in from a browser or device the policy allows (Claude Desktop opens sign-in in the computer's default browser). | -| The app shows **Your session has expired** or **You've been signed out** with a **Sign in again** button, or a device that was already set up opens to the sign-in screen | The user's Claude for Government session ended, most often because they had not used Claude for longer than your tenant's [Session idle timeout](/docs/government/config/settings#session-idle-timeout). A device left idle, locked, or asleep does not keep a session alive. A session also ends at the Maximum session length, or when the user or an administrator signs it out. | Have the user sign in again. The app keeps its configuration and reconnects. If people are asked to sign in more often than you intend, ask a tenant administrator to review **Session idle timeout** and **Maximum session length** on the [Config](/docs/government/tenant-admin/configuration) page. On Claude Desktop versions earlier than 1.34493.0 the same situation can appear as a **Configuration sync issue** banner instead, so update the app. | -| Web search is on for your organization, but a user does not have it, and under **Customize**, then **Connectors**, **Web Search** shows as not connected and **Connect** fails, while chat works | A firewall or secure web gateway on that user's network path filters traffic by application. Claude Desktop connects to web search on your Claude for Government host over HTTPS, and such equipment can classify that connection as Model Context Protocol (MCP) traffic and block it even when the host itself is allowed. | Ask your network team to allow this traffic to your Claude for Government host for the affected users. The user's `main.log` records each failed attempt, including any block page the network returned. Then have the user select **Connect** next to **Web Search**, or restart the app. | +| What you see | Likely cause | What to do | +| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| Only the claude.ai sign-in screen; no organization option | The configuration never reached the app: the profile was not delivered, a key name is misspelled, the value is in the wrong location or registry type, or the app was not relaunched after the change | Verify delivery in your management console, generate a diagnostic report and check its Configuration section, then fully quit and reopen the app | +| Sign-in times out, or the browser says the code expired | The app stops waiting after about five minutes | Cancel and start sign-in again; a fresh code is issued | +| Sign-in fails as soon as the user chooses **Sign in with your organization**, and the error on the sign-in screen or in `main.log` says that an address "must be same-origin" as the configured host | `bootstrapUrl` points at an alias that your agency operates, such as a DNS record or reverse proxy under your own domain, rather than the host provided to your agency | Use the host provided to your agency in `bootstrapUrl`, exactly as provided, redeploy the profile, then fully quit and reopen the app | +| The diagnostic report or `main.log` shows "Managed configuration is invalid; local settings are disabled until it is fixed" | The app detected a managed profile but could not read any of its values | Correct the profile and redeploy; the report's Configuration section names each key that failed | +| Signed in, but the model picker is empty, or the app shows a **Configuration can't be used** banner whose **Details** or **Copy report for IT** text says the provider returned no usable models | The user has no seat tier, or none of the tier's models is available in Claude for Government, so the app received an empty model list. Nothing is wrong with the device's configuration | Have an organization owner check the user's seat tier on the [Users](/docs/government/org-admin/users) page and the tier's models on the [Seat tiers](/docs/government/org-admin/seat-tiers) page | +| An **Apply settings from your organization?** window appears after sign-in or at every launch, or the app quits when the user dismisses that window | The bootstrap address was entered in the app or set per user (for example under `HKEY_CURRENT_USER`), so the app asks each user to allow the gateway address that Claude for Government sends before it applies any of the organization's settings, and the user has not yet clicked **Allow**. Choosing **Quit**, pressing Esc, or closing the window quits the app, and it asks again on the next launch. | Have the user expand **Gateway base URL** in that window, confirm that the address is on your Claude for Government host, and click **Allow**. The window does not take focus when it opens, so have the user switch to the Claude app to find it. If the address is not on your host, check the bootstrap address configured on that device. To stop the prompt across a fleet, deliver the bootstrap address through machine-wide device management, as described under [Deploy to your fleet](#deploy-to-your-fleet). Versions earlier than 1.32352.0 that ask for this approval also show a **Configuration sync issue** banner that says "bootstrap response is missing required field(s): inferenceGatewayBaseUrl" for the same cause. Update the app to the latest version, then answer the prompt. | +| The browser shows a connection error instead of Claude for Government or its sign-in page: "Secure Connection Failed" with `PR_CONNECT_RESET_ERROR` in Firefox, or `ERR_CONNECTION_RESET` in Chrome | A web filter, firewall, or proxy reset the connection, either on your agency's network or on the Claude for Government side. | If the address opens in another browser on the same computer, check the first browser's proxy and DNS settings. Otherwise, open the address from outside your agency's network, for example on a phone using cellular data. If the phone shows a web page, not a connection error, have your network team allow the host in that address and the hosts described under [Before you begin](#before-you-begin). If the phone also fails, or the team finds no block, contact your Anthropic representative with the address, the time and time zone of the error, and your network's public IP addresses. | +| During sign-in, the browser shows a Microsoft page titled "You cannot access this right now", sometimes in one browser but not in another | Microsoft Entra ID shows this page when one of your agency's Conditional Access policies blocks the sign-in, for example a policy that limits which browsers, devices, or locations can sign in. The refusal happens before the sign-in reaches Claude for Government, so nothing in the app or in this portal changes it. | Ask your identity team to find the failed sign-in in the identity provider's sign-in logs. In the Microsoft Entra admin center, the sign-in event's **Conditional Access** tab names the policy that blocked it and the condition that was not met. Adjust the policy, or have the user sign in from a browser or device the policy allows (Claude Desktop opens sign-in in the computer's default browser). | +| The app shows **Your session has expired** or **You've been signed out** with a **Sign in again** button, or a device that was already set up opens to the sign-in screen | The user's Claude for Government session ended, most often because they had not used Claude for longer than your tenant's [Session idle timeout](/docs/government/config/settings#session-idle-timeout). A device left idle, locked, or asleep does not keep a session alive. A session also ends at the Maximum session length, or when the user or an administrator signs it out. | Have the user sign in again. The app keeps its configuration and reconnects. If people are asked to sign in more often than you intend, ask a tenant administrator to review **Session idle timeout** and **Maximum session length** on the [Config](/docs/government/tenant-admin/configuration) page. On Claude Desktop versions earlier than 1.34493.0 the same situation can appear as a **Configuration sync issue** banner instead, so update the app. | +| Web search is on for your organization, but a user does not have it, and under **Customize**, then **Connectors**, **Web Search** shows as not connected and **Connect** fails, while chat works | A firewall or secure web gateway on that user's network path filters traffic by application. Claude Desktop connects to web search on your Claude for Government host over HTTPS, and such equipment can classify that connection as Model Context Protocol (MCP) traffic and block it even when the host itself is allowed. | Ask your network team to allow this traffic to your Claude for Government host for the affected users. The user's `main.log` records each failed attempt, including any block page the network returned. Then have the user select **Connect** next to **Web Search**, or restart the app. | For anything else, the app writes its log to `~/Library/Logs/Claude-3p/main.log` on macOS, `%LOCALAPPDATA%\Claude-3p\logs\main.log` on Windows, and `~/.config/Claude-3p/logs/main.log` on Linux. The log records which configuration keys were read or dropped and why. The diagnostic report from the verification checklist produces a bundle, without conversation content, that you can send to your Anthropic representative. diff --git a/content/claude/government/security/security-and-data-handling.md b/content/claude/government/security/security-and-data-handling.md index eaf54c16a..95161b1fc 100644 --- a/content/claude/government/security/security-and-data-handling.md +++ b/content/claude/government/security/security-and-data-handling.md @@ -24,7 +24,7 @@ In Cowork, and for the file-analysis steps in Chat, the Claude Desktop applicati - The sandbox sees the workspace folders the user has attached to the session, its own scratch area, and read-only reference material bundled by the application (such as skill and plugin directories). It does not see the rest of the user's filesystem. File-read and file-write tools default to those same attached folders, and prompt the user before reading or writing outside them; see [Approvals and Auto mode](#approvals-and-auto-mode). Administrators can restrict which local folders users may attach with **Allowed workspace folders** on the [Config](/docs/government/config/settings#allowed-workspace-folders) page; the desktop client then refuses folders outside that list in both the workspace picker and Claude's file tools. See [Desktop and filesystem access](/docs/third-party/claude-desktop/local-access) for how folder scoping is enforced. + The sandbox sees the workspace folders the user has attached to the session, its own scratch area, and read-only reference material bundled by the application (such as skill and plugin directories). It does not see the rest of the user's filesystem. Claude's file-read and file-write tools are limited to those same locations and to the session's own working folder, and they cannot read or write the rest of the user's files unless the user adds another folder. In Cowork, Claude can ask the user to add a specific folder during the session, and the user approves or declines that request; see [Approvals and Auto mode](#approvals-and-auto-mode). Administrators can restrict which local folders users may attach with **Allowed workspace folders** on the [Config](/docs/government/config/settings#allowed-workspace-folders) page. The desktop client then refuses folders outside that list in the workspace picker, in requests Claude makes during a session, and in Claude's file tools. See [Desktop and filesystem access](/docs/third-party/claude-desktop/local-access) for how folder scoping is enforced. @@ -40,17 +40,25 @@ In Cowork, and for the file-analysis steps in Chat, the Claude Desktop applicati Code sessions use Claude Code built into the desktop application and run on the user's workstation itself, not in the virtual machine. The shell commands Claude runs during a Code session execute on the workstation's own operating system under the user's own account. -On macOS, those shell commands run inside an operating-system-level sandbox that the application builds from your organization's **Allowed network hosts** and **Allowed workspace folders** settings on the [Config](/docs/government/config/settings#allowed-network-hosts) page. The sandbox is in place whenever either setting restricts access, which the default configuration does. Inside the sandbox, a command can create or change files only in the session's folder, the other folders **Allowed workspace folders** permits, and temporary locations, but the sandbox does not limit which files the command reads: it can read any file on the device that the user's account can open, and by default it runs without asking the user first. A user can exempt specific commands from this sandbox in a Claude Code settings file, and an exempted command runs outside the sandbox under the permission mode the user selects for the session. +On macOS and Linux, those shell commands run inside an operating-system-level sandbox that the application builds from your organization's **Allowed network hosts** and **Allowed workspace folders** settings on the [Config](/docs/government/config/settings#allowed-network-hosts) page. The sandbox is in place whenever either setting restricts access, which the default configuration does. Inside the sandbox, a command can create or change files only in the session's folder, the other folders **Allowed workspace folders** permits, and temporary locations, but the sandbox does not limit which files the command reads: it can read any file on the device that the user's account can open, and by default it runs without asking the user first. A user can exempt specific commands from this sandbox in a Claude Code settings file, and an exempted command runs outside the sandbox under the permission mode the user selects for the session. -The macOS sandbox also blocks connections to local Unix sockets. A command that talks to a local agent through a socket, such as git signing a commit with a key held in an SSH agent or a hardware-backed key manager, cannot reach that agent from inside the sandbox. A user who needs such a command to work can list the agent's socket path under `sandbox.network.allowUnixSockets` in their Claude Code settings file, which keeps the command inside the sandbox. Every sandboxed command in that user's Code sessions can then ask the agent to sign or authenticate, so this is appropriate only for an agent that asks the user to approve each use, for example with Touch ID, and not for an agent that signs without prompting. See [Sandbox settings](https://code.claude.com/docs/en/settings-reference#sandbox-settings) in the Claude Code documentation. +On Linux, the sandbox requires the `bubblewrap` and `socat` packages, so install both on each workstation as described under [Set up Linux and WSL2](https://code.claude.com/docs/en/sandboxing#set-up-linux-and-wsl2) in the Claude Code documentation. If either package is missing, shell commands run outside the sandbox as they do on Windows. -Exempting git commands such as `git commit` with `sandbox.excludedCommands` is not a safe way around the socket restriction. A sandboxed command can still change files that git runs during a commit, such as hook scripts kept in the working tree, and an exempted `git commit` would then run that code outside the sandbox. Git also cannot reach remotes over SSH from inside the sandbox, so a user who needs to push can use an HTTPS remote whose host is on the **Allowed network hosts** list, or push from a terminal outside the Code session. +On macOS and Linux, the sandbox also blocks connections to local Unix sockets. A command that talks to a local agent through a socket, such as git signing a commit with a key held in an SSH agent or a hardware-backed key manager, cannot reach that agent from inside the sandbox. On macOS, a user who needs such a command to work can list the agent's socket path under `sandbox.network.allowUnixSockets` in their Claude Code settings file, which keeps the command inside the sandbox. Every sandboxed command in that user's Code sessions can then ask the agent to sign or authenticate, so this is appropriate only for an agent that asks the user to approve each use, for example with Touch ID, and not for an agent that signs without prompting. + +On Linux, the sandbox ignores `sandbox.network.allowUnixSockets` and has no exception for individual sockets. See [Sandbox settings](https://code.claude.com/docs/en/settings-reference#sandbox-settings) in the Claude Code documentation. + +Exempting git commands such as `git commit` with `sandbox.excludedCommands` is not a safe way around the socket restriction. A sandboxed command can still change files that git runs during a commit, such as hook scripts kept in the working tree, and an exempted `git commit` would then run that code outside the sandbox. On macOS, git also cannot reach remotes over SSH from inside the sandbox, so a user who needs to push can use an HTTPS remote whose host is on the **Allowed network hosts** list, or push from a terminal outside the Code session. + +In container-based Linux environments, such as cloud development workspaces, the sandbox can fail to start, and shell commands in Code sessions then fail with a `bwrap` error. To run Code sessions there, deploy Claude Code's own [managed settings file](https://code.claude.com/docs/en/managed-settings) at `/etc/claude-code/managed-settings.json`, set [`parentSettingsBehavior`](https://code.claude.com/docs/en/settings-reference#parentsettingsbehavior) to `"merge"` in it so that your organization's other settings for Code sessions stay in force, and add one of the two settings that follow. + +In that managed settings file, setting `sandbox.enableWeakerNestedSandbox` to `true` runs the sandbox in the [weaker mode that Claude Code documents for containers](https://code.claude.com/docs/en/settings-reference#sandbox-enableweakernestedsandbox), which keeps the network and filesystem restrictions but lets sandboxed commands see the container's other processes. Use it only where the container already provides the isolation you need. If the sandbox still cannot start with that setting, or you prefer to rely on the container's own controls alone, set `sandbox.enabled` to `false` instead. Shell commands then run directly in the container under the permission mode the user selects for the session, as they do on Windows, and the **Allowed network hosts** and **Allowed workspace folders** settings no longer confine what those commands can reach or change. On Windows, there is no operating-system-level sandbox for Code sessions. Shell commands run directly on the device under the permission mode the user selects for the session and under your agency's own endpoint and network controls. The **Allowed network hosts** and **Allowed workspace folders** settings do not confine what those commands can reach, read, or change. -On both operating systems, the application starts a Code session only in a folder that **Allowed workspace folders** permits when that setting is configured, and Claude's file reading and editing tools then work only inside the permitted folders. Administrators can also require a prompt on every shell command, in every permission mode, with the **Require approval for each command** sub-setting on the **Shell commands** card of the [Config](/docs/government/config/settings#tool-and-connector-cards) page. +On every operating system, the application starts a Code session only in a folder that **Allowed workspace folders** permits when that setting is configured, and Claude's file reading and editing tools then work only inside the permitted folders. Administrators can also require a prompt on every shell command, in every permission mode, with the **Require approval for each command** sub-setting on the **Shell commands** card of the [Config](/docs/government/config/settings#tool-and-connector-cards) page. -Code sessions in Claude for Government run on the local workstation only, and the environment options for Windows Subsystem for Linux (WSL) and SSH remote hosts are not available. Commands that belong to Claude Code's terminal interface, such as `/sandbox`, are not part of Code sessions in the desktop application. See [how your configuration reaches Code sessions](/docs/third-party/claude-desktop/code). If your agency also deploys Claude Code's own managed settings to the same devices, those settings take precedence over the macOS sandbox policy described above unless they opt in to merging, as that page explains. +Code sessions in Claude for Government run on the local workstation only, and the environment options for Windows Subsystem for Linux (WSL) and SSH remote hosts are not available. Commands that belong to Claude Code's terminal interface, such as `/sandbox`, are not part of Code sessions in the desktop application. See [how your configuration reaches Code sessions](/docs/third-party/claude-desktop/code). If your agency also deploys Claude Code's own managed settings to the same devices, those settings take precedence over the sandbox policy described above unless they opt in to merging, as that page explains. ### Network egress, required domains, and proxies @@ -58,7 +66,7 @@ The desktop application and the sandbox honor the operating system's proxy setti - The allowlist governs outbound network access from the shell commands and package installs of Cowork sessions, which run in the sandbox virtual machine, from the sandboxed shell commands of Code sessions on macOS (see [Code in Claude Desktop](#code-in-claude-desktop)), and from the host-side web fetch tool. It does not govern web search (which routes through the Claude for Government service) or connector traffic (covered under [Connectors](#connectors) below). When the list is empty or unset, the only hosts reachable from those tools are the Claude for Government service address and, if you have set a **Telemetry endpoint** on the [Config](/docs/government/config/settings#telemetry-endpoint) page, that collector's host, which the application adds to the allowlist automatically. Package installs and page fetches to any other host fail. The list accepts exact hostnames, wildcard patterns such as `*.example.com`, or `*` to allow all outbound traffic. See [Web search and web fetch](/docs/third-party/claude-desktop/web-tools) for the full allowlist semantics. + The allowlist governs outbound network access from the shell commands and package installs of Cowork sessions, which run in the sandbox virtual machine, from the sandboxed shell commands of Code sessions on macOS and Linux (see [Code in Claude Desktop](#code-in-claude-desktop)), and from the host-side web fetch tool. It does not govern web search (which routes through the Claude for Government service) or connector traffic (covered under [Connectors](#connectors) below). When the list is empty or unset, the only hosts reachable from those tools are the Claude for Government service address and, if you have set a **Telemetry endpoint** on the [Config](/docs/government/config/settings#telemetry-endpoint) page, that collector's host, which the application adds to the allowlist automatically. Package installs and page fetches to any other host fail. The list accepts exact hostnames, wildcard patterns such as `*.example.com`, or `*` to allow all outbound traffic. See [Web search and web fetch](/docs/third-party/claude-desktop/web-tools) for the full allowlist semantics. @@ -88,11 +96,13 @@ The desktop application and the sandbox honor the operating system's proxy setti ### Approvals and Auto mode -By default, Claude for Government prompts the user for file writes outside the attached workspace, connector actions, and each web search. In Cowork, shell commands run without a prompt because they run inside the sandbox virtual machine. Web page fetches run without a prompt in both Chat and Cowork and are checked against the egress allowlist described above. Administrators can require a prompt on every shell command or fetch with the **Require approval** sub-settings on the [Config](/docs/government/config/settings#tool-and-connector-cards) page. In Chat, every shell command prompts regardless. The reduced-approval option in Claude for Government is Auto mode, which is off by default and can be enabled through device managed configuration (it is not a setting on the Config page). Cowork does not offer a Bypass Permissions mode. +By default, Claude for Government prompts the user for connector actions, for each web search, and, in Cowork, when Claude asks to add another folder to the session. In Chat and Cowork, Claude's file tools do not write outside the attached folders and the session's working folder, as described under [Sandbox and isolation](#sandbox-and-isolation). In Cowork, shell commands run without a prompt because they run inside the sandbox virtual machine. Web page fetches run without a prompt in both Chat and Cowork and are checked against the egress allowlist described above. Administrators can require a prompt on every shell command or fetch with the **Require approval for each command** and **Require approval for each fetch** sub-settings on the [Config](/docs/government/config/settings#tool-and-connector-cards) page. In Chat, every shell command prompts regardless. The reduced-approval option in Claude for Government is Auto mode, which is off by default and can be enabled through device managed configuration (it is not a setting on the Config page). Cowork does not offer a Bypass Permissions mode. - Yes. Administrators can set each built-in and connector tool to **ask** (approval required on every call), **allow** (pre-approved), or **blocked** (removed entirely), and users cannot override those settings. For the Microsoft 365 connector, certain irreversible write tools (sending or forwarding mail, and creating or updating calendar events) are fixed to **ask** and cannot be changed to **allow**. See the [Configuration reference](/docs/third-party/claude-desktop/configuration) for the per-tool policy options. + Yes. Connector actions prompt the user by default. For each connector an administrator adds, the administrator can switch individual tools on or off under **Tool policy**. A tool that is on stays available and each user approves every use. A tool that is off is blocked. Users cannot loosen these settings. + + Tools that are not listed in a connector's **Tool policy**, including tools the server adds later, stay under each user's control. The Microsoft 365 connector always asks for approval before write actions such as sending mail, changing calendar events, or posting Teams messages, and no Claude for Government setting removes that prompt. The **Microsoft 365** card has no per-tool setting, and the connector's read tools follow each user's own approval choices. On the built-in **Web search**, **Web fetch**, and **Shell commands** cards of the Config page, administrators can require approval for every use or turn the tool off. See [Tool and connector cards](/docs/government/config/settings#tool-and-connector-cards) and [Connectors](/docs/government/connectors/overview) for the available settings. @@ -100,11 +110,11 @@ By default, Claude for Government prompts the user for file writes outside the a - No. Policy controls whole tools (shell, file read, web fetch, and so on) but not individual commands within a tool. In Chat, each shell command prompts the user with no standing approval. For analyses that take many steps, Cowork runs shell commands in the sandbox without prompting; you make Cowork available to members under **Product availability** on the [Config](/docs/government/config/settings#product-availability) page. + Not in Chat or Cowork. Administrators can turn the built-in **Web search**, **Web fetch**, and **Shell commands** tools on or off, or require approval on every use, but cannot allowlist individual commands within those tools. In Chat, each shell command prompts the user with no standing approval. For analyses that take many steps, Cowork runs shell commands in the sandbox without prompting; you make Cowork available to members under **Product availability** on the [Config](/docs/government/config/settings#product-availability) page. Code sessions follow Claude Code's own permission rules, which your agency can set in a Claude Code managed-settings file. See [Code in Claude Desktop](#code-in-claude-desktop). - For most tools, users who see an approval prompt can choose **Always allow**, which suppresses that prompt for them going forward. Administrators can remove that option by setting the tool's policy to **ask**, which forces a fresh prompt on every call. The create-artifact prompt and code execution in Chat are exceptions: neither offers a standing approval. See the [Configuration reference](/docs/third-party/claude-desktop/configuration) for the full tool-policy options. + For most tools, users who see an approval prompt can choose **Always allow**, which suppresses that prompt for them going forward. Administrators can remove that option on the Config page. Turning on the **Require approval for each search**, **Require approval for each fetch**, or **Require approval for each command** sub-setting on the **Web search**, **Web fetch**, or **Shell commands** card forces a fresh prompt on every use of that tool. A connector tool that an administrator has switched on under **Tool policy** also prompts on each use, without an **Always allow** choice. The Microsoft 365 connector's read tools keep each user's own choice, and its write actions never offer **Always allow**. The create-artifact prompt and code execution in Chat are exceptions: neither offers a standing approval. See [Tool and connector cards](/docs/government/config/settings#tool-and-connector-cards) and [Connectors](/docs/government/connectors/overview) for the available settings. @@ -126,7 +136,7 @@ In Claude for Government, connectors fall into three main categories: built-in t - Artifacts honor the same per-tool approval policy as Claude's direct connector calls: tools set to **blocked** are refused and tools set to **ask** require user confirmation. There is no single switch to disable artifact-to-connector calls while keeping connectors available to Claude directly. + Artifacts follow the same tool settings as Claude's direct connector calls: a connector tool that an administrator has switched off is refused, and a tool that requires approval on every use never runs from an artifact without the user's approval of that call. There is no single switch to disable artifact-to-connector calls while keeping connectors available to Claude directly. @@ -154,7 +164,7 @@ In Claude for Government, conversation content stays on the user's device. If yo - Conversation content lives under the owner-only application data directory (`%LOCALAPPDATA%\Claude-3p` on Windows, `~/Library/Application Support/Claude-3p` on macOS). User-visible outputs such as artifacts are written separately to the user files directory (default `~/Claude`). See [User identity and local data](/docs/third-party/claude-desktop/data-storage) for the full list of what each location holds. + Conversation content lives under the owner-only application data directory (`%LOCALAPPDATA%\Claude-3p` on Windows, `~/Library/Application Support/Claude-3p` on macOS, `~/.config/Claude-3p` on Linux). Code session transcripts live in Claude Code's own folder in the user's home directory (`~/.claude/projects`). The application does not encrypt these files itself, so encryption at rest depends on the workstation's full-disk encryption, such as BitLocker, FileVault, or LUKS. The operating system encryption that protects connector credentials, described under [Connectors](#connectors), does not apply to conversation content. User-visible outputs such as artifacts are written separately to the user files directory (default `~/Claude`). See [User identity and local data](/docs/third-party/claude-desktop/data-storage) for the full list of what each location holds. @@ -196,6 +206,20 @@ In Claude for Government, conversation content stays on the user's device. If yo Yes. Artifacts are available in both Chat and Cowork. Claude creates an artifact by calling a tool when the output suits an interactive view, and the artifact opens in a side panel next to the conversation. Artifacts do not depend on the sandbox, so they remain available in Chat even when **Advanced file analysis** is disabled. + + + In Chat and Cowork, a file that Claude creates on the user's device is in one of three places: + + * A folder the user attached to a Cowork task. + * The working folder that each task or conversation has inside the [application data directory](#data-storage-and-retention). + * For artifacts, the user files directory (default `~/Claude`). + + Files that Claude saves in a working folder appear in the conversation as file cards that the user can open or show in Finder or File Explorer and copy from there. Code sessions work directly in the folder the user opened, as described under [Code in Claude Desktop](#code-in-claude-desktop). + + In Cowork, Claude's file tools change files in an attached folder in place, so the changes appear there immediately. A user who wants results in a particular folder attaches that folder to the task and asks Claude to save the files there. Shell commands run inside the sandbox virtual machine, and the only writable locations it shares with the device are the attached folders and the task's working folder. A file that a command writes anywhere else in the virtual machine, for example under `/tmp`, does not appear in any folder on the device. + + By design, Chat cannot save files to other folders on the device. Claude's file tools in Chat, and the analysis steps that run in the sandbox when **Advanced file analysis in Chat** is on (the default), write only to the conversation's own working folder. For work that should end up in a particular folder, the user can run it as a Cowork task with that folder attached. See [Chat in Claude Desktop](/docs/third-party/claude-desktop/chat) for what a Chat conversation can reach, and [User identity and local data](/docs/third-party/claude-desktop/data-storage) for the folder layout. + ## More information diff --git a/content/claude/third-party/claude-desktop/connectors-m365.md b/content/claude/third-party/claude-desktop/connectors-m365.md index 71b5329b4..d2efeb4c1 100644 --- a/content/claude/third-party/claude-desktop/connectors-m365.md +++ b/content/claude/third-party/claude-desktop/connectors-m365.md @@ -242,7 +242,7 @@ Six optional read scopes are not in the standard set: * `ChannelMessage.Read.All` adds Teams channel messages to chat search results. Requires tenant-admin consent. * `OnlineMeetingTranscript.Read.All` enables reading meeting transcripts. Requires tenant-admin consent. -* `MailboxSettings.Read` enables reading mail filters and automatic-reply settings. +* `MailboxSettings.Read` lets the connector read the user's mailbox time zone so that dates in requests follow the user's local time rather than UTC. * `People.Read` enables people search (`search_people`), which resolves a name to a user before starting a Teams chat. * `Team.ReadBasic.All` and `Channel.ReadBasic.All` let Claude list the user's teams and their channels (`teams_list_teams`, `teams_list_channels`), which Claude uses to find the team and channel IDs that the channel-message tools take. @@ -273,7 +273,7 @@ Granting write scopes enables write tools; see [Grant write scopes](#grant-write ### Grant write scopes -With only read scopes granted, the connector is read-only. To let Claude take actions in Microsoft 365 (sending mail, managing drafts, labels, filters, and calendar events, working with files in OneDrive and SharePoint, and sending Teams chat and channel messages), grant write scopes: add them to the entry's `scope` field and consent them on the app registration from step 1, the same as any other scope. Each write tool appears only when its scope is in the entry's list, so granting a subset of the write scopes exposes a matching subset of the tools, and removing the write scopes from the list returns the connector to read-only. Write tools require Claude Desktop version 1.19367.0 or later, and the Teams write tools require version 1.24012.0 or later. +With only read scopes granted, the connector is read-only. To let Claude take actions in Microsoft 365 (sending mail, managing drafts, labels, and calendar events, working with files in OneDrive and SharePoint, and sending Teams chat and channel messages), grant write scopes: add them to the entry's `scope` field and consent them on the app registration from step 1, the same as any other scope. Each write tool appears only when its scope is in the entry's list, so granting a subset of the write scopes exposes a matching subset of the tools, and removing the write scopes from the list returns the connector to read-only. Write tools require Claude Desktop version 1.19367.0 or later, and the Teams write tools require version 1.24012.0 or later. | Scope | What it enables | | --------------------------- | ------------------------------------------------------------------------------------------------------------- | @@ -281,7 +281,7 @@ With only read scopes granted, the connector is read-only. To let Claude take ac | `Mail.ReadWrite` | Create, update, and delete drafts; trash, untrash, and delete messages; apply and remove labels on messages | | `Calendars.ReadWrite` | Create, update, delete, and respond to calendar events | | `Files.ReadWrite.All` | Create, update, rename, move, copy, and delete files and folders the user can edit in OneDrive and SharePoint | -| `MailboxSettings.ReadWrite` | Manage labels, mail filters, and automatic replies | +| `MailboxSettings.ReadWrite` | Create and delete mail filters, manage labels, and configure automatic replies | | `ChatMessage.Send` | Post messages in existing Teams chats | | `ChannelMessage.Send` | Post and reply to messages in Teams channels | | `Chat.Create` | Start 1:1 and group Teams chats | diff --git a/content/claude/third-party/claude-desktop/data-storage.md b/content/claude/third-party/claude-desktop/data-storage.md index 47aa1aef1..61abd5db9 100644 --- a/content/claude/third-party/claude-desktop/data-storage.md +++ b/content/claude/third-party/claude-desktop/data-storage.md @@ -22,6 +22,7 @@ Claude Desktop on 3P stores everything under a dedicated directory, separate fro | -------- | ------------------------------------------ | -------------------------------------- | | macOS | `~/Library/Application Support/Claude-3p/` | `~/Library/Logs/Claude-3p/` | | Windows | `%LOCALAPPDATA%\Claude-3p\` | (under the application-data directory) | +| Linux | `~/.config/Claude-3p/` | (under the application-data directory) | On Windows, earlier Claude Desktop releases stored this data under `%APPDATA%\Claude-3p\` (the Roaming profile). On first launch after upgrading, the app moves the existing directory to `%LOCALAPPDATA%` automatically; if Roaming is redirected to a network share, conversation history and configuration are copied and large regenerable caches are re-downloaded. Update any external tooling, backup jobs, or endpoint policies that reference the old path. macOS paths are unchanged. @@ -38,7 +39,7 @@ Within the application-data directory: | `local-agent-mode-sessions/.../memory/` | Cowork memory: a `CLAUDE.md` instructions file plus a `memory/` subdirectory of Markdown notes Claude writes about the user's preferences, projects, and feedback. See [Memory](#memory). | | `local-agent-mode-sessions/.../spaces//memory/` | Markdown memory notes for one project, used by Cowork sessions and Chat conversations inside that project. See [Memory](#memory). | | `local-agent-mode-sessions/...//audit.jsonl` | Append-only log of session events (tool invocations, permission decisions, file operations). Each entry is HMAC-chained to the previous one so edits or deletions are detectable; the companion `.audit-key` file holds the per-session signing key, encrypted via the OS keychain. | -| `claude-code-sessions/` | Code conversation history, in the same per-session layout. | +| `claude-code-sessions/` | Code session records holding each session's working folder, settings, title, and sometimes a short summary. The conversation transcripts themselves are in Claude Code's own store at `~/.claude/projects/`, outside this directory. | | `claude-code/`, `claude-code-vm/` | Claude Code binary and VM workspace data for Code sessions. | | `vm_bundles/` | Cached copy of the Cowork sandbox VM bundle. | | `cowork_plugins/` | User-installed and [org-provisioned](/docs/third-party/claude-desktop/extensions#organization-plugins-admin) plugins. Created on first plugin install. | @@ -92,6 +93,6 @@ Aside from these files, credentials delivered through managed configuration are ## Removing data -To fully reset a device's Claude Desktop on 3P state, delete the application-data directory above and the `~/Claude/` user-files folder. To return to standard Claude Desktop without removing data, choose the Anthropic sign-in option on the sign-in screen; to also remove the locally authored 3P configuration, delete the `configLibrary/` directory. +To fully reset a device's Claude Desktop on 3P state, delete the application-data directory above and the `~/Claude/` user-files folder. Code session transcripts are in Claude Code's store at `~/.claude/projects/`, which Claude Code in the terminal also uses, so delete them there separately if you need to remove them. For [SSH remote sessions](/docs/third-party/claude-desktop/ssh-remote-sessions#host-requirements), that store and any attached files are on the remote host. To return to standard Claude Desktop without removing data, choose the Anthropic sign-in option on the sign-in screen; to also remove the locally authored 3P configuration, delete the `configLibrary/` directory. -Conversation history exists only in this directory, so deleting it is unrecoverable. +Conversation history exists only on this device, or on the SSH host for remote Code sessions, so deleting it is unrecoverable. diff --git a/content/en/agents-and-tools/tool-use/define-tools.md b/content/en/agents-and-tools/tool-use/define-tools.md index 62d952c6b..aa9e5c362 100644 --- a/content/en/agents-and-tools/tool-use/define-tools.md +++ b/content/en/agents-and-tools/tool-use/define-tools.md @@ -19,7 +19,7 @@ Client tools are specified in the `tools` top-level parameter of the API request | Parameter | Description | | ---------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `name` | The name of the tool. Must match the regex `^[a-zA-Z0-9_-]{1,64}$`. | +| `name` | The name of the tool. Must match the regex `^[a-zA-Z0-9_-]{1,128}$`. | | `description` | A detailed plaintext description of what the tool does, when it should be used, and how it behaves. | | `input_schema` | A [JSON Schema](https://json-schema.org/) object defining the expected parameters for the tool. | | `input_examples` | (Optional) An array of example input objects to help Claude understand how to use the tool. See [Providing tool use examples](https://platform.claude.com/docs/en/agents-and-tools/tool-use/define-tools#providing-tool-use-examples). | diff --git a/content/en/api/beta.md b/content/en/api/beta.md index 1255b6b6a..b0b783f58 100644 --- a/content/en/api/beta.md +++ b/content/en/api/beta.md @@ -40590,10 +40590,6 @@ Stream Events A hard spend ceiling. The session stops issuing new model requests once the tracked list cost reaches `max_list_cost`. -- `BetaManagedAgentsStreamSessionEvents = BetaManagedAgentsUserMessageEvent or BetaManagedAgentsUserInterruptEvent or BetaManagedAgentsUserToolConfirmationEvent or 34 more` - - Server-sent event in the session stream. - #### Example ```bash @@ -48847,10 +48843,6 @@ Stream Session Thread Events A hard spend ceiling. The session stops issuing new model requests once the tracked list cost reaches `max_list_cost`. -- `BetaManagedAgentsStreamSessionThreadEvents = BetaManagedAgentsUserMessageEvent or BetaManagedAgentsUserInterruptEvent or BetaManagedAgentsUserToolConfirmationEvent or 34 more` - - Server-sent event in a single thread's stream. - #### Example ```bash diff --git a/content/en/api/beta/sessions.md b/content/en/api/beta/sessions.md index 11dfedf79..93ecda2e7 100644 --- a/content/en/api/beta/sessions.md +++ b/content/en/api/beta/sessions.md @@ -17457,10 +17457,6 @@ Stream Events A hard spend ceiling. The session stops issuing new model requests once the tracked list cost reaches `max_list_cost`. -- `BetaManagedAgentsStreamSessionEvents = BetaManagedAgentsUserMessageEvent or BetaManagedAgentsUserInterruptEvent or BetaManagedAgentsUserToolConfirmationEvent or 34 more` - - Server-sent event in the session stream. - #### Example ```bash @@ -25714,10 +25710,6 @@ Stream Session Thread Events A hard spend ceiling. The session stops issuing new model requests once the tracked list cost reaches `max_list_cost`. -- `BetaManagedAgentsStreamSessionThreadEvents = BetaManagedAgentsUserMessageEvent or BetaManagedAgentsUserInterruptEvent or BetaManagedAgentsUserToolConfirmationEvent or 34 more` - - Server-sent event in a single thread's stream. - #### Example ```bash diff --git a/content/en/api/beta/sessions/events.md b/content/en/api/beta/sessions/events.md index cdae59106..2216786df 100644 --- a/content/en/api/beta/sessions/events.md +++ b/content/en/api/beta/sessions/events.md @@ -5596,10 +5596,6 @@ Stream Events A hard spend ceiling. The session stops issuing new model requests once the tracked list cost reaches `max_list_cost`. -- `BetaManagedAgentsStreamSessionEvents = BetaManagedAgentsUserMessageEvent or BetaManagedAgentsUserInterruptEvent or BetaManagedAgentsUserToolConfirmationEvent or 34 more` - - Server-sent event in the session stream. - ### Example ```bash diff --git a/content/en/api/beta/sessions/events/stream.md b/content/en/api/beta/sessions/events/stream.md index 79697059a..ba43fd0c7 100644 --- a/content/en/api/beta/sessions/events/stream.md +++ b/content/en/api/beta/sessions/events/stream.md @@ -2300,10 +2300,6 @@ Stream Events A hard spend ceiling. The session stops issuing new model requests once the tracked list cost reaches `max_list_cost`. -- `BetaManagedAgentsStreamSessionEvents = BetaManagedAgentsUserMessageEvent or BetaManagedAgentsUserInterruptEvent or BetaManagedAgentsUserToolConfirmationEvent or 34 more` - - Server-sent event in the session stream. - ## Example ```bash diff --git a/content/en/api/beta/sessions/threads.md b/content/en/api/beta/sessions/threads.md index fdd17ce86..0033494a4 100644 --- a/content/en/api/beta/sessions/threads.md +++ b/content/en/api/beta/sessions/threads.md @@ -10080,10 +10080,6 @@ Stream Session Thread Events A hard spend ceiling. The session stops issuing new model requests once the tracked list cost reaches `max_list_cost`. -- `BetaManagedAgentsStreamSessionThreadEvents = BetaManagedAgentsUserMessageEvent or BetaManagedAgentsUserInterruptEvent or BetaManagedAgentsUserToolConfirmationEvent or 34 more` - - Server-sent event in a single thread's stream. - #### Example ```bash diff --git a/content/en/api/beta/sessions/threads/events.md b/content/en/api/beta/sessions/threads/events.md index 8544cd994..1406dd801 100644 --- a/content/en/api/beta/sessions/threads/events.md +++ b/content/en/api/beta/sessions/threads/events.md @@ -4592,10 +4592,6 @@ Stream Session Thread Events A hard spend ceiling. The session stops issuing new model requests once the tracked list cost reaches `max_list_cost`. -- `BetaManagedAgentsStreamSessionThreadEvents = BetaManagedAgentsUserMessageEvent or BetaManagedAgentsUserInterruptEvent or BetaManagedAgentsUserToolConfirmationEvent or 34 more` - - Server-sent event in a single thread's stream. - ### Example ```bash diff --git a/content/en/api/beta/sessions/threads/events/stream.md b/content/en/api/beta/sessions/threads/events/stream.md index f71249b31..c6a6051e4 100644 --- a/content/en/api/beta/sessions/threads/events/stream.md +++ b/content/en/api/beta/sessions/threads/events/stream.md @@ -2302,10 +2302,6 @@ Stream Session Thread Events A hard spend ceiling. The session stops issuing new model requests once the tracked list cost reaches `max_list_cost`. -- `BetaManagedAgentsStreamSessionThreadEvents = BetaManagedAgentsUserMessageEvent or BetaManagedAgentsUserInterruptEvent or BetaManagedAgentsUserToolConfirmationEvent or 34 more` - - Server-sent event in a single thread's stream. - ## Example ```bash diff --git a/content/en/api/cli/beta.md b/content/en/api/cli/beta.md index 0f6b3890b..f66914892 100644 --- a/content/en/api/cli/beta.md +++ b/content/en/api/cli/beta.md @@ -23682,158 +23682,6 @@ Stream Events - `type: "limit"` -- `beta_managed_agents_stream_session_events: BetaManagedAgentsUserMessageEvent or BetaManagedAgentsUserInterruptEvent or BetaManagedAgentsUserToolConfirmationEvent or 34 more` - - Server-sent event in the session stream. - - - `beta_managed_agents_user_message_event: object` - - A user message event in the session conversation. - - - `beta_managed_agents_user_interrupt_event: object` - - An interrupt event that pauses agent execution and returns control to the user. - - - `beta_managed_agents_user_tool_confirmation_event: object` - - A tool confirmation event that approves or denies a pending tool execution. - - - `beta_managed_agents_user_custom_tool_result_event: object` - - Event sent by the client providing the result of a custom tool execution. - - - `beta_managed_agents_agent_custom_tool_use_event: object` - - Event emitted when the agent calls a custom tool. The session goes idle until the client sends a `user.custom_tool_result` event with the result. - - - `beta_managed_agents_agent_message_event: object` - - An agent response event in the session conversation. - - - `beta_managed_agents_agent_thinking_event: object` - - Indicates the agent is making forward progress via extended thinking. A progress signal, not a content carrier. - - - `beta_managed_agents_agent_mcp_tool_use_event: object` - - Event emitted when the agent invokes a tool provided by an MCP server. - - - `beta_managed_agents_agent_mcp_tool_result_event: object` - - Event representing the result of an MCP tool execution. - - - `beta_managed_agents_agent_tool_use_event: object` - - Event emitted when the agent invokes a built-in agent tool. - - - `beta_managed_agents_agent_tool_result_event: object` - - Event representing the result of an agent tool execution. - - - `beta_managed_agents_agent_thread_message_received_event: object` - - Delivery event written to the target thread's input stream when an agent-to-agent message arrives. - - - `beta_managed_agents_agent_thread_message_sent_event: object` - - Observability event emitted to the sender's output stream when an agent-to-agent message is sent. - - - `beta_managed_agents_agent_thread_context_compacted_event: object` - - Indicates that context compaction (summarization) occurred during the session. - - - `beta_managed_agents_session_error_event: object` - - An error event indicating a problem occurred during session execution. - - - `beta_managed_agents_session_status_rescheduled_event: object` - - Indicates the session is recovering from an error state and is rescheduled for execution. - - - `beta_managed_agents_session_status_running_event: object` - - Indicates the session is actively running and the agent is working. - - - `beta_managed_agents_session_status_idle_event: object` - - Indicates the agent has paused and is awaiting user input. - - - `beta_managed_agents_session_status_terminated_event: object` - - Indicates the session has terminated, either due to an error or completion. - - - `beta_managed_agents_session_thread_created_event: object` - - Emitted when a subagent is spawned as a new thread. Written to the parent thread's output stream so clients observing the session see child creation. - - - `beta_managed_agents_span_outcome_evaluation_start_event: object` - - Emitted when an outcome evaluation cycle begins. - - - `beta_managed_agents_span_outcome_evaluation_end_event: object` - - Emitted when an outcome evaluation cycle completes. Carries the verdict and aggregate token usage. A verdict of `needs_revision` means another evaluation cycle follows; `satisfied`, `max_iterations_reached`, `failed`, or `interrupted` are terminal — no further evaluation cycles follow. - - - `beta_managed_agents_span_model_request_start_event: object` - - Emitted when a model request is initiated by the agent. - - - `beta_managed_agents_span_model_request_end_event: object` - - Emitted when a model request completes. - - - `beta_managed_agents_span_outcome_evaluation_ongoing_event: object` - - Periodic heartbeat emitted while an outcome evaluation cycle is in progress. Distinguishes 'evaluation is actively running' from 'evaluation is stuck' between the corresponding `span.outcome_evaluation_start` and `span.outcome_evaluation_end` events. - - - `beta_managed_agents_user_define_outcome_event: object` - - Echo of a `user.define_outcome` input event. Carries the server-generated `outcome_id` that subsequent `span.outcome_evaluation_*` events reference. - - - `beta_managed_agents_session_deleted_event: object` - - Emitted when a session has been deleted. Terminates any active event stream — no further events will be emitted for this session. - - - `beta_managed_agents_session_thread_status_running_event: object` - - A session thread has begun executing. Emitted on the thread's own stream and cross-posted to the primary stream for child threads. - - - `beta_managed_agents_session_thread_status_idle_event: object` - - A session thread has yielded and is awaiting input. Emitted on the thread's own stream and cross-posted to the primary stream for child threads. - - - `beta_managed_agents_session_thread_status_terminated_event: object` - - A session thread has terminated and will accept no further input. Emitted on the thread's own stream and cross-posted to the primary stream for child threads. - - - `beta_managed_agents_user_tool_result_event: object` - - Event sent by the client providing the result of an agent-toolset tool execution. Only valid on `self_hosted` environments, where sandbox-routed tools are executed by the client rather than the server. - - - `beta_managed_agents_session_thread_status_rescheduled_event: object` - - A session thread hit a transient error and is retrying automatically. Emitted on the thread's own stream and cross-posted to the primary stream for child threads. - - - `beta_managed_agents_session_updated_event: object` - - Emitted when an UpdateSession request changed at least one field. Carries only the fields that changed; absent fields were not part of the update. The new configuration applies from the next turn. - - - `beta_managed_agents_start_event: object` - - Opens a preview of a buffered event. Carries the previewed event's type and id only. Followed by zero or more event_delta events with the same event id, normally concluded by the buffered event carrying that id. If the producing model request ends without that event (an error or interrupt mid-stream), its terminal span.model_request_end closes the preview. Only sent on stream connections that opt in via event_deltas; never appears in event history. - - - `beta_managed_agents_delta_event: object` - - An incremental update to an event that is still being streamed. Deltas are best-effort and may stop early; when the buffered event with id == event_id is produced it carries the complete content. A model request that ends early (an error or interrupt) produces no buffered event — its terminal span.model_request_end closes the preview. Only sent on stream connections that opt in via event_deltas; never appears in event history. - - - `beta_managed_agents_system_message_event: object` - - A mid-conversation system message event. Carries system-role content that is appended to the session as a `role: "system"` turn. - - - `beta_managed_agents_session_usage_event: object` - - Periodic snapshot of the session's cumulative usage and tracked list cost. - #### Example ```bash @@ -31282,158 +31130,6 @@ Stream Session Thread Events - `type: "limit"` -- `beta_managed_agents_stream_session_thread_events: BetaManagedAgentsUserMessageEvent or BetaManagedAgentsUserInterruptEvent or BetaManagedAgentsUserToolConfirmationEvent or 34 more` - - Server-sent event in a single thread's stream. - - - `beta_managed_agents_user_message_event: object` - - A user message event in the session conversation. - - - `beta_managed_agents_user_interrupt_event: object` - - An interrupt event that pauses agent execution and returns control to the user. - - - `beta_managed_agents_user_tool_confirmation_event: object` - - A tool confirmation event that approves or denies a pending tool execution. - - - `beta_managed_agents_user_custom_tool_result_event: object` - - Event sent by the client providing the result of a custom tool execution. - - - `beta_managed_agents_agent_custom_tool_use_event: object` - - Event emitted when the agent calls a custom tool. The session goes idle until the client sends a `user.custom_tool_result` event with the result. - - - `beta_managed_agents_agent_message_event: object` - - An agent response event in the session conversation. - - - `beta_managed_agents_agent_thinking_event: object` - - Indicates the agent is making forward progress via extended thinking. A progress signal, not a content carrier. - - - `beta_managed_agents_agent_mcp_tool_use_event: object` - - Event emitted when the agent invokes a tool provided by an MCP server. - - - `beta_managed_agents_agent_mcp_tool_result_event: object` - - Event representing the result of an MCP tool execution. - - - `beta_managed_agents_agent_tool_use_event: object` - - Event emitted when the agent invokes a built-in agent tool. - - - `beta_managed_agents_agent_tool_result_event: object` - - Event representing the result of an agent tool execution. - - - `beta_managed_agents_agent_thread_message_received_event: object` - - Delivery event written to the target thread's input stream when an agent-to-agent message arrives. - - - `beta_managed_agents_agent_thread_message_sent_event: object` - - Observability event emitted to the sender's output stream when an agent-to-agent message is sent. - - - `beta_managed_agents_agent_thread_context_compacted_event: object` - - Indicates that context compaction (summarization) occurred during the session. - - - `beta_managed_agents_session_error_event: object` - - An error event indicating a problem occurred during session execution. - - - `beta_managed_agents_session_status_rescheduled_event: object` - - Indicates the session is recovering from an error state and is rescheduled for execution. - - - `beta_managed_agents_session_status_running_event: object` - - Indicates the session is actively running and the agent is working. - - - `beta_managed_agents_session_status_idle_event: object` - - Indicates the agent has paused and is awaiting user input. - - - `beta_managed_agents_session_status_terminated_event: object` - - Indicates the session has terminated, either due to an error or completion. - - - `beta_managed_agents_session_thread_created_event: object` - - Emitted when a subagent is spawned as a new thread. Written to the parent thread's output stream so clients observing the session see child creation. - - - `beta_managed_agents_span_outcome_evaluation_start_event: object` - - Emitted when an outcome evaluation cycle begins. - - - `beta_managed_agents_span_outcome_evaluation_end_event: object` - - Emitted when an outcome evaluation cycle completes. Carries the verdict and aggregate token usage. A verdict of `needs_revision` means another evaluation cycle follows; `satisfied`, `max_iterations_reached`, `failed`, or `interrupted` are terminal — no further evaluation cycles follow. - - - `beta_managed_agents_span_model_request_start_event: object` - - Emitted when a model request is initiated by the agent. - - - `beta_managed_agents_span_model_request_end_event: object` - - Emitted when a model request completes. - - - `beta_managed_agents_span_outcome_evaluation_ongoing_event: object` - - Periodic heartbeat emitted while an outcome evaluation cycle is in progress. Distinguishes 'evaluation is actively running' from 'evaluation is stuck' between the corresponding `span.outcome_evaluation_start` and `span.outcome_evaluation_end` events. - - - `beta_managed_agents_user_define_outcome_event: object` - - Echo of a `user.define_outcome` input event. Carries the server-generated `outcome_id` that subsequent `span.outcome_evaluation_*` events reference. - - - `beta_managed_agents_session_deleted_event: object` - - Emitted when a session has been deleted. Terminates any active event stream — no further events will be emitted for this session. - - - `beta_managed_agents_session_thread_status_running_event: object` - - A session thread has begun executing. Emitted on the thread's own stream and cross-posted to the primary stream for child threads. - - - `beta_managed_agents_session_thread_status_idle_event: object` - - A session thread has yielded and is awaiting input. Emitted on the thread's own stream and cross-posted to the primary stream for child threads. - - - `beta_managed_agents_session_thread_status_terminated_event: object` - - A session thread has terminated and will accept no further input. Emitted on the thread's own stream and cross-posted to the primary stream for child threads. - - - `beta_managed_agents_user_tool_result_event: object` - - Event sent by the client providing the result of an agent-toolset tool execution. Only valid on `self_hosted` environments, where sandbox-routed tools are executed by the client rather than the server. - - - `beta_managed_agents_session_thread_status_rescheduled_event: object` - - A session thread hit a transient error and is retrying automatically. Emitted on the thread's own stream and cross-posted to the primary stream for child threads. - - - `beta_managed_agents_session_updated_event: object` - - Emitted when an UpdateSession request changed at least one field. Carries only the fields that changed; absent fields were not part of the update. The new configuration applies from the next turn. - - - `beta_managed_agents_start_event: object` - - Opens a preview of a buffered event. Carries the previewed event's type and id only. Followed by zero or more event_delta events with the same event id, normally concluded by the buffered event carrying that id. If the producing model request ends without that event (an error or interrupt mid-stream), its terminal span.model_request_end closes the preview. Only sent on stream connections that opt in via event_deltas; never appears in event history. - - - `beta_managed_agents_delta_event: object` - - An incremental update to an event that is still being streamed. Deltas are best-effort and may stop early; when the buffered event with id == event_id is produced it carries the complete content. A model request that ends early (an error or interrupt) produces no buffered event — its terminal span.model_request_end closes the preview. Only sent on stream connections that opt in via event_deltas; never appears in event history. - - - `beta_managed_agents_system_message_event: object` - - A mid-conversation system message event. Carries system-role content that is appended to the session as a `role: "system"` turn. - - - `beta_managed_agents_session_usage_event: object` - - Periodic snapshot of the session's cumulative usage and tracked list cost. - #### Example ```bash diff --git a/content/en/api/cli/beta/sessions.md b/content/en/api/cli/beta/sessions.md index 78f1e3066..d8155644b 100644 --- a/content/en/api/cli/beta/sessions.md +++ b/content/en/api/cli/beta/sessions.md @@ -15106,158 +15106,6 @@ Stream Events - `type: "limit"` -- `beta_managed_agents_stream_session_events: BetaManagedAgentsUserMessageEvent or BetaManagedAgentsUserInterruptEvent or BetaManagedAgentsUserToolConfirmationEvent or 34 more` - - Server-sent event in the session stream. - - - `beta_managed_agents_user_message_event: object` - - A user message event in the session conversation. - - - `beta_managed_agents_user_interrupt_event: object` - - An interrupt event that pauses agent execution and returns control to the user. - - - `beta_managed_agents_user_tool_confirmation_event: object` - - A tool confirmation event that approves or denies a pending tool execution. - - - `beta_managed_agents_user_custom_tool_result_event: object` - - Event sent by the client providing the result of a custom tool execution. - - - `beta_managed_agents_agent_custom_tool_use_event: object` - - Event emitted when the agent calls a custom tool. The session goes idle until the client sends a `user.custom_tool_result` event with the result. - - - `beta_managed_agents_agent_message_event: object` - - An agent response event in the session conversation. - - - `beta_managed_agents_agent_thinking_event: object` - - Indicates the agent is making forward progress via extended thinking. A progress signal, not a content carrier. - - - `beta_managed_agents_agent_mcp_tool_use_event: object` - - Event emitted when the agent invokes a tool provided by an MCP server. - - - `beta_managed_agents_agent_mcp_tool_result_event: object` - - Event representing the result of an MCP tool execution. - - - `beta_managed_agents_agent_tool_use_event: object` - - Event emitted when the agent invokes a built-in agent tool. - - - `beta_managed_agents_agent_tool_result_event: object` - - Event representing the result of an agent tool execution. - - - `beta_managed_agents_agent_thread_message_received_event: object` - - Delivery event written to the target thread's input stream when an agent-to-agent message arrives. - - - `beta_managed_agents_agent_thread_message_sent_event: object` - - Observability event emitted to the sender's output stream when an agent-to-agent message is sent. - - - `beta_managed_agents_agent_thread_context_compacted_event: object` - - Indicates that context compaction (summarization) occurred during the session. - - - `beta_managed_agents_session_error_event: object` - - An error event indicating a problem occurred during session execution. - - - `beta_managed_agents_session_status_rescheduled_event: object` - - Indicates the session is recovering from an error state and is rescheduled for execution. - - - `beta_managed_agents_session_status_running_event: object` - - Indicates the session is actively running and the agent is working. - - - `beta_managed_agents_session_status_idle_event: object` - - Indicates the agent has paused and is awaiting user input. - - - `beta_managed_agents_session_status_terminated_event: object` - - Indicates the session has terminated, either due to an error or completion. - - - `beta_managed_agents_session_thread_created_event: object` - - Emitted when a subagent is spawned as a new thread. Written to the parent thread's output stream so clients observing the session see child creation. - - - `beta_managed_agents_span_outcome_evaluation_start_event: object` - - Emitted when an outcome evaluation cycle begins. - - - `beta_managed_agents_span_outcome_evaluation_end_event: object` - - Emitted when an outcome evaluation cycle completes. Carries the verdict and aggregate token usage. A verdict of `needs_revision` means another evaluation cycle follows; `satisfied`, `max_iterations_reached`, `failed`, or `interrupted` are terminal — no further evaluation cycles follow. - - - `beta_managed_agents_span_model_request_start_event: object` - - Emitted when a model request is initiated by the agent. - - - `beta_managed_agents_span_model_request_end_event: object` - - Emitted when a model request completes. - - - `beta_managed_agents_span_outcome_evaluation_ongoing_event: object` - - Periodic heartbeat emitted while an outcome evaluation cycle is in progress. Distinguishes 'evaluation is actively running' from 'evaluation is stuck' between the corresponding `span.outcome_evaluation_start` and `span.outcome_evaluation_end` events. - - - `beta_managed_agents_user_define_outcome_event: object` - - Echo of a `user.define_outcome` input event. Carries the server-generated `outcome_id` that subsequent `span.outcome_evaluation_*` events reference. - - - `beta_managed_agents_session_deleted_event: object` - - Emitted when a session has been deleted. Terminates any active event stream — no further events will be emitted for this session. - - - `beta_managed_agents_session_thread_status_running_event: object` - - A session thread has begun executing. Emitted on the thread's own stream and cross-posted to the primary stream for child threads. - - - `beta_managed_agents_session_thread_status_idle_event: object` - - A session thread has yielded and is awaiting input. Emitted on the thread's own stream and cross-posted to the primary stream for child threads. - - - `beta_managed_agents_session_thread_status_terminated_event: object` - - A session thread has terminated and will accept no further input. Emitted on the thread's own stream and cross-posted to the primary stream for child threads. - - - `beta_managed_agents_user_tool_result_event: object` - - Event sent by the client providing the result of an agent-toolset tool execution. Only valid on `self_hosted` environments, where sandbox-routed tools are executed by the client rather than the server. - - - `beta_managed_agents_session_thread_status_rescheduled_event: object` - - A session thread hit a transient error and is retrying automatically. Emitted on the thread's own stream and cross-posted to the primary stream for child threads. - - - `beta_managed_agents_session_updated_event: object` - - Emitted when an UpdateSession request changed at least one field. Carries only the fields that changed; absent fields were not part of the update. The new configuration applies from the next turn. - - - `beta_managed_agents_start_event: object` - - Opens a preview of a buffered event. Carries the previewed event's type and id only. Followed by zero or more event_delta events with the same event id, normally concluded by the buffered event carrying that id. If the producing model request ends without that event (an error or interrupt mid-stream), its terminal span.model_request_end closes the preview. Only sent on stream connections that opt in via event_deltas; never appears in event history. - - - `beta_managed_agents_delta_event: object` - - An incremental update to an event that is still being streamed. Deltas are best-effort and may stop early; when the buffered event with id == event_id is produced it carries the complete content. A model request that ends early (an error or interrupt) produces no buffered event — its terminal span.model_request_end closes the preview. Only sent on stream connections that opt in via event_deltas; never appears in event history. - - - `beta_managed_agents_system_message_event: object` - - A mid-conversation system message event. Carries system-role content that is appended to the session as a `role: "system"` turn. - - - `beta_managed_agents_session_usage_event: object` - - Periodic snapshot of the session's cumulative usage and tracked list cost. - #### Example ```bash @@ -22706,158 +22554,6 @@ Stream Session Thread Events - `type: "limit"` -- `beta_managed_agents_stream_session_thread_events: BetaManagedAgentsUserMessageEvent or BetaManagedAgentsUserInterruptEvent or BetaManagedAgentsUserToolConfirmationEvent or 34 more` - - Server-sent event in a single thread's stream. - - - `beta_managed_agents_user_message_event: object` - - A user message event in the session conversation. - - - `beta_managed_agents_user_interrupt_event: object` - - An interrupt event that pauses agent execution and returns control to the user. - - - `beta_managed_agents_user_tool_confirmation_event: object` - - A tool confirmation event that approves or denies a pending tool execution. - - - `beta_managed_agents_user_custom_tool_result_event: object` - - Event sent by the client providing the result of a custom tool execution. - - - `beta_managed_agents_agent_custom_tool_use_event: object` - - Event emitted when the agent calls a custom tool. The session goes idle until the client sends a `user.custom_tool_result` event with the result. - - - `beta_managed_agents_agent_message_event: object` - - An agent response event in the session conversation. - - - `beta_managed_agents_agent_thinking_event: object` - - Indicates the agent is making forward progress via extended thinking. A progress signal, not a content carrier. - - - `beta_managed_agents_agent_mcp_tool_use_event: object` - - Event emitted when the agent invokes a tool provided by an MCP server. - - - `beta_managed_agents_agent_mcp_tool_result_event: object` - - Event representing the result of an MCP tool execution. - - - `beta_managed_agents_agent_tool_use_event: object` - - Event emitted when the agent invokes a built-in agent tool. - - - `beta_managed_agents_agent_tool_result_event: object` - - Event representing the result of an agent tool execution. - - - `beta_managed_agents_agent_thread_message_received_event: object` - - Delivery event written to the target thread's input stream when an agent-to-agent message arrives. - - - `beta_managed_agents_agent_thread_message_sent_event: object` - - Observability event emitted to the sender's output stream when an agent-to-agent message is sent. - - - `beta_managed_agents_agent_thread_context_compacted_event: object` - - Indicates that context compaction (summarization) occurred during the session. - - - `beta_managed_agents_session_error_event: object` - - An error event indicating a problem occurred during session execution. - - - `beta_managed_agents_session_status_rescheduled_event: object` - - Indicates the session is recovering from an error state and is rescheduled for execution. - - - `beta_managed_agents_session_status_running_event: object` - - Indicates the session is actively running and the agent is working. - - - `beta_managed_agents_session_status_idle_event: object` - - Indicates the agent has paused and is awaiting user input. - - - `beta_managed_agents_session_status_terminated_event: object` - - Indicates the session has terminated, either due to an error or completion. - - - `beta_managed_agents_session_thread_created_event: object` - - Emitted when a subagent is spawned as a new thread. Written to the parent thread's output stream so clients observing the session see child creation. - - - `beta_managed_agents_span_outcome_evaluation_start_event: object` - - Emitted when an outcome evaluation cycle begins. - - - `beta_managed_agents_span_outcome_evaluation_end_event: object` - - Emitted when an outcome evaluation cycle completes. Carries the verdict and aggregate token usage. A verdict of `needs_revision` means another evaluation cycle follows; `satisfied`, `max_iterations_reached`, `failed`, or `interrupted` are terminal — no further evaluation cycles follow. - - - `beta_managed_agents_span_model_request_start_event: object` - - Emitted when a model request is initiated by the agent. - - - `beta_managed_agents_span_model_request_end_event: object` - - Emitted when a model request completes. - - - `beta_managed_agents_span_outcome_evaluation_ongoing_event: object` - - Periodic heartbeat emitted while an outcome evaluation cycle is in progress. Distinguishes 'evaluation is actively running' from 'evaluation is stuck' between the corresponding `span.outcome_evaluation_start` and `span.outcome_evaluation_end` events. - - - `beta_managed_agents_user_define_outcome_event: object` - - Echo of a `user.define_outcome` input event. Carries the server-generated `outcome_id` that subsequent `span.outcome_evaluation_*` events reference. - - - `beta_managed_agents_session_deleted_event: object` - - Emitted when a session has been deleted. Terminates any active event stream — no further events will be emitted for this session. - - - `beta_managed_agents_session_thread_status_running_event: object` - - A session thread has begun executing. Emitted on the thread's own stream and cross-posted to the primary stream for child threads. - - - `beta_managed_agents_session_thread_status_idle_event: object` - - A session thread has yielded and is awaiting input. Emitted on the thread's own stream and cross-posted to the primary stream for child threads. - - - `beta_managed_agents_session_thread_status_terminated_event: object` - - A session thread has terminated and will accept no further input. Emitted on the thread's own stream and cross-posted to the primary stream for child threads. - - - `beta_managed_agents_user_tool_result_event: object` - - Event sent by the client providing the result of an agent-toolset tool execution. Only valid on `self_hosted` environments, where sandbox-routed tools are executed by the client rather than the server. - - - `beta_managed_agents_session_thread_status_rescheduled_event: object` - - A session thread hit a transient error and is retrying automatically. Emitted on the thread's own stream and cross-posted to the primary stream for child threads. - - - `beta_managed_agents_session_updated_event: object` - - Emitted when an UpdateSession request changed at least one field. Carries only the fields that changed; absent fields were not part of the update. The new configuration applies from the next turn. - - - `beta_managed_agents_start_event: object` - - Opens a preview of a buffered event. Carries the previewed event's type and id only. Followed by zero or more event_delta events with the same event id, normally concluded by the buffered event carrying that id. If the producing model request ends without that event (an error or interrupt mid-stream), its terminal span.model_request_end closes the preview. Only sent on stream connections that opt in via event_deltas; never appears in event history. - - - `beta_managed_agents_delta_event: object` - - An incremental update to an event that is still being streamed. Deltas are best-effort and may stop early; when the buffered event with id == event_id is produced it carries the complete content. A model request that ends early (an error or interrupt) produces no buffered event — its terminal span.model_request_end closes the preview. Only sent on stream connections that opt in via event_deltas; never appears in event history. - - - `beta_managed_agents_system_message_event: object` - - A mid-conversation system message event. Carries system-role content that is appended to the session as a `role: "system"` turn. - - - `beta_managed_agents_session_usage_event: object` - - Periodic snapshot of the session's cumulative usage and tracked list cost. - #### Example ```bash diff --git a/content/en/api/cli/beta/sessions/events.md b/content/en/api/cli/beta/sessions/events.md index a1e694260..f1bc60421 100644 --- a/content/en/api/cli/beta/sessions/events.md +++ b/content/en/api/cli/beta/sessions/events.md @@ -5055,158 +5055,6 @@ Stream Events - `type: "limit"` -- `beta_managed_agents_stream_session_events: BetaManagedAgentsUserMessageEvent or BetaManagedAgentsUserInterruptEvent or BetaManagedAgentsUserToolConfirmationEvent or 34 more` - - Server-sent event in the session stream. - - - `beta_managed_agents_user_message_event: object` - - A user message event in the session conversation. - - - `beta_managed_agents_user_interrupt_event: object` - - An interrupt event that pauses agent execution and returns control to the user. - - - `beta_managed_agents_user_tool_confirmation_event: object` - - A tool confirmation event that approves or denies a pending tool execution. - - - `beta_managed_agents_user_custom_tool_result_event: object` - - Event sent by the client providing the result of a custom tool execution. - - - `beta_managed_agents_agent_custom_tool_use_event: object` - - Event emitted when the agent calls a custom tool. The session goes idle until the client sends a `user.custom_tool_result` event with the result. - - - `beta_managed_agents_agent_message_event: object` - - An agent response event in the session conversation. - - - `beta_managed_agents_agent_thinking_event: object` - - Indicates the agent is making forward progress via extended thinking. A progress signal, not a content carrier. - - - `beta_managed_agents_agent_mcp_tool_use_event: object` - - Event emitted when the agent invokes a tool provided by an MCP server. - - - `beta_managed_agents_agent_mcp_tool_result_event: object` - - Event representing the result of an MCP tool execution. - - - `beta_managed_agents_agent_tool_use_event: object` - - Event emitted when the agent invokes a built-in agent tool. - - - `beta_managed_agents_agent_tool_result_event: object` - - Event representing the result of an agent tool execution. - - - `beta_managed_agents_agent_thread_message_received_event: object` - - Delivery event written to the target thread's input stream when an agent-to-agent message arrives. - - - `beta_managed_agents_agent_thread_message_sent_event: object` - - Observability event emitted to the sender's output stream when an agent-to-agent message is sent. - - - `beta_managed_agents_agent_thread_context_compacted_event: object` - - Indicates that context compaction (summarization) occurred during the session. - - - `beta_managed_agents_session_error_event: object` - - An error event indicating a problem occurred during session execution. - - - `beta_managed_agents_session_status_rescheduled_event: object` - - Indicates the session is recovering from an error state and is rescheduled for execution. - - - `beta_managed_agents_session_status_running_event: object` - - Indicates the session is actively running and the agent is working. - - - `beta_managed_agents_session_status_idle_event: object` - - Indicates the agent has paused and is awaiting user input. - - - `beta_managed_agents_session_status_terminated_event: object` - - Indicates the session has terminated, either due to an error or completion. - - - `beta_managed_agents_session_thread_created_event: object` - - Emitted when a subagent is spawned as a new thread. Written to the parent thread's output stream so clients observing the session see child creation. - - - `beta_managed_agents_span_outcome_evaluation_start_event: object` - - Emitted when an outcome evaluation cycle begins. - - - `beta_managed_agents_span_outcome_evaluation_end_event: object` - - Emitted when an outcome evaluation cycle completes. Carries the verdict and aggregate token usage. A verdict of `needs_revision` means another evaluation cycle follows; `satisfied`, `max_iterations_reached`, `failed`, or `interrupted` are terminal — no further evaluation cycles follow. - - - `beta_managed_agents_span_model_request_start_event: object` - - Emitted when a model request is initiated by the agent. - - - `beta_managed_agents_span_model_request_end_event: object` - - Emitted when a model request completes. - - - `beta_managed_agents_span_outcome_evaluation_ongoing_event: object` - - Periodic heartbeat emitted while an outcome evaluation cycle is in progress. Distinguishes 'evaluation is actively running' from 'evaluation is stuck' between the corresponding `span.outcome_evaluation_start` and `span.outcome_evaluation_end` events. - - - `beta_managed_agents_user_define_outcome_event: object` - - Echo of a `user.define_outcome` input event. Carries the server-generated `outcome_id` that subsequent `span.outcome_evaluation_*` events reference. - - - `beta_managed_agents_session_deleted_event: object` - - Emitted when a session has been deleted. Terminates any active event stream — no further events will be emitted for this session. - - - `beta_managed_agents_session_thread_status_running_event: object` - - A session thread has begun executing. Emitted on the thread's own stream and cross-posted to the primary stream for child threads. - - - `beta_managed_agents_session_thread_status_idle_event: object` - - A session thread has yielded and is awaiting input. Emitted on the thread's own stream and cross-posted to the primary stream for child threads. - - - `beta_managed_agents_session_thread_status_terminated_event: object` - - A session thread has terminated and will accept no further input. Emitted on the thread's own stream and cross-posted to the primary stream for child threads. - - - `beta_managed_agents_user_tool_result_event: object` - - Event sent by the client providing the result of an agent-toolset tool execution. Only valid on `self_hosted` environments, where sandbox-routed tools are executed by the client rather than the server. - - - `beta_managed_agents_session_thread_status_rescheduled_event: object` - - A session thread hit a transient error and is retrying automatically. Emitted on the thread's own stream and cross-posted to the primary stream for child threads. - - - `beta_managed_agents_session_updated_event: object` - - Emitted when an UpdateSession request changed at least one field. Carries only the fields that changed; absent fields were not part of the update. The new configuration applies from the next turn. - - - `beta_managed_agents_start_event: object` - - Opens a preview of a buffered event. Carries the previewed event's type and id only. Followed by zero or more event_delta events with the same event id, normally concluded by the buffered event carrying that id. If the producing model request ends without that event (an error or interrupt mid-stream), its terminal span.model_request_end closes the preview. Only sent on stream connections that opt in via event_deltas; never appears in event history. - - - `beta_managed_agents_delta_event: object` - - An incremental update to an event that is still being streamed. Deltas are best-effort and may stop early; when the buffered event with id == event_id is produced it carries the complete content. A model request that ends early (an error or interrupt) produces no buffered event — its terminal span.model_request_end closes the preview. Only sent on stream connections that opt in via event_deltas; never appears in event history. - - - `beta_managed_agents_system_message_event: object` - - A mid-conversation system message event. Carries system-role content that is appended to the session as a `role: "system"` turn. - - - `beta_managed_agents_session_usage_event: object` - - Periodic snapshot of the session's cumulative usage and tracked list cost. - ### Example ```bash diff --git a/content/en/api/cli/beta/sessions/events/stream.md b/content/en/api/cli/beta/sessions/events/stream.md index fb17f7c34..3f13736d6 100644 --- a/content/en/api/cli/beta/sessions/events/stream.md +++ b/content/en/api/cli/beta/sessions/events/stream.md @@ -2264,158 +2264,6 @@ Stream Events - `type: "limit"` -- `beta_managed_agents_stream_session_events: BetaManagedAgentsUserMessageEvent or BetaManagedAgentsUserInterruptEvent or BetaManagedAgentsUserToolConfirmationEvent or 34 more` - - Server-sent event in the session stream. - - - `beta_managed_agents_user_message_event: object` - - A user message event in the session conversation. - - - `beta_managed_agents_user_interrupt_event: object` - - An interrupt event that pauses agent execution and returns control to the user. - - - `beta_managed_agents_user_tool_confirmation_event: object` - - A tool confirmation event that approves or denies a pending tool execution. - - - `beta_managed_agents_user_custom_tool_result_event: object` - - Event sent by the client providing the result of a custom tool execution. - - - `beta_managed_agents_agent_custom_tool_use_event: object` - - Event emitted when the agent calls a custom tool. The session goes idle until the client sends a `user.custom_tool_result` event with the result. - - - `beta_managed_agents_agent_message_event: object` - - An agent response event in the session conversation. - - - `beta_managed_agents_agent_thinking_event: object` - - Indicates the agent is making forward progress via extended thinking. A progress signal, not a content carrier. - - - `beta_managed_agents_agent_mcp_tool_use_event: object` - - Event emitted when the agent invokes a tool provided by an MCP server. - - - `beta_managed_agents_agent_mcp_tool_result_event: object` - - Event representing the result of an MCP tool execution. - - - `beta_managed_agents_agent_tool_use_event: object` - - Event emitted when the agent invokes a built-in agent tool. - - - `beta_managed_agents_agent_tool_result_event: object` - - Event representing the result of an agent tool execution. - - - `beta_managed_agents_agent_thread_message_received_event: object` - - Delivery event written to the target thread's input stream when an agent-to-agent message arrives. - - - `beta_managed_agents_agent_thread_message_sent_event: object` - - Observability event emitted to the sender's output stream when an agent-to-agent message is sent. - - - `beta_managed_agents_agent_thread_context_compacted_event: object` - - Indicates that context compaction (summarization) occurred during the session. - - - `beta_managed_agents_session_error_event: object` - - An error event indicating a problem occurred during session execution. - - - `beta_managed_agents_session_status_rescheduled_event: object` - - Indicates the session is recovering from an error state and is rescheduled for execution. - - - `beta_managed_agents_session_status_running_event: object` - - Indicates the session is actively running and the agent is working. - - - `beta_managed_agents_session_status_idle_event: object` - - Indicates the agent has paused and is awaiting user input. - - - `beta_managed_agents_session_status_terminated_event: object` - - Indicates the session has terminated, either due to an error or completion. - - - `beta_managed_agents_session_thread_created_event: object` - - Emitted when a subagent is spawned as a new thread. Written to the parent thread's output stream so clients observing the session see child creation. - - - `beta_managed_agents_span_outcome_evaluation_start_event: object` - - Emitted when an outcome evaluation cycle begins. - - - `beta_managed_agents_span_outcome_evaluation_end_event: object` - - Emitted when an outcome evaluation cycle completes. Carries the verdict and aggregate token usage. A verdict of `needs_revision` means another evaluation cycle follows; `satisfied`, `max_iterations_reached`, `failed`, or `interrupted` are terminal — no further evaluation cycles follow. - - - `beta_managed_agents_span_model_request_start_event: object` - - Emitted when a model request is initiated by the agent. - - - `beta_managed_agents_span_model_request_end_event: object` - - Emitted when a model request completes. - - - `beta_managed_agents_span_outcome_evaluation_ongoing_event: object` - - Periodic heartbeat emitted while an outcome evaluation cycle is in progress. Distinguishes 'evaluation is actively running' from 'evaluation is stuck' between the corresponding `span.outcome_evaluation_start` and `span.outcome_evaluation_end` events. - - - `beta_managed_agents_user_define_outcome_event: object` - - Echo of a `user.define_outcome` input event. Carries the server-generated `outcome_id` that subsequent `span.outcome_evaluation_*` events reference. - - - `beta_managed_agents_session_deleted_event: object` - - Emitted when a session has been deleted. Terminates any active event stream — no further events will be emitted for this session. - - - `beta_managed_agents_session_thread_status_running_event: object` - - A session thread has begun executing. Emitted on the thread's own stream and cross-posted to the primary stream for child threads. - - - `beta_managed_agents_session_thread_status_idle_event: object` - - A session thread has yielded and is awaiting input. Emitted on the thread's own stream and cross-posted to the primary stream for child threads. - - - `beta_managed_agents_session_thread_status_terminated_event: object` - - A session thread has terminated and will accept no further input. Emitted on the thread's own stream and cross-posted to the primary stream for child threads. - - - `beta_managed_agents_user_tool_result_event: object` - - Event sent by the client providing the result of an agent-toolset tool execution. Only valid on `self_hosted` environments, where sandbox-routed tools are executed by the client rather than the server. - - - `beta_managed_agents_session_thread_status_rescheduled_event: object` - - A session thread hit a transient error and is retrying automatically. Emitted on the thread's own stream and cross-posted to the primary stream for child threads. - - - `beta_managed_agents_session_updated_event: object` - - Emitted when an UpdateSession request changed at least one field. Carries only the fields that changed; absent fields were not part of the update. The new configuration applies from the next turn. - - - `beta_managed_agents_start_event: object` - - Opens a preview of a buffered event. Carries the previewed event's type and id only. Followed by zero or more event_delta events with the same event id, normally concluded by the buffered event carrying that id. If the producing model request ends without that event (an error or interrupt mid-stream), its terminal span.model_request_end closes the preview. Only sent on stream connections that opt in via event_deltas; never appears in event history. - - - `beta_managed_agents_delta_event: object` - - An incremental update to an event that is still being streamed. Deltas are best-effort and may stop early; when the buffered event with id == event_id is produced it carries the complete content. A model request that ends early (an error or interrupt) produces no buffered event — its terminal span.model_request_end closes the preview. Only sent on stream connections that opt in via event_deltas; never appears in event history. - - - `beta_managed_agents_system_message_event: object` - - A mid-conversation system message event. Carries system-role content that is appended to the session as a `role: "system"` turn. - - - `beta_managed_agents_session_usage_event: object` - - Periodic snapshot of the session's cumulative usage and tracked list cost. - ## Example ```bash diff --git a/content/en/api/cli/beta/sessions/threads.md b/content/en/api/cli/beta/sessions/threads.md index 2fe63072b..1923e7986 100644 --- a/content/en/api/cli/beta/sessions/threads.md +++ b/content/en/api/cli/beta/sessions/threads.md @@ -9774,158 +9774,6 @@ Stream Session Thread Events - `type: "limit"` -- `beta_managed_agents_stream_session_thread_events: BetaManagedAgentsUserMessageEvent or BetaManagedAgentsUserInterruptEvent or BetaManagedAgentsUserToolConfirmationEvent or 34 more` - - Server-sent event in a single thread's stream. - - - `beta_managed_agents_user_message_event: object` - - A user message event in the session conversation. - - - `beta_managed_agents_user_interrupt_event: object` - - An interrupt event that pauses agent execution and returns control to the user. - - - `beta_managed_agents_user_tool_confirmation_event: object` - - A tool confirmation event that approves or denies a pending tool execution. - - - `beta_managed_agents_user_custom_tool_result_event: object` - - Event sent by the client providing the result of a custom tool execution. - - - `beta_managed_agents_agent_custom_tool_use_event: object` - - Event emitted when the agent calls a custom tool. The session goes idle until the client sends a `user.custom_tool_result` event with the result. - - - `beta_managed_agents_agent_message_event: object` - - An agent response event in the session conversation. - - - `beta_managed_agents_agent_thinking_event: object` - - Indicates the agent is making forward progress via extended thinking. A progress signal, not a content carrier. - - - `beta_managed_agents_agent_mcp_tool_use_event: object` - - Event emitted when the agent invokes a tool provided by an MCP server. - - - `beta_managed_agents_agent_mcp_tool_result_event: object` - - Event representing the result of an MCP tool execution. - - - `beta_managed_agents_agent_tool_use_event: object` - - Event emitted when the agent invokes a built-in agent tool. - - - `beta_managed_agents_agent_tool_result_event: object` - - Event representing the result of an agent tool execution. - - - `beta_managed_agents_agent_thread_message_received_event: object` - - Delivery event written to the target thread's input stream when an agent-to-agent message arrives. - - - `beta_managed_agents_agent_thread_message_sent_event: object` - - Observability event emitted to the sender's output stream when an agent-to-agent message is sent. - - - `beta_managed_agents_agent_thread_context_compacted_event: object` - - Indicates that context compaction (summarization) occurred during the session. - - - `beta_managed_agents_session_error_event: object` - - An error event indicating a problem occurred during session execution. - - - `beta_managed_agents_session_status_rescheduled_event: object` - - Indicates the session is recovering from an error state and is rescheduled for execution. - - - `beta_managed_agents_session_status_running_event: object` - - Indicates the session is actively running and the agent is working. - - - `beta_managed_agents_session_status_idle_event: object` - - Indicates the agent has paused and is awaiting user input. - - - `beta_managed_agents_session_status_terminated_event: object` - - Indicates the session has terminated, either due to an error or completion. - - - `beta_managed_agents_session_thread_created_event: object` - - Emitted when a subagent is spawned as a new thread. Written to the parent thread's output stream so clients observing the session see child creation. - - - `beta_managed_agents_span_outcome_evaluation_start_event: object` - - Emitted when an outcome evaluation cycle begins. - - - `beta_managed_agents_span_outcome_evaluation_end_event: object` - - Emitted when an outcome evaluation cycle completes. Carries the verdict and aggregate token usage. A verdict of `needs_revision` means another evaluation cycle follows; `satisfied`, `max_iterations_reached`, `failed`, or `interrupted` are terminal — no further evaluation cycles follow. - - - `beta_managed_agents_span_model_request_start_event: object` - - Emitted when a model request is initiated by the agent. - - - `beta_managed_agents_span_model_request_end_event: object` - - Emitted when a model request completes. - - - `beta_managed_agents_span_outcome_evaluation_ongoing_event: object` - - Periodic heartbeat emitted while an outcome evaluation cycle is in progress. Distinguishes 'evaluation is actively running' from 'evaluation is stuck' between the corresponding `span.outcome_evaluation_start` and `span.outcome_evaluation_end` events. - - - `beta_managed_agents_user_define_outcome_event: object` - - Echo of a `user.define_outcome` input event. Carries the server-generated `outcome_id` that subsequent `span.outcome_evaluation_*` events reference. - - - `beta_managed_agents_session_deleted_event: object` - - Emitted when a session has been deleted. Terminates any active event stream — no further events will be emitted for this session. - - - `beta_managed_agents_session_thread_status_running_event: object` - - A session thread has begun executing. Emitted on the thread's own stream and cross-posted to the primary stream for child threads. - - - `beta_managed_agents_session_thread_status_idle_event: object` - - A session thread has yielded and is awaiting input. Emitted on the thread's own stream and cross-posted to the primary stream for child threads. - - - `beta_managed_agents_session_thread_status_terminated_event: object` - - A session thread has terminated and will accept no further input. Emitted on the thread's own stream and cross-posted to the primary stream for child threads. - - - `beta_managed_agents_user_tool_result_event: object` - - Event sent by the client providing the result of an agent-toolset tool execution. Only valid on `self_hosted` environments, where sandbox-routed tools are executed by the client rather than the server. - - - `beta_managed_agents_session_thread_status_rescheduled_event: object` - - A session thread hit a transient error and is retrying automatically. Emitted on the thread's own stream and cross-posted to the primary stream for child threads. - - - `beta_managed_agents_session_updated_event: object` - - Emitted when an UpdateSession request changed at least one field. Carries only the fields that changed; absent fields were not part of the update. The new configuration applies from the next turn. - - - `beta_managed_agents_start_event: object` - - Opens a preview of a buffered event. Carries the previewed event's type and id only. Followed by zero or more event_delta events with the same event id, normally concluded by the buffered event carrying that id. If the producing model request ends without that event (an error or interrupt mid-stream), its terminal span.model_request_end closes the preview. Only sent on stream connections that opt in via event_deltas; never appears in event history. - - - `beta_managed_agents_delta_event: object` - - An incremental update to an event that is still being streamed. Deltas are best-effort and may stop early; when the buffered event with id == event_id is produced it carries the complete content. A model request that ends early (an error or interrupt) produces no buffered event — its terminal span.model_request_end closes the preview. Only sent on stream connections that opt in via event_deltas; never appears in event history. - - - `beta_managed_agents_system_message_event: object` - - A mid-conversation system message event. Carries system-role content that is appended to the session as a `role: "system"` turn. - - - `beta_managed_agents_session_usage_event: object` - - Periodic snapshot of the session's cumulative usage and tracked list cost. - #### Example ```bash diff --git a/content/en/api/cli/beta/sessions/threads/events.md b/content/en/api/cli/beta/sessions/threads/events.md index d6fe43b07..0cb1f944d 100644 --- a/content/en/api/cli/beta/sessions/threads/events.md +++ b/content/en/api/cli/beta/sessions/threads/events.md @@ -4524,158 +4524,6 @@ Stream Session Thread Events - `type: "limit"` -- `beta_managed_agents_stream_session_thread_events: BetaManagedAgentsUserMessageEvent or BetaManagedAgentsUserInterruptEvent or BetaManagedAgentsUserToolConfirmationEvent or 34 more` - - Server-sent event in a single thread's stream. - - - `beta_managed_agents_user_message_event: object` - - A user message event in the session conversation. - - - `beta_managed_agents_user_interrupt_event: object` - - An interrupt event that pauses agent execution and returns control to the user. - - - `beta_managed_agents_user_tool_confirmation_event: object` - - A tool confirmation event that approves or denies a pending tool execution. - - - `beta_managed_agents_user_custom_tool_result_event: object` - - Event sent by the client providing the result of a custom tool execution. - - - `beta_managed_agents_agent_custom_tool_use_event: object` - - Event emitted when the agent calls a custom tool. The session goes idle until the client sends a `user.custom_tool_result` event with the result. - - - `beta_managed_agents_agent_message_event: object` - - An agent response event in the session conversation. - - - `beta_managed_agents_agent_thinking_event: object` - - Indicates the agent is making forward progress via extended thinking. A progress signal, not a content carrier. - - - `beta_managed_agents_agent_mcp_tool_use_event: object` - - Event emitted when the agent invokes a tool provided by an MCP server. - - - `beta_managed_agents_agent_mcp_tool_result_event: object` - - Event representing the result of an MCP tool execution. - - - `beta_managed_agents_agent_tool_use_event: object` - - Event emitted when the agent invokes a built-in agent tool. - - - `beta_managed_agents_agent_tool_result_event: object` - - Event representing the result of an agent tool execution. - - - `beta_managed_agents_agent_thread_message_received_event: object` - - Delivery event written to the target thread's input stream when an agent-to-agent message arrives. - - - `beta_managed_agents_agent_thread_message_sent_event: object` - - Observability event emitted to the sender's output stream when an agent-to-agent message is sent. - - - `beta_managed_agents_agent_thread_context_compacted_event: object` - - Indicates that context compaction (summarization) occurred during the session. - - - `beta_managed_agents_session_error_event: object` - - An error event indicating a problem occurred during session execution. - - - `beta_managed_agents_session_status_rescheduled_event: object` - - Indicates the session is recovering from an error state and is rescheduled for execution. - - - `beta_managed_agents_session_status_running_event: object` - - Indicates the session is actively running and the agent is working. - - - `beta_managed_agents_session_status_idle_event: object` - - Indicates the agent has paused and is awaiting user input. - - - `beta_managed_agents_session_status_terminated_event: object` - - Indicates the session has terminated, either due to an error or completion. - - - `beta_managed_agents_session_thread_created_event: object` - - Emitted when a subagent is spawned as a new thread. Written to the parent thread's output stream so clients observing the session see child creation. - - - `beta_managed_agents_span_outcome_evaluation_start_event: object` - - Emitted when an outcome evaluation cycle begins. - - - `beta_managed_agents_span_outcome_evaluation_end_event: object` - - Emitted when an outcome evaluation cycle completes. Carries the verdict and aggregate token usage. A verdict of `needs_revision` means another evaluation cycle follows; `satisfied`, `max_iterations_reached`, `failed`, or `interrupted` are terminal — no further evaluation cycles follow. - - - `beta_managed_agents_span_model_request_start_event: object` - - Emitted when a model request is initiated by the agent. - - - `beta_managed_agents_span_model_request_end_event: object` - - Emitted when a model request completes. - - - `beta_managed_agents_span_outcome_evaluation_ongoing_event: object` - - Periodic heartbeat emitted while an outcome evaluation cycle is in progress. Distinguishes 'evaluation is actively running' from 'evaluation is stuck' between the corresponding `span.outcome_evaluation_start` and `span.outcome_evaluation_end` events. - - - `beta_managed_agents_user_define_outcome_event: object` - - Echo of a `user.define_outcome` input event. Carries the server-generated `outcome_id` that subsequent `span.outcome_evaluation_*` events reference. - - - `beta_managed_agents_session_deleted_event: object` - - Emitted when a session has been deleted. Terminates any active event stream — no further events will be emitted for this session. - - - `beta_managed_agents_session_thread_status_running_event: object` - - A session thread has begun executing. Emitted on the thread's own stream and cross-posted to the primary stream for child threads. - - - `beta_managed_agents_session_thread_status_idle_event: object` - - A session thread has yielded and is awaiting input. Emitted on the thread's own stream and cross-posted to the primary stream for child threads. - - - `beta_managed_agents_session_thread_status_terminated_event: object` - - A session thread has terminated and will accept no further input. Emitted on the thread's own stream and cross-posted to the primary stream for child threads. - - - `beta_managed_agents_user_tool_result_event: object` - - Event sent by the client providing the result of an agent-toolset tool execution. Only valid on `self_hosted` environments, where sandbox-routed tools are executed by the client rather than the server. - - - `beta_managed_agents_session_thread_status_rescheduled_event: object` - - A session thread hit a transient error and is retrying automatically. Emitted on the thread's own stream and cross-posted to the primary stream for child threads. - - - `beta_managed_agents_session_updated_event: object` - - Emitted when an UpdateSession request changed at least one field. Carries only the fields that changed; absent fields were not part of the update. The new configuration applies from the next turn. - - - `beta_managed_agents_start_event: object` - - Opens a preview of a buffered event. Carries the previewed event's type and id only. Followed by zero or more event_delta events with the same event id, normally concluded by the buffered event carrying that id. If the producing model request ends without that event (an error or interrupt mid-stream), its terminal span.model_request_end closes the preview. Only sent on stream connections that opt in via event_deltas; never appears in event history. - - - `beta_managed_agents_delta_event: object` - - An incremental update to an event that is still being streamed. Deltas are best-effort and may stop early; when the buffered event with id == event_id is produced it carries the complete content. A model request that ends early (an error or interrupt) produces no buffered event — its terminal span.model_request_end closes the preview. Only sent on stream connections that opt in via event_deltas; never appears in event history. - - - `beta_managed_agents_system_message_event: object` - - A mid-conversation system message event. Carries system-role content that is appended to the session as a `role: "system"` turn. - - - `beta_managed_agents_session_usage_event: object` - - Periodic snapshot of the session's cumulative usage and tracked list cost. - ### Example ```bash diff --git a/content/en/api/cli/beta/sessions/threads/events/stream.md b/content/en/api/cli/beta/sessions/threads/events/stream.md index 4946f1499..9b2791d23 100644 --- a/content/en/api/cli/beta/sessions/threads/events/stream.md +++ b/content/en/api/cli/beta/sessions/threads/events/stream.md @@ -2268,158 +2268,6 @@ Stream Session Thread Events - `type: "limit"` -- `beta_managed_agents_stream_session_thread_events: BetaManagedAgentsUserMessageEvent or BetaManagedAgentsUserInterruptEvent or BetaManagedAgentsUserToolConfirmationEvent or 34 more` - - Server-sent event in a single thread's stream. - - - `beta_managed_agents_user_message_event: object` - - A user message event in the session conversation. - - - `beta_managed_agents_user_interrupt_event: object` - - An interrupt event that pauses agent execution and returns control to the user. - - - `beta_managed_agents_user_tool_confirmation_event: object` - - A tool confirmation event that approves or denies a pending tool execution. - - - `beta_managed_agents_user_custom_tool_result_event: object` - - Event sent by the client providing the result of a custom tool execution. - - - `beta_managed_agents_agent_custom_tool_use_event: object` - - Event emitted when the agent calls a custom tool. The session goes idle until the client sends a `user.custom_tool_result` event with the result. - - - `beta_managed_agents_agent_message_event: object` - - An agent response event in the session conversation. - - - `beta_managed_agents_agent_thinking_event: object` - - Indicates the agent is making forward progress via extended thinking. A progress signal, not a content carrier. - - - `beta_managed_agents_agent_mcp_tool_use_event: object` - - Event emitted when the agent invokes a tool provided by an MCP server. - - - `beta_managed_agents_agent_mcp_tool_result_event: object` - - Event representing the result of an MCP tool execution. - - - `beta_managed_agents_agent_tool_use_event: object` - - Event emitted when the agent invokes a built-in agent tool. - - - `beta_managed_agents_agent_tool_result_event: object` - - Event representing the result of an agent tool execution. - - - `beta_managed_agents_agent_thread_message_received_event: object` - - Delivery event written to the target thread's input stream when an agent-to-agent message arrives. - - - `beta_managed_agents_agent_thread_message_sent_event: object` - - Observability event emitted to the sender's output stream when an agent-to-agent message is sent. - - - `beta_managed_agents_agent_thread_context_compacted_event: object` - - Indicates that context compaction (summarization) occurred during the session. - - - `beta_managed_agents_session_error_event: object` - - An error event indicating a problem occurred during session execution. - - - `beta_managed_agents_session_status_rescheduled_event: object` - - Indicates the session is recovering from an error state and is rescheduled for execution. - - - `beta_managed_agents_session_status_running_event: object` - - Indicates the session is actively running and the agent is working. - - - `beta_managed_agents_session_status_idle_event: object` - - Indicates the agent has paused and is awaiting user input. - - - `beta_managed_agents_session_status_terminated_event: object` - - Indicates the session has terminated, either due to an error or completion. - - - `beta_managed_agents_session_thread_created_event: object` - - Emitted when a subagent is spawned as a new thread. Written to the parent thread's output stream so clients observing the session see child creation. - - - `beta_managed_agents_span_outcome_evaluation_start_event: object` - - Emitted when an outcome evaluation cycle begins. - - - `beta_managed_agents_span_outcome_evaluation_end_event: object` - - Emitted when an outcome evaluation cycle completes. Carries the verdict and aggregate token usage. A verdict of `needs_revision` means another evaluation cycle follows; `satisfied`, `max_iterations_reached`, `failed`, or `interrupted` are terminal — no further evaluation cycles follow. - - - `beta_managed_agents_span_model_request_start_event: object` - - Emitted when a model request is initiated by the agent. - - - `beta_managed_agents_span_model_request_end_event: object` - - Emitted when a model request completes. - - - `beta_managed_agents_span_outcome_evaluation_ongoing_event: object` - - Periodic heartbeat emitted while an outcome evaluation cycle is in progress. Distinguishes 'evaluation is actively running' from 'evaluation is stuck' between the corresponding `span.outcome_evaluation_start` and `span.outcome_evaluation_end` events. - - - `beta_managed_agents_user_define_outcome_event: object` - - Echo of a `user.define_outcome` input event. Carries the server-generated `outcome_id` that subsequent `span.outcome_evaluation_*` events reference. - - - `beta_managed_agents_session_deleted_event: object` - - Emitted when a session has been deleted. Terminates any active event stream — no further events will be emitted for this session. - - - `beta_managed_agents_session_thread_status_running_event: object` - - A session thread has begun executing. Emitted on the thread's own stream and cross-posted to the primary stream for child threads. - - - `beta_managed_agents_session_thread_status_idle_event: object` - - A session thread has yielded and is awaiting input. Emitted on the thread's own stream and cross-posted to the primary stream for child threads. - - - `beta_managed_agents_session_thread_status_terminated_event: object` - - A session thread has terminated and will accept no further input. Emitted on the thread's own stream and cross-posted to the primary stream for child threads. - - - `beta_managed_agents_user_tool_result_event: object` - - Event sent by the client providing the result of an agent-toolset tool execution. Only valid on `self_hosted` environments, where sandbox-routed tools are executed by the client rather than the server. - - - `beta_managed_agents_session_thread_status_rescheduled_event: object` - - A session thread hit a transient error and is retrying automatically. Emitted on the thread's own stream and cross-posted to the primary stream for child threads. - - - `beta_managed_agents_session_updated_event: object` - - Emitted when an UpdateSession request changed at least one field. Carries only the fields that changed; absent fields were not part of the update. The new configuration applies from the next turn. - - - `beta_managed_agents_start_event: object` - - Opens a preview of a buffered event. Carries the previewed event's type and id only. Followed by zero or more event_delta events with the same event id, normally concluded by the buffered event carrying that id. If the producing model request ends without that event (an error or interrupt mid-stream), its terminal span.model_request_end closes the preview. Only sent on stream connections that opt in via event_deltas; never appears in event history. - - - `beta_managed_agents_delta_event: object` - - An incremental update to an event that is still being streamed. Deltas are best-effort and may stop early; when the buffered event with id == event_id is produced it carries the complete content. A model request that ends early (an error or interrupt) produces no buffered event — its terminal span.model_request_end closes the preview. Only sent on stream connections that opt in via event_deltas; never appears in event history. - - - `beta_managed_agents_system_message_event: object` - - A mid-conversation system message event. Carries system-role content that is appended to the session as a `role: "system"` turn. - - - `beta_managed_agents_session_usage_event: object` - - Periodic snapshot of the session's cumulative usage and tracked list cost. - ## Example ```bash diff --git a/content/en/api/cli/completions.md b/content/en/api/cli/completions.md index e6b378556..92855f58b 100644 --- a/content/en/api/cli/completions.md +++ b/content/en/api/cli/completions.md @@ -205,39 +205,6 @@ Future models and features will not be compatible with Text Completions. See our For Text Completions, this is always `"completion"`. -- `completion: object` - - - `id: string` - - Unique object identifier. - - The format and length of IDs may change over time. - - - `completion: string` - - The resulting completion up to and excluding the stop sequences. - - - `model: "claude-fable-5-1" or "claude-mythos-5-1" or "claude-sonnet-5" or 14 more or string` - - The model that will complete your prompt. - - See [models](https://docs.anthropic.com/en/docs/models-overview) for additional details and options. - - - `stop_reason: string` - - The reason that we stopped. - - This may be one the following values: - - * `"stop_sequence"`: we reached a stop sequence — either provided by you via the `stop_sequences` parameter, or a stop sequence built into the model - * `"max_tokens"`: we exceeded `max_tokens_to_sample` or the model's maximum - - - `type: "completion"` - - Object type. - - For Text Completions, this is always `"completion"`. - ### Example ```bash diff --git a/content/en/api/cli/completions/create.md b/content/en/api/cli/completions/create.md index 26e8c0d15..75344a70f 100644 --- a/content/en/api/cli/completions/create.md +++ b/content/en/api/cli/completions/create.md @@ -203,39 +203,6 @@ Future models and features will not be compatible with Text Completions. See our For Text Completions, this is always `"completion"`. -- `completion: object` - - - `id: string` - - Unique object identifier. - - The format and length of IDs may change over time. - - - `completion: string` - - The resulting completion up to and excluding the stop sequences. - - - `model: "claude-fable-5-1" or "claude-mythos-5-1" or "claude-sonnet-5" or 14 more or string` - - The model that will complete your prompt. - - See [models](https://docs.anthropic.com/en/docs/models-overview) for additional details and options. - - - `stop_reason: string` - - The reason that we stopped. - - This may be one the following values: - - * `"stop_sequence"`: we reached a stop sequence — either provided by you via the `stop_sequences` parameter, or a stop sequence built into the model - * `"max_tokens"`: we exceeded `max_tokens_to_sample` or the model's maximum - - - `type: "completion"` - - Object type. - - For Text Completions, this is always `"completion"`. - ## Example ```bash diff --git a/content/en/api/completions.md b/content/en/api/completions.md index a4193ecd6..472a83cae 100644 --- a/content/en/api/completions.md +++ b/content/en/api/completions.md @@ -397,8 +397,6 @@ Future models and features will not be compatible with Text Completions. See our default: completion -- `Completion object` - ### Example ```bash diff --git a/content/en/api/completions/create.md b/content/en/api/completions/create.md index 679db56b1..9d202a7a2 100644 --- a/content/en/api/completions/create.md +++ b/content/en/api/completions/create.md @@ -395,8 +395,6 @@ Future models and features will not be compatible with Text Completions. See our default: completion -- `Completion object` - ## Example ```bash diff --git a/content/en/api/csharp/beta.md b/content/en/api/csharp/beta.md index 19459cb93..41e9cc87f 100644 --- a/content/en/api/csharp/beta.md +++ b/content/en/api/csharp/beta.md @@ -38960,10 +38960,6 @@ Stream Events A hard spend ceiling. The session stops issuing new model requests once the tracked list cost reaches `max_list_cost`. -- `class BetaManagedAgentsStreamSessionEvents: union` - - Server-sent event in the session stream. - #### Example ```csharp @@ -47223,10 +47219,6 @@ Stream Session Thread Events A hard spend ceiling. The session stops issuing new model requests once the tracked list cost reaches `max_list_cost`. -- `class BetaManagedAgentsStreamSessionThreadEvents: union` - - Server-sent event in a single thread's stream. - #### Example ```csharp diff --git a/content/en/api/csharp/beta/sessions.md b/content/en/api/csharp/beta/sessions.md index 5b072177c..6ce4bfeae 100644 --- a/content/en/api/csharp/beta/sessions.md +++ b/content/en/api/csharp/beta/sessions.md @@ -17034,10 +17034,6 @@ Stream Events A hard spend ceiling. The session stops issuing new model requests once the tracked list cost reaches `max_list_cost`. -- `class BetaManagedAgentsStreamSessionEvents: union` - - Server-sent event in the session stream. - #### Example ```csharp @@ -25297,10 +25293,6 @@ Stream Session Thread Events A hard spend ceiling. The session stops issuing new model requests once the tracked list cost reaches `max_list_cost`. -- `class BetaManagedAgentsStreamSessionThreadEvents: union` - - Server-sent event in a single thread's stream. - #### Example ```csharp diff --git a/content/en/api/csharp/beta/sessions/events.md b/content/en/api/csharp/beta/sessions/events.md index ff63df9a4..ff5ff2dfe 100644 --- a/content/en/api/csharp/beta/sessions/events.md +++ b/content/en/api/csharp/beta/sessions/events.md @@ -5581,10 +5581,6 @@ Stream Events A hard spend ceiling. The session stops issuing new model requests once the tracked list cost reaches `max_list_cost`. -- `class BetaManagedAgentsStreamSessionEvents: union` - - Server-sent event in the session stream. - ### Example ```csharp diff --git a/content/en/api/csharp/beta/sessions/events/stream.md b/content/en/api/csharp/beta/sessions/events/stream.md index f54d51160..63924d9e6 100644 --- a/content/en/api/csharp/beta/sessions/events/stream.md +++ b/content/en/api/csharp/beta/sessions/events/stream.md @@ -2290,10 +2290,6 @@ Stream Events A hard spend ceiling. The session stops issuing new model requests once the tracked list cost reaches `max_list_cost`. -- `class BetaManagedAgentsStreamSessionEvents: union` - - Server-sent event in the session stream. - ## Example ```csharp diff --git a/content/en/api/csharp/beta/sessions/threads.md b/content/en/api/csharp/beta/sessions/threads.md index 6421b183c..8337e81a5 100644 --- a/content/en/api/csharp/beta/sessions/threads.md +++ b/content/en/api/csharp/beta/sessions/threads.md @@ -10040,10 +10040,6 @@ Stream Session Thread Events A hard spend ceiling. The session stops issuing new model requests once the tracked list cost reaches `max_list_cost`. -- `class BetaManagedAgentsStreamSessionThreadEvents: union` - - Server-sent event in a single thread's stream. - #### Example ```csharp diff --git a/content/en/api/csharp/beta/sessions/threads/events.md b/content/en/api/csharp/beta/sessions/threads/events.md index 35dd0c3b2..abf32e517 100644 --- a/content/en/api/csharp/beta/sessions/threads/events.md +++ b/content/en/api/csharp/beta/sessions/threads/events.md @@ -4579,10 +4579,6 @@ Stream Session Thread Events A hard spend ceiling. The session stops issuing new model requests once the tracked list cost reaches `max_list_cost`. -- `class BetaManagedAgentsStreamSessionThreadEvents: union` - - Server-sent event in a single thread's stream. - ### Example ```csharp diff --git a/content/en/api/csharp/beta/sessions/threads/events/stream.md b/content/en/api/csharp/beta/sessions/threads/events/stream.md index 5bd0fd559..5731929a9 100644 --- a/content/en/api/csharp/beta/sessions/threads/events/stream.md +++ b/content/en/api/csharp/beta/sessions/threads/events/stream.md @@ -2294,10 +2294,6 @@ Stream Session Thread Events A hard spend ceiling. The session stops issuing new model requests once the tracked list cost reaches `max_list_cost`. -- `class BetaManagedAgentsStreamSessionThreadEvents: union` - - Server-sent event in a single thread's stream. - ## Example ```csharp diff --git a/content/en/api/csharp/completions.md b/content/en/api/csharp/completions.md index a4193ecd6..472a83cae 100644 --- a/content/en/api/csharp/completions.md +++ b/content/en/api/csharp/completions.md @@ -397,8 +397,6 @@ Future models and features will not be compatible with Text Completions. See our default: completion -- `Completion object` - ### Example ```bash diff --git a/content/en/api/csharp/completions/create.md b/content/en/api/csharp/completions/create.md index 679db56b1..9d202a7a2 100644 --- a/content/en/api/csharp/completions/create.md +++ b/content/en/api/csharp/completions/create.md @@ -395,8 +395,6 @@ Future models and features will not be compatible with Text Completions. See our default: completion -- `Completion object` - ## Example ```bash diff --git a/content/en/api/go/beta.md b/content/en/api/go/beta.md index ead6b7da4..c816cc99b 100644 --- a/content/en/api/go/beta.md +++ b/content/en/api/go/beta.md @@ -40095,10 +40095,6 @@ Stream Events A hard spend ceiling. The session stops issuing new model requests once the tracked list cost reaches `max_list_cost`. -- `type BetaManagedAgentsStreamSessionEventsUnion interface{…}` - - Server-sent event in the session stream. - #### Example ```go @@ -48569,10 +48565,6 @@ Stream Session Thread Events A hard spend ceiling. The session stops issuing new model requests once the tracked list cost reaches `max_list_cost`. -- `type BetaManagedAgentsStreamSessionThreadEventsUnion interface{…}` - - Server-sent event in a single thread's stream. - #### Example ```go diff --git a/content/en/api/go/beta/sessions.md b/content/en/api/go/beta/sessions.md index d75c489f0..5d1648136 100644 --- a/content/en/api/go/beta/sessions.md +++ b/content/en/api/go/beta/sessions.md @@ -17152,10 +17152,6 @@ Stream Events A hard spend ceiling. The session stops issuing new model requests once the tracked list cost reaches `max_list_cost`. -- `type BetaManagedAgentsStreamSessionEventsUnion interface{…}` - - Server-sent event in the session stream. - #### Example ```go @@ -25626,10 +25622,6 @@ Stream Session Thread Events A hard spend ceiling. The session stops issuing new model requests once the tracked list cost reaches `max_list_cost`. -- `type BetaManagedAgentsStreamSessionThreadEventsUnion interface{…}` - - Server-sent event in a single thread's stream. - #### Example ```go diff --git a/content/en/api/go/beta/sessions/events.md b/content/en/api/go/beta/sessions/events.md index 80cfb7500..addeddbb9 100644 --- a/content/en/api/go/beta/sessions/events.md +++ b/content/en/api/go/beta/sessions/events.md @@ -5630,10 +5630,6 @@ Stream Events A hard spend ceiling. The session stops issuing new model requests once the tracked list cost reaches `max_list_cost`. -- `type BetaManagedAgentsStreamSessionEventsUnion interface{…}` - - Server-sent event in the session stream. - ### Example ```go diff --git a/content/en/api/go/beta/sessions/events/stream.md b/content/en/api/go/beta/sessions/events/stream.md index 36bcb68ad..47bdd2013 100644 --- a/content/en/api/go/beta/sessions/events/stream.md +++ b/content/en/api/go/beta/sessions/events/stream.md @@ -2300,10 +2300,6 @@ Stream Events A hard spend ceiling. The session stops issuing new model requests once the tracked list cost reaches `max_list_cost`. -- `type BetaManagedAgentsStreamSessionEventsUnion interface{…}` - - Server-sent event in the session stream. - ## Example ```go diff --git a/content/en/api/go/beta/sessions/threads.md b/content/en/api/go/beta/sessions/threads.md index f90777029..1215bef16 100644 --- a/content/en/api/go/beta/sessions/threads.md +++ b/content/en/api/go/beta/sessions/threads.md @@ -10169,10 +10169,6 @@ Stream Session Thread Events A hard spend ceiling. The session stops issuing new model requests once the tracked list cost reaches `max_list_cost`. -- `type BetaManagedAgentsStreamSessionThreadEventsUnion interface{…}` - - Server-sent event in a single thread's stream. - #### Example ```go diff --git a/content/en/api/go/beta/sessions/threads/events.md b/content/en/api/go/beta/sessions/threads/events.md index e08d3f001..b58bf5c72 100644 --- a/content/en/api/go/beta/sessions/threads/events.md +++ b/content/en/api/go/beta/sessions/threads/events.md @@ -4614,10 +4614,6 @@ Stream Session Thread Events A hard spend ceiling. The session stops issuing new model requests once the tracked list cost reaches `max_list_cost`. -- `type BetaManagedAgentsStreamSessionThreadEventsUnion interface{…}` - - Server-sent event in a single thread's stream. - ### Example ```go diff --git a/content/en/api/go/beta/sessions/threads/events/stream.md b/content/en/api/go/beta/sessions/threads/events/stream.md index 3ad9a3578..016c57784 100644 --- a/content/en/api/go/beta/sessions/threads/events/stream.md +++ b/content/en/api/go/beta/sessions/threads/events/stream.md @@ -2304,10 +2304,6 @@ Stream Session Thread Events A hard spend ceiling. The session stops issuing new model requests once the tracked list cost reaches `max_list_cost`. -- `type BetaManagedAgentsStreamSessionThreadEventsUnion interface{…}` - - Server-sent event in a single thread's stream. - ## Example ```go diff --git a/content/en/api/go/completions.md b/content/en/api/go/completions.md index bab2df91a..056224a5e 100644 --- a/content/en/api/go/completions.md +++ b/content/en/api/go/completions.md @@ -309,8 +309,6 @@ Future models and features will not be compatible with Text Completions. See our default: completion -- `type Completion struct{…}` - ### Example ```go diff --git a/content/en/api/go/completions/create.md b/content/en/api/go/completions/create.md index bb49a022b..ebe351dc3 100644 --- a/content/en/api/go/completions/create.md +++ b/content/en/api/go/completions/create.md @@ -307,8 +307,6 @@ Future models and features will not be compatible with Text Completions. See our default: completion -- `type Completion struct{…}` - ## Example ```go diff --git a/content/en/api/java/beta.md b/content/en/api/java/beta.md index 61e5ac12b..a6ac37f91 100644 --- a/content/en/api/java/beta.md +++ b/content/en/api/java/beta.md @@ -39003,10 +39003,6 @@ Stream Events A hard spend ceiling. The session stops issuing new model requests once the tracked list cost reaches `max_list_cost`. -- `class BetaManagedAgentsStreamSessionEvents: union` - - Server-sent event in the session stream. - #### Example ```java @@ -47316,10 +47312,6 @@ Stream Session Thread Events A hard spend ceiling. The session stops issuing new model requests once the tracked list cost reaches `max_list_cost`. -- `class BetaManagedAgentsStreamSessionThreadEvents: union` - - Server-sent event in a single thread's stream. - #### Example ```java diff --git a/content/en/api/java/beta/sessions.md b/content/en/api/java/beta/sessions.md index a73af78cf..e9ae3780d 100644 --- a/content/en/api/java/beta/sessions.md +++ b/content/en/api/java/beta/sessions.md @@ -16969,10 +16969,6 @@ Stream Events A hard spend ceiling. The session stops issuing new model requests once the tracked list cost reaches `max_list_cost`. -- `class BetaManagedAgentsStreamSessionEvents: union` - - Server-sent event in the session stream. - #### Example ```java @@ -25282,10 +25278,6 @@ Stream Session Thread Events A hard spend ceiling. The session stops issuing new model requests once the tracked list cost reaches `max_list_cost`. -- `class BetaManagedAgentsStreamSessionThreadEvents: union` - - Server-sent event in a single thread's stream. - #### Example ```java diff --git a/content/en/api/java/beta/sessions/events.md b/content/en/api/java/beta/sessions/events.md index 01bffa7e9..50d43b65f 100644 --- a/content/en/api/java/beta/sessions/events.md +++ b/content/en/api/java/beta/sessions/events.md @@ -5584,10 +5584,6 @@ Stream Events A hard spend ceiling. The session stops issuing new model requests once the tracked list cost reaches `max_list_cost`. -- `class BetaManagedAgentsStreamSessionEvents: union` - - Server-sent event in the session stream. - ### Example ```java diff --git a/content/en/api/java/beta/sessions/events/stream.md b/content/en/api/java/beta/sessions/events/stream.md index 2f9bb47fd..ee2d64c43 100644 --- a/content/en/api/java/beta/sessions/events/stream.md +++ b/content/en/api/java/beta/sessions/events/stream.md @@ -2288,10 +2288,6 @@ Stream Events A hard spend ceiling. The session stops issuing new model requests once the tracked list cost reaches `max_list_cost`. -- `class BetaManagedAgentsStreamSessionEvents: union` - - Server-sent event in the session stream. - ## Example ```java diff --git a/content/en/api/java/beta/sessions/threads.md b/content/en/api/java/beta/sessions/threads.md index 811b66774..ece185f60 100644 --- a/content/en/api/java/beta/sessions/threads.md +++ b/content/en/api/java/beta/sessions/threads.md @@ -10059,10 +10059,6 @@ Stream Session Thread Events A hard spend ceiling. The session stops issuing new model requests once the tracked list cost reaches `max_list_cost`. -- `class BetaManagedAgentsStreamSessionThreadEvents: union` - - Server-sent event in a single thread's stream. - #### Example ```java diff --git a/content/en/api/java/beta/sessions/threads/events.md b/content/en/api/java/beta/sessions/threads/events.md index 292abfcdd..ad0740e45 100644 --- a/content/en/api/java/beta/sessions/threads/events.md +++ b/content/en/api/java/beta/sessions/threads/events.md @@ -4580,10 +4580,6 @@ Stream Session Thread Events A hard spend ceiling. The session stops issuing new model requests once the tracked list cost reaches `max_list_cost`. -- `class BetaManagedAgentsStreamSessionThreadEvents: union` - - Server-sent event in a single thread's stream. - ### Example ```java diff --git a/content/en/api/java/beta/sessions/threads/events/stream.md b/content/en/api/java/beta/sessions/threads/events/stream.md index f5adc6cac..585532b42 100644 --- a/content/en/api/java/beta/sessions/threads/events/stream.md +++ b/content/en/api/java/beta/sessions/threads/events/stream.md @@ -2290,10 +2290,6 @@ Stream Session Thread Events A hard spend ceiling. The session stops issuing new model requests once the tracked list cost reaches `max_list_cost`. -- `class BetaManagedAgentsStreamSessionThreadEvents: union` - - Server-sent event in a single thread's stream. - ## Example ```java diff --git a/content/en/api/java/completions.md b/content/en/api/java/completions.md index a2d0ef240..2abaddd9a 100644 --- a/content/en/api/java/completions.md +++ b/content/en/api/java/completions.md @@ -295,8 +295,6 @@ Future models and features will not be compatible with Text Completions. See our For Text Completions, this is always `"completion"`. -- `class Completion:` - ### Example ```java diff --git a/content/en/api/java/completions/create.md b/content/en/api/java/completions/create.md index 62fb0e77a..0b6bc2b83 100644 --- a/content/en/api/java/completions/create.md +++ b/content/en/api/java/completions/create.md @@ -293,8 +293,6 @@ Future models and features will not be compatible with Text Completions. See our For Text Completions, this is always `"completion"`. -- `class Completion:` - ## Example ```java diff --git a/content/en/api/php/beta.md b/content/en/api/php/beta.md index c565f04f2..9b48231ad 100644 --- a/content/en/api/php/beta.md +++ b/content/en/api/php/beta.md @@ -8493,8 +8493,6 @@ Stream Events A hard spend ceiling. The session stops issuing new model requests once the tracked list cost reaches `max_list_cost`. -- `ManagedAgentsStreamSessionEvents` - #### Example ```php @@ -11159,8 +11157,6 @@ Stream Session Thread Events A hard spend ceiling. The session stops issuing new model requests once the tracked list cost reaches `max_list_cost`. -- `ManagedAgentsStreamSessionThreadEvents` - #### Example ```php diff --git a/content/en/api/php/beta/sessions.md b/content/en/api/php/beta/sessions.md index aec437d0f..c659b438c 100644 --- a/content/en/api/php/beta/sessions.md +++ b/content/en/api/php/beta/sessions.md @@ -3938,8 +3938,6 @@ Stream Events A hard spend ceiling. The session stops issuing new model requests once the tracked list cost reaches `max_list_cost`. -- `ManagedAgentsStreamSessionEvents` - #### Example ```php @@ -6604,8 +6602,6 @@ Stream Session Thread Events A hard spend ceiling. The session stops issuing new model requests once the tracked list cost reaches `max_list_cost`. -- `ManagedAgentsStreamSessionThreadEvents` - #### Example ```php diff --git a/content/en/api/php/beta/sessions/events.md b/content/en/api/php/beta/sessions/events.md index 64d36e531..f98916bfa 100644 --- a/content/en/api/php/beta/sessions/events.md +++ b/content/en/api/php/beta/sessions/events.md @@ -1672,8 +1672,6 @@ Stream Events A hard spend ceiling. The session stops issuing new model requests once the tracked list cost reaches `max_list_cost`. -- `ManagedAgentsStreamSessionEvents` - ### Example ```php diff --git a/content/en/api/php/beta/sessions/events/stream.md b/content/en/api/php/beta/sessions/events/stream.md index aea104a5f..9b5bcadc7 100644 --- a/content/en/api/php/beta/sessions/events/stream.md +++ b/content/en/api/php/beta/sessions/events/stream.md @@ -766,8 +766,6 @@ Stream Events A hard spend ceiling. The session stops issuing new model requests once the tracked list cost reaches `max_list_cost`. -- `ManagedAgentsStreamSessionEvents` - ## Example ```php diff --git a/content/en/api/php/beta/sessions/threads.md b/content/en/api/php/beta/sessions/threads.md index 66613aede..9fe18c0e0 100644 --- a/content/en/api/php/beta/sessions/threads.md +++ b/content/en/api/php/beta/sessions/threads.md @@ -2948,8 +2948,6 @@ Stream Session Thread Events A hard spend ceiling. The session stops issuing new model requests once the tracked list cost reaches `max_list_cost`. -- `ManagedAgentsStreamSessionThreadEvents` - #### Example ```php diff --git a/content/en/api/php/beta/sessions/threads/events.md b/content/en/api/php/beta/sessions/threads/events.md index 393a76cec..8bb770b1e 100644 --- a/content/en/api/php/beta/sessions/threads/events.md +++ b/content/en/api/php/beta/sessions/threads/events.md @@ -1565,8 +1565,6 @@ Stream Session Thread Events A hard spend ceiling. The session stops issuing new model requests once the tracked list cost reaches `max_list_cost`. -- `ManagedAgentsStreamSessionThreadEvents` - ### Example ```php diff --git a/content/en/api/php/beta/sessions/threads/events/stream.md b/content/en/api/php/beta/sessions/threads/events/stream.md index 3cc2db7cd..1d30aecc4 100644 --- a/content/en/api/php/beta/sessions/threads/events/stream.md +++ b/content/en/api/php/beta/sessions/threads/events/stream.md @@ -768,8 +768,6 @@ Stream Session Thread Events A hard spend ceiling. The session stops issuing new model requests once the tracked list cost reaches `max_list_cost`. -- `ManagedAgentsStreamSessionThreadEvents` - ## Example ```php diff --git a/content/en/api/php/completions.md b/content/en/api/php/completions.md index a4193ecd6..472a83cae 100644 --- a/content/en/api/php/completions.md +++ b/content/en/api/php/completions.md @@ -397,8 +397,6 @@ Future models and features will not be compatible with Text Completions. See our default: completion -- `Completion object` - ### Example ```bash diff --git a/content/en/api/php/completions/create.md b/content/en/api/php/completions/create.md index 679db56b1..9d202a7a2 100644 --- a/content/en/api/php/completions/create.md +++ b/content/en/api/php/completions/create.md @@ -395,8 +395,6 @@ Future models and features will not be compatible with Text Completions. See our default: completion -- `Completion object` - ## Example ```bash diff --git a/content/en/api/python/beta.md b/content/en/api/python/beta.md index acf1aba0f..b821350f8 100644 --- a/content/en/api/python/beta.md +++ b/content/en/api/python/beta.md @@ -41001,10 +41001,6 @@ Stream Events A hard spend ceiling. The session stops issuing new model requests once the tracked list cost reaches `max_list_cost`. -- `BetaManagedAgentsStreamSessionEvents` - - Server-sent event in the session stream. - #### Example ```python @@ -49397,10 +49393,6 @@ Stream Session Thread Events A hard spend ceiling. The session stops issuing new model requests once the tracked list cost reaches `max_list_cost`. -- `BetaManagedAgentsStreamSessionThreadEvents` - - Server-sent event in a single thread's stream. - #### Example ```python diff --git a/content/en/api/python/beta/sessions.md b/content/en/api/python/beta/sessions.md index 2196aaf6d..414a475a8 100644 --- a/content/en/api/python/beta/sessions.md +++ b/content/en/api/python/beta/sessions.md @@ -17720,10 +17720,6 @@ Stream Events A hard spend ceiling. The session stops issuing new model requests once the tracked list cost reaches `max_list_cost`. -- `BetaManagedAgentsStreamSessionEvents` - - Server-sent event in the session stream. - #### Example ```python @@ -26116,10 +26112,6 @@ Stream Session Thread Events A hard spend ceiling. The session stops issuing new model requests once the tracked list cost reaches `max_list_cost`. -- `BetaManagedAgentsStreamSessionThreadEvents` - - Server-sent event in a single thread's stream. - #### Example ```python diff --git a/content/en/api/python/beta/sessions/events.md b/content/en/api/python/beta/sessions/events.md index 4361a77b1..291e575d5 100644 --- a/content/en/api/python/beta/sessions/events.md +++ b/content/en/api/python/beta/sessions/events.md @@ -5630,10 +5630,6 @@ Stream Events A hard spend ceiling. The session stops issuing new model requests once the tracked list cost reaches `max_list_cost`. -- `BetaManagedAgentsStreamSessionEvents` - - Server-sent event in the session stream. - ### Example ```python diff --git a/content/en/api/python/beta/sessions/events/stream.md b/content/en/api/python/beta/sessions/events/stream.md index d6d4efdc5..38a5b824c 100644 --- a/content/en/api/python/beta/sessions/events/stream.md +++ b/content/en/api/python/beta/sessions/events/stream.md @@ -2313,10 +2313,6 @@ Stream Events A hard spend ceiling. The session stops issuing new model requests once the tracked list cost reaches `max_list_cost`. -- `BetaManagedAgentsStreamSessionEvents` - - Server-sent event in the session stream. - ## Example ```python diff --git a/content/en/api/python/beta/sessions/threads.md b/content/en/api/python/beta/sessions/threads.md index c10dab636..d64bb5340 100644 --- a/content/en/api/python/beta/sessions/threads.md +++ b/content/en/api/python/beta/sessions/threads.md @@ -10207,10 +10207,6 @@ Stream Session Thread Events A hard spend ceiling. The session stops issuing new model requests once the tracked list cost reaches `max_list_cost`. -- `BetaManagedAgentsStreamSessionThreadEvents` - - Server-sent event in a single thread's stream. - #### Example ```python diff --git a/content/en/api/python/beta/sessions/threads/events.md b/content/en/api/python/beta/sessions/threads/events.md index b44ce92fa..8bc7facff 100644 --- a/content/en/api/python/beta/sessions/threads/events.md +++ b/content/en/api/python/beta/sessions/threads/events.md @@ -4624,10 +4624,6 @@ Stream Session Thread Events A hard spend ceiling. The session stops issuing new model requests once the tracked list cost reaches `max_list_cost`. -- `BetaManagedAgentsStreamSessionThreadEvents` - - Server-sent event in a single thread's stream. - ### Example ```python diff --git a/content/en/api/python/beta/sessions/threads/events/stream.md b/content/en/api/python/beta/sessions/threads/events/stream.md index e0087c0b1..c41a0a17c 100644 --- a/content/en/api/python/beta/sessions/threads/events/stream.md +++ b/content/en/api/python/beta/sessions/threads/events/stream.md @@ -2315,10 +2315,6 @@ Stream Session Thread Events A hard spend ceiling. The session stops issuing new model requests once the tracked list cost reaches `max_list_cost`. -- `BetaManagedAgentsStreamSessionThreadEvents` - - Server-sent event in a single thread's stream. - ## Example ```python diff --git a/content/en/api/python/completions.md b/content/en/api/python/completions.md index a4193ecd6..472a83cae 100644 --- a/content/en/api/python/completions.md +++ b/content/en/api/python/completions.md @@ -397,8 +397,6 @@ Future models and features will not be compatible with Text Completions. See our default: completion -- `Completion object` - ### Example ```bash diff --git a/content/en/api/python/completions/create.md b/content/en/api/python/completions/create.md index 679db56b1..9d202a7a2 100644 --- a/content/en/api/python/completions/create.md +++ b/content/en/api/python/completions/create.md @@ -395,8 +395,6 @@ Future models and features will not be compatible with Text Completions. See our default: completion -- `Completion object` - ## Example ```bash diff --git a/content/en/api/ruby/beta.md b/content/en/api/ruby/beta.md index 65b54b6e9..66c0704b3 100644 --- a/content/en/api/ruby/beta.md +++ b/content/en/api/ruby/beta.md @@ -39926,10 +39926,6 @@ Stream Events A hard spend ceiling. The session stops issuing new model requests once the tracked list cost reaches `max_list_cost`. -- `BetaManagedAgentsStreamSessionEvents = BetaManagedAgentsUserMessageEvent | BetaManagedAgentsUserInterruptEvent | BetaManagedAgentsUserToolConfirmationEvent | 34 more` - - Server-sent event in the session stream. - #### Example ```ruby @@ -48208,10 +48204,6 @@ Stream Session Thread Events A hard spend ceiling. The session stops issuing new model requests once the tracked list cost reaches `max_list_cost`. -- `BetaManagedAgentsStreamSessionThreadEvents = BetaManagedAgentsUserMessageEvent | BetaManagedAgentsUserInterruptEvent | BetaManagedAgentsUserToolConfirmationEvent | 34 more` - - Server-sent event in a single thread's stream. - #### Example ```ruby diff --git a/content/en/api/ruby/beta/sessions.md b/content/en/api/ruby/beta/sessions.md index d0325121b..1e2055c30 100644 --- a/content/en/api/ruby/beta/sessions.md +++ b/content/en/api/ruby/beta/sessions.md @@ -17441,10 +17441,6 @@ Stream Events A hard spend ceiling. The session stops issuing new model requests once the tracked list cost reaches `max_list_cost`. -- `BetaManagedAgentsStreamSessionEvents = BetaManagedAgentsUserMessageEvent | BetaManagedAgentsUserInterruptEvent | BetaManagedAgentsUserToolConfirmationEvent | 34 more` - - Server-sent event in the session stream. - #### Example ```ruby @@ -25723,10 +25719,6 @@ Stream Session Thread Events A hard spend ceiling. The session stops issuing new model requests once the tracked list cost reaches `max_list_cost`. -- `BetaManagedAgentsStreamSessionThreadEvents = BetaManagedAgentsUserMessageEvent | BetaManagedAgentsUserInterruptEvent | BetaManagedAgentsUserToolConfirmationEvent | 34 more` - - Server-sent event in a single thread's stream. - #### Example ```ruby diff --git a/content/en/api/ruby/beta/sessions/events.md b/content/en/api/ruby/beta/sessions/events.md index c9e633212..ce7df205e 100644 --- a/content/en/api/ruby/beta/sessions/events.md +++ b/content/en/api/ruby/beta/sessions/events.md @@ -5581,10 +5581,6 @@ Stream Events A hard spend ceiling. The session stops issuing new model requests once the tracked list cost reaches `max_list_cost`. -- `BetaManagedAgentsStreamSessionEvents = BetaManagedAgentsUserMessageEvent | BetaManagedAgentsUserInterruptEvent | BetaManagedAgentsUserToolConfirmationEvent | 34 more` - - Server-sent event in the session stream. - ### Example ```ruby diff --git a/content/en/api/ruby/beta/sessions/events/stream.md b/content/en/api/ruby/beta/sessions/events/stream.md index 8ca741474..e139d3200 100644 --- a/content/en/api/ruby/beta/sessions/events/stream.md +++ b/content/en/api/ruby/beta/sessions/events/stream.md @@ -2298,10 +2298,6 @@ Stream Events A hard spend ceiling. The session stops issuing new model requests once the tracked list cost reaches `max_list_cost`. -- `BetaManagedAgentsStreamSessionEvents = BetaManagedAgentsUserMessageEvent | BetaManagedAgentsUserInterruptEvent | BetaManagedAgentsUserToolConfirmationEvent | 34 more` - - Server-sent event in the session stream. - ## Example ```ruby diff --git a/content/en/api/ruby/beta/sessions/threads.md b/content/en/api/ruby/beta/sessions/threads.md index fa9addc38..7610873c3 100644 --- a/content/en/api/ruby/beta/sessions/threads.md +++ b/content/en/api/ruby/beta/sessions/threads.md @@ -10086,10 +10086,6 @@ Stream Session Thread Events A hard spend ceiling. The session stops issuing new model requests once the tracked list cost reaches `max_list_cost`. -- `BetaManagedAgentsStreamSessionThreadEvents = BetaManagedAgentsUserMessageEvent | BetaManagedAgentsUserInterruptEvent | BetaManagedAgentsUserToolConfirmationEvent | 34 more` - - Server-sent event in a single thread's stream. - #### Example ```ruby diff --git a/content/en/api/ruby/beta/sessions/threads/events.md b/content/en/api/ruby/beta/sessions/threads/events.md index 729486922..e313778fb 100644 --- a/content/en/api/ruby/beta/sessions/threads/events.md +++ b/content/en/api/ruby/beta/sessions/threads/events.md @@ -4590,10 +4590,6 @@ Stream Session Thread Events A hard spend ceiling. The session stops issuing new model requests once the tracked list cost reaches `max_list_cost`. -- `BetaManagedAgentsStreamSessionThreadEvents = BetaManagedAgentsUserMessageEvent | BetaManagedAgentsUserInterruptEvent | BetaManagedAgentsUserToolConfirmationEvent | 34 more` - - Server-sent event in a single thread's stream. - ### Example ```ruby diff --git a/content/en/api/ruby/beta/sessions/threads/events/stream.md b/content/en/api/ruby/beta/sessions/threads/events/stream.md index d77ea5dce..0968e85fa 100644 --- a/content/en/api/ruby/beta/sessions/threads/events/stream.md +++ b/content/en/api/ruby/beta/sessions/threads/events/stream.md @@ -2300,10 +2300,6 @@ Stream Session Thread Events A hard spend ceiling. The session stops issuing new model requests once the tracked list cost reaches `max_list_cost`. -- `BetaManagedAgentsStreamSessionThreadEvents = BetaManagedAgentsUserMessageEvent | BetaManagedAgentsUserInterruptEvent | BetaManagedAgentsUserToolConfirmationEvent | 34 more` - - Server-sent event in a single thread's stream. - ## Example ```ruby diff --git a/content/en/api/ruby/completions.md b/content/en/api/ruby/completions.md index 8f8b31239..64206d0be 100644 --- a/content/en/api/ruby/completions.md +++ b/content/en/api/ruby/completions.md @@ -395,8 +395,6 @@ Future models and features will not be compatible with Text Completions. See our For Text Completions, this is always `"completion"`. -- `class Completion` - ### Example ```ruby diff --git a/content/en/api/ruby/completions/create.md b/content/en/api/ruby/completions/create.md index 630d1a939..6dbb25114 100644 --- a/content/en/api/ruby/completions/create.md +++ b/content/en/api/ruby/completions/create.md @@ -393,8 +393,6 @@ Future models and features will not be compatible with Text Completions. See our For Text Completions, this is always `"completion"`. -- `class Completion` - ## Example ```ruby diff --git a/content/en/api/typescript/beta.md b/content/en/api/typescript/beta.md index 7bc7e7fcb..c7fd109c7 100644 --- a/content/en/api/typescript/beta.md +++ b/content/en/api/typescript/beta.md @@ -40651,10 +40651,6 @@ Stream Events A hard spend ceiling. The session stops issuing new model requests once the tracked list cost reaches `max_list_cost`. -- `BetaManagedAgentsStreamSessionEvents = BetaManagedAgentsUserMessageEvent | BetaManagedAgentsUserInterruptEvent | BetaManagedAgentsUserToolConfirmationEvent | 34 more` - - Server-sent event in the session stream. - #### Example ```typescript @@ -48976,10 +48972,6 @@ Stream Session Thread Events A hard spend ceiling. The session stops issuing new model requests once the tracked list cost reaches `max_list_cost`. -- `BetaManagedAgentsStreamSessionThreadEvents = BetaManagedAgentsUserMessageEvent | BetaManagedAgentsUserInterruptEvent | BetaManagedAgentsUserToolConfirmationEvent | 34 more` - - Server-sent event in a single thread's stream. - #### Example ```typescript diff --git a/content/en/api/typescript/beta/sessions.md b/content/en/api/typescript/beta/sessions.md index 9817339d0..f217d63ab 100644 --- a/content/en/api/typescript/beta/sessions.md +++ b/content/en/api/typescript/beta/sessions.md @@ -17435,10 +17435,6 @@ Stream Events A hard spend ceiling. The session stops issuing new model requests once the tracked list cost reaches `max_list_cost`. -- `BetaManagedAgentsStreamSessionEvents = BetaManagedAgentsUserMessageEvent | BetaManagedAgentsUserInterruptEvent | BetaManagedAgentsUserToolConfirmationEvent | 34 more` - - Server-sent event in the session stream. - #### Example ```typescript @@ -25760,10 +25756,6 @@ Stream Session Thread Events A hard spend ceiling. The session stops issuing new model requests once the tracked list cost reaches `max_list_cost`. -- `BetaManagedAgentsStreamSessionThreadEvents = BetaManagedAgentsUserMessageEvent | BetaManagedAgentsUserInterruptEvent | BetaManagedAgentsUserToolConfirmationEvent | 34 more` - - Server-sent event in a single thread's stream. - #### Example ```typescript diff --git a/content/en/api/typescript/beta/sessions/events.md b/content/en/api/typescript/beta/sessions/events.md index 0c941450b..7b685a2d1 100644 --- a/content/en/api/typescript/beta/sessions/events.md +++ b/content/en/api/typescript/beta/sessions/events.md @@ -5590,10 +5590,6 @@ Stream Events A hard spend ceiling. The session stops issuing new model requests once the tracked list cost reaches `max_list_cost`. -- `BetaManagedAgentsStreamSessionEvents = BetaManagedAgentsUserMessageEvent | BetaManagedAgentsUserInterruptEvent | BetaManagedAgentsUserToolConfirmationEvent | 34 more` - - Server-sent event in the session stream. - ### Example ```typescript diff --git a/content/en/api/typescript/beta/sessions/events/stream.md b/content/en/api/typescript/beta/sessions/events/stream.md index 9f9608862..cdfe3099b 100644 --- a/content/en/api/typescript/beta/sessions/events/stream.md +++ b/content/en/api/typescript/beta/sessions/events/stream.md @@ -2296,10 +2296,6 @@ Stream Events A hard spend ceiling. The session stops issuing new model requests once the tracked list cost reaches `max_list_cost`. -- `BetaManagedAgentsStreamSessionEvents = BetaManagedAgentsUserMessageEvent | BetaManagedAgentsUserInterruptEvent | BetaManagedAgentsUserToolConfirmationEvent | 34 more` - - Server-sent event in the session stream. - ## Example ```typescript diff --git a/content/en/api/typescript/beta/sessions/threads.md b/content/en/api/typescript/beta/sessions/threads.md index 46453f553..965a618d8 100644 --- a/content/en/api/typescript/beta/sessions/threads.md +++ b/content/en/api/typescript/beta/sessions/threads.md @@ -10088,10 +10088,6 @@ Stream Session Thread Events A hard spend ceiling. The session stops issuing new model requests once the tracked list cost reaches `max_list_cost`. -- `BetaManagedAgentsStreamSessionThreadEvents = BetaManagedAgentsUserMessageEvent | BetaManagedAgentsUserInterruptEvent | BetaManagedAgentsUserToolConfirmationEvent | 34 more` - - Server-sent event in a single thread's stream. - #### Example ```typescript diff --git a/content/en/api/typescript/beta/sessions/threads/events.md b/content/en/api/typescript/beta/sessions/threads/events.md index 96018cbb8..ccfed6c05 100644 --- a/content/en/api/typescript/beta/sessions/threads/events.md +++ b/content/en/api/typescript/beta/sessions/threads/events.md @@ -4593,10 +4593,6 @@ Stream Session Thread Events A hard spend ceiling. The session stops issuing new model requests once the tracked list cost reaches `max_list_cost`. -- `BetaManagedAgentsStreamSessionThreadEvents = BetaManagedAgentsUserMessageEvent | BetaManagedAgentsUserInterruptEvent | BetaManagedAgentsUserToolConfirmationEvent | 34 more` - - Server-sent event in a single thread's stream. - ### Example ```typescript diff --git a/content/en/api/typescript/beta/sessions/threads/events/stream.md b/content/en/api/typescript/beta/sessions/threads/events/stream.md index ac81968f1..dc5df24f7 100644 --- a/content/en/api/typescript/beta/sessions/threads/events/stream.md +++ b/content/en/api/typescript/beta/sessions/threads/events/stream.md @@ -2300,10 +2300,6 @@ Stream Session Thread Events A hard spend ceiling. The session stops issuing new model requests once the tracked list cost reaches `max_list_cost`. -- `BetaManagedAgentsStreamSessionThreadEvents = BetaManagedAgentsUserMessageEvent | BetaManagedAgentsUserInterruptEvent | BetaManagedAgentsUserToolConfirmationEvent | 34 more` - - Server-sent event in a single thread's stream. - ## Example ```typescript diff --git a/content/en/api/typescript/completions.md b/content/en/api/typescript/completions.md index d6045bd1d..12d072d71 100644 --- a/content/en/api/typescript/completions.md +++ b/content/en/api/typescript/completions.md @@ -409,8 +409,6 @@ Future models and features will not be compatible with Text Completions. See our default: completion -- `Completion` - ### Example ```typescript diff --git a/content/en/api/typescript/completions/create.md b/content/en/api/typescript/completions/create.md index c600116c4..881a4c67a 100644 --- a/content/en/api/typescript/completions/create.md +++ b/content/en/api/typescript/completions/create.md @@ -407,8 +407,6 @@ Future models and features will not be compatible with Text Completions. See our default: completion -- `Completion` - ## Example ```typescript diff --git a/content/en/claude_api_primer.md b/content/en/claude_api_primer.md index 5fd6c72ad..09814b96b 100644 --- a/content/en/claude_api_primer.md +++ b/content/en/claude_api_primer.md @@ -549,7 +549,7 @@ Client tools are specified in the `tools` top-level parameter of the API request | Parameter | Description | | -------------- | --------------------------------------------------------------------------------------------------- | -| `name` | The name of the tool. Must match the regex `^[a-zA-Z0-9_-]{1,64}$`. | +| `name` | The name of the tool. Must match the regex `^[a-zA-Z0-9_-]{1,128}$`. | | `description` | A detailed plaintext description of what the tool does, when it should be used, and how it behaves. | | `input_schema` | A [JSON Schema](https://json-schema.org/) object defining the expected parameters for the tool. | diff --git a/content/en/docs/claude-code/admin-setup.md b/content/en/docs/claude-code/admin-setup.md index ca03cb87f..cd2b2388f 100644 --- a/content/en/docs/claude-code/admin-setup.md +++ b/content/en/docs/claude-code/admin-setup.md @@ -102,11 +102,18 @@ Managed settings can lock down tools, sandbox execution, restrict MCP servers an | [Disable agent view](/docs/en/agent-view#how-background-sessions-are-hosted) | Turn off `claude agents`, `--bg`, `/background`, and the on-demand supervisor | `disableAgentView` | | [Configure the corporate launcher](/docs/en/corporate-launcher) | Prefix the [background-agent supervisor](/docs/en/agent-view#how-background-sessions-are-hosted), its workers, and the [other covered background processes](/docs/en/corporate-launcher#what-the-launcher-covers) with a required corporate launcher instead of turning agent view off | `processWrapper` | | [Model restrictions](/docs/en/model-config#restrict-model-selection) | `availableModels` filters which models appear in the picker. Adding `enforceAvailableModels` also constrains the auto-selected default model. See [surface coverage](/docs/en/model-config#surface-coverage) for how this setting reaches the CLI, web, and IDE | `availableModels`, `enforceAvailableModels` | +| [Effort cap](/docs/en/settings-reference#maxeffortlevel) | Cap the [effort level](/docs/en/model-config#adjust-effort-level) for every model or per model, on every provider | `maxEffortLevel` | | [Version floor](/docs/en/settings-reference#minimumversion) | Prevent auto-update from installing below an org-wide minimum | `minimumVersion` | | [Required version range](/docs/en/settings-reference#requiredminimumversion) | Refuse to start at all when the running version is outside an org-approved range. Stronger than `minimumVersion`, which only blocks downgrades | `requiredMinimumVersion`, `requiredMaximumVersion` | | [Telemetry opt-out](/docs/en/data-usage#telemetry-services) | Turn off Anthropic-bound usage metrics, error reports, and surveys on every device | `env` with `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC` set to `1`; the linked section lists the per-category variables | -Organizations whose members authenticate through claude.ai or the Anthropic API can also govern models without deploying settings: [organization model restrictions](/docs/en/model-config#organization-model-restrictions) disable individual models, an [organization default model](/docs/en/model-config#organization-default-model) sets which model new sessions start on, and [organization effort limits](/docs/en/model-config#organization-effort-limits) cap effort levels per role. All three controls require a Claude Enterprise plan. Model restrictions and effort limits are enforced server-side; the default model is a starting point that users can change, unless the organization enforces it. Enforcement is available to a limited set of organizations; ask your Anthropic account team about availability. None of these controls reach sessions on Amazon Bedrock, Google Cloud's Agent Platform, Microsoft Foundry, or [Claude Platform on AWS](/docs/en/claude-platform-on-aws); on those providers, use `availableModels` above for restrictions and the `model` key in managed settings for a default. +If your members sign in through claude.ai or the Anthropic API and you're on a Claude Enterprise plan, you can also govern models from your organization's admin settings without deploying anything: + +* [Organization model restrictions](/docs/en/model-config#organization-model-restrictions): disable individual models. Enforced server-side. +* [Organization default model](/docs/en/model-config#organization-default-model): set which model new sessions start on. Users can change it unless your organization enforces the default, which is available to a limited set of organizations; ask your Anthropic account team. +* [Organization effort limits](/docs/en/model-config#organization-effort-limits): cap effort levels per role. Enforced server-side. + +None of these controls reach sessions on Amazon Bedrock, Google Cloud's Agent Platform, Microsoft Foundry, or [Claude Platform on AWS](/docs/en/claude-platform-on-aws). On those providers, use managed settings instead: `availableModels` for restrictions, `model` for a default, and [`maxEffortLevel`](/docs/en/settings-reference#maxeffortlevel) for an effort cap. [Claude Code on the web](/docs/en/claude-code-on-the-web) has its own admin surface: on the Cloud environments page in admin settings, Owners create [organization-shared environments](/docs/en/cloud-environments#organization-shared-environments) that set the [network access level](/docs/en/cloud-environments#network-access), environment variables, and setup script for members' cloud sessions. Owners choose the organization's default environment separately, at [claude.ai/admin-settings/claude-code](https://claude.ai/admin-settings/claude-code). diff --git a/content/en/docs/claude-code/advisor.md b/content/en/docs/claude-code/advisor.md index f597d745d..8254ffb06 100644 --- a/content/en/docs/claude-code/advisor.md +++ b/content/en/docs/claude-code/advisor.md @@ -42,7 +42,13 @@ Run `/advisor` without arguments to open a picker listing the available advisor /advisor opus ``` -The command confirms with `Advisor set to` followed by the advisor model name. Your selection is saved to `advisorModel` in your user settings and persists across sessions. +The command confirms with `Advisor set to` followed by the advisor model name. Your selection is saved to `advisorModel` in your user settings and persists across sessions, except in the cases the [`advisorModel` entry](/docs/en/settings-reference#advisormodel) lists as applying to the current session only. + +The command also works where there is no terminal picker: in [non-interactive mode](/docs/en/headless) with `-p`, in the Agent SDK, in the desktop app, and over [Remote Control](/docs/en/remote-control). This requires Claude Code v2.1.260 or later. On those surfaces: + +* Run `/advisor` with no argument to print the current advisor model and the aliases it accepts. +* Run `/advisor` with a model, such as `/advisor opus`, to set it. +* Run `/advisor off` to turn it off. Claude Code doesn't invoke a saved advisor that your organization's [`availableModels`](/docs/en/model-config#restrict-model-selection) allowlist excludes. To use the advisor, pick an allowed model with `/advisor`. Claude Code still saves an advisor that your current main model doesn't support. That advisor activates after you switch to a [compatible main model](#choose-an-advisor-model) with [`/model`](/docs/en/model-config#setting-your-model). @@ -139,7 +145,12 @@ The advisor always receives the full conversation, and Claude controls the timin ## Cost -When Claude calls the advisor, the advisor model reads the conversation, so each call consumes tokens at the advisor model's rates in addition to your main model's usage. With API billing, you pay the advisor model's input and output rates for advisor tokens. On subscription plans, advisor usage counts toward your plan's usage limits, except that a Fable advisor bills to [usage credits](/docs/en/model-config#fable-and-usage-credits) on plans where Fable usage does. If your account requires the usage-credits consent, a Fable advisor bills nothing before you give it, because Claude Code [doesn't apply the selection](#fable-advisor-and-usage-credits) until then. +When Claude calls the advisor, the advisor model reads the conversation, so each call consumes tokens at the advisor model's rates in addition to your main model's usage. How those advisor tokens are billed depends on how you pay: + +* **API billing**: you pay the advisor model's input and output rates for advisor tokens +* **Subscription plans**: advisor usage counts toward your plan's usage limits, except that a Fable advisor bills to [usage credits](/docs/en/model-config#fable-and-usage-credits) on plans where Fable usage does + +If your account requires the usage-credits consent, a Fable advisor bills nothing before you give it, because Claude Code [doesn't apply the selection](#fable-advisor-and-usage-credits) until then. Claude calls the advisor at decision points rather than on every turn, so pairing a faster main model with a stronger advisor typically costs less than running the stronger model throughout. Advisor usage counts toward the session totals shown by [`/usage`](/docs/en/costs#track-your-costs). @@ -161,7 +172,7 @@ The advisor tool requires all of the following: ## Turn the advisor off -To stop using the advisor and clear your saved `advisorModel`, run `/advisor off` or choose **No advisor** in the `/advisor` picker: +To stop using the advisor, run `/advisor off` or choose **No advisor** in the `/advisor` picker: ``` /advisor off diff --git a/content/en/docs/claude-code/agent-sdk/agent-loop.md b/content/en/docs/claude-code/agent-sdk/agent-loop.md index ba4cb7293..6b7d0e2cc 100644 --- a/content/en/docs/claude-code/agent-sdk/agent-loop.md +++ b/content/en/docs/claude-code/agent-sdk/agent-loop.md @@ -21,7 +21,7 @@ Every agent session follows the same cycle: Diagram of the agent loop: your prompt enters the agentic loop, where Claude evaluates and either requests tool calls, whose results feed back into another evaluation, or returns the final answer 1. **Receive prompt.** Claude receives your prompt, along with the system prompt, tool definitions, and conversation history. The SDK yields a [`SystemMessage`](#message-types) with subtype `"init"` containing session metadata. -2. **Evaluate and respond.** Claude evaluates the current state and determines how to proceed. It may respond with text, request one or more tool calls, or both. The SDK yields an [`AssistantMessage`](#message-types) containing the text and any tool call requests. +2. **Evaluate and respond.** Claude evaluates the current state and determines how to proceed. It may respond with text, request one or more tool calls, or both. The SDK yields one or more [`AssistantMessage`](#message-types) objects, one for each content block, such as a text block or a tool call request. 3. **Execute tools.** The SDK runs each requested tool and collects the results. Each set of tool results feeds back to Claude for the next decision. You can use [hooks](/docs/en/agent-sdk/hooks) to intercept, modify, or block tool calls before they run. 4. **Repeat.** Steps 2 and 3 repeat as a cycle. Each full cycle is one turn. Claude continues calling tools and processing results until it produces a response with no tool calls. 5. **Return result.** The SDK yields a final [`AssistantMessage`](#message-types) with the text response (no tool calls), followed by a [`ResultMessage`](#message-types) with the final text, token usage, cost, and session ID. @@ -37,8 +37,8 @@ Consider what a full session might look like for the prompt "Fix the failing tes First, the SDK sends your prompt to Claude and yields a [`SystemMessage`](#message-types) with the session metadata. Then the loop begins: 1. **Turn 1:** Claude calls `Bash` to run `npm test`. The SDK yields an [`AssistantMessage`](#message-types) with the tool call, executes the command, then yields a [`UserMessage`](#message-types) with the output (three failures). -2. **Turn 2:** Claude calls `Read` on `auth.ts` and `auth.test.ts`. The SDK returns the file contents and yields an `AssistantMessage`. -3. **Turn 3:** Claude calls `Edit` to fix `auth.ts`, then calls `Bash` to re-run `npm test`. All three tests pass. The SDK yields an `AssistantMessage`. +2. **Turn 2:** Claude calls `Read` on `auth.ts` and `auth.test.ts`. The SDK yields an `AssistantMessage` for each call and returns the file contents. +3. **Turn 3:** Claude calls `Edit` to fix `auth.ts`, then calls `Bash` to re-run `npm test`. All three tests pass. The SDK yields an `AssistantMessage` for each call. 4. **Final turn:** Claude produces a text-only response with no tool calls: "Fixed the auth bug, all three tests pass now." The SDK yields a final `AssistantMessage` with this text, then a [`ResultMessage`](#message-types) with the same text plus cost and usage. That was four turns: three with tool calls, one final text-only response. @@ -59,7 +59,7 @@ As the loop runs, the SDK yields a stream of messages. Each message carries a ty * `"worker_shutting_down"`: the loop will end after the current turn because the host is exiting or Remote Control disconnected In TypeScript, each subtype other than `"init"` is its own type in the [`SDKMessage` union](/docs/en/agent-sdk/typescript#sdkmessage) rather than a subtype of `SDKSystemMessage`. -* **`AssistantMessage`:** emitted after each Claude response, including the final text-only one. Contains text content blocks and tool call blocks from that turn. +* **`AssistantMessage`:** emitted for each content block in Claude's responses, including the final text-only one. Each carries a single content block, such as text or a tool call, and the messages from one response share a message ID. * **`UserMessage`:** emitted after each tool execution with the tool result content sent back to Claude. Also emitted for any user inputs you stream mid-loop. * **`StreamEvent`:** only emitted when partial messages are enabled. Contains raw API streaming events (text deltas, tool input chunks). See [Stream responses](/docs/en/agent-sdk/streaming-output). * **`ResultMessage`:** marks the end of the agent loop. Contains the final text result, token usage, cost, and session ID. Check the `subtype` field to determine whether the task succeeded or hit a limit. A small number of trailing system events, such as `prompt_suggestion`, can arrive after it, so iterate the stream to completion rather than breaking on the result. See [Handle the result](#handle-the-result). @@ -83,14 +83,19 @@ How you check message types depends on the SDK: ```python Python theme={null} import asyncio - from claude_agent_sdk import query, AssistantMessage, ResultMessage + from claude_agent_sdk import query, AssistantMessage, ResultMessage, TextBlock, ToolUseBlock async def main(): try: async for message in query(prompt="Summarize this project"): if isinstance(message, AssistantMessage): - print(f"Turn completed: {len(message.content)} content blocks") + # Each AssistantMessage carries one content block + for block in message.content: + if isinstance(block, TextBlock): + print(f"Claude: {block.text}") + elif isinstance(block, ToolUseBlock): + print(f"Tool call: {block.name}") if isinstance(message, ResultMessage): if message.subtype == "success": print(message.result) @@ -112,7 +117,14 @@ How you check message types depends on the SDK: try { for await (const message of query({ prompt: "Summarize this project" })) { if (message.type === "assistant") { - console.log(`Turn completed: ${message.message.content.length} content blocks`); + // Each assistant message carries one content block + for (const block of message.message.content) { + if (block.type === "text") { + console.log(`Claude: ${block.text}`); + } else if (block.type === "tool_use") { + console.log(`Tool call: ${block.name}`); + } + } } if (message.type === "result") { if (message.subtype === "success") { diff --git a/content/en/docs/claude-code/agent-sdk/claude-code-features.md b/content/en/docs/claude-code/agent-sdk/claude-code-features.md index 09bfc963d..4ac1e33d9 100644 --- a/content/en/docs/claude-code/agent-sdk/claude-code-features.md +++ b/content/en/docs/claude-code/agent-sdk/claude-code-features.md @@ -87,13 +87,13 @@ The `cwd` option determines where the SDK looks for project-level inputs. Projec `settingSources` covers user, project, and local settings. A few inputs are read regardless of its value: -| Input | Behavior | To disable | -| :------------------------------------------------------------------------------------------------------------------------------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| Managed policy settings | Endpoint-managed policy, such as an MDM plist, registry policy, or managed settings file, loads from the host. [Server-managed settings](/docs/en/server-managed-settings) are fetched on an [eligible configuration](/docs/en/server-managed-settings#platform-availability) when the session authenticates with an organization OAuth login or a directly configured API key | Endpoint policy: remove the managed settings file, plist, or registry policy from the host. Server-managed settings: controlled by your org admin; cannot be disabled from the SDK | -| `~/.claude.json` global config | Always read | Relocate with `CLAUDE_CONFIG_DIR` in `env` | -| Auto memory at `~/.claude/projects//memory/` | Loaded into the system prompt at session start. The agent writes new memories there with the standard `Write` and `Edit` tools rather than a dedicated memory tool, so those tools must be enabled for the agent to save memories | Set `autoMemoryEnabled: false` in settings, or `CLAUDE_CODE_DISABLE_AUTO_MEMORY=1` in `env` | -| [claude.ai MCP connectors](/docs/en/mcp#use-mcp-servers-from-claude-ai) | Loaded when the session authenticates with your claude.ai login. Not loaded when `CLAUDE_CODE_OAUTH_TOKEN` holds a token from [`claude setup-token`](/docs/en/authentication#generate-a-long-lived-token), which can only make model requests. Passing `mcpServers: {}` does not suppress the connectors | Set `strictMcpConfig: true`, [`disableClaudeAiConnectors: true`](/docs/en/mcp#disable-claude-ai-connectors) in settings, or `ENABLE_CLAUDEAI_MCP_SERVERS=false` in `env` | -| [`sandbox.credentials`](/docs/en/sandboxing#protect-credentials) `deny` entries and file `mask` entries in `~/.claude/settings.json` | When the [command sandbox](/docs/en/sandboxing) runs, Claude Code applies the `deny` entries and keeps the `credentials.files` `mask` entries as restrictions even when `settingSources` excludes user settings. Claude Code uses these entries only to narrow what sandboxed commands can access | Remove the entries from `~/.claude/settings.json` | +| Input | Behavior | To disable | +| :------------------------------------------------------------------------------------------------------------------------------ | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| Managed policy settings | Endpoint-managed policy, such as an MDM plist, registry policy, or managed settings file, loads from the host. [Server-managed settings](/docs/en/server-managed-settings) are fetched on an [eligible configuration](/docs/en/server-managed-settings#platform-availability) when the session authenticates with a qualifying credential, such as an organization OAuth login, a directly configured API key, or a `user_oauth` [Anthropic profile](/docs/en/authentication#anthropic-profiles-and-federation-credentials) | Endpoint policy: remove the managed settings file, plist, or registry policy from the host. Server-managed settings: an [Owner](/docs/en/server-managed-settings#access-control) in your Claude organization controls them; you can't disable them from the SDK | +| `~/.claude.json` global config | Always read | Relocate with `CLAUDE_CONFIG_DIR` in `env` | +| Auto memory at `~/.claude/projects//memory/` | Loaded into the system prompt at session start. The agent writes new memories there with the standard `Write` and `Edit` tools rather than a dedicated memory tool, so those tools must be enabled for the agent to save memories | Set `autoMemoryEnabled: false` in settings, or `CLAUDE_CODE_DISABLE_AUTO_MEMORY=1` in `env` | +| [claude.ai MCP connectors](/docs/en/mcp#use-mcp-servers-from-claude-ai) | Loaded when the session authenticates with your claude.ai login. Not loaded when `CLAUDE_CODE_OAUTH_TOKEN` holds a token from [`claude setup-token`](/docs/en/authentication#generate-a-long-lived-token), which can only make model requests. Passing `mcpServers: {}` does not suppress the connectors | Set `strictMcpConfig: true`, [`disableClaudeAiConnectors: true`](/docs/en/mcp#disable-claude-ai-connectors) in settings, or `ENABLE_CLAUDEAI_MCP_SERVERS=false` in `env` | +| [`sandbox.credentials`](/docs/en/sandboxing#protect-credentials) `deny` entries and file `mask` entries in `~/.claude/settings.json` | When the [command sandbox](/docs/en/sandboxing) runs, Claude Code applies the `deny` entries and keeps the `credentials.files` `mask` entries as restrictions even when `settingSources` excludes user settings. Claude Code uses these entries only to narrow what sandboxed commands can access | Remove the entries from `~/.claude/settings.json` | Do not rely on default `query()` options for multi-tenant isolation. Because the inputs above are read regardless of `settingSources`, an SDK process can pick up host-level configuration and per-directory memory. For multi-tenant deployments, run each tenant in its own filesystem and set `settingSources: []` plus `CLAUDE_CODE_DISABLE_AUTO_MEMORY=1` in `env`. [Server-managed settings](/docs/en/server-managed-settings) are fetched when the process authenticates with an organization credential; filesystem isolation does not remove them. See [Secure deployment](/docs/en/agent-sdk/secure-deployment). diff --git a/content/en/docs/claude-code/agent-sdk/custom-tools.md b/content/en/docs/claude-code/agent-sdk/custom-tools.md index dc5384019..dbcf5e5cc 100644 --- a/content/en/docs/claude-code/agent-sdk/custom-tools.md +++ b/content/en/docs/claude-code/agent-sdk/custom-tools.md @@ -321,12 +321,12 @@ The [weather tool example](#weather-tool-example) registered a server and listed The `tools` option and the allowed/disallowed lists affect two layers: availability, which controls whether a tool appears in Claude's context, and permission, which controls whether a call is approved once Claude attempts it. `tools` and bare-name `disallowedTools` entries change availability. `allowedTools` and scoped `disallowedTools` rules change permission. If you name one of the [task-tracking tools](/docs/en/agent-sdk/todo-tracking#model-availability) in `allowedTools`, Claude Code also opts the session in. -| Option | Layer | Effect | -| :------------------------ | :----------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `tools: ["Read", "Grep"]` | Availability | Only the listed built-ins are in Claude's context. Unlisted built-ins are removed. MCP tools are unaffected. | -| `tools: []` | Availability | All built-ins are removed. Claude can only use your MCP tools. | -| allowed tools | Permission | Listed tools run without a permission prompt. Other unlisted tools remain available; calls go through the [permission flow](/docs/en/agent-sdk/permissions). | -| disallowed tools | Both | A bare tool name such as `"Bash"` removes the tool from Claude's context, the same as omitting it from `tools`. A scoped rule such as `"Bash(rm *)"` leaves the tool in context and denies only matching calls. | +| Option | Layer | Effect | +| :------------------------ | :----------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `tools: ["Read", "Grep"]` | Availability | Only the listed built-ins are in Claude's context. Unlisted built-ins are removed. MCP tools are unaffected. | +| `tools: []` | Availability | All built-ins are removed. Claude can only use your MCP tools. | +| allowed tools | Permission | Listed tools run without a permission prompt. Other unlisted tools remain available; calls go through the [permission flow](/docs/en/agent-sdk/permissions). | +| disallowed tools | Both | A bare tool name such as `"Bash"` removes the tool from Claude's context, the same as omitting it from `tools`. A scoped rule such as `"Bash(rm *)"` leaves the tool in context and denies only calls that match [as written](/docs/en/permissions#bash-rule-limits). | To remove a built-in entirely, omit it from `tools` or list its bare name in `disallowedTools` (Python: `disallowed_tools`); both keep the tool out of context so Claude never attempts it. A scoped `disallowedTools` rule blocks matching calls but leaves the tool visible, so Claude may waste a turn trying it. See [Configure permissions](/docs/en/agent-sdk/permissions) for the full evaluation order. diff --git a/content/en/docs/claude-code/agent-sdk/mcp.md b/content/en/docs/claude-code/agent-sdk/mcp.md index 26cffe0b8..421e0a0af 100644 --- a/content/en/docs/claude-code/agent-sdk/mcp.md +++ b/content/en/docs/claude-code/agent-sdk/mcp.md @@ -870,7 +870,9 @@ In TypeScript, you can set the tool-call limit for a single [SDK MCP server](#sd ### Tool output exceeds maximum allowed tokens -The SDK applies the same MCP output limit as Claude Code. When a tool result is larger than 25,000 tokens, the full output is saved to a file and the tool result is replaced with an error message that names the file path, so the agent can read the output back in portions. Raise the limit with the [`MAX_MCP_OUTPUT_TOKENS`](/docs/en/env-vars) environment variable. See [MCP output limits and warnings](/docs/en/mcp#mcp-output-limits-and-warnings) for the full behavior, including how a server can declare a higher per-tool limit with the `anthropic/maxResultSizeChars` annotation. +The SDK applies the same MCP output limit as Claude Code. When a tool result with no image content is larger than 25,000 tokens, Claude Code saves the output to a file and replaces the tool result with an error message that names the file path, so the agent can read the output back in portions. + +Raise the limit with the [`MAX_MCP_OUTPUT_TOKENS`](/docs/en/env-vars) environment variable. See [MCP output limits and warnings](/docs/en/mcp#mcp-output-limits-and-warnings) for the full behavior, including how a server can declare a higher per-tool limit with the `anthropic/maxResultSizeChars` annotation. ## Related resources diff --git a/content/en/docs/claude-code/agent-sdk/modifying-system-prompts.md b/content/en/docs/claude-code/agent-sdk/modifying-system-prompts.md index ffd965970..d128d9e5b 100644 --- a/content/en/docs/claude-code/agent-sdk/modifying-system-prompts.md +++ b/content/en/docs/claude-code/agent-sdk/modifying-system-prompts.md @@ -38,7 +38,7 @@ The [comparison table](#compare-the-four-approaches) shows what each customizati ## Customize agent behavior -Output styles, `append`, and a custom prompt string each change the system prompt directly. CLAUDE.md takes a different path: the SDK reads it and injects its content into the conversation as project context, not into the system prompt, so it shapes behavior alongside whichever system prompt you choose. [Skills](/docs/en/agent-sdk/skills), [hooks](/docs/en/agent-sdk/hooks), and [permissions](/docs/en/agent-sdk/permissions) also shape behavior outside the system prompt and are covered on their own pages. +`append` and a custom prompt string each change the system prompt directly, and an output style changes the instructions Claude Code gives Claude for every response. CLAUDE.md takes a different path: the SDK reads it and injects its content into the conversation as project context, so it shapes behavior alongside whichever system prompt you choose. [Skills](/docs/en/agent-sdk/skills), [hooks](/docs/en/agent-sdk/hooks), and [permissions](/docs/en/agent-sdk/permissions) also shape behavior outside the system prompt and are covered on their own pages. ### CLAUDE.md files for project-level instructions @@ -106,7 +106,7 @@ CLAUDE.md is persistent across all sessions in a project, shared with your team ### Output styles for persistent configurations -Output styles are saved configurations that modify Claude's system prompt. They're stored as markdown files and can be reused across sessions and projects. +Output styles are saved sets of instructions that change Claude's role, tone, and output format. They're stored as markdown files and can be reused across sessions and projects. #### Create an output style @@ -363,6 +363,14 @@ The SDK assembles the blocks from the array as follows: * If you include the marker more than once, the first one is the split and the SDK removes the others. * If you leave the marker out, the SDK joins all the strings into one block, the same as passing one string. +### Change the prompt of an existing session + +By default, Claude Code builds the system prompt once, on a session's first request, with your `append` text or custom prompt included, and records it in the session. Until the session is compacted, every later request uses that recorded prompt, including after you return to the session with `resume` or `continue`. If you pass a different `append` or custom prompt on that later call, it takes effect once the session is compacted or in a new session. + +Recording applies in sessions that [fetch feature flags](/docs/en/env-vars#features-that-need-feature-flag-fetching), as sessions using a claude.ai or Console account do by default. On Amazon Bedrock, Google Cloud's Agent Platform, Microsoft Foundry, and in other sessions that don't fetch them, Claude Code rebuilds the prompt on every request. If you start Claude Code in [bare mode](/docs/en/headless#start-faster-with-bare-mode) by passing `--bare` through `extraArgs` or setting `CLAUDE_CODE_SIMPLE=1`, recording stays off unless you set `snapshot: true` on the object form of `systemPrompt`. Recording an `append` or custom prompt by default requires Claude Code v2.1.265 or later, which the TypeScript Agent SDK bundles from v0.3.265. + +To rebuild the prompt on every request instead, set `snapshot: false` on the object form of `systemPrompt` in the TypeScript SDK: `{ type: "preset", preset: "claude_code", append, snapshot: false }` or `{ type: "custom", prompt, snapshot: false }`. Use this form while you iterate on prompt wording, or when your application changes `append` between calls that resume the same session. The `snapshot` field requires `@anthropic-ai/claude-agent-sdk` v0.3.257 or later and has no effect in sessions that don't fetch feature flags. + ## Compare the four approaches The four customization methods differ in where they live, how they're shared, and what they preserve from the `claude_code` preset. diff --git a/content/en/docs/claude-code/agent-sdk/permissions.md b/content/en/docs/claude-code/agent-sdk/permissions.md index eef796602..3f398452e 100644 --- a/content/en/docs/claude-code/agent-sdk/permissions.md +++ b/content/en/docs/claude-code/agent-sdk/permissions.md @@ -71,12 +71,12 @@ This page focuses on **allow and deny rules** and **permission modes**. For the `allowed_tools` and `disallowed_tools` (TypeScript: `allowedTools` / `disallowedTools`) add entries to the allow and deny rule lists in the evaluation flow above. If you name one of the [task-tracking tools](/docs/en/agent-sdk/todo-tracking#model-availability) in `allowed_tools`, Claude Code also opts the session in. Any other tool not listed in `allowed_tools` is still available to Claude and falls through to the permission mode. Deny rules behave differently depending on whether they name a tool or scope a pattern within one. -| Option | Effect | -| :-------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `allowed_tools=["Read", "Grep"]` | `Read` and `Grep` are auto-approved. Other tools not listed here still exist and fall through to the permission mode and `canUseTool`. | -| `disallowed_tools=["Bash"]` | The `Bash` tool definition is removed from the request. Claude does not see the tool and cannot attempt it. | -| `disallowed_tools=["Bash(rm *)"]` | `Bash` stays available. Calls matching `rm *` are denied in every permission mode, including `bypassPermissions`. Other `Bash` calls fall through to the permission mode. | -| `disallowed_tools=["*"]` | Every tool definition is removed from the request. Tool-name globs are supported in deny rules: `"*"` matches every tool and `"mcp__*"` matches every MCP tool across all servers. | +| Option | Effect | +| :-------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `allowed_tools=["Read", "Grep"]` | `Read` and `Grep` are auto-approved. Other tools not listed here still exist and fall through to the permission mode and `canUseTool`. | +| `disallowed_tools=["Bash"]` | The `Bash` tool definition is removed from the request. Claude does not see the tool and cannot attempt it. | +| `disallowed_tools=["Bash(rm *)"]` | `Bash` stays available. Calls matching `rm *` [as written](/docs/en/permissions#bash-rule-limits) are denied in every permission mode, including `bypassPermissions`. Other `Bash` calls, including `/bin/rm`, fall through to the permission mode. | +| `disallowed_tools=["*"]` | Every tool definition is removed from the request. Tool-name globs are supported in deny rules: `"*"` matches every tool and `"mcp__*"` matches every MCP tool across all servers. | Allow rules accept tool-name globs only after a literal `mcp____` prefix. The server segment must be glob-free so the rule names a specific server you configured: `mcp__puppeteer__*` matches every tool from the `puppeteer` server, and `mcp__github__get_*` matches its `get_` tools. An unanchored entry like `allowed_tools=["*"]` or `allowed_tools=["mcp__*"]` is ignored with a startup warning and does not auto-approve anything. @@ -123,7 +123,7 @@ The SDK supports these permission modes: | `auto` | Model-classified approvals | A model classifier approves or denies permission prompts. See [Auto mode](/docs/en/permission-modes#eliminate-prompts-with-auto-mode) for availability | - **Subagent inheritance:** Subagents inherit the parent session's permission mode. An [`AgentDefinition`'s `permissionMode`](/docs/en/agent-sdk/typescript#agentdefinition) can override it, except when the parent uses `bypassPermissions`, `acceptEdits`, or `auto`: those modes apply to every subagent and can't be overridden per subagent. Claude Code also ignores a definition's `permissionMode: "bypassPermissions"` when bypass mode is disabled by [`permissions.disableBypassPermissionsMode`](/docs/en/permissions#managed-settings), so that subagent runs with the parent session's mode. + **Subagent inheritance:** A subagent runs in the parent session's permission mode unless you set `permissionMode` on its [`AgentDefinition`](/docs/en/agent-sdk/typescript#agentdefinition) and the parent session is in `default`, `dontAsk`, or `plan` mode. Even then, Claude Code never applies a `"bypassPermissions"` value. A subagent runs in `bypassPermissions` mode only when the parent session itself does. The `bypassPermissions` exception requires Claude Code v2.1.267 or later. Subagents may have different system prompts and less constrained behavior than your main agent, so inheriting `bypassPermissions` grants them full, autonomous system access. The [actions no mode auto-approves](/docs/en/permission-modes#actions-no-mode-auto-approves) still apply. diff --git a/content/en/docs/claude-code/agent-sdk/python.md b/content/en/docs/claude-code/agent-sdk/python.md index b39ba9de4..d80afc91f 100644 --- a/content/en/docs/claude-code/agent-sdk/python.md +++ b/content/en/docs/claude-code/agent-sdk/python.md @@ -814,7 +814,7 @@ class ClaudeAgentOptions: | `session_id` | `str \| None` | `None` | Use a specific session ID instead of an auto-generated one. Must be a valid UUID. Can't be combined with `continue_conversation` or `resume` unless `fork_session` is also set | | `max_turns` | `int \| None` | `None` | Maximum agentic turns (tool-use round trips) | | `max_budget_usd` | `float \| None` | `None` | Stop the query when the client-side cost estimate reaches this USD value. Compared against the same estimate as `total_cost_usd`; see [Track cost and usage](/docs/en/agent-sdk/cost-tracking) for accuracy caveats | -| `disallowed_tools` | `list[str]` | `[]` | Tools to deny. A bare name such as `"Bash"` removes the tool from Claude's context. A scoped rule such as `"Bash(rm *)"` leaves the tool available and denies matching calls in every permission mode, including `bypassPermissions`. See [Permissions](/docs/en/agent-sdk/permissions#allow-and-deny-rules) | +| `disallowed_tools` | `list[str]` | `[]` | Tools to deny. A bare name such as `"Bash"` removes the tool from Claude's context. A scoped rule such as `"Bash(rm *)"` leaves the tool available and denies matching calls in every permission mode, including `bypassPermissions`, for the command [as written](/docs/en/permissions#bash-rule-limits). See [Permissions](/docs/en/agent-sdk/permissions#allow-and-deny-rules) | | `enable_file_checkpointing` | `bool` | `False` | Enable file change tracking for rewinding. See [File checkpointing](/docs/en/agent-sdk/file-checkpointing) | | `model` | `str \| None` | `None` | Claude model alias or full model name. See [accepted values and provider-specific IDs](/docs/en/model-config#available-models) | | `fallback_model` | `str \| None` | `None` | Fallback model to use if the primary model fails | @@ -835,7 +835,7 @@ class ClaudeAgentOptions: | `user` | `str \| None` | `None` | User identifier | | `include_partial_messages` | `bool` | `False` | Include partial message streaming events. When enabled, [`StreamEvent`](#streamevent) messages are yielded | | `include_hook_events` | `bool` | `False` | Include hook lifecycle events in the message stream as `HookEventMessage` objects | -| `forward_subagent_text` | `bool` | `False` | Forward subagent text and thinking blocks in the message stream. By default only subagent `tool_use` and `tool_result` blocks are emitted. Requires Python Agent SDK 0.2.140 or later | +| `forward_subagent_text` | `bool` | `False` | Forward subagent text and thinking blocks in the message stream. Without this option, Claude Code emits subagent `tool_use` and `tool_result` blocks but not text or thinking. Requires Python Agent SDK 0.2.140 or later | | `fork_session` | `bool` | `False` | When resuming with `resume`, fork to a new session ID instead of continuing the original session | | `resume_session_at` | `str \| None` | `None` | When resuming, load the conversation only up to and including the message with this UUID. Use with `resume`, and usually `fork_session`, to branch from an earlier point. Requires Python Agent SDK 0.2.137 or later | | `resume_drops_turn` | `str \| None` | `None` | UUID of the user prompt whose turn a `resume_session_at` truncation discards. When set, the CLI refuses the resume if the discarded range holds entries not attributable to that turn. Requires Python Agent SDK 0.2.137 or later and Claude Code v2.1.223 or later; the CLI bundled with those SDK versions satisfies the Claude Code requirement | @@ -1071,7 +1071,7 @@ class AgentDefinition: | `maxTurns` | No | Maximum number of agentic turns before the agent stops | | `background` | No | Run this agent as a non-blocking background task when invoked | | `effort` | No | Reasoning effort level for this agent. Accepts a named level or an integer. See [`EffortLevel`](#effortlevel) | -| `permissionMode` | No | Permission mode for tool execution within this agent. See [`PermissionMode`](#permissionmode) | +| `permissionMode` | No | Permission mode for tool execution within this agent. The [subagent inheritance rules](/docs/en/agent-sdk/permissions#available-modes) decide when it applies. See [`PermissionMode`](#permissionmode) | `AgentDefinition` field names use camelCase, such as `disallowedTools`, `permissionMode`, and `maxTurns`. These names map directly to the wire format shared with the TypeScript SDK. This differs from `ClaudeAgentOptions`, which uses Python snake\_case for the equivalent top-level fields such as `disallowed_tools` and `permission_mode`. Because `AgentDefinition` is a dataclass, passing a snake\_case keyword raises a `TypeError` at construction time. @@ -2441,7 +2441,7 @@ Documentation of input/output schemas for all built-in Claude Code tools. While "run_in_background": bool | None, # Agents run in the background by default; set to False to run synchronously "name": str | None, # Name for the spawned agent "team_name": str | None, # Deprecated; ignored - "mode": "acceptEdits" | "auto" | "bypassPermissions" | "default" | "dontAsk" | "plan" | None, # Deprecated; ignored. Subagents inherit the parent session's permission mode; agent-definition frontmatter may override it + "mode": "acceptEdits" | "auto" | "bypassPermissions" | "default" | "dontAsk" | "plan" | None, # Deprecated; ignored. The subagent inheritance rules decide a subagent's permission mode "isolation": "worktree" | "remote" | None, # Isolation mode for the agent's changes } ``` diff --git a/content/en/docs/claude-code/agent-sdk/streaming-output.md b/content/en/docs/claude-code/agent-sdk/streaming-output.md index e23e94efc..8c7d5257b 100644 --- a/content/en/docs/claude-code/agent-sdk/streaming-output.md +++ b/content/en/docs/claude-code/agent-sdk/streaming-output.md @@ -6,7 +6,7 @@ > Get real-time responses from the Agent SDK as text and tool calls stream in -By default, the Agent SDK yields complete `AssistantMessage` objects after Claude finishes generating each response. To receive incremental updates as text and tool calls are generated, enable partial message streaming. +By default, the Agent SDK yields a complete `AssistantMessage` for each non-empty content block, such as a text block or a tool call, after Claude finishes generating that block. To receive incremental updates as text and tool calls are generated, enable partial message streaming. This page covers output streaming (receiving tokens in real-time). For input modes (how you send messages), see [Send messages to agents](/docs/en/agent-sdk/streaming-vs-single-mode). You can also [stream responses using the Agent SDK via the CLI](/docs/en/headless). @@ -98,12 +98,15 @@ Both contain raw Claude API events, not accumulated text. You need to extract an uuid: UUID; session_id: string; ttft_ms?: number; // Time to first token in ms, present only on message_start events + user_message_uuid?: string; }; ``` The `parent_tool_use_id` field is always `None` in Python and `null` in TypeScript. Stream events are emitted for the main session only; token-level deltas from subagents aren't forwarded. To attribute output to a subagent, use complete messages, which carry `parent_tool_use_id`. See [Detect subagent invocation](/docs/en/agent-sdk/subagents#detect-subagent-invocation). +Claude Code sets `user_message_uuid` on the turn's first non-ping stream event, and again when the message the turn is answering changes, under the conditions in [`user_message_uuid`](/docs/en/agent-sdk/typescript#user_message_uuid). The Python `StreamEvent` doesn't expose this field. + The `event` field contains the raw streaming event from the [Claude API](https://platform.claude.com/docs/en/build-with-claude/streaming#event-types). Common event types include: | Event Type | Description | @@ -117,25 +120,26 @@ The `event` field contains the raw streaming event from the [Claude API](https:/ ## Message flow -With partial messages enabled, you receive messages in this order: +Claude Code emits an `AssistantMessage` as each non-empty content block completes, so a response with a text block and a tool call yields two `AssistantMessage` objects. Each one carries only its own content block, and both share the same message ID, which you read as `message.message.id` in TypeScript and `message.message_id` in Python. With partial messages enabled, each `AssistantMessage` arrives before that block's `content_block_stop` event, and you receive messages in this order: ```text theme={null} StreamEvent (message_start) StreamEvent (content_block_start) - text block StreamEvent (content_block_delta) - text chunks... +AssistantMessage - complete text block StreamEvent (content_block_stop) StreamEvent (content_block_start) - tool_use block StreamEvent (content_block_delta) - tool input chunks... +AssistantMessage - complete tool_use block StreamEvent (content_block_stop) StreamEvent (message_delta) StreamEvent (message_stop) -AssistantMessage - complete message with all content ... tool executes ... ... more streaming events for next turn ... ResultMessage - final result ``` -Without partial messages enabled, you receive all message types except `StreamEvent`. Common types include `SystemMessage` (session initialization), `AssistantMessage` (complete responses), `ResultMessage` (final result), and a compact boundary message indicating when conversation history was compacted (`SDKCompactBoundaryMessage` in TypeScript; `SystemMessage` with subtype `"compact_boundary"` in Python). +Without partial messages enabled, you receive all message types except `StreamEvent`. Common types include `SystemMessage` (session initialization), `AssistantMessage` (complete content blocks), `ResultMessage` (final result), and a compact boundary message indicating when conversation history was compacted (`SDKCompactBoundaryMessage` in TypeScript; `SystemMessage` with subtype `"compact_boundary"` in Python). ## Stream tool calls diff --git a/content/en/docs/claude-code/agent-sdk/subagents.md b/content/en/docs/claude-code/agent-sdk/subagents.md index e82aba5fe..be20562b0 100644 --- a/content/en/docs/claude-code/agent-sdk/subagents.md +++ b/content/en/docs/claude-code/agent-sdk/subagents.md @@ -156,7 +156,7 @@ This example creates two subagents: a code reviewer with read-only access and a | `maxTurns` | `number` | No | Maximum number of agentic turns before the agent stops. When the agent reaches the limit, Claude Code returns its output marked as partial, and you can [resume the agent](#resume-subagents) to continue. The partial marking requires Claude Code v2.1.246 or later | | `background` | `boolean` | No | Run this agent as a non-blocking background task when invoked | | `effort` | `'low' \| 'medium' \| 'high' \| 'xhigh' \| 'max' \| number` | No | Reasoning effort level for this agent | -| `permissionMode` | `PermissionMode` | No | Permission mode for tool execution within this agent | +| `permissionMode` | `PermissionMode` | No | Permission mode for tool execution within this agent. The [subagent inheritance rules](/docs/en/agent-sdk/permissions#available-modes) decide when it applies | In the Python SDK, multi-word field names such as `disallowedTools` and `mcpServers` keep their camelCase spelling to match the wire format rather than following Python's snake\_case convention. See the [`AgentDefinition` reference](/docs/en/agent-sdk/python#agentdefinition) for details. diff --git a/content/en/docs/claude-code/agent-sdk/typescript.md b/content/en/docs/claude-code/agent-sdk/typescript.md index 000120d4a..e6c6afa4b 100644 --- a/content/en/docs/claude-code/agent-sdk/typescript.md +++ b/content/en/docs/claude-code/agent-sdk/typescript.md @@ -410,72 +410,72 @@ console.log(`Set by: ${provenance.cleanupPeriodDays?.source}`); Configuration object for the `query()` function. -| Property | Type | Default | Description | -| :-------------------------------- | :------------------------------------------------------------------------------------------------------------------- | :------------------------------------------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -| `abortController` | `AbortController` | `new AbortController()` | Controller for cancelling operations | -| `additionalDirectories` | `string[]` | `[]` | Additional directories Claude can access. The SDK passes each entry to Claude Code as `--add-dir`, so with the `project` setting source Claude Code also [loads the directory's skills, commands, and subagents](/docs/en/permissions#additional-directories-grant-file-access-not-configuration) | -| `agent` | `string` | `undefined` | Agent name for the main thread. The agent must be defined in the `agents` option or in settings | -| `agents` | `Record` | `undefined` | Programmatically define subagents | -| `agentProgressSummaries` | `boolean` | `false` | When `true`, generate one-line progress summaries for subagents and forward them on [`task_progress`](#sdktaskprogressmessage) events via the `summary` field. Applies to foreground and background subagents | -| `allowDangerouslySkipPermissions` | `boolean` | `false` | Enable bypassing permissions. Required when using `permissionMode: 'bypassPermissions'` | -| `allowedTools` | `string[]` | `[]` | Tools to auto-approve without prompting. This does not restrict Claude to only these tools. If you name one of the [task-tracking tools](/docs/en/agent-sdk/todo-tracking#model-availability) here, Claude Code also opts the session in. Other unlisted tools fall through to `permissionMode` and `canUseTool`. Use `disallowedTools` to block tools. See [Permissions](/docs/en/agent-sdk/permissions#allow-and-deny-rules) | -| `betas` | [`SdkBeta`](#sdkbeta)`[]` | `[]` | Enable beta features | -| `canUseTool` | [`CanUseTool`](#canusetool) | `undefined` | Custom permission function, invoked only when the [permission flow](/docs/en/agent-sdk/permissions#how-permissions-are-evaluated) falls through to a prompt. Not invoked for calls auto-approved by `allowedTools`, allow rules, or `permissionMode`. An allow rule doesn't pre-approve the [actions no mode auto-approves](/docs/en/permission-modes#actions-no-mode-auto-approves). See [`CanUseTool`](#canusetool) for details | -| `continue` | `boolean` | `false` | Continue the most recent conversation | -| `cwd` | `string` | `process.cwd()` | Current working directory | -| `debug` | `boolean` | `false` | Enable debug mode for the Claude Code process | -| `debugFile` | `string` | `undefined` | Write debug logs to a specific file path. Implicitly enables debug mode | -| `disallowedTools` | `string[]` | `[]` | Tools to deny. A bare name such as `"Bash"` removes the tool from Claude's context. A scoped rule such as `"Bash(rm *)"` leaves the tool available and denies matching calls in every permission mode, including `bypassPermissions`. See [Permissions](/docs/en/agent-sdk/permissions#allow-and-deny-rules) | -| `effort` | `'low' \| 'medium' \| 'high' \| 'xhigh' \| 'max'` | Model default | Controls how much effort Claude puts into its response. Works with adaptive thinking to guide thinking depth. See [adjust the effort level](/docs/en/model-config#adjust-effort-level) | -| `enableFileCheckpointing` | `boolean` | `false` | Enable file change tracking for rewinding. See [File checkpointing](/docs/en/agent-sdk/file-checkpointing) | -| `env` | `Record` | `process.env` | Environment variables. When set, this replaces the subprocess environment instead of merging with `process.env`, so pass `{ ...process.env, YOUR_VAR: 'value' }` to keep inherited variables like `PATH`. See [Handle slow or stalled API responses](#handle-slow-or-stalled-api-responses) for an example of this pattern, and [Environment variables](/docs/en/env-vars) for variables the underlying CLI reads. Set `CLAUDE_AGENT_SDK_CLIENT_APP` to identify your app in the User-Agent header | -| `executable` | `'bun' \| 'deno' \| 'node'` | Auto-detected | JavaScript runtime to use | -| `executableArgs` | `string[]` | `[]` | Arguments to pass to the executable | -| `extraArgs` | `Record` | `{}` | Additional arguments | -| `fallbackModel` | `string` | `undefined` | Model to use if primary fails | -| `forkSession` | `boolean` | `false` | When resuming with `resume`, fork to a new session ID instead of continuing the original session | -| `forwardSubagentText` | `boolean` | `false` | Forward subagent text and thinking blocks as assistant and user messages with `parent_tool_use_id` set, so consumers can render a nested transcript. By default only `tool_use` and `tool_result` blocks from subagents are emitted. Messages from subagents at every nesting depth are forwarded on Claude Code v2.1.219 and later; before v2.1.219, only messages from depth-1 subagents appeared | -| `hooks` | `Partial>` | `{}` | Hook callbacks for events | -| `includeHookEvents` | `boolean` | `false` | Include hook lifecycle events in the message stream as [`SDKHookStartedMessage`](#sdkhookstartedmessage), [`SDKHookProgressMessage`](#sdkhookprogressmessage), and [`SDKHookResponseMessage`](#sdkhookresponsemessage). Lifecycle events for `SessionStart` and `Setup` hooks are always included and don't need this option. Some hook events, such as `Notification`, `SessionEnd`, `PreCompact`, and `PostCompact`, never produce an `SDKHookStartedMessage`, even with this option. For those events, Claude Code still emits an `SDKHookProgressMessage` while a command hook that runs for more than a second produces output, and emits an `SDKHookResponseMessage` only when a hook [that runs in the background](/docs/en/hooks#run-hooks-in-the-background) finishes | -| `includePartialMessages` | `boolean` | `false` | Include partial message events | -| `loadTimeoutMs` | `number` | `60000` | *Alpha.* Timeout in milliseconds for each `sessionStore.load()` and `sessionStore.listSubkeys()` call during resume materialization. If the adapter doesn't settle within this window, the query fails instead of hanging. Ignored when `sessionStore` is not set | -| `managedSettings` | `Settings` | `undefined` | Policy-tier settings your host process supplies to the spawned session. On machines with admin-deployed managed settings, Claude Code ignores these unless the admin's highest-priority managed source sets `parentSettingsBehavior: 'merge'`, and never merges them while a [`policyHelper`](/docs/en/settings-reference#policyhelper) supplies managed settings. Merged values pass through a restrictive-only filter; [Restrict parent settings](/docs/en/claude-apps-gateway#restrict-parent-settings) covers what the filter admits and the `allowManaged*Only` locks. A host that sets [`CLAUDE_CODE_PROVIDER_MANAGED_BY_HOST`](/docs/en/env-vars) has three keys read straight from this payload instead: its [model configuration](/docs/en/model-config#restrict-model-selection) on Claude Code v2.1.222 or later, [`modelPricing`](/docs/en/settings-reference#modelpricing) when no managed source sets it on v2.1.246 or later, and its `ENABLE_TOOL_SEARCH` env entry on v2.1.247 or later | -| `maxBudgetUsd` | `number` | `undefined` | Stop the query when the client-side cost estimate reaches this USD value. Compared against the same estimate as `total_cost_usd`; see [Track cost and usage](/docs/en/agent-sdk/cost-tracking) for accuracy caveats | -| `maxThinkingTokens` | `number` | `undefined` | *Deprecated:* Use `thinking` instead. Maximum tokens for thinking process | -| `maxTurns` | `number` | `undefined` | Maximum agentic turns (tool-use round trips) | -| `mcpServers` | `Record` | `{}` | MCP server configurations | -| `model` | `string` | Default from CLI | Claude model alias or full model name. See [accepted values and provider-specific IDs](/docs/en/model-config#available-models) | -| `onElicitation` | `(request: ElicitationRequest, options: { signal: AbortSignal }) => Promise` | `undefined` | Callback for handling MCP elicitation requests. Called when an MCP server requests user input and no hook handles it first. When not provided, unhandled elicitation requests are declined automatically | -| `outputFormat` | `{ type: 'json_schema', schema: JSONSchema }` | `undefined` | Define output format for agent results. See [Structured outputs](/docs/en/agent-sdk/structured-outputs) for details | -| `outputStyle` | `string` | `undefined` | Not an `Options` field. Set `outputStyle` in the inline [`settings`](/docs/en/settings) object or a settings file instead. See [Activate an output style](/docs/en/agent-sdk/modifying-system-prompts#activate-an-output-style) | -| `pathToClaudeCodeExecutable` | `string` | Auto-resolved from bundled native binary | Path to Claude Code executable. Only needed if optional dependencies were skipped during install or your platform isn't in the supported set | -| `permissionMode` | [`PermissionMode`](#permissionmode) | `'default'` | Permission mode for the session | -| `permissionPromptToolName` | `string` | `undefined` | MCP tool name for permission prompts | -| `permissionPrompts` | `'host' \| 'none'` | `'host'` | Who answers permission prompts: `'host'` routes them to your [`canUseTool`](#canusetool) callback or the `permissionPromptToolName` tool, and `'none'` [denies the calls that would have prompted](/docs/en/agent-sdk/permissions#how-permissions-are-evaluated). Requires Claude Code v2.1.259 or later | -| `persistSession` | `boolean` | `true` | When `false`, disables session persistence to disk. Sessions cannot be resumed later | -| `planModeInstructions` | `string` | `undefined` | Custom workflow instructions for plan mode. When `permissionMode` is `'plan'`, this string replaces the default plan-mode workflow body. The CLI still wraps it with the read-only enforcement preamble and the ExitPlanMode protocol footer | -| `plugins` | [`SdkPluginConfig`](#sdkpluginconfig)`[]` | `[]` | Load custom plugins from local paths. See [Plugins](/docs/en/agent-sdk/plugins) for details | -| `promptSuggestions` | `boolean` | `false` | Enable prompt suggestions. After a turn, Claude Code emits a `prompt_suggestion` message carrying a predicted next user prompt. Claude Code generates no suggestion for some turns, such as while your account is close to or at its usage limit. See [When Claude Code skips suggestions](/docs/en/interactive-mode#when-claude-code-skips-suggestions) | -| `resume` | `string` | `undefined` | Session ID to resume | -| `resumeDropsTurn` | `string` | `undefined` | With `resumeSessionAt`: the prompt UUID of the turn the truncating resume intends to discard. Claude Code refuses the resume when the discarded range contains anything not attributable to that turn, such as absorbed queued messages or task notifications, and names the `--resume-drops-turn` flag in the rejection message. Only the Agent SDK and print-mode resumes read the pair. Requires Claude Code v2.1.223 or later | -| `resumeSessionAt` | `string` | `undefined` | Resume session at a specific message UUID | -| `sandbox` | [`SandboxSettings`](#sandboxsettings) | `undefined` | Configure sandbox behavior programmatically. See [Sandbox settings](#sandboxsettings) for details | -| `sessionId` | `string` | Auto-generated | Use a specific UUID for the session instead of auto-generating one | -| `sessionStore` | [`SessionStore`](/docs/en/agent-sdk/session-storage#the-sessionstore-interface) | `undefined` | Mirror session transcripts to an external backend so another host can resume them. See [Persist sessions to external storage](/docs/en/agent-sdk/session-storage) | -| `sessionStoreFlush` | `'batched' \| 'eager'` | `'batched'` | *Alpha.* Flush mode for `sessionStore`. Ignored when `sessionStore` is not set | -| `settings` | `string \| Settings` | `undefined` | Inline [settings](/docs/en/settings) object or path to a settings file. Populates the flag-settings layer in the [precedence order](/docs/en/settings#settings-precedence). Change at runtime with [`applyFlagSettings()`](#applyflagsettings) | -| `settingSources` | [`SettingSource`](#settingsource)`[]` | CLI defaults (all sources) | Control which filesystem settings to load. Pass `[]` to disable user, project, and local settings. [Endpoint-managed policy](/docs/en/managed-settings#delivery-mechanisms) loads regardless; server-managed settings are fetched when the session authenticates with an organization credential on an [eligible configuration](/docs/en/server-managed-settings#platform-availability). See [Use Claude Code features](/docs/en/agent-sdk/claude-code-features#what-settingsources-does-not-control) | -| `skills` | `string[] \| 'all'` | `undefined` | Skills available to the session. Pass `'all'` to enable every discovered skill, or a list of skill names. Pass exact names only. On Agent SDK v0.3.221 or later, the SDK rejects malformed and wildcard-form names with an error before starting the Claude Code process. When set, the SDK adds the Skill tool to `allowedTools` automatically. If you also pass `tools`, include `'Skill'` in that list. See [Skills](/docs/en/agent-sdk/skills) | -| `spawnClaudeCodeProcess` | `(options: SpawnOptions) => SpawnedProcess` | `undefined` | Custom function to spawn the Claude Code process. Use to run Claude Code in VMs, containers, or remote environments | -| `stderr` | `(data: string) => void` | `undefined` | Callback for stderr output | -| `strictMcpConfig` | `boolean` | `false` | Use only the servers passed in `mcpServers` and ignore project `.mcp.json`, user settings, plugin-provided MCP servers, and [claude.ai connectors](/docs/en/mcp#use-mcp-servers-from-claude-ai) | -| `systemPrompt` | `string \| string[] \| { type: 'preset'; preset: 'claude_code'; append?: string; excludeDynamicSections?: boolean }` | `undefined` (minimal prompt) | System prompt configuration. Pass a string for a custom prompt, or `{ type: 'preset', preset: 'claude_code' }` to use Claude Code's system prompt. Pass an array of strings with the exported `SYSTEM_PROMPT_DYNAMIC_BOUNDARY` constant between the static and per-request parts to [cache the static part of a custom prompt](/docs/en/agent-sdk/modifying-system-prompts#cache-the-static-part-of-a-custom-prompt). When using the preset object form, add `append` to extend it with additional instructions, and set `excludeDynamicSections: true` to move per-session context into the first user message for [better prompt-cache reuse across machines](/docs/en/agent-sdk/modifying-system-prompts#improve-prompt-caching-across-users-and-machines) | -| `taskBudget` | `{ total: number }` | `undefined` | *Alpha.* API-side task budget in tokens. When set, the model is told its remaining token budget so it can pace tool use and wrap up before the limit | -| `thinking` | [`ThinkingConfig`](#thinkingconfig) | `{ type: 'adaptive' }` for supported models | Controls Claude's thinking/reasoning behavior. See [`ThinkingConfig`](#thinkingconfig) for options | -| `title` | `string` | `undefined` | Display title for the session. When resuming via `resume` or `continue`, the resumed session's persisted title takes precedence; use [`renameSession()`](#renamesession) to retitle an existing session | -| `toolAliases` | `Record` | `undefined` | Map built-in tool names to MCP tool names so Claude calls your MCP implementation in place of the built-in. For example, `{ Bash: 'mcp__workspace__bash' }` | -| `toolConfig` | [`ToolConfig`](#toolconfig) | `undefined` | Configuration for built-in tool behavior. See [`ToolConfig`](#toolconfig) for details | -| `tools` | `string[] \| { type: 'preset'; preset: 'claude_code' }` | `undefined` | Tool configuration. Pass an array of tool names or use the preset to get Claude Code's default tools | +| Property | Type | Default | Description | +| :-------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------ | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `abortController` | `AbortController` | `new AbortController()` | Controller for cancelling operations | +| `additionalDirectories` | `string[]` | `[]` | Additional directories Claude can access. The SDK passes each entry to Claude Code as `--add-dir`, so with the `project` setting source Claude Code also [loads the directory's skills, commands, and subagents](/docs/en/permissions#additional-directories-grant-file-access-not-configuration) | +| `agent` | `string` | `undefined` | Agent name for the main thread. The agent must be defined in the `agents` option or in settings | +| `agents` | `Record` | `undefined` | Programmatically define subagents | +| `agentProgressSummaries` | `boolean` | `false` | When `true`, generate one-line progress summaries for subagents and forward them on [`task_progress`](#sdktaskprogressmessage) events via the `summary` field. Applies to foreground and background subagents | +| `allowDangerouslySkipPermissions` | `boolean` | `false` | Enable bypassing permissions. Required when using `permissionMode: 'bypassPermissions'` | +| `allowedTools` | `string[]` | `[]` | Tools to auto-approve without prompting. This does not restrict Claude to only these tools. If you name one of the [task-tracking tools](/docs/en/agent-sdk/todo-tracking#model-availability) here, Claude Code also opts the session in. Other unlisted tools fall through to `permissionMode` and `canUseTool`. Use `disallowedTools` to block tools. See [Permissions](/docs/en/agent-sdk/permissions#allow-and-deny-rules) | +| `betas` | [`SdkBeta`](#sdkbeta)`[]` | `[]` | Enable beta features | +| `canUseTool` | [`CanUseTool`](#canusetool) | `undefined` | Custom permission function, invoked only when the [permission flow](/docs/en/agent-sdk/permissions#how-permissions-are-evaluated) falls through to a prompt. Not invoked for calls auto-approved by `allowedTools`, allow rules, or `permissionMode`. An allow rule doesn't pre-approve the [actions no mode auto-approves](/docs/en/permission-modes#actions-no-mode-auto-approves). See [`CanUseTool`](#canusetool) for details | +| `continue` | `boolean` | `false` | Continue the most recent conversation | +| `cwd` | `string` | `process.cwd()` | Current working directory | +| `debug` | `boolean` | `false` | Enable debug mode for the Claude Code process | +| `debugFile` | `string` | `undefined` | Write debug logs to a specific file path. Implicitly enables debug mode | +| `disallowedTools` | `string[]` | `[]` | Tools to deny. A bare name such as `"Bash"` removes the tool from Claude's context. A scoped rule such as `"Bash(rm *)"` leaves the tool available and denies matching calls in every permission mode, including `bypassPermissions`, for the command [as written](/docs/en/permissions#bash-rule-limits). See [Permissions](/docs/en/agent-sdk/permissions#allow-and-deny-rules) | +| `effort` | `'low' \| 'medium' \| 'high' \| 'xhigh' \| 'max'` | Model default | Controls how much effort Claude puts into its response. Works with adaptive thinking to guide thinking depth. See [adjust the effort level](/docs/en/model-config#adjust-effort-level) | +| `enableFileCheckpointing` | `boolean` | `false` | Enable file change tracking for rewinding. See [File checkpointing](/docs/en/agent-sdk/file-checkpointing) | +| `env` | `Record` | `process.env` | Environment variables. When set, this replaces the subprocess environment instead of merging with `process.env`, so pass `{ ...process.env, YOUR_VAR: 'value' }` to keep inherited variables like `PATH`. See [Handle slow or stalled API responses](#handle-slow-or-stalled-api-responses) for an example of this pattern, and [Environment variables](/docs/en/env-vars) for variables the underlying CLI reads. Set `CLAUDE_AGENT_SDK_CLIENT_APP` to identify your app in the User-Agent header | +| `executable` | `'bun' \| 'deno' \| 'node'` | Auto-detected | JavaScript runtime to use | +| `executableArgs` | `string[]` | `[]` | Arguments to pass to the executable | +| `extraArgs` | `Record` | `{}` | Additional arguments | +| `fallbackModel` | `string` | `undefined` | Model to use if primary fails | +| `forkSession` | `boolean` | `false` | When resuming with `resume`, fork to a new session ID instead of continuing the original session | +| `forwardSubagentText` | `boolean` | `false` | Forward subagent text and thinking blocks as assistant and user messages with `parent_tool_use_id` set, so consumers can render a nested transcript. Without this option, Claude Code emits subagent `tool_use` and `tool_result` blocks but not text or thinking. Messages from subagents at every nesting depth are forwarded on Claude Code v2.1.219 and later; before v2.1.219, only messages from depth-1 subagents appeared | +| `hooks` | `Partial>` | `{}` | Hook callbacks for events | +| `includeHookEvents` | `boolean` | `false` | Include hook lifecycle events in the message stream as [`SDKHookStartedMessage`](#sdkhookstartedmessage), [`SDKHookProgressMessage`](#sdkhookprogressmessage), and [`SDKHookResponseMessage`](#sdkhookresponsemessage). Lifecycle events for `SessionStart` and `Setup` hooks are always included and don't need this option. Some hook events, such as `Notification`, `SessionEnd`, `PreCompact`, and `PostCompact`, never produce an `SDKHookStartedMessage`, even with this option. For those events, Claude Code still emits an `SDKHookProgressMessage` while a command hook that runs for more than a second produces output, and emits an `SDKHookResponseMessage` only when a hook [that runs in the background](/docs/en/hooks#run-hooks-in-the-background) finishes | +| `includePartialMessages` | `boolean` | `false` | Include partial message events | +| `loadTimeoutMs` | `number` | `60000` | *Alpha.* Timeout in milliseconds for each `sessionStore.load()` and `sessionStore.listSubkeys()` call during resume materialization. If the adapter doesn't settle within this window, the query fails instead of hanging. Ignored when `sessionStore` is not set | +| `managedSettings` | `Settings` | `undefined` | Policy-tier settings your host process supplies to the spawned session. On machines with admin-deployed managed settings, Claude Code ignores these unless the admin's highest-priority managed source sets `parentSettingsBehavior: 'merge'`, and never merges them while a [`policyHelper`](/docs/en/settings-reference#policyhelper) supplies managed settings. Merged values pass through a restrictive-only filter; [Restrict parent settings](/docs/en/claude-apps-gateway#restrict-parent-settings) covers what the filter admits and the `allowManaged*Only` locks. A host that sets [`CLAUDE_CODE_PROVIDER_MANAGED_BY_HOST`](/docs/en/env-vars) has three keys read straight from this payload instead: its [model configuration](/docs/en/model-config#restrict-model-selection) on Claude Code v2.1.222 or later, [`modelPricing`](/docs/en/settings-reference#modelpricing) when no managed source sets it on v2.1.246 or later, and its `ENABLE_TOOL_SEARCH` env entry on v2.1.247 or later | +| `maxBudgetUsd` | `number` | `undefined` | Stop the query when the client-side cost estimate reaches this USD value. Compared against the same estimate as `total_cost_usd`; see [Track cost and usage](/docs/en/agent-sdk/cost-tracking) for accuracy caveats | +| `maxThinkingTokens` | `number` | `undefined` | *Deprecated:* Use `thinking` instead. Maximum tokens for thinking process | +| `maxTurns` | `number` | `undefined` | Maximum agentic turns (tool-use round trips) | +| `mcpServers` | `Record` | `{}` | MCP server configurations | +| `model` | `string` | Default from CLI | Claude model alias or full model name. See [accepted values and provider-specific IDs](/docs/en/model-config#available-models) | +| `onElicitation` | `(request: ElicitationRequest, options: { signal: AbortSignal }) => Promise` | `undefined` | Callback for handling MCP elicitation requests. Called when an MCP server requests user input and no hook handles it first. When not provided, unhandled elicitation requests are declined automatically | +| `outputFormat` | `{ type: 'json_schema', schema: JSONSchema }` | `undefined` | Define output format for agent results. See [Structured outputs](/docs/en/agent-sdk/structured-outputs) for details | +| `outputStyle` | `string` | `undefined` | Not an `Options` field. Set `outputStyle` in the inline [`settings`](/docs/en/settings) object or a settings file instead. See [Activate an output style](/docs/en/agent-sdk/modifying-system-prompts#activate-an-output-style) | +| `pathToClaudeCodeExecutable` | `string` | Auto-resolved from bundled native binary | Path to Claude Code executable. Only needed if optional dependencies were skipped during install or your platform isn't in the supported set | +| `permissionMode` | [`PermissionMode`](#permissionmode) | `'default'` | Permission mode for the session | +| `permissionPromptToolName` | `string` | `undefined` | MCP tool name for permission prompts | +| `permissionPrompts` | `'host' \| 'none'` | `'host'` | Who answers permission prompts: `'host'` routes them to your [`canUseTool`](#canusetool) callback or the `permissionPromptToolName` tool, and `'none'` [denies the calls that would have prompted](/docs/en/agent-sdk/permissions#how-permissions-are-evaluated). Requires Claude Code v2.1.259 or later | +| `persistSession` | `boolean` | `true` | When `false`, disables session persistence to disk. Sessions cannot be resumed later | +| `planModeInstructions` | `string` | `undefined` | Custom workflow instructions for plan mode. When `permissionMode` is `'plan'`, this string replaces the default plan-mode workflow body. The CLI still wraps it with the read-only enforcement preamble and the ExitPlanMode protocol footer | +| `plugins` | [`SdkPluginConfig`](#sdkpluginconfig)`[]` | `[]` | Load custom plugins from local paths. See [Plugins](/docs/en/agent-sdk/plugins) for details | +| `promptSuggestions` | `boolean` | `false` | Enable prompt suggestions. After a turn, Claude Code emits a `prompt_suggestion` message carrying a predicted next user prompt. Claude Code generates no suggestion for some turns, such as while your account is close to or at its usage limit. See [When Claude Code skips suggestions](/docs/en/interactive-mode#when-claude-code-skips-suggestions) | +| `resume` | `string` | `undefined` | Session ID to resume | +| `resumeDropsTurn` | `string` | `undefined` | With `resumeSessionAt`: the prompt UUID of the turn the truncating resume intends to discard. Claude Code refuses the resume when the discarded range contains anything not attributable to that turn, such as absorbed queued messages or task notifications, and names the `--resume-drops-turn` flag in the rejection message. Only the Agent SDK and print-mode resumes read the pair. Requires Claude Code v2.1.223 or later | +| `resumeSessionAt` | `string` | `undefined` | Resume session at a specific message UUID | +| `sandbox` | [`SandboxSettings`](#sandboxsettings) | `undefined` | Configure sandbox behavior programmatically. See [Sandbox settings](#sandboxsettings) for details | +| `sessionId` | `string` | Auto-generated | Use a specific UUID for the session instead of auto-generating one | +| `sessionStore` | [`SessionStore`](/docs/en/agent-sdk/session-storage#the-sessionstore-interface) | `undefined` | Mirror session transcripts to an external backend so another host can resume them. See [Persist sessions to external storage](/docs/en/agent-sdk/session-storage) | +| `sessionStoreFlush` | `'batched' \| 'eager'` | `'batched'` | *Alpha.* Flush mode for `sessionStore`. Ignored when `sessionStore` is not set | +| `settings` | `string \| Settings` | `undefined` | Inline [settings](/docs/en/settings) object or path to a settings file. Populates the flag-settings layer in the [precedence order](/docs/en/settings#settings-precedence). Change at runtime with [`applyFlagSettings()`](#applyflagsettings) | +| `settingSources` | [`SettingSource`](#settingsource)`[]` | CLI defaults (all sources) | Control which filesystem settings to load. Pass `[]` to disable user, project, and local settings. [Endpoint-managed policy](/docs/en/managed-settings#delivery-mechanisms) loads regardless; server-managed settings are fetched when the session authenticates with an organization credential on an [eligible configuration](/docs/en/server-managed-settings#platform-availability). See [Use Claude Code features](/docs/en/agent-sdk/claude-code-features#what-settingsources-does-not-control) | +| `skills` | `string[] \| 'all'` | `undefined` | Skills available to the session. Pass `'all'` to enable every discovered skill, or a list of skill names. Pass exact names only. On Agent SDK v0.3.221 or later, the SDK rejects malformed and wildcard-form names with an error before starting the Claude Code process. When set, the SDK adds the Skill tool to `allowedTools` automatically. If you also pass `tools`, include `'Skill'` in that list. See [Skills](/docs/en/agent-sdk/skills) | +| `spawnClaudeCodeProcess` | `(options: SpawnOptions) => SpawnedProcess` | `undefined` | Custom function to spawn the Claude Code process. Use to run Claude Code in VMs, containers, or remote environments | +| `stderr` | `(data: string) => void` | `undefined` | Callback for stderr output | +| `strictMcpConfig` | `boolean` | `false` | Use only the servers passed in `mcpServers` and ignore project `.mcp.json`, user settings, plugin-provided MCP servers, and [claude.ai connectors](/docs/en/mcp#use-mcp-servers-from-claude-ai) | +| `systemPrompt` | `string \| string[] \| { type: 'custom'; prompt: string \| string[]; snapshot?: boolean } \| { type: 'preset'; preset: 'claude_code'; append?: string; excludeDynamicSections?: boolean; snapshot?: boolean }` | `undefined` (minimal prompt) | System prompt configuration. Pass a string for a custom prompt, or `{ type: 'preset', preset: 'claude_code' }` to use Claude Code's system prompt. Pass an array of strings with the exported `SYSTEM_PROMPT_DYNAMIC_BOUNDARY` constant between the static and per-request parts to [cache the static part of a custom prompt](/docs/en/agent-sdk/modifying-system-prompts#cache-the-static-part-of-a-custom-prompt). When using the preset object form, add `append` to extend it with additional instructions, and set `excludeDynamicSections: true` to move per-session context into the first user message for [better prompt-cache reuse across machines](/docs/en/agent-sdk/modifying-system-prompts#improve-prompt-caching-across-users-and-machines). Set `snapshot: false` to rebuild the prompt on every request instead of [reusing the prompt the session recorded on its first request](/docs/en/agent-sdk/modifying-system-prompts#change-the-prompt-of-an-existing-session). To set `snapshot` on a custom prompt, pass the `{ type: 'custom', prompt }` form. The `{ type: 'custom' }` form and the `snapshot` field require TypeScript Agent SDK v0.3.257 or later | +| `taskBudget` | `{ total: number }` | `undefined` | *Alpha.* API-side task budget in tokens. When set, the model is told its remaining token budget so it can pace tool use and wrap up before the limit | +| `thinking` | [`ThinkingConfig`](#thinkingconfig) | `{ type: 'adaptive' }` for supported models | Controls Claude's thinking/reasoning behavior. See [`ThinkingConfig`](#thinkingconfig) for options | +| `title` | `string` | `undefined` | Display title for the session. When resuming via `resume` or `continue`, the resumed session's persisted title takes precedence; use [`renameSession()`](#renamesession) to retitle an existing session | +| `toolAliases` | `Record` | `undefined` | Map built-in tool names to MCP tool names so Claude calls your MCP implementation in place of the built-in. For example, `{ Bash: 'mcp__workspace__bash' }` | +| `toolConfig` | [`ToolConfig`](#toolconfig) | `undefined` | Configuration for built-in tool behavior. See [`ToolConfig`](#toolconfig) for details | +| `tools` | `string[] \| { type: 'preset'; preset: 'claude_code' }` | `undefined` | Tool configuration. Pass an array of tool names or use the preset to get Claude Code's default tools | #### Handle slow or stalled API responses @@ -587,7 +587,7 @@ Changes [settings](/docs/en/settings) on a running session without restarting th Only some keys take effect mid-session: -* **Applied on the next turn**: `effortLevel`, `ultracode`, `permissions`, `hooks`, `skillOverrides`, `fastMode`, `agent`. Switching `agent` also applies that agent's model override, hooks, and system prompt on the next turn. +* **Applied on the next turn**: `effortLevel`, `ultracode`, `permissions`, `hooks`, `skillOverrides`, `fastMode`, `agent`. Switching `agent` also applies that agent's model override and hooks on the next turn. Its system prompt applies on the next turn, or, in a session that [reuses a recorded system prompt](/docs/en/agent-sdk/modifying-system-prompts#change-the-prompt-of-an-existing-session), once the session is compacted. * **Applied during the current turn**: `model`. If you switch `model` while Claude is working on a turn, the response Claude is already generating finishes on the old model, and the rest of the turn, starting with the next call Claude Code makes to the model, uses the new one. Subagents keep their own model. Before v2.1.212, a mid-turn switch waited for the next turn. * **No effect mid-session**: the system prompt options. These are resolved once at startup, so the running session keeps the original value even though the call succeeds. To change them, start a new session. @@ -874,7 +874,7 @@ type AgentDefinition = { | `background` | No | Run this agent as a non-blocking background task when invoked | | `memory` | No | Memory source for this agent: `'user'`, `'project'`, or `'local'` | | `effort` | No | Reasoning effort level for this agent. Accepts a named level or an integer | -| `permissionMode` | No | Permission mode for tool execution within this agent. See [`PermissionMode`](#permissionmode) | +| `permissionMode` | No | Permission mode for tool execution within this agent. The [subagent inheritance rules](/docs/en/agent-sdk/permissions#available-modes) decide when it applies. See [`PermissionMode`](#permissionmode) | | `criticalSystemReminder_EXPERIMENTAL` | No | Experimental: Critical reminder added to the system prompt | ### `AgentMcpServerSpec` @@ -1192,7 +1192,12 @@ type SDKAssistantMessage = { The `message` field is a [`BetaMessage`](https://platform.claude.com/docs/en/api/messages/create) from the Anthropic SDK. It includes fields like `id`, `content`, `model`, `stop_reason`, and `usage`. -`SDKAssistantMessageError` is one of: `'authentication_failed'`, `'oauth_org_not_allowed'`, `'account_on_hold'`, `'billing_error'`, `'rate_limit'`, `'overloaded'`, `'invalid_request'`, `'model_not_found'`, `'server_error'`, `'max_output_tokens'`, or `'unknown'`. `'model_not_found'` means the selected model doesn't exist or isn't available to your account or deployment. `'overloaded'` means the API returned a 529 because the server is at capacity, as opposed to `'rate_limit'`, which is a 429 against your quota. `'account_on_hold'` means [your account is on hold](/docs/en/errors#your-account-is-on-hold). +`SDKAssistantMessageError` is one of: `'authentication_failed'`, `'oauth_org_not_allowed'`, `'account_on_hold'`, `'billing_error'`, `'rate_limit'`, `'overloaded'`, `'invalid_request'`, `'model_not_found'`, `'server_error'`, `'max_output_tokens'`, `'cloud_credential_error'`, or `'unknown'`. Four of these values mean more than their names say: + +* `'model_not_found'`: the selected model doesn't exist or isn't available to your account or deployment +* `'overloaded'`: the API returned a 529 because the server is at capacity, as opposed to `'rate_limit'`, which is a 429 against your quota +* `'account_on_hold'`: [your account is on hold](/docs/en/errors#your-account-is-on-hold) +* `'cloud_credential_error'`: Claude Code couldn't obtain usable AWS or Google Cloud credentials on the machine it runs on, so no request reached the cloud provider. The usual cause is a cloud sign-in that expired or was never completed on that machine, though a briefly unreachable credential service reports the same value. See [Could not load AWS or Google Cloud credentials](/docs/en/errors#could-not-load-aws-or-google-cloud-credentials). Requires TypeScript Agent SDK v0.3.267 or later, which bundles Claude Code v2.1.267 `aborted` is `true` when an interrupt or abort truncated the assistant message before the stream completed: the message has no `stop_reason` and the content may end mid-word. The field is absent on normally completed messages. It requires Agent SDK v0.3.214 or later. @@ -1321,9 +1326,9 @@ Several fields on the result carry diagnostic detail beyond `subtype`: * `api_error_status`: the HTTP status code of the API error that terminated the conversation. Absent or `null` when the turn ended without an API error. * `ttft_ms`: time to first token in milliseconds, measured when the first complete assistant message arrives. Present on the success arm only. * `ttft_stream_ms`: time in milliseconds until the first `message_start` stream event, when the response stream opens. Lower than `ttft_ms`; the gap between the two is time spent streaming the first message. Present on the success arm only. -* `user_message_uuid`: the `uuid` of the message you sent that started this turn. See [`user_message_uuid`](#user_message_uuid) for which results carry it. +* `user_message_uuid`: the `uuid` of the message you sent that this turn answered. See [`user_message_uuid`](#user_message_uuid) for which results carry it. * `user_message_uuids`: the `uuid`s of every message you sent that Claude Code answered in this turn. See [`user_message_uuids`](#user_message_uuids). -* `request_sent_wall_ms`: epoch milliseconds at which Claude Code dispatched the API request, for joins against server-side timestamps. Present on the success arm only, together with `user_message_uuid`, when `is_error` is false. +* `request_sent_wall_ms`: epoch milliseconds at which Claude Code dispatched the API request, for joins against server-side timestamps. Present only together with [`user_message_uuid`](#user_message_uuid), on a success result with `is_error` false whose turn sent an API request. * `first_content_frame_ms`: time in milliseconds until the first `content_block_start` or `content_block_delta` stream event, counting thinking blocks as content. Present on the success arm only, when `is_error` is false. Requires Agent SDK v0.3.260 or later. * `first_stream_post_ms`, `first_stream_post_ack_ms`, `first_stream_post_wall_ms`: timings for uploading the turn's first stream event. Claude Code records them only in sessions it streams to claude.ai, such as [cloud sessions](/docs/en/claude-code-on-the-web), and the results `query()` yields don't carry them. Requires Agent SDK v0.3.260 or later. * `usage`: main agent loop only. Excludes subagent and auxiliary model calls, and is per-turn in streaming-input sessions. Prefer `modelUsage` for token/cost accounting. @@ -1359,28 +1364,34 @@ When a `PreToolUse` hook returns `permissionDecision: "defer"`, the result has ` #### `user_message_uuid` -The `uuid` of the [`SDKUserMessage`](#sdkusermessage) that started the turn, echoed so you can match Claude Code's reply to the message you sent. Claude Code echoes it only if you set `uuid` on that message. The field is optional on `SDKUserMessage`, and a string prompt passed to `query()` carries none. +The `uuid` of the [`SDKUserMessage`](#sdkusermessage) the turn is answering, echoed so you can match Claude Code's reply to the message you sent. Claude Code echoes a `uuid` only if you set one on the message. The field is optional on `SDKUserMessage`, and a string prompt passed to `query()` carries none. + +Which of your messages a turn answers depends on how the turn started: -When you send several messages close together, Claude Code can merge them into one turn. The field then carries only the last message's `uuid`. To match the reply to any of the merged messages, use [`user_message_uuids`](#user_message_uuids). +* **A regular message you sent**, meaning one without `isSynthetic: true`: the turn answers that message for its whole run. When you send several messages close together, Claude Code can merge them into one turn, and the field then carries only the last message's `uuid`. To match the reply to any of the merged messages, use [`user_message_uuids`](#user_message_uuids). +* **A message you sent with `isSynthetic: true`**: the turn answers that message at first. If Claude Code picks up a regular message of yours between tool calls, the turn answers the picked-up message from then on. Echoing a synthetic message's `uuid` requires Agent SDK v0.3.265 or later; earlier versions echo nothing on synthetic turns. +* **A prompt Claude Code generated itself**, such as the turn that continues interrupted work after a session restarts: the turn answers no message of yours at first and its frames carry no echo. If Claude Code picks up a regular message of yours between tool calls, the turn answers that message from then on. The pickup echo requires Agent SDK v0.3.265 or later; earlier versions echo nothing on these turns. -When you set `uuid`, Claude Code echoes it on three kinds of frame: +Claude Code echoes the answered message's `uuid` on three kinds of frame: -* **The result**: on the success arm with `is_error` false, together with `request_sent_wall_ms`, which requires Agent SDK v0.3.216 or later. Claude Code also echoes it on an error result that answers a message you sent, which requires Agent SDK v0.3.246 or later. -* **The turn's first reply**: the first [assistant message](#sdkassistantmessage), or with `includePartialMessages` the first [stream event](#sdkpartialassistantmessage) whose `event.type` isn't `ping`, so you can bind the reply before the result arrives. When a turn streams nothing, Claude Code sets it on the first assistant message instead. One reply frame per turn carries it. Requires Agent SDK v0.3.246 or later. +* **The result**: every result of a turn that answered a message you sent. Every such result carries it on Agent SDK v0.3.265 or later. Before v0.3.265, the success result of a turn that a regular message started lacked it when the turn sent no API request or ended with a deferred tool call. Before v0.3.246, error results lacked it too, and before v0.3.216 every result did. +* **The turn's first reply**: the first [assistant message](#sdkassistantmessage), or with `includePartialMessages` the first [stream event](#sdkpartialassistantmessage) whose `event.type` isn't `ping`, so you can bind the reply before the result arrives. When a turn streams nothing, Claude Code sets it on the first assistant message instead. The first-reply echo requires Agent SDK v0.3.246 or later. When the message the turn is answering changes mid-turn, the first reply after the change carries the field too, on Agent SDK v0.3.265 or later; earlier versions set it on one reply frame per turn. * **Every [`thinking_tokens`](#sdkthinkingtokensmessage) frame of the turn**: so you can attribute thinking progress to the message you sent without waiting for the turn's first reply. Requires Agent SDK v0.3.260 or later. Claude Code omits the field in these cases: -* Later assistant messages and stream events of the same turn +* Reply frames other than those first replies * Subagent frames -* Synthetic turns, such as scheduled ones +* Turns that answer no message with a `uuid`: the turn answered a message you sent without one, or Claude Code started the turn itself and picked up no regular message that has one * Results that answer no message you sent, such as the zeroed result after a crashed worker process #### `user_message_uuids` The `uuid`s of every message you sent that Claude Code answered in this turn. When you send several messages close together, Claude Code can merge them into one turn, and `user_message_uuid` then names only the last of them. To match the reply to any of the merged messages, look for that message's `uuid` anywhere in this list. Requires Agent SDK v0.3.259 or later. -Claude Code sets the list together with `user_message_uuid` on the turn's first reply and on the result. For the full set of frames that carry `user_message_uuid`, and the version each requires, see [`user_message_uuid`](#user_message_uuid). The list always contains `user_message_uuid` and holds at most 64 entries. A message you send while the turn is running that Claude Code picks up between tool calls appears only in the result's list. +Claude Code sets the list together with `user_message_uuid` on each reply frame that carries that field and on the result. For the full set of frames that carry `user_message_uuid`, and the version each requires, see [`user_message_uuid`](#user_message_uuid). The list always contains `user_message_uuid` and holds at most 64 entries. + +When Claude Code picks up a regular message you sent while a turn was running, it adds that message's `uuid` to the result's list. When a first reply or result carries `user_message_uuid` without the list, it came from an earlier Claude Code version, so fall back to the single field. @@ -1452,12 +1463,12 @@ type SDKPartialAssistantMessage = { uuid: UUID; session_id: string; ttft_ms?: number; // Time to first token in ms, present only on message_start events - user_message_uuid?: string; // Present on at most one stream event per turn + user_message_uuid?: string; user_message_uuids?: string[]; }; ``` -Claude Code sets `user_message_uuid` and `user_message_uuids` on one stream event per turn, under the conditions in [`user_message_uuid`](#user_message_uuid). +Claude Code sets `user_message_uuid` and `user_message_uuids` on the turn's first non-ping stream event, and again when the message the turn is answering changes, under the conditions in [`user_message_uuid`](#user_message_uuid). ### `SDKCompactBoundaryMessage` @@ -2506,7 +2517,7 @@ type ToolInputSchemas = **Tool name:** `Agent`. The previous name `Task` is still accepted as an alias, and the `tools` array in the [`SDKSystemMessage`](#sdksystemmessage) init message currently lists this tool as `Task` for backward compatibility. - The `mode` field is deprecated and ignored on Claude Code v2.1.212 or later: subagents [inherit the parent session's permission mode](/docs/en/agent-sdk/permissions#available-modes), and a subagent definition's [`permissionMode`](#agentdefinition) can override it, except when the parent uses `bypassPermissions`, `acceptEdits`, or `auto`. On v2.1.223 or later, Claude Code ignores a definition's `permissionMode: "bypassPermissions"` when bypass mode is disabled by [`permissions.disableBypassPermissionsMode`](/docs/en/permissions#managed-settings). + The `mode` field is deprecated and ignored on Claude Code v2.1.212 or later. A subagent runs in either the parent session's permission mode or its definition's [`permissionMode`](#agentdefinition), and the [subagent inheritance rules](/docs/en/agent-sdk/permissions#available-modes) decide which. ```typescript theme={null} @@ -2518,7 +2529,7 @@ type AgentInput = { run_in_background?: boolean; name?: string; team_name?: string; // Deprecated; ignored - mode?: "acceptEdits" | "auto" | "bypassPermissions" | "default" | "dontAsk" | "plan"; // Deprecated; ignored. Subagents inherit the parent session's permission mode; agent-definition frontmatter may override it + mode?: "acceptEdits" | "auto" | "bypassPermissions" | "default" | "dontAsk" | "plan"; // Deprecated; ignored. The subagent inheritance rules decide a subagent's permission mode isolation?: "worktree" | "remote"; }; ``` @@ -2559,7 +2570,7 @@ type BashInput = { }; ``` -Executes Bash commands with optional timeout and background execution. The working directory persists between commands; shell state such as exported environment variables doesn't. +Executes Bash commands with optional timeout and background execution. The working directory persists between commands, including commands run in later turns of a multi-turn session; shell state such as exported environment variables doesn't. For the limits on which directory changes carry over, see [What persists between commands](/docs/en/tools-reference#what-persists-between-commands). ### Monitor @@ -4829,7 +4840,7 @@ To render a retry indicator from `subagent_retry`: * Track the indicator by `parent_tool_use_id`, which is unique per subagent. `tool_use_id` is shared by parallel subagents from one assistant turn, so tracking by it would let one subagent's update clear another's indicator. * Clear the indicator when a later `tool_progress` for the same `parent_tool_use_id` arrives with neither `subagent_retry` nor `heartbeat: true`, or when the tool's result message arrives. Frames with `heartbeat: true` report liveness only, so keep the indicator when one arrives. `attempt` can exceed `max_retries` under persistent retry, so don't derive clearing from the counters. -* Treat `error_category` as a closed set of tokens for choosing your own message text, not as display text: `rate_limit`, `overloaded`, `authentication_failed`, `server_error`, or `unknown`. +* Treat `error_category` as a token for choosing your own message text, not as display text. The values are `rate_limit`, `overloaded`, `authentication_failed`, `server_error`, `cloud_credential_error`, and `unknown`. Handle a value you don't recognize the way you handle `unknown`, because later releases can add values. ### `SDKAuthStatusMessage` diff --git a/content/en/docs/claude-code/agent-teams.md b/content/en/docs/claude-code/agent-teams.md index 2193e4b3d..4d15453a2 100644 --- a/content/en/docs/claude-code/agent-teams.md +++ b/content/en/docs/claude-code/agent-teams.md @@ -149,7 +149,7 @@ Claude Code picks each teammate's model from the first of these that applies: 3. [`CLAUDE_CODE_SUBAGENT_MODEL`](/docs/en/model-config#environment-variables), when it's set to anything other than `inherit`. 4. The lead's current model. -[`CLAUDE_CODE_SUBAGENT_MODEL_FORCE`](/docs/en/sub-agents#run-every-subagent-on-one-model) applies to teammates as well as to subagents. +If you set [`CLAUDE_CODE_SUBAGENT_MODEL_FORCE=1`](/docs/en/sub-agents#run-every-subagent-on-one-model), the first two sources don't apply. Claude Code picks every teammate's model from `CLAUDE_CODE_SUBAGENT_MODEL` when it's set to anything other than `inherit`, and from the lead's current model otherwise. Requires Claude Code v2.1.257 or later. Before v2.1.251, `CLAUDE_CODE_SUBAGENT_MODEL` came first in this order. diff --git a/content/en/docs/claude-code/agent-view.md b/content/en/docs/claude-code/agent-view.md index 3d57eca51..0240bbbb3 100644 --- a/content/en/docs/claude-code/agent-view.md +++ b/content/en/docs/claude-code/agent-view.md @@ -443,7 +443,7 @@ claude --agent code-reviewer --bg "address review comments on PR 1234" If the name doesn't match any of your subagents, the launch fails: Claude Code prints a `no agent named` warning and still reports the session as backgrounded, but the session exits immediately with an `--agent '' not found` error. -When the backgrounded session later resumes or restarts, Claude Code restores the agent's system prompt and tool restrictions. It searches the session's own directory for the agent first, provided you've [trusted that workspace](/docs/en/permissions#project-allow-rules-and-workspace-trust), so a project-scoped agent still loads when the session is resumed from another directory. If the agent no longer exists, the session continues with the default tools and system prompt and its transcript opens with a [warning naming the agent](/docs/en/errors#session-agent-no-longer-available). +When the backgrounded session later resumes or restarts, Claude Code restores the agent and its tool restrictions; for its system prompt, see [System prompt flags in resumed conversations](/docs/en/cli-reference#system-prompt-flags-in-resumed-conversations). It searches the session's own directory for the agent first, provided you've [trusted that workspace](/docs/en/permissions#project-allow-rules-and-workspace-trust), so a project-scoped agent still loads when the session is resumed from another directory. If the agent no longer exists, the session continues with the default tools and its transcript opens with a [warning naming the agent](/docs/en/errors#session-agent-no-longer-available). To continue an existing conversation in the background, pass its full session ID with `--resume`: @@ -756,7 +756,7 @@ Session state is stored under your Claude Code config directory. If you set [`CL | `~/.claude/daemon.log` | Supervisor log | | `~/.claude/daemon/roster.json` | List of running background sessions, used to reconnect after a restart | | `~/.claude/jobs//state.json` | Per-session state shown in agent view. Read it through [`claude agents --json`](#read-session-state-from-a-script) instead of parsing the file | -| `~/.claude/jobs//tmp/` | Per-session scratch directory. Writes here don't prompt for permission. Removed when the session is deleted | +| `~/.claude/jobs//tmp/` | Per-session scratch directory. Claude's `Write` and `Edit` calls here don't prompt for permission. Removed when the session is deleted | Each background session has the `CLAUDE_JOB_DIR` environment variable set to its `~/.claude/jobs/` directory, so shell commands the session runs can write temporary files to `$CLAUDE_JOB_DIR/tmp` without colliding with parallel sessions. diff --git a/content/en/docs/claude-code/amazon-bedrock.md b/content/en/docs/claude-code/amazon-bedrock.md index db0aff3e0..9e1f01261 100644 --- a/content/en/docs/claude-code/amazon-bedrock.md +++ b/content/en/docs/claude-code/amazon-bedrock.md @@ -178,6 +178,8 @@ The cache covers every credential option above except an Amazon Bedrock API key, Each resolve of the chain times out after 60 seconds. If a step in the chain stalls, for example a `credential_process` helper that waits for input it can't receive, the request fails with [`AWS default-chain credential resolve timed out`](/docs/en/errors#aws-default-chain-credential-resolve-timed-out). If your chain runs an interactive sign-in that legitimately needs longer, such as browser-based SSO with MFA through a wrapper like `aws-vault`, raise the limit in milliseconds with [`CLAUDE_CODE_AWS_CHAIN_RESOLVE_TIMEOUT_MS`](/docs/en/env-vars). Before v2.1.207, a stalled credential resolution left the request waiting indefinitely. +Except when you authenticate with an Amazon Bedrock API key, the [setup wizard](#sign-in-with-bedrock) applies the same limit to each AWS call it makes while verifying your credentials, and to the credential lookup before each model check. During credential verification, a check that exceeds it fails with [`Timed out after 60s waiting for AWS`](/docs/en/errors#bedrock-setup-verification-timed-out-waiting-for-aws). + #### Advanced credential configuration Claude Code supports automatic credential refresh for AWS SSO and corporate identity providers. Add these settings to your Claude Code settings file (see [Settings](/docs/en/settings) for file locations). @@ -553,6 +555,21 @@ If browser tabs spawn repeatedly when using AWS SSO, remove the `awsAuthRefresh` If your network environment interferes with automatic browser-based SSO flows, use `aws sso login` manually before starting Claude Code instead of relying on `awsAuthRefresh`. +### Certificate errors behind a TLS-inspecting proxy + +Claude Code applies your [CA certificate store](/docs/en/network-config#ca-certificate-store) configuration to its requests to AWS, including: + +* Model discovery +* Token counting +* The STS and SSO role-credential calls that resolve your AWS credentials +* The [setup wizard](#sign-in-with-bedrock)'s credential verification and model checks + +For these requests, a corporate root certificate in your OS trust store or `NODE_EXTRA_CA_CERTS` bundle needs no Amazon Bedrock-specific setup. + +Before v2.1.260, Claude Code applied your CA configuration to these requests only when they went through a configured proxy, and on a direct connection they trusted only the runtime's default certificate store. + +Before v2.1.261, the credential lookup behind the setup wizard's model checks with the **Use credentials already in my environment** option still trusted only the runtime's default certificate store. Behind a TLS-inspecting proxy whose root certificate is only in the OS store, the affected requests failed with `unable to get local issuer certificate`, or the wizard showed models as `unreachable`, while inference requests succeeded. Update to v2.1.261 or later. + ### Region issues If you encounter region issues: diff --git a/content/en/docs/claude-code/artifacts.md b/content/en/docs/claude-code/artifacts.md index c61bdc4b7..d61864eb1 100644 --- a/content/en/docs/claude-code/artifacts.md +++ b/content/en/docs/claude-code/artifacts.md @@ -52,7 +52,7 @@ Unless you name a location, Claude writes the page to an HTML or Markdown file i After you approve an artifact once, Claude Code republishes it without asking, and asks again in some cases, including when: -* Claude declares a runtime capability for the page, such as [connector calls](#pull-live-data-with-mcp-connectors) +* Claude declares a runtime capability for the page, such as [connector calls](#pull-live-data-with-mcp-connectors) or [file downloads](#offer-a-file-download) * You have since [shared it publicly](#share-an-artifact) * You have since shared it with specific people or your organization with the latest version chosen as the version viewers see @@ -101,6 +101,12 @@ People you share with are viewers by default: they see each version you publish An editor publishes new versions the same way you [update the artifact from another session](#update-an-artifact): they give Claude the artifact's URL, or attach it from [`/artifacts`](#find-an-artifact-again), and Claude pulls the current content and republishes with their changes. Everyone with the page open sees each update live. +## Read an artifact shared with you + +When someone shares an artifact with you, you can have Claude read it: give Claude its URL, or attach it from [`/artifacts`](#find-an-artifact-again). + +Claude reads a page someone else wrote the way it reads a web page with [WebFetch](/docs/en/tools-reference#webfetch-tool-behavior): it gets a summary of what it asked about rather than the raw page, and the summary reports instructions written into the page instead of relaying them. Claude Code also saves the page's full source to a local file, which Claude can open when it needs the exact content, such as to republish the artifact as an [editor](#let-someone-edit-with-you). + ## Collect comments on an artifact When you share an artifact within your organization, the people you share it with can leave comments on the page, and you can have Claude read those comments and reply to them. You need Claude Code v2.1.221 or later and a Team or Enterprise plan, because only an artifact you [share within your organization](#share-an-artifact) takes comments. Claude reads the comments in two cases: @@ -179,6 +185,23 @@ When a connector-backed page renders but its live sections stay empty for someon * **The viewer hasn't connected the connector**: connectors are per-account, so each viewer needs their own connection to every connector the page calls. They can add one under **Settings > Connectors** on claude.ai, then reload the page. * **The viewer declined the permission ask**: a denial lasts for the rest of that page load. Reloading the page brings the permission ask back. * **Connector calls are turned off for the organization**: an Owner controls the [**Enable artifact connectors** toggle](#control-connector-calls-from-artifacts) in admin settings. +* **The page calls tool names the connector doesn't expose**: the affected sections stay empty for everyone, including you. This can happen when a page names the individual tools behind a gateway-style connector that exposes only a few tools of its own. Ask Claude to fix the tool names the page calls and publish it again. + + When Claude publishes the page and that connector's tools are available in your session, Claude Code checks the tool names the page declares against them, warns Claude about names that don't match, and refuses the publish when none do. Before v2.1.265, it published the page without checking them. + +## Offer a file download + +An artifact can offer viewers a file the page generates, such as a CSV export of a table or a PNG of a chart. The viewer saves it through a download control on the page, such as a button. File downloads are a runtime capability that claude.ai enables per account, so Claude checks whether your account has it before it builds the control. + +Viewers can't save a file from an ordinary download link or a script on the page, because the artifact viewer on claude.ai blocks any download the page starts itself, including links to `data:` or `blob:` URLs. If a page has download buttons built that way, ask Claude to rebuild them with the downloads capability. + +To offer a file, ask for the control and the file format in your prompt: + +```text wrap theme={null} +Add a button that downloads this table as a CSV file. +``` + +Claude declares the downloads capability as part of publishing, the same way it [declares connectors](#pull-live-data-with-mcp-connectors). ## What you can build @@ -260,6 +283,7 @@ Each artifact is one self-contained page. Claude Code wraps the file you publish | :---------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | External requests | The page can load typefaces from Google Fonts, and scripts from [four public CDN hosts](#allowlist-the-viewer-domain): cdnjs, the Tailwind and jQuery CDNs, and selected paths on jsDelivr such as `/npm/`. The CSP blocks every external image and all other external scripts, stylesheets, and fonts, and lets `fetch`, XHR, and WebSocket calls reach only the page's own origin and the Google Fonts hosts. Claude therefore loads any library the page needs from one of those CDNs, inlines all other CSS and JavaScript, and embeds images as data URIs. [Connector calls](#pull-live-data-with-mcp-connectors) go through claude.ai, which makes the network call itself. | | No backend | An artifact is a static page. It can't store data submitted through a form or authenticate viewers itself. Its only way to fetch data when someone views it is [calling MCP connectors](#pull-live-data-with-mcp-connectors), not an API of its own. | +| Downloads | The page can't start a download itself. To let viewers save a file the page generates, Claude declares the downloads capability. See [Offer a file download](#offer-a-file-download). | | Single page | Relative links do not resolve, because nothing is deployed alongside the page. For multi-section content, Claude uses in-page anchors rather than separate files. | | Source file types | The published file must be `.html`, `.htm`, or `.md`. Markdown files render as styled HTML. | | Rendered size | The rendered page must be 16 MiB or smaller. Large embedded images are the usual cause when a publish fails for size. | diff --git a/content/en/docs/claude-code/authentication.md b/content/en/docs/claude-code/authentication.md index fa8b25d2e..4dc62b648 100644 --- a/content/en/docs/claude-code/authentication.md +++ b/content/en/docs/claude-code/authentication.md @@ -120,6 +120,8 @@ After you sign in without a key, you have a profile instead of a stored API key: * **What it signs you out of**: Claude Code signs you out of any claude.ai login stored on the machine * **How to undo it**: run `/logout`, which removes and revokes the credential this sign-in wrote +If your organization uses [server-managed settings](/docs/en/server-managed-settings), they apply to this sign-in on Claude Code v2.1.257 or later. + Everything else about profiles applies to this sign-in, including where it ranks against your other credentials, the `Profile` row you get in `/status`, and the features that need a claude.ai login. See [Anthropic profiles and federation credentials](#anthropic-profiles-and-federation-credentials). ### Cloud provider authentication @@ -213,7 +215,11 @@ When multiple credentials are present, Claude Code chooses one in this order: A signed-in [Claude apps gateway](/docs/en/claude-apps-gateway) session sits outside this list: it is a provider selection like Amazon Bedrock or Google Cloud's Agent Platform, and it outranks them. When a gateway session exists, the CLI authenticates with the gateway token even if `CLAUDE_CODE_USE_BEDROCK`, `CLAUDE_CODE_USE_VERTEX`, or `CLAUDE_CODE_USE_FOUNDRY` is set, and credential sources above such as the bearer token, API key, `apiKeyHelper`, and profiles are not used. -If you have an active Claude subscription but also have `ANTHROPIC_API_KEY` set in your environment, the API key takes precedence once approved. This can cause authentication failures if the key belongs to a disabled or expired organization. Run `unset ANTHROPIC_API_KEY` to fall back to your subscription, and check `/status` to confirm which method is active. The `Login method` row shows your subscription account, and an `API key` row appears when an API key is in use. +If your machine's [managed settings](/docs/en/managed-settings) set [`forceLoginMethod`](/docs/en/settings-reference#forceloginmethod) to `"gateway"` or set [`forceLoginGatewayUrl`](/docs/en/settings-reference#forcelogingatewayurl), and you don't select a cloud provider through a variable such as `CLAUDE_CODE_USE_BEDROCK` or `CLAUDE_CODE_USE_VERTEX`, your session uses only the gateway sign-in. Claude Code skips the other credential sources and asks you to sign in with `/login`. See [Administrator policy requires a Cloud gateway sign-in](/docs/en/errors#administrator-policy-requires-a-cloud-gateway-sign-in) for what you see with each leftover credential. Before v2.1.261, or before v2.1.265 on a machine that sets only `forceLoginGatewayUrl`, Claude Code used a leftover saved login on these machines until you signed in to the gateway. + +If you have an active Claude subscription but also have `ANTHROPIC_API_KEY` set in your environment, Claude Code uses the API key once you approve it. This can cause authentication failures if the key belongs to a disabled or expired organization. + +Run `unset ANTHROPIC_API_KEY` to fall back to your subscription, and check `/status` to confirm which method is active. When a login and an API key are both configured, `/status` marks the credential that isn't in use. [Claude Code on the Web](/docs/en/claude-code-on-the-web) always uses your subscription credentials. If you set `ANTHROPIC_API_KEY` or `ANTHROPIC_AUTH_TOKEN` in the sandbox environment, it doesn't override your subscription credentials. @@ -233,7 +239,11 @@ Claude Code checks three sources in this order and stops at the first one that i The `user_oauth` rule keeps a leftover `ant auth login` profile from moving your requests off the account you signed in to with `/login`. For the federation variables, Claude Code also reads the other variables in the [WIF reference](https://platform.claude.com/docs/en/manage-claude/wif-reference#environment-variables), such as `ANTHROPIC_IDENTITY_TOKEN_FILE`, when it exchanges your identity token. For the profile file format, see the [WIF reference](https://platform.claude.com/docs/en/manage-claude/wif-reference#profile-configuration-file). -To confirm which source Claude Code chose, run `/status`: a `Profile` row names the source in place of the `Login method` row. If you start Claude Code with `--debug`, it also writes a `Using Anthropic profile auth` line with the source name to the debug log at `~/.claude/debug/.txt`. When Claude Code passes over a `user_oauth` active profile because you have a working `/login` credential, it writes a warning to the debug log saying it's using the claude.ai login instead. When a `user_oauth` profile's login has expired and Claude Code can't renew it, requests fail with [Anthropic profile login expired](/docs/en/errors#anthropic-profile-login-expired). +To confirm which source Claude Code chose, run `/status`. A `Profile` row names the source in place of the `Login method` row. When the profile is the credential in use, `Organization` and `Email` rows show its account. + +If you start Claude Code with `--debug`, it also writes a `Using Anthropic profile auth` line with the source name to the debug log at `~/.claude/debug/.txt`. When Claude Code skips a `user_oauth` active profile because you have a working `/login` credential, it writes a warning to the debug log saying it's using the claude.ai login instead. + +When a `user_oauth` profile's login has expired and Claude Code can't renew it, requests fail with [Anthropic profile login expired](/docs/en/errors#anthropic-profile-login-expired). Features that need your claude.ai login, such as [claude.ai connectors](/docs/en/mcp#use-mcp-servers-from-claude-ai) and [`/schedule`](/docs/en/routines), aren't available while one of these sources is selected. To stop Claude Code from selecting a source: diff --git a/content/en/docs/claude-code/auto-mode-config.md b/content/en/docs/claude-code/auto-mode-config.md index 1162b72ea..24de1b28c 100644 --- a/content/en/docs/claude-code/auto-mode-config.md +++ b/content/en/docs/claude-code/auto-mode-config.md @@ -34,7 +34,7 @@ Auto mode allows pushes to any branch of the repository you're working in, inclu Before v2.1.211, the classifier allowed pushes only to your working branch, branches Claude created, and routine pushes to the default branch. -If you want a human checkpoint before every push or pull request, add permission rules: the [recipes below](#add-a-human-checkpoint) keep auto mode on for everything else. +If you want a human checkpoint before Claude's push and pull request commands, add permission rules: the [recipes below](#add-a-human-checkpoint) keep auto mode on for everything else. ### Add a human checkpoint @@ -51,11 +51,13 @@ The most direct mechanism is [`permissions.ask`](/docs/en/permissions#permission } ``` +These rules match commands that begin with `git push` or `gh pr create`. A push Claude writes another way, such as `git -C push` or `git -c = push`, [doesn't match the rule](/docs/en/permissions#bash-rule-limits), so it isn't checkpointed. For a checkpoint that inspects the full command text, add a [PreToolUse hook](/docs/en/hooks#pretooluse). + Pick the mechanism that matches how firm the boundary needs to be: | Boundary | Mechanism | Behavior in auto mode | | :-------------------------------- | :--------------------------------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| Prompt before the action | `permissions.ask` | Always prompts for content-scoped rules like the recipe above. The classifier cannot auto-approve a matching action. | +| Prompt before the action | `permissions.ask` | Always prompts for a command that matches a content-scoped rule like the recipe above. The classifier cannot auto-approve a matching action. | | Never run the action | `permissions.deny` | Blocks before the classifier is consulted. Neither the classifier nor user intent can override it. | | One-off boundary for this session | State it in conversation, like "don't push until I review" | The classifier blocks matching actions, but the boundary can be lost if [context compaction](/docs/en/costs#reduce-token-usage) removes the message that stated it. Use an ask or deny rule for a durable guarantee. | diff --git a/content/en/docs/claude-code/changelog.md b/content/en/docs/claude-code/changelog.md index 366568d7c..b8f4edf2f 100644 --- a/content/en/docs/claude-code/changelog.md +++ b/content/en/docs/claude-code/changelog.md @@ -10,6 +10,62 @@ This page is generated from the [CHANGELOG.md on GitHub](https://github.com/anth Run `claude --version` to check your installed version. + + * Added `maxEffortLevel` setting (top-level or per model under `modelSettings`): caps the effort level on every provider, including Bedrock, Vertex and Foundry; users can still pick a lower level + * Added `--system-prompt-snapshot off` to render the system prompt fresh on every request instead of reusing the conversation's recorded prompt (for iterating on prompt text) + * Fixed Cowork scheduled tasks in the cloud failing at startup for organizations whose managed settings require sandboxing + * Fixed `/context` and other local command output rendering blank on mobile clients + * Fixed shift+enter and option+backspace not working after reconnecting to a tmux or ssh session inside an agent view + * Fixed the dim last-prompt header not appearing at the top of the conversation when scrolling up in fullscreen mode + * Fixed Workflow `agent()` calls with large output schemas being refused in auto mode instead of being checked by the safety classifier + * Fixed a case where a marketplace entry path containing a backslash could bypass the containment check for fetched marketplaces on macOS and Linux + * Fixed expired AWS or Google Cloud credentials under a host app such as Claude Desktop retrying ten times with a generic "request failed" before the re-authenticate error appeared + * Fixed resuming a session after `/compact` or another slash command ran via `-p --resume`: a spurious "Continue from where you left off." turn is no longer inserted + * Fixed resuming a large session (transcript over 5 MB): parallel tool calls and their hook output are no longer dropped from the reloaded conversation + * Fixed managed `allowedHttpHookUrls`, `httpHookAllowedEnvVars` and `allowedChannelPlugins` to admit nothing, not everything, when unreadable + * Fixed `/login` on machines whose managed settings require Claude apps gateway sign-in: Esc now closes the dialog instead of doing nothing + * Fixed artifact publishes cut off by a dropped connection mid-upload: they now retry once when Claude Code can tell the upload never completed, instead of reporting an unknown outcome + * Fixed `effort:` frontmatter on custom commands, skills, and subagents being ignored on models whose default effort is still pinned (Opus 4.7, Opus 4.8, Fable 5) + * Fixed artifact publish failing with an unhelpful error when the page file isn't valid UTF-8 or contains a replacement character (U+FFFD); the error now names the line and column to fix + * Fixed `claude agents` `@` directory menu not listing repositories created after the session started + * Fixed Remote Control clients that join a Claude Desktop or VS Code session showing a stale permission mode until it was changed again + * Fixed `claude remote-control` exiting and dropping every attached session when its server credential expires (about 30 days after start); the host now re-registers and keeps going + * Fixed the usage-limit warning flickering on and off during a session when requests for different models or modes report different limit windows + * Fixed earlier reasoning being dropped when an MCP server re-sends, or a built-in tool re-renders, a tool the model already loaded + * Fixed a tool that disappears mid-conversation, from a disconnected MCP server or an upgrade, rewriting the tool list and discarding earlier thinking + * Fixed a background worker forked from a conversation adding EnterWorktree to the conversation's tool block mid-session, which broke prompt-cache reuse + * Fixed mid-session MCP and plugin tools being added to the tool list in sessions without ToolSearch, which broke prompt-cache reuse; supported models now receive them as deferred definitions + * Fixed switching models with /model re-sending every tool definition (a prompt-cache miss); commit and PR attribution text now arrives as a conversation note that updates on model changes + * Fixed resumed sessions rewriting the inline tool set when an MCP connector reconnects at a different moment than before + * Fixed resumed sessions re-rendering tool descriptions instead of replaying the recorded ones when the first turn ran a tool + * Fixed prompt-cache misses and dropped extended thinking when a claude.ai connector's tools change between a session and its resume + * Fixed resumed sessions rewriting earlier MCP tool announcements (and dropping extended thinking) before their connectors reconnect + * Fixed a prompt-cache break when a print-mode (`-p`) conversation is resumed interactively: the system prompt prefix no longer changes + * Improved the `/diff` panel: it no longer flashes "0 files changed" and a spinner before settling, and its empty state is centered in the panel + * Improved the Bash tool's description guidance so Claude describes what a command does in plain words instead of echoing the command + * Improved sandbox guidance so Claude suggests `/copy` when clipboard commands such as `pbcopy` fail inside the sandbox + * Improved `--resume` first-render time for sessions with many Bash tool calls + * Improved prompt input responsiveness: keystrokes no longer occasionally wait a frame behind spinner or streaming repaints + * Improved prompt-cache stability: subagents and sessions started with `--system-prompt` or `--append-system-prompt` now record the system prompt and tool definitions once instead of re-rendering them + * Improved Artifact tool publish errors: when a publish is refused, the message now says why and what to do about it + * Self-hosted runner: Changed `--use-anthropic-git-proxy` to be reported to the server at registration and to print a warning for each session that still clones through the legacy git proxy + * Gateway: Changed `forward_user_identity` upstreams to return a 429 as-is to a developer whose email was forwarded, instead of failing over to the next upstream, so the proxy's per-user limits hold + * \[VSCode] Fixed the extension host hanging at 100% CPU when forking, editing an earlier message, or rewinding in a conversation whose saved transcript contains a cyclic parent link + * \[VSCode] Fixed pasting a screenshot on WSL2/WSLg inserting raw image bytes into the chat input; the image is now attached when the clipboard provides it, otherwise the paste is ignored + * \[VSCode] Fixed chat diff blocks always rendering with a dark editor theme; they now follow the active VS Code color theme, including high contrast + * \[VSCode] Fixed mixed right-to-left and English text rendering in the wrong order while typing in the message input + * \[VSCode] Fixed accepting an edit in the diff view on a file with Windows (CRLF) line endings failing with "String not found in file" + * \[VSCode] Fixed @-mentions dropping files whose paths contain spaces + * \[VSCode] Fixed the sessions list view failing to load in windows connected over Remote-SSH when the workspace folder exists only on the remote host + * \[VSCode] Fixed runaway ripgrep processes when viewing files in large or symlink-heavy workspaces + * \[Claude Code on the web] Fixed GitHub Enterprise Server sessions showing your GitHub account as disconnected once its token expired; PR and issue operations now refresh it automatically + * \[Claude Code on the web] Fixed `gh` and GitHub API calls failing in organizations without the Claude GitHub App; they now use your connected GitHub account and say so when none is connected + * \[Claude Tag] Added a "Use a custom connector" link to the preset connection forms in Claude Tag admin settings, so you can switch to a custom connection without starting over + * \[Claude Tag] Fixed Claude replying "The API rejected the request as invalid" when the organization has run out of usage credits; the reply now says so and explains how to add more + * \[Claude Tag] Fixed thread requests to edit or delete a message Claude posted at the channel's top level being answered with a correction instead of reaching the session that posted it + * \[Claude Tag] Fixed **Connect** on Tool access requests under Admin settings > Review requests failing with "Authorization failed" or showing the requested access bundle as deleted + + * Fixed a 2.1.265 regression affecting LLM-gateway and proxy setups: the undocumented `CLAUDE_CODE_USE_GATEWAY` environment variable, previously ignored unless `ANTHROPIC_BASE_URL` and `ANTHROPIC_AUTH_TOKEN` were both set, began forcing Cloud-gateway sign-in on its own in 2.1.265, so configurations that set it alongside an API key, `apiKeyHelper`, or custom auth headers failed every request with "Not signed in to the Cloud gateway". The variable on its own is ignored again; no configuration change is needed diff --git a/content/en/docs/claude-code/claude-apps-gateway-deploy.md b/content/en/docs/claude-code/claude-apps-gateway-deploy.md index cfdfccebf..a3f659389 100644 --- a/content/en/docs/claude-code/claude-apps-gateway-deploy.md +++ b/content/en/docs/claude-code/claude-apps-gateway-deploy.md @@ -58,6 +58,8 @@ A few decisions shape the deployment beyond where it runs: Every production topology here puts an L7 proxy, such as an Ingress, Cloud Run's front end, or an ALB, in front of plain-HTTP replicas. Set [`listen.trusted_proxies`](/docs/en/claude-apps-gateway-config#listen) to the proxy's source ranges so the gateway reads client IPs from `X-Forwarded-For`. The gateway honors the header only when the TCP peer is trusted. The [Google Cloud](/docs/en/claude-apps-gateway-on-gcp) and [AWS](/docs/en/claude-apps-gateway-on-aws) worked examples have concrete values per topology. Without trusted proxies, every request appears to come from the proxy's IP, which collapses per-IP rate limits into one shared bucket and records the proxy's IP in audit events. +Don't redirect requests to the gateway's device-authorization and token endpoints, for example with an HTTP-to-HTTPS or host-canonicalization rewrite at the ingress. Claude Code doesn't follow redirects on those requests, so an ingress rule that redirects them breaks sign-in and token refresh. + Give the proxy any idle timeout longer than the gateway's keepalive interval, which depends on the upstream: * On every upstream except `provider: anthropic`, the gateway writes an SSE `ping` once a stream has been silent for about 15 seconds. @@ -106,7 +108,11 @@ For a complete worked example on Google Cloud, covering Cloud Run or GKE, Cloud ### Push the gateway URL to developer machines -Once the gateway is serving, push `forceLoginMethod`, `forceLoginGatewayUrl`, and `parentSettingsBehavior: "merge"` to each developer's machine through managed settings, via MDM or by writing the per-OS `managed-settings.json` directly. Without this, `/login` shows the standard account picker with no gateway option. See [Client-side managed settings](/docs/en/claude-apps-gateway-config#client-side-managed-settings) for the file paths and the Claude Desktop `bootstrapUrl` equivalent. +Once the gateway is serving, push `forceLoginMethod`, `forceLoginGatewayUrl`, and `parentSettingsBehavior: "merge"` to each developer's machine through managed settings, via MDM or by writing the per-OS `managed-settings.json` directly. Without this, `/login` shows the standard account picker with no gateway option. + +Once you deploy the keys, Claude Code stops using a leftover API key or claude.ai login on the machine, so plan the push together with your sign-in instructions. [Administrator policy requires a Cloud gateway sign-in](/docs/en/errors#administrator-policy-requires-a-cloud-gateway-sign-in) describes the messages developers see. + +See [Client-side managed settings](/docs/en/claude-apps-gateway-config#client-side-managed-settings) for the file paths and the Claude Desktop `bootstrapUrl` equivalent. ## Operations @@ -118,7 +124,9 @@ The gateway writes two streams to stderr, both JSON-friendly: * **Audit events**: single-line JSON per security-relevant event. Pipe stderr to your log aggregator. The events emitted include `config.load`, `session.mint`, `session.refresh`, `device.authorize`, `device.verify`, `device.callback`, `auth.denied`, `access.denied`, `inference`, `managed.serve`, `desktop_bootstrap.serve`, `desktop_bootstrap.denied`, `spend.blocked`, `admin.denied`, `admin.limit.upsert`, and `admin.limit.delete`. Fields vary by event: * Successful mint and refresh events carry `sub`, `email`, `client_ip`, and the result - * `auth.denied` and `access.denied` carry the reason and client IP, plus the request path for `auth.denied`, since no user identity exists at those denials + * `auth.denied` and `access.denied` carry the reason and client IP, plus the request path for `auth.denied`, since no user identity exists at those denials. Two `access.denied` reasons change what the event carries: + * `xff_unparseable`: the event also carries the `X-Forwarded-For` entry that couldn't be read + * `client_ip_unknown`: the event carries no client IP, because the connection had no peer address while an `access_control` list was set * `inference` records which upstream served the request and the response status * `desktop_bootstrap.denied` records a rejected Claude Desktop bootstrap fetch with the reason (`not_configured`, `policy_not_opted_in`, or `no_policy_matched`) and the user's identity * `admin.denied` records a rejected admin-API auth attempt with the client IP, method, path, and a reason, without the presented key material: `invalid_key` when an `x-api-key` was presented but matched no configured key, `bearer_rejected` when only an `Authorization` header was presented and it didn't verify as a gateway session in `admin.admin_groups`, or `no_credentials` when neither header was presented @@ -233,33 +241,37 @@ For questions and feedback, use [Claude Code support](https://support.claude.com The gateway's stderr includes the audit event stream, the audit log records developer identities, and the debug file records hook and MCP server output from the developer's machine. Review and redact these before posting to a public issue. -| Symptom | Cause | Fix | -| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| A developer's `/login` shows the standard account picker instead of the **Cloud gateway** screen | `forceLoginMethod` or `forceLoginGatewayUrl` isn't set in managed settings on that machine | Deploy the [managed settings file](/docs/en/claude-apps-gateway#set-the-gateway-url) to the device; `/login` reads the gateway URL from there | -| Claude Desktop reports that its bootstrap configuration couldn't be fetched | `/user/bootstrap` returned 404: the policy matching the user doesn't carry a `desktop` key, or no policy matched. The gateway's audit log records each rejection as `desktop_bootstrap.denied` with the reason. | Add a `desktop` block to the policy that matches the user, or to the `match: {}` base layer; an empty `desktop: {}` suffices. See [Claude Desktop overlay](/docs/en/claude-apps-gateway-config#claude-desktop-overlay). | -| Startup shows `Gateway login is configured in managed settings, but this Claude Code build does not include Cloud gateway support.` | The installed Claude Code build predates gateway support | Have the developer update Claude Code to a release that includes Cloud gateway support | -| CLI `/login`: `Gateway hosts must be on your organization's private network; resolves to the public (or unrecognized) address ` | The gateway hostname resolves to at least one public IP address. Claude Code checks each resolved address and requires every one to be private. A common cause is a dual-stack name where one family resolves to a public address, including AWS internal dual-stack load balancers, which return public-range AAAA addresses. | Have the gateway name resolve only to private addresses on developer machines. For a dual-stack name, drop the public-range record or serve a separate internal-only DNS name. See the [private-network prerequisite](/docs/en/claude-apps-gateway#prerequisites). | -| CLI `/login`: `Gateway login would go through proxy , which is not on a private network` | An `HTTPS_PROXY` or `HTTP_PROXY` applies to the gateway host and the proxy's hostname resolves to a public address. A proxy whose host resolves only to private addresses is allowed and doesn't trigger this error | Add the gateway host to `NO_PROXY` on the developer's machine so the connection is direct, or use a proxy whose hostname resolves to private addresses. The message names the exact `NO_PROXY` entry to add | -| CLI `/login`: `Could not resolve the configured HTTP proxy` | The hostname in `HTTPS_PROXY` or `HTTP_PROXY` doesn't resolve from the developer's machine, typically because it isn't connected to the corporate network | Have the developer connect to your network or VPN and retry, or fix the proxy URL | -| CLI `/login`: `Could not resolve gateway host ` | The machine can't resolve the gateway's internal DNS name, typically because it isn't on the corporate network | Have the developer connect to your network or VPN, then retry `/login` | -| Boot exits with a config validation error naming `store.postgres_url` | No Postgres configured; the gateway requires Postgres | Set `store.postgres_url`. For local development, use a throwaway container: `docker run --rm -p 5432:5432 -e POSTGRES_HOST_AUTH_METHOD=trust postgres`. | -| Boot exits: `requires the native binary` | Running under Node instead of the native binary | Install Claude Code with one of the [standalone install methods](/docs/en/setup) | -| Boot exits with an OIDC discovery error after `config.load` | `oidc.issuer` unreachable, or TLS chain not trusted | Check the issuer is reachable from the pod and serves `/.well-known/openid-configuration`. Set `ca_cert_pem` for private PKI. If the pod reaches the IdP only through a forward proxy, set [`oidc.use_proxy: true`](/docs/en/claude-apps-gateway-config#idp-requests-through-a-forward-proxy); on versions before v2.1.227, give the pod a direct route to each of the IdP's endpoints instead. | -| Boot exits with a Postgres permission error | The database role lacks DDL rights on its schema | Grant the role `CREATE` on the gateway's schema so it can create and alter its tables at boot | -| `/oauth/callback` shows "Sign-in could not be completed" | Email domain rejected, id\_token validation failed, or `email_verified` is explicitly `false`, which the gateway always rejects with no override | Check `allowed_email_domains` and that the IdP returns a verified `email` claim. For `email_verified: false`, fix the IdP-side verification. If your IdP emits email under a different claim name, set `oidc.email_claim`. | -| Log: `token exchange failed request_id=: id_token missing email claim` | The IdP isn't including `email` in the id\_token by default. This rejection fires only when `allowed_email_domains` is set; without it, a missing email mints a session with no email | Configure the IdP to emit `email` in the id\_token. Okta: add `email` to a custom authorization server's ID-token claims. Entra: add `email` as an optional claim on the app registration. PingFederate: enable an OpenID Connect Policy that emits `email`. If the IdP serves `email` from the userinfo endpoint but won't include it in the id\_token, such as the Okta org authorization server, set `oidc.userinfo_fallback: true`. | -| Every Amazon Bedrock request returns 502; log shows `Could not load credentials from any providers` | On EC2, IMDSv2's default hop limit of 1 blocks the instance-metadata request from inside the container. Boot and `/readyz` pass anyway because the AWS SDK resolves instance credentials on the first request, not at client construction | Raise the hop limit with `aws ec2 modify-instance-metadata-options --instance-id --http-put-response-hop-limit 2`, or set it in the launch template. The change applies to every container on the instance. Prefer ECS task roles where available, which read credentials from the ECS container-credentials endpoint and avoid the change entirely, or apply the change on a dedicated gateway instance to limit the exposure. | -| IdP error: unknown or unsupported scope | The IdP rejects scopes it doesn't recognize | Set `oidc.scopes` to exactly the list your IdP accepts; it must include `openid`. The default is `openid profile email offline_access`. | -| Sessions don't silently renew after setting `oidc.scopes` | `offline_access` was dropped from the override | Add `offline_access` back if your IdP supports it. Without a refresh token, developers re-run the browser login every `session.ttl_hours`. | -| Browser shows "This request came from another site and was blocked" | Cross-site form POST, blocked as CSRF protection. Expected for embedded or proxied pages | Open the verification link directly | -| Chrome blocks the Approve button with "Refused to send form data … violates … Content Security Policy directive: form-action", but the same page works in Safari or Firefox | Chrome enforces `form-action` against the entire redirect chain. Your IdP redirects onward to a second host that isn't allowlisted. | Add each additional origin in the redirect chain to `oidc.form_action_origins`. Open Chrome DevTools → Console on the Approve page to see which origin was blocked. | -| Sign-in completes at the IdP but the callback fails, with a CSP error in Chrome or "this sign-in link has expired" in Safari | The IdP returned the code via `response_mode=form_post`, which auto-submits it cross-origin via POST to `/oauth/callback`. Chrome blocks that under a strict CSP; Safari allows the submit but the callback reads only the query string. | Make sure your IdP honors `response_mode=query`, which the gateway requests explicitly so the callback is a plain redirect | -| Login works locally but fails behind an ALB | `public_url` still names the local or inner `http://` origin, so the IdP gets the wrong `redirect_uri` | Set `listen.public_url` to the external `https://` origin and register `/oauth/callback` with the IdP | -| Developer sees the trust prompt repeatedly | TLS cert is rotating per replica or per request | Use a stable cert at the ingress, or terminate TLS once and run replicas over plain HTTP internally | -| CLI `/login`: "Could not verify the gateway's TLS certificate" or `SELF_SIGNED_CERT_IN_CHAIN` | Gateway's TLS chain is signed by a private CA not in the CLI host's trust store | Claude Code reads the OS trust store by default on the native binary and on Node 22.15 or later; [`CLAUDE_CODE_CERT_STORE`](/docs/en/network-config#ca-certificate-store) controls this behavior. If the CA is installed in the OS trust store, ensure developers are on a current runtime. Otherwise set `NODE_EXTRA_CA_CERTS` to the CA certificate PEM before launching. The first-connect fingerprint prompt still applies. | -| CLI `/login` completes the browser sign-in, then the session ends with `Cloud gateway sign-in was not completed` and a TLS certificate mismatch | On the first request after sign-in, the gateway presented a certificate that doesn't match the fingerprint Claude Code pinned, so Claude Code kept no gateway credential. The usual causes are replicas behind one address that serve different certificates, or something on the network path that intercepts TLS. | Serve one certificate for the hostname, for example by terminating TLS once at the ingress, then have the developer run `/login` again. If that certificate differs from the pinned one, Claude Code shows the [trust prompt](/docs/en/claude-apps-gateway#connect-developers) again with a warning that the certificate changed. | - -The mismatch message includes the gateway hostname and the first 16 characters of each fingerprint, the pinned one and the presented one. +| Symptom | Cause | Fix | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| A developer's `/login` shows the standard account picker instead of the **Cloud gateway** screen | `forceLoginMethod` or `forceLoginGatewayUrl` isn't set in managed settings on that machine | Deploy the [managed settings file](/docs/en/claude-apps-gateway#set-the-gateway-url) to the device; `/login` reads the gateway URL from there | +| A developer's requests fail with `Not signed in to the Cloud gateway — run /login.` | The machine's managed settings set `forceLoginMethod: "gateway"` or `forceLoginGatewayUrl`, and the session has no gateway sign-in. A leftover claude.ai login doesn't satisfy the requirement. | Have the developer run `/login` and complete the gateway sign-in. See also [Administrator policy requires a Cloud gateway sign-in](/docs/en/errors#administrator-policy-requires-a-cloud-gateway-sign-in). | +| Claude Desktop reports that its bootstrap configuration couldn't be fetched | `/user/bootstrap` returned 404: the policy matching the user doesn't carry a `desktop` key, or no policy matched. The gateway's audit log records each rejection as `desktop_bootstrap.denied` with the reason. | Add a `desktop` block to the policy that matches the user, or to the `match: {}` base layer; an empty `desktop: {}` suffices. See [Claude Desktop overlay](/docs/en/claude-apps-gateway-config#claude-desktop-overlay). | +| Startup shows `Gateway login is configured in managed settings, but this Claude Code build does not include Cloud gateway support.` | The installed Claude Code build predates gateway support | Have the developer update Claude Code to a release that includes Cloud gateway support | +| Startup or `/login` reports `Claude Code may not be enabled for your organization` after a 403 on the managed settings load | The gateway, or something in front of it, answered the `/managed/settings` request with 403. The gateway's own settings route never answers 403. The status comes from the [`access_control`](/docs/en/claude-apps-gateway-config#http-tuning) IP checks or from a proxy or WAF in front of the gateway. The audit log records an IP-check denial as `access.denied` with the reason. The developer stays signed in. | Check the audit log for `access.denied` at the time of the failure and fix the `access_control` lists or the front end, then have the developer start `claude` again | +| CLI `/login`: `Gateway hosts must be on your organization's private network; resolves to the public (or unrecognized) address ` | The gateway hostname resolves to at least one public IP address. Claude Code checks each resolved address and requires every one to be private. A common cause is a dual-stack name where one family resolves to a public address, including AWS internal dual-stack load balancers, which return public-range AAAA addresses. | Have the gateway name resolve only to private addresses on developer machines. For a dual-stack name, drop the public-range record or serve a separate internal-only DNS name. See the [private-network prerequisite](/docs/en/claude-apps-gateway#prerequisites). | +| CLI `/login`: `Gateway login would go through proxy , which is not on a private network` | An `HTTPS_PROXY` or `HTTP_PROXY` applies to the gateway host and the proxy's hostname resolves to a public address. A proxy whose host resolves only to private addresses is allowed and doesn't trigger this error | Add the gateway host to `NO_PROXY` on the developer's machine so the connection is direct, or use a proxy whose hostname resolves to private addresses. The message names the exact `NO_PROXY` entry to add | +| CLI `/login`: `Could not resolve the configured HTTP proxy` | The hostname in `HTTPS_PROXY` or `HTTP_PROXY` doesn't resolve from the developer's machine, typically because it isn't connected to the corporate network | Have the developer connect to your network or VPN and retry, or fix the proxy URL | +| CLI `/login`: `Could not resolve gateway host ` | The machine can't resolve the gateway's internal DNS name, typically because it isn't on the corporate network | Have the developer connect to your network or VPN, then retry `/login` | +| Boot exits with a config validation error naming `store.postgres_url` | No Postgres configured; the gateway requires Postgres | Set `store.postgres_url`. For local development, use a throwaway container: `docker run --rm -p 5432:5432 -e POSTGRES_HOST_AUTH_METHOD=trust postgres`. | +| Boot exits: `requires the native binary` | Running under Node instead of the native binary | Install Claude Code with one of the [standalone install methods](/docs/en/setup) | +| Boot exits with an OIDC discovery error after `config.load` | `oidc.issuer` unreachable, or TLS chain not trusted | Check the issuer is reachable from the pod and serves `/.well-known/openid-configuration`. Set `ca_cert_pem` for private PKI. If the pod reaches the IdP only through a forward proxy, set [`oidc.use_proxy: true`](/docs/en/claude-apps-gateway-config#idp-requests-through-a-forward-proxy); on versions before v2.1.227, give the pod a direct route to each of the IdP's endpoints instead. | +| Boot exits with a Postgres permission error | The database role lacks DDL rights on its schema | Grant the role `CREATE` on the gateway's schema so it can create and alter its tables at boot | +| `/oauth/callback` shows "Sign-in could not be completed" | Email domain rejected, id\_token validation failed, or `email_verified` is explicitly `false`, which the gateway always rejects with no override | Check `allowed_email_domains` and that the IdP returns a verified `email` claim. For `email_verified: false`, fix the IdP-side verification. If your IdP emits email under a different claim name, set `oidc.email_claim`. | +| Log: `token exchange failed request_id=: id_token missing email claim` | The IdP isn't including `email` in the id\_token by default. This rejection fires only when `allowed_email_domains` is set; without it, a missing email mints a session with no email | Configure the IdP to emit `email` in the id\_token. Okta: add `email` to a custom authorization server's ID-token claims. Entra: add `email` as an optional claim on the app registration. PingFederate: enable an OpenID Connect Policy that emits `email`. If the IdP serves `email` from the userinfo endpoint but won't include it in the id\_token, such as the Okta org authorization server, set `oidc.userinfo_fallback: true`. | +| Log: `refresh failed request_id=: invalid_token (…) (at userinfo_no_id_token, …)`, and developers see `Cloud gateway session expired` every `session.ttl_hours` | The IdP accepted the refresh token but returned no id\_token with it, so the gateway asked the IdP's userinfo endpoint for the user's claims. The IdP rejected the refreshed access token there. The gateway answers `temporarily_unavailable`, so Claude Code keeps the refresh token but can't renew the session. Gateway versions before v2.1.260 log the same line without the `(at …)` detail. | Set [`oidc.scope_on_refresh: true`](/docs/en/claude-apps-gateway-config#oidc), available in gateway v2.1.260 or later, so the refresh request asks for `openid` again. Some IdPs, such as Okta, return an id\_token on refresh only when asked. On PingFederate, enable **Return ID Token On Refresh Grant** under **Applications > OAuth > OpenID Connect Policy Management** instead. The key doesn't change PingFederate's behavior. For other IdPs that still omit it, check whether the userinfo endpoint accepts access tokens issued by a refresh. As a stopgap, raise [`session.ttl_hours`](/docs/en/claude-apps-gateway-config#session). See [Identity provider setup](#identity-provider-setup) for the deprovisioning tradeoff. | +| Every Amazon Bedrock request returns 502; log shows `Could not load credentials from any providers` | On EC2, IMDSv2's default hop limit of 1 blocks the instance-metadata request from inside the container. Boot and `/readyz` pass anyway because the AWS SDK resolves instance credentials on the first request, not at client construction | Raise the hop limit with `aws ec2 modify-instance-metadata-options --instance-id --http-put-response-hop-limit 2`, or set it in the launch template. The change applies to every container on the instance. Prefer ECS task roles where available, which read credentials from the ECS container-credentials endpoint and avoid the change entirely, or apply the change on a dedicated gateway instance to limit the exposure. | +| IdP error: unknown or unsupported scope | The IdP rejects scopes it doesn't recognize | Set `oidc.scopes` to exactly the list your IdP accepts; it must include `openid`. The default is `openid profile email offline_access`. | +| Sessions don't silently renew after setting `oidc.scopes` | `offline_access` was dropped from the override | Add `offline_access` back if your IdP supports it. Without a refresh token, developers re-run the browser login every `session.ttl_hours`. | +| Browser shows "This request came from another site and was blocked" | Cross-site form POST, blocked as CSRF protection. Expected for embedded or proxied pages | Open the verification link directly | +| Chrome blocks the Approve button with "Refused to send form data … violates … Content Security Policy directive: form-action", but the same page works in Safari or Firefox | Chrome enforces `form-action` against the entire redirect chain. Your IdP redirects onward to a second host that isn't allowlisted. | Add each additional origin in the redirect chain to `oidc.form_action_origins`. Open Chrome DevTools → Console on the Approve page to see which origin was blocked. | +| Sign-in completes at the IdP but the callback fails, with a CSP error in Chrome or "this sign-in link has expired" in Safari | The IdP returned the code via `response_mode=form_post`, which auto-submits it cross-origin via POST to `/oauth/callback`. Chrome blocks that under a strict CSP; Safari allows the submit but the callback reads only the query string. | Make sure your IdP honors `response_mode=query`, which the gateway requests explicitly so the callback is a plain redirect | +| Login works locally but fails behind an ALB | `public_url` still names the local or inner `http://` origin, so the IdP gets the wrong `redirect_uri` | Set `listen.public_url` to the external `https://` origin and register `/oauth/callback` with the IdP | +| Developer sees the trust prompt repeatedly | TLS cert is rotating per replica or per request | Use a stable cert at the ingress, or terminate TLS once and run replicas over plain HTTP internally | +| CLI `/login`: "Could not verify the gateway's TLS certificate" or `SELF_SIGNED_CERT_IN_CHAIN` | Gateway's TLS chain is signed by a private CA not in the CLI host's trust store | Claude Code reads the OS trust store by default on the native binary and on Node 22.15 or later; [`CLAUDE_CODE_CERT_STORE`](/docs/en/network-config#ca-certificate-store) controls this behavior. If the CA is installed in the OS trust store, ensure developers are on a current runtime. Otherwise set `NODE_EXTRA_CA_CERTS` to the CA certificate PEM before launching. The first-connect fingerprint prompt still applies. | +| CLI `/login` completes the browser sign-in, then the session ends with `Cloud gateway sign-in was not completed` and a TLS certificate mismatch | On the first request after sign-in, the gateway presented a certificate that doesn't match the fingerprint Claude Code pinned, so Claude Code kept no gateway credential. The usual causes are replicas behind one address that serve different certificates, or something on the network path that intercepts TLS. | Serve one certificate for the hostname, for example by terminating TLS once at the ingress, then have the developer run `/login` again. If that certificate differs from the pinned one, Claude Code shows the [trust prompt](/docs/en/claude-apps-gateway#connect-developers) again with a warning that the certificate changed. | +| CLI `/login` stops with `The gateway's TLS certificate changed during sign-in: it no longer matches the one you trusted` | A sign-in request reached a server whose certificate doesn't match the one the developer accepted when `/login` started: replicas behind one address serving different certificates, TLS interception on the path, or a certificate rotation while the sign-in was in progress. | Serve one certificate for the hostname, then have the developer start the sign-in again and review the new certificate at the [trust prompt](/docs/en/claude-apps-gateway#connect-developers). | + +The `Cloud gateway sign-in was not completed` message names the gateway hostname. When Claude Code has both the pinned fingerprint and the presented one, the message also shows the first 16 characters of each. If Claude Code reports `couldn't load your organization's managed settings` after a gateway sign-in, Claude Code names the reason, restarts in place, and resumes the conversation. If Claude Code can't restart, for example in a background session, Claude Code ends the session and keeps the sign-in. diff --git a/content/en/docs/claude-code/claude-apps-gateway-on-aws.md b/content/en/docs/claude-code/claude-apps-gateway-on-aws.md index 105b83c03..70000410e 100644 --- a/content/en/docs/claude-code/claude-apps-gateway-on-aws.md +++ b/content/en/docs/claude-code/claude-apps-gateway-on-aws.md @@ -28,7 +28,7 @@ The gateway runs as a private HTTPS endpoint on your network that developers sig * **Amazon ECR** repository for the gateway image * **Amazon RDS for PostgreSQL** instance in private subnets, not publicly accessible, for the gateway's [store](/docs/en/claude-apps-gateway-config#store) * **AWS Secrets Manager** secrets for the JWT signing key, the OIDC client secret, and the Postgres URL -* **IAM role** with `bedrock:InvokeModel` and `bedrock:InvokeModelWithResponseStream`, attached as the ECS task role or bound via IAM Roles for Service Accounts (IRSA) on EKS +* **IAM role** with `bedrock:InvokeModel`, `bedrock:InvokeModelWithResponseStream`, and `bedrock:CountTokens`, attached as the ECS task role or bound via IAM Roles for Service Accounts (IRSA) on EKS * **Internal Application Load Balancer** for HTTPS ## Prerequisites @@ -103,7 +103,7 @@ The steps below provision the full deployment with `aws` commands. "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", - "Action": ["bedrock:InvokeModel", "bedrock:InvokeModelWithResponseStream"], + "Action": ["bedrock:InvokeModel", "bedrock:InvokeModelWithResponseStream", "bedrock:CountTokens"], "Resource": [ "arn:aws:bedrock:${AWS_REGION}:${ACCOUNT_ID}:inference-profile/us.anthropic.*", "arn:aws:bedrock:*::foundation-model/anthropic.*" @@ -219,6 +219,8 @@ The steps below provision the full deployment with `aws` commands. On both tracks the front end is an internal ALB, whether created directly or by the AWS Load Balancer Controller, and an ALB's nodes take addresses from the subnets it is attached to, so set `trusted_proxies` to those subnets' CIDRs. This trusts every host in those subnets as a proxy. Keep the ALB's ingress source, your corporate CIDR, from overlapping them, and don't share the subnets with untrusted workloads that could spoof client IPs via `X-Forwarded-For`. + The ALB's client port preservation attribute, `routing.http.xff_client_port.enabled`, can stay at either setting: with it on, the ALB writes the client as `203.0.113.7:54321` or `[2001:db8::1]:54321`, and the gateway reads both with the port dropped. + ```yaml gateway.yaml theme={null} listen: host: 0.0.0.0 diff --git a/content/en/docs/claude-code/claude-apps-gateway.md b/content/en/docs/claude-code/claude-apps-gateway.md index 2f6e3a177..f99e7d65b 100644 --- a/content/en/docs/claude-code/claude-apps-gateway.md +++ b/content/en/docs/claude-code/claude-apps-gateway.md @@ -125,7 +125,9 @@ Have these in place before you start: This config is enough for a working sign-in loop with the default Amazon Bedrock model catalog. Once it's running, add per-group RBAC and managed settings via [`managed.policies`](/docs/en/claude-apps-gateway-config#managed), telemetry fan-out via [`telemetry`](/docs/en/claude-apps-gateway-config#telemetry), and multi-upstream failover, provisioned-throughput ARNs, or non-US regions via [`models`](/docs/en/claude-apps-gateway-config#models). - The Amazon Bedrock upstream needs an AWS principal with `bedrock:InvokeModel` and `bedrock:InvokeModelWithResponseStream` on both the `inference-profile/us.anthropic.*` ARNs and the underlying `foundation-model/anthropic.*` ARNs, and Anthropic's one-time use case form submitted for the account from the Bedrock console's Model catalog. Supply the credential with IRSA on EKS, an ECS task role, or an EC2 instance profile rather than static keys. The [`upstreams` reference](/docs/en/claude-apps-gateway-config#upstreams) has the full IAM details, the cross-cloud credential matrix, and the `auth` blocks for the other providers. + The Amazon Bedrock upstream needs an AWS principal with `bedrock:InvokeModel` and `bedrock:InvokeModelWithResponseStream` on both the `inference-profile/us.anthropic.*` ARNs and the underlying `foundation-model/anthropic.*` ARNs. It also needs Anthropic's one-time use case form submitted for the account from the Bedrock console's Model catalog. + + Supply the credential with IRSA on EKS, an ECS task role, or an EC2 instance profile rather than static keys. The [`upstreams` reference](/docs/en/claude-apps-gateway-config#upstreams) has the full IAM details, the cross-cloud credential matrix, and the `auth` blocks for the other providers. @@ -247,7 +249,9 @@ Have these in place before you start: Developers connect from their own laptops with one browser sign-in, using their corporate work account. They don't need a claude.ai account, an API key, or a subscription, because requests to the model go through the gateway using the organization's upstream credential. Connection is driven by the [client-side managed settings](/docs/en/claude-apps-gateway-config#client-side-managed-settings) you push via MDM, so there is no manual setup on the developer side; this section covers what the admin configures. -The CLI fingerprints the gateway's TLS leaf certificate on first connect and pins it per hostname. Publish the expected SHA-256 fingerprint alongside the gateway URL so developers have something to compare against. The `/login` prompt shows the first 16 characters of the fingerprint as lowercase hexadecimal with no colons. To print the full fingerprint in that form from the certificate file, run: +The CLI fingerprints the gateway's TLS leaf certificate on first connect and pins it per hostname. It checks that pin again during sign-in, on silent session refreshes, and on managed-settings fetches, while inference requests use standard TLS validation without the pin. Requests routed through an HTTPS proxy skip the pin check, so add the gateway host to `NO_PROXY` to keep them direct. + +Publish the expected SHA-256 fingerprint alongside the gateway URL so developers have something to compare against. The `/login` prompt shows the first 16 characters of the fingerprint as lowercase hexadecimal with no colons. To print the full fingerprint in that form from the certificate file, run: ```bash theme={null} openssl x509 -noout -fingerprint -sha256 -in cert.pem | cut -d= -f2 | tr -d : | tr 'A-F' 'a-f' @@ -255,7 +259,9 @@ openssl x509 -noout -fingerprint -sha256 -in cert.pem | cut -d= -f2 | tr -d : | When the certificate rotates, every developer sees the trust prompt again, so treat rotations as a planned event and republish the fingerprint. If your gateway policy includes [settings that need approval](/docs/en/server-managed-settings#security-approval-dialogs), the developer also sees that approval dialog again after accepting the new certificate, because Claude Code keys [approval memory](/docs/en/server-managed-settings#approval-memory) to the pinned certificate. -Once signed in, the [model picker](/docs/en/model-config) shows the models in the developer's `availableModels` allowlist, managed settings apply at startup and refresh hourly, and telemetry routes to your collector. Sessions refresh silently before `ttl_hours` expiry, and a failed refresh after IdP deprovisioning prompts a re-login. +Once the developer signs in, the [model picker](/docs/en/model-config) shows the models in their `availableModels` allowlist. Managed settings apply at startup and refresh hourly, and telemetry routes to your collector. + +Sessions refresh silently before `ttl_hours` expiry. When a refresh fails after IdP deprovisioning, Claude Code prompts the developer to log in again. ### Set the gateway URL @@ -269,7 +275,7 @@ Three keys go in the per-OS [managed settings file](/docs/en/managed-settings#de } ``` -The developer presses Enter to connect. The [first-connect TLS fingerprint prompt](#connect-developers) still appears. +The developer presses Enter to connect. The [first-connect TLS fingerprint prompt](#connect-developers) still appears. Once the file is on a machine, a developer who hasn't completed the gateway sign-in sees one of the messages described under [Administrator policy requires a Cloud gateway sign-in](/docs/en/errors#administrator-policy-requires-a-cloud-gateway-sign-in). Developers who select a cloud provider through an environment variable such as `CLAUDE_CODE_USE_BEDROCK` don't need the gateway sign-in. A developer can't set this up manually. The login picker has no gateway option, and `forceLoginGatewayUrl` is ignored in a developer's own settings files. `forceLoginMethod` alone, without a URL, leaves the developer at a "Contact your IT administrator" message. The login keys belong in the file you push to machines, not in the gateway's `managed.policies[].cli` block, which only reaches clients that are already connected. @@ -388,9 +394,10 @@ These guarantees apply to every session signed in through `/login`. The embedded * **Model access**: requests for models the policy doesn't grant return 400, and the `/model` picker is filtered to the policy's `availableModels` allowlist. Set [`enforceAvailableModels: true`](/docs/en/model-config#default-model-behavior) in the policy so the Default option resolves to a model inside `availableModels` instead of to Claude Code's built-in default; without it, Default stays selectable and is rejected at request time if that model isn't granted. * **Telemetry destination**: in sessions signed in through `/login`, the CLI sends its OTLP/HTTP exports to the gateway regardless of any locally set `OTEL_EXPORTER_OTLP_ENDPOINT`, and the gateway relays them to the destinations in [`telemetry.forward_to`](/docs/en/claude-apps-gateway-config#telemetry). In the embedded sessions [Claude Desktop launches](#connect-claude-desktop), the CLI sends its exports to the configured `OTEL_EXPORTER_OTLP_ENDPOINT`. The CLI attaches the gateway session token to those exports only when that endpoint points at the gateway itself. With no destination configured for a signal, the gateway accepts and discards it, so if you already collect Claude Code telemetry directly, add your collector as a `forward_to` destination. -* **Credentials**: the gateway token is the session's only credential. `ANTHROPIC_AUTH_TOKEN`, `ANTHROPIC_API_KEY`, `apiKeyHelper`, [Anthropic profiles](/docs/en/authentication#anthropic-profiles-and-federation-credentials), and any earlier claude.ai login are ignored while signed in, so developers don't need to log out of claude.ai first. +* **Credentials**: the gateway token is the session's only credential. [Anthropic profiles](/docs/en/authentication#anthropic-profiles-and-federation-credentials) and any earlier claude.ai login are ignored while signed in, so developers don't need to log out of claude.ai first. For a configured `ANTHROPIC_API_KEY`, `ANTHROPIC_AUTH_TOKEN`, or `apiKeyHelper` credential, see [Administrator policy requires a Cloud gateway sign-in](/docs/en/errors#administrator-policy-requires-a-cloud-gateway-sign-in). * **Managed settings**: locked keys can't be overridden locally. The CLI applies the policy at startup and applies changes on each hourly poll, apart from the [changes that apply only at the next launch](/docs/en/server-managed-settings#fetch-and-caching-behavior). -* **Startup**: signed-in sessions exit at startup with an error after about 10 seconds when the gateway is unreachable, rather than starting without their settings. +* **Startup with the gateway unreachable**: signed-in sessions exit at startup with an error after about 10 seconds rather than starting without their settings. +* **Startup after the gateway ends the session**: see [Enforce fail-closed startup](/docs/en/server-managed-settings#enforce-fail-closed-startup) for the launches that open signed out of the gateway and the ones that exit when the gateway answers with a `401`. * **Deprovisioning**: a session whose user is disabled in the IdP expires within `ttl_hours` when the next refresh fails. ### What the organization can see diff --git a/content/en/docs/claude-code/claude-code-on-the-web.md b/content/en/docs/claude-code/claude-code-on-the-web.md index d5c76832d..5db596f4e 100644 --- a/content/en/docs/claude-code/claude-code-on-the-web.md +++ b/content/en/docs/claude-code/claude-code-on-the-web.md @@ -231,7 +231,7 @@ You pick a cloud session's [permission mode](/docs/en/permission-modes) from the Each session shows a diff indicator with lines added and removed, like `+42 -18`. Select it to open the diff view, leave inline comments on specific lines, and send them to Claude with your next message. -Claude Code computes these diffs, including the per-file diffs shown as Claude edits, from raw git blob content, so diff drivers and `textconv` filters configured in the repository don't apply. +Claude Code computes these diffs, including the per-file diffs shown as Claude edits, from raw git blob content, so diff drivers and `textconv` filters configured in the repository don't apply. For a file in a repository that isn't one of the session's own checkouts, such as one cloned inside the workspace during the session, the per-file diff shows Claude's edit itself rather than a git comparison. See [Review and iterate](/docs/en/web-quickstart#review-and-iterate) for the full walkthrough including PR creation. To have Claude monitor the PR for CI failures and review comments automatically, see [Auto-fix pull requests](#auto-fix-pull-requests). @@ -339,7 +339,7 @@ Run `/login` to sign in with your claude.ai account, then retry the command. If ### Environment expired -Cloud sessions stop after a period of inactivity and the session's VM is reclaimed. On the web, the session is marked expired in the session list. +Cloud sessions stop after a period of inactivity and the session's VM is reclaimed. A session counts as inactive while it waits for you to approve an [MCP connector](/docs/en/cloud-environments#network-access) tool call or to sign in to an MCP server, and it can expire during that wait. On the web, the session is marked expired in the session list. Reopen the session from [claude.ai/code](https://claude.ai/code) to provision a fresh VM with your conversation history restored. Background work that was still running when the VM was reclaimed, such as subagents and shell commands, isn't restored. diff --git a/content/en/docs/claude-code/claude-directory.md b/content/en/docs/claude-code/claude-directory.md index ea74f0e93..98cf2676c 100644 --- a/content/en/docs/claude-code/claude-directory.md +++ b/content/en/docs/claude-code/claude-directory.md @@ -113,7 +113,7 @@ config/secrets.json`, oneLiner: 'Permissions, hooks, and configuration', when: <>Overrides global ~/.claude/settings.json. Local settings, CLI flags, and managed settings override this, description: 'Settings that Claude Code applies directly. Permissions control which commands and tools Claude can use; hooks run your scripts at specific points in a session. Unlike CLAUDE.md, which Claude reads as guidance, these are enforced whether Claude follows them or not.', - contains: [<>permissions: allow, deny, or prompt before Claude uses specific tools or commands, <>hooks: run your own scripts on events like before a tool call or after a file edit, <>statusLine: customize the line shown at the bottom while Claude works, <>model: pick a default model for this project, <>env: environment variables set in every session, <>outputStyle: select a custom system-prompt style from output-styles/], + contains: [<>permissions: allow, deny, or prompt before Claude uses specific tools or commands, <>hooks: run your own scripts on events like before a tool call or after a file edit, <>statusLine: customize the line shown at the bottom while Claude works, <>model: pick a default model for this project, <>env: environment variables set in every session, <>outputStyle: select a custom output style from output-styles/], tips: [<>Bash permission patterns support wildcards: Bash(npm test *) matches any command starting with npm test, <>Array settings like permissions.allow combine across all scopes; scalar settings like model use the most specific value], exampleIntro: <>This example allows npm test and npm run commands without prompting, blocks rm -rf, and runs Prettier on files after Claude edits or writes them., example: `{ @@ -322,7 +322,7 @@ Investigate and fix the issue above. icon: 'folder', color: '#5AA7A7', oneLiner: 'Project-scoped output styles, if your team shares any', - when: 'Files read at startup; the style you select with outputStyle is added to the system prompt every turn', + when: 'Files read at startup; the style you select with outputStyle applies to every response', description: <>Output styles are usually personal, so most live in ~/.claude/output-styles/. Put one here if your team shares a style, like a review mode everyone uses. See the Global tab for the full explanation and example., docsLink: '/en/output-styles', children: [] @@ -638,10 +638,10 @@ type: reference type: 'folder', icon: 'folder', color: '#5AA7A7', - oneLiner: 'Custom system-prompt sections that adjust how Claude works', - when: 'Files read at startup; the style you select with outputStyle is added to the system prompt every turn', - description: [<>Each markdown file defines an output style: a section appended to the system prompt that, by default, also drops the built-in software-engineering task instructions. Use this to adapt Claude Code for uses beyond coding, or to add teaching or review modes., <>Select a built-in or custom style with /config or the outputStyle key in settings. Styles here are available in every project; project-level styles with the same name take precedence.], - tips: ['Built-in styles Default, Proactive, Concise, Explanatory, and Learning are included with Claude Code; custom styles go here', <>Set keep-coding-instructions: true in frontmatter to keep the default task instructions alongside your additions, 'Switching styles mid-session applies from your next message and rebuilds the prompt cache once; in the terminal, a style file you create or edit mid-session is picked up after a restart'], + oneLiner: 'Custom instruction sets that adjust how Claude works', + when: 'Files read at startup; the style you select with outputStyle applies to every response', + description: [<>Each markdown file defines an output style: a set of instructions for Claude that, by default, also replaces the built-in software-engineering task instructions. Use this to adapt Claude Code for uses beyond coding, or to add teaching or review modes., <>Select a built-in or custom style with /config or the outputStyle key in settings. Styles here are available in every project; project-level styles with the same name take precedence.], + tips: ['Built-in styles Default, Proactive, Concise, Explanatory, and Learning are included with Claude Code; custom styles go here', <>Set keep-coding-instructions: true in frontmatter to keep the default task instructions alongside your additions, 'Switching styles mid-session applies from your next message; in the terminal, a style file you create or edit mid-session is picked up after a restart'], docsLink: '/en/output-styles', children: [{ id: 'output-style-example', @@ -652,7 +652,7 @@ type: reference badge: 'local', oneLiner: 'Example style that adds explanations and leaves small changes for you', when: <>Active when outputStyle in settings is set to teaching, - description: <>This style appends instructions to the system prompt: Claude adds a "Why this approach" note after each task and leaves TODO(human) markers for changes under 10 lines instead of writing them itself. Select it by setting outputStyle to the filename without .md, or to the name field if you set one in frontmatter., + description: <>With this style, Claude adds a "Why this approach" note after each task and leaves TODO(human) markers for changes under 10 lines instead of writing them itself. Select it by setting outputStyle to the filename without .md, or to the name field if you set one in frontmatter., example: `--- description: Explains reasoning and asks you to implement small pieces keep-coding-instructions: true @@ -1497,7 +1497,7 @@ Click a filename to open that node in the explorer above. | [`.worktreeinclude`](#ce-worktreeinclude) | Project only | ✓ | Gitignored files to copy into new worktrees | [Worktrees](/docs/en/worktrees#copy-gitignored-files-into-worktrees) | | [`skills//SKILL.md`](#ce-skills) | Project and global | ✓ | Reusable prompts invoked with `/name` or auto-invoked | [Skills](/docs/en/skills) | | [`commands/*.md`](#ce-commands) | Project and global | ✓ | Single-file prompts; same mechanism as skills | [Skills](/docs/en/skills) | -| [`output-styles/*.md`](#ce-output-styles) | Project and global | ✓ | Custom system-prompt sections | [Output styles](/docs/en/output-styles) | +| [`output-styles/*.md`](#ce-output-styles) | Project and global | ✓ | Custom instruction sets that adjust how Claude works | [Output styles](/docs/en/output-styles) | | [`agents/*.md`](#ce-agents) | Project and global | ✓ | Subagent definitions with their own prompt and tools | [Subagents](/docs/en/sub-agents) | | [`workflows/*.js`](#ce-workflows) | Project and global | ✓ | Dynamic workflow scripts written by Claude and saved from `/workflows`; each file becomes a `/` command | [Dynamic workflows](/docs/en/workflows) | | [`agent-memory//`](#ce-agent-memory) | Project and global | ✓ | Persistent memory for subagents | [Persistent memory](/docs/en/sub-agents#enable-persistent-memory) | diff --git a/content/en/docs/claude-code/cli-reference.md b/content/en/docs/claude-code/cli-reference.md index 06445f3d3..da190d07f 100644 --- a/content/en/docs/claude-code/cli-reference.md +++ b/content/en/docs/claude-code/cli-reference.md @@ -32,7 +32,7 @@ You can start sessions, pipe content, resume conversations, and manage updates w | `claude daemon status` | Print the background-session [supervisor's](/docs/en/agent-view#the-supervisor-process) state, version, socket directory, and worker count for diagnostics. Exits 1 if the supervisor isn't running | `claude daemon status` | | `claude daemon stop --any` | Stop the background-session [supervisor](/docs/en/agent-view#the-supervisor-process) and the sessions it hosts. Pass `--keep-workers` to leave background sessions running so the next supervisor reconnects to them. `--any` confirms stopping an on-demand supervisor, which is the default. Use this to recover from an [unresponsive supervisor](/docs/en/agent-view#agent-view-says-the-background-service-did-not-respond) | `claude daemon stop --any --keep-workers` | | `claude doctor` | Print read-only installation and settings diagnostics from the terminal without starting a session, including install health, settings-file validation errors, and Remote Control eligibility. For the in-session setup checkup that can also apply fixes, run [`/doctor`](/docs/en/commands#all-commands) | `claude doctor` | -| `claude import [codex\|gemini]` | Start an interactive session that runs [`/import`](/docs/en/commands#all-commands) to bring configuration from other coding agents into Claude Code. Accepts the same `--dry-run` and `--yes` options as the command. Not available on Amazon Bedrock, Google Cloud's Agent Platform, Microsoft Foundry, or Claude Platform on AWS. Also unavailable when you turn off [feature-flag fetching](/docs/en/env-vars#features-that-need-feature-flag-fetching). Requires Claude Code v2.1.213 or later | `claude import codex --dry-run` | +| `claude import [source]` | Start an interactive session that runs [`/import`](/docs/en/commands#all-commands) to bring configuration from other coding agents into Claude Code. Accepts the same `--dry-run` and `--yes` options as the command. Not available on Amazon Bedrock, Google Cloud's Agent Platform, Microsoft Foundry, or Claude Platform on AWS. Also unavailable when you turn off [feature-flag fetching](/docs/en/env-vars#features-that-need-feature-flag-fetching). Requires Claude Code v2.1.213 or later | `claude import codex --dry-run` | | `claude logs ` | Print recent output from a [background session](/docs/en/agent-view#manage-sessions-from-the-shell) | `claude logs 7c5dcf5d` | | `claude mcp` | Configure Model Context Protocol (MCP) servers | See the [Claude Code MCP documentation](/docs/en/mcp). | | `claude mcp login ` | Run a configured MCP server's OAuth flow without opening the interactive `/mcp` panel. Works for HTTP, SSE, and claude.ai connector servers. Add `--no-browser` over SSH to print the authorization URL instead of opening a browser, then paste the redirect URL back at the prompt. Requires Claude Code v2.1.186 or later. See [Authenticate from the command line](/docs/en/mcp#authenticate-from-the-command-line) | `claude mcp login sentry` | @@ -41,7 +41,7 @@ You can start sessions, pipe content, resume conversations, and manage updates w | `claude project purge [path]` | Delete all local Claude Code state for a project: transcripts, task lists, debug logs, file-edit history, prompt history lines, and the project's entry in `~/.claude.json`. Omit `[path]` to pick from an interactive list. Flags: `--dry-run` to preview, `-y`/`--yes` to skip confirmation, `-i`/`--interactive` to confirm each item, `--all` for every project. See [Clear local data](/docs/en/claude-directory#clear-local-data) | `claude project purge ~/work/repo --dry-run` | | `claude remote-control` | Start a [Remote Control](/docs/en/remote-control) server to control Claude Code from Claude.ai or the Claude app. Runs in server mode (no local interactive session). See [Server mode flags](/docs/en/remote-control#start-a-remote-control-session). After you stop the server, you can bring back the sessions it was serving. See [Resume sessions after stopping the server](/docs/en/remote-control#resume-sessions-after-stopping-the-server) | `claude remote-control --name "My Project"` | | `claude respawn ` | Restart a [background session](/docs/en/agent-view#manage-sessions-from-the-shell), running or stopped, with its conversation intact. Use `--all` to restart every running session, e.g. to pick up an updated Claude Code binary | `claude respawn 7c5dcf5d` | -| `claude rm ` | Remove a [background session](/docs/en/agent-view#manage-sessions-from-the-shell) from the list. The conversation transcript stays on your local machine, available through `claude --resume` | `claude rm 7c5dcf5d` | +| `claude rm ` | Remove a [background session](/docs/en/agent-view#manage-sessions-from-the-shell) from the list. Accepts `--discard-unpushed @` to discard the worktree and its commits; when a [delete is refused over unpushed commits](/docs/en/agent-view#what-deleting-a-session-removes), the refusal prints the exact value to pass. `--discard-unpushed` requires Claude Code v2.1.260 or later. The conversation transcript stays on your local machine, available through `claude --resume` | `claude rm 7c5dcf5d` | | `claude self-hosted-runner` | Start a runner process that registers this machine or container with a [self-hosted environment](/docs/en/self-hosted-environments) and hosts Claude Code cloud sessions on your infrastructure. Run `claude self-hosted-runner setup` for a guided operator walkthrough, `claude self-hosted-runner doctor` to [diagnose a deployed runner](/docs/en/self-hosted-environments-deploy#troubleshooting), and `claude self-hosted-runner orchestrator` to spawn [on-demand runners](/docs/en/self-hosted-environments-configuration#on-demand-runners). Requires Claude Code v2.1.224 or later | `claude self-hosted-runner setup` | | `claude setup-token` | Generate a long-lived OAuth token for CI and scripts. Prints the token to the terminal without saving it. Requires a Claude subscription. See [Generate a long-lived token](/docs/en/authentication#generate-a-long-lived-token) | `claude setup-token` | | `claude stop ` | Stop a [background session](/docs/en/agent-view#manage-sessions-from-the-shell). Also accepts `claude kill` | `claude stop 7c5dcf5d` | @@ -71,7 +71,7 @@ Customize Claude Code's behavior with these command-line flags. `claude --help` | `--ax-screen-reader` | Render screen-reader friendly output: flat text without decorative borders or animations. Forces the classic renderer, so the [`tui`](/docs/en/settings-reference#tui) setting has no effect; attached [background sessions](/docs/en/agent-view) still render fullscreen. Takes precedence over [`CLAUDE_AX_SCREEN_READER`](/docs/en/env-vars) and the [`axScreenReader`](/docs/en/settings-reference#axscreenreader) setting. Requires Claude Code v2.1.181 or later | `claude --ax-screen-reader` | | `--bare` | Minimal mode: skip auto-discovery of hooks, skills, custom commands, subagents, plugins, MCP servers, auto memory, and CLAUDE.md so scripted calls start faster. Skills in a directory you pass with `--add-dir` still load. Claude has access to Bash, file read, and file edit tools. Sets [`CLAUDE_CODE_SIMPLE`](/docs/en/env-vars). See [bare mode](/docs/en/headless#start-faster-with-bare-mode) | `claude --bare -p "query"` | | `--betas` | Beta headers to include in API requests (API key users only) | `claude --betas interleaved-thinking` | -| `--bg`, `--background` | Start the session as a [background agent](/docs/en/agent-view) and return immediately. Prints the session ID and management commands. Combine with `--exec` to run a shell command as a background job instead of a Claude session, or with `--agent` to run a specific subagent. Cannot be combined with `-p`/`--print`; see the [error reference](/docs/en/errors#command-line-errors) | `claude --bg "investigate the flaky test"` | +| `--bg`, `--background` | Start the session as a [background agent](/docs/en/agent-view) and return immediately. Prints the session ID and management commands. Combine with `--exec` to run a shell command as a background job instead of a Claude session, or with `--agent` to run a specific subagent. Can't be combined with `-p`/`--print`; see the [error reference](/docs/en/errors#command-line-errors) | `claude --bg "investigate the flaky test"` | | `--channels` | (Research preview) MCP servers whose [channel](/docs/en/channels) notifications Claude should listen for in this session. Space-separated list of `plugin:@` entries. Requires Anthropic authentication through claude.ai or a Console API key | `claude --channels plugin:my-notifier@my-marketplace` | | `--chrome` | Enable [Chrome browser integration](/docs/en/chrome) for web automation and testing | `claude --chrome` | | `--cloud` | With a task description, create a new [web session](/docs/en/claude-code-on-the-web) on claude.ai. With a session ID (`session_...` or `cse_...`) or a claude.ai/code URL, queue a message into that existing session instead, with `-p`. See [send a follow-up message](/docs/en/claude-code-on-the-web#send-follow-ups-from-the-cli). | `claude --cloud "Fix the login bug"` | @@ -81,7 +81,7 @@ Customize Claude Code's behavior with these command-line flags. `claude --help` | `--debug` | Enable debug mode with optional category filtering, such as `--debug='mcp,startup'` or `--debug='!1p'`. The filter binds only in the `=` form; a space-separated filter enables debug mode without filtering | `claude --debug='mcp,startup'` | | `--debug-file ` | Write debug logs to a specific file path. Implicitly enables debug mode. Takes precedence over `CLAUDE_CODE_DEBUG_LOGS_DIR` | `claude --debug-file /tmp/claude-debug.log` | | `--disable-slash-commands` | Disable all skills and commands for this session | `claude --disable-slash-commands` | -| `--disallowedTools`, `--disallowed-tools` | Deny rules. A bare tool name removes the matching tools from Claude's context: `"Edit"` removes Edit, `"*"` removes every tool, and `"mcp__*"` removes every MCP tool. A scoped rule such as `Bash(rm *)` leaves the tool available and denies only matching calls. A rule naming [`EndConversation`](/docs/en/tools-reference#endconversation-tool-behavior) can't remove it while any other tool remains | `"Bash(git log *)" "Bash(git diff *)" "Edit"` | +| `--disallowedTools`, `--disallowed-tools` | Deny rules. A bare tool name removes the matching tools from Claude's context: `"Edit"` removes Edit, `"*"` removes every tool, and `"mcp__*"` removes every MCP tool. A scoped rule such as `Bash(rm *)` leaves the tool available and denies only calls that match [as written](/docs/en/permissions#bash-rule-limits). A rule naming [`EndConversation`](/docs/en/tools-reference#endconversation-tool-behavior) can't remove it while any other tool remains | `"Bash(git log *)" "Bash(git diff *)" "Edit"` | | `--effort` | Set the [effort level](/docs/en/model-config#adjust-effort-level) for the current session. Options: `low`, `medium`, `high`, `xhigh`, `max`, or `ultracode`. Available levels depend on the model. `ultracode` starts the session at `xhigh` effort with [ultracode](/docs/en/workflows#let-claude-decide-with-ultracode) turned on, and requires Claude Code v2.1.203 or later. Overrides the [`modelSettings`](/docs/en/settings-reference#modelsettings) and [`effortLevel`](/docs/en/settings-reference#effortlevel) settings for this session and does not persist | `claude --effort high` | | `--enable-auto-mode` | Removed in v2.1.111. Auto mode is now in the `Shift+Tab` cycle by default; use `--permission-mode auto` to start in it | `claude --permission-mode auto` | | `--environment ` | Create a new cloud session that runs on the [self-hosted environment](/docs/en/self-hosted-environments) with the given ID. Environment IDs start with `ccpool_`. See [`--environment` dispatch behavior](/docs/en/self-hosted-environments-testing#environment-dispatch-behavior) for dispatch behavior and the flag combinations it rejects. Requires Claude Code v2.1.224 or later | `claude -p "Fix the login bug" --environment ccpool_abc123` | @@ -89,7 +89,7 @@ Customize Claude Code's behavior with these command-line flags. `claude --help` | `--exec` | Run a shell command as a PTY-backed background job instead of starting a Claude session. Use with `--bg` to launch from the shell | `claude --bg --exec 'pytest -x'` | | `--fallback-model` | Enable automatic fallback to the specified model(s) when the primary model is overloaded or not available, for example a retired model. Accepts a comma-separated list tried in order. See [Fallback model chains](/docs/en/model-config#fallback-model-chains). To persist a chain across sessions, use the [`fallbackModel` setting](/docs/en/settings-reference#fallbackmodel), which this flag overrides | `claude --fallback-model sonnet,haiku` | | `--fork-session` | When resuming, create a new session ID instead of reusing the original (use with `--resume` or `--continue`) | `claude --resume abc123 --fork-session` | -| `--forward-subagent-text` | Emit [subagent](/docs/en/sub-agents) text and thinking blocks in the output stream as `assistant` and `user` messages with `parent_tool_use_id` set, so you can reconstruct each subagent's transcript. Without this flag, Claude Code emits only subagent `tool_use` and `tool_result` blocks. Requires `--print` and `--output-format stream-json`. Claude Code also forwards messages from [nested subagents](/docs/en/sub-agents#let-subagents-spawn-their-own-subagents), setting `parent_tool_use_id` to the ID of the Agent tool call that spawned each one; this requires Claude Code v2.1.219 or later. The [`CLAUDE_CODE_FORWARD_SUBAGENT_TEXT`](/docs/en/env-vars) environment variable enables the same behavior. Requires Claude Code v2.1.211 or later | `claude -p --output-format stream-json --verbose --forward-subagent-text "query"` | +| `--forward-subagent-text` | Emit [subagent](/docs/en/sub-agents) text and thinking blocks in the output stream as `assistant` and `user` messages with `parent_tool_use_id` set, so you can reconstruct each subagent's transcript. Without this flag, Claude Code omits the text and thinking blocks of a subagent that runs in the [foreground](/docs/en/sub-agents#run-subagents-in-foreground-or-background). Requires `--print` and `--output-format stream-json`. Claude Code also forwards messages from [nested subagents](/docs/en/sub-agents#let-subagents-spawn-their-own-subagents), setting `parent_tool_use_id` to the ID of the Agent tool call that spawned each one; this requires Claude Code v2.1.219 or later. The [`CLAUDE_CODE_FORWARD_SUBAGENT_TEXT`](/docs/en/env-vars) environment variable enables the same behavior. Requires Claude Code v2.1.211 or later | `claude -p --output-format stream-json --verbose --forward-subagent-text "query"` | | `--from-pr` | Open the session picker filtered to sessions linked to a specific pull request. Accepts a PR number, a GitHub or GitHub Enterprise PR URL, a GitLab merge request URL, or a Bitbucket pull request URL. Sessions are linked automatically when Claude creates the pull request | `claude --from-pr 123` | | `--ide` | Automatically connect to IDE on startup if exactly one valid IDE is available | `claude --ide` | | `--init` | Run [Setup hooks](/docs/en/hooks#setup) with the `init` matcher before the session (print mode only) | `claude -p --init "query"` | @@ -110,7 +110,7 @@ Customize Claude Code's behavior with these command-line flags. `claude --help` | `--permission-mode` | Begin in a specified [permission mode](/docs/en/permission-modes). Accepts `default`, `acceptEdits`, `plan`, `auto`, `dontAsk`, `bypassPermissions`, or `manual` as an alias for `default`. The `manual` alias selects the permission mode the UI labels Manual and requires Claude Code v2.1.200 or later; `claude --help` lists it in place of `default`, and both values work. Overrides `defaultMode` from settings files. Without this flag or `--dangerously-skip-permissions`, a new session starts in the permission mode described in [which permission mode a session starts in](/docs/en/permission-modes#which-mode-a-session-starts-in). For `-p`, that's `default` when nothing is configured | `claude --permission-mode plan` | | `--permission-prompt-tool` | Specify an MCP tool to handle permission prompts in non-interactive mode. Claude Code waits for that tool's MCP server to connect before running the first turn, up to the [`MCP_TIMEOUT`](/docs/en/env-vars) startup timeout, 30 seconds by default.

The prompt tool can't approve an MCP tool marked as [requiring user interaction](/docs/en/mcp#require-approval-for-a-specific-tool): Claude Code converts an `allow` result for one to a deny. This restriction requires Claude Code v2.1.199 or later | `claude -p --permission-prompt-tool mcp_auth_tool "query"` | | `--permission-prompts` | Set who answers permission prompts in print mode. With the default `host`, Claude Code sends them to the Agent SDK host or the `--permission-prompt-tool` tool. Pass `none` when nobody can answer, and Claude Code denies them instead. See [Turn off permission prompts in unattended runs](/docs/en/headless#turn-off-permission-prompts-in-unattended-runs). Requires Claude Code v2.1.259 or later | `claude -p --permission-prompts none "query"` | -| `--plugin-dir` | Load a plugin from a directory or `.zip` archive for this session only. Each flag takes one path. Repeat the flag for multiple plugins: `--plugin-dir A --plugin-dir B.zip` | `claude --plugin-dir ./my-plugin` | +| `--plugin-dir` | Load a plugin from a directory or `.zip` archive, or several from a [folder of plugins](/docs/en/plugins#test-your-plugins-locally), for this session only. Each flag takes one path. Repeat the flag for more paths: `--plugin-dir A --plugin-dir B.zip`. Passing a folder of plugins requires Claude Code v2.1.265 or later | `claude --plugin-dir ./my-plugin` | | `--plugin-url` | Fetch a plugin `.zip` archive from a URL for this session only. Repeat the flag for multiple plugins, or pass space-separated URLs in a single quoted value | `claude --plugin-url https://example.com/plugin.zip` | | `--print`, `-p` | Print response without interactive mode (see [Agent SDK documentation](/docs/en/agent-sdk/overview) for programmatic usage details) | `claude -p "query"` | | `--prompt-suggestions` | Emit a `prompt_suggestion` message with a predicted next user prompt after each turn that generates one; very short conversations can produce none. Requires `--print`, `--output-format stream-json`, and `--verbose`. See [Prompt suggestions](/docs/en/interactive-mode#prompt-suggestions) | `claude -p --prompt-suggestions --output-format stream-json --verbose "query"` | @@ -128,6 +128,7 @@ Customize Claude Code's behavior with these command-line flags. `claude --help` | `--strict-mcp-config` | Only use MCP servers from `--mcp-config`, ignoring all other MCP configurations. See [Exclusive control with managed-mcp.json](/docs/en/managed-mcp#exclusive-control-with-managed-mcp-json) for what the flag does under a managed MCP file | `claude --strict-mcp-config --mcp-config ./mcp.json` | | `--system-prompt` | Replace the entire system prompt with custom text | `claude --system-prompt "You are a Python expert"` | | `--system-prompt-file` | Load system prompt from a file, replacing the default prompt | `claude --system-prompt-file ./custom-prompt.txt` | +| `--system-prompt-snapshot` | Pass `off` to rebuild the system prompt on every request instead of reusing the prompt [recorded on the conversation's first request](#system-prompt-flags-in-resumed-conversations), for example while you iterate on `--append-system-prompt` text across `--continue` runs. Requires Claude Code v2.1.257 or later | `claude --system-prompt-snapshot off` | | `--teleport` | Resume a [web session](/docs/en/claude-code-on-the-web) in your local terminal | `claude --teleport` | | `--teammate-mode` | Set how [agent team](/docs/en/agent-teams) teammates display: `in-process` (default), `auto`, `tmux`, or `iterm2` (added in v2.1.186). Overrides the [`teammateMode`](/docs/en/settings-reference#teammatemode) setting for this session. See [Choose a display mode](/docs/en/agent-teams#choose-a-display-mode) | `claude --teammate-mode auto` | | `--tmux` | Create a tmux session for the worktree. Requires `--worktree`. Uses iTerm2 native panes when available; pass `--tmux=classic` for traditional tmux | `claude -w feature-auth --tmux` | @@ -138,20 +139,29 @@ Customize Claude Code's behavior with these command-line flags. `claude --help` ### System prompt flags -Claude Code provides four flags for customizing the system prompt. All four work in both interactive and non-interactive modes. +Claude Code provides five flags for customizing the system prompt. Four set its text, and with `--system-prompt-snapshot` you control whether a conversation keeps the text it started with. All five work in both interactive and non-interactive modes. -| Flag | Behavior | Example | -| :---------------------------- | :------------------------------------------ | :------------------------------------------------------ | -| `--system-prompt` | Replaces the entire default prompt | `claude --system-prompt "You are a Python expert"` | -| `--system-prompt-file` | Replaces with file contents | `claude --system-prompt-file ./prompts/review.txt` | -| `--append-system-prompt` | Appends to the default prompt | `claude --append-system-prompt "Always use TypeScript"` | -| `--append-system-prompt-file` | Appends file contents to the default prompt | `claude --append-system-prompt-file ./style-rules.txt` | +| Flag | Behavior | Example | +| :---------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------- | +| `--system-prompt` | Replaces the entire default prompt | `claude --system-prompt "You are a Python expert"` | +| `--system-prompt-file` | Replaces with file contents | `claude --system-prompt-file ./prompts/review.txt` | +| `--append-system-prompt` | Appends to the default prompt | `claude --append-system-prompt "Always use TypeScript"` | +| `--append-system-prompt-file` | Appends file contents to the default prompt | `claude --append-system-prompt-file ./style-rules.txt` | +| `--system-prompt-snapshot` | With `off`, rebuilds the prompt on every request. With `on`, the default, reuses a recorded prompt where [recording applies](#system-prompt-flags-in-resumed-conversations) | `claude --append-system-prompt "Draft rules" --system-prompt-snapshot off` | `--system-prompt` and `--system-prompt-file` are mutually exclusive. The append flags can be combined with either replacement flag. Choose based on whether Claude Code's default identity still fits your task. Use an append flag when Claude should remain a coding assistant that also follows your extra rules: per-invocation instructions, output formatting, or domain context for a `-p` script. Appending preserves the default tool guidance, safety instructions, and coding conventions, so you only supply what differs. Use a replacement flag when the surface, identity, or permission model differs from Claude Code's, like a non-coding agent in a pipeline that no human watches. Replacing drops all of the default prompt, including tool guidance and safety instructions, so you take responsibility for whatever your task still needs. -These flags apply only to the current invocation. For persistent personas you can switch between and share across a project, use [output styles](/docs/en/output-styles). For project conventions Claude should always follow, use [CLAUDE.md](/docs/en/memory). The [Agent SDK guide on system prompts](/docs/en/agent-sdk/modifying-system-prompts#decide-on-a-starting-point) covers the same decision in more depth. +For persistent personas you can switch between and share across a project, use [output styles](/docs/en/output-styles). For project conventions Claude should always follow, use [CLAUDE.md](/docs/en/memory). The [Agent SDK guide on system prompts](/docs/en/agent-sdk/modifying-system-prompts#decide-on-a-starting-point) covers the same decision in more depth. + +#### System prompt flags in resumed conversations + +By default, Claude Code builds the system prompt once, on a conversation's first request, with the text from any system prompt flags applied, and records it in the session. Until the conversation is compacted, every later request uses that recorded prompt, including after you return to the conversation with `--resume` or `--continue`. If you pass different system prompt flag text, or none, on that later launch, it takes effect once the conversation is compacted or when you start a new conversation. + +Recording applies in sessions that [fetch feature flags](/docs/en/env-vars#features-that-need-feature-flag-fetching), as sessions signed in with a claude.ai or Console account do by default. On Amazon Bedrock, Google Cloud's Agent Platform, Microsoft Foundry, and in other sessions that don't fetch them, Claude Code rebuilds the prompt on every request and `--system-prompt-snapshot` has no effect. If you start Claude Code in [bare mode](/docs/en/headless#start-faster-with-bare-mode), by passing `--bare` or setting `CLAUDE_CODE_SIMPLE=1`, recording stays off unless you pass `--system-prompt-snapshot on`. + +To rebuild the prompt on every request instead, for example while you iterate on its wording across `--continue` runs, pass `--system-prompt-snapshot off`. Before v2.1.265, passing any of the system prompt flags also turned recording off unless you passed `--system-prompt-snapshot on`. ## See also diff --git a/content/en/docs/claude-code/commands.md b/content/en/docs/claude-code/commands.md index c85fc7c99..0987956c7 100644 --- a/content/en/docs/claude-code/commands.md +++ b/content/en/docs/claude-code/commands.md @@ -50,7 +50,7 @@ In the table below, `` indicates a required argument and `[arg]` indicates | Command | Purpose | | :----------------------------------------------------------------------------------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `/add-dir ` | Add a working directory for file access during the current session. Type a partial path to see matching directory suggestions; press `Tab` to accept one. Most `.claude/` configuration [isn't discovered](/docs/en/permissions#additional-directories-grant-file-access-not-configuration) from the added directory. You can't add most [network paths](/docs/en/errors#working-directory-is-a-network-path), such as `\\server\share`. After a successful add, your [`DirectoryAdded` hooks](/docs/en/hooks#directoryadded) run. When you run it while Claude is responding, Claude Code asks you to confirm the directory right away, and once you confirm, Claude's next tool call in the same turn can access it. Before v2.1.234, Claude Code queued the command until the turn finished | -| `/advisor [model\|off]` | Enable or disable the [advisor tool](/docs/en/advisor), which consults a second model for guidance at key moments during a task. Accepts `fable`, `opus`, `sonnet`, or a full model ID. `fable` requires [Fable access](/docs/en/advisor#choose-an-advisor-model). Without an argument, opens a picker | +| `/advisor [model\|off]` | Enable or disable the [advisor tool](/docs/en/advisor), which consults a second model for guidance at key moments during a task. Accepts `fable`, `opus`, `sonnet`, or a full model ID. `fable` requires [Fable access](/docs/en/advisor#choose-an-advisor-model). Without an argument, opens a picker. In a session without an interactive terminal, or over [Remote Control](/docs/en/remote-control#limitations), pass the model or `off` as an argument; with no argument there, the command prints the current advisor as text. These forms require Claude Code v2.1.260 or later | | `/agents` | As of v2.1.198, running `/agents` prints a reminder to ask Claude to create or manage [subagents](/docs/en/sub-agents), or to edit `.claude/agents/` or `~/.claude/agents/` directly. On v2.1.197 and earlier, opens an interactive interface for creating and managing subagent configurations | | `/artifacts` | List the [artifacts](/docs/en/artifacts#find-an-artifact-again) you own or that are shared with you, then attach one to the session, open it in your browser, or copy its link. Available where [artifacts](/docs/en/artifacts#availability) are. Requires Claude Code v2.1.208 or later; attaching with `Enter` requires v2.1.216 | | `/auto-mode-setup` | [Draft `autoMode.environment` entries](/docs/en/auto-mode-config#generate-environment-entries) from your project and recent sessions, then review the draft and save it to your user settings. Requires a Pro, Max, or Team plan and Claude Code v2.1.228 or later. On native Windows, requires v2.1.233 or later | @@ -94,8 +94,8 @@ In the table below, `` indicates a required argument and `[arg]` indicates | `/help` | Show help and available commands | | `/hooks` | View [hook](/docs/en/hooks) configurations for tool events | | `/ide` | Manage IDE integrations and show status | -| `/import [codex\|gemini] [--dry-run] [--yes]` | Bring configuration from other coding agents on your machine, currently OpenAI Codex and Google Gemini CLI, into Claude Code, including instruction files, MCP servers, commands, subagents, and skills. In [non-interactive mode](/docs/en/headless) with `-p`, `/import` lists what it found and gives you the command that confirms the import. Add `--dry-run` to preview without writing anything, or `--yes` to skip the interactive picker. Not available on Amazon Bedrock, Google Cloud's Agent Platform, Microsoft Foundry, or Claude Platform on AWS. Also unavailable when you turn off [feature-flag fetching](/docs/en/env-vars#features-that-need-feature-flag-fetching). Requires Claude Code v2.1.213 or later | -| `/init` | Initialize project with a `CLAUDE.md` guide. Set `CLAUDE_CODE_NEW_INIT=1` for an interactive flow that also walks through skills, hooks, and personal memory files. If `/init` finds configuration from a coding agent that `/import` supports, it offers to carry it over with `/import` | +| `/import [codex\|gemini\|cursor] [--dry-run] [--yes]` | Bring configuration from OpenAI Codex, Google Gemini CLI, or Cursor on your machine into Claude Code, including instruction files, MCP servers, commands, subagents, and skills. In [non-interactive mode](/docs/en/headless) with `-p`, `/import` lists what it found and gives you the command that confirms the import. Add `--dry-run` to preview without writing anything, or `--yes` to skip the interactive picker. Not available on Amazon Bedrock, Google Cloud's Agent Platform, Microsoft Foundry, or Claude Platform on AWS. Also unavailable when you turn off [feature-flag fetching](/docs/en/env-vars#features-that-need-feature-flag-fetching). Requires Claude Code v2.1.213 or later. Importing from Cursor requires v2.1.265 or later | +| `/init` | Initialize project with a `CLAUDE.md` guide. Set `CLAUDE_CODE_NEW_INIT=1` for an interactive flow that also walks through skills, hooks, and personal memory files. If `/init` finds OpenAI Codex or Google Gemini CLI configuration, it offers to carry it over with `/import` | | `/insights` | Generate an HTML report analyzing your recent sessions on this machine: which projects you work in, how you use Claude Code, where things go wrong, and features to try. Not available in [cloud sessions](/docs/en/claude-code-on-the-web). See [Analyze your usage patterns](/docs/en/costs#analyze-your-usage-patterns) for the report location, retention, and cost | | `/install-github-app` | Install the Claude GitHub App for a repository, with an optional step to set up [GitHub Actions](/docs/en/github-actions) workflows and secrets. Walks you through selecting a repo and configuring the integration. Works only with github.com repositories. When your repository's git remote is on gitlab.com or bitbucket.org, the command prints a notice and exits instead of starting setup. To run Claude Code from GitLab pipelines, see [GitLab CI/CD](/docs/en/gitlab-ci-cd) | | `/install-slack-app` | Install the Claude Slack app. Opens a browser to complete the OAuth flow | diff --git a/content/en/docs/claude-code/context-window.md b/content/en/docs/claude-code/context-window.md index 18f16b4dc..b74b915cc 100644 --- a/content/en/docs/claude-code/context-window.md +++ b/content/en/docs/claude-code/context-window.md @@ -1586,7 +1586,7 @@ Claude Code's context window holds everything Claude knows about your session: y The session walks through a realistic flow with representative token counts: -* **Before you type anything**: CLAUDE.md, auto memory, MCP tool names, and skill descriptions all load into context. Your own setup may add more here, like an [output style](/docs/en/output-styles) or text from [`--append-system-prompt`](/docs/en/cli-reference), which both go into the system prompt the same way. +* **Before you type anything**: CLAUDE.md, auto memory, MCP tool names, and skill descriptions all load into context. Your own setup may add more here, like an [output style](/docs/en/output-styles) or text from [`--append-system-prompt`](/docs/en/cli-reference). * **As Claude works**: each file read adds to context, [path-scoped rules](/docs/en/memory#path-specific-rules) load automatically alongside matching files, and a [PostToolUse hook](/docs/en/hooks-guide) fires after each edit. * **The follow-up prompt**: a [subagent](/docs/en/sub-agents) handles the research in its own separate context window, so the large file reads stay out of yours. Only the summary and a small metadata trailer come back. * **At the end**: `/compact` replaces the conversation with a structured summary. Most startup content reloads automatically; the table below shows what happens to each mechanism. @@ -1597,7 +1597,7 @@ When a long session compacts, Claude Code summarizes the conversation history to | Mechanism | After compaction | | :------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------ | -| System prompt and output style | Unchanged; not part of message history | +| System prompt and output style | Both still apply | | Project-root CLAUDE.md and unscoped rules | Re-injected from disk | | Auto memory | Re-injected from disk | | The plan Claude wrote in [plan mode](/docs/en/permission-modes#analyze-before-you-edit-with-plan-mode) | Re-injected from disk | diff --git a/content/en/docs/claude-code/debug-your-config.md b/content/en/docs/claude-code/debug-your-config.md index f856dda31..b7df0bc4b 100644 --- a/content/en/docs/claude-code/debug-your-config.md +++ b/content/en/docs/claude-code/debug-your-config.md @@ -110,7 +110,7 @@ Most configuration surprises trace back to a small set of location and syntax ru | Project MCP server added but doesn't appear | The one-time approval prompt was dismissed | Project-scoped servers require approval. Run `/mcp` to see status and approve. | | MCP server fails to start from some directories | `command` or `args` uses a relative file path | Use absolute paths for local scripts. Executables on your `PATH` like `npx` or `uvx` work as-is. | | MCP server starts without expected environment variables | The server's config entry doesn't set them, and they aren't in the environment Claude Code passes to stdio servers: its own environment, minus the [variables it strips from subprocesses](/docs/en/monitoring-usage#administrator-configuration) | Set per-server `env` inside the server's `.mcp.json` entry, which doesn't depend on the launch environment or workspace trust. | -| `Bash(rm *)` deny rule doesn't block `/bin/rm` or `find -delete` | Prefix rules match the literal command string, not the underlying executable | Add explicit patterns for each variant, or use a [PreToolUse hook](/docs/en/hooks-guide) or the [sandbox](/docs/en/sandboxing) for a hard guarantee. | +| `Bash(rm *)` deny rule doesn't block `/bin/rm` or `find -delete` | Bash rules match the literal command string, not the underlying executable; see [what a Bash rule doesn't match](/docs/en/permissions#bash-rule-limits) | Use a [PreToolUse hook](/docs/en/hooks-guide) or the [sandbox](/docs/en/sandboxing) for a hard guarantee. | ## Related resources diff --git a/content/en/docs/claude-code/discover-plugins.md b/content/en/docs/claude-code/discover-plugins.md index 932375c0c..eb9c6b665 100644 --- a/content/en/docs/claude-code/discover-plugins.md +++ b/content/en/docs/claude-code/discover-plugins.md @@ -281,7 +281,7 @@ Add a remote `marketplace.json` file via URL: ``` - URL-based marketplaces have some limitations compared to Git-based marketplaces. If you encounter "path not found" errors when installing plugins, see [Troubleshooting](/docs/en/plugin-marketplaces#plugins-with-relative-paths-fail-in-url-based-marketplaces). + URL-based marketplaces have some limitations compared to Git-based marketplaces. If plugin installs from a URL-based marketplace fail, see [Troubleshooting](/docs/en/plugin-marketplaces#plugins-with-relative-paths-fail-in-url-based-marketplaces). ## Install plugins diff --git a/content/en/docs/claude-code/env-vars.md b/content/en/docs/claude-code/env-vars.md index d00aa9521..4be560d2f 100644 --- a/content/en/docs/claude-code/env-vars.md +++ b/content/en/docs/claude-code/env-vars.md @@ -206,7 +206,7 @@ Numeric variables such as timeouts, token budgets, and retry counts accept scien | `CLAUDE_CODE_ALT_SCREEN_FULL_REPAINT` | Set to `1` to repaint the entire screen on every frame in [fullscreen rendering](/docs/en/fullscreen) instead of sending incremental updates. Use this if fullscreen mode shows stale or misplaced text fragments. Claude Code enables this automatically for background sessions and [agent view](/docs/en/agent-view) on Windows | | `CLAUDE_CODE_ALWAYS_ENABLE_EFFORT` | Set to `1` to send the [effort](/docs/en/model-config#adjust-effort-level) parameter with every request, even when Claude Code does not recognize the model ID as effort-capable. Use this when routing through an [LLM gateway](/docs/en/llm-gateway) or third-party provider that serves models under custom identifiers. Models that reject the effort parameter at the API, including Claude 3 models, Sonnet 4.0 and 4.5, Opus 4.0 and 4.1, and Haiku 4.5, are still excluded so requests do not fail | | `CLAUDE_CODE_API_KEY_HELPER_TTL_MS` | Interval in milliseconds at which credentials should be refreshed (when using [`apiKeyHelper`](/docs/en/settings-reference#apikeyhelper)) | -| `CLAUDE_CODE_ARTIFACT_AUTO_OPEN` | Set to `0` to stop Claude Code from opening the browser automatically when a new [artifact](/docs/en/artifacts) is published. Republishing an existing artifact does not open the browser regardless of this setting | +| `CLAUDE_CODE_ARTIFACT_AUTO_OPEN` | Set to `0` to stop Claude Code from opening the browser automatically when a new [artifact](/docs/en/artifacts#create-an-artifact) is published | | `CLAUDE_CODE_ARTIFACT_COMMENTS` | Set to `0` to stop Claude reading and replying to [comments on an artifact](/docs/en/artifacts#collect-comments-on-an-artifact). Has no effect when `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC` has [turned artifacts off](/docs/en/artifacts#availability). Requires Claude Code v2.1.221 or later | | `CLAUDE_CODE_ARTIFACT_COMMENTS_AUTOREACT` | Set to `0` to stop Claude [replying on its own to comments sent to it](/docs/en/artifacts#let-claude-reply-to-comments-on-its-own). Requires Claude Code v2.1.228 or later | | `CLAUDE_CODE_ATTRIBUTION_HEADER` | Set to `0` to omit the [attribution block](/docs/en/llm-gateway-protocol#system-prompt-attribution-block), which carries the client version and a prompt fingerprint, from the start of the system prompt. Caching on a direct connection to the Anthropic API is unaffected either way. In some direct-connection setups, Claude Code keeps the block on [auto mode](/docs/en/permission-modes#eliminate-prompts-with-auto-mode) classifier requests even when you set `0`. In [System prompt attribution block](/docs/en/llm-gateway-protocol#system-prompt-attribution-block), check which connections and credentials this covers. Before v2.1.181 the block included a per-request token on custom base URLs and Microsoft Foundry connections, so on those versions set it to `0` when your LLM gateway caches on the request body or forwards requests to a third-party provider, or when you connect to Microsoft Foundry directly | @@ -259,11 +259,11 @@ Numeric variables such as timeouts, token budgets, and retry counts accept scien | `CLAUDE_CODE_DISABLE_PERMISSION_PROMPT_NOTIFY_HOOKS` | Set to `1` to stop Claude Code from running your [`Notification` hooks for unanswered permission requests](/docs/en/hooks#notification) in sessions where Claude Code sends them to the Agent SDK's `canUseTool` callback, which is how Claude Desktop and the VS Code extension host Claude Code. Has no effect in terminal sessions. Requires Claude Code v2.1.233 or later | | `CLAUDE_CODE_DISABLE_POLICY_SKILLS` | Set to `1` to skip loading skills from the system-wide managed skills directory. Useful for container or CI sessions that should not load operator-provisioned skills | | `CLAUDE_CODE_DISABLE_TERMINAL_TITLE` | Set to `1` to disable automatic terminal title updates based on conversation context. In Agent SDK and `claude -p` sessions, this also skips the background small/fast-model request that generates the session title | -| `CLAUDE_CODE_DISABLE_THINKING` | Set to `1` to omit the `thinking` parameter from API requests entirely. This is a compatibility option for proxies and gateways that reject the parameter. The variable's behavior is unchanged from earlier versions; on models that think by default, omitting the parameter means the model may still think. To explicitly disable [extended thinking](https://platform.claude.com/docs/en/build-with-claude/extended-thinking) on the Anthropic API, use `MAX_THINKING_TOKENS=0` instead, which is also ineffective on [Fable models](/docs/en/model-config#extended-thinking) since they can't have thinking turned off. On [third-party providers](/docs/en/third-party-integrations), `0` likewise omits the parameter, so the two variables behave the same there | +| `CLAUDE_CODE_DISABLE_THINKING` | Set to `1` to omit the `thinking` parameter from API requests entirely. This is a compatibility option for proxies and gateways that reject the parameter. On models that think by default, omitting the parameter means the model may still think. To explicitly disable [extended thinking](https://platform.claude.com/docs/en/build-with-claude/extended-thinking) on the Anthropic API, use `MAX_THINKING_TOKENS=0` instead. Neither variable turns thinking off on Fable models, which can't have thinking turned off. On [third-party providers](/docs/en/third-party-integrations), `MAX_THINKING_TOKENS=0` likewise omits the parameter, so the two variables behave the same there | | `CLAUDE_CODE_DISABLE_UNKNOWN_MODEL_WINDOW_ENFORCEMENT` | Set to `1` to skip proactive [auto-compaction](/docs/en/costs#reduce-token-usage) when Claude Code doesn't recognize the model ID, such as an [LLM gateway](/docs/en/llm-gateway) alias. Without this variable, Claude Code compacts at the context window it assumes for the ID. `CLAUDE_CODE_MAX_CONTEXT_TOKENS` can correct the assumed window instead; see [Correct the window for a gateway or custom model ID](/docs/en/model-config#correct-the-window-for-a-gateway-or-custom-model-id) for when each variable applies. Requires Claude Code v2.1.223 or later | | `CLAUDE_CODE_DISABLE_VIRTUAL_SCROLL` | Set to `1` to disable virtual scrolling in [fullscreen rendering](/docs/en/fullscreen) and render every message in the transcript. Use this if scrolling in fullscreen mode shows blank regions where messages should appear | | `CLAUDE_CODE_DISABLE_WORKFLOWS` | Set to `1` to disable [workflows](/docs/en/workflows#turn-workflows-off). Equivalent to the [`disableWorkflows`](/docs/en/settings-reference#disableworkflows) setting | -| `CLAUDE_CODE_EFFORT_LEVEL` | Set the effort level for supported models. Values: `low`, `medium`, `high`, `xhigh`, `max`, or `auto` to use the model default. Available levels depend on the model. Takes precedence over `--effort`, `/effort`, and the `modelSettings` and `effortLevel` settings. See [Adjust effort level](/docs/en/model-config#adjust-effort-level) | +| `CLAUDE_CODE_EFFORT_LEVEL` | Set the effort level for supported models. Values: `low`, `medium`, `high`, `xhigh`, `max`, or `auto` to use the model default. Available levels depend on the model. Takes precedence over `--effort`, `/effort`, and the `modelSettings` and `effortLevel` settings. A [`maxEffortLevel`](/docs/en/settings-reference#maxeffortlevel) cap still applies. See [Adjust effort level](/docs/en/model-config#adjust-effort-level) | | `CLAUDE_CODE_ENABLE_APPEND_SUBAGENT_PROMPT` | Set to `1` to enable appending extra text to the end of the system prompt of every [subagent](/docs/en/sub-agents) other than a [forked subagent](/docs/en/sub-agents#fork-the-current-conversation). The [`--append-subagent-system-prompt`](/docs/en/cli-reference#cli-flags) and [`--append-subagent-system-prompt-file`](/docs/en/cli-reference#cli-flags) flags supply the appended text and set this variable automatically, so you don't need to set it yourself. Requires Claude Code v2.1.205 or later | | `CLAUDE_CODE_ENABLE_AUTO_MODE` | Accepted for compatibility with older releases and has no effect. Auto mode is available by default on every provider, including Amazon Bedrock, Google Cloud's Agent Platform, Microsoft Foundry, and signed-in [Claude apps gateway](/docs/en/claude-apps-gateway) sessions. In v2.1.158 through v2.1.206, setting this to `1` was required to make [auto mode](/docs/en/permission-modes#eliminate-prompts-with-auto-mode) available on those providers | | `CLAUDE_CODE_ENABLE_AWAY_SUMMARY` | Override [session recap](/docs/en/interactive-mode#session-recap) availability. Set to `0` to force recaps off regardless of the `/config` toggle. Set to `1` to force recaps on when [`awaySummaryEnabled`](/docs/en/settings-reference#awaysummaryenabled) is `false`. Takes precedence over the setting and `/config` toggle | @@ -310,6 +310,7 @@ Numeric variables such as timeouts, token budgets, and retry counts accept scien | `CLAUDE_CODE_MESSAGING_TOKEN` | Set by Claude Code, not by you: in sessions that bind an [inbox socket](/docs/en/cross-session-messaging#the-sessions-inbox-socket), Claude Code exports this per-session token to hooks and Bash commands alongside `CLAUDE_CODE_MESSAGING_SOCKET`. A script posting to the socket can send `{"type":"auth","token":""}` as its first line to prove it belongs to the session. On native Windows, Claude Code requires this line and closes any connection that doesn't open with a valid one. The [own-child rules](/docs/en/cross-session-messaging#the-sessions-inbox-socket) say when Claude Code consults the token. Each session exports its own token, never one inherited from a parent session. Settings `env` blocks can't set it. Requires Claude Code v2.1.228 or later | | `CLAUDE_CODE_NATIVE_CURSOR` | Set to `1` to show the terminal's own cursor at the input caret instead of a drawn block. The cursor respects the terminal's blink, shape, and focus settings | | `CLAUDE_CODE_NEW_INIT` | Set to `1` to make `/init` run an interactive setup flow. The flow asks which files to generate, including CLAUDE.md, skills, and hooks, before exploring the codebase and writing them. Without this variable, `/init` generates a CLAUDE.md automatically without prompting | +| `CLAUDE_CODE_NONBLOCKING_STDOUT` | Set to `1` to write terminal output through a second non-blocking file descriptor, so a terminal that stops reading, such as a paused tmux control-mode pane or a stalled SSH connection, can't freeze Claude Code mid-session. Applies on macOS, Linux, and WSL when stdout is a terminal. Requires Claude Code v2.1.261 or later | | `CLAUDE_CODE_NO_FLICKER` | Set to `1` to enable [fullscreen rendering](/docs/en/fullscreen), a research preview that reduces flicker and keeps memory flat in long conversations. Overrides the [`tui`](/docs/en/settings-reference#tui) setting; you can also switch with `/tui fullscreen` | | `CLAUDE_CODE_OAUTH_REFRESH_TOKEN` | OAuth refresh token for Claude.ai authentication. When set, `claude auth login` exchanges this token directly instead of opening a browser. Requires `CLAUDE_CODE_OAUTH_SCOPES`. Useful for provisioning authentication in automated environments | | `CLAUDE_CODE_OAUTH_SCOPES` | Space-separated OAuth scopes the refresh token was issued with, such as `"user:profile user:inference user:sessions:claude_code"`. Required when `CLAUDE_CODE_OAUTH_REFRESH_TOKEN` is set | @@ -378,7 +379,7 @@ Numeric variables such as timeouts, token budgets, and retry counts accept scien | `CLAUDE_CODE_TMUX_TRUECOLOR` | Set to any non-empty value, such as `1`, to allow 24-bit truecolor output inside tmux. **Setting it to `0` or `false` still allows truecolor**, unlike most on/off variables; unset the variable to restore the 256-color clamp. By default, Claude Code clamps to 256 colors when `$TMUX` is set because tmux does not pass through truecolor escape sequences unless configured to. Set this after adding `set -ga terminal-overrides ',*:Tc'` to your `~/.tmux.conf`. See [Terminal configuration](/docs/en/terminal-config) for other tmux settings | | `CLAUDE_CODE_TOOL_MEMORY_CGROUP_EXCLUDE` | On Linux and WSL, set to a comma-separated list of the kinds of processes Claude Code [excludes from the tool memory cap](/docs/en/tools-reference#memory-limit-on-linux-and-wsl), such as `mcp` or `lsp`. Set `none` to cap every kind, or `all-new` to cap only Bash, PowerShell, and Monitor tool commands. Claude Code keeps Bash, PowerShell, and Monitor tool commands under the cap whatever you list. Requires Claude Code v2.1.246 or later | | `CLAUDE_CODE_TOOL_MEMORY_LIMIT` | On Linux and WSL, set to a size such as `4G` to [cap the memory that Bash and PowerShell tool commands can use](/docs/en/tools-reference#memory-limit-on-linux-and-wsl), and Monitor tool commands on v2.1.246 or later. Write the size in plain digits, alone for a number of bytes or with a `K`, `M`, `G`, or `T` suffix. Set `0` or `off` to turn the cap off. Once the first process Claude Code starts has turned the cap on or off, a changed value takes effect the next time you launch `claude`. Requires Claude Code v2.1.233 or later | -| `CLAUDE_CODE_USER_DIALOG_TIMEOUT_MS` | Deadline in milliseconds for dialogs Claude Code forwards to a remote client, such as a [Remote Control](/docs/en/remote-control) or SDK host, and for the approval dialog for a [held cross-session message](/docs/en/cross-session-messaging#control-inbound-messages), before Claude Code cancels them; permission prompts and `AskUserQuestion` questions use their own flows and aren't governed by it. Also bounds the mid-session [Fable usage-credits consent prompt](/docs/en/model-config#fable-and-usage-credits) in a session that may be running unattended. [Control inbound messages](/docs/en/cross-session-messaging#control-inbound-messages) and [non-interactive sessions](/docs/en/cross-session-messaging#non-interactive-sessions) cover the full held-message expiry rules, including the cases where the deadline doesn't apply. Overrides the [`dialogExpiry`](/docs/en/settings-reference#dialogexpiry) setting; `0` or a negative value disables the deadline | +| `CLAUDE_CODE_USER_DIALOG_TIMEOUT_MS` | Deadline in milliseconds before Claude Code cancels a dialog it forwards to a remote client such as a [Remote Control](/docs/en/remote-control) or SDK host, or the approval dialog for a [held cross-session message](/docs/en/cross-session-messaging#control-inbound-messages); permission prompts and `AskUserQuestion` questions use their own flows and aren't governed by it. On Claude Code v2.1.236 or later, it also bounds the mid-session [Fable usage-credits consent prompt](/docs/en/model-config#fable-and-usage-credits) in a session that may be running unattended. [Control inbound messages](/docs/en/cross-session-messaging#control-inbound-messages) and [non-interactive sessions](/docs/en/cross-session-messaging#non-interactive-sessions) cover the full held-message expiry rules, including the cases where the deadline doesn't apply. Overrides the [`dialogExpiry`](/docs/en/settings-reference#dialogexpiry) setting. `0` or a negative value disables the deadline | | `CLAUDE_CODE_USE_ANTHROPIC_AWS` | Use [Claude Platform on AWS](/docs/en/claude-platform-on-aws) | | `CLAUDE_CODE_USE_BEDROCK` | Use [Amazon Bedrock](/docs/en/amazon-bedrock) | | `CLAUDE_CODE_USE_FOUNDRY` | Use [Microsoft Foundry](/docs/en/microsoft-foundry) | @@ -395,6 +396,7 @@ Numeric variables such as timeouts, token budgets, and retry counts accept scien | `CLAUDE_ENABLE_BYTE_WATCHDOG_BEDROCK` | Set to `1` to enable the byte-level streaming idle watchdog on Amazon Bedrock `vnd.amazon.eventstream` responses, which also enables the [first-byte deadline](/docs/en/network-config#streaming-idle-watchdogs) on Bedrock streaming requests. Off by default. Configure the timeout with `CLAUDE_STREAM_IDLE_TIMEOUT_MS` | | `CLAUDE_ENABLE_STREAM_WATCHDOG` | Set to `0` to force-disable the event-level streaming idle watchdog, or set to `1` to force-enable it. When unset, the watchdog is on by default for all providers. Before v2.1.196, the unset default was server-controlled on the direct Anthropic API and off on other providers. Configure the timeout with `CLAUDE_STREAM_IDLE_TIMEOUT_MS`; for the other stall timers that run alongside this one, see [Streaming idle watchdogs](/docs/en/network-config#streaming-idle-watchdogs) | | `CLAUDE_ENV_FILE` | Path to a shell script whose contents Claude Code runs before each Bash command in the same shell process, so exports in the file are visible to the command. Use to persist virtualenv or conda activation across commands. Also populated dynamically by [SessionStart](/docs/en/hooks#persist-environment-variables), [Setup](/docs/en/hooks#setup), [CwdChanged](/docs/en/hooks#cwdchanged), and [FileChanged](/docs/en/hooks#filechanged) hooks | +| `CLAUDE_JOB_DIR` | Set by Claude Code in each [background session](/docs/en/agent-view) to that session's `~/.claude/jobs/` directory. Shell commands that the session runs inherit it. Write scratch files to [`$CLAUDE_JOB_DIR/tmp`](/docs/en/agent-view#where-state-is-stored). Claude's `Write` and `Edit` calls there don't prompt for permission, and the directory is removed when the session is deleted | | `CLAUDE_PID` | Claude Code sets this to its own process ID in the subprocesses it spawns: Bash and PowerShell tool commands and hook commands. On Linux, the Bash tool's shell integration uses it to refuse a `pkill` pattern that would match the Claude Code process itself; see [the error reference](/docs/en/errors#pkill-pattern-matches-the-claude-code-process). Read it from your own scripts to identify or signal the parent Claude Code process deliberately. Requires Claude Code v2.1.214 or later | | `CLAUDE_REMOTE_CONTROL_SESSION_NAME_PREFIX` | Prefix for auto-generated [Remote Control](/docs/en/remote-control) session names when no explicit name is provided. Defaults to your machine's hostname, producing names like `myhost-graceful-unicorn`. The `--remote-control-session-name-prefix` CLI flag sets the same value for a single invocation | | `CLAUDE_STREAM_FIRST_BYTE_TIMEOUT_MS` | Deadline in milliseconds for the first response byte of a streaming request, on the connections where the [first-byte deadline](/docs/en/network-config#streaming-idle-watchdogs) runs. For how Claude Code clamps it, the extra time it adds for large request bodies, and how it picks the deadline when you leave this unset, see [No response from API](/docs/en/errors#no-response-from-api). Requires Claude Code v2.1.242 or later | @@ -429,16 +431,16 @@ Numeric variables such as timeouts, token budgets, and retry counts accept scien | `ENABLE_PROMPT_CACHING_1H` | Set to `1` to request a 1-hour [prompt cache TTL](/docs/en/prompt-caching#cache-lifetime) instead of the default 5 minutes. Intended for API key, [Amazon Bedrock](/docs/en/amazon-bedrock), [Google Cloud's Agent Platform](/docs/en/google-vertex-ai), [Microsoft Foundry](/docs/en/microsoft-foundry), and [Claude Platform on AWS](/docs/en/claude-platform-on-aws) users. Subscription users within included usage receive the 1-hour TTL automatically on the [main conversation](/docs/en/prompt-caching#which-ttl-each-request-gets). Subscription users drawing on [usage credits](https://support.claude.com/en/articles/12429409-extra-usage-for-paid-claude-plans) can set it to keep the 1-hour TTL. 1-hour cache writes are billed at a higher rate. To choose the TTL per request bucket instead, use `CLAUDE_CODE_PROMPT_CACHE_TTL` and `CLAUDE_CODE_SUBAGENT_PROMPT_CACHE_TTL`, which take precedence over this variable | | `ENABLE_PROMPT_CACHING_1H_BEDROCK` | Deprecated. Use `ENABLE_PROMPT_CACHING_1H` instead | | `ENABLE_TOOL_SEARCH` | Controls [MCP tool search](/docs/en/mcp#scale-with-mcp-tool-search). Unset, Claude Code defers all MCP tools by default. It still loads them upfront on Google Cloud's Agent Platform models earlier than the Claude 4.5 generation, on a Microsoft Foundry deployment hosted on Azure, and when `ANTHROPIC_BASE_URL` points to a non-first-party host. `true` always defers and sends the beta header, except on those same Agent Platform models and Microsoft Foundry deployments; requests fail on proxies that don't support `tool_reference`. `auto` loads upfront when tool definitions fit within 10% of context. `auto:N` sets a custom threshold, such as `auto:5` for 5%. `false` loads all tools upfront. A value you set yourself is ignored when `CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS` is set. Before v2.1.221, Claude Code disabled tool search for all models on Google Cloud's Agent Platform unless you set this variable to `true` | -| `FALLBACK_FOR_ALL_PRIMARY_MODELS` | Set to any non-empty value, such as `1`, to make every model stop retrying with a repeated-overload error when no fallback model is configured. **Setting it to `0` or `false` still enables this**, unlike most on/off variables; unset the variable to restore the default retry behavior. Without it, models Claude Code recognizes as Opus, Fable, or Mythos models stop retrying this way when you authenticate with an API key or a [third-party provider](/docs/en/third-party-integrations) rather than a Claude subscription. As of v2.1.160, a configured [fallback model chain](/docs/en/model-config#fallback-model-chains) triggers on repeated overload errors for any primary model, so this variable does not affect switching to a fallback model | +| `FALLBACK_FOR_ALL_PRIMARY_MODELS` | Set to any non-empty value, such as `1`, to make Claude Code stop retrying on repeated overload errors for every model when no fallback model is configured. **Setting it to `0` or `false` still enables this**, unlike most on/off variables; unset the variable to restore the default retry behavior. Without it, Claude Code stops retrying this way on models it recognizes as Opus, Fable, or Mythos models when you authenticate with an API key or a [third-party provider](/docs/en/third-party-integrations) rather than a Claude subscription. On Claude Code v2.1.160 or later, Claude Code switches to your configured [fallback model chain](/docs/en/model-config#fallback-model-chains) on repeated overload errors for any primary model, so this variable doesn't affect switching to a fallback model | | `FORCE_AUTOUPDATE_PLUGINS` | Set to `1` to force plugin auto-updates even when the main auto-updater is disabled via `DISABLE_AUTOUPDATER` | -| `FORCE_HYPERLINK` | Set to `1` to enable clickable OSC 8 hyperlinks when your terminal supports them but isn't auto-detected, or `0` to disable them. When unset, Claude Code enables hyperlinks only when it detects terminal support. Claude Code parses this value as a number, not a Boolean, so a value such as `false`, `no`, or `off` enables hyperlinks rather than disabling them. Claude Code renders the footer [PR or merge request badge](/docs/en/interactive-mode#pr-review-status) as a hyperlink even when it can't detect terminal support, such as over SSH. Set `0` to render the badge as plain text | +| `FORCE_HYPERLINK` | Set to `1` to enable clickable OSC 8 hyperlinks when your terminal supports them but isn't auto-detected, or `0` to disable them. When unset, Claude Code enables hyperlinks only when it detects terminal support. Claude Code parses this value as a number, not a Boolean, so a value such as `false`, `no`, or `off` enables hyperlinks rather than disabling them. The footer [PR or merge request badge](/docs/en/interactive-mode#pr-review-status) renders as a hyperlink even when Claude Code can't detect terminal support, such as over SSH. Set `0` to render the badge as plain text | | `FORCE_PROMPT_CACHING_5M` | Set to `1` to force the 5-minute prompt cache TTL even when 1-hour TTL would otherwise apply. Overrides `CLAUDE_CODE_PROMPT_CACHE_TTL`, `CLAUDE_CODE_SUBAGENT_PROMPT_CACHE_TTL`, `ENABLE_PROMPT_CACHING_1H`, and the `promptCacheTtl` and `subagentPromptCacheTtl` settings | | `HTTP_PROXY` | Specify HTTP proxy server for network connections | | `HTTPS_PROXY` | Specify HTTPS proxy server for network connections | | `IS_DEMO` | Set to any non-empty value, such as `1`, to enable demo mode: hides your email and organization name from the header and `/status` output, and skips onboarding. **Setting it to `0` or `false` still enables demo mode**, unlike most on/off variables; unset the variable to turn it off. Useful when streaming or recording a session | | `MAX_MCP_OUTPUT_TOKENS` | Maximum number of tokens allowed in MCP tool responses. Claude Code displays a warning when output exceeds 10,000 tokens. Tools that declare [`anthropic/maxResultSizeChars`](/docs/en/mcp#raise-the-limit-for-a-specific-tool) use that character limit for text content instead, but image content from those tools is still subject to this variable (default: 25000) | | `MAX_STRUCTURED_OUTPUT_RETRIES` | Number of attempts Claude Code allows when the model's response fails validation against the [`--json-schema`](/docs/en/cli-reference#cli-flags) in non-interactive mode with the `-p` flag; after that many failed attempts with no valid output, the run fails. The same cap applies when a [workflow](/docs/en/workflows) subagent's structured output fails validation. Defaults to 5, a first attempt plus four retries | -| `MAX_THINKING_TOKENS` | Fixed token budget for [extended thinking](https://platform.claude.com/docs/en/build-with-claude/extended-thinking). Claude Code caps it at one token below the request's max output tokens and never below 1,024; see `CLAUDE_CODE_MAX_OUTPUT_TOKENS` for how that limit is set. When unset and thinking is enabled, models with [adaptive reasoning](/docs/en/model-config#adjust-effort-level) choose their own thinking depth, and other models use the cap. Set to `0` to disable thinking on the Anthropic API, except on [Fable models](/docs/en/model-config#extended-thinking), which can't have thinking turned off; on [third-party providers](/docs/en/third-party-integrations), `0` omits the `thinking` parameter instead. With thinking turned off on the Anthropic API, Claude Code sends effort `high` instead of a higher level to models it knows [don't accept that combination](/docs/en/errors#effort-isnt-available-with-thinking-turned-off), such as Opus 5. Nonzero values are ignored on adaptive reasoning models unless `CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING` is set | +| `MAX_THINKING_TOKENS` | Fixed token budget for [extended thinking](https://platform.claude.com/docs/en/build-with-claude/extended-thinking). Claude Code caps it at one token below the request's max output tokens and never below 1,024. See `CLAUDE_CODE_MAX_OUTPUT_TOKENS` for how that limit is set. When unset and thinking is enabled, models with [adaptive reasoning](/docs/en/model-config#adjust-effort-level) choose their own thinking depth, and other models use the cap. Set to `0` to disable thinking on the Anthropic API, except on Fable models, which can't have thinking turned off. On [third-party providers](/docs/en/third-party-integrations), `0` omits the `thinking` parameter instead. With thinking turned off on the Anthropic API, Claude Code sends effort `high` instead of a higher level to models it knows [don't accept that combination](/docs/en/errors#effort-isnt-available-with-thinking-turned-off), such as Opus 5. Claude Code ignores nonzero values on adaptive reasoning models, except on the models where `CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING` turns adaptive reasoning off | | `MCP_CLIENT_SECRET` | OAuth client secret for MCP servers that require [pre-configured credentials](/docs/en/mcp#use-pre-configured-oauth-credentials). Avoids the interactive prompt when adding a server with `--client-secret` | | `MCP_CONNECTION_NONBLOCKING` | Controls whether startup waits for MCP servers to connect before the first query. MCP startup is non-blocking by default: servers connect in the background and their tools become available as they finish. Set to `0` to make Claude Code wait for servers to connect before the first query. Servers configured with [`alwaysLoad: true`](/docs/en/mcp#exempt-a-server-from-deferral) still make startup wait regardless, except when served from the [discovery cache](/docs/en/mcp#server-status-detail), since their tools must be present when the first prompt is built. In non-interactive mode (`-p`), Claude Code also waits for still-pending servers before the first turn regardless of this variable, with a longer deadline when you pass [`--mcp-config`](/docs/en/cli-reference#cli-flags) explicitly; see that flag's entry for the cached-server exception | | `MCP_CONNECT_TIMEOUT_MS` | How long blocking MCP startup waits, in milliseconds, for the connection batch before snapshotting the tool list (default: 5000). Applies when `MCP_CONNECTION_NONBLOCKING=0` or for servers marked [`alwaysLoad: true`](/docs/en/mcp#exempt-a-server-from-deferral). Servers still pending at the deadline keep connecting in the background. Distinct from `MCP_TIMEOUT`, which bounds an individual server's connect attempt | @@ -511,6 +513,7 @@ With fetching off, you can't: * Get the [PowerShell tool](/docs/en/tools-reference#powershell-tool) by default for claude.ai and Console accounts on Windows with Git Bash installed; Claude Code routes shell commands through Git Bash unless you set `CLAUDE_CODE_USE_POWERSHELL_TOOL=1`. On Windows without Git Bash, the tool stays on * Get [Claude-drafted feedback](/docs/en/tools-reference#sendfeedback-tool-behavior), which Claude Code turns on through a fetched flag * Have Claude Code [exclude MCP tools whose input schema the API would reject](/docs/en/mcp#tools-with-invalid-input-schemas); it sends the schema anyway, and a request that includes it fails with [a 400 error naming the tool by its position](/docs/en/errors#tool-input-schema-is-invalid) +* Have a resumed conversation [keep its recorded system prompt](/docs/en/cli-reference#system-prompt-flags-in-resumed-conversations); Claude Code rebuilds the prompt on every request and `--system-prompt-snapshot` has no effect ### First session after an install or upgrade diff --git a/content/en/docs/claude-code/errors.md b/content/en/docs/claude-code/errors.md index 15b03b575..4e02022d2 100644 --- a/content/en/docs/claude-code/errors.md +++ b/content/en/docs/claude-code/errors.md @@ -67,6 +67,8 @@ Match the message you see to a section below. | `OAuth token revoked` / `OAuth token has expired` | [Authentication](#oauth-token-revoked-or-expired) | | `API Error: 401 Invalid authentication credentials` | [Authentication](#api-error-401-invalid-authentication-credentials) | | `Login expired · Please run /login` | [Authentication](#login-expired) | +| `Not signed in to the Cloud gateway — run /login.` | [Authentication](#administrator-policy-requires-a-cloud-gateway-sign-in) | +| `Administrator policy requires a Cloud gateway sign-in on this machine` | [Authentication](#administrator-policy-requires-a-cloud-gateway-sign-in) | | `Failed to authenticate: OAuth session expired and could not be refreshed` | [Authentication](#login-expired) | | `Your account is on hold and can't use Claude Code. View details or appeal: https://claude.ai/restricted` | [Authentication](#your-account-is-on-hold) | | `Your account is on hold and can't sign in to Claude Code. View details or appeal: https://claude.ai/restricted` | [Authentication](#your-account-is-on-hold) | @@ -75,10 +77,15 @@ Match the message you see to a section below. | `does not meet scope requirement user:profile` | [Authentication](#oauth-scope-requirement) | | `claude.ai rejected the session token` / `session token rejected` | [Authentication](#claude-ai-rejected-the-session-token) | | `Issuer mismatch in authorization response (RFC 9207)` | [Authentication](#issuer-mismatch-in-authorization-response) | +| `Cloud gateway session expired — run /login to reconnect.` | [Authentication](#cloud-gateway-session-expired) | +| `Cloud gateway no longer accepts this session` | [Authentication](#cloud-gateway-session-expired) | | `AWS credentials expired or invalid` | [Authentication](#aws-credentials-expired-or-invalid) | | `AWS authentication failed` | [Authentication](#aws-authentication-failed) | +| `Could not load AWS credentials` / `Could not load Google Cloud credentials` | [Authentication](#could-not-load-aws-or-google-cloud-credentials) | | `AWS default-chain credential resolve timed out` | [Authentication](#aws-default-chain-credential-resolve-timed-out) | -| `Could not load the default credentials` on Google Cloud's Agent Platform | [Automatic retries](#automatic-retries) | +| `Timed out after 60s waiting for AWS` | [Authentication](#bedrock-setup-verification-timed-out-waiting-for-aws) | +| `A request to AWS timed out. Check your network and proxy settings, then try again.` | [Authentication](#bedrock-setup-verification-timed-out-waiting-for-aws) | +| `Could not load the default credentials` on Google Cloud's Agent Platform | [Authentication](#could-not-load-aws-or-google-cloud-credentials) | | `Unable to connect to API` | [Network](#unable-to-connect-to-api) | | `Connection refused —` / `Can't reach the API server —` / `No internet route —` / `Couldn't connect through your proxy` / `Connection dropped`, each ending with an error code in parentheses | [Network](#unable-to-connect-to-api) | | `Unable to connect to Anthropic services` during setup | [Network](#unable-to-connect-to-anthropic-services) | @@ -89,6 +96,7 @@ Match the message you see to a section below. | `Bedrock streaming response has content-type "..."; expected "application/vnd.amazon.eventstream"` | [Network](#bedrock-streaming-response-has-an-unexpected-content-type) | | `SSL certificate verification failed` | [Network](#ssl-certificate-errors) | | `SSL certificate error (...)` during login or startup | [Network](#ssl-certificate-errors) | +| `unable to get local issuer certificate` | [Network](#ssl-certificate-errors) | | `403` with `x-deny-reason: host_not_allowed` in a cloud or routine session | [Network](#host-not-allowed-in-a-cloud-session) | | `proxy refused the connection` | [Network](#the-proxy-refused-the-connection) | | `403` with `This GraphQL query is not enabled for this session` in a cloud session | [GitHub proxy](/docs/en/cloud-environments#github-proxy) | @@ -105,6 +113,7 @@ Match the message you see to a section below. | `upstream rejected the request` / `request too large for this upstream` on a Claude apps gateway session | [Upstream error messages](/docs/en/claude-apps-gateway-config#upstream-error-messages) | | `upstream rate limit exceeded` on a Claude apps gateway session | [Upstream error messages](/docs/en/claude-apps-gateway-config#upstream-error-messages) | | `all upstreams failed (N attempted)` on a Claude apps gateway session | [Upstream error messages](/docs/en/claude-apps-gateway-config#upstream-error-messages) | +| `Claude Code may not be enabled for your organization` after a Claude apps gateway sign-in | [Claude apps gateway troubleshooting](/docs/en/claude-apps-gateway-deploy#troubleshooting) | | `Context exceeds the ...-token limit by ... tokens` in `/context` output | [Request errors](#context-exceeds-the-token-limit) | | `Error during compaction: Conversation too long` | [Request errors](#error-during-compaction-conversation-too-long) | | `Request too large` | [Request errors](#request-too-large) | @@ -116,10 +125,13 @@ Match the message you see to a section below. | `API Error: 400 ... tools.N.custom.input_schema: JSON schema is invalid` / `Property keys should match pattern` | [Request errors](#tool-input-schema-is-invalid) | | `There's an issue with the selected model` | [Request errors](#theres-an-issue-with-the-selected-model) | | `Model ... is not a recognized model id` | [Request errors](#model-is-not-a-recognized-model-id) | +| `Model ... not found` | [Request errors](#model-not-found) | | `Claude Opus is not available with the Claude Pro plan` | [Request errors](#claude-opus-is-not-available-with-the-claude-pro-plan) | | `Claude Code ... does not support this model; version ... or newer is required` | [Request errors](#claude-code-does-not-support-this-model) | +| `Claude Code ... is older than the minimum version required by your organization's policy` | [Request errors](#claude-code-does-not-support-this-model) | | `Model ... is restricted by your organization's settings` | [Request errors](#model-is-restricted-by-your-organizations-settings) | | `Model switch ... blocked by a PreModelSwitch hook` | [Request errors](#model-switch-was-blocked-by-a-premodelswitch-hook) | +| `couldn't save it as your default` / `couldn't confirm it was saved as your default` | [Request errors](#couldnt-save-it-as-your-default) | | `thinking.type.enabled is not supported for this model` | [Request errors](#thinking-type-enabled-is-not-supported-for-this-model) | | `Effort '' isn't available with thinking turned off on this model` | [Request errors](#effort-isnt-available-with-thinking-turned-off) | | `effort '' is not supported when thinking is disabled` | [Request errors](#effort-isnt-available-with-thinking-turned-off) | @@ -140,20 +152,25 @@ Match the message you see to a section below. | `Error: Invalid --agents configuration:` | [Command-line errors](#invalid-agents-configuration) | | `Error: Settings file exceeds the 2MiB limit` | [Command-line errors](#settings-file-exceeds-the-2mib-limit) | | `The current directory no longer exists (it was deleted or moved)` / `Can't read the current directory` | [Command-line errors](#the-current-directory-no-longer-exists) | +| `couldn't be resolved to a real location, so its skills, commands, and agents weren't loaded` | [Command-line errors](#directory-couldnt-be-resolved-to-a-real-location) | | `Error: Workspace not trusted` when starting Remote Control | [Command-line errors](#workspace-not-trusted-when-starting-remote-control) | | `` `` before `remote-control` is not carried over to the sessions Remote Control starts `` | [Command-line errors](#not-carried-over-to-the-sessions-remote-control-starts) | | `` `claude import` is not yet available in this build `` | [Command-line errors](#claude-import-is-not-yet-available-in-this-build) | | `Could not read Claude Code config` | [Command-line errors](#could-not-read-claude-code-config) | | `Could not import : ` | [Command-line errors](#could-not-import-a-server-from-claude-desktop) | +| `Cannot add MCP server to scope: managed` | [Command-line errors](#cannot-add-mcp-server-to-the-managed-scope) | | `is Anthropic-hosted and doesn't support local OAuth` | [Command-line errors](#anthropic-hosted-and-doesnt-support-local-oauth) | +| `Can't read .mcp.json: it isn't a regular file or is larger than 2097152 bytes` | [Command-line errors](#cant-read-mcp-json) | | `Server rejected the Authorization header minted by the configured headersHelper` | [Command-line errors](#server-rejected-the-authorization-header-minted-by-the-configured-headershelper) | | `Error: MCP tool (passed via --permission-prompt-tool) not found` | [Command-line errors](#mcp-permission-prompt-tool-not-found) | +| `OAuth callback port is already in use — another process may be holding it` | [Command-line errors](#oauth-callback-port-is-already-in-use) | | `Shell command failed for pattern "..."`, from `/security-review` or any skill that injects dynamic context | [Command-line errors](#security-review-fails-without-origin-head) | | `Shell command permission check failed for pattern "..."`, from a skill that injects dynamic context | [Command-line errors](#security-review-fails-without-origin-head) | | ``Skill requires bash (`shell: bash` in frontmatter) but Git Bash was not found`` | [Command-line errors](#security-review-fails-without-origin-head) | | `Input must be provided either through stdin or as a prompt argument when using --print` | [Command-line errors](#input-must-be-provided-when-using-print) | | `Error: Input contained only whitespace` | [Command-line errors](#input-contained-only-whitespace) | | `Blank prompt — the message was only whitespace, so nothing was sent to the model.` | [Command-line errors](#input-contained-only-whitespace) | +| `Error: stream-json input carried over 256M characters with no newline` | [Command-line errors](#stream-json-input-carried-over-256m-characters-with-no-newline) | | `Unknown command: /`, with or without a `Did you mean` suggestion | [Command-line errors](#unknown-command) | | `Diff is too large for ultrareview` / `PR # is too large for ultrareview` | [Command-line errors](#diff-is-too-large-for-ultrareview) | | `Could not find merge-base with ` | [Command-line errors](#could-not-find-merge-base-with-the-base-branch) | @@ -174,6 +191,9 @@ Match the message you see to a section below. | `headersHelper for MCP server '' references ${user_config.*}` | [Plugin errors](#plugin-command-references-user-config) | | `Plugin archive integrity check failed` | [Plugin errors](#plugin-archive-integrity-check-failed) | | `path escapes plugin directory` | [Plugin errors](#path-escapes-plugin-directory) | +| `path could not be checked` | [Plugin errors](#path-could-not-be-checked) | +| `its marketplace entry path does not stay inside the marketplace directory` | [Plugin errors](#marketplace-entry-path-does-not-stay-inside-the-marketplace-directory) | +| `Plugin source path refused` | [Plugin errors](#marketplace-entry-path-does-not-stay-inside-the-marketplace-directory) | | `Failed to load marketplace configuration` | [Plugin errors](#failed-to-load-marketplace-configuration) | | `Marketplace configuration file is corrupted` | [Plugin errors](#failed-to-load-marketplace-configuration) | | `would be spawned with zero tools — refusing` | [Tool errors](#agent-would-be-spawned-with-zero-tools) | @@ -194,6 +214,7 @@ Match the message you see to a section below. | `Refusing to search : a path one of its Read deny rules is written through changed while the search was being prepared` / `Refusing to search : it could not be opened` | [Tool errors](#refusing-after-a-symlink-changed) | | `its permission check expired before it ran (too many concurrent file operations)` / `ripgrep was found only by name on PATH` | [Tool errors](#refusing-after-a-symlink-changed) | | `task output swap refused (tasks dir moved or linked)` | [Tool errors](#task-output-swap-refused) | +| `Command killed: its output file was replaced or could no longer be verified` | [Tool errors](#task-output-swap-refused) | | `Can't open MCP settings while no terminal is attached to this background session` | [Background session errors](#commands-refused-in-a-background-session) | | `Can't open MCP settings in a background session` | [Background session errors](#commands-refused-in-a-background-session) | | `blocked because the path is spelled in a form that cannot be safely resolved` | [Background session errors](#write-or-command-blocked-because-the-path-cannot-be-safely-resolved) | @@ -202,6 +223,7 @@ Match the message you see to a section below. | `Can't open — this session is running in another terminal` | [Background session errors](#this-session-is-running-in-another-terminal) | | `This conversation is already open in another running Claude session` | [Background session errors](#this-session-is-running-in-another-terminal) | | `This session's saved conversation is no longer on disk` | [Background session errors](#this-sessions-saved-conversation-is-no-longer-on-disk) | +| `kept unpushed commits on ` | [Background session errors](#worktree-has-commits-that-are-not-pushed-anywhere) | | `kept — worktree has commits that are not pushed anywhere` | [Background session errors](#worktree-has-commits-that-are-not-pushed-anywhere) | | `terminal host process died — press Enter to restart` / `This session's terminal host process died` | [Background session errors](#terminal-host-process-died) | | `Session isn't responding` / `Press enter again to restart this session — it isn't responding` | [Background session errors](#session-isnt-responding) | @@ -225,6 +247,7 @@ Match the message you see to a section below. | `Ignoring N permissions.allow entries from ... this workspace has not been trusted` | [Configuration warnings](#workspace-has-not-been-trusted) | | `is a network path, which cannot be added as a working directory` | [Configuration warnings](#working-directory-is-a-network-path) | | `Remote managed settings failed to load ()` | [Configuration warnings](#remote-managed-settings-failed-to-load) | +| `Managed settings were not approved; exiting without applying them.` | [Configuration warnings](#managed-settings-were-not-approved) | | `MCP server is blocked by enterprise managed policy` | [Configuration warnings](#mcp-server-is-blocked-by-enterprise-managed-policy) | | `Managed settings document could not be parsed as a JSON object; none of its settings are in effect. Fix or remove it.` | [Configuration warnings](#managed-settings-document-could-not-be-parsed) | | `Managed settings drop-in directory could not be read` | [Configuration warnings](#managed-settings-document-could-not-be-parsed) | @@ -235,6 +258,7 @@ Match the message you see to a section below. | `... has a wildcard before the rest of the command` | [Configuration warnings](#has-a-wildcard-before-the-rest-of-the-command) | | `CLAUDE_CODE_DISABLE_1M_CONTEXT is set, but the 200K limit isn't enforced` | [Configuration warnings](#the-200k-limit-isnt-enforced) | | `[claude-code:unrecognized_model]` | [Configuration warnings](#unrecognized-model-id-on-a-request) | +| `Stale sandbox mask files left by a killed session` | [Configuration warnings](#stale-sandbox-mask-files-left-by-a-killed-session) | | Responses seem lower quality than usual | [Response quality](#responses-seem-lower-quality-than-usual) | ## Automatic retries @@ -253,7 +277,7 @@ Claude Code retries these failures: * A request rejected because the input plus `max_tokens` exceeds the context limit. Re-sending it unchanged would fail the same way, so Claude Code retries with a reduced `max_tokens`, and stops retrying and compacts instead in two cases: * When no reduction can fit, for example when the conversation itself nearly fills the context window. * When a retry can't shrink `max_tokens` any further. Before v2.1.218, Claude Code could re-send a reduced request that still didn't fit, such as when the extended thinking budget exceeded the remaining context, until the retry budget ran out. -* An expired or missing Google Cloud credential on [Google Cloud's Agent Platform](/docs/en/google-vertex-ai), which surfaces as an error such as `Could not load the default credentials`. Claude Code discards its cached credentials and retries up to two times, running your [`gcpAuthRefresh`](/docs/en/google-vertex-ai#advanced-credential-configuration) command if you configured one, then reports the error so you can re-authenticate right away. [Google Cloud's Agent Platform troubleshooting](/docs/en/google-vertex-ai#troubleshooting) covers re-authenticating. Before v2.1.228, Claude Code retried a failing credential through the full retry budget before showing the error. +* An expired or missing Google Cloud credential on [Google Cloud's Agent Platform](/docs/en/google-vertex-ai), or AWS credentials that fail to load on your machine. Claude Code discards its cached credentials and retries up to two times, then reports the error so you can re-authenticate right away, as described under [Could not load AWS or Google Cloud credentials](#could-not-load-aws-or-google-cloud-credentials). Before v2.1.228, Claude Code retried a failing Google Cloud credential through the full retry budget before showing the error. * A `401` or `403` from the Anthropic API, directly or through an [LLM gateway](/docs/en/llm-gateway), while an [`apiKeyHelper`](/docs/en/settings-reference#apikeyhelper) script supplies the credential. Claude Code re-runs the script and retries with its fresh output, within the full retry budget. When the script itself fails on the re-run, Claude Code shows [Your apiKeyHelper script is failing](#your-apikeyhelper-script-is-failing) instead. Before v2.1.227, `Connection lost before a response was produced` read `Connection closed while thinking, before producing a response` and `The response stalled before a response was produced` read `Response stalled while thinking, before producing a response`. @@ -970,7 +994,7 @@ Please run /login · API Error: 401 Invalid authentication credentials **What to do:** -* If `/status` shows an `API key` row, an approved [`ANTHROPIC_API_KEY`](/docs/en/authentication#authentication-precedence) is the active credential and takes precedence over your login, so `/login` doesn't replace it. Rotate the key in the Claude Console, or fall back to your subscription by running `unset ANTHROPIC_API_KEY`, or in PowerShell `Remove-Item Env:ANTHROPIC_API_KEY`. +* If `/status` shows an `API key` row that isn't marked as not in use, an approved [`ANTHROPIC_API_KEY`](/docs/en/authentication#authentication-precedence) is the active credential and takes precedence over your login, so `/login` doesn't replace it. Rotate the key in the Claude Console, or fall back to your subscription by running `unset ANTHROPIC_API_KEY`, or in PowerShell `Remove-Item Env:ANTHROPIC_API_KEY`. * If `/status` shows only your login, run `/login` once. If the credential was revoked, a fresh login replaces it. * If the same message returns for the same login account, the account or organization is no longer active. Check the account and organization that `/status` reports, and ask your organization admin to restore access. * If [`ANTHROPIC_BASE_URL`](/docs/en/env-vars) points at an [LLM gateway](/docs/en/llm-gateway), the text after `401` is your gateway's message rather than Anthropic's, and `/login` doesn't change it. Fix the credential your gateway expects instead. @@ -1003,6 +1027,36 @@ You can check for this state before a request fails: [`/status`](/docs/en/comman * In non-interactive mode, run `claude` in the same environment, complete `/login`, then rerun your command. For automation that can't sign in interactively, authenticate with `ANTHROPIC_API_KEY` or [generate a long-lived token with `claude setup-token`](/docs/en/authentication#generate-a-long-lived-token). * If signing in keeps failing, see [Login and authentication](/docs/en/troubleshoot-install#login-and-authentication) +

+ Administrator policy requires a Cloud gateway sign-in +

+ +An administrator's [managed settings](/docs/en/managed-settings) on this machine set [`forceLoginMethod`](/docs/en/settings-reference#forceloginmethod) to `"gateway"` or set [`forceLoginGatewayUrl`](/docs/en/settings-reference#forcelogingatewayurl). Unless you select a cloud provider through a variable such as `CLAUDE_CODE_USE_BEDROCK`, Claude Code then accepts only the [Claude apps gateway](/docs/en/claude-apps-gateway) sign-in. You see one of two messages: + +```text theme={null} +Not signed in to the Cloud gateway — run /login. +``` + +Model requests fail with this message when the session has no gateway sign-in, for example because you haven't run `/login` since the policy reached the machine. + +If you also have an `ANTHROPIC_API_KEY`, `ANTHROPIC_AUTH_TOKEN`, or `apiKeyHelper` credential configured and the managed settings set `forceLoginMethod`, Claude Code exits at startup instead with a message that begins: + +```text theme={null} +Administrator policy requires a Cloud gateway sign-in on this machine; the +Anthropic-issued credential configured here (ANTHROPIC_API_KEY, +ANTHROPIC_AUTH_TOKEN, or apiKeyHelper) is not used. +``` + +**What to do:** + +* Run `/login` and complete the sign-in on the **Cloud gateway** screen +* For the startup message, remove the `ANTHROPIC_API_KEY`, `ANTHROPIC_AUTH_TOKEN`, or `apiKeyHelper` setting you configured, then start `claude` and run `/login` +* If you believe the machine shouldn't require the gateway, ask the administrator who manages it to remove `forceLoginMethod` and `forceLoginGatewayUrl` from its managed settings + +On v2.1.265, a regression also showed the first message in some LLM-gateway and proxy configurations that authenticate with an API key, `apiKeyHelper`, or custom headers, even with no administrator requirement on the machine. Update to v2.1.266 or later. You don't need to change your configuration. + +Before v2.1.261, on machines that set `forceLoginMethod` to `"gateway"`, Claude Code used a leftover saved login instead of failing model requests, and reported a configured environment credential with `This machine's managed settings require a first-party login` instead of the startup message. Before v2.1.265, a machine whose managed settings set only `forceLoginGatewayUrl` didn't require the gateway sign-in, and Claude Code used a leftover credential there. + ### Your account is on hold The Claude account behind your login has been suspended. Claude Code shows the first message when it tries to renew your saved login and learns of the hold, and the second when a sign-in you complete in the browser reports it: @@ -1127,15 +1181,34 @@ The action hint in the middle names the `awsAuthRefresh` command from your setti * If your credentials are current, confirm the IAM permissions in [IAM configuration](/docs/en/amazon-bedrock#iam-configuration) are attached to the identity you're using and that the selected model is enabled for your account and region * Run `aws sts get-caller-identity` to confirm which identity your requests use; a stale `AWS_PROFILE` or default profile is a common cause of a permission mismatch +### Could not load AWS or Google Cloud credentials + +Claude Code couldn't obtain usable credentials from the AWS credential provider chain or from your Google application default credentials on the machine it runs on, so no request reached your cloud provider. Claude Code clears its cached credentials and retries twice before showing this message. The detail after the `·` names the specific cause, such as an expired SSO session, missing application default credentials reported as `Could not load the default credentials`, or a revoked sign-in reported as `invalid_grant`: + +```text theme={null} +API Error: Could not load AWS credentials · Could not load credentials from any providers. Check or refresh your AWS credentials and try again. +API Error: Could not load Google Cloud credentials · invalid_grant. Check or refresh your Google Cloud credentials and try again. +``` + +In [non-interactive mode](/docs/en/headless) with `-p` and in the [Agent SDK](/docs/en/agent-sdk/overview), the structured error code is `cloud_credential_error`. Before v2.1.267, the message showed only the detail text after `API Error:`, and the structured code was `server_error` or `unknown`. + +**What to do:** + +* Run your provider's sign-in command, such as `aws sso login --profile myprofile` or `gcloud auth application-default login`, then retry. [Bedrock, Agent Platform, or Foundry credentials not loading](/docs/en/troubleshoot-install#bedrock-agent-platform-or-foundry-credentials-not-loading) shows how to confirm the credentials outside Claude Code +* If the detail reads `AWS default-chain credential resolve timed out`, the chain hung rather than failed, so follow [AWS default-chain credential resolve timed out](#aws-default-chain-credential-resolve-timed-out) instead + ### AWS default-chain credential resolve timed out -The AWS default credential provider chain didn't produce credentials within 60 seconds, so Claude Code stopped the resolve and failed the request. The failure is local credential resolution: the request never reached [Amazon Bedrock](/docs/en/amazon-bedrock), [Claude Platform on AWS](/docs/en/claude-platform-on-aws), or the [Mantle endpoint](/docs/en/amazon-bedrock#use-the-mantle-endpoint). Claude Code clears its [credential cache](/docs/en/amazon-bedrock#credential-caching-and-resolution-timeout) and retries before this error surfaces, so by the time you see it the chain has stalled on repeated attempts. +The AWS default credential provider chain didn't produce credentials within 60 seconds, so Claude Code stopped the resolve and failed the request. This timeout is one cause of [Could not load AWS or Google Cloud credentials](#could-not-load-aws-or-google-cloud-credentials). The failure is local credential resolution: the request never reached [Amazon Bedrock](/docs/en/amazon-bedrock), [Claude Platform on AWS](/docs/en/claude-platform-on-aws), or the [Mantle endpoint](/docs/en/amazon-bedrock#use-the-mantle-endpoint). Claude Code clears its [credential cache](/docs/en/amazon-bedrock#credential-caching-and-resolution-timeout) and retries before this error surfaces, so by the time you see it the chain has stalled on repeated attempts. ```text theme={null} -API Error: AWS default-chain credential resolve timed out +API Error: Could not load AWS credentials · AWS default-chain credential resolve timed out. Check or refresh your AWS credentials and try again. ``` -Common causes are a `credential_process` command in your AWS profile that waits for input it can't receive, and a container or VM whose instance metadata service (IMDS) never answers the chain's probe. Before v2.1.207, a stalled chain left the request waiting indefinitely instead of failing with this message. +Common causes are a `credential_process` command in your AWS profile that waits for input it can't receive, and a container or VM whose instance metadata service (IMDS) never answers the chain's probe. + +Before v2.1.267, the message read `API Error: AWS default-chain credential resolve timed out`. +Before v2.1.207, a stalled chain left the request waiting indefinitely instead of failing. **What to do:** @@ -1143,6 +1216,53 @@ Common causes are a `credential_process` command in your AWS profile that waits * Complete the sign-in step before starting Claude Code, for example `aws sso login --profile myprofile`, so the chain resolves from the local SSO cache instead of waiting on a browser flow * If your chain runs an interactive sign-in that legitimately needs more than 60 seconds, such as SSO with MFA through a wrapper like `aws-vault`, raise the limit in milliseconds with [`CLAUDE_CODE_AWS_CHAIN_RESOLVE_TIMEOUT_MS`](/docs/en/env-vars) +### Bedrock setup verification timed out waiting for AWS + +A call to AWS during the [Bedrock setup wizard](/docs/en/amazon-bedrock#sign-in-with-bedrock)'s credential verification, such as the credential lookup or the identity check, didn't finish within the 60-second limit. The wizard stops waiting and fails the verification step: + +```text theme={null} +Timed out after 60s waiting for AWS. Check your network and proxy settings; if a credential helper needs longer to prompt you, raise CLAUDE_CODE_AWS_CHAIN_RESOLVE_TIMEOUT_MS. +``` + +The number reflects your limit: 60 seconds by default, or the value you set in [`CLAUDE_CODE_AWS_CHAIN_RESOLVE_TIMEOUT_MS`](/docs/en/env-vars). + +Common causes are a network or proxy that stalls requests to AWS, including the SSO token refresh, and a credential helper still waiting for input you can't see. Raise the limit only when the helper legitimately needs more time. + +A single stalled request to AWS can also fail on its own per-request timeout, which shows a shorter message on the same step: + +```text theme={null} +A request to AWS timed out. Check your network and proxy settings, then try again. +``` + +When the same timeouts occur on the model pin step, the wizard marks a model as `unreachable` instead of showing either message. + +**What to do:** + +* Run `aws sts get-caller-identity` in the same shell. If it also hangs, the stall is outside Claude Code, in your network, your proxy, or the credential helper in your AWS profile; fix that first. +* Complete any interactive sign-in before opening the wizard, for example `aws sso login --profile myprofile` +* If a credential helper in your AWS profile legitimately needs longer than 60 seconds to prompt you, raise the limit in milliseconds with [`CLAUDE_CODE_AWS_CHAIN_RESOLVE_TIMEOUT_MS`](/docs/en/env-vars) + +### Cloud gateway session expired + +You signed in through a [Claude apps gateway](/docs/en/claude-apps-gateway), and the gateway session saved on this machine has expired and couldn't be renewed, or the gateway no longer accepts it, for example after the gateway's [JWT secret is replaced](/docs/en/claude-apps-gateway-deploy#jwt-secret-rotation). If you see this line when you start `claude` interactively, the session has opened signed out of the gateway: + +```text theme={null} +Cloud gateway session expired — run /login to reconnect. +``` + +The same line can appear mid-session when the gateway credential expires and Claude Code can't renew it. + +In a [non-interactive](/docs/en/headless) run, a background or other unattended session, or a `claude` subcommand other than `claude auth`, Claude Code exits with this message instead when the gateway no longer accepts the session: + +```text theme={null} +Cloud gateway no longer accepts this session. Start `claude` and sign in again with /login. +``` + +**What to do:** + +* Run `/login` in the session and complete the browser sign-in +* For a non-interactive launch, start `claude` in the same environment, run `/login`, then rerun your command + ## Network and connection errors Most of these errors mean a network request from Claude Code failed to reach its destination, or something between Claude Code and the API altered the response on its way back; where an entry also has a local cause, such as a failed archive write, its body says so. They usually originate in your local network, proxy, or firewall, or in the cloud environment's network policy. @@ -1286,6 +1406,8 @@ During `/login` and the startup connectivity check, the same failure is reported SSL certificate error (UNABLE_TO_GET_ISSUER_CERT_LOCALLY). If you are behind a corporate proxy or TLS-intercepting firewall, set NODE_EXTRA_CA_CERTS to your CA bundle path, or ask IT to allowlist *.anthropic.com. Run `claude doctor` for details. ``` +On [Amazon Bedrock](/docs/en/amazon-bedrock), the requests Claude Code itself sends to AWS, such as the STS and SSO role-credential calls, model discovery, and the setup wizard's checks, depend on the same certificate configuration. See [Certificate errors behind a TLS-inspecting proxy](/docs/en/amazon-bedrock#certificate-errors-behind-a-tls-inspecting-proxy). + **What to do:** * Export your organization's CA bundle and point Claude Code at it with `NODE_EXTRA_CA_CERTS=/path/to/ca-bundle.pem` @@ -1664,7 +1786,7 @@ Model "claud-sonnet-5" is not a recognized model id. Did you mean 'claude-sonnet The trailing hint names the closest matching alias or model ID. When nothing is close enough, it reads `Run /model to see available models.` instead. -Claude Code produces this error locally at the moment the switch is requested, before any API request is made. It applies when a model is set through the [Agent SDK](/docs/en/agent-sdk/typescript) `setModel()` method or by an app such as the [Desktop app](/docs/en/desktop) that runs the Claude Code CLI for you. +Claude Code produces this error locally at the moment the switch is requested, before any API request is made. It applies when a model is set through the [Agent SDK](/docs/en/agent-sdk/typescript) `setModel()` method, by an app such as the [Desktop app](/docs/en/desktop) that runs the Claude Code CLI for you, or when you pick a model from a device connected through [Remote Control](/docs/en/remote-control). Before v2.1.260, the check didn't cover Remote Control picks, so Claude Code applied the pick and the next request failed with [There's an issue with the selected model](#theres-an-issue-with-the-selected-model). **What to do:** @@ -1673,6 +1795,22 @@ Claude Code produces this error locally at the moment the switch is requested, b * A model saved before v2.1.200 isn't repaired by this check. If a stale value keeps coming back, remove it from the locations listed under [Setting your model](/docs/en/model-config#setting-your-model). * The check runs only on the Anthropic API. On any other provider or gateway, including a custom `ANTHROPIC_BASE_URL`, the provider defines the model names, so Claude Code accepts any string and passes it through. Claude Code can still write the [unrecognized-model diagnostic line](#unrecognized-model-id-on-a-request) at request time, on every provider. +### Model not found + +You picked a model with `/model ` and Claude Code couldn't confirm that a model with that name exists. When the name isn't a [model alias](/docs/en/model-config#model-aliases) or another spelling Claude Code accepts locally, `/model` verifies it with a minimal API request, and this error is usually your API endpoint's answer. A name that can't be a model ID at all, such as one containing spaces, gets the same message. + +```text theme={null} +Model 'claude-opus-9' not found +``` + +On providers with provider-specific model IDs, the message may add a `Try '...' instead` suggestion that names your provider's ID for a fallback model. + +**What to do:** + +* Run `/model` with no argument and pick from the models available to your account, or use a [model alias](/docs/en/model-config#model-aliases) such as `sonnet`, which resolves to a maintained default +* If you typed a full ID, check it against your provider's model catalog. A newly launched model can be available on the Anthropic API before your provider or region offers it. +* Before v2.1.265, `/model` also rejected the `opusplan[1m]` alias spelling with this error. On those versions, update Claude Code, or set the model in [settings](/docs/en/model-config#setting-your-model) or with `--model` instead. + ### Claude Opus is not available with the Claude Pro plan Your active subscription plan does not include the model you selected. @@ -1689,16 +1827,23 @@ Claude Opus is not available with the Claude Pro plan. If you have updated your ### Claude Code does not support this model -The model you selected requires a newer Claude Code version than the one making the request. The server checks this per model. +The API refused the request with a 400 because your Claude Code version is below a required minimum. Either the model you selected requires a newer version, which the server checks per model, or your organization's policy requires one. The 400 carries the error code `claude_code_version_too_old`, and the message says which minimum applies. ```text theme={null} API Error: 400 Claude Code 2.1.219 does not support this model; version 2.1.255 or newer is required. Run 'claude update', or update the Claude desktop app, then try again. ``` +The organization-policy wording reads: + +```text theme={null} +API Error: 400 Claude Code 2.1.240 is older than the minimum version required by your organization's policy. Run 'claude update', or update the Claude desktop app, to continue. +``` + **What to do:** -* Run `claude update`, or update the Claude desktop app, then start a new session on the model -* To keep working in the current session, switch to another model with `/model` +* Run `claude update`, or update the Claude desktop app, then start a new session +* For the per-model wording, you can keep working in the current session by switching to another model with `/model` +* For the organization-policy wording, update before you continue

Model is restricted by your organization's settings @@ -1738,6 +1883,25 @@ The reason after the colon says what refused the switch: Before v2.1.260, the managed-plugin refusal read `plugin hooks could not be loaded, so PreModelSwitch hooks could not be checked; see the debug log`. Claude Code retried the plugin load once and then refused later switches in the session, even when your organization managed no plugins. Restart the session to run the plugin load again on those versions. +

+ Couldn't save it as your default +

+ +You picked a model to save as your default, for example with `/model ` or `Enter` in the `/model` picker, and Claude Code couldn't write the pick to your user settings file, `~/.claude/settings.json`. The switch itself applied, so the current session runs on the model you picked, but your default is unchanged and the next session starts on the old value. + +```text theme={null} +Set model to Fable 5.1 for this session only · couldn't save it as your default: ~/.claude/settings.json can't be written (EROFS) +``` + +The reason after the file path says what failed: + +* **`can't be written ()`**: the write failed with the operating system error code in parentheses, such as `EROFS` when the file, or the file it links to, sits on a filesystem that refuses writes. Make the file writable and switch again. If another tool generates the file, set the `model` key in that tool instead; see [A change you made in Claude Code is lost in new sessions](/docs/en/settings#a-change-you-made-in-claude-code-is-lost-in-new-sessions). +* **`isn't valid JSON`**: the file on disk doesn't parse, and Claude Code leaves it untouched rather than overwrite content it can't read back. Fix the syntax error, then switch again; see [Fix a broken settings file](/docs/en/settings#fix-a-broken-settings-file). + +A notice ending `couldn't confirm it was saved as your default (~/.claude/settings.json is still being written)` means the write hadn't finished after three seconds. It continues in the background, so the default may still be saved; check which model your next session starts on, or run `/model ` again. + +Before v2.1.265, the notice said the model was `saved as your default for new sessions` even when the write failed. + ### thinking.type.enabled is not supported for this model Your Claude Code version is older than the minimum for the selected model. The CLI sent a thinking configuration the model no longer accepts. @@ -2008,6 +2172,25 @@ When Claude Code can't read the working directory for a different reason, such a * Change to a directory that exists, such as your home or project directory, then run `claude` again * If the directory was recreated at the same path, your shell still holds the deleted one. Run `cd "$PWD"` or leave and re-enter the directory, then run `claude` again +

+ Directory couldn't be resolved to a real location +

+ +You ran `/add-dir` for a subdirectory of your working directory, and Claude Code couldn't resolve the directory to its real location. + +You already have file access to a subdirectory of the working directory, so `/add-dir` only loads its skills, commands, and agents. Before loading them, Claude Code checks that the directory's real location, with any symlinks resolved, is inside the working directory. When Claude Code can't resolve that location, it loads nothing and shows this message: + +```text theme={null} +packages/app couldn't be resolved to a real location, so its skills, commands, and agents weren't loaded. Check that it is a directory inside the working directory and try again. +``` + +**What to do:** + +* Check that the path names a real directory inside the working directory, then run `/add-dir` again +* The message doesn't change your file access; it only reports that the directory's `.claude/` content wasn't loaded + +Before v2.1.261, this message also appeared for every `/add-dir ` when the working directory was on a `/net/` automount, where Claude Code declines to resolve paths by design; the directory was fine and retrying couldn't help. + ### Workspace not trusted when starting Remote Control You started [Remote Control](/docs/en/remote-control) server mode with `claude remote-control` or its `claude rc` alias in a directory you haven't trusted. The command doesn't show the workspace trust dialog itself, so it exits with code 1 and names the fix: @@ -2095,6 +2278,35 @@ The text after the server name is the reason. The most common one is the name ch * Rename the server in `claude_desktop_config.json` to use only letters, numbers, hyphens, and underscores, then run `claude mcp add-from-claude-desktop` again * Add that server directly with `claude mcp add` or `claude mcp add-json` under a valid name. See [Import MCP servers from Claude Desktop](/docs/en/mcp#import-mcp-servers-from-claude-desktop). +### Cannot add MCP server to the managed scope + +You ran `claude mcp add` or `claude mcp add-json` with `--scope managed`. That scope holds the servers your organization provides through the [`managedMcpServers`](/docs/en/settings-reference#managedmcpservers) managed setting. Claude Code reads them from managed settings only, so the command can't write a server to that scope. + +```text theme={null} +Cannot add MCP server to scope: managed +``` + +**What to do:** + +* Add the server to a scope you can write: `local`, `user`, or `project`. Without `--scope`, the command uses `local`. See [MCP installation scopes](/docs/en/mcp#mcp-installation-scopes) +* To provide the server to every user in your organization, add it to [`managedMcpServers`](/docs/en/settings-reference#managedmcpservers) in the managed settings you deploy + +

+ Can't read .mcp.json +

+ +A command that reads the project's [`.mcp.json`](/docs/en/mcp#project-scope), such as `claude mcp add` or `claude mcp add-json` with `--scope project`, or `claude mcp remove`, found that the file in your current directory isn't a regular file or is larger than 2 MiB, so it exits with this error instead of reading the file. + +```text theme={null} +Can't read .mcp.json: it isn't a regular file or is larger than 2097152 bytes. Fix or remove it, then run the command again. +``` + +Before v2.1.257, a FIFO at `.mcp.json` left the command waiting forever with no output, and a symlink to a device file such as `/dev/zero` grew memory until the process was killed. + +**What to do:** + +* Check what sits at `.mcp.json` in your current directory. Replace it with an ordinary JSON file in the [project-scope format](/docs/en/mcp#project-scope), or delete it, then run the command again. +

Server is Anthropic-hosted and doesn't support local OAuth

@@ -2147,6 +2359,22 @@ The list after `Available MCP tools:` names the MCP tools that were connected wh * Confirm the tool name matches the `mcp____` name the server exposes * If the server needs longer than 30 seconds to start, raise [`MCP_TIMEOUT`](/docs/en/env-vars) +### OAuth callback port is already in use + +When you sign in to a remote MCP server with OAuth, Claude Code starts a local listener to receive the sign-in callback. If the port that listener needs is held by another process, the sign-in fails with this message. This mostly happens with a [fixed callback port](/docs/en/mcp#use-a-fixed-oauth-callback-port) set through the [`MCP_OAUTH_CALLBACK_PORT`](/docs/en/env-vars) variable or `--callback-port`, since without one Claude Code picks an available port. + +```text theme={null} +OAuth callback port is already in use — another process may be holding it. Run `lsof -ti: -sTCP:LISTEN` to find it. +``` + +On Windows, the suggested command is `netstat -ano | findstr :` instead. + +**What to do:** + +* Run the command from the message to find the process holding the port, and stop it or wait for it to finish +* If another program needs that port permanently, register a different redirect URI with the server and set its port with `MCP_OAUTH_CALLBACK_PORT` or `--callback-port`, whichever you use +* Then start the sign-in again, for example by selecting the server in `/mcp` +

/security-review fails without origin/HEAD

@@ -2201,6 +2429,23 @@ Before v2.1.229, Claude Code sent the whitespace-only message to the API, which * Include visible text in the prompt. If a script builds the prompt from a variable or file, check that the source isn't empty before calling Claude Code. +

+ stream-json input carried over 256M characters with no newline +

+ +Your program sent more than 268,435,456 characters on stdin without a newline to a `claude -p --input-format stream-json` run, so Claude Code prints this error to stderr and exits with code 1 instead of buffering more input. The message states that budget as `256M`. Before v2.1.257, Claude Code buffered such input without limit, growing memory until the process crashed or was killed. + +```text theme={null} +Error: stream-json input carried over 256M characters with no newline. Each stream-json message must be a single newline-terminated JSON line: either the producer is not newline-terminating its messages, or one message exceeded this budget. +``` + +Input this long without a newline usually means the producer isn't a stream-json producer at all, such as a binary file or plain log output piped in by accident. A single message over the budget fails the same check. + +**What to do:** + +* Check what's piped to stdin. With [`--input-format stream-json`](/docs/en/cli-reference#cli-flags), every message must be one newline-terminated JSON line +* To send plain text instead, drop `--input-format stream-json`; `claude -p` reads a plain-text prompt from stdin by default + ### Unknown command You submitted a `/` name that doesn't match any command in this session, so Claude Code reports the name instead of running anything: @@ -2513,6 +2758,12 @@ Claude Code rejects both a path that points outside the plugin as written, such commands path escapes plugin directory: ./commands/deploy.md — it resolves to /home/user/shared/deploy.md, outside the plugin directory ``` +On macOS and Linux, Claude Code also rejects a component path that contains a backslash anywhere in it, even when the path stays inside the plugin. A plugin whose component paths use Windows-style separators loads on Windows and triggers this rejection on the other platforms: + +```text theme={null} +commands path escapes plugin directory: ./commands\deploy.md — its path contains a backslash, which is not resolved reliably on this platform +``` + Before v2.1.251, Claude Code loaded a `commands` path declared in a marketplace entry even when it pointed outside the plugin directory. Claude Code already rejected paths declared in `plugin.json` and the other component paths in a marketplace entry. Before v2.1.257, the check looked only at the path's spelling, not at where a symlink leads. @@ -2521,8 +2772,64 @@ Before v2.1.257, the check looked only at the path's spelling, not at where a sy * Move the referenced file inside the plugin directory and point the path at it with a `./` relative path * If the path is a symlink to a file outside the plugin, replace the symlink with a copy of the file +* If the message says the path contains a backslash, write the path with forward slashes, for example `./commands/deploy.md` * To share files with other plugins in the same marketplace, link them with a symlink inside the plugin directory, following the [symlink rules](/docs/en/plugins-reference#share-files-within-a-marketplace-with-symlinks) +### Path could not be checked + +Claude Code asked the operating system whether a plugin path exists and got an error other than "not found", so it doesn't load what the path names. How much of the plugin loads depends on which path failed: + +* One of a plugin's [default component folders](/docs/en/plugins-reference#file-locations-reference), such as `skills/` or `commands/`: the plugin's other components still load +* The plugin's own directory: nothing from that plugin loads + +You don't see this error for a path that doesn't exist at all. In `/plugin`, the error appears under the plugin and names the path and the code the operating system returned: + +```text theme={null} +skills path could not be checked: /home/user/my-plugin/skills (ELOOP) +``` + +In `claude plugin list`, the same error reads `Path not found: /home/user/my-plugin/skills (skills, ELOOP)`. + +Causes that produce this error include: + +* `ELOOP`: a symlink in the path points at itself or forms a loop +* `EIO` or `ESTALE`: the path is on a network mount that is broken or stale +* `EACCES`: one of the directories above the path denies you permission to traverse it + +**What to do:** + +* Replace a symlink that points at itself with a real folder, or delete it +* If the path is on a network mount, remount the share +* If the code is `EACCES`, restore your execute permission on the directories above the path +* Run `/reload-plugins` after fixing the path, or restart Claude Code, to load the plugin or component + +Before v2.1.265, Claude Code treated a default component folder it couldn't check as absent and loaded the plugin without that component, with no error. + +### Marketplace entry path does not stay inside the marketplace directory + +The plugin's [marketplace entry](/docs/en/plugin-marketplaces#plugin-entries) declares a source path that Claude Code can't resolve to a location inside the marketplace's own directory, so the plugin doesn't install or load. The refusal covers: + +* An entry path that is absolute, climbs out of the marketplace with `..`, or is spelled like a network path +* An entry in a marketplace fetched from a remote source, such as git or a URL, that reaches its target through a symlink resolving outside the marketplace directory +* A relative entry in a marketplace added from a direct URL to its `marketplace.json`: Claude Code downloads only that file, so no local plugin files exist for the path to name. See [Plugins with relative paths fail in URL-based marketplaces](/docs/en/plugin-marketplaces#plugins-with-relative-paths-fail-in-url-based-marketplaces) + +`claude plugin install` reports the refusal like this: + +```text theme={null} +Cannot install my-plugin@my-marketplace: its marketplace entry path does not stay inside the marketplace directory (an absolute, climbing, network-shaped or link-traversing entry, an entry of a fetched marketplace that resolves outside its tree — or a relative entry in a url-catalog marketplace, which has no local directory) +``` + +When an already-installed plugin's entry fails the same check, `claude plugin list` shows the plugin as `failed to load` with: + +```text theme={null} +Plugin source path refused: ./my-plugin does not stay inside its marketplace directory. Check that the marketplace entry has a plain relative path. +``` + +**What to do:** + +* If you maintain the marketplace, write the entry's `source` as a plain relative path such as `./plugins/my-plugin`, and keep any symlink it crosses pointed inside the marketplace directory +* If you added the marketplace from a direct URL, relative entries can't resolve. Ask the marketplace author to use [another plugin source](/docs/en/plugin-marketplaces#plugin-sources), or add the marketplace from its git repository instead + ### Failed to load marketplace configuration Claude Code keeps the plugin marketplaces you've added in a registry file at `~/.claude/plugins/known_marketplaces.json`. A plugin command that needs the registry, such as `claude plugin install`, fails with one of two messages when Claude Code can't use the file: @@ -2751,6 +3058,7 @@ The text after the path names the reason: * Usually nothing: the refusal reaches Claude as the tool result, and the refused operation doesn't run * If a symlink refusal repeats on one path, find what keeps rewriting a link there, such as a build tool or file watcher, or ask Claude to use the file's resolved path instead of the linked one +* If this refusal appears for every file while Claude Code runs on Windows inside an AppContainer or restricted-token sandbox, upgrade to v2.1.265 or later * For the ripgrep refusal, install ripgrep with your package manager so `rg` resolves to an absolute path on `PATH`, or keep searches under the working directory Before v2.1.251, Claude Code re-checked a path's resolution only for file writes, so a link replaced after the permission check could redirect a read or search to a different location without a message. Of these refusals, only the parent-directory write refusal appears on earlier versions. @@ -2759,17 +3067,26 @@ Before v2.1.251, Claude Code re-checked a path's resolution only for file writes Task output swap refused -Claude Code saves each Bash command's output to a file under its temp directory. This message means a directory on that file's path is a symbolic link or has been moved, so Claude Code refused to run the command rather than write its output through that path. The message appears in the Bash tool result: +Claude Code saves each Bash command's output to a file under its temp directory. Every time it opens one of these files, it checks that the path still leads to the file it created, with no symbolic link, extra hard link, or moved directory redirecting it. This message means that check failed, so Claude Code refused the operation rather than write or read output through that path. The message appears in the Bash tool result: ```text wrap theme={null} task output swap refused (tasks dir moved or linked): /private/tmp/claude-501/-Users-you-my-project/1f0e62dc-4b0a-4f5e-9c2d-8a7b6c5d4e3f/tasks/b7k2f9m3q.output. To recover: restart Claude Code with CLAUDE_CODE_TMPDIR set to a fresh directory; or, if /private/tmp/claude-501/-Users-you-my-project is a stray directory or a symbolic link that should not be there, remove that entry itself (not what it points to) and restart. ``` +The parenthesized text names the check that failed. Reasons such as `output symlink was re-pointed`, `output file identity changed`, and `not a regular file` all report the same condition: something at or along the output path is no longer the file Claude Code created. Only some reasons carry a `To recover:` sentence. + +If the check fails while a command is still running, Claude Code stops the command, and its result reports: + +```text theme={null} +Command killed: its output file was replaced or could no longer be verified +``` + **What to do:** * Upgrade to v2.1.260 or later. Earlier versions sometimes showed this message when no link or moved directory was present * Restart Claude Code with [`CLAUDE_CODE_TMPDIR`](/docs/en/env-vars) set to a fresh directory * Or check your project's directory under the Claude Code temp directory, `/private/tmp/claude-501/-Users-you-my-project` in the example message. If that path is a symbolic link, or a directory that shouldn't be there, remove the link or directory itself rather than the link's target, and restart Claude Code +* If the refusal repeats, a process is replacing, linking, or removing entries under Claude Code's temp directory while the session runs. Set [`CLAUDE_CODE_TMPDIR`](/docs/en/env-vars) to a directory nothing else manages and restart ## Background session errors @@ -2980,7 +3297,7 @@ Opening a session you just dispatched, while its process is still starting, wait Session agent no longer available -You resumed a session that was running a [custom agent](/docs/en/sub-agents#invoke-subagents-explicitly), started with `--agent` or the `agent` setting, and Claude Code didn't find an agent by that name. It searches the session's original directory first, when you have [trusted that workspace](/docs/en/permissions#project-allow-rules-and-workspace-trust), then the directory you resume from. The session still resumes, but with the default tools and system prompt, so the agent's tool restrictions no longer apply: +You resumed a session that was running a [custom agent](/docs/en/sub-agents#invoke-subagents-explicitly), started with `--agent` or the `agent` setting, and Claude Code didn't find an agent by that name. It searches the session's original directory first, when you have [trusted that workspace](/docs/en/permissions#project-allow-rules-and-workspace-trust), then the directory you resume from. The session still resumes, but with the default tools, so the agent's tool restrictions no longer apply: ```text theme={null} This session was running agent 'code-reviewer', which is no longer available (no agent by that name in /home/you/project). Continuing with the default tools and system prompt — the agent's tool restrictions no longer apply. To restore it, re-create the agent, or resume with an explicit --agent . @@ -3333,6 +3650,21 @@ Your session is eligible for [server-managed settings](/docs/en/server-managed-s Before v2.1.248, Claude Code reported a failed settings fetch only in the debug log. +

+ Managed settings were not approved +

+ +Your organization's [server-managed settings](/docs/en/server-managed-settings) include settings that need your approval, and you declined the [security approval dialog](/docs/en/server-managed-settings#security-approval-dialogs), so Claude Code exits without applying them: + +```text theme={null} +Managed settings were not approved; exiting without applying them. +``` + +**What to do:** + +* Start Claude Code again and approve the dialog to continue under your organization's settings. A declined dialog isn't remembered, so it appears again at the next start. +* If you're unsure about a setting the dialog lists, ask whoever maintains your organization's managed settings before approving +

MCP server is blocked by enterprise managed policy

@@ -3546,6 +3878,24 @@ Claude Code doesn't write the line for provider IDs it resolves to a model it re Before v2.1.233, Claude Code wrote no line when it sent a request for a model ID it didn't recognize. +### Stale sandbox mask files left by a killed session + +`claude doctor` prints this warning in its diagnostics, and `/status` lists the same line. It appears on Linux and WSL2 when [sandboxing](/docs/en/sandboxing) is enabled with filesystem isolation on. + +While a sandboxed command runs, the sandbox holds a write denial on a file that doesn't exist yet by creating a 0-byte read-only placeholder there, and removes it afterward. A session killed before that cleanup runs, for example by SIGKILL, leaves the placeholders behind. Later sessions bind them read-only again on every start, so a settings write such as saving "Yes, and don't ask again" fails where one sits. + +```text theme={null} +- Stale sandbox mask files left by a killed session: /home/you/project/.claude/settings.local.json + Fix: Remove each with `rm ` while no other Claude Code session is running in that project — a 0-byte read-only file where a settings file belongs makes "Yes, and don't ask again" fail to save, and the sandbox binds it read-only again on every start +``` + +**What to do:** + +* Quit any other Claude Code session running in that project, then delete each listed file with `rm`. The warning names up to three files and counts the rest, so rerun `claude doctor` after deleting until the warning no longer appears. A placeholder that another session's sandbox is still using is a live part of that session's write protection +* If a permission choice you saved with "Yes, and don't ask again" didn't stick, save it again after deleting the placeholder + +Before v2.1.257, `claude doctor` didn't flag these files; earlier versions leave the same placeholders behind when a session is killed. + ## Responses seem lower quality than usual If Claude's answers seem less capable than you expect but no error is shown, the cause is usually conversation state rather than the model itself. Claude Code doesn't silently change model versions. It can switch to a fallback model in three specific cases: diff --git a/content/en/docs/claude-code/glossary.md b/content/en/docs/claude-code/glossary.md index 51488ef90..a73e33806 100644 --- a/content/en/docs/claude-code/glossary.md +++ b/content/en/docs/claude-code/glossary.md @@ -194,7 +194,7 @@ Learn more: [Run Claude Code programmatically](/docs/en/headless) ### Output style -A configuration that modifies Claude's system prompt to change response behavior, tone, or format. Unlike [CLAUDE.md](#claude-md), which Claude Code delivers as a user message after the system prompt, an output style changes the system prompt itself. +A configuration that changes the instructions Claude Code gives Claude, to set response behavior, tone, or format. Unlike [CLAUDE.md](#claude-md), which adds project context alongside Claude Code's default instructions, a custom output style can replace the default software engineering instructions. Learn more: [Output styles](/docs/en/output-styles) diff --git a/content/en/docs/claude-code/headless.md b/content/en/docs/claude-code/headless.md index d5c58daa1..6d0653ef3 100644 --- a/content/en/docs/claude-code/headless.md +++ b/content/en/docs/claude-code/headless.md @@ -187,10 +187,15 @@ For programmatic streaming with callbacks and message objects, see [Stream respo Messages from [subagents](/docs/en/sub-agents) appear in the stream as `assistant` and `user` messages whose `parent_tool_use_id` field is the ID of the tool call that spawned the subagent. Messages from the main conversation carry `null` in that field. -By default, Claude Code emits only subagent `tool_use` and `tool_result` blocks. Pass [`--forward-subagent-text`](/docs/en/cli-reference#cli-flags) or set [`CLAUDE_CODE_FORWARD_SUBAGENT_TEXT`](/docs/en/env-vars) to also emit subagent text and thinking blocks, so you can reconstruct each subagent's transcript. This requires Claude Code v2.1.211 or later. +The first message from a subagent running in the [foreground](/docs/en/sub-agents#run-subagents-in-foreground-or-background) is a `user` message carrying the prompt that drives it. After that first message, Claude Code emits: + +* **By default**: the subagent's `tool_use` and `tool_result` blocks. +* **With [`--forward-subagent-text`](/docs/en/cli-reference#cli-flags) or [`CLAUDE_CODE_FORWARD_SUBAGENT_TEXT`](/docs/en/env-vars)**: the subagent's text and thinking blocks too, so you can reconstruct each subagent's transcript. This requires Claude Code v2.1.211 or later. When you enable either option, Claude Code forwards messages from [subagents at every nesting depth](/docs/en/sub-agents#let-subagents-spawn-their-own-subagents): when a subagent spawns its own subagent, the nested subagent's messages carry the ID of the Agent tool call that spawned it in `parent_tool_use_id`, so you can rebuild the full nesting tree by following those IDs. Before v2.1.219, messages from nested subagents didn't appear in the stream. +Skills that [run in a subagent](/docs/en/skills#run-skills-in-a-subagent) appear in the stream the same way: the forked skill's first message is a `user` message carrying the skill content that drives the run. If you enable either option, the stream also carries the forked skill's text and thinking blocks. Before v2.1.265, only a forked skill's `tool_use` and `tool_result` blocks appeared in the stream. + #### Handle API retries When an API request fails with a retryable error, Claude Code emits a `system/api_retry` event before retrying. On v2.1.246 or later, when a `401` or `403` rejects an [`apiKeyHelper`](/docs/en/settings-reference#apikeyhelper) credential, Claude Code makes the first two retries quietly with no event, then emits the event as usual from the third consecutive retry onward. The quiet retries still count toward `attempt`. You can use the event to show retry progress in your own interface. @@ -200,11 +205,11 @@ When an API request fails with a retryable error, Claude Code emits a `system/ap | `type` | `"system"` | message type | | `subtype` | `"api_retry"` | identifies this as a retry event | | `attempt` | integer | current attempt number, starting at 1 | -| `max_retries` | integer | total retries permitted | +| `max_retries` | integer | total retries permitted for this failure's cause, which can be fewer than the session-wide budget | | `retry_delay_ms` | integer | milliseconds until the next attempt | -| `error_status` | integer or null | HTTP status code, or `null` for connection errors with no HTTP response | +| `error_status` | integer or null | HTTP status code of the failed attempt, or `null` when the attempt got no HTTP response from the API | | `no_response` | object, optional | present only when the failed attempt got [no response headers in time](/docs/en/errors#no-response-from-api). `waited_ms` is how long that attempt waited and `retry_wait_ms` is how long the retry will wait. In these events, `max_retries` reflects the one retry this cause normally gets, not the session-wide budget. Requires Claude Code v2.1.261 or later | -| `error` | string | error category: `authentication_failed`, `oauth_org_not_allowed`, `billing_error`, `rate_limit`, `overloaded`, `invalid_request`, `model_not_found`, `server_error`, `max_output_tokens`, or `unknown` | +| `error` | string | error category: `authentication_failed`, `oauth_org_not_allowed`, `account_on_hold`, `billing_error`, `rate_limit`, `overloaded`, `invalid_request`, `model_not_found`, `server_error`, `max_output_tokens`, `cloud_credential_error`, or `unknown` | | `uuid` | string | unique event identifier | | `session_id` | string | session the event belongs to | diff --git a/content/en/docs/claude-code/hooks-guide.md b/content/en/docs/claude-code/hooks-guide.md index 53fb47b0f..6b9af4c6f 100644 --- a/content/en/docs/claude-code/hooks-guide.md +++ b/content/en/docs/claude-code/hooks-guide.md @@ -699,7 +699,7 @@ Each event type matches on a specific field: | `SubagentStop` | agent type | same values as `SubagentStart` | | `ConfigChange` | configuration source | `user_settings`, `project_settings`, `local_settings`, `policy_settings`, `skills` | | `DirectoryAdded` | how the directory was added | `slash_command`, `register_repo_root` | -| `StopFailure` | error type | `rate_limit`, `overloaded`, `authentication_failed`, `oauth_org_not_allowed`, `account_on_hold`, `billing_error`, `invalid_request`, `model_not_found`, `server_error`, `max_output_tokens`, `unknown` | +| `StopFailure` | error type | `rate_limit`, `overloaded`, `authentication_failed`, `oauth_org_not_allowed`, `account_on_hold`, `billing_error`, `invalid_request`, `model_not_found`, `server_error`, `max_output_tokens`, `cloud_credential_error`, `unknown` | | `InstructionsLoaded` | load reason | `session_start`, `nested_traversal`, `path_glob_match`, `include`, `compact` | | `Elicitation` | MCP server name | your configured MCP server names | | `ElicitationResult` | MCP server name | same values as `Elicitation` | diff --git a/content/en/docs/claude-code/hooks.md b/content/en/docs/claude-code/hooks.md index 6244d95fd..afe4b2d44 100644 --- a/content/en/docs/claude-code/hooks.md +++ b/content/en/docs/claude-code/hooks.md @@ -319,13 +319,15 @@ Each event type matches on a different field: | `CwdChanged` | no matcher support | always fires on every directory change | | `DirectoryAdded` | how the directory was added | `slash_command`, `register_repo_root` | | `FileChanged` | literal filenames to watch (see [FileChanged](#filechanged)) | `.envrc\|.env` | -| `StopFailure` | error type | `rate_limit`, `overloaded`, `authentication_failed`, `oauth_org_not_allowed`, `account_on_hold`, `billing_error`, `invalid_request`, `model_not_found`, `server_error`, `max_output_tokens`, `unknown` | +| `StopFailure` | error type | `rate_limit`, `overloaded`, `authentication_failed`, `oauth_org_not_allowed`, `account_on_hold`, `billing_error`, `invalid_request`, `model_not_found`, `server_error`, `max_output_tokens`, `cloud_credential_error`, `unknown` | | `InstructionsLoaded` | load reason | `session_start`, `nested_traversal`, `path_glob_match`, `include`, `compact` | | `UserPromptExpansion` | command name | your skill or command names | | `Elicitation` | MCP server name | your configured MCP server names | | `ElicitationResult` | MCP server name | same values as `Elicitation` | | `UserPromptSubmit`, `PostToolBatch`, `Stop`, `TeammateIdle`, `TaskCreated`, `TaskCompleted`, `WorktreeCreate`, `WorktreeRemove`, `MessageDisplay` | no matcher support | always fires on every occurrence | +Matching `StopFailure` on `cloud_credential_error` requires Claude Code v2.1.267 or later, the first version that reports credential-load failures under that value rather than `server_error` or `unknown`. + For most events, Claude Code evaluates the matcher against a field from the [JSON input](#hook-input-and-output) it sends to your hook on stdin. For tool events, that field is `tool_name`. For `PreModelSwitch` and `PostModelSwitch`, Claude Code evaluates the matcher against the canonical name it derives from `to_model`, as described under [PreModelSwitch](#premodelswitch). Each [hook event](#hook-events) section lists the full set of matcher values and the input schema for that event. This example runs a linting script only when Claude writes or edits a file: @@ -992,7 +994,9 @@ Where the reminder appears depends on the event: * [Stop](#stop) and [SubagentStop](#subagentstop): at the end of the turn. The conversation continues so Claude can act on the feedback. See [Stop decision control](#stop-decision-control) * [PostModelSwitch](#postmodelswitch): with the next request after the switch. See [PostModelSwitch decision control](#postmodelswitch-decision-control) for timing -When several hooks return `additionalContext` for the same event, Claude receives all of the values. If a value exceeds 10,000 characters, Claude Code writes the full text to a file in the session directory and passes Claude the file path with a short preview instead. +When several hooks return `additionalContext` for the same event, Claude receives all of the values. + +If a value exceeds 10,000 characters, Claude Code writes the text to a file in the session directory and passes Claude the file path with a short preview instead. Use `additionalContext` for information Claude should know about the current state of your environment or the operation that just ran: @@ -1106,6 +1110,8 @@ The matcher value corresponds to how the session was initiated: Before v2.1.214, forked sessions reported source `"resume"`. +When you run `/clear` in an interactive session, the matching SessionStart hooks run in the background and the prompt accepts input again right away. Claude's first response still waits for the hooks to finish, so their context reaches Claude. If you run `/clear` again or switch to another conversation with a command such as `/resume` while those hooks are still running, Claude Code cancels them and discards their output. + #### SessionStart input In addition to the [common input fields](#common-input-fields), SessionStart hooks receive `source` and optionally `model`, `agent_type`, and `session_title`: @@ -2290,7 +2296,7 @@ Notification hooks can't block or modify notifications. Claude Code discards the ### SubagentStart -Runs when a Claude Code subagent is spawned via the Agent tool. Supports matchers to filter by agent type name. For built-in agents, this is the agent name like `general-purpose`, `Explore`, or `Plan`. For [custom subagents](/docs/en/sub-agents), this is the `name` field from the agent's frontmatter, not the filename. +Runs when Claude spawns a subagent with the Agent tool, when Claude [resumes a subagent](/docs/en/sub-agents#resume-subagents), and each time an in-process [agent team](/docs/en/agent-teams) teammate handles a new message. Supports matchers to filter by agent type name. For built-in agents, this is the agent name like `general-purpose`, `Explore`, or `Plan`. For [custom subagents](/docs/en/sub-agents), this is the `name` field from the agent's frontmatter, not the filename. For subagents shipped by a [plugin](/docs/en/plugins), the agent type is the plugin-scoped identifier such as `my-plugin:reviewer`, not the bare frontmatter name. The colon places a plugin-scoped name on the regular-expression path, so anchor the matcher with `^` and `$` for an exact match: `^my-plugin:reviewer$`. @@ -2324,6 +2330,8 @@ SubagentStart hooks can't block subagent creation, but they can inject context i } ``` +When the hook runs again for the same subagent, Claude Code injects the returned context only when the subagent's context doesn't already hold the copy from an earlier run. The copy injected at launch stays in place, leaving the subagent's [prompt cache](/docs/en/prompt-caching#subagents-and-the-cache) intact. After [auto-compaction](/docs/en/sub-agents#auto-compaction) discards that copy, Claude Code injects the next run's context again. + ### SubagentStop Runs when a Claude Code subagent has finished responding. Matches on agent type, same values as SubagentStart. @@ -2575,7 +2583,7 @@ In addition to the [common input fields](#common-input-fields), StopFailure hook | Field | Description | | :----------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `error` | Error type: `rate_limit`, `overloaded`, `authentication_failed`, `oauth_org_not_allowed`, `account_on_hold`, `billing_error`, `invalid_request`, `model_not_found`, `server_error`, `max_output_tokens`, or `unknown` | +| `error` | Error type: `rate_limit`, `overloaded`, `authentication_failed`, `oauth_org_not_allowed`, `account_on_hold`, `billing_error`, `invalid_request`, `model_not_found`, `server_error`, `max_output_tokens`, `cloud_credential_error`, or `unknown` | | `error_details` | Additional details about the error, when available | | `last_assistant_message` | The rendered error text shown in the conversation. Unlike `Stop` and `SubagentStop`, where this field holds Claude's conversational output, for `StopFailure` it contains the API error string itself, such as `"API Error: Rate limit reached"` | @@ -3559,14 +3567,7 @@ Agent hooks are useful when verification requires inspecting actual files or tes ### Agent hook configuration -Set `type` to `"agent"` and provide a `prompt` string. The configuration fields are the same as [prompt hooks](#prompt-hook-configuration), except that agent hooks have a longer default timeout and no `continueOnBlock` field: - -| Field | Required | Description | -| :-------- | :------- | :------------------------------------------------------------------------------------------ | -| `type` | yes | Must be `"agent"` | -| `prompt` | yes | Prompt describing what to verify. Use `$ARGUMENTS` as a placeholder for the hook input JSON | -| `model` | no | Model to use. Defaults to a fast model | -| `timeout` | no | Timeout in seconds. Default: 60 | +Set `type` to `"agent"` and provide a `prompt` string, using `$ARGUMENTS` as a placeholder for the hook input JSON. The configuration fields are the same as [prompt hooks](#prompt-hook-configuration), except that agent hooks have a longer default timeout of 60 seconds and no `continueOnBlock` field. The response schema is `{ "ok": true }` to allow or `{ "ok": false, "reason": "..." }` to block. On `ok: false`, Claude Code handles an agent hook the way it handles a [prompt hook with `continueOnBlock: true`](#response-schema) on the same event; agent hooks have no `continueOnBlock` field, and don't support the prompt-hook `impossible` field. diff --git a/content/en/docs/claude-code/iam.md b/content/en/docs/claude-code/iam.md index fa8b25d2e..4dc62b648 100644 --- a/content/en/docs/claude-code/iam.md +++ b/content/en/docs/claude-code/iam.md @@ -120,6 +120,8 @@ After you sign in without a key, you have a profile instead of a stored API key: * **What it signs you out of**: Claude Code signs you out of any claude.ai login stored on the machine * **How to undo it**: run `/logout`, which removes and revokes the credential this sign-in wrote +If your organization uses [server-managed settings](/docs/en/server-managed-settings), they apply to this sign-in on Claude Code v2.1.257 or later. + Everything else about profiles applies to this sign-in, including where it ranks against your other credentials, the `Profile` row you get in `/status`, and the features that need a claude.ai login. See [Anthropic profiles and federation credentials](#anthropic-profiles-and-federation-credentials). ### Cloud provider authentication @@ -213,7 +215,11 @@ When multiple credentials are present, Claude Code chooses one in this order: A signed-in [Claude apps gateway](/docs/en/claude-apps-gateway) session sits outside this list: it is a provider selection like Amazon Bedrock or Google Cloud's Agent Platform, and it outranks them. When a gateway session exists, the CLI authenticates with the gateway token even if `CLAUDE_CODE_USE_BEDROCK`, `CLAUDE_CODE_USE_VERTEX`, or `CLAUDE_CODE_USE_FOUNDRY` is set, and credential sources above such as the bearer token, API key, `apiKeyHelper`, and profiles are not used. -If you have an active Claude subscription but also have `ANTHROPIC_API_KEY` set in your environment, the API key takes precedence once approved. This can cause authentication failures if the key belongs to a disabled or expired organization. Run `unset ANTHROPIC_API_KEY` to fall back to your subscription, and check `/status` to confirm which method is active. The `Login method` row shows your subscription account, and an `API key` row appears when an API key is in use. +If your machine's [managed settings](/docs/en/managed-settings) set [`forceLoginMethod`](/docs/en/settings-reference#forceloginmethod) to `"gateway"` or set [`forceLoginGatewayUrl`](/docs/en/settings-reference#forcelogingatewayurl), and you don't select a cloud provider through a variable such as `CLAUDE_CODE_USE_BEDROCK` or `CLAUDE_CODE_USE_VERTEX`, your session uses only the gateway sign-in. Claude Code skips the other credential sources and asks you to sign in with `/login`. See [Administrator policy requires a Cloud gateway sign-in](/docs/en/errors#administrator-policy-requires-a-cloud-gateway-sign-in) for what you see with each leftover credential. Before v2.1.261, or before v2.1.265 on a machine that sets only `forceLoginGatewayUrl`, Claude Code used a leftover saved login on these machines until you signed in to the gateway. + +If you have an active Claude subscription but also have `ANTHROPIC_API_KEY` set in your environment, Claude Code uses the API key once you approve it. This can cause authentication failures if the key belongs to a disabled or expired organization. + +Run `unset ANTHROPIC_API_KEY` to fall back to your subscription, and check `/status` to confirm which method is active. When a login and an API key are both configured, `/status` marks the credential that isn't in use. [Claude Code on the Web](/docs/en/claude-code-on-the-web) always uses your subscription credentials. If you set `ANTHROPIC_API_KEY` or `ANTHROPIC_AUTH_TOKEN` in the sandbox environment, it doesn't override your subscription credentials. @@ -233,7 +239,11 @@ Claude Code checks three sources in this order and stops at the first one that i The `user_oauth` rule keeps a leftover `ant auth login` profile from moving your requests off the account you signed in to with `/login`. For the federation variables, Claude Code also reads the other variables in the [WIF reference](https://platform.claude.com/docs/en/manage-claude/wif-reference#environment-variables), such as `ANTHROPIC_IDENTITY_TOKEN_FILE`, when it exchanges your identity token. For the profile file format, see the [WIF reference](https://platform.claude.com/docs/en/manage-claude/wif-reference#profile-configuration-file). -To confirm which source Claude Code chose, run `/status`: a `Profile` row names the source in place of the `Login method` row. If you start Claude Code with `--debug`, it also writes a `Using Anthropic profile auth` line with the source name to the debug log at `~/.claude/debug/.txt`. When Claude Code passes over a `user_oauth` active profile because you have a working `/login` credential, it writes a warning to the debug log saying it's using the claude.ai login instead. When a `user_oauth` profile's login has expired and Claude Code can't renew it, requests fail with [Anthropic profile login expired](/docs/en/errors#anthropic-profile-login-expired). +To confirm which source Claude Code chose, run `/status`. A `Profile` row names the source in place of the `Login method` row. When the profile is the credential in use, `Organization` and `Email` rows show its account. + +If you start Claude Code with `--debug`, it also writes a `Using Anthropic profile auth` line with the source name to the debug log at `~/.claude/debug/.txt`. When Claude Code skips a `user_oauth` active profile because you have a working `/login` credential, it writes a warning to the debug log saying it's using the claude.ai login instead. + +When a `user_oauth` profile's login has expired and Claude Code can't renew it, requests fail with [Anthropic profile login expired](/docs/en/errors#anthropic-profile-login-expired). Features that need your claude.ai login, such as [claude.ai connectors](/docs/en/mcp#use-mcp-servers-from-claude-ai) and [`/schedule`](/docs/en/routines), aren't available while one of these sources is selected. To stop Claude Code from selecting a source: diff --git a/content/en/docs/claude-code/interactive-mode.md b/content/en/docs/claude-code/interactive-mode.md index 6b13fd9c6..ded6bdfed 100644 --- a/content/en/docs/claude-code/interactive-mode.md +++ b/content/en/docs/claude-code/interactive-mode.md @@ -123,6 +123,17 @@ In [fullscreen rendering](/docs/en/fullscreen#use-the-mouse), the `/` command an See the [commands reference](/docs/en/commands) for the full list of commands included in Claude Code. +### Complete a command mid-prompt + +Command completion also works partway through a prompt: type `/` after a space, then the first letters of a name, as in `run the tests, then /com`. Only commands whose names start with those letters match, so a file path such as `/tmp/notes.md` doesn't keep a list open. Claude Code runs a command itself only when the command [starts your message](/docs/en/commands). + +* **In [fullscreen rendering](/docs/en/fullscreen)**: the matches open as a list while you type, with no row highlighted, so `Enter` still sends your prompt as typed. Press `Tab` to insert the top match, or pick a row with the arrow keys and `Enter`. +* **Outside fullscreen**: the rest of the top match appears as ghost text at your cursor, with a count such as `+2` when more commands match. Press `Tab` to insert the only match, or to open the list when several match, then pick a row with the arrow keys and `Enter`. + +In both renderers, press `Tab` on a bare mid-prompt `/` to list every command. + +A plugin skill matches on its bare name too, so `/deploy` finds a skill named `myplugin:deploy-app`. When you insert the match, Claude Code writes the full `/myplugin:deploy-app`. + ## Vim editor mode Enable vim-style editing via `/config` → Editor mode. @@ -509,6 +520,8 @@ To find out which of these happened, start `claude --debug` with spell checking Run `/diff` to look over the changes in your working tree without leaving Claude Code. You see the edits Claude has made so far alongside anything else you haven't committed. +In the changes `/diff` reads from git, a submodule appears as a single entry, and only when the commit it points to changes; edits to files inside the submodule don't appear there. + In [fullscreen rendering](/docs/en/fullscreen), `/diff` opens the [diff panel](#diff-panel) beside the conversation, which stays open and updates while you keep working. In the classic renderer, `/diff` opens the [diff viewer](#diff-viewer) in place of the prompt, and you close it when you're done reading. ### Diff panel @@ -703,6 +716,24 @@ To get the badge, you need: Claude Code ignores `glab`'s token environment variables, such as `GITLAB_TOKEN`, when it checks status, so you get no badge from an exported token alone. Claude Code also looks for `glab` and for its login once per session, so restart Claude Code after you install `glab` or run `glab auth login`. +## Issue reference links + +When Claude mentions an issue as `owner/repo#123`, you can click the reference to open it, as long as your terminal supports hyperlinks. If Claude Code doesn't detect hyperlink support in your terminal, set [`FORCE_HYPERLINK`](/docs/en/env-vars) to `1` to turn the links on, or to `0` to keep references as plain text. + +You get a link only for the two-part `owner/repo#123` form. These stay plain text: + +* A bare `#123` +* A nested GitLab path such as `group/subgroup/project#123` +* Any reference inside a code span or code block + +Claude Code builds the link for the host of the repository it identifies from your git remote, not for the repository the reference names: + +| Your repository's host | Where `owner/repo#123` links | +| :----------------------------------------------------------------- | :------------------------------------------- | +| github.com, a GitHub Enterprise host, or any host not listed below | `https:///owner/repo/issues/123` | +| gitlab.com | `https://gitlab.com/owner/repo/-/issues/123` | +| bitbucket.org, codeberg.org, or gitea.com | No link; the reference stays plain text | + ## See also * [Skills](/docs/en/skills) - Custom prompts and workflows diff --git a/content/en/docs/claude-code/keybindings.md b/content/en/docs/claude-code/keybindings.md index 12221b667..6635fd7e3 100644 --- a/content/en/docs/claude-code/keybindings.md +++ b/content/en/docs/claude-code/keybindings.md @@ -99,23 +99,23 @@ Actions for navigating command history: Actions available in the `Chat` context: -| Action | Default | Description | -| :-------------------- | :-------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `chat:cancel` | Escape | Cancel current input | -| `chat:clearInput` | Ctrl+L | Force a full screen redraw, preserving input and conversation. In [fullscreen rendering](/docs/en/fullscreen#clear-the-conversation), also clear the screen | -| `chat:clearScreen` | Cmd+K | Same as `chat:clearInput`. See [Clear the conversation](/docs/en/fullscreen#clear-the-conversation) for how Cmd+K behaves on iTerm2 and Terminal.app | -| `chat:killAgents` | Ctrl+X Ctrl+K | Stop all running [background subagents](/docs/en/sub-agents#run-subagents-in-foreground-or-background) in this session and turn off [artifact auto-replies](/docs/en/artifacts#let-claude-reply-to-comments-on-its-own) for the rest of it | -| `chat:cycleMode` | Shift+Tab\* | Cycle permission modes | -| `chat:modelPicker` | Meta+P | Open model picker | -| `chat:fastMode` | Meta+O | Toggle fast mode | -| `chat:thinkingToggle` | Meta+T | Toggle extended thinking | -| `chat:submit` | Enter | Submit message | -| `chat:queueSubmit` | Ctrl+X Enter | Submit the message, marked to wait its turn: while Claude is working, Claude Code [queues it](/docs/en/interactive-mode#queue-messages-while-claude-works) and never interrupts the turn. Unlike `chat:submit`, it submits the draft even while autocomplete suggestions are open. Requires v2.1.247 or later | -| `chat:newline` | Ctrl+J | Insert a newline without submitting | -| `chat:undo` | Ctrl+\_, Ctrl+Shift+- | Undo last action | -| `chat:externalEditor` | Ctrl+G, Ctrl+X Ctrl+E | Open in external editor. The [agent view dispatch input](/docs/en/agent-view#keyboard-shortcuts) follows this action's single-keystroke bindings too | -| `chat:stash` | Ctrl+S | Stash current prompt | -| `chat:imagePaste` | Ctrl+V (Alt+V on Windows and WSL) | Paste image from clipboard. On WSL, both shortcuts are bound by default | +| Action | Default | Description | +| :-------------------- | :-------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `chat:cancel` | Escape | Cancel current input | +| `chat:clearInput` | Ctrl+L | Force a full screen redraw, preserving input and conversation. In [fullscreen rendering](/docs/en/fullscreen#clear-the-conversation), also clear the screen | +| `chat:clearScreen` | Cmd+K | Same as `chat:clearInput`. See [Clear the conversation](/docs/en/fullscreen#clear-the-conversation) for how Cmd+K behaves on iTerm2 and Terminal.app | +| `chat:killAgents` | Ctrl+X Ctrl+K | Stop all running [background subagents](/docs/en/sub-agents#run-subagents-in-foreground-or-background) in this session and turn off [artifact auto-replies](/docs/en/artifacts#let-claude-reply-to-comments-on-its-own) for the rest of it | +| `chat:cycleMode` | Shift+Tab\* | Cycle permission modes | +| `chat:modelPicker` | Meta+P | Open model picker | +| `chat:fastMode` | Meta+O | Toggle fast mode | +| `chat:thinkingToggle` | Meta+T | Toggle extended thinking | +| `chat:submit` | Enter | Submit message | +| `chat:queueSubmit` | Ctrl+X Enter | Submit the message, marked to wait its turn: while Claude is working, Claude Code [queues it](/docs/en/interactive-mode#queue-messages-while-claude-works) and never interrupts the turn. Unlike `chat:submit`, it submits the draft even while an autocomplete suggestion is highlighted. Requires v2.1.247 or later | +| `chat:newline` | Ctrl+J | Insert a newline without submitting | +| `chat:undo` | Ctrl+\_, Ctrl+Shift+- | Undo last action | +| `chat:externalEditor` | Ctrl+G, Ctrl+X Ctrl+E | Open in external editor. The [agent view dispatch input](/docs/en/agent-view#keyboard-shortcuts) follows this action's single-keystroke bindings too | +| `chat:stash` | Ctrl+S | Stash current prompt | +| `chat:imagePaste` | Ctrl+V (Alt+V on Windows and WSL) | Paste image from clipboard. On WSL, both shortcuts are bound by default | \*On Windows without VT mode (Node \<24.2.0/\<22.17.0, Bun \<1.2.23), defaults to Meta+M. @@ -439,6 +439,8 @@ Chords are sequences of keystrokes separated by spaces: ctrl+k ctrl+s Press Ctrl+K, release, then Ctrl+S ``` +Press each keystroke within 3 seconds of the one before it. If you wait longer, Claude Code cancels the chord and shows a brief notice saying so. + ### Special keys * `escape` or `esc` - Escape key diff --git a/content/en/docs/claude-code/large-codebases.md b/content/en/docs/claude-code/large-codebases.md index 6ed69aa9a..ea147566d 100644 --- a/content/en/docs/claude-code/large-codebases.md +++ b/content/en/docs/claude-code/large-codebases.md @@ -158,19 +158,19 @@ For paths that are checked in, such as a vendored SDK or committed generated cod The deny rules can cover everyone working in the repository, only you, or every session on the machine, depending on which settings file you put them in: * **Everyone working in the repository**: commit the rules to `.claude/settings.json`, at the repository root if you start Claude there, or in each package's `.claude/` if you start from subdirectories. Like other project settings on this page, that file isn't inherited from parent directories. -* **Yourself only**: use `.claude/settings.local.json` at the repository root, which loads in every CLI session inside the repository regardless of starting directory, except in the cases where Claude Code [doesn't use the repository root](/docs/en/settings#where-claude-code-looks-for-each-file), such as on Windows. Relative patterns like the example's `Read(./vendor/**)` still [anchor at the session's current working directory](/docs/en/permissions#read-and-edit) rather than the repository root, so if you start sessions from subdirectories, write the rules in this file as `//`-absolute paths, such as `Read(//absolute/path/to/repo/vendor/**)`. Before v2.1.211, `.claude/settings.local.json` also loaded only from the starting directory. +* **Yourself only**: use `.claude/settings.local.json` at the repository root, which loads in every CLI session inside the repository regardless of starting directory, except in the cases where Claude Code [doesn't use the repository root](/docs/en/settings#where-claude-code-looks-for-each-file), such as on Windows. Relative patterns like the example's `Read(./**/vendor/**/*)` still [anchor at the session's current working directory](/docs/en/permissions#read-and-edit) rather than the repository root, so if you start sessions from subdirectories, write the rules in this file as `//`-absolute paths, such as `Read(//absolute/path/to/repo/**/vendor/**/*)`. Before v2.1.211, `.claude/settings.local.json` also loaded only from the starting directory. * **Everyone, enforced in every session**: set the rules in [managed settings](/docs/en/managed-settings), which user and project settings cannot override. -The example below blocks build artifacts and a vendored SDK: +The example below blocks build artifacts and a vendored SDK. Its directory patterns end with `/**/*` rather than `/**` so that each rule covers everything inside the directory but not the directory itself. Claude can then still list those directories or change into them, for example with `ls dist` or `cd build`. ```json .claude/settings.json theme={null} { "permissions": { "deny": [ - "Read(./**/dist/**)", - "Read(./**/build/**)", + "Read(./**/dist/**/*)", + "Read(./**/build/**/*)", "Read(./**/*.generated.*)", - "Read(./vendor/**)" + "Read(./**/vendor/**/*)" ] } } @@ -410,8 +410,8 @@ The example commits `worktree`, `additionalDirectories`, and the `Read` deny rul "../shared" ], "deny": [ - "Read(./**/dist/**)", - "Read(./**/build/**)" + "Read(./**/dist/**/*)", + "Read(./**/build/**/*)" ] } } @@ -425,8 +425,8 @@ The `additionalDirectories` entry applies when you start Claude from `packages/a { "permissions": { "deny": [ - "Read(./**/dist/**)", - "Read(./**/build/**)" + "Read(./**/dist/**/*)", + "Read(./**/build/**/*)" ] } } diff --git a/content/en/docs/claude-code/llm-gateway-protocol.md b/content/en/docs/claude-code/llm-gateway-protocol.md index 882a5ec92..1e1e9795a 100644 --- a/content/en/docs/claude-code/llm-gateway-protocol.md +++ b/content/en/docs/claude-code/llm-gateway-protocol.md @@ -48,7 +48,12 @@ Microsoft Foundry and the [Claude Platform on AWS](/docs/en/claude-platform-on-a ### Optional endpoints and startup traffic -Token-counting endpoints are the only optional ones: when they're absent, Claude Code falls back to counting context usage through the inference endpoint instead. Inference requests post to `/v1/messages?beta=true`, so match on the path, not the full URL. The Google Cloud's Agent Platform method suffixes attach to the publisher model path, as in `/projects/{project}/locations/{location}/publishers/anthropic/models/{model}:streamRawPredict`. +Token-counting endpoints are the only optional ones: when they're absent, Claude Code falls back to a character-based estimate of context usage. + +Match on the path, not the full URL: + +* Inference requests post to `/v1/messages?beta=true` +* The Google Cloud's Agent Platform method suffixes attach to the publisher model path, as in `/projects/{project}/locations/{location}/publishers/anthropic/models/{model}:streamRawPredict` A gateway also sees best-effort startup traffic it can reject without breaking anything. An Anthropic Messages-format gateway receives a `HEAD /api/hello` connection-warming probe, which Claude Code skips when an HTTP proxy or client certificate is configured. An Amazon Bedrock-format gateway receives a `GET /inference-profiles?type=SYSTEM_DEFINED` request and, when the configured model is an inference profile, `GET /inference-profiles/{profile}` lookups. @@ -134,13 +139,17 @@ Fine-grained tool streaming is one of the direct-connection defaults: it is off | Beta [tool fields](https://platform.claude.com/docs/en/agents-and-tools/tool-use/overview) | Tool-related beta headers pair with tool schema fields such as `strict` and `defer_loading` | `400` naming the unrecognized tool schema field when the body passes through without its header | Forward both, or [`CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1`](#disable-pre-release-capabilities) | | [Effort](https://platform.claude.com/docs/en/build-with-claude/effort) and [structured outputs](https://platform.claude.com/docs/en/build-with-claude/structured-outputs) | The `output_config` body field carries effort, structured-output format, and task budget settings; each pairs with its own beta header | `400` naming `output_config`, often `Extra inputs are not permitted`, on Amazon Bedrock and Google Cloud's Agent Platform upstreams | Forward the field and its headers together | | [Prompt caching](/docs/en/prompt-caching) | No beta pairing. Claude Code attaches `cache_control` markers to `system` blocks and to `messages` entries, including `role: "system"` entries appended mid-conversation | No error: the conversation bills as uncached input on every turn, visible as high `input_tokens` with little or no cache activity in `usage` | Forward `cache_control` unchanged wherever it appears, and don't convert block-form `system` or message content to plain strings | -| [Token counting](https://platform.claude.com/docs/en/build-with-claude/token-counting) | No beta pairing; uses the `count_tokens` endpoint | Claude Code falls back to counting context usage through the messages endpoint | Expose the endpoint so token counts don't consume inference requests | +| [Token counting](https://platform.claude.com/docs/en/build-with-claude/token-counting) | No beta pairing; uses the `count_tokens` endpoint | No error: Claude Code falls back to a character-based estimate, so `/context` shows approximate counts | Expose the endpoint for exact token counts | The `ANTHROPIC_DEFAULT_*_MODEL_SUPPORTED_CAPABILITIES` [variables](/docs/en/model-config) declare model capabilities only in the provider configurations: `CLAUDE_CODE_USE_BEDROCK`, `CLAUDE_CODE_USE_VERTEX`, `CLAUDE_CODE_USE_FOUNDRY`, and [`CLAUDE_CODE_USE_MANTLE`](/docs/en/amazon-bedrock#use-the-mantle-endpoint). They have no effect behind an `ANTHROPIC_BASE_URL` gateway. ### Automatic retry and error forwarding -When the upstream rejects the `thinking` field, a [thinking signature](https://platform.claude.com/docs/en/build-with-claude/extended-thinking), a mid-conversation system message, or the `cache_control` marker on one of those messages, Claude Code retries the request and disables the rejected capability for the rest of the conversation. Claude Code doesn't retry context management or tool schema field rejections; those `400` errors reach the developer. +What Claude Code does after an upstream rejection depends on what was rejected: + +* When the upstream rejects the `thinking` field, a mid-conversation system message, or the `cache_control` marker on such a message, Claude Code retries the request and disables the rejected capability for the rest of the conversation +* When the upstream rejects a [thinking signature](https://platform.claude.com/docs/en/build-with-claude/extended-thinking), Claude Code retries the request without the conversation's earlier thinking blocks and keeps them out of every later request. New responses still include thinking +* Claude Code doesn't retry rejections of context management or tool schema fields, so those `400` errors reach the developer The retry logic matches on the upstream's error wording, so forward error response bodies unmodified. A gateway that wraps upstream errors in its own envelope breaks the recovery path, even when it preserves the status code, unless the envelope's message carries a stable `capability_rejected:` token. [Claude apps gateway substitutes those tokens for cloud providers' error wording](/docs/en/claude-apps-gateway-config#upstream-error-messages), for example `capability_rejected: prompt_too_long`. diff --git a/content/en/docs/claude-code/llm-gateway-rollout.md b/content/en/docs/claude-code/llm-gateway-rollout.md index 9fd6a683b..2823b6194 100644 --- a/content/en/docs/claude-code/llm-gateway-rollout.md +++ b/content/en/docs/claude-code/llm-gateway-rollout.md @@ -189,7 +189,7 @@ Deliver the variables through the `env` block of a [managed settings file](/docs Add the conditional variables from the table to the same `env` block. A managed `ANTHROPIC_BASE_URL` is enforced and cannot be overridden by a developer's shell export, since Claude Code applies it over the process environment and lower-precedence settings. -Do not include `forceLoginMethod` or `forceLoginOrgUUID` in managed settings alongside a gateway credential. Either key, with any value, blocks `ANTHROPIC_API_KEY`, `ANTHROPIC_AUTH_TOKEN`, and `apiKeyHelper` at startup, so developers see `This machine's managed settings require a first-party login` and cannot proceed. +Don't include `forceLoginMethod` or `forceLoginOrgUUID` in managed settings alongside a gateway credential. Either key, with any value, blocks `ANTHROPIC_API_KEY`, `ANTHROPIC_AUTH_TOKEN`, and `apiKeyHelper` at startup, and developers can't proceed. They see `This machine's managed settings require a first-party login`, or [`Administrator policy requires a Cloud gateway sign-in`](/docs/en/errors#administrator-policy-requires-a-cloud-gateway-sign-in) under a `"gateway"` value. [Server-managed settings](/docs/en/server-managed-settings#platform-availability) delivery requires a direct connection to `api.anthropic.com`, so it does not reach gateway-routed sessions. Gateway deployments use this file-based managed settings path, which enforces the same keys. diff --git a/content/en/docs/claude-code/managed-settings.md b/content/en/docs/claude-code/managed-settings.md index e5b628892..fb75b7980 100644 --- a/content/en/docs/claude-code/managed-settings.md +++ b/content/en/docs/claude-code/managed-settings.md @@ -90,7 +90,9 @@ A deployed policy reaches the developer's sessions as follows: * **Remote Cowork sessions**: these run on Anthropic-managed VMs, where Claude Code has no device policy to read. The [surface coverage](/docs/en/model-config#surface-coverage) table compares Cowork with the other surfaces. -* **Running sessions**: a session picks up most changes on the schedule in the table without a restart. Claude Code reads [`forceRemoteSettingsRefresh`](/docs/en/settings-reference#forceremotesettingsrefresh) and [`requiredMinimumVersion`](/docs/en/settings-reference#requiredminimumversion) only at session start, arms a new or changed [`policyHelper`](/docs/en/settings-reference#policyhelper) entry at the next launch, and reads [some user-editable keys once at session start](/docs/en/settings#when-edits-take-effect). +* **Running sessions**: most changes reach a running session on the schedule in the [delivery mechanism table](#choose-a-delivery-mechanism), without a restart. + * Changes to [`forceRemoteSettingsRefresh`](/docs/en/settings-reference#forceremotesettingsrefresh), [`requiredMinimumVersion`](/docs/en/settings-reference#requiredminimumversion), and [some user-editable keys](/docs/en/settings#when-edits-take-effect) take effect at the next session start. + * A new or changed [`policyHelper`](/docs/en/settings-reference#policyhelper) entry takes effect at the next launch. If server-managed settings shadow the helper at that launch, the helper runs as soon as a fetch reports those settings removed. * **Changes that need approval**: apart from the [updates that wait for the next launch](/docs/en/server-managed-settings#fetch-and-caching-behavior), a server-managed change to a setting that [needs approval](/docs/en/server-managed-settings#security-approval-dialogs), such as a hook or an `env` variable, waits for the developer to accept the dialog in an interactive session, and applies for the current run in a session an IDE extension or the Agent SDK hosts. Other server-managed changes apply on the next poll. * **Long-lived sessions**: a session left open for weeks can still lag a rollout. [`requiredMinimumVersion`](/docs/en/settings-reference#requiredminimumversion) blocks an outdated binary from starting and doesn't end a session that's already running. @@ -165,6 +167,7 @@ The cross-source keys include: * `sandbox.filesystem.disabled` and `sandbox.network.strictAllowlist` * [`useAutoModeDuringPlan`](/docs/en/settings-reference#useautomodeduringplan) and [`syncClaudeAiSkills`](/docs/en/settings-reference#syncclaudeaiskills), where a `false` from any admin source turns the behavior off. A `false` in the developer's user or local settings turns it off too; each key can only deny * [`enableArtifact`](/docs/en/settings-reference#enableartifact), where a `false` from any admin source turns the [Artifact tool](/docs/en/artifacts) off. A `false` in the developer's user, project, or local settings turns it off too, and no source turns it back on; see [which lower-level values still count](/docs/en/settings#exceptions-to-managed-settings-precedence). Requires Claude Code v2.1.242 or later +* [`maxEffortLevel`](/docs/en/settings-reference#maxeffortlevel), where the lowest cap in any admin source applies. If a developer sets a lower cap in their own settings or with `--settings`, Claude Code applies that one; no source can raise the cap. Requires Claude Code v2.1.267 or later * A commit-trailer opt-out in `attribution`, or in the deprecated `includeCoAuthoredBy`, from any tier * [`forceRemoteSettingsRefresh`](/docs/en/server-managed-settings) * `env`, merged per variable across the admin sources: each variable comes from the highest-priority source that defines it, so lower sources fill in variables the higher ones leave unset. A few variables follow their own rules; [Per-key exceptions across managed sources](/docs/en/server-managed-settings#per-key-exceptions-across-managed-sources) names each one. Requires Claude Code v2.1.223 or later. Before v2.1.223, Claude Code applied the selected source's whole `env` block only @@ -175,13 +178,14 @@ To have Claude Code apply every admin source your organization delivers, set [`m Under `"merge"`, Claude Code adds a lower source's list entries, such as `permissions.allow` rules and hooks, to the policy, so turn it on only when every source ranked below your highest one is under an administrator's control. -This table shows how Claude Code combines each kind of key under `"merge"`; the [`managedSourcesBehavior` entry](/docs/en/settings-reference#managedsourcesbehavior) names every key in the restriction allowlist and highest-source-only rows. +This table shows how Claude Code combines each kind of key under `"merge"`. The [`managedSourcesBehavior` entry](/docs/en/settings-reference#managedsourcesbehavior) names every key in three of the rows: restriction allowlists, values taken whole, and keys read from the highest-ranked source only. | Kind of key | How Claude Code combines it | Examples | | :-------------------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------- | :-------------------------------------------------------------------------------------------------------------------------- | | Lists | Combines the entries from every source | `permissions.allow`, `hooks`, `sandbox.network.allowedDomains`, `deniedMcpServers` | | Locks | Applies the strictest value any source sets; a looser value applies only from the highest-ranked source | `allowManagedHooksOnly`, `permissions.disableBypassPermissionsMode`, `crossSessionInbound` | | Restriction allowlists | Takes the list whole from the highest-ranked source that sets it, without adding entries from lower sources | `availableModels`, `allowedMcpServers`, `strictKnownMarketplaces`, `allowedChannelPlugins`, and the `fallbackModel` chain | +| Values taken whole | Takes the value whole from the highest-ranked source that sets it, without combining entries or fields from lower sources | `sandbox.credentials.awsPairs`, `sandbox.ripgrep` | | Provided MCP servers | Combines the server names from every source; when two sources set the same name, applies the higher-ranked source's whole entry | `managedMcpServers` | | Keys read from the highest-ranked source only | Ignores the key in every lower source, even when the highest-ranked source leaves it unset | Credential helpers such as `apiKeyHelper`, login pins such as `forceLoginOrgUUID`, `modelPicker`, `permissions.defaultMode` | | `env` | Merges per variable across admin sources under either setting, as [Keys read from every admin source](#keys-read-from-every-admin-source) describes | | @@ -197,8 +201,6 @@ A [`policyHelper`](/docs/en/settings-reference#policyhelper) is an executable yo For which helper runs fail, and what Claude Code does when one does, see [Helper failures](/docs/en/settings-reference#helper-failures). -Claude Code selects the source at startup, and that selection decides whether a helper runs. The [`policyHelper`](/docs/en/settings-reference#policyhelper) entry says which sources can configure a helper. - @@ -317,6 +319,9 @@ A few enforcement keys aren't dropped when invalid. Claude Code enforces a stric | Field | Behavior when present but invalid | | :---------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `allowedMcpServers` | Enforced as an empty allowlist until the value is fixed, so no MCP servers that users add are admitted. Servers your organization delivers through [`managedMcpServers`](/docs/en/settings-reference#managedmcpservers) still load, and `managed-mcp.json` servers load per [How a server is evaluated](/docs/en/managed-mcp#how-a-server-is-evaluated). An individual invalid entry is stripped and the valid subset is enforced. | +| `allowedHttpHookUrls` | Claude Code enforces an empty [allowlist](/docs/en/settings-reference#allowedhttphookurls) until you fix the value. If only an individual entry is invalid, it strips that entry and enforces the rest. | +| `httpHookAllowedEnvVars` | Claude Code enforces an empty [allowlist](/docs/en/settings-reference#httphookallowedenvvars) until you fix the value. If only an individual entry is invalid, it strips that entry and enforces the rest. | +| `allowedChannelPlugins` | Claude Code enforces an empty allowlist until you fix the value, so no channel plugin passed to `--channels` is admitted. If only an individual entry is invalid, it strips that entry and enforces the rest. | | `allowManagedHooksOnly` | Treated as `true` until fixed: the [hook restrictions](/docs/en/settings-reference#allowmanagedhooksonly) apply and, unless `disableCommandPluginSources` is explicitly `false`, command-sourced plugins are disabled. | | `allowManagedMcpServersOnly` | Treated as `true`. | | `disableCommandPluginSources` | Treated as `true`, so command-sourced plugins stay disabled until the value is fixed. | @@ -327,6 +332,8 @@ A few enforcement keys aren't dropped when invalid. Claude Code enforces a stric | `deniedMcpServers` | An individual invalid entry is stripped and the valid subset is enforced. A wholly invalid value is dropped with a warning, since denying every server would block servers the policy never named. | | `sandbox.credentials` | A recoverable invalid entry is degraded to `mode: "deny"` with a warning; an unrecoverable one is stripped; valid entries stay enforced. See [invalid credential entries](/docs/en/settings-reference#invalid-credential-entries-in-managed-settings) | +Before v2.1.267, Claude Code dropped `allowedHttpHookUrls`, `httpHookAllowedEnvVars`, or `allowedChannelPlugins` whole when the value or any one entry was invalid, and behaved as if the key weren't set. + `requiredMinimumVersion` and `requiredMaximumVersion` fail open by design: an invalid value is dropped rather than enforced. This tolerance applies only to managed settings. User, project, and local settings files remain strict: a file whose JSON or top-level shape fails validation is rejected as a whole and reported, and an individual entry that fails, such as a malformed permission rule, is skipped with a warning while the rest of the file applies. diff --git a/content/en/docs/claude-code/mcp.md b/content/en/docs/claude-code/mcp.md index 56c023af4..4fefdf6dc 100644 --- a/content/en/docs/claude-code/mcp.md +++ b/content/en/docs/claude-code/mcp.md @@ -92,7 +92,9 @@ In `--output-format stream-json` runs, Claude Code also reports a skipped `--mcp The SSE (Server-Sent Events) transport is deprecated. Use HTTP servers instead, where available. -Some services still expose only an SSE endpoint. Use the same command as the HTTP transport, with `--transport sse`: +Some services still expose only an SSE endpoint. Add these with the same `claude mcp add --transport http ` command as [an HTTP server](#option-1-add-a-remote-http-server). Claude Code tries the HTTP transport first and switches to SSE when the server doesn't accept it. The automatic switch requires Claude Code v2.1.265 or later. + +On an earlier version, or to connect over SSE directly, pass `--transport sse` instead: ```bash theme={null} # Basic syntax @@ -165,7 +167,7 @@ Each is one of the inputs the four options in [Installing MCP servers](#installi #### From a URL -A URL means the server is remote. For an `https://` endpoint, add it with `--transport http`, or with `--transport sse` when the instructions say the endpoint uses SSE. For a `wss://` endpoint, use [Option 4](#option-4-add-a-remote-websocket-server) instead, since `--transport` doesn't accept `ws`: +A URL means the server is remote. For an `https://` endpoint, add it with `--transport http`, or follow [Option 2](#option-2-add-a-remote-sse-server) when the instructions say the endpoint uses SSE. For a `wss://` endpoint, use [Option 4](#option-4-add-a-remote-websocket-server) instead, since `--transport` doesn't accept `ws`: ```bash theme={null} claude mcp add --transport http example https://mcp.example.com/mcp @@ -333,7 +335,7 @@ On v2, Claude Code also: * Doesn't register a [channel](#push-messages-with-channels) server that connects on the newer revision, because that revision can't carry channel messages. * Fails an [MCP OAuth sign-in](#authenticate-with-remote-mcp-servers) whose authorization response names an unexpected issuer. -Anthropic can keep a specific server on the earlier protocol, or off that stream, with a feature flag Claude Code fetches. In a [Claude Code on the web](/docs/en/cloud-environments#network-access) session, Claude Code asks its MCP connectors only if you set `MCP_PROTOCOL_NEGOTIATION` to `auto`. +Anthropic can keep a specific server on the earlier protocol, or off that stream, with a feature flag Claude Code fetches. To pick the runtime yourself, set [`MCP_SDK_GENERATION`](/docs/en/env-vars) to `v1` or `v2`. To decide whether Claude Code asks, set [`MCP_PROTOCOL_NEGOTIATION`](/docs/en/env-vars) to `auto` or `legacy`. Where Claude Code uses v1 by default, pinning `v2` doesn't make it ask, so set `auto` too. @@ -700,6 +702,7 @@ Claude Code marks a remote server as needing authentication when the server resp * For a server you haven't signed in to, either status code flags it in `/mcp` so you can complete the OAuth flow. * For a [claude.ai connector](#use-mcp-servers-from-claude-ai), a `401` caused by claude.ai rejecting your session token doesn't flag the connector, because re-authorizing the connector can't fix your login. Claude Code shows the [session-token-rejected state](/docs/en/errors#claude-ai-rejected-the-session-token) instead. * For a server whose `Authorization` header you configured, in `headers` or through a [`headersHelper`](#use-dynamic-headers-for-custom-authentication), a `401` or `403` while connecting doesn't flag the server, because the credential to fix is the one you configured. Claude Code reports the connection as failed instead. +* For a connector [delivered to a cloud session](#how-connectors-reach-claude-code), Claude Code doesn't run a sign-in flow, because the session's proxy authenticates to the connector with the authorization you granted in claude.ai. When a connector there needs authorizing again, reconnect it at [claude.ai/customize/connectors](https://claude.ai/customize/connectors) rather than from the session. When a request to an OAuth server you already signed in to returns `401 Unauthorized`, Claude Code refreshes the stored token, reconnects, and retries the request once. It flags the server in `/mcp` only if that retry also fails. Before v2.1.206, a token refresh that failed for a transient reason, such as a network error, flagged an OAuth server as needing authentication for the rest of the session even though its refresh token was still valid. @@ -1216,6 +1219,7 @@ When MCP tools produce large outputs, Claude Code helps manage the token usage t * **Configurable limit**: you can adjust the maximum allowed MCP output tokens using the `MAX_MCP_OUTPUT_TOKENS` environment variable * **Default limit**: the default maximum is 25,000 tokens * **Scope**: the environment variable applies to tools that don't declare their own limit. Tools that set [`anthropic/maxResultSizeChars`](#raise-the-limit-for-a-specific-tool) use that value instead for text content, regardless of what `MAX_MCP_OUTPUT_TOKENS` is set to. Tools that return image data are still subject to `MAX_MCP_OUTPUT_TOKENS` +* **Over the limit**: when a result with no image content exceeds the limit, Claude Code saves it to a file and replaces it in the conversation with a message that names the file path, so Claude reads the file when it needs the content. The file goes in the session's `tool-results` directory under [`~/.claude/projects/`](/docs/en/claude-directory#cleaned-up-automatically). To increase the limit for tools that produce large outputs: diff --git a/content/en/docs/claude-code/memory.md b/content/en/docs/claude-code/memory.md index 021b60aea..9a9fe1976 100644 --- a/content/en/docs/claude-code/memory.md +++ b/content/en/docs/claude-code/memory.md @@ -441,7 +441,7 @@ To debug: If the instruction is something that must run at a specific point, such as before every commit or after each file edit, write it as a [hook](/docs/en/hooks-guide) instead. Hooks execute as shell commands at fixed lifecycle events and apply regardless of what Claude decides to do. -For instructions you want at the system prompt level, use [`--append-system-prompt`](/docs/en/cli-reference#system-prompt-flags). This must be passed every invocation, so it's better suited to scripts and automation than interactive use. +For instructions you want at the system prompt level, use [`--append-system-prompt`](/docs/en/cli-reference#system-prompt-flags). You pass it at launch, so it's better suited to scripts and automation than interactive use. For how it behaves when you resume a conversation, see [System prompt flags in resumed conversations](/docs/en/cli-reference#system-prompt-flags-in-resumed-conversations). Use the [`InstructionsLoaded` hook](/docs/en/hooks#instructionsloaded) to log exactly which instruction files are loaded, when they load, and why. This is useful for debugging path-specific rules or lazy-loaded files in subdirectories. diff --git a/content/en/docs/claude-code/model-config.md b/content/en/docs/claude-code/model-config.md index 95f0c1a84..e217dccec 100644 --- a/content/en/docs/claude-code/model-config.md +++ b/content/en/docs/claude-code/model-config.md @@ -126,7 +126,7 @@ You can configure your model in several ways, listed in order of priority: * `Enter`: switch model and save as your default * `s`: switch model for this session only -Typing `/model ` directly behaves like `Enter`. A model set with `/model` in [non-interactive mode](/docs/en/headless), with the `-p` flag, applies to the current session only and isn't saved as your default. Project and managed settings still take precedence and reapply on the next launch. An [organization default model](#organization-default-model) that your admin has configured to override user selection also reapplies on the next launch. +Typing `/model ` directly behaves like `Enter`. If you set a model with `/model` in [non-interactive mode](/docs/en/headless), with the `-p` flag, your choice applies to the current session only and isn't saved as your default; `/model` in that mode requires Claude Code v2.1.205 or later. Project and managed settings still take precedence and reapply on the next launch. An [organization default model](#organization-default-model) that your admin has configured to override user selection also reapplies on the next launch. In v2.1.144 through v2.1.152, `/model` applied to the current session only and `d` in the picker saved a default. @@ -391,6 +391,8 @@ The organization default reaches only sessions authenticated with the Anthropic ## Organization effort limits +Your organization can cap the [effort level](#adjust-effort-level) in two ways. On a Claude Enterprise plan, organization admins set per-role effort limits, described below. On any plan and any provider, including Amazon Bedrock, Google Cloud's Agent Platform, and Microsoft Foundry, the [`maxEffortLevel`](/docs/en/settings-reference#maxeffortlevel) managed setting caps effort on the client instead. When both apply to a model, the lower cap applies. + Organization admins on Claude Enterprise plans can set a maximum [effort level](#adjust-effort-level) per model for each custom role, alongside role-level [organization model restrictions](#organization-model-restrictions). Levels above the cap aren't offered in the `/effort` picker, and naming a higher level with `--effort` or `/effort` runs at the cap instead. In interactive sessions and plain-text `--print` runs, a warning names the requested and applied levels; with `json` or `stream-json` output or in background agents, the clamp applies silently. Caps are per model, so switching models can change which levels are available. When several of your roles grant the same model, the least restrictive cap applies. Requires Claude Code v2.1.195 or later. Effort limits are delivered together with [organization model restrictions](#organization-model-restrictions) and reach the same sessions. @@ -423,7 +425,7 @@ The `opusplan` model alias provides an automated hybrid approach: This pairs Opus's reasoning for planning with Sonnet's efficiency for execution. -The plan-mode Opus phase uses the same context window as the `opus` model setting. On subscription tiers where Opus is [automatically upgraded to 1M context](#extended-context), `opusplan` receives the upgrade in plan mode as well. To force 1M context for both phases when you are not on an auto-upgrade tier, set the model to `opusplan[1m]`. +The plan-mode Opus phase uses the same context window as the `opus` model setting. On subscription tiers where Opus is [automatically upgraded to 1M context](#extended-context), `opusplan` receives the upgrade in plan mode as well. To force 1M context for both phases when you aren't on an auto-upgrade tier, [set the model](#setting-your-model) to `opusplan[1m]`, for example with `/model opusplan[1m]`. Setting it with `/model` requires Claude Code v2.1.265 or later; on earlier versions, use the `--model` flag or the `model` setting instead. When [`availableModels`](#restrict-model-selection) excludes the newest Opus but permits an older version, for example `["sonnet", "claude-opus-4-6"]`, `opusplan` uses the newest permitted Opus for planning and stays on Sonnet only when every Opus is excluded. A Haiku session that would normally upgrade to Sonnet in plan mode likewise uses the newest permitted Sonnet, and stays on Haiku only when every Sonnet is excluded. Before v2.1.205, plan mode stayed on the session's model whenever the newest version of the upgrade family was excluded, even when the allowlist permitted an older one. @@ -524,7 +526,7 @@ The available effort levels depend on the model. Models not listed here do not s | Opus 5, Sonnet 5, Opus 4.8, and Opus 4.7 | `low`, `medium`, `high`, `xhigh`, `max` | | Opus 4.6 and Sonnet 4.6 | `low`, `medium`, `high`, `max` | -If you set a level the active model does not support, Claude Code falls back to the highest supported level at or below the one you set. For example, `xhigh` runs as `high` on Opus 4.6. Your organization can also cap which levels are available for a model; see [Organization effort limits](#organization-effort-limits). +If you set a level the active model does not support, Claude Code falls back to the highest supported level at or below the one you set. For example, `xhigh` runs as `high` on Opus 4.6. Your organization or your own settings can also cap the levels a model offers; see [Organization effort limits](#organization-effort-limits). With the [`ultracode`](/docs/en/settings-reference#ultracode) setting off, Claude Code resolves the session's effort level in this order, taking the first that applies: @@ -594,13 +596,13 @@ You can change effort through any of the following: * **In `/model`**: use left/right arrow keys to adjust the effort slider when selecting a model * **`--effort` flag**: pass a level name to set it for a single session when launching Claude Code * **Environment variable**: set `CLAUDE_CODE_EFFORT_LEVEL` to a level name or `auto` -* **Settings**: set a per-model level in [`modelSettings`](/docs/en/settings-reference#modelsettings), or set [`effortLevel`](/docs/en/settings-reference#effortlevel) to `low`, `medium`, `high`, or `xhigh` as the default for models without one. `max` isn't accepted in either key, and `ultracode` has its own [`ultracode`](/docs/en/settings-reference#ultracode) key +* **Settings**: set a per-model level in [`modelSettings`](/docs/en/settings-reference#modelsettings), or set [`effortLevel`](/docs/en/settings-reference#effortlevel) to `low`, `medium`, `high`, or `xhigh` as the default for models without one. `max` isn't accepted as a level in either key, and `ultracode` has its own [`ultracode`](/docs/en/settings-reference#ultracode) key * **From a connected device**: in a [Remote Control](/docs/en/remote-control#what-connected-devices-see) session, pick a level from the effort control on your phone or in your browser. The level applies to the current session only, though it also ends the [hold on the model's default effort](#adjust-effort-level). Requires Claude Code v2.1.234 or later * **Skill and subagent frontmatter**: set `effort` in a [skill](/docs/en/skills#frontmatter-reference) or [subagent](/docs/en/sub-agents#supported-frontmatter-fields) markdown file to override the effort level when that skill or subagent runs Frontmatter effort applies when that skill or subagent is active, overriding the session level but not the environment variable. -The `effortLevel` key in [managed settings](/docs/en/managed-settings) is a starting default, not enforcement: users can change it for a session with `/effort` or `--effort`, and the managed value re-asserts as the default in new sessions. +If you set `effortLevel` in [managed settings](/docs/en/managed-settings), Claude Code applies it at the settings step of the [effort resolution order](#adjust-effort-level), and users can still change the level with `/effort` or `--effort`. To keep users at or below a level, set [`maxEffortLevel`](/docs/en/settings-reference#maxeffortlevel). The effort slider appears in `/model` when a supported model is selected. The current effort level is also shown in the session header next to the model name, for example "with low effort", so you can confirm which setting is active without opening `/model`. The footer also briefly shows the effort level at startup and when it changes. @@ -807,7 +809,7 @@ With the `[1m]` suffix, the 1M context window applies to all usage of the pinned An `availableModels` allowlist delivered through [MDM or a managed settings file](/docs/en/managed-settings#delivery-mechanisms) still applies when using third-party providers; [server-managed settings are not delivered there](/docs/en/server-managed-settings#platform-availability). - Filtering matches on a model alias such as `opus`, a version prefix such as `claude-opus-4-8`, or the full provider-form model ID. Provider-specific prefixes such as `us.anthropic.` are not stripped, so to allow a specific model, list its full provider-form ID, or map it through [`modelOverrides`](#override-model-ids-per-version). Any `[1m]` suffix is stripped from both the allowlist entry and the requested model before matching. + Filtering matches on a model alias such as `opus`, a version prefix such as `claude-opus-4-8`, or the full provider-form model ID. Provider-specific prefixes such as `us.anthropic.` are not stripped, so to allow a specific model, list its full provider-form ID, or map it through [`modelOverrides`](#override-model-ids-per-version). For a pinned model, that ID is the value you set in its `ANTHROPIC_DEFAULT_*_MODEL` variable. Any `[1m]` suffix is stripped from both the allowlist entry and the requested model before matching. ### Customize pinned model display and capabilities diff --git a/content/en/docs/claude-code/network-config.md b/content/en/docs/claude-code/network-config.md index d217881d1..bc6cac4b9 100644 --- a/content/en/docs/claude-code/network-config.md +++ b/content/en/docs/claude-code/network-config.md @@ -222,6 +222,7 @@ Claude Code requires access to the following URLs. Allowlist these in your proxy | `bridge.claudeusercontent.com` | [Claude in Chrome](/docs/en/chrome) extension WebSocket bridge | | `*.frame.claudeusercontent.com` | [Artifact](/docs/en/artifacts) content reads. The CLI fetches an artifact's files from this host when Claude opens one, and only when the Artifact tool is [available](/docs/en/artifacts#availability) for your account. To turn the tool off and drop this requirement, set [`"enableArtifact": false`](/docs/en/settings-reference#enableartifact) or [`CLAUDE_CODE_DISABLE_ARTIFACT=1`](/docs/en/env-vars); Claude Code also honors the deprecated [`disableArtifact`](/docs/en/settings-reference#disableartifact) setting. See [Disable artifacts](/docs/en/artifacts#disable-artifacts) for how these settings interact | | `raw.githubusercontent.com` | Changelog feed for [`/release-notes`](/docs/en/commands). In interactive sessions, Claude Code also fetches it in the background at startup when its cached changelog doesn't yet cover the running version, such as the first start after an update; non-interactive and cloud sessions never fetch it | +| `*-review.googlesource.com` | Gerrit change lookup on `googlesource.com` checkouts. When a Claude Desktop Code tab session starts or resumes on a [trusted](/docs/en/permissions#project-allow-rules-and-workspace-trust) checkout whose `origin` is a `googlesource.com` host, Claude Code asks that host's `-review` server anonymously for the open change matching HEAD's `Change-Id`, once per start or resume. Other session types skip the lookup, and no other Gerrit host is contacted. Optional: disable with [`CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC`](/docs/en/env-vars) | | `http-intake.logs.us5.datadoghq.com` | Operational telemetry events, sent only when the CLI uses the Anthropic API directly, never for Amazon Bedrock, Google Cloud's Agent Platform, or Microsoft Foundry. Optional: disable with [`DISABLE_TELEMETRY`](/docs/en/data-usage#telemetry-services) or `DO_NOT_TRACK` | | `browser-intake-us5-datadoghq.com` | Operational error reports, sent when the CLI uses the Anthropic API directly and a server-side rollout gate enables them. Optional: disable with `DISABLE_ERROR_REPORTING` or `DISABLE_TELEMETRY`; see [Telemetry services](/docs/en/data-usage#telemetry-services) | | `formulae.brew.sh` | Update version checks on Homebrew installs. Other install methods don't contact this host | diff --git a/content/en/docs/claude-code/output-styles.md b/content/en/docs/claude-code/output-styles.md index 1b3bd73f2..31349c1ab 100644 --- a/content/en/docs/claude-code/output-styles.md +++ b/content/en/docs/claude-code/output-styles.md @@ -6,15 +6,15 @@ > Adapt Claude Code for uses beyond software engineering -Output styles change how Claude responds, not what Claude knows. They modify the system prompt to set role, tone, and output format. Use one when you keep re-prompting for the same voice or format every turn, or when you want Claude to act as something other than a software engineer. +Output styles change how Claude responds, not what Claude knows. They set Claude's role, tone, and output format for every response. Use one when you keep re-prompting for the same voice or format every turn, or when you want Claude to act as something other than a software engineer. -A custom output style adds your instructions to the system prompt and lets you choose whether to keep Claude Code's built-in software engineering instructions. Keep them when you're changing how Claude communicates but still coding, like always answering with a diagram. Leave them out when Claude isn't doing software engineering at all, like a writing assistant or data analyst. +A custom output style gives Claude your own instructions and lets you choose whether to keep Claude Code's built-in software engineering instructions. Keep them when you're changing how Claude communicates but still coding, like always answering with a diagram. Leave them out when Claude isn't doing software engineering at all, like a writing assistant or data analyst. For instructions about your project, conventions, or codebase, use [CLAUDE.md](/docs/en/memory) instead. ## Built-in output styles -Claude Code's **Default** output style is the existing system prompt, designed to help you complete software engineering tasks efficiently. +Claude Code's **Default** output style is its standard set of instructions, designed to help you complete software engineering tasks efficiently. There are four additional built-in output styles: @@ -44,11 +44,13 @@ To set a style without the menu, edit the `outputStyle` field directly in a sett } ``` -When you switch styles mid-session, Claude uses the new style starting with your next message. The style is part of the system prompt, so that first message rebuilds the [prompt cache](/docs/en/prompt-caching#changing-output-style) once. Before v2.1.251, the new style applied only after you ran `/clear` or started a new session. +When you switch styles mid-session, Claude uses the new style starting with your next message. For what that first message costs in prompt caching, see [Changing output style](/docs/en/prompt-caching#changing-output-style). Before v2.1.251, the new style applied only after you ran `/clear` or started a new session. ## Create a custom output style -A custom output style is a Markdown file: frontmatter for metadata, then the instructions to add to the system prompt. In the VS Code extension, you can also create the file from the [**Output styles** menu](/docs/en/vs-code#use-the-prompt-box) rather than writing it by hand. This requires Claude Code v2.1.261 or later. +A custom output style is a Markdown file: frontmatter for metadata, then the instructions for Claude. + +In the VS Code extension, you can also create the file from the [**Output styles** menu](/docs/en/vs-code#use-the-prompt-box) rather than writing it by hand. This requires Claude Code v2.1.261 or later. @@ -101,27 +103,29 @@ Output style files support these frontmatter fields: ## How output styles work -Output styles directly modify Claude Code's system prompt. +An output style changes the instructions Claude Code gives Claude. -* Claude Code adds the output style's custom instructions to the system prompt. +* Claude Code sends the active style's instructions with every request. * When you [select a style other than Default](#change-your-output-style), Claude Code also reminds Claude of the style during the conversation. * Custom output styles leave out Claude Code's built-in software engineering instructions, such as how to scope changes, write comments, and verify work, unless `keep-coding-instructions` is set to `true`. -Output styles apply to the main conversation only: a [subagent runs its own system prompt](/docs/en/sub-agents#what-loads-at-startup), so styles don't change how subagents respond. A [fork](/docs/en/sub-agents#fork-the-current-conversation) is the exception, because it inherits the parent's full system prompt. +Output styles apply to the main conversation and to a [fork](/docs/en/sub-agents#fork-the-current-conversation), which inherits the parent's full conversation and system prompt. Other [subagents run their own system prompt](/docs/en/sub-agents#what-loads-at-startup), so styles don't change how they respond. + +Token usage depends on the style. A style's instructions add input tokens, though prompt caching reduces this cost after the first request in a session. -Token usage depends on the style. Adding instructions to the system prompt increases input tokens, though prompt caching reduces this cost after the first request in a session. The built-in Explanatory and Learning styles produce longer responses than Default by design, which increases output tokens, and the Concise style does the opposite by instructing Claude to keep responses short by default. For custom styles, output token usage depends on what your instructions tell Claude to produce. +The built-in Explanatory and Learning styles produce longer responses than Default by design, which increases output tokens. The Concise style does the opposite by instructing Claude to keep responses short by default. For custom styles, output token usage depends on what your instructions tell Claude to produce. ## Comparisons to related features -Several features customize how Claude Code behaves. Output styles modify the system prompt directly and apply to every response. The others add instructions without changing the default system prompt, or scope them to a specific task. +Several features customize how Claude Code behaves. Output styles change Claude Code's default instructions and apply to every response. The others add instructions without changing the defaults, or scope them to a specific task. -| Feature | How it works | Use it when | -| :----------------------- | :----------------------------------------------------------- | :---------------------------------------------------------------------- | -| Output styles | Modifies the system prompt | You want a different role, tone, or default response format every turn | -| [CLAUDE.md](/docs/en/memory) | Adds a user message after the system prompt | Claude should always know your project conventions and codebase context | -| `--append-system-prompt` | Appends to the system prompt without removing anything | You want a one-off addition for a single invocation | -| [Agents](/docs/en/sub-agents) | Runs a subagent with its own system prompt, model, and tools | You want a separately scoped helper for a focused task | -| [Skills](/docs/en/skills) | Loads task-specific instructions when invoked or relevant | You have a reusable workflow | +| Feature | How it works | Use it when | +| :----------------------- | :----------------------------------------------------------- | :-------------------------------------------------------------------------------------------------- | +| Output styles | Changes Claude Code's default instructions | You want a different role, tone, or default response format every turn | +| [CLAUDE.md](/docs/en/memory) | Adds a user message after the system prompt | Claude should always know your project conventions and codebase context | +| `--append-system-prompt` | Appends to the system prompt without removing anything | You want a one-off addition passed as a [CLI flag](/docs/en/cli-reference#system-prompt-flags) at launch | +| [Agents](/docs/en/sub-agents) | Runs a subagent with its own system prompt, model, and tools | You want a separately scoped helper for a focused task | +| [Skills](/docs/en/skills) | Loads task-specific instructions when invoked or relevant | You have a reusable workflow | ## Related resources diff --git a/content/en/docs/claude-code/permission-modes.md b/content/en/docs/claude-code/permission-modes.md index 9060d2a8d..75e0f4feb 100644 --- a/content/en/docs/claude-code/permission-modes.md +++ b/content/en/docs/claude-code/permission-modes.md @@ -125,7 +125,7 @@ The next session you start shows `⏸ manual mode on` in the status bar. ## Switch permission modes -Each interface has its own control for switching permission modes during a session and its own way of choosing the permission mode new sessions start in. Asking Claude in chat to change the permission mode doesn't work. Select your interface to see its controls. +Each interface has its own control for switching permission modes during a session and its own way of choosing the permission mode new sessions start in. Select your interface to see its controls. @@ -393,7 +393,7 @@ Claude Code v2.1.261 and later also block these by default: * Installing dependencies declared in your lock files or manifests * Reading `.env` and sending credentials to their matching API * Read-only HTTP requests -* Pushing to any branch of the repository you're working in, including the default branch. A non-default branch whose name marks it as a deploy or publication target, such as `production` or `gh-pages`, isn't covered: the classifier judges a push there on its own terms. The push's content is still checked against the other rules, [`permissions.deny` rules](/docs/en/permissions#manage-permissions) can still block pushes to specific branches outright in every mode, and the remote's own branch protection still applies. Before v2.1.211, only pushes to the branch you started on, branches Claude created, and routine pushes to the default branch were allowed by default, and before v2.1.203 any direct push to the default branch was blocked +* Pushing to any branch of the repository you're working in, including the default branch. A non-default branch whose name marks it as a deploy or publication target, such as `production` or `gh-pages`, isn't covered: the classifier judges a push there on its own terms. The push's content is still checked against the other rules, [`permissions.deny` rules](/docs/en/permissions#manage-permissions) can still block push commands [as written](/docs/en/permissions#bash-rule-limits) in every mode, and the remote's own branch protection still applies. Before v2.1.211, only pushes to the branch you started on, branches Claude created, and routine pushes to the default branch were allowed by default, and before v2.1.203 any direct push to the default branch was blocked Claude Code v2.1.195 and later also allow these by default: @@ -412,7 +412,7 @@ Sandbox network access requests are routed through the classifier rather than al Run `claude auto-mode defaults` to print the full rule lists as JSON. If routine actions get blocked, an administrator can add trusted repos, buckets, and services via the `autoMode.environment` setting: see [Configure auto mode](/docs/en/auto-mode-config). -Pushing to any branch of the repository you're working in and creating a pull request that matches your request run without a prompt, unless the push or pull request falls under the [blocked list](#what-the-classifier-blocks-by-default), such as secrets or sensitive data leaving the repository, or a pull request that targets a different repository or organization. To require a human checkpoint before these actions while staying in auto mode, add `permissions.ask` rules: see [Common boundaries](/docs/en/auto-mode-config#common-boundaries). +Pushing to any branch of the repository you're working in and creating a pull request that matches your request run without a prompt, unless the push or pull request falls under the [blocked list](#what-the-classifier-blocks-by-default), such as secrets or sensitive data leaving the repository, or a pull request that targets a different repository or organization. To require a human checkpoint before these commands while staying in auto mode, add `permissions.ask` rules, which match the command [as written](/docs/en/permissions#bash-rule-limits): see [Common boundaries](/docs/en/auto-mode-config#common-boundaries).

The first read outside the working directories diff --git a/content/en/docs/claude-code/permissions.md b/content/en/docs/claude-code/permissions.md index 4648b10c3..be55f7374 100644 --- a/content/en/docs/claude-code/permissions.md +++ b/content/en/docs/claude-code/permissions.md @@ -147,7 +147,7 @@ A `*` in a Bash rule matches any text, including spaces, so one rule covers a fa Put the `*` after the subcommand. In `git log --oneline main`, `git` is the program and `log` is the subcommand, the word that determines what the program does. Claude Code matches everything before the first `*` as written, so those words are what limit the rule: `Bash(git log *)` allows only `git log` commands, and `Bash(git *)` allows every git command. Claude Code [warns at startup](/docs/en/errors#has-a-wildcard-before-the-rest-of-the-command) about an allow rule with a `*` before the subcommand, such as `Bash(git * main)`. -Write the command you want Claude to run without asking, and replace the parts that vary with `*`. With this configuration, Claude Code runs npm scripts and git commits without asking and refuses git push: +Write the command you want Claude to run without asking, and replace the parts that vary with `*`. With this configuration, Claude Code runs npm scripts and git commits without asking and refuses commands that begin with `git push`. A push written another way, such as `git -C . push`, isn't matched; see [what a Bash rule doesn't match](#bash-rule-limits). ```json theme={null} { @@ -204,13 +204,13 @@ Allow rules accept tool-name globs only after a literal `mcp____` prefix A deny or ask rule whose tool name matches no known tool produces a startup warning to catch typos. Tool names containing `_` or `*` are exempt from the check. -The label shown for a tool in the transcript and permission dialog can differ from its canonical name. For example, the tool labeled `Stop Task` in the transcript has the canonical name `TaskStop`. Permission rules and [hook matchers](/docs/en/hooks) match the canonical name only, so a rule written as `Stop Task` doesn't match. For deny and ask rules, the startup warning above catches the mismatch. Use the canonical names listed in the [tools reference](/docs/en/tools-reference). +The label shown for a tool in the transcript and permission dialog can differ from its canonical name. For example, the tool labeled `Stop Task` in the transcript has the canonical name `TaskStop`. Permission rules and [hook matchers](/docs/en/hooks) don't match the label, so a rule written as `Stop Task` doesn't match. For deny and ask rules, the startup warning above catches the mismatch. Use the canonical names listed in the [tools reference](/docs/en/tools-reference). ## Tool-specific permission rules ### Bash -Bash rules match the whole command text, with `*` standing in for any text. [Wildcard patterns](#wildcard-patterns) shows which commands each rule shape matches and where to put the `*`. The rest of this section covers how Claude Code matches compound commands, wrappers, read-only commands, and redirections. +Bash rules match the whole command text, with `*` standing in for any text. [Wildcard patterns](#wildcard-patterns) shows which commands each rule shape matches and where to put the `*`. The rest of this section covers how Claude Code matches compound commands and wrappers, what a rule doesn't match, read-only commands, and redirections. #### Compound commands @@ -238,6 +238,22 @@ This wrapper list is built in and is not configurable. Development environment r Exec wrappers such as `watch`, `setsid`, `ionice`, and `flock` can't be auto-approved by a prefix rule like `Bash(watch *)`, so in Manual mode they always prompt. The same applies to `find` with `-exec` or `-delete`: a `Bash(find *)` rule doesn't cover these forms. To approve a specific invocation, write an exact-match rule for the full command string. +

+ What a Bash rule doesn't match +

+ +A Bash rule matches the command text Claude writes, after Claude Code splits [compound commands](#compound-commands) and strips [wrappers](#process-wrappers). It doesn't match the same program invoked in a different form, so a deny or ask rule covers the invocation Claude usually produces and isn't a security boundary around the program. These rules in `deny` or `ask` stop the first form and not the others: + +| Rule | Stops | Doesn't stop | +| :----------------- | :------------------------- | :---------------------------------------------------------------------------------------------------- | +| `Bash(curl *)` | `curl https://example.com` | `/usr/bin/curl https://example.com`, `sh -c 'curl https://example.com'` | +| `Bash(rm *)` | `rm -rf build/` | `/bin/rm -rf build/`, `bash -c 'rm -rf build/'` | +| `Bash(git push *)` | `git push origin main` | `git -C . push origin main`, `git -c push.default=current push origin main`, `git 'push' origin main` | + +Your other rules and the permission mode decide the commands in the last column. + +For filesystem and network enforcement that doesn't depend on the command text, use [sandboxing](/docs/en/sandboxing). To inspect the full command text with your own logic before it runs, use a [PreToolUse hook](#extend-permissions-with-hooks). + #### Read-only commands Claude Code recognizes a built-in set of Bash commands as read-only and runs them without a permission prompt in every mode, except for a path that [`permissions.blockReadsOutsideWorkingDirectories`](/docs/en/settings-reference#permissions-blockreadsoutsideworkingdirectories) fences. The set includes `ls`, `cat`, `echo`, `pwd`, `head`, `tail`, `grep`, `find`, `wc`, `which`, `diff`, `stat`, `du`, `cd`, and read-only forms of `git`. The set is not configurable; to require a prompt for one of these commands, add an `ask` or `deny` rule for it. @@ -266,11 +282,10 @@ A `cd` into a path inside your working directory or an [additional directory](#w * Different protocol: `curl https://github.com/...` * Redirects: `curl -L http://short.example.com/xyz`, which redirects to GitHub * Variables: `URL=http://github.com && curl $URL` - * Extra spaces: `curl http://github.com` For more reliable URL filtering, consider: - * **Restrict Bash network tools**: use deny rules to block `curl`, `wget`, and similar commands, then use the WebFetch tool with `WebFetch(domain:github.com)` permission for allowed domains + * **Restrict Bash network tools**: use deny rules to stop `curl`, `wget`, and similar commands, then use the WebFetch tool with `WebFetch(domain:github.com)` permission for allowed domains. A deny rule doesn't match the same program by path or inside `sh -c`, so pair it with the [sandbox network allowlist](/docs/en/sandboxing#network-isolation) when the restriction must hold; see [what a Bash rule doesn't match](#bash-rule-limits) * **Use PreToolUse hooks**: implement a hook that validates URLs in Bash commands and blocks disallowed domains * **Add CLAUDE.md guidance**: describe your allowed curl patterns in `CLAUDE.md`. This shapes what Claude tries but doesn't enforce a boundary, so pair it with one of the options above @@ -319,7 +334,7 @@ A `Read` deny rule also blocks the [Edit and Write tools](/docs/en/errors#file-i Claude Code checks file permissions against `Edit(path)` and `Read(path)` rules only. If you write a path rule for `Write`, `NotebookEdit`, `Glob`, or the legacy `MultiEdit` tool instead, Claude Code accepts the rule but never consults it, and [warns at startup](/docs/en/errors#is-not-matched-by-file-permission-checks), except for a `Glob` rule passed in `--allowedTools`. Use `Edit(docs/**)` in place of `Write(docs/**)`, `NotebookEdit(docs/**)`, or `MultiEdit(docs/**)`, and `Read(docs/**)` in place of `Glob(docs/**)`. Claude Code doesn't warn about a tool-name rule with no path, such as a deny rule for `Write`; it matches that rule at the tool level everywhere. Requires Claude Code v2.1.210 or later. - Read and Edit deny rules apply to Claude's built-in file tools, to file commands Claude Code recognizes in Bash, such as `cat`, `head`, `tail`, and `sed`, and to the targets of Bash [redirections](#redirections) such as `> file` and `< file`. They don't apply to arbitrary subprocesses that read or write files indirectly, like a Python or Node script that opens files itself. For OS-level enforcement that blocks all processes from accessing a path, [enable the sandbox](/docs/en/sandboxing). + Read and Edit deny rules apply to Claude's built-in file tools, to file commands Claude Code recognizes in Bash, such as `cat`, `head`, `tail`, and `sed`, and to the targets of Bash [redirections](#redirections) such as `> file` and `< file`. They don't apply to a command that reads files without naming them, such as `grep -r pattern .` run from the directory that holds the file, or to arbitrary subprocesses that read or write files indirectly, like a Python or Node script that opens files itself. For OS-level enforcement that blocks all processes from accessing a path, [enable the sandbox](/docs/en/sandboxing). Read and Edit rules both use [gitignore](https://git-scm.com/docs/gitignore) pattern syntax with four distinct pattern types; for single-segment directory patterns, the matching depth also depends on the rule type, described later in this section: @@ -489,11 +504,11 @@ Adding any `Cd` allow rule switches `/cd` to allowlist mode: the resolved target Path patterns share the `//`, `~/`, and `/` anchors from [Read and Edit rules](#read-and-edit), but matching is anchored to the whole directory path rather than gitignore-style. `*` matches exactly one path segment and `**` matches across segments. A trailing `/**` also matches its named root. -| Rule | Matches | Does not match | -| --------------------- | ----------------------------------------- | ---------------------------- | -| `Cd(~/code/*)` | `~/code/app` | `~/code/app/src`, `~/code` | -| `Cd(~/code/**)` | `~/code` and any directory under it | directories outside `~/code` | -| `Cd(**/node_modules)` | any `node_modules` directory at any depth | `node_modules/pkg` | +| Rule | Matches | Does not match | +| --------------------- | --------------------------------------------------------------------- | ---------------------------- | +| `Cd(~/code/*)` | `~/code/app` | `~/code/app/src`, `~/code` | +| `Cd(~/code/**)` | `~/code` and any directory under it | directories outside `~/code` | +| `Cd(**/node_modules)` | any `node_modules` directory at any depth under the current directory | `node_modules/pkg` | ## Extend permissions with hooks @@ -573,12 +588,7 @@ Permissions and [sandboxing](/docs/en/sandboxing) are complementary security lay * **Permissions** control which tools Claude Code can use and which files or domains it can access. They apply to Bash, Read, Edit, WebFetch, MCP, and every other tool, except that a deny or ask rule can't block [`EndConversation`](/docs/en/tools-reference#endconversation-tool-behavior) while any other tool remains. * **Sandboxing** provides OS-level enforcement that restricts the Bash tool's filesystem and network access. It applies only to Bash commands and their child processes. -Use both for defense-in-depth: - -* Permission deny rules block Claude from even attempting to access restricted resources -* Sandbox restrictions prevent Bash commands from reaching resources outside defined boundaries, even if a prompt injection bypasses Claude's decision-making -* Filesystem restrictions in the sandbox combine the [`sandbox.filesystem`](/docs/en/sandboxing) settings with Read and Edit deny rules; both are merged into the final sandbox boundary -* Network restrictions combine `WebFetch(domain:...)` permission rules with the sandbox's `allowedDomains` and `deniedDomains` lists +Use both for defense-in-depth, since sandbox restrictions still apply even if a prompt injection bypasses Claude's decision-making. Paths and domains from both sandbox settings and permission rules are [merged into the final sandbox configuration](/docs/en/sandboxing#permission-rules). When you enable sandboxing and leave `autoAllowBashIfSandboxed` at its default of `true`, sandboxed Bash commands run without prompting even if your permissions include a bare `Bash` ask rule, or the [equivalent `Bash(*)` form](#match-all-uses-of-a-tool): the sandbox boundary substitutes for that whole-tool prompt. diff --git a/content/en/docs/claude-code/plugin-dependencies.md b/content/en/docs/claude-code/plugin-dependencies.md index 7573f7373..e14e9b5c9 100644 --- a/content/en/docs/claude-code/plugin-dependencies.md +++ b/content/en/docs/claude-code/plugin-dependencies.md @@ -113,6 +113,8 @@ claude --plugin-dir ./my-dependency --plugin-dir ./my-plugin The local copy of the dependency satisfies your plugin's dependency entry, even when the entry names a marketplace, so you don't need to install the dependency from its marketplace. Claude Code doesn't check a [version constraint](#declare-a-dependency-with-a-version-constraint) against a local copy, so the local `plugin.json` doesn't need a `version`. Before v2.1.242, a dependency entry that named a marketplace never matched the local copy, and Claude Code disabled your plugin at load. +When both plugins sit in one parent folder, you can pass that folder to `--plugin-dir` once. If the folder isn't itself a plugin, Claude Code loads each child folder that has a `.claude-plugin/plugin.json`. Requires Claude Code v2.1.265 or later. + If you haven't installed the dependency from its marketplace, your plugin stops loading when the local copy goes away: * **You disabled the local copy**: Claude Code disables your plugin at the next plugin load. For a dependency entry that names a marketplace, Claude Code reports `Dependency "@inline" is disabled — enable it or remove the dependency`; for a bare-name entry, it reports the dependency by its bare name. `@inline` is how Claude Code identifies every `--plugin-dir` and `--plugin-url` plugin. diff --git a/content/en/docs/claude-code/plugin-marketplaces.md b/content/en/docs/claude-code/plugin-marketplaces.md index 565a667e3..638310774 100644 --- a/content/en/docs/claude-code/plugin-marketplaces.md +++ b/content/en/docs/claude-code/plugin-marketplaces.md @@ -163,9 +163,9 @@ Each plugin entry needs at minimum a `name` and a `source` that tells Claude Cod | `plugins` | array | List of available plugins | See below | - **Reserved names**: the following marketplace names are reserved for official Anthropic use and can't be used by third-party marketplaces: `claude-code-marketplace`, `claude-code-plugins`, `claude-plugins-official`, `claude-plugins-community`, `claude-community`, `anthropic-marketplace`, `anthropic-plugins`, `agent-skills`, `anthropic-agent-skills`, `knowledge-work-plugins`, `life-sciences`, `claude-for-legal`, `claude-for-financial-services`, `financial-services-plugins`, `first-party-plugins`, `healthcare`. Names that impersonate official marketplaces, such as `official-claude-plugins` or `anthropic-plugins-v2`, are also blocked. Reserving these names prevents a third-party marketplace from presenting itself as an Anthropic-published source. + **Reserved names**: the following marketplace names are reserved for official Anthropic use and can't be used by third-party marketplaces: `claude-code-marketplace`, `claude-code-plugins`, `claude-plugins-official`, `claude-plugins-community`, `claude-community`, `anthropic-marketplace`, `anthropic-plugins`, `agent-skills`, `anthropic-agent-skills`, `knowledge-work-plugins`, `life-sciences`, `claude-for-legal`, `claude-for-financial-services`, `financial-services-plugins`, `first-party-plugins`, `claude-tag-plugins`, `healthcare`. Names that impersonate official marketplaces, such as `official-claude-plugins` or `anthropic-plugins-v2`, are also blocked. Reserving these names prevents a third-party marketplace from presenting itself as an Anthropic-published source. - Claude Code re-checks reserved names every time it loads a marketplace, not only when you add one. A marketplace that was registered under one of these names before the name became reserved stops loading and reports that it is [registered from an untrusted source](/docs/en/errors#marketplace-is-registered-from-an-untrusted-source). Remove that marketplace and re-add it from the official Anthropic source. A third-party marketplace affected by a newly reserved name loads again as soon as you re-add it under a different name. Before v2.1.205, `first-party-plugins` and `healthcare` weren't reserved, and a marketplace already registered under a reserved name kept loading. + Claude Code re-checks reserved names every time it loads a marketplace, not only when you add one. A marketplace that was registered under one of these names before the name became reserved stops loading and reports that it is [registered from an untrusted source](/docs/en/errors#marketplace-is-registered-from-an-untrusted-source). Remove that marketplace and re-add it from the official Anthropic source. A third-party marketplace affected by a newly reserved name loads again as soon as you re-add it under a different name. Before v2.1.205, `first-party-plugins` and `healthcare` weren't reserved, and a marketplace already registered under a reserved name kept loading. Before v2.1.265, `claude-tag-plugins` wasn't reserved. ### Owner fields @@ -206,7 +206,7 @@ Each plugin entry in the `plugins` array describes a plugin and where to find it | Field | Type | Description | | :--------------- | :------ | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `displayName` | string | Human-readable name shown in UI surfaces. Falls back to `name` when omitted. May contain spaces and any casing. Not used for namespacing or lookup. | +| `displayName` | string | Human-readable name shown in UI surfaces. When neither the entry nor the plugin's `plugin.json` sets one, users see the plugin's `name`. May contain spaces and any casing. Not used for namespacing or lookup. | | `description` | string | Brief plugin description | | `version` | string | Plugin version. If set (here or in `plugin.json`), the plugin is pinned to this string and users only receive updates when it changes. A plugin with a [`command` source](#command-sources) isn't pinned by either field. If set in neither place, the version comes from the next source in [version management](/docs/en/plugins-reference#version-management). | | `author` | object | Plugin author information (`name` required; `email` and `url` optional) | @@ -221,6 +221,13 @@ Each plugin entry in the `plugins` array describes a plugin and where to find it | `relevance` | object | Signals that tell Claude Code when to suggest this plugin to users. Takes effect only for marketplaces an administrator allowlists in managed settings. See [Recommend plugins for your org](/docs/en/plugin-relevance). | | `defaultEnabled` | boolean | Whether the plugin is enabled after install (default: true). Set to `false` to install the plugin disabled until the user opts in. Takes precedence over the same field in the plugin's `plugin.json`. See [Default enablement](/docs/en/plugins-reference#default-enablement). | +Both the entry and the plugin's own `plugin.json` can set the display fields `displayName`, `description`, `author`, `homepage`, `repository`, `license`, and `keywords`. In plugin listings and details, before and after install: + +* For a field you set on the entry, users see the entry's value, even when `plugin.json` sets a different one. +* For a field the entry leaves unset, users see the `plugin.json` value. + +Before install, Claude Code can read `plugin.json` only for entries with a [relative-path source](#relative-paths), whose plugin files live inside the marketplace itself. For an entry with any other source type, users see only the entry's own fields until they install the plugin. + **Component configuration fields:** | Field | Type | Description | @@ -1473,7 +1480,7 @@ export CLAUDE_CODE_PLUGIN_GIT_TIMEOUT_MS=300000 # 5 minutes ### Plugins with relative paths fail in URL-based marketplaces -**Symptoms**: Added a marketplace via URL (such as `https://example.com/marketplace.json`), but plugins with relative path sources like `"./plugins/my-plugin"` fail to install with "path not found" errors. +**Symptoms**: Added a marketplace via a URL such as `https://example.com/marketplace.json`, but plugins with relative path sources like `"./plugins/my-plugin"` fail to install with `its marketplace entry path does not stay inside the marketplace directory`. Already-installed plugins fail to load with `Plugin source path refused`. Both messages have an [error reference entry](/docs/en/errors#marketplace-entry-path-does-not-stay-inside-the-marketplace-directory). **Cause**: adding a URL-based marketplace downloads only the `marketplace.json` file itself, and Claude Code doesn't fetch plugin files by relative path from that server. Relative paths in the marketplace entry reference files on the remote server that were not downloaded. diff --git a/content/en/docs/claude-code/plugins-reference.md b/content/en/docs/claude-code/plugins-reference.md index 5d70921d3..417098c98 100644 --- a/content/en/docs/claude-code/plugins-reference.md +++ b/content/en/docs/claude-code/plugins-reference.md @@ -512,7 +512,7 @@ claude plugin validate ./my-plugin --strict | Field | Type | Description | Example | | :--------------- | :------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :---------------------------------------------------------------- | | `$schema` | string | JSON Schema URL for editor autocomplete and validation. Claude Code ignores this field at load time. | `"https://json.schemastore.org/claude-code-plugin-manifest.json"` | -| `displayName` | string | Human-readable name shown in the `/plugin` picker and other UI surfaces. Falls back to `name` when omitted. Unlike `name`, may contain spaces and any casing. Not used for namespacing or lookup. | `"Deployment Tools"` | +| `displayName` | string | Human-readable name shown in the `/plugin` picker and other UI surfaces. For a marketplace-installed plugin, a `displayName` on the [marketplace entry](/docs/en/plugin-marketplaces#optional-plugin-fields) takes precedence over this value. When no display name is set in either place, users see `name`. Unlike `name`, may contain spaces and any casing. Not used for namespacing or lookup. | `"Deployment Tools"` | | `version` | string | Optional. Semantic version. Setting this pins the plugin to that version string, so users only receive updates when you bump it, except for a [`command` source](/docs/en/plugin-marketplaces#command-sources); see [Version management](#version-management). If also set in the marketplace entry, `plugin.json` wins. If omitted, the version comes from the next source in [Version management](#version-management). | `"2.1.0"` | | `description` | string | Brief explanation of plugin purpose | `"Deployment automation tools"` | | `author` | object | Author information | `{"name": "Dev Team", "email": "dev@company.com"}` | @@ -830,6 +830,8 @@ For dependencies the automatic install can't provide, such as packages that need Claude Code doesn't let a plugin reference files outside its own directory. It rejects a component path that resolves outside the plugin root, whether the path is declared in `plugin.json` or in a [marketplace entry](/docs/en/plugin-marketplaces#plugin-entries). That covers a path that points outside the plugin as written, such as `../shared-utils`, and a symlink that leads outside the plugin, other than [links within one marketplace](#share-files-within-a-marketplace-with-symlinks). +On macOS and Linux, Claude Code also rejects a component path that contains a backslash anywhere in it, even when the path stays inside the plugin. Components declared with backslash paths therefore load on Windows only. Write component paths with forward slashes, such as `./commands/deploy.md`. + When Claude Code rejects a path, it reports a [`path escapes plugin directory`](/docs/en/errors#path-escapes-plugin-directory) error and loads the plugin without that component. Claude Code also doesn't copy files outside the plugin directory into the cache when it installs the plugin, so when a script inside a copied plugin reads a path above the plugin root, it doesn't find those files either. diff --git a/content/en/docs/claude-code/plugins.md b/content/en/docs/claude-code/plugins.md index 37f439282..d76260541 100644 --- a/content/en/docs/claude-code/plugins.md +++ b/content/en/docs/claude-code/plugins.md @@ -167,7 +167,7 @@ You've created a plugin with a skill, but plugins can include much more: custom **Common mistake**: Don't put `commands/`, `agents/`, `skills/`, or `hooks/` inside the `.claude-plugin/` directory. Only `plugin.json` goes inside `.claude-plugin/`. All other directories must be at the plugin root level. - The plugin root is the individual plugin's own directory: the one you pass to `--plugin-dir` or that contains `.claude-plugin/plugin.json`. It is never `~/.claude/`. For example, Claude Code doesn't read a `.mcp.json` placed at `~/.claude/.mcp.json`. + The plugin root is the individual plugin's own directory, such as `my-first-plugin/` from the [quickstart](#quickstart). It is never `~/.claude/`. For example, Claude Code doesn't read a `.mcp.json` placed at `~/.claude/.mcp.json`. | Directory | Location | Purpose | @@ -314,6 +314,11 @@ As you make changes to your plugin, run `/reload-plugins` to pick up the updates To test a plugin together with a plugin it depends on, see [Test a plugin and its dependency locally](/docs/en/plugin-dependencies#test-a-plugin-and-its-dependency-locally). +To load several plugins from one place, pass a folder that holds them, such as `--plugin-dir ./plugins`. Loading a folder of plugins requires Claude Code v2.1.265 or later. Claude Code reads the folder's top level to decide which plugins load, and in an interactive session it also watches the folder for later changes: + +* **What loads**: if the folder has no manifest or plugin components at its top level, Claude Code treats it as a folder of plugins. Each immediate subfolder that has a `.claude-plugin/plugin.json` manifest loads as a separate plugin. Claude Code skips everything else in the folder without reporting an error, including plugins that have no manifest. +* **Changes during an interactive session**: a subfolder you add loads as a new plugin once its manifest is in place, and when you remove a subfolder, its plugin unloads. Claude Code prints a line in the session for each change. If applying a change mid-conversation would [invalidate the prompt cache](/docs/en/prompt-caching#enabling-or-disabling-a-plugin), Claude Code holds it, and the line says to run `/reload-plugins` to apply it. + To test a plugin that is already packaged as a `.zip` archive and hosted at a URL, such as a CI build artifact, use `--plugin-url` instead. Claude Code fetches the archive at startup and loads it for that session only. If Claude Code can't fetch the archive, or the archive is invalid, it starts without the plugin and records a plugin load error that you can review in the `/plugin` manager's **Errors** tab. The same [trust considerations](/docs/en/discover-plugins#security) apply as for any plugin source: only point this flag at archives you control or trust. To load multiple plugins, repeat the flag for each URL: diff --git a/content/en/docs/claude-code/prompt-caching.md b/content/en/docs/claude-code/prompt-caching.md index 7c89e7792..712c3662e 100644 --- a/content/en/docs/claude-code/prompt-caching.md +++ b/content/en/docs/claude-code/prompt-caching.md @@ -22,11 +22,11 @@ The API caches by matching the start of each request, called the prefix, against To get the most out of prefix matching, Claude Code orders each request so content that rarely changes between turns comes first: -| Layer | Content | Changes when | -| --------------- | ------------------------------------------------- | ----------------------------------------------------------------------------------------------- | -| System prompt | Core instructions, tool definitions, output style | The set of loaded tool definitions changes, you switch output style, or Claude Code is upgraded | -| Project context | CLAUDE.md, auto memory, unscoped rules | Session starts, or after `/clear` or `/compact` | -| Conversation | Your messages, Claude's responses, tool results | Every turn | +| Layer | Content | Changes when | +| --------------- | ----------------------------------------------- | --------------------------------------------------------------------- | +| System prompt | Core instructions, tool definitions | The set of loaded tool definitions changes or Claude Code is upgraded | +| Project context | CLAUDE.md, auto memory, unscoped rules | Session starts, or after `/clear` or `/compact` | +| Conversation | Your messages, Claude's responses, tool results | Every turn | A change to the conversation layer leaves the system prompt and project context cached. A change to the system prompt invalidates everything, because all later content now sits behind a different prefix. The third column gives common triggers rather than an exhaustive list, and the sections below cover the full set. @@ -139,11 +139,12 @@ When you enable a [code intelligence plugin](/docs/en/discover-plugins#code-inte #### When plugin changes apply -Claude Code applies a plugin change when you run [`/reload-plugins`](/docs/en/discover-plugins#apply-plugin-changes-without-restarting) or start a new session. You pay the cost, whether appended announcements or a full re-read, on the first turn after the change applies, not when you run `/plugin enable` or `/plugin disable`. Claude Code can also apply a change on its own in three cases: +A plugin change applies when you run [`/reload-plugins`](/docs/en/discover-plugins#apply-plugin-changes-without-restarting) or start a new session, not when you run `/plugin enable` or `/plugin disable`. You pay the cost, whether appended announcements or a full re-read, on the first turn after the change applies. Claude Code can also apply a change on its own: * For a plugin with a `command` source, Claude Code [can reload the plugin itself](/docs/en/plugin-marketplaces#when-claude-code-re-runs-the-command). * When you [install a plugin from the `/plugin` interface](/docs/en/discover-plugins#install-plugins), Claude Code can activate it during the install. Claude Code tells you in the install summary whether it did or whether to run `/reload-plugins`. * When you [move the session with `/cd`](/docs/en/permissions#move-the-session-to-another-directory) on v2.1.246 or later, Claude Code applies the plugins the new directory's settings enable as part of the move, without the full re-read warning that holds a `/reload-plugins`. +* In interactive sessions, when you add or remove a plugin in a [folder of plugins](/docs/en/plugins#test-your-plugins-locally) you passed with `--plugin-dir`, the change applies right away. If applying it would trigger a full re-read, Claude Code holds the change instead and shows a notice to run `/reload-plugins`. Requires Claude Code v2.1.265 or later. When you run `/reload-plugins` and the reload would trigger a full re-read, Claude Code shows a warning and doesn't apply the reload. Rerun it with `--force` to apply the reload anyway. @@ -163,7 +164,9 @@ Only a deny rule that matches in the tool-name position has this effect: a bare ### Changing output style -[Output style](/docs/en/output-styles) is part of the system prompt. When you switch styles mid-session with `/config` or the `outputStyle` setting, Claude uses the new style starting with your next message, and that request reads the entire conversation history with no cache hits. To keep that cost small, switch styles before your first message in a session or right after `/clear` or `/compact`, when there is little or no conversation history to re-read. +When you switch [output styles](/docs/en/output-styles) mid-session with `/config` or the `outputStyle` setting, Claude uses the new style starting with your next message. In a conversation that [keeps a recorded system prompt](/docs/en/cli-reference#system-prompt-flags-in-resumed-conversations), as sessions signed in with a claude.ai or Console account do by default, Claude Code delivers the new style's instructions as a message in the conversation. That request still reads the system prompt and the earlier conversation from the cache. + +In sessions that don't [fetch feature flags](/docs/en/env-vars#features-that-need-feature-flag-fetching), such as on Amazon Bedrock, Google Cloud's Agent Platform, or Microsoft Foundry, the style's instructions are part of the system prompt, so the request after a switch reads the entire conversation history with no cache hits. There, switch styles before your first message in a session or right after `/clear` or `/compact`, when there is little or no conversation history to re-read. Before v2.1.251, a mid-session style switch kept the cache but didn't apply until you ran `/clear` or started a new session. @@ -320,6 +323,7 @@ Other requests can also read a prefix that an earlier request cached: * **Session copies**: a session you [copy with `/fork`](/docs/en/agent-view#copy-the-session-with-%2Ffork) receives its isolation instruction as a message at the end of the copied conversation, so the cache that the original conversation built stays intact. * **Compaction**: the summarization call described in [Compacting the conversation](#compacting-the-conversation) uses the same prefix-sharing approach. +* **Resumed subagents**: when Claude [resumes a subagent](/docs/en/sub-agents#resume-subagents), the resumed run's first request can read the cache the original run warmed. * **Workflow fan-outs**: in a [workflow fan-out](/docs/en/workflows#prompt-caching-in-a-fan-out) of same-prefix agents, Claude Code holds all but the first for up to 5 seconds by default, so their first requests can read the prefix that the first agent cached. ## Disable prompt caching diff --git a/content/en/docs/claude-code/remote-control.md b/content/en/docs/claude-code/remote-control.md index 9d991d82e..b6acabe3c 100644 --- a/content/en/docs/claude-code/remote-control.md +++ b/content/en/docs/claude-code/remote-control.md @@ -334,7 +334,8 @@ Claude Code skips mobile push notifications while you are typing in or focused o * **Server mode**: Claude Code gives up after roughly 10 minutes and the `claude remote-control` process exits. Run `claude remote-control` again to start a new session. * **Interactive session**: keep working locally. Claude Code retries for as long as the outage lasts and reconnects on its own when the network returns. * **Presence heartbeats failing**: if an interactive session disconnects with `could not reach the Remote Control server for about 30 minutes`, run `/remote-control` to reconnect. Claude Code shows this message only when the session's presence heartbeats have been failing while the rest of the connection stayed up; it re-registers the session for about 30 minutes before disconnecting. -* **Forwarded dialogs expire**: Claude Code keeps permission prompts and `AskUserQuestion` questions open until you answer them. When Claude Code forwards another kind of dialog to the remote session, such as the model-choice prompt shown after a safety refusal, it waits five minutes by default, then closes the dialog and continues with the dialog's no-action default. The mid-session [Fable usage-credits consent prompt](/docs/en/model-config#fable-and-usage-credits) follows the same deadline but isn't forwarded: Claude Code shows it only in the terminal where the session runs, and if nobody has answered there by the deadline, it ends the turn without sending the request. Your model selection is unchanged, and Claude Code asks again on your next message. Set [`dialogExpiry`](/docs/en/settings-reference#dialogexpiry) to adjust or disable the deadline. Requires Claude Code v2.1.224 or later. Claude Code applies the same deadline to the approval dialog for a held cross-session message. [The held-message expiry rules](/docs/en/cross-session-messaging#control-inbound-messages) cover the cases where Claude Code keeps the dialog open past it. +* **Forwarded dialogs expire**: Claude Code keeps permission prompts and `AskUserQuestion` questions open until you answer them. When Claude Code forwards another kind of dialog to the remote session, such as the model-choice prompt shown after a safety refusal, it waits five minutes by default, then closes the dialog and continues with the dialog's no-action default. Set [`dialogExpiry`](/docs/en/settings-reference#dialogexpiry) to adjust or disable the deadline. Requires Claude Code v2.1.224 or later. +* **The Fable usage-credits consent prompt isn't forwarded**: Claude Code shows the mid-session [Fable usage-credits consent prompt](/docs/en/model-config#fable-and-usage-credits) only where the session runs, not on your device. When the session runs in a terminal and nobody there answers before Claude Code closes the prompt, the turn ends without sending the request; see [The prompt to confirm went unanswered](/docs/en/errors#the-prompt-to-confirm-went-unanswered). * **Some commands are local-only**: commands that only run in the terminal interface, such as `/plugin` or `/resume`, work only from the local CLI, whether or not you pass an argument. The following work from mobile and web: * Text-output commands: `/compact`, `/clear`, `/context`, `/usage`, `/exit`, `/usage-credits`, `/recap`, and `/reload-plugins`. `/usage-credits` prints the billing URL instead of opening a browser. `/reload-plugins` works only when the session runs in an interactive terminal; a session without one declines it. * `/model`, `/effort`, `/fast`, `/color`, and `/rename`: pass the value as an argument, for example `/model sonnet` or `/effort high`. From mobile and web, `/model` and `/effort` take the argument in place of the terminal picker or slider. @@ -342,6 +343,7 @@ Claude Code skips mobile push notifications while you are typing in or focused o * `/config`, from v2.1.181: from the mobile app, pass `key=value` to set a setting, or run it with no argument to list the keys you can set. On the web, `/config` opens the Claude Code section of your settings instead, and ignores text after the command. * On Team and Enterprise, `/usage-credits` from mobile or web doesn't send a [usage-credits request to your admin](/docs/en/costs#add-usage-credits-to-your-subscription). Sending requires a confirmation that appears only in the interactive CLI, so the command tells you to run it there instead. Before v2.1.211, the text form sent the request without confirmation. * `/autocompact`, from v2.1.221: pass the window size as an argument, for example `/autocompact 500k`. With no argument, it prints the current window size as text instead of opening the dialog the command shows in a terminal session. + * `/advisor`, from v2.1.260: pass the model as an argument, for example `/advisor opus`, or pass `off` to turn the advisor off. Both forms apply to the current session only and leave your saved default unchanged. With no argument, it prints the current advisor as text instead of opening the picker. ## Troubleshooting @@ -394,12 +396,9 @@ A policy blocks Remote Control, or Claude Code couldn't load your organization's * **The error mentions `disableRemoteControl`**: your IT administrator has disabled Remote Control on this device through [managed settings](/docs/en/managed-settings), independent of the organization-wide toggle and of how you're signed in. * **Your claude.ai plan is Pro or Max**: Claude Code is still signed in under a Team or Enterprise organization from an earlier login, so it checks that organization's Remote Control policy. Run `/status` to see which plan and organization your sign-in uses. Run `claude auth logout` then `claude auth login` to sign in again under your current plan. * **The organization policy didn't load on this machine**: run `claude doctor` and read the `Organization policy` line. If the line shows the policy isn't loaded, that is what's keeping Remote Control off. Before v2.1.261, `claude doctor` didn't print this line. +* **The message doesn't say to contact your organization admin**: your organization has a HIPAA configuration that is incompatible with Remote Control, and `/status` lists `HIPAA` in its `Compliance` row. In this state the admin panel's Remote Control toggle is grayed out, so an Owner can't change it there. Contact Anthropic support to discuss options. Before v2.1.267, this case showed "Remote Control isn't available for your organization due to its compliance policy" instead. * **Otherwise, an Owner hasn't enabled it for your organization**: Remote Control is off by default on Team and Enterprise plans. An Owner can enable it at [claude.ai/admin-settings/claude-code](https://claude.ai/admin-settings/claude-code) by turning on the **Remote Control** toggle. This toggle is a server-side organization setting. -### "Remote Control isn't available for your organization due to its compliance policy" - -Your organization has a data retention or compliance configuration that is incompatible with Remote Control; the parenthetical at the end of the message names it. In this state the admin panel's Remote Control toggle is grayed out, so an Owner can't change it there. Contact Anthropic support to discuss options. - ### "Remote credentials fetch failed" Claude Code could not obtain a short-lived credential from the Anthropic API to establish the connection. Re-run with `--verbose` to see the full error: diff --git a/content/en/docs/claude-code/sandboxing.md b/content/en/docs/claude-code/sandboxing.md index 5ae27bfa1..4571f828c 100644 --- a/content/en/docs/claude-code/sandboxing.md +++ b/content/en/docs/claude-code/sandboxing.md @@ -667,6 +667,9 @@ Some commands fail inside the sandbox even though they work outside it. The fixe After the failure, Claude may [offer to rerun the command outside the sandbox](#the-unsandboxed-retry-escape-hatch); approve that retry, or run the git command yourself in another terminal. If you've set `allowUnsandboxedCommands` to `false`, Claude can't offer the retry, so run the command yourself. If the same git command fails often, add it to [`excludedCommands`](/docs/en/settings-reference#sandbox-excludedcommands). * **Bubblewrap fails to start inside a container**: in an unprivileged container, bubblewrap can't mount a fresh `/proc` filesystem, so sandboxed commands fail with a `bwrap` error such as `Can't mount proc on /newroot/proc: Operation not permitted`. Set [`enableWeakerNestedSandbox`](/docs/en/settings-reference#sandbox-enableweakernestedsandbox) to `true` so the inner sandbox bind-mounts the container's existing `/proc` instead. Only use this setting when the outer container already provides the isolation boundary you need, since it exposes process information to sandboxed commands that a fresh `/proc` mount would hide. +* **0-byte read-only files appear at `.claude` settings paths, and "Yes, and don't ask again" doesn't save**: on Linux and WSL2, the sandbox holds a write denial on a file that doesn't exist yet by creating a 0-byte read-only placeholder there while a sandboxed command runs. The sandbox removes the placeholder afterward. If a session is killed before that cleanup runs, for example by SIGKILL, the placeholders stay behind. Later sessions bind them read-only again on every start, so a settings write such as saving a permission choice fails where one sits. + + Run `claude doctor` to list the leftover placeholder files. The [`Stale sandbox mask files left by a killed session`](/docs/en/errors#stale-sandbox-mask-files-left-by-a-killed-session) warning names up to three of them and counts the rest. Delete each file with `rm` while no other Claude Code session is running in that project. Before v2.1.257, Claude Code left the same placeholders behind without flagging them. * **`--dangerously-skip-permissions` fails as root**: this flag is blocked when running as root or via sudo on Linux and macOS, because root access combined with no permission prompts can modify any file or service on the system. The check is skipped automatically inside a recognized sandbox. To run autonomously in a container, use the [dev container](/docs/en/devcontainer) configuration, which runs Claude Code as a non-root user. ## Limitations diff --git a/content/en/docs/claude-code/security.md b/content/en/docs/claude-code/security.md index 8ca6b7628..cca23ab77 100644 --- a/content/en/docs/claude-code/security.md +++ b/content/en/docs/claude-code/security.md @@ -46,7 +46,7 @@ Prompt injection is a technique where an attacker attempts to override or manipu * **Permission system**: In Manual mode, sensitive operations require explicit approval * **Context-aware analysis**: Detects potentially harmful instructions by analyzing the full request * **Input sanitization**: Prevents command injection by processing user inputs -* **Network command approval**: Commands that fetch content from the web such as `curl` and `wget` are not auto-approved by default. In Manual mode they prompt like any other non-read-only Bash command, so you can still approve once or add an explicit allow rule like `Bash(curl *)`. To block them entirely, add them to [`permissions.deny`](/docs/en/permissions#tool-specific-permission-rules) +* **Network command approval**: Commands that fetch content from the web such as `curl` and `wget` are not auto-approved by default. In Manual mode they prompt like any other non-read-only Bash command, so you can still approve once or add an explicit allow rule like `Bash(curl *)`. To stop Claude from running them, add them to [`permissions.deny`](/docs/en/permissions#tool-specific-permission-rules). A deny rule matches the command [as written](/docs/en/permissions#bash-rule-limits); for network enforcement that doesn't depend on the command text, see [sandbox network isolation](/docs/en/sandboxing#network-isolation) ### Privacy safeguards diff --git a/content/en/docs/claude-code/self-hosted-environments-configuration.md b/content/en/docs/claude-code/self-hosted-environments-configuration.md index 66b2c3868..0d834cdb5 100644 --- a/content/en/docs/claude-code/self-hosted-environments-configuration.md +++ b/content/en/docs/claude-code/self-hosted-environments-configuration.md @@ -130,12 +130,12 @@ The hook fires on every session end where a child process was spawned, whatever `CLAUDE_RUNNER_EXIT_REASON` takes one of four values: -* `completed`: a clean exit, including a session archived or deleted while the child was still connected. -* `failed`: a child crash or a setup failure after spawn. -* `interrupted`: an idle release, startup timeout, server deassign, drain, or watchdog kill. -* `abandoned`: reserved for sessions another runner claimed; the hook doesn't currently fire in that case. +* `completed`: the session ended cleanly. The Claude Code process exited normally, or the session was archived or deleted while it was still running. +* `failed`: the Claude Code process crashed, or setup failed after it started. +* `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. +* `abandoned`: reserved for a session another runner claimed. The hook doesn't currently fire in that case. -The [session lifecycle counter semantics](/docs/en/self-hosted-environments-reference#session-lifecycle-counter-semantics) classify an idle release, a startup timeout, and a server deassign as `completed` instead: those are clean handoffs from the session's perspective even though this hook reports them as `interrupted`. +The [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. The 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: @@ -169,7 +169,9 @@ A released session can resume on another runner. On a runner on v2.1.236 or late * **Idle after a turn, or timed out at startup**: the runner stops the child and runs this hook to completion. Only then does it release the session. A user message sent while the hook runs can't resume the session on another runner before the hook finishes. * **Waiting for the user to answer a prompt, such as a permission prompt**: the runner releases the session first, then runs this hook. A user message sent while the hook runs can resume the session on another runner before the hook finishes. -A release at the [`--retire-at`](/docs/en/self-hosted-environments-reference#runner-cli-flags) time follows the same two paths. During a `SIGTERM` drain, the runner holds the session lease until the hook finishes; see [Shutdown timing](/docs/en/self-hosted-environments-deploy#shutdown-timing). Before v2.1.236, the runner released the session first and then ran this hook on both paths. +This applies whenever the runner releases a session: at the idle timeout, at the [`--retire-at`](/docs/en/self-hosted-environments-reference#runner-cli-flags) time, and, on a runner on v2.1.260 or later, at a session's [`--kill-session-after-min`](/docs/en/self-hosted-environments-reference#runner-cli-flags) limit. A session whose turn has ended and that holds only background tasks counts as idle here. Before v2.1.236, the runner released the session first and then ran this hook in both cases. + +During a `SIGTERM` drain, the runner holds the session lease until the hook finishes; see [Shutdown timing](/docs/en/self-hosted-environments-deploy#shutdown-timing). ### command diff --git a/content/en/docs/claude-code/self-hosted-environments-deploy.md b/content/en/docs/claude-code/self-hosted-environments-deploy.md index 13c08c3a8..0538959d0 100644 --- a/content/en/docs/claude-code/self-hosted-environments-deploy.md +++ b/content/en/docs/claude-code/self-hosted-environments-deploy.md @@ -117,6 +117,8 @@ Start the runner with `--configure-git`, or set `SELF_HOSTED_RUNNER_CONFIGURE_GI * `user.name = Claude` and `user.email = noreply@anthropic.com`, matching Anthropic-hosted sessions * 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. +* `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. +* `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. Commit signing requires git 2.34 or newer; the runner checks at startup and exits with an error if your git is older. This flag doesn't configure push credentials, which you still provide in the image. @@ -160,6 +162,8 @@ Start the runner with `--use-anthropic-git-proxy`, or set `CLAUDE_RUNNER_USE_GIT The proxy requires `--capacity 1` because the proxy URL is per-session, and git 2.32 or newer because older git ignores the configuration mechanism the proxy uses to isolate sessions from each other. The runner refuses to start if either requirement is unmet. Because the proxy fetches from Anthropic's side, your git host must be reachable from Anthropic infrastructure, the same requirement Anthropic-hosted sessions have; for a git host that's only routable inside your network, use a [`checkout` lifecycle hook](/docs/en/self-hosted-environments-configuration#checkout) instead. Each runner process handles one session at a time, so run more replicas for parallelism. When the proxy is enabled, `--git-host-rewrite` and `--git-ssh-rewrite` have no effect: the proxy URL points at `api.anthropic.com`, not your git host. +The 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. 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. + ### Rewrite git URLs for private networks Repository URLs arrive from the control plane as HTTPS, with the hostname of your git host; for GitHub Enterprise, that's the hostname you configured for the [GitHub Enterprise integration](/docs/en/github-enterprise-server) in Claude Code admin settings on claude.ai. Two repeatable flags rewrite those URLs before clone: @@ -342,7 +346,7 @@ Set [`--defer-shutdown-max-min `](/docs/en/self-hosted-environments-reference In the first two stages that follow the signal, the runner releases sessions, and a released session resumes on a fresh runner when its user sends their next message. Counting from the first signal, the runner moves through three stages: -* **For the first `n` minutes**: the runner serves its sessions normally and keeps enforcing `--startup-timeout-min` and `--kill-session-after-min`. If you also set [`--release-idle-session-min`](/docs/en/self-hosted-environments-reference#runner-cli-flags), the runner releases any session whose user has been idle that long; without it, the runner releases no session early, apart from a startup timeout. +* **For the first `n` minutes**: the runner serves its sessions normally and keeps enforcing `--startup-timeout-min` and `--kill-session-after-min`. If you also set [`--release-idle-session-min`](/docs/en/self-hosted-environments-reference#runner-cli-flags), the runner releases any session whose user has been idle that long; without it, idle sessions stay on the runner. * **When the `n` minutes run out**: the runner releases every session it still holds, idle or not. The runner waits for a mid-turn session's turn to end, and up to 60 seconds more for a turn's background tasks, before releasing that session. * **When the post-release grace runs out**: the runner drains whatever sessions it still holds, and the control plane requeues each drained session to another runner right away. The post-release grace starts when the `n` minutes run out and is 75 seconds at defaults. If you set `--drain-wait-sec` above 60 seconds, the post-release grace is `--drain-wait-sec` plus 15 seconds instead. @@ -410,7 +414,9 @@ The following are the limitations in this release, with workarounds where one ex ### Connector traffic leaves your network -Anthropic calls connector tools, such as GitHub, Slack, Linear, and the other claude.ai connectors, from its own infrastructure rather than from your runner, so when Claude uses a connector in a self-hosted session, that traffic goes through `api.anthropic.com` rather than originating inside your network boundary. To keep a connector out of self-hosted sessions, filter it like any other MCP server with the [`allowedMcpServers` and `deniedMcpServers` policy settings](/docs/en/managed-mcp#policy-based-control-with-allowlists-and-denylists). Claude Code applies these settings to the connectors Anthropic delivers as well as to the servers you configure, so if you deploy an allowlist for other servers, Claude Code blocks delivered connectors too. To keep connectors available alongside a URL-based allowlist, add entries that match the Anthropic proxy paths for delivered connectors: +Anthropic calls connector tools from its own infrastructure rather than from your runner. Connector tools are the claude.ai connectors, such as GitHub, Slack, and Linear. When Claude uses a connector in a self-hosted session, that traffic goes through `api.anthropic.com` rather than originating inside your network boundary. + +To keep a connector out of self-hosted sessions, filter it with the [`allowedMcpServers` and `deniedMcpServers` policy settings](/docs/en/managed-mcp#policy-based-control-with-allowlists-and-denylists). Claude Code applies these settings to the connectors Anthropic delivers as well as to the servers you seed from the runner host and the servers users add, so if you deploy an allowlist for other servers, Claude Code blocks delivered connectors too. To keep connectors available alongside a URL-based allowlist, add entries that match the Anthropic proxy paths for delivered connectors: * `https://api.anthropic.com/v2/ccr-sessions/*` * `https://api.anthropic.com/v1/code/sessions/*` @@ -422,11 +428,19 @@ If tool traffic must stay inside your network, run the equivalent tools as local A session holding a background task that never finishes doesn't count as idle, so `--release-idle-session-min` won't release that session's slot. A session that's waiting on an approval requested from inside a running tool call also doesn't count as idle. Always set `--kill-session-after-min` alongside it as a hard backstop so no session can hold a slot indefinitely. -`--kill-session-after-min` is a backstop for runaway sessions. The runner terminates any session that reaches the limit, even one someone is still using, so set the flag well above your longest expected session, such as `--kill-session-after-min 480` for 8 hours. To free slots from conversations that go idle, use `--release-idle-session-min` instead. +`--kill-session-after-min` is a backstop for runaway sessions. On a runner on v2.1.260 or later, a session that reaches the limit isn't terminated outright. The runner gives it a grace window, 15 minutes by default, which you can change with [`SELF_HOSTED_RUNNER_MAX_LIFETIME_GRACE_MS`](/docs/en/self-hosted-environments-reference#environment-variable-only-settings): + +* If the session is waiting on its user, or its turn has ended and it holds only background tasks, the runner releases it right away. The session resumes when its user sends their next message. +* If a turn is still running, the runner waits for the turn to finish, or for the session to next wait on its user, and then releases it. +* If the session is still on the runner when the grace window ends, the runner terminates it, and any running turn's work is lost. A turn waiting on an approval requested from inside a running tool call is one way a session outlasts the window. + +A released session resumes from a fresh clone, so work it hadn't pushed is gone either way; see [Resumed sessions lose unpushed work](#additional-limitations). Before v2.1.260, the runner terminated every session at the limit, after waiting at most the grace window for a running turn to finish. + +Set the flag above your longest expected session, such as `--kill-session-after-min 480` for 8 hours. To free slots from conversations that go idle, use `--release-idle-session-min` instead. ### Additional limitations -* **Resumed sessions lose unpushed work**: when a session is released, on idle timeout or on a runner restart, and the user sends another message, the session resumes on a fresh runner that clones the repository again from its starting branch, so work the session hadn't pushed is gone. Set [`--push-outcome-on-release`](/docs/en/self-hosted-environments-reference#runner-cli-flags) to have the runner make a best-effort push of the session's outcome branches before it releases, so the resumed session starts from those commits instead; this preserves committed work, not a dirty working tree. Before enabling it, restrict who can push to `claude/*` refs on the source remote, for example with a branch ruleset: on resume, the runner fetches the previously pushed branch without verifying who pushed it, so anyone with push access to those refs can place content into the resumed workspace. The runner also discards per-session configuration on resume, meaning the session's Claude config directory and any shell state the session wrote; `--push-outcome-on-release` doesn't cover those. +* **Resumed sessions lose unpushed work**: when a session is released or its runner is restarted, and the user sends another message, the session resumes on a fresh runner that clones the repository again from its starting branch, so work the session hadn't pushed is gone. Set [`--push-outcome-on-release`](/docs/en/self-hosted-environments-reference#runner-cli-flags) to have the runner make a best-effort push of the session's outcome branches before it releases, so the resumed session starts from those commits instead; this preserves committed work, not a dirty working tree. Before enabling it, restrict who can push to `claude/*` refs on the source remote, for example with a branch ruleset: on resume, the runner fetches the previously pushed branch without verifying who pushed it, so anyone with push access to those refs can place content into the resumed workspace. The runner also discards per-session configuration on resume, meaning the session's Claude config directory and any shell state the session wrote; `--push-outcome-on-release` doesn't cover those. * **Private repositories can't be added mid-session**: a repository added to a session after it has started isn't cloned with credentials on a self-hosted runner, so the add fails. Select every repository the session needs when you create it. * **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. diff --git a/content/en/docs/claude-code/self-hosted-environments-reference.md b/content/en/docs/claude-code/self-hosted-environments-reference.md index 4ee3e7cbf..02232c13e 100644 --- a/content/en/docs/claude-code/self-hosted-environments-reference.md +++ b/content/en/docs/claude-code/self-hosted-environments-reference.md @@ -24,7 +24,7 @@ Most flags have a corresponding environment variable. When both are set, the fla | `--base-dir ` | `SELF_HOSTED_RUNNER_BASE_DIR` | `/workspace`; none on Windows | Directory for repository checkouts and per-session working directories. The runner needs write access to this path or its parent. The runner creates the directory at startup and exits with `cannot create or write to base directory` when it can't create or write to it. Before v2.1.225, the runner created the directory when the first session started, so an unusable path failed sessions rather than startup. On Windows, which isn't a supported runner host, there is no default: the runner exits at startup unless you pass the flag or set the variable. Use the same value on every runner in an environment. See [Keep the base directory and capacity identical across runners](/docs/en/self-hosted-environments-deploy#keep-the-base-directory-and-capacity-identical-across-runners). | | `--capacity ` | none | `1` | Maximum concurrent sessions this runner handles. All sessions belong to the same locked [owner](/docs/en/self-hosted-environments#key-concepts). Use the same value on every runner in an environment; see [Keep the base directory and capacity identical across runners](/docs/en/self-hosted-environments-deploy#keep-the-base-directory-and-capacity-identical-across-runners). | | `--client-label

-One team's shared settings, committed to the repository so everyone who clones it gets the same permissions, hooks, telemetry, and plugin marketplace. Save a file like this at `.claude/settings.json` at the top of the repository. Three things to know before you commit one: +One team's shared settings, committed to the repository so everyone who clones it gets the same permissions, hooks, telemetry, and plugin marketplace. Save a file like this at `.claude/settings.json` at the top of the repository. What to know before you commit one: * **Cloud sessions read it too.** A [cloud session](/docs/en/settings#settings-in-cloud-sessions) on Claude Code on the web starts from a clone of the repository, so the committed file applies there as well. * **Allow rules wait for trust.** Allow rules and `extraKnownMarketplaces` entries take effect after each person [trusts this folder itself](/docs/en/permissions#project-allow-rules-and-workspace-trust), not only a parent folder; deny and ask rules apply in every session, trusted or not. * **The hook is a script in the repo.** This file's hook runs `.claude/hooks/block-rm.sh`; [How a hook resolves](/docs/en/hooks#how-a-hook-resolves) walks through writing it. +* **Rules match the command and path as written.** `Bash(git push *)` doesn't match [`git -C . push`](/docs/en/permissions#bash-rule-limits). `Read(./.env)` on its own stops the file tools and commands that name the file, such as `cat .env`, but not [`grep -r` run over the directory](/docs/en/permissions#read-and-edit); the `sandbox` block in this file closes that gap, because the sandbox [adds your `Read` deny paths](/docs/en/settings-reference#sandbox-filesystem-denyread) to what every sandboxed command can't read. @@ -176,11 +177,11 @@ One team's shared settings, committed to the repository so everyone who clones i "allow": [ "Bash(npm run *)" ], - // Always confirm before pushing + // Confirm before git push commands "ask": [ "Bash(git push *)" ], - // Never read env files or the secrets folder + // Deny reads of env files and the secrets folder by the file tools and file-reading commands "deny": [ "Read(./.env)", "Read(./.env.*)", @@ -251,7 +252,7 @@ A `managed-settings.json` file that shows the shape of the managed keys, with on * `forceLoginMethod` and `forceLoginOrgUUID` pin the login method and organization * `availableModels` and `enforceAvailableModels` restrict which models sessions can use -* `permissions.deny` blocks two file reads and `curl`, and `disableBypassPermissionsMode` removes the bypass permission mode +* `permissions.deny` denies two file reads and `curl` commands [as Claude writes them](/docs/en/permissions#bash-rule-limits), and `disableBypassPermissionsMode` removes the bypass permission mode * [`allowManagedPermissionRulesOnly`](/docs/en/settings-reference#allowmanagedpermissionrulesonly) and [`allowManagedMcpServersOnly`](/docs/en/settings-reference#allowmanagedmcpserversonly) make the managed permission and MCP allowlists the only ones that apply * `allowedMcpServers` pins the MCP server by URL * `strictKnownMarketplaces` allows one plugin marketplace @@ -336,7 +337,7 @@ Administrators deploy a file like this as `managed-settings.json`, or the same J ], "enforceAvailableModels": true, "permissions": { - // Block curl, the project's .env file, and its secrets folder on every machine + // Deny curl commands and reads of the project's .env file and secrets folder on every machine "deny": [ "Bash(curl *)", "Read(./.env)", diff --git a/content/en/docs/claude-code/settings-reference.md b/content/en/docs/claude-code/settings-reference.md index 0f5985c52..0d95fe6e9 100644 --- a/content/en/docs/claude-code/settings-reference.md +++ b/content/en/docs/claude-code/settings-reference.md @@ -687,12 +687,13 @@ scope: "Which settings files can set the key: user (~/.claude/settings.json), pr | [`language`](#language) | Have Claude respond in a language other than English | Model and responses | Any file | | [`managedMcpServers`](#managedmcpservers) | Provide remote [MCP servers](/docs/en/managed-mcp#provide-servers-through-managed-settings) to every user alongside the ones they add | MCP | Managed | | [`managedSourcesBehavior`](#managedsourcesbehavior) | Compose every [managed source](/docs/en/managed-settings#how-claude-code-combines-managed-sources) you deploy instead of using the highest-priority one alone | Enterprise and managed settings | Managed | +| [`maxEffortLevel`](#maxeffortlevel) | Cap the [effort level](/docs/en/model-config#adjust-effort-level) for every model or per model, on every provider | Model and responses | Any file | | [`minimumVersion`](#minimumversion) | Keep [auto-updates](/docs/en/setup#pin-a-minimum-version) from installing anything below a version | Updates and versioning | Any file | | [`model`](#model) | Change the [model](/docs/en/model-config#set-a-default-model-for-new-sessions) Claude Code starts with | Model and responses | Any file | | [`modelOverrides`](#modeloverrides) | [Map model IDs](/docs/en/model-config#override-model-ids-per-version) to your provider's IDs, such as Bedrock ARNs | Model and responses | Any file | | [`modelPicker`](#modelpicker) | Choose which models the [`/model` picker](/docs/en/model-config#available-models) lists, in your own order and with your own labels | Model and responses | User or managed | | [`modelPricing`](#modelpricing) | Report spend at your organization's contracted rates instead of list price | Model and responses | Managed | -| [`modelSettings`](#modelsettings) | Keep a saved [effort level](/docs/en/model-config#adjust-effort-level) per model, which Claude Code writes when you run `/effort` | Model and responses | Any file | +| [`modelSettings`](#modelsettings) | Keep a saved [effort level](/docs/en/model-config#adjust-effort-level) per model, or cap one model's effort | Model and responses | Any file | | [`otelHeadersHelper`](#otelheadershelper) | Generate rotating [OpenTelemetry](/docs/en/monitoring-usage#dynamic-headers) headers with your own command | Authentication and providers | Any file | | [`outputStyle`](#outputstyle) | Change Claude's role, tone, and output format with an [output style](/docs/en/output-styles) | Model and responses | Any file | | [`parentSettingsBehavior`](#parentsettingsbehavior) | Apply or drop restrictions an [SDK or IDE host](/docs/en/managed-settings#let-an-embedding-host-add-policy) passes when you deploy [managed settings](/docs/en/managed-settings) | Enterprise and managed settings | Managed | @@ -824,7 +825,7 @@ Choose which models Claude Code uses and how it responds. For how these settings Pick which model answers when Claude calls the server-side [advisor tool](/docs/en/advisor). Unset it to turn the advisor off. The advisor must be at least as capable as your main model; when it isn't, Claude Code sends requests without the advisor. See [Choose an advisor model](/docs/en/advisor#choose-an-advisor-model). -You don't usually edit this key by hand. Run `/advisor` to open a picker that shows the current choice, the models that can advise, and **No advisor**. Claude Code saves your pick to this key in `~/.claude/settings.json`. In a session attached to a remote worker, the pick applies to that session only. +You don't usually edit this key by hand. Run `/advisor` to open a picker that shows the current choice, the models that can advise, and **No advisor**. Claude Code saves your pick to this key in `~/.claude/settings.json`. If you pick from a [Remote Control](/docs/en/remote-control) client or in a session attached to a remote worker, the pick applies to that session only and doesn't change this key. If your account requires the [usage-credits consent](/docs/en/advisor#fable-advisor-and-usage-credits), accept it first by running `/model fable`. Until you do, picking Fable in `/advisor` saves nothing and Claude Code tells you to run `/model fable` first. @@ -839,7 +840,7 @@ If your account requires the [usage-credits consent](/docs/en/advisor#fable-advi } ``` -The key has no effect on Amazon Bedrock, Google Cloud's Agent Platform, or Microsoft Foundry. `"fable"` requires [Fable access](/docs/en/advisor#choose-an-advisor-model). +The key has no effect on providers where the advisor [isn't available](/docs/en/advisor#requirements), such as Amazon Bedrock and Claude Platform on AWS. `"fable"` requires [Fable access](/docs/en/advisor#choose-an-advisor-model). ### `alwaysThinkingEnabled` @@ -998,6 +999,30 @@ Have Claude respond in a language other than English by default. There is no fix } ``` +### `maxEffortLevel` + +Cap the [effort level](/docs/en/model-config#adjust-effort-level) a session can use, leaving lower levels available. Any higher level runs at the cap instead, including one from `/effort`, the `/model` picker, `--effort`, [`CLAUDE_CODE_EFFORT_LEVEL`](/docs/en/env-vars), or the model's own default. Claude Code applies the cap itself before each request, so it holds on every provider, including Amazon Bedrock, Google Cloud's Agent Platform, and Microsoft Foundry. Requires Claude Code v2.1.267 or later. + +* **Scope**: [`Any file`](#scopes). Deploy it in managed settings to enforce it for an organization. When several scopes set a cap, the lowest applies, so a cap set in one scope can't be raised from another +* **Type**: string, one of `"low"`, `"medium"`, `"high"`, `"xhigh"`, or `"max"`. A `"max"` value sets no cap +* **Default**: unset, so no cap applies +* **Per-model caps**: add `maxEffortLevel` to a model's [`modelSettings`](#modelsettings) entry. That entry replaces this key for the model only within the settings source that sets both, such as your user settings or one [managed source](/docs/en/managed-settings#how-claude-code-combines-managed-sources). Set `"max"` there to exempt the model from that source's cap; Claude Code still applies caps from other sources + +This example caps every model at `medium` and exempts Sonnet 4.6: + +```json settings.json theme={null} +{ + "maxEffortLevel": "medium", + "modelSettings": { + "claude-sonnet-4-6": { + "maxEffortLevel": "max" + } + } +} +``` + +When your organization also sets an [effort limit](/docs/en/model-config#organization-effort-limits) for a model, the lower of the two caps applies. + ### `model` Set the model every new session uses, so you don't have to pick one with `/model` each time. Setting it here doesn't stop you from switching mid-session. If your admin set an [organization default model](/docs/en/model-config#organization-default-model) to override user selection, you get that model even when you set this key in user, project, or local settings. @@ -1138,10 +1163,12 @@ Save an [effort level](/docs/en/model-config#adjust-effort-level) for each model Edit the key by hand to change or remove a level you saved. -A model's entry here takes precedence over [`effortLevel`](#effortlevel) in the same settings file. Across files, Claude Code resolves each model separately: the highest-precedence [settings file](/docs/en/settings#settings-precedence) that sets either that model's entry or `effortLevel` decides, so an `effortLevel` in managed settings outranks a level you saved in user settings. [Adjust effort level](/docs/en/model-config#adjust-effort-level) lists what else can override a saved level, such as `--effort` at launch. +A model's `effortLevel` here takes precedence over the top-level [`effortLevel`](#effortlevel) in the same settings file. Across files, Claude Code resolves each model separately: the highest-precedence [settings file](/docs/en/settings#settings-precedence) that sets either an `effortLevel` for that model or the top-level `effortLevel` decides, so an `effortLevel` in managed settings outranks a level you saved in user settings. [Adjust effort level](/docs/en/model-config#adjust-effort-level) lists what else can override a saved level, such as `--effort` at launch. + +To cap one model's effort rather than set its level, add a [`maxEffortLevel`](#maxeffortlevel) field to that model's entry. The field requires Claude Code v2.1.267 or later. * **Scope**: [`Any file`](#scopes) -* **Type**: object mapping a model name to an object with an `effortLevel` field, one of `"low"`, `"medium"`, `"high"`, or `"xhigh"` +* **Type**: object mapping a model name to an object with an `effortLevel` field, one of `"low"`, `"medium"`, `"high"`, or `"xhigh"`, a [`maxEffortLevel`](#maxeffortlevel) field, or both * **Default**: unset Claude Code writes each entry under the model's canonical name, such as `claude-opus-5`, and matches that model's alias, date-suffixed, `[1m]`, and recognized provider-specific IDs to the same entry. @@ -1162,9 +1189,9 @@ Run `/effort auto` to clear your saved level for the model you're using. Claude ### `outputStyle` -Select an [output style](/docs/en/output-styles) by name. An output style is a saved set of instructions that Claude Code adds to the system prompt to change Claude's role, tone, and output format, such as the built-in Explanatory and Learning styles or one you wrote yourself. +Select an [output style](/docs/en/output-styles) by name. An output style is a saved set of instructions that changes Claude's role, tone, and output format, such as the built-in Explanatory and Learning styles or one you wrote yourself. -If you change this key during a session, Claude uses the new style starting with your next message. That message rebuilds the [prompt cache](/docs/en/prompt-caching#changing-output-style) once, because the style is part of the system prompt. Before v2.1.251, the edit applied only after you ran `/clear` or started a new session. +If you change this key during a session, Claude uses the new style starting with your next message. For what that message costs in prompt caching, see [Changing output style](/docs/en/prompt-caching#changing-output-style). Before v2.1.251, the edit applied only after you ran `/clear` or started a new session. * **Scope**: [`Any file`](#scopes) * **Type**: string, the name of a [built-in](/docs/en/output-styles#built-in-output-styles) or [custom](/docs/en/output-styles#create-a-custom-output-style) output style @@ -1255,15 +1282,15 @@ Choose what happens when a [safety classifier flags a request](/docs/en/model-co } ``` -See [Ask before switching](/docs/en/model-config#ask-before-switching). Requires Claude Code v2.1.170 or later. +See [Ask before switching](/docs/en/model-config#ask-before-switching). ### `ultracode` -Start sessions with [ultracode](/docs/en/workflows#let-claude-decide-with-ultracode) on. With it on, Claude plans a workflow for each substantive task instead of waiting for you to ask. Claude plans workflows only when [dynamic workflows](/docs/en/workflows) are enabled for you and your model supports `xhigh` effort. Either way, `ultracode: true` runs the session at `xhigh` effort. Claude Code reads this key but never writes it: `/effort ultracode` turns ultracode on for the current session only. +Start sessions with [ultracode](/docs/en/workflows#let-claude-decide-with-ultracode) on. With it on, Claude plans a workflow for each substantive task instead of waiting for you to ask. Claude plans workflows only when [dynamic workflows](/docs/en/workflows) are enabled for you, your model supports `xhigh` effort, and no [effort cap](/docs/en/model-config#organization-effort-limits) below `xhigh` applies. Either way, `ultracode: true` runs the session at `xhigh` effort, or at the cap when an effort cap is lower. Claude Code reads this key but never writes it: `/effort ultracode` turns ultracode on for the current session only. * **Scope**: [`Any file`](#scopes) * **Type**: Boolean - * `true`: sessions start at `xhigh` effort, with ultracode on when dynamic workflows are enabled for you and your model supports `xhigh` + * `true`: sessions start at `xhigh` effort, with ultracode on when dynamic workflows are enabled for you, your model supports `xhigh`, and no effort cap is below `xhigh` * `false`: sessions start with ultracode off * **Default**: unset, so ultracode is off * **Per-session overrides**: `/effort ultracode` turns ultracode on for one session without this key. So does `--effort ultracode`, which requires Claude Code v2.1.203 or later @@ -1274,7 +1301,7 @@ Start sessions with [ultracode](/docs/en/workflows#let-claude-decide-with-ultrac } ``` -Ultracode runs the session at `xhigh` effort and takes precedence over `effortLevel` and [`modelSettings`](#modelsettings) entries. An Agent SDK `apply_flag_settings` control request also accepts the key. +Ultracode runs the session at `xhigh` effort and takes precedence over `effortLevel` and [`modelSettings`](#modelsettings) entries. If an [effort cap](/docs/en/model-config#organization-effort-limits) below `xhigh` applies to the model, such as a [`maxEffortLevel`](#maxeffortlevel) setting, the session runs at the cap instead and ultracode stays off. Claude then doesn't plan workflows on its own, and `/effort` doesn't offer `ultracode`. An Agent SDK `apply_flag_settings` control request also accepts the key. ## Permission settings @@ -1451,7 +1478,7 @@ List the tool uses that prompt you for confirmation even in a permission mode th ### `permissions.deny` -List the tool uses Claude Code blocks. Use it for files that hold API keys, secrets, or environment values: Claude Code excludes matching files from file discovery and search results, denies reads of them, and blocks the [Edit and Write tools](/docs/en/permissions#read-and-edit) on the matching paths. Read and Edit deny rules apply to Claude's built-in file tools, to file commands Claude Code recognizes in Bash, such as `cat`, `head`, `tail`, and `sed`, and to the targets of Bash [redirections](/docs/en/permissions#redirections) such as `> file` and `< file`; they don't apply to arbitrary subprocesses, so for OS-level enforcement [enable the sandbox](/docs/en/sandboxing). +List the tool uses Claude Code blocks. Use it for files that hold API keys, secrets, or environment values: Claude Code excludes matching files from file discovery and search results, denies reads of them, and blocks the [Edit and Write tools](/docs/en/permissions#read-and-edit) on the matching paths. Read and Edit deny rules apply to Claude's built-in file tools, to file commands Claude Code recognizes in Bash, such as `cat`, `head`, `tail`, and `sed`, and to the targets of Bash [redirections](/docs/en/permissions#redirections) such as `> file` and `< file`; they don't apply to a command that reads files without naming them, such as `grep -r pattern .`, or to arbitrary subprocesses, so for OS-level enforcement [enable the sandbox](/docs/en/sandboxing). * **Scope**: [`Any file`](#scopes) * **Type**: array of permission rule strings @@ -1474,7 +1501,7 @@ This example denies reads of `.env` files, the `secrets` directory, and a creden } ``` -Tool names accept glob patterns, so `"*"` denies every tool and `"mcp__*"` denies every MCP tool. Claude Code ignores a deny rule for the [`EndConversation`](/docs/en/tools-reference#endconversation-tool-behavior) tool as long as any other tool is still available to Claude. For what a `Bash` deny rule can and can't catch, see [Bash permission limitations](/docs/en/permissions#tool-specific-permission-rules). This key replaces the deprecated `ignorePatterns` configuration. +Tool names accept glob patterns, so `"*"` denies every tool and `"mcp__*"` denies every MCP tool. Claude Code ignores a deny rule for the [`EndConversation`](/docs/en/tools-reference#endconversation-tool-behavior) tool as long as any other tool is still available to Claude. A `Bash` deny rule matches the command as Claude writes it, so `Bash(curl *)` doesn't stop `/usr/bin/curl` or `sh -c 'curl …'`; see [what a Bash rule doesn't match](/docs/en/permissions#bash-rule-limits). This key replaces the deprecated `ignorePatterns` configuration. ### `permissions.additionalDirectories` @@ -2468,6 +2495,8 @@ Block domains for outbound traffic from sandboxed commands, using the same wildc Claude Code merges this list from every settings source the session loads even when `allowManagedDomainsOnly` is set, so a developer can always tighten the deny list. For IPv6 literals, see [IPv6 addresses in domain lists](/docs/en/sandboxing#ipv6-addresses-in-domain-lists). +An entry written with the trailing dot that marks a fully qualified domain name, such as `example.com.`, blocks the same connections as `example.com`. + ### `sandbox.network.strictAllowlist` Deny sandboxed commands access to hosts outside the allowlist instead of prompting for approval. The allowlist is [`allowedDomains`](#sandbox-network-alloweddomains) plus domains from `WebFetch(domain:...)` allow rules, or only the managed settings entries when [`allowManagedDomainsOnly`](#sandbox-network-allowmanageddomainsonly) is set. Requires Claude Code v2.1.219 or later. @@ -2944,7 +2973,7 @@ If the shell you name isn't available, Claude Code uses the other one: `"powersh ### `dialogExpiry` -Set the deadline for dialogs Claude Code [forwards to a remote client](/docs/en/remote-control#limitations), such as a Remote Control or SDK host, for the approval dialog for a [held cross-session message](/docs/en/cross-session-messaging#control-inbound-messages), and for the mid-session [Fable usage-credits consent prompt](/docs/en/model-config#fable-and-usage-credits) in a session that may have nobody at the terminal. When no answer arrives before the deadline, Claude Code cancels the dialog and continues with its no-action default. Requires Claude Code v2.1.224 or later. +Set the deadline for dialogs Claude Code [forwards to a remote client](/docs/en/remote-control#limitations), such as a Remote Control or SDK host, and for the approval dialog for a [held cross-session message](/docs/en/cross-session-messaging#control-inbound-messages). On Claude Code v2.1.236 or later, the same deadline bounds the mid-session [Fable usage-credits consent prompt](/docs/en/model-config#fable-and-usage-credits) in a session that may have nobody at the terminal. When no answer arrives before the deadline, Claude Code cancels the dialog and continues with its no-action default. Requires Claude Code v2.1.224 or later. * **Scope**: [`User or managed`](#scopes) * **Type**: string, one of `"60s"`, `"5m"`, `"10m"`, or `"never"`, which disables the deadline @@ -3183,7 +3212,7 @@ When Claude finishes a plan in [plan mode](/docs/en/permission-modes#review-and- ### `showTurnDuration` -Show or hide the turn duration message after each response, such as "Cooked for 1m 6s". Appears in `/config` as **Show turn duration**. +Show or hide the turn duration message after each response, such as "Cooked for 1m 6s · done 6:05 PM". The clock after "done" shows when the turn finished; [`timeFormat`](#timeformat) and [`timeZone`](#timezone) control its format and zone. Appears in `/config` as **Show turn duration**. * **Scope**: [`Any file`](#scopes). A value in `~/.claude.json` from an older version applies when no settings file sets it. * **Type**: Boolean @@ -3371,7 +3400,9 @@ Claude Code colors code by language in the diffs, code blocks, and file previews ### `terminalProgressBarEnabled` -Some terminals can show a progress indicator on the tab or in the taskbar for the program running in them. While Claude is working, Claude Code reports an in-progress state to the terminal and clears it when the turn ends, so you can see from another tab or window whether Claude is still busy. It does so only in terminals that support the indicator: ConEmu, Ghostty 1.2.0 or later, and iTerm2 3.6.6 or later. Set this key to `false` to stop reporting it. Appears in `/config` as **Terminal progress bar**. +Some terminals can show a progress indicator on the tab or in the taskbar for the program running in them. While Claude is working, Claude Code reports an in-progress state to the terminal, so you can see from another tab or window whether the session is still busy. The indicator stays visible after the turn ends while [background subagents](/docs/en/sub-agents#run-subagents-in-foreground-or-background) or [dynamic workflows](/docs/en/workflows) are still running, and clears once the session is idle. + +Claude Code reports it only in terminals that support the indicator: ConEmu, Ghostty 1.2.0 or later, and iTerm2 3.6.6 or later. Set this key to `false` to stop Claude Code from reporting it. Appears in `/config` as **Terminal progress bar**. * **Scope**: [`Any file`](#scopes). A value in `~/.claude.json` from an older version applies when no settings file sets it. * **Type**: Boolean @@ -3682,7 +3713,7 @@ At session start, Claude Code adds two git-related pieces to Claude's prompt: it ### `prUrlTemplate` -Point the PR links Claude Code renders, in the footer badge and in tool-result summaries, at an internal code-review tool instead of `github.com`. Claude Code substitutes `{host}`, `{owner}`, `{repo}`, `{number}`, and `{url}` from the PR URL. The [GitLab merge request badge](/docs/en/interactive-mode#gitlab-merge-requests) keeps its GitLab URL. +Point the PR links Claude Code renders, in the footer badge and in tool-result summaries, at an internal code-review tool instead of `github.com`. Claude Code substitutes `{host}`, `{owner}`, `{repo}`, `{number}`, and `{url}` from the PR URL. [GitLab merge request](/docs/en/interactive-mode#gitlab-merge-requests) links on both surfaces keep their GitLab URL. * **Scope**: [`Any file`](#scopes) * **Type**: string, a URL template using any of the five placeholders @@ -4028,7 +4059,9 @@ This example lists `legacy-context` to Claude by name only and hides `deploy` fr } ``` -`"name-only"` lists the skill to the model without its description, `"user-invocable-only"` hides it from the model but keeps `/name` typable, and `"off"` hides it from both. Overrides don't apply to plugin skills, which you manage through `/plugin`. +Overrides don't apply to plugin skills, which you manage through `/plugin`. + +In managed settings and files passed with `--settings`, a key on a bundled skill's alias, such as `checkup` for `/doctor`, also applies to the skill; see [how alias keys combine with keys on the skill's own name](/docs/en/skills#override-skill-visibility-from-settings). ### `syncClaudeAiSkills` @@ -5250,9 +5283,13 @@ Restrict which kind of account people can log in with. Set `"claudeai"` to allow Every first-party login path applies the restriction, including the [VS Code extension](/docs/en/vs-code), the Agent SDK, `claude setup-token`, and `/install-github-app`, except the terminal's interactive login screen, reached by `/login` or first-run onboarding, which pre-selects the method without enforcing it. Before v2.1.212, only terminal logins applied it. See [Restrict login to your organization](/docs/en/authentication#restrict-login-to-your-organization) for how each login path, environment credentials, and third-party providers are handled. +When a managed source on the machine sets `"gateway"`, Claude Code doesn't use a leftover login, API key, or `apiKeyHelper` credential. See [Administrator policy requires a Cloud gateway sign-in](/docs/en/errors#administrator-policy-requires-a-cloud-gateway-sign-in) for the message each one produces. If you select a cloud provider through `CLAUDE_CODE_USE_BEDROCK` or a similar environment variable, the session doesn't need the gateway sign-in. Before v2.1.261, Claude Code used a leftover login on these machines. + ### `forceLoginGatewayUrl` -Set the gateway URL the `/login` Cloud gateway screen connects to, so people reach your [cloud gateway](/docs/en/claude-apps-gateway) without typing its address. The screen has no URL field: with this key set, it shows your gateway URL and connects when the person presses Enter; without it, it tells them to contact their IT administrator. When `forceLoginMethod` is unset, this key alone opens the Cloud gateway screen. `forceLoginMethod: "gateway"` also opens it and removes the login-method picker, and a `claudeai` or `console` value there takes precedence over this key. Set both keys so the screen connects instead of showing an error. +Set the gateway URL the `/login` Cloud gateway screen connects to, so people reach your [cloud gateway](/docs/en/claude-apps-gateway) without typing its address. The screen has no URL field: with this key set, it shows your gateway URL and connects when the person presses Enter; without it, it tells them to contact their IT administrator. + +Either this key or `forceLoginMethod: "gateway"` makes the machine gateway-only, so `/login` opens on the Cloud gateway screen with no login-method picker. See [Administrator policy requires a Cloud gateway sign-in](/docs/en/errors#administrator-policy-requires-a-cloud-gateway-sign-in) for what happens to a leftover first-party login or API key. Set both keys so the screen connects instead of showing an error. * **Scope**: [`Managed`](#scopes). Read only from a source on the machine: `managed-settings.json`, the macOS plist or Windows HKLM registry, or a policy helper. Claude Code ignores it in HKCU and server-managed settings. * **Type**: string, a full URL including the scheme @@ -5264,7 +5301,7 @@ Set the gateway URL the `/login` Cloud gateway screen connects to, so people rea } ``` -A value that isn't a valid URL is dropped on its own; the rest of the managed settings file still applies. See [Set the gateway URL](/docs/en/claude-apps-gateway#set-the-gateway-url). +If the value isn't a valid URL, the sign-in screen reports it, and the rest of the managed settings file still applies. See [Set the gateway URL](/docs/en/claude-apps-gateway#set-the-gateway-url). ### `forceLoginOrgUUID` @@ -5604,23 +5641,26 @@ Deliver the key in the highest-priority source you deploy. A machine that never } ``` -Under `"merge"`, Claude Code combines each key by its kind. This table gives the rule for each kind; the restriction allowlist and highest-source-only rows name every key they cover, and the other rows give examples: +Under `"merge"`, Claude Code combines each key by its kind. This table gives the rule for each kind. The restriction allowlist, values-taken-whole, and highest-source-only rows name every key they cover, and the other rows give examples: + +| Kind of key | How Claude Code combines it | Keys | +| :----------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| Lists | Combines entries from every source | [`permissions.allow`](#permissions-allow), [`sandbox.network.allowedDomains`](#sandbox-network-alloweddomains), and other list keys | +| Locks | Applies the strictest value any source sets. When no source sets a strict value, applies a looser value only from the highest source | [`allowManagedPermissionRulesOnly`](#allowmanagedpermissionrulesonly), [`permissions.disableBypassPermissionsMode`](#permissions-disablebypasspermissionsmode), and other boolean or enum locks | +| Restriction allowlists | Takes the list whole from the highest source that sets it, without adding entries from lower sources. When the highest source doesn't set one, takes it whole from the next source down | [`availableModels`](#availablemodels), [`allowedMcpServers`](#allowedmcpservers), [`strictKnownMarketplaces`](#strictknownmarketplaces), [`allowedChannelPlugins`](#allowedchannelplugins), and the [`fallbackModel`](#fallbackmodel) chain | +| Values taken whole | Takes the value whole from the highest source that sets it, without combining entries or fields from lower sources. When the highest source doesn't set it, takes it whole from the next source down | [`sandbox.credentials.awsPairs`](#sandbox-credentials-awspairs), [`sandbox.ripgrep`](#sandbox-ripgrep) | +| Provided MCP servers | Combines the server names from every source. When two sources set the same name, applies the higher source's whole entry | [`managedMcpServers`](#managedmcpservers) | +| Read from the highest-priority source only | Reads the key only from the highest-priority source that carries a policy key, so a lower source's value is ignored even when the highest source sets none | [`apiKeyHelper`](#apikeyhelper), [`awsAuthRefresh`](#awsauthrefresh), [`awsCredentialExport`](#awscredentialexport), [`gcpAuthRefresh`](#gcpauthrefresh), [`otelHeadersHelper`](#otelheadershelper), `proxyAuthHelper`, [`forceLoginOrgUUID`](#forceloginorguuid), [`forceLoginMethod`](#forceloginmethod), [`forceLoginGatewayUrl`](#forcelogingatewayurl), [`parentSettingsBehavior`](#parentsettingsbehavior), [`modelPicker`](#modelpicker), [`policyHelper`](#policyhelper), [`permissions.defaultMode`](#permissions-defaultmode) | +| `env` | [Merges per variable across admin sources](/docs/en/managed-settings#keys-read-from-every-admin-source), under both `"first-wins"` and `"merge"` | [`env`](#env) | +| Every other key | Takes the value from the highest source that sets it | [`cleanupPeriodDays`](#cleanupperioddays), [`model`](#model) | -| Kind of key | How Claude Code combines it | Keys | -| :----------------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| Lists | Combines entries from every source | [`permissions.allow`](#permissions-allow), [`sandbox.network.allowedDomains`](#sandbox-network-alloweddomains), and other list keys | -| Locks | Applies the strictest value any source sets. When no source sets a strict value, applies a looser value only from the highest source | [`allowManagedPermissionRulesOnly`](#allowmanagedpermissionrulesonly), [`permissions.disableBypassPermissionsMode`](#permissions-disablebypasspermissionsmode), and other boolean or enum locks | -| Restriction allowlists | Takes the list whole from the highest source that sets it, without adding entries from lower sources. When the highest source doesn't set one, takes it whole from the next source down | [`availableModels`](#availablemodels), [`allowedMcpServers`](#allowedmcpservers), [`strictKnownMarketplaces`](#strictknownmarketplaces), [`allowedChannelPlugins`](#allowedchannelplugins), and the [`fallbackModel`](#fallbackmodel) chain | -| Provided MCP servers | Combines the server names from every source. When two sources set the same name, applies the higher source's whole entry | [`managedMcpServers`](#managedmcpservers) | -| Read from the highest-priority source only | Reads the key only from the highest-priority source that carries a policy key, so a lower source's value is ignored even when the highest source sets none | [`apiKeyHelper`](#apikeyhelper), [`awsAuthRefresh`](#awsauthrefresh), [`awsCredentialExport`](#awscredentialexport), [`gcpAuthRefresh`](#gcpauthrefresh), [`otelHeadersHelper`](#otelheadershelper), `proxyAuthHelper`, [`forceLoginOrgUUID`](#forceloginorguuid), [`forceLoginMethod`](#forceloginmethod), [`forceLoginGatewayUrl`](#forcelogingatewayurl), [`parentSettingsBehavior`](#parentsettingsbehavior), [`modelPicker`](#modelpicker), [`policyHelper`](#policyhelper), [`permissions.defaultMode`](#permissions-defaultmode) | -| `env` | [Merges per variable across admin sources](/docs/en/managed-settings#keys-read-from-every-admin-source), under both `"first-wins"` and `"merge"` | [`env`](#env) | -| Every other key | Takes the value from the highest source that sets it | [`cleanupPeriodDays`](#cleanupperioddays), [`model`](#model) | +Taking `sandbox.credentials.awsPairs` and `sandbox.ripgrep` whole requires Claude Code v2.1.257 or later. Three of those keys add a condition of their own: * **[`policyHelper`](#policyhelper)**: Claude Code honors it only when the highest source that carries a policy key is an MDM policy or a managed settings file, so under server-managed settings it doesn't apply. * **[`modelOverrides`](#modeloverrides)**: pairs with `availableModels`. Claude Code takes `modelOverrides` from the highest source that sets it, unless a higher source sets `availableModels` without `modelOverrides`. In that case it ignores `modelOverrides` from every source. -* **[`forceLoginGatewayUrl`](#forcelogingatewayurl) and the `"gateway"` value of [`forceLoginMethod`](#forceloginmethod)**: Claude Code honors them only when the highest source is an MDM policy or a managed settings file, so under server-managed settings neither applies. +* **[`forceLoginGatewayUrl`](#forcelogingatewayurl) and the `"gateway"` value of [`forceLoginMethod`](#forceloginmethod)**: Claude Code reads them only from the managed sources on the machine itself and ignores them in server-managed settings. The machine's values apply even when server-managed settings are also present. To confirm which sources combined on a machine, run `/status` and [read the `Setting sources` line](/docs/en/managed-settings#read-the-source-in-/status). @@ -5652,6 +5692,10 @@ Run an executable you deploy that computes managed settings at startup, so you c * **Type**: object with `path`, `timeoutMs`, and `refreshIntervalMs` * **Default**: unset, so no helper runs +When server-managed settings deliver the policy at launch, they take precedence over the helper's source and the helper doesn't run. + +If a later settings fetch reports the server-managed settings removed, Claude Code runs the helper at that point rather than waiting for the next launch. Its output governs the rest of the session, and a run that fails ends the session with the same message as a [failed startup run](#helper-failures). + This example runs the helper with a 5-second timeout and re-runs it every five minutes: ```json managed-settings.json theme={null} @@ -5680,7 +5724,7 @@ Put the settings under a `managedSettings` key. A bare settings object with no ` When the helper emits `managedSettings`, that object becomes the only managed settings source for the run: Claude Code ignores the MDM, file, and HKCU sources, reads the [cross-source keys](/docs/en/managed-settings#keys-read-from-every-admin-source) from the helper's output alone, and never merges [parent settings](/docs/en/managed-settings#parent-settings-from-embedding-hosts). -The startup `forceRemoteSettingsRefresh` check runs before the helper and reads any admin source. A helper that exits 0 with an envelope that omits `managedSettings` contributes no managed settings, and the other sources apply as usual. +The startup `forceRemoteSettingsRefresh` check runs before the helper and reads any admin source. A helper that exits `0` with an envelope that omits `managedSettings` contributes no managed settings, and the other sources apply as usual. #### Helper failures @@ -5696,7 +5740,9 @@ When the startup run fails, Claude Code prints the reason and refuses to start. The refusal is deliberate, so a helper that needs outage resilience should serve from its own cache and exit `0`. -When a background refresh fails, Claude Code keeps the last successful policy in effect. Claude Code runs each refresh under the same `timeoutMs` and failure rules as the startup run. With `--debug`, Claude Code writes the helper's stderr from every run to the [debug log](/docs/en/debug-your-config). +When a background refresh fails, Claude Code keeps the last successful policy in effect, and `/status` shows the failing refresh with its reason until a refresh succeeds. Each refresh runs under the same `timeoutMs` and failure rules as the startup run. + +With `--debug`, Claude Code writes the helper's stderr from every run to the [debug log](/docs/en/debug-your-config). Claude Code reports an invalid `policyHelper` value as a [dropped entry](/docs/en/managed-settings#find-entries-claude-code-dropped) and starts the session on the remaining managed settings without running a helper. Invalid values include a bare path string and a `timeoutMs` below [its minimum](#policyhelper-timeoutms). diff --git a/content/en/docs/claude-code/settings.md b/content/en/docs/claude-code/settings.md index 298ff5ff7..169c9c5ad 100644 --- a/content/en/docs/claude-code/settings.md +++ b/content/en/docs/claude-code/settings.md @@ -581,7 +581,9 @@ claude --settings '{"model": "claude-opus-4-8"}' ### When edits take effect -Claude Code watches your settings files and reloads them when they change, so it applies most edits to the running session without a restart, including edits to `permissions`, `hooks`, and credential helpers such as `apiKeyHelper`. The reload covers user, project, local, and managed settings, and Claude Code runs the [`ConfigChange` hook](/docs/en/hooks#configchange) for each settings-file change it detects, not for managed settings that arrive from MDM or the claude.ai console. Managed settings that arrive through MDM or from the claude.ai console reach a running session on a schedule rather than on save; the [delivery table](/docs/en/managed-settings#choose-a-delivery-mechanism) gives it per source. +Claude Code watches your settings files and reloads them when they change, so it applies most edits to the running session without a restart, including edits to `permissions`, `hooks`, and credential helpers such as `apiKeyHelper`. Claude Code also loads a settings file you create mid-session if its folder existed when the session started. For the project's `.claude/` folder, it loads the file even when you create the folder in the same session. + +The reload covers user, project, local, and managed settings, and Claude Code runs the [`ConfigChange` hook](/docs/en/hooks#configchange) for each settings-file change it detects, not for managed settings that arrive from MDM or the claude.ai console. Managed settings that arrive through MDM or from the claude.ai console reach a running session on a schedule rather than on save; the [delivery table](/docs/en/managed-settings#choose-a-delivery-mechanism) gives it per source. Claude Code reads some keys only once, at session start, so an edit to one of them doesn't reach the running session. Admin-side keys that also wait for a restart, such as `requiredMinimumVersion`, are listed under [where and when a policy applies](/docs/en/managed-settings#where-and-when-a-policy-applies). The ones you're most likely to edit mid-session: @@ -723,7 +725,7 @@ Two things keep a key in `.claude/settings.json` from applying for everyone who ### Exceptions to managed settings precedence -For a few security-sensitive keys, Claude Code honors a restrictive value from a scope that otherwise couldn't override managed settings. Find the key in this table to see which value it honors and from where. +For a few keys whose values restrict a session, Claude Code honors a restrictive value from a scope that otherwise couldn't override managed settings. Find the key in this table to see which value it honors and from where. | Key | Value Claude Code honors | Notes | | :------------------------------------------------------------------------------ | :--------------------------------------------------------------------------------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------- | @@ -734,6 +736,7 @@ For a few security-sensitive keys, Claude Code honors a restrictive value from a | [`crossSessionInbound`](/docs/en/settings-reference#crosssessioninbound) | A stricter value from `.claude/settings.json` or `.claude/settings.local.json`, on the `accept` \< `hold` \< `refuse` ladder | Honored over managed, `--settings`, and user values; a project or local value that isn't stricter is ignored | | [`useAutoModeDuringPlan`](/docs/en/settings-reference#useautomodeduringplan) | `false` from any managed source, `--settings`, `~/.claude/settings.json`, or `.claude/settings.local.json` | Honored even when the winning managed source sets `true`; a `false` in `.claude/settings.json` is ignored | | [`syncClaudeAiSkills`](/docs/en/settings-reference#syncclaudeaiskills) | `false` from any managed source, `--settings`, `~/.claude/settings.json`, or `.claude/settings.local.json` | Honored even when the winning managed source sets `true`; a `false` in `.claude/settings.json` is ignored | +| [`maxEffortLevel`](/docs/en/settings-reference#maxeffortlevel) | A lower cap from any scope, including `--settings` | Honored even when the managed settings Claude Code applies set a higher cap; the lowest cap applies. Requires Claude Code v2.1.267 or later | An app that runs Claude Code inside itself and sets [`CLAUDE_CODE_PROVIDER_MANAGED_BY_HOST`](/docs/en/env-vars) is also an exception. Claude Code takes that app's model configuration over the `model`, `fallbackModel`, and `modelOverrides` keys from every managed source, and over the model-selection variables in a managed `env` block, such as `ANTHROPIC_MODEL` and the `ANTHROPIC_DEFAULT_*_MODEL` family. Claude Code keeps a managed [`availableModels`](/docs/en/settings-reference#availablemodels) allowlist in force unless the app supplies its own. diff --git a/content/en/docs/claude-code/sub-agents.md b/content/en/docs/claude-code/sub-agents.md index f613ec463..59733660a 100644 --- a/content/en/docs/claude-code/sub-agents.md +++ b/content/en/docs/claude-code/sub-agents.md @@ -415,7 +415,9 @@ Subagents inherit the [built-in tools](/docs/en/tools-reference) and MCP tools a * `WaitForMcpServers` * `Workflow` -The second filter applies to subagents running in the background. Apart from `Agent` and `ExitPlanMode`, which follow the first filter's conditions wherever the subagent runs, a background subagent keeps every MCP tool but only these built-in tools: `Read`, `Grep`, `Glob`, `Bash`, `PowerShell`, `Edit`, `Write`, `NotebookEdit`, `WebFetch`, `WebSearch`, `TodoWrite`, `Skill`, `ToolSearch`, `EnterWorktree`, `ExitWorktree`, `Monitor`, `TaskStop`, `SendMessage`, and `Artifact`. Claude Code removes every other built-in tool from a background subagent, whether inherited or listed in the `tools` field, so the same definition can resolve to different tools in the foreground and the background. The removal reports no error unless it leaves the `tools` list [resolving to nothing](/docs/en/errors#agent-would-be-spawned-with-zero-tools). [`ListAgents`](/docs/en/cross-session-messaging) follows these filters like any built-in tool: a foreground subagent inherits it in sessions where cross-session messaging is enabled, and a background subagent doesn't keep it. +The second filter applies to subagents running in the background. Apart from `Agent` and `ExitPlanMode`, which follow the first filter's conditions wherever the subagent runs, a background subagent keeps every MCP tool but only these built-in tools: `Read`, `Grep`, `Glob`, `Bash`, `PowerShell`, `Edit`, `Write`, `NotebookEdit`, `WebFetch`, `WebSearch`, `TodoWrite`, `Skill`, `ToolSearch`, `EnterWorktree`, `ExitWorktree`, `Monitor`, `TaskStop`, `SendMessage`, and `Artifact`. Claude Code removes every other built-in tool from a background subagent, whether inherited or listed in the `tools` field, so the same definition can resolve to different tools in the foreground and the background. The removal reports no error unless it leaves the `tools` list [resolving to nothing](/docs/en/errors#agent-would-be-spawned-with-zero-tools). + +[`ListAgents`](/docs/en/cross-session-messaging) follows these filters like any built-in tool: a foreground subagent inherits it in sessions where cross-session messaging is enabled, and a background subagent doesn't keep it. Teammates in [agent teams](/docs/en/agent-teams) additionally keep the task tools and cron tools: `TaskCreate`, `TaskGet`, `TaskList`, `TaskUpdate`, `CronCreate`, `CronDelete`, and `CronList`. @@ -540,7 +542,14 @@ Managed-settings restrictions apply to every subagent regardless of how it is de #### Permission modes -Set `permissionMode` to choose the permission mode a subagent runs in. Use the modes' config values, so Manual mode is `default`. If you leave it unset, the subagent inherits the main conversation's mode, which starts as [auto mode](/docs/en/permission-modes#eliminate-prompts-with-auto-mode) on Pro, Max, and Team plans unless your settings or your organization change it. Setting it overrides that mode, except in the cases described below. +Set `permissionMode` to choose the permission mode a subagent runs in. Use the modes' config values, so Manual mode is `default`. If you leave it unset, the subagent inherits the main conversation's mode, which starts as [auto mode](/docs/en/permission-modes#eliminate-prompts-with-auto-mode) on Pro, Max, and Team plans unless your settings or your organization change it. + +The main conversation's permission mode decides whether Claude Code uses the value you set: + +* When the main conversation is in `bypassPermissions`, `acceptEdits`, or [auto mode](/docs/en/permission-modes#eliminate-prompts-with-auto-mode), the subagent runs in that same mode and Claude Code ignores the `permissionMode` you set. Under auto mode, the classifier evaluates the subagent's tool calls with the main conversation's block and allow rules. +* When the main conversation is in `default`, `dontAsk`, or `plan` mode, the subagent runs in the permission mode you set, except `bypassPermissions`. A subagent that declares `bypassPermissions` keeps the main conversation's mode instead. The `bypassPermissions` exception requires Claude Code v2.1.267 or later. + +`permissionMode` accepts these values, and `manual` as an alias for `default`: | Mode | Behavior | | :------------------ | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | @@ -548,19 +557,9 @@ Set `permissionMode` to choose the permission mode a subagent runs in. Use the m | `acceptEdits` | Auto-accept file edits and common filesystem commands for paths in the working directory or `additionalDirectories` | | `auto` | [Auto mode](/docs/en/permission-modes#eliminate-prompts-with-auto-mode): a background classifier reviews commands and protected-directory writes | | `dontAsk` | Auto-deny permission prompts. Explicitly allowed tools still work; `AskUserQuestion`, MCP tools marked [`requiresUserInteraction`](/docs/en/mcp#require-approval-for-a-specific-tool), and connector tools [your organization set to `ask`](/docs/en/mcp#organization-controls-on-connector-tools) in sessions where that setting reaches Claude Code are denied even if you've allowed them | -| `bypassPermissions` | Skip permission prompts | +| `bypassPermissions` | [Skip permission prompts](/docs/en/permission-modes#skip-all-checks-with-bypasspermissions-mode). A subagent runs in this mode only when the main conversation does | | `plan` | Plan mode (read-only exploration) | - - Use `bypassPermissions` with caution. It skips permission prompts, allowing the subagent to execute operations without approval, including writes to `.git`, `.config/git`, `.claude`, `.vscode`, `.idea`, `.husky`, `.cargo`, `.devcontainer`, `.yarn`, and `.mvn`. - - Even in this mode, the [actions no mode auto-approves](/docs/en/permission-modes#actions-no-mode-auto-approves) still apply. See [permission modes](/docs/en/permission-modes#skip-all-checks-with-bypasspermissions-mode) for details. - - -If the parent uses `bypassPermissions` or `acceptEdits`, this takes precedence and can't be overridden. If the parent uses [auto mode](/docs/en/permission-modes#eliminate-prompts-with-auto-mode), the subagent inherits auto mode and any `permissionMode` in its frontmatter is ignored: the classifier evaluates the subagent's tool calls with the same block and allow rules as the parent session. - -If bypass mode is disabled by [`permissions.disableBypassPermissionsMode`](/docs/en/permissions#managed-settings), Claude Code ignores `permissionMode: bypassPermissions` in the frontmatter and the subagent runs with the parent session's mode. Before v2.1.223, Claude Code applied the frontmatter mode even with bypass disabled. - #### Preload skills into subagents Use the `skills` field to inject skill content into a subagent's context at startup. This gives the subagent domain knowledge without requiring it to discover and load skills during execution. @@ -833,7 +832,7 @@ claude --agent code-reviewer The subagent's system prompt replaces the default Claude Code system prompt entirely, the same way [`--system-prompt`](/docs/en/cli-reference) does. `CLAUDE.md` files and project memory still load through the normal message flow. The agent name appears as `@` in the startup header so you can confirm it's active. -This works with built-in and custom subagents, and the choice persists when you resume the session: Claude Code restores the agent's system prompt, tool restrictions, and model along with the conversation. If the agent no longer exists when you resume, the session continues with the default tools and system prompt and shows a [warning naming the agent](/docs/en/errors#session-agent-no-longer-available). +This works with built-in and custom subagents, and the choice persists when you resume the session: Claude Code restores the agent's tool restrictions and model along with the conversation. If the agent no longer exists when you resume, the session continues with the default tools and shows a [warning naming the agent](/docs/en/errors#session-agent-no-longer-available). For the system prompt in either case, see [System prompt flags in resumed conversations](/docs/en/cli-reference#system-prompt-flags-in-resumed-conversations). For a plugin-provided subagent, you can pass only the agent name and Claude Code finds it: @@ -875,7 +874,9 @@ For each subagent Claude spawns with the Agent tool, Claude Code picks foregroun For a skill with `context: fork`, Claude Code follows the rules in [Run skills in a subagent](/docs/en/skills#run-skills-in-a-subagent) instead, whether or not fork mode is on. -Background subagents run with a [smaller built-in tool set](#available-tools) than foreground subagents, except for conversation forks, and they surface every permission prompt in your main session. When you answer one of those prompts with a choice that lasts beyond that one tool call, such as a grant that lasts for the rest of the session, Claude Code applies your answer to the whole session, including your main conversation. +Background subagents run with a [smaller built-in tool set](#available-tools) than foreground subagents, except for conversation forks and [resumed](#resume-subagents) foreground subagents. + +Background subagents surface every permission prompt in your main session. When you answer one of those prompts with a choice that lasts beyond that one tool call, such as a grant that lasts for the rest of the session, Claude Code applies your answer to the whole session, including your main conversation. A background subagent can leave a background [Bash or PowerShell command](/docs/en/tools-reference#background-commands) [running past the end of its turn](/docs/en/interactive-mode#how-backgrounding-works). When that command ends, Claude Code sends the subagent a notification. @@ -1067,7 +1068,7 @@ Continue that code review and now analyze the authorization logic [Claude resumes the subagent with full context from previous conversation] ``` -When Claude sends a completed subagent a message with the `SendMessage` tool, the subagent resumes in the background without a new `Agent` invocation. The same applies to a subagent that Claude stopped with the `TaskStop` tool, once its stopped run has exited. +When Claude sends a completed subagent a message with the `SendMessage` tool, the subagent resumes in the background without a new `Agent` invocation. The same applies to a subagent that Claude stopped with the `TaskStop` tool, once its stopped run has exited. The resumed run keeps the [tool set from where the subagent first ran](#run-subagents-in-foreground-or-background) and can keep reading the [prompt cache the original run warmed](/docs/en/prompt-caching#subagents-and-the-cache). A subagent that has the `SendMessage` tool can send that message too. In an interactive session, the resumed agent then reports back to the subagent that resumed it, not to your main conversation. That subagent waits for the result before finishing its own work. When a subagent messages an agent it reports to, such as its own launcher, Claude Code resumes that agent without redirecting its results. diff --git a/content/en/docs/claude-code/tools-reference.md b/content/en/docs/claude-code/tools-reference.md index 3b408e2e5..5c759b533 100644 --- a/content/en/docs/claude-code/tools-reference.md +++ b/content/en/docs/claude-code/tools-reference.md @@ -142,7 +142,8 @@ The Bash tool runs each command in a separate process. ### What persists between commands -* When Claude runs `cd` in the main session, the new working directory carries over to later Bash commands as long as it stays inside the project directory or an [additional working directory](/docs/en/permissions#working-directories) you added with `--add-dir`, `/add-dir`, or `additionalDirectories` in settings. Subagent sessions never carry over working directory changes. +* When Claude runs `cd` in the main session, the new working directory carries over to later Bash commands as long as it stays inside the project directory or an [additional working directory](/docs/en/permissions#working-directories) you added with `--add-dir`, `/add-dir`, or `additionalDirectories` in settings. This includes commands Claude runs in response to your later messages. + * Subagent sessions never carry over working directory changes. * If `cd` lands outside those directories, Claude Code resets to the project directory and appends `Shell cwd was reset to ` to the tool result. * To disable this carry-over so every Bash command starts in the project directory, set `CLAUDE_BASH_MAINTAIN_PROJECT_WORKING_DIR=1`. * Environment variables don't persist. An `export` in one command won't be available in the next. diff --git a/content/en/docs/claude-code/vs-code.md b/content/en/docs/claude-code/vs-code.md index 80086fb86..2bd6a5487 100644 --- a/content/en/docs/claude-code/vs-code.md +++ b/content/en/docs/claude-code/vs-code.md @@ -137,7 +137,10 @@ You can also hold `Shift` while dragging files into the prompt box to add them a Click the **Session history** button at the top of the Claude Code panel to access your conversation history. You can search by keyword or browse by time. Click any conversation to resume it with the full message history. For more on resuming sessions, see [Manage sessions](/docs/en/sessions). -New sessions receive AI-generated titles based on your first message. Hover over a session to reveal rename and archive actions: rename to give it a descriptive title, or archive to move it to the **Archived sessions** group at the bottom of the list. +* **Session titles**: new sessions receive AI-generated titles based on your first message. +* **Rename and archive**: hover over a session to reveal these actions. Rename to give it a descriptive title, or archive to move it to the **Archived sessions** group at the bottom of the list. + +By default, a session with no activity for 14 days moves to **Archived sessions** automatically, unless it is open, unread, or in a [group](#organize-sessions-into-groups). Automatic archiving requires Claude Code v2.1.265 or later. To change the period or turn it off, open the [Archive Inactive Sessions setting](vscode://settings/claudeCode.archiveInactiveSessions) and select a number of days or **Never**. To restore an archived session, expand **Archived sessions** and click **Unarchive session**. Before v2.1.257, the action was **Delete session**, which hid a session with no way to restore it. Sessions you deleted then appear under **Archived sessions** after you upgrade. @@ -170,7 +173,7 @@ If you use [Claude Code on the web](/docs/en/claude-code-on-the-web), you can re ### Check account and usage -Run `/usage` to open the Account & usage dialog. The dialog requires a claude.ai sign-in, so it isn't offered on a [third-party provider](#use-third-party-providers). It shows your signed-in account, your plan, and usage bars for the current session and the week. Each bar shows how long until its limit resets. +Run `/usage` to open the Account & usage dialog. The dialog requires a claude.ai sign-in, so it isn't offered on a [third-party provider](#use-third-party-providers). It shows your signed-in account, your plan, and usage bars for your plan's limits, such as the current session and the week. Each bar shows how long until its limit resets. The dialog also breaks down what is contributing to your plan limits. It flags behaviors that account for 10% or more of recent usage, such as cache misses, long context, and subagent-heavy or highly parallel sessions, each with a tip to reduce it. Attribution tables show how much usage came from each skill, subagent, plugin, and MCP server. Requires Claude Code v2.1.174 or later. @@ -192,6 +195,11 @@ You can drag the Claude panel to reposition it anywhere in VS Code. Grab the pan Use the sidebar for your main Claude session and open additional tabs for side tasks. Claude remembers your preferred location. The Activity Bar sessions list icon is separate from the Claude panel: the sessions list is always visible in the Activity Bar, while the Claude panel icon only appears there when the panel is docked to the left sidebar. +After you run **Developer: Reload Window** or restart VS Code, whether a chat comes back with its conversation depends on where it was open: + +* **Editor tab**: the conversation comes back with its tab. +* **Sidebar**: the conversation comes back if you sent a message or Claude responded in it within the last 10 minutes. If it doesn't come back, resume the conversation from [Session history](#resume-past-conversations). + ### Run multiple conversations Use **Open in New Tab** or **Open in New Window** from the Command Palette to start additional conversations. Each conversation maintains its own history and context, allowing you to work on different tasks in parallel. @@ -370,6 +378,7 @@ VS Code reads `initialPermissionMode` from your user settings and ignores worksp | `useCtrlEnterToSend` | `false` | Use Ctrl/Cmd+Enter instead of Enter to send prompts | | `enableNewConversationShortcut` | `false` | Enable Cmd/Ctrl+N to start a new conversation | | `enableReopenClosedSessionShortcut` | `true` | Use Cmd/Ctrl+Shift+T to reopen the most recently closed Claude session tab. When the last closed tab wasn't a Claude session, the shortcut runs VS Code's normal reopen-closed-editor command instead. | +| `archiveInactiveSessions` | `14` | [Archive a session automatically](#resume-past-conversations) after this many days without activity: `1`, `2`, `7`, or `14`. Set `0` to turn it off. Requires Claude Code v2.1.265 or later | | `hideOnboarding` | `false` | Hide the onboarding checklist (graduation cap icon) | | `focusView` | `false` | Hide tool calls, tool results, and thinking behind expandable rows, leaving your prompts and Claude's responses. Claude's latest to-do list stays visible; this requires Claude Code v2.1.225 or later. You can also toggle Focus view from the command menu. Requires Claude Code v2.1.221 or later | | `respectGitIgnore` | `true` | Exclude .gitignore patterns from file searches | diff --git a/content/en/docs/claude-code/workflows.md b/content/en/docs/claude-code/workflows.md index d23c57f0c..261fe0ab0 100644 --- a/content/en/docs/claude-code/workflows.md +++ b/content/en/docs/claude-code/workflows.md @@ -90,7 +90,7 @@ The progress view shows each phase with its agent counts, token totals, and elap | Key | Action | | :------------- | :-------------------------------------------------------------------------------------------------------------------------- | | `↑` / `↓` | Select a phase or agent | -| `Enter` or `→` | Drill into the selected phase, then into an agent to read its prompt, recent tool calls, and result | +| `Enter` or `→` | Drill into the selected phase, then into an agent's detail. In the detail, `Enter` expands or collapses it | | `Esc` or `←` | Back out one level. In v2.1.203 through v2.1.205, `←` didn't step back out of a phase or agent; use `Esc` on those versions | | `j` / `k` | Scroll within the agent detail when it overflows | | `f` | Filter the agent list in the selected phase by status. Press again to cycle | @@ -99,6 +99,10 @@ The progress view shows each phase with its agent counts, token totals, and elap | `r` | Restart the selected running agent | | `s` | [Save](#save-the-workflow-for-reuse) the run's script as a command | +The agent detail lists the agent's prompt, its recent tool calls, and its result. Each call shows its state, such as still running or failed. When the agent keeps a task list of its own, the detail shows it too, with each task's status. + +Press `Enter` to expand the detail. The prompt and result then show in full, and each listed call shows its input and the start of its result. + ## Have Claude write a workflow You can have Claude write a workflow for your task in two ways: @@ -376,7 +380,11 @@ That last case means a failure in the middle of a fan-out reruns work that alrea You can resume a run within the same Claude Code session. What happens to a running workflow when you leave the session depends on how you leave: * If you [background the session](/docs/en/agent-view#what-carries-over-when-you-background), Claude Code replays the run the same way in the background session and continues it. -* If you exit Claude Code while a workflow is running and [agent view is on](/docs/en/agent-view#from-inside-a-session), the exit dialog offers `Move to background and exit`, which carries the run over the same way. If you choose `Exit and stop tasks` instead, or the option isn't offered, the run stops with the session. Claude Code keeps the run's saved results under that session's directory in `~/.claude/projects/`, so a session you resume with `claude --resume` can replay them when you ask Claude to relaunch the workflow, while a session you start fresh has nothing to replay and starts the workflow over. +* If you exit Claude Code while a workflow is running and [agent view is on](/docs/en/agent-view#from-inside-a-session), the exit dialog offers `Move to background and exit`, which carries the run over the same way. If you choose `Exit and stop tasks` instead, or the option isn't offered, the run stops with the session. Claude Code keeps the run's saved results under that session's directory in `~/.claude/projects/`, so a session you resume with `claude --resume` can replay them when you ask Claude to relaunch the workflow. In a session you start fresh, Claude has no earlier run to relaunch and starts the workflow over as a new run. + +In a [cloud session](/docs/en/claude-code-on-the-web), Claude Code also saves the run's results with the session's conversation history, which survives when the session's VM is reclaimed. When you [reopen such a session](/docs/en/claude-code-on-the-web#environment-expired) and ask Claude to relaunch the workflow, completed agents still return their saved results. + +In local and cloud sessions alike, when Claude relaunches an earlier run and Claude Code can't find that run's saved results at all, the relaunch fails with a `nothing to resume` error instead of starting the run over on its own. Ask Claude to start the workflow over as a new run. ### Cost diff --git a/content/support/10310342-how-do-i-log-out-of-all-active-sessions.md b/content/support/10310342-how-do-i-log-out-of-all-active-sessions.md index 8996d889d..8e1a84441 100644 --- a/content/support/10310342-how-do-i-log-out-of-all-active-sessions.md +++ b/content/support/10310342-how-do-i-log-out-of-all-active-sessions.md @@ -38,7 +38,7 @@ To regain access to your account on any device, you'll need to authenticate agai If you used your Claude account to authenticate into Claude Code, you can manage your authorization tokens by navigating to **[Settings > Claude Code](https://claude.ai/settings/claude-code)**. To remove a token and log out of Claude Code, click the trash can icon. -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1608263923/b4fa7d6f6f08f2adffb4ea63bc58/image+%287%29.png?expires=1788982200&signature=7f8274d3274e11d929ce8e0e48ee5c662fc4b2a8664708136cdbbb832e29df27&req=dSYnHst4nohdWvMW1HO4zVuHihT03mW5AQofdwM8qVfuyMM5FbZ%2BRbzllMMm%0A5s3pPxuUwzY1HJD7NfU%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1608263923/b4fa7d6f6f08f2adffb4ea63bc58/image+%287%29.png?expires=1789020000&signature=2b8ffa039850e3301860a041019ae037c5f6783a7a6b14132fcd6488b49c3c7a&req=dSYnHst4nohdWvMW1HO4zVuHihX91Ge7AQofdwM8qVe9dGqPBYeho6UZ0IjY%0APfMDH0iBtAUE074wIK8%3D%0A) ## Unable to access your account? diff --git a/content/support/10366376-how-can-i-delete-my-claude-console-account.md b/content/support/10366376-how-can-i-delete-my-claude-console-account.md index 0f49aadd9..fc4bfb285 100644 --- a/content/support/10366376-how-can-i-delete-my-claude-console-account.md +++ b/content/support/10366376-how-can-i-delete-my-claude-console-account.md @@ -36,7 +36,7 @@ If you followed the steps above to delete your Console organization but want to If you have an outstanding balance, you will see a message during the deletion flow that prompts you to pay the balance first by routing you to [Settings > Billing](https://platform.claude.com/settings/billing). -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1973957766/5c2dd87c0818a0400099a833c9b3/4cc3130a-f696-4967-9fe3-e5623c6f02bd?expires=1788982200&signature=a07da5315223004c9cc41b681f46296fb5b9c40a6412baac6feaffbc05a9651d&req=dSkgFcB7moZZX%2FMW1HO4zbYXUB9rVOYZFZRyvJPpBZ9tNUGy9DyvynJMvgK%2B%0AQWUr7IWOVdukF6go9Po%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1973957766/5c2dd87c0818a0400099a833c9b3/4cc3130a-f696-4967-9fe3-e5623c6f02bd?expires=1789020000&signature=fb125837f7ee1917bea9b23969e14beceaccfbbf466110ce0138ef93259c5792&req=dSkgFcB7moZZX%2FMW1HO4zbYXUB5iXuQbFZRyvJPpBZ9RUKio4xh8HF%2F1IAx3%0A%2FKd5Zd3jOuxxi0c%2BSIw%3D%0A) You must pay this outstanding balance before you’re able to move forward with the deletion process. @@ -44,6 +44,6 @@ You must pay this outstanding balance before you’re able to move forward with There are some scenarios where you will need to contact our team to delete your account. If this is the case, it will be noted when you try to delete your organization: -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1973957765/19dda72a40db95d78c00c27a1a1c/6ce89be6-93ce-409c-bbea-d34be09db348?expires=1788982200&signature=4d4bc0f8939b852a96cfd591b4fd65194049fd3c6a45c92a54d619b4ef2e54cb&req=dSkgFcB7moZZXPMW1HO4zRW12%2B3EcKb7ZxDZGlqR6Gh55nTdDyGhZDliyQJX%0Aj%2BGJ0mkuodxsy8CgeEs%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1973957765/19dda72a40db95d78c00c27a1a1c/6ce89be6-93ce-409c-bbea-d34be09db348?expires=1789020000&signature=005314c586463a7dbc6c7d1e2e164c0548ed2bc361e1ac9ed3a1007f7fbed073&req=dSkgFcB7moZZXPMW1HO4zRW12%2BzNeqT5ZxDZGlqR6GhU03FaGyKx%2BhBfESpi%0Al4barh16ibTnVxfMc6M%3D%0A) If you are seeing this message, this indicates that your Console organization cannot be deleted via the self-service pathway. \ No newline at end of file diff --git a/content/support/10504844-manage-user-feedback-settings-on-team-and-enterprise-plans.md b/content/support/10504844-manage-user-feedback-settings-on-team-and-enterprise-plans.md index 0fa4956ea..a6112d28a 100644 --- a/content/support/10504844-manage-user-feedback-settings-on-team-and-enterprise-plans.md +++ b/content/support/10504844-manage-user-feedback-settings-on-team-and-enterprise-plans.md @@ -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=1788981300&signature=6c85d337e27fd8c346dc975f7b2039693bdbbfa14d4d6e9da709783afe9e6857&req=diAiHst3n4dfWvMW1HO4zYGm8i8VGKnP085gFtEpvcTLnWIVUlEDp3SwQeoB%0A4OU8XhdHqx7cUZlWGUo%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2058292603/75752add0bed6a9f3ab217f01708/CleanShot%2B2026-02-12%2Bat%2B08_55_14-402x.png?expires=1789020000&signature=a1995f5d6bb993f081e7a6605312f1bc33262b3548c22bb266a8ee49bfcac661&req=diAiHst3n4dfWvMW1HO4zYGm8i4cEqjM085gFtEpvcSmUiKhMOHDPyNh0qIQ%0Ab6i7nN9j3qOjSODC6ZU%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)** \ No newline at end of file diff --git a/content/support/10504853-manage-user-feedback-settings-on-claude-console.md b/content/support/10504853-manage-user-feedback-settings-on-claude-console.md index 9ceb3234e..bd981fd46 100644 --- a/content/support/10504853-manage-user-feedback-settings-on-claude-console.md +++ b/content/support/10504853-manage-user-feedback-settings-on-claude-console.md @@ -8,6 +8,6 @@ To manage feedback for your Console organization: 2. Toggle the feedback switch on or off. -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1729186182/ebf4032a12a8c56959ca927726ce/Screenshot+2025-09-16+at+12_32_31%E2%80%AFPM.png?expires=1788981300&signature=b11e1097d755b25fb99243afbd18252265aee11b019274e0253151e8283b266e&req=dSclH8h2m4BXW%2FMW1HO4zVpN5H8UUWlGJ%2FadMup7FQcXbYDgJZ1TxAls4byD%0ASuh9tVj4Isk9r5Jo3U0%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1729186182/ebf4032a12a8c56959ca927726ce/Screenshot+2025-09-16+at+12_32_31%E2%80%AFPM.png?expires=1789020000&signature=fb5b99f578915eb05cf81dd54b4ad721b62c8b7d89b10b41f40c86e19474120b&req=dSclH8h2m4BXW%2FMW1HO4zVpN5H4dW2hFJ%2FadMup7FQeXi322EXa7NpGVT8Ue%0ARLpQk1RnAjhMYT0aLf8%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) \ No newline at end of file diff --git a/content/support/10593882-share-and-unshare-chats.md b/content/support/10593882-share-and-unshare-chats.md index 19cfc0540..084a143a5 100644 --- a/content/support/10593882-share-and-unshare-chats.md +++ b/content/support/10593882-share-and-unshare-chats.md @@ -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=1788982200&signature=6a6df2bd7d8b6c4fd5ad2bccf428658fb9feac1e4391a2844c06c8d7e6c986a3&req=dSklF894lIheWvMW1HO4zWn5HzsUakdpc9cNIYuX0GEo4eXc%2B5%2Bmu1r%2FH5xe%0ACABUNyefm5PdkKWJUjA%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1921669913/7cc7be48cfc7a18f9f469d6cd83c/CleanShot+2026-01-08+at+10_20_43%402x.png?expires=1789020000&signature=738627f4fe61b274d961e84c4319d2bb0e98f90e8b92dc570685f3ae3d2e2f79&req=dSklF894lIheWvMW1HO4zWn5HzodYEVrc9cNIYuX0GFvTRkr9eECPE%2BzFhCM%0ADcNXzyZclw9ThJa8hc4%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=1788982200&signature=bbea5e743e8170e6bfd4563f17e1ca3b9cd3e2cee05bae5ab76a3f06e1c023ee&req=dSYlEst6noleWfMW1HO4ze44eC9onBA8guvTv9woD7Y1CBoDOPG1qVfdz1r7%0ApxcUYclkxuJg01aQRPA%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1624243810/e6fe1d262597446c7fe21dff9f10/AD_4nXdW-GhByF8uKV7fCq9lTbkVB91FglSL6TSyXAOUk_MLcTV9YsEMBMkm9rgm1oXqv0k3sJh1JhlzZP6tHVkKbDJJ71pDRRtM3aVNG64MDuKDIzgmknh-XDZdNa7biTsTdwGoPr5GRg?expires=1789020000&signature=33a68690bdb3ce56bfc52ee5c47519918df2584cd99432276b5b5e40cb781eae&req=dSYlEst6noleWfMW1HO4ze44eC5hlhI%2BguvTv9woD7auLgr2cOmBGHS5Jzqn%0A4zufm5LMvIyqddhMvKs%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=1788982200&signature=e679ed8c84b0c8aa42ae34ed631b761ba936060363e81629b1c53adcdd10c792&req=dSYlEst6nolfUfMW1HO4zdaFnc19iYuzDeZsm0Gz1HulYX02mk3end%2Brratz%0A9qekIZg7FzWrG%2BCjteM%3D%0A) \ No newline at end of file +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1624243808/b025db8e598f0c88fb16d83d48d5/AD_4nXeUwCKnmFzzrjMHhfr5By4zk5pJlkEn3wbJ8-aNfu13Yl99IjBywpqPx9G07QRzpH1EwRY7uG7Q9m9fib98Gql1cIV7XwUCTzEgBNu79Ey8tCOS5CEVmwveIcEOxJ4fonBhe3g9MA?expires=1789020000&signature=7101514879008fcda679a2ceb0c99fd73542c6dcac4c70c7a3ba302e3f98330c&req=dSYlEst6nolfUfMW1HO4zdaFncx0g4mxDeZsm0Gz1HtsbWL%2FKYrvwOKbaVdV%0Ak0QtZlIpcJu3SFnajHc%3D%0A) \ No newline at end of file diff --git a/content/support/10949351-getting-started-with-local-mcp-servers-on-claude-desktop.md b/content/support/10949351-getting-started-with-local-mcp-servers-on-claude-desktop.md index f56957135..5883cea7d 100644 --- a/content/support/10949351-getting-started-with-local-mcp-servers-on-claude-desktop.md +++ b/content/support/10949351-getting-started-with-local-mcp-servers-on-claude-desktop.md @@ -48,7 +48,7 @@ for specific instructions. Custom desktop extensions uploads allow Team and Enterprise plans to leverage organization-specific workflows that aren’t available in the public directory. After creating a custom desktop extension, Owners and Primary Owners can navigate to Settings > Extensions within Claude Desktop and click “Advanced settings” to access the **Extension Developer** section: -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1681607607/ba6e379d2769d190f0970a0adaed/AD_4nXd4aZkqjJFpiXMPF28Pih7HmSJ9pPsnoWAfVgiLdFRFiTkO92YtXteIjvDHaPl7T0tjfpRTBOlyrMbQ_aciCNDgfIuEvV3szmKvt72x5O51DMSClXOYWk1JIRIzylwkj3joXqZcLw?expires=1788981300&signature=e356c2203ef32098488908a5ebc8686508eb8bf7edab63e035a781a87d1930f4&req=dSYvF89%2BmodfXvMW1HO4zWbPxEh2PzwxHn9K2IaIG2Jto19IDSHginAmpwz2%0A2NivMXpq7vjnq%2BTLg6o%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1681607607/ba6e379d2769d190f0970a0adaed/AD_4nXd4aZkqjJFpiXMPF28Pih7HmSJ9pPsnoWAfVgiLdFRFiTkO92YtXteIjvDHaPl7T0tjfpRTBOlyrMbQ_aciCNDgfIuEvV3szmKvt72x5O51DMSClXOYWk1JIRIzylwkj3joXqZcLw?expires=1789020000&signature=3ac09a6b93e4ab7bf99be43f8f4be082be5b8b7d5b6ce7f596c78d840cbc87c4&req=dSYvF89%2BmodfXvMW1HO4zWbPxEl%2FNT0yHn9K2IaIG2LWkVFoABuekbLvnEsy%0AHIAh%2FW0Vv4prI35bkw8%3D%0A) Click “Install Extension…” and select the .mcpb file. Follow the prompts to install and configure your custom desktop extension. For more in-depth information, please refer to our [desktop extension developer documentation](https://github.com/anthropics/mcpb). diff --git a/content/support/11101966-use-voice-mode.md b/content/support/11101966-use-voice-mode.md index 3b5b9311a..cc5ccb6f8 100644 --- a/content/support/11101966-use-voice-mode.md +++ b/content/support/11101966-use-voice-mode.md @@ -24,7 +24,7 @@ Voice mode transforms how you interact with Claude by: 2. Tap the sound wave symbol in the lower right corner of the chat window to activate voice mode: -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2042358620/1bf2311353615c1c494da1312a17/124b93a8-0a9b-4c84-9d1f-ede6ca3498dd?expires=1788982200&signature=49578afbccee63bd53df3ef87f7bc9ff8e914d1b81db35adfcd97eeb7075dec5&req=diAjFMp7lYddWfMW1HO4zZyGrsZ7s1USF6uXnTLMvvBM4Fu8KAWgYFy1zdYI%0A6M1H%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2042358620/1bf2311353615c1c494da1312a17/124b93a8-0a9b-4c84-9d1f-ede6ca3498dd?expires=1789020000&signature=3dbcc289b760d2a2761aeb907ba64a09198ec4e76cbc170775201b00f1bd808f&req=diAjFMp7lYddWfMW1HO4zZyGrsdyuVcQF6uXnTLMvvA3Av04Ydbz8DAQv7OR%0A4uGO%0A) 3. Start talking and see your prompt automatically populate in the chat input. @@ -32,7 +32,7 @@ Voice mode transforms how you interact with Claude by: 5. Claude will remain in voice mode until you click the “Stop” button in the lower right corner of the chat window: -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2042352060/162f9e61f7fbeb689201dfc1cac1/6a7fafb2-31df-43be-a43f-0059d735e3c4?expires=1788982200&signature=047b2d5caef1c5069d4cb8754340050af11c7baabe4707191c760c43291fe2c7&req=diAjFMp7n4FZWfMW1HO4zU6VRfXDQL5rxNdRzYWrfF60GmjW8H93b8ZW2Lbc%0A4jfVM1pI81v3DL%2FMJjw%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2042352060/162f9e61f7fbeb689201dfc1cac1/6a7fafb2-31df-43be-a43f-0059d735e3c4?expires=1789020000&signature=b93b5d6a44fed1371245d2194963ac4cfa73ab4440142bd82c597b3ae240b8a1&req=diAjFMp7n4FZWfMW1HO4zU6VRfTKSrxpxNdRzYWrfF7G1ZW0nmpDVbmffJBC%0ArIhZRxhtW3wcpKctlk8%3D%0A) ### On mobile (iOS and Android) @@ -40,7 +40,7 @@ Voice mode transforms how you interact with Claude by: 2. Tap the voice mode icon (sound wave symbol next to the microphone icon) in the text input field: -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2042359690/68879db64559ecf87991f73ce058/671ff972-9e08-4686-bc04-955dab4b2de3?expires=1788982200&signature=d1ac86b738be71d67d359d662fb761c7b0aa17293194d6e1f04077748ce6a956&req=diAjFMp7lIdWWfMW1HO4zQTUIfxzmNpMD%2FRXAPlQ7LZz3KGXkLUBwVq6HWU5%0ADD%2Bz%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2042359690/68879db64559ecf87991f73ce058/671ff972-9e08-4686-bc04-955dab4b2de3?expires=1789020000&signature=9b38d2f27958605909c036c11b7dbec6742feb1bef2a8a012eb6922268f56f18&req=diAjFMp7lIdWWfMW1HO4zQTUIf16kthOD%2FRXAPlQ7LaztGbUT2y9I%2FH5v8Nl%0ArE9p%0A) 3. Choose a voice to personalize your experience. @@ -78,7 +78,7 @@ To change the voice later: - **On mobile:** Click the settings button in the bottom left corner while chatting with Claude in voice mode, then tap your preferred voice and pace: -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2042352063/25eca25bcfd573ecab30dd53158c/074454a6-fa5a-4c49-8b19-02d434b4ca50?expires=1788982200&signature=8c22772129d42bcb6bbf65837e51fe71aba321da381e468413f24bc1d5db659a&req=diAjFMp7n4FZWvMW1HO4zZ3%2FGGKcaFIIy8OQfYsvK3x2HewoOuNTLDD6285p%0AyJRaIjCYqdjNnsv2Ar4%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2042352063/25eca25bcfd573ecab30dd53158c/074454a6-fa5a-4c49-8b19-02d434b4ca50?expires=1789020000&signature=46d4f62444fe050728a57177332ae1e6009f9c246a42666162744c81a7dbcb22&req=diAjFMp7n4FZWvMW1HO4zZ3%2FGGOVYlAKy8OQfYsvK3wSsDm%2B7gZ28I7O4Aa7%0A1i%2BfiC4j%2F2%2Brc52AGes%3D%0A) ## Choose a model diff --git a/content/support/11725453-set-up-the-claude-lti-in-canvas-by-instructure.md b/content/support/11725453-set-up-the-claude-lti-in-canvas-by-instructure.md index 2183ad8fd..59eb8e67a 100644 --- a/content/support/11725453-set-up-the-claude-lti-in-canvas-by-instructure.md +++ b/content/support/11725453-set-up-the-claude-lti-in-canvas-by-instructure.md @@ -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=1788981300&signature=8452b009e76b5f46986d78ab0676289aaa813dd401ffd783f6660fad09825ec8&req=dSYmF818n4VcWfMW1HO4zTEDauMXk%2FKCEv2ojHLMyla9ddfF2wwyYWllDoxh%0A2TaDwNGictiU2kIO8Ds%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1611422430/c8e0875feac1f2c7cb033be74fc9/AD_4nXfLU_bui3EXcCjQ0qm70HD97neqjGayKeDer_t76utlci8gZSUjYRhw6ZSOlDdqSEcwXBzd_shAh7pQEJ-8OoE0O21DM5coOgxmO_WD5hlwiuwtS2iYXcTavhIRyQT5zKFWvfn3NA?expires=1789020000&signature=69db74fd9ac6a9a3a07ffc84148bd309321acf01d78097751b89d3887a95ccb4&req=dSYmF818n4VcWfMW1HO4zTEDauIemfOBEv2ojHLMylZGes0LL4TaImMLivCt%0AMO2vN9L9F%2FitTIwAbZE%3D%0A) ## Turn on the Claude LTI Integration in Claude for Education organization settings diff --git a/content/support/11817273-use-claude-s-chat-search-and-memory-to-build-on-previous-context.md b/content/support/11817273-use-claude-s-chat-search-and-memory-to-build-on-previous-context.md index c7a95cf8a..c6c903aca 100644 --- a/content/support/11817273-use-claude-s-chat-search-and-memory-to-build-on-previous-context.md +++ b/content/support/11817273-use-claude-s-chat-search-and-memory-to-build-on-previous-context.md @@ -40,7 +40,7 @@ When Claude searches your previous chats, you will see this reflected in your cu Yes, navigate to **[Settings > Memory](https://claude.ai/new#settings/customize-memory)** and switch the toggle next to "Search and reference chats" off: -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2533482439/4dee2d7b267f865205feefc8f4f3/cb60c334-d1e2-4828-a01d-dfb36bbaa7eb?expires=1788981300&signature=50aa20f101b97e218c327889fae9d8dd56942266176bed8b8bbe7c163ee1cb05&req=diUkFc12n4VcUPMW1HO4zY9IRAJlXdB0YNcz5nFaZkHoG7KpEbxcd5WuEMZw%0A0zRsXzO4Vi%2B3k7co9ZI%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2533482439/4dee2d7b267f865205feefc8f4f3/cb60c334-d1e2-4828-a01d-dfb36bbaa7eb?expires=1789020000&signature=d5bbed4e140dd849c6765b2f1b0805d2f71fc0958955c8ed3917776d60b31455&req=diUkFc12n4VcUPMW1HO4zY9IRANsV9F3YNcz5nFaZkF%2FkW1IiOLyfjsrQ7WR%0ADARHoGnybzp1VpRzxRM%3D%0A) ## Can I exclude a specific past chat from searches? @@ -84,7 +84,7 @@ What Claude remembers from your chats is available when you hand it a task in Co You can toggle Claude’s memory on by navigating to **[Settings > Memory](https://claude.ai/new#settings/customize-memory)** and turning on **Generate memory from chats**: -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2533482441/b5c806a8e3f68bf34c4a70724d38/d30be013-d099-4c93-99d1-23d404792f08?expires=1788981300&signature=850c4fae768538323eb3e71a7701d61d03d347346bb5492428029e1dea4c7ec9&req=diUkFc12n4VbWPMW1HO4zRlYrpNk6lEvNshWSMEMw9eZy5qsO0L9QEGuaQDe%0AFsaDhG3cdfYXS1F5gNs%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2533482441/b5c806a8e3f68bf34c4a70724d38/d30be013-d099-4c93-99d1-23d404792f08?expires=1789020000&signature=2f88a83da5393c146b4f9cee2864e026d267644b6bfb679a9c632d77a885b906&req=diUkFc12n4VbWPMW1HO4zRlYrpJt4FAsNshWSMEMw9fEIm7eHeWzBmNyb4GT%0ATkIAdZv9IrT0wvXgepQ%3D%0A) If you want to disable Claude’s memory, click the toggle and you'll see two options: @@ -239,7 +239,7 @@ When Claude searches your previous chats, you will see this reflected in your cu Yes, navigate to **[Settings > Capabilities](https://claude.ai/settings/capabilities)** and find the **Preferences** section. Switch the toggle next to “Search and reference chats” off: -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1719730889/3fafbf5ecaa0ae31d7d84a66229b/c25536c1-7433-4b94-a5e9-cd5acf97a4fd?expires=1788981300&signature=ae5f2ae0f3be721d8eb2f9de3dcdd930c16eadc1dc86205fc43a2876d09cfe59&req=dScmH859nYlXUPMW1HO4zRzXH1c5KzDBJG68qZhl7830L1FOd3aa037g49Cv%0A8iFdEbTW8IvpXzqFEik%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1719730889/3fafbf5ecaa0ae31d7d84a66229b/c25536c1-7433-4b94-a5e9-cd5acf97a4fd?expires=1789020000&signature=eaf4a966f061edae28d8101cf3af870367308015e38bef448c8d7e6fc05300bb&req=dScmH859nYlXUPMW1HO4zRzXH1YwITHCJG68qZhl7829A5ZReoaUbwCf85xY%0AFbScTrxTt1%2F4kMUqB%2F0%3D%0A) ### Can I exclude a specific past chat from searches? @@ -247,7 +247,7 @@ Incognito chats are available to all Claude users (free, Pro, Max, Team, and Ent When starting a new chat with Claude outside of a project, you'll see a ghost icon in the upper right corner of your screen: -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1719730893/9549b21954e0070ceb6b85231fd5/88e59234-6fc2-4229-84fe-733b33efff26?expires=1788981300&signature=18288e207eaf8a3c63ae156f8f133d35f4f6b3c5b266a732264dad92d0dedfa7&req=dScmH859nYlWWvMW1HO4za54sKtlNIe4XDpzhlKsgjPVSW8ZX5H3o7h%2F7GDa%0A1TTff2SU%2BKFskA0TYP8%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1719730893/9549b21954e0070ceb6b85231fd5/88e59234-6fc2-4229-84fe-733b33efff26?expires=1789020000&signature=81a1dad6249868423d4f0e3de9f3cefd5c5404a8532c1fa8f778e14d53322261&req=dScmH859nYlWWvMW1HO4za54sKpsPoa7XDpzhlKsgjNeYXnntB%2FxElzzcS%2Bc%0AdmIf4UXZKuMTi8GNIrY%3D%0A) Clicking the ghost icon will open an incognito chat, creating a temporary conversation that isn’t saved to your chat history. Claude won’t pull information from incognito chats when searching previous conversations. @@ -279,7 +279,7 @@ Each project has its own separate memory space and dedicated project summary, so You can toggle Claude’s memory on by navigating to **[Settings > Capabilities](https://claude.ai/settings/capabilities)**: -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1719730892/62f9f2b68d675a8e33393f06024f/89198978-192f-4c52-915d-5294b16f3fe1?expires=1788981300&signature=671767c33d8a3f6a2d48bc6b17576c4d9c05ed1c45f5e6877f5665f5f8df5552&req=dScmH859nYlWW%2FMW1HO4zTD5MMnvf%2BVGBq9N9dRTKYeJToJ15yKWDV9mnP3t%0Ahfxx1naAUDOe4IbK0IU%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1719730892/62f9f2b68d675a8e33393f06024f/89198978-192f-4c52-915d-5294b16f3fe1?expires=1789020000&signature=53b6f24cfd644604543ee415b6306ac5ea3a577697c72029fac35f8beb2e59fe&req=dScmH859nYlWW%2FMW1HO4zTD5MMjmdeRFBq9N9dRTKYeeVTlfNIKUsUl74IUo%0AIzDO9j1ww3aygyrtFGU%3D%0A) If you want to disable Claude’s memory, click the toggle to see two options: diff --git a/content/support/11818288-why-am-i-being-asked-to-verify-my-payment-method.md b/content/support/11818288-why-am-i-being-asked-to-verify-my-payment-method.md index e2db78623..5ca56a481 100644 --- a/content/support/11818288-why-am-i-being-asked-to-verify-my-payment-method.md +++ b/content/support/11818288-why-am-i-being-asked-to-verify-my-payment-method.md @@ -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=1788982200&signature=2c1cdc02c92c4fff252fe59f0c8245fd0b85f4e7e89da963fa5aedc541bbc9c8&req=dSYkF81%2FnolZWPMW1HO4zf7%2BjEzn4ILwn6MrEicvimBaxpcN5t%2F1YNAbUSvM%0A3uOzlnp6nmdyeUGEfHs%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1631413861/42c3b13d7fc44a11a88ec2b9cd03/AD_4nXeMx8QXpeZZCkfAnVSwx8KZ9n4Vr2rvPdQddyE6ZNxch__F6ZqFs1G4ZmU52Wvb7gRlwRqquTLdw8IQv-gICDyP-MXqiQK_Oe7gX3SKsCKKt2IEpMx4qDeMeeZufMaJfv16XgOH5g?expires=1789020000&signature=dcf9a907e8440a70687bcadf93a8e035e2bb1360b0cea4ecd56f49828b7f72ae&req=dSYkF81%2FnolZWPMW1HO4zf7%2BjE3u6oDyn6MrEicvimBT0uL%2BQzsRzr70k03A%0AAgmVYcM9U2ZOcuGB1OM%3D%0A) ## What happens if I click “Remind me later?” diff --git a/content/support/11869629-use-claude-with-android-apps.md b/content/support/11869629-use-claude-with-android-apps.md index 5e991d3a7..7de456890 100644 --- a/content/support/11869629-use-claude-with-android-apps.md +++ b/content/support/11869629-use-claude-with-android-apps.md @@ -222,7 +222,7 @@ Permission requirements vary by feature: For features requiring permissions (like location or calendar access), Claude will request permission contextually with clear explanations of why the access is needed. You’ll be prompted to approve the action with three options: Allow once, Always allow, or Don't allow. -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1707351614/ccb910e4b87b1e96ad9a11bbd835/b57b2130-d8d6-4499-89f6-6c12de236fd4?expires=1788982200&signature=20f3f4ecd459136ace03bec65f8c755d4e6bbf2c2f57c3534bfce0e232baeea1&req=dScnEcp7nIdeXfMW1HO4zQe5GleG0yf2S5x65TIld%2FDi1aY7xtctw4aLKnWb%0AtvndUzsKkpgWGMp%2FG9o%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1707351614/ccb910e4b87b1e96ad9a11bbd835/b57b2130-d8d6-4499-89f6-6c12de236fd4?expires=1789020000&signature=cc6734ea2c0f33c1ab9112d47135fd1eefc4139f15a67cc2cb9539c0e725200d&req=dScnEcp7nIdeXfMW1HO4zQe5GlaP2SX0S5x65TIld%2FCEVt9yz%2BCH7quA%2BHea%0AL0AYRROHwvMvx4GzV2U%3D%0A) These permissions can be managed at any time in your device settings by going to Settings > Apps > Claude > Permissions. Click into each permission listed under **Allowed** and **Not allowed** to make changes. You can toggle between “Allow only while using the app” or “Ask every time” to change Claude’s access, or remove permissions by choosing “Don’t allow.” Claude will only request permissions if needed for specific features, and you can always choose to decline while still using other capabilities. diff --git a/content/support/12005970-manage-usage-credits-for-team-and-seat-based-enterprise-plans.md b/content/support/12005970-manage-usage-credits-for-team-and-seat-based-enterprise-plans.md index 7d2bdbf13..f307252e7 100644 --- a/content/support/12005970-manage-usage-credits-for-team-and-seat-based-enterprise-plans.md +++ b/content/support/12005970-manage-usage-credits-for-team-and-seat-based-enterprise-plans.md @@ -70,7 +70,7 @@ After navigating to **[Organization settings > Usage](https://claude.ai/admin-se The **Usage and spend limits** section will show the current limit (if any) or **Unlimited**. Clicking on "Adjust limit" opens a modal where you can either input an amount and click "Set spend limit," or click "Set to unlimited" to remove the organization-wide monthly spend limit. -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2149347604/936ac4eb025d3ef1f00c3b8a26b0/image.png?expires=1788982200&signature=65adaedd05aa0d6de2c39915b80857c053fa4a200b2fd566c047bf70da4ff233&req=diEjH8p6modfXfMW1HO4zQHwg6neniyk6DwhVVpk1mCINbnqwnJJR7Qa8v6f%0AFz8898DZVXfc353Kp0E%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2149347604/936ac4eb025d3ef1f00c3b8a26b0/image.png?expires=1789020000&signature=bc95a503fcd955dbd155bb42ea822d9a7a3e4d6c78ba9e7c2b4abda1925520c7&req=diEjH8p6modfXfMW1HO4zQHwg6jXlC6m6DwhVVpk1mD2nud3l0MhIgbLqnCl%0ABp4Mt87cjm20b9pyyw8%3D%0A) Changes to your organization’s overall spend limit go into effect immediately. @@ -78,11 +78,11 @@ Changes to your organization’s overall spend limit go into effect immediately. Owners and Primary Owners on **seat-based Enterprise plans only** can set spend limits that apply to all users within a specific seat tier. -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2149351600/c5b979c366ac2738f60ea84e85b3/CleanShot+2026-03-10+at+15_37_41%402x.png?expires=1788982200&signature=89e4e54a2b9d4d143a655707e92d086d497a272376e751b2ec9ab85d49ab6637&req=diEjH8p7nIdfWfMW1HO4zYnqMI2dK3KL0wfO62ivdG90BxiYLG6zn5b9XHee%0Azk6kxTXK8u6uDFSzZxo%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2149351600/c5b979c366ac2738f60ea84e85b3/CleanShot+2026-03-10+at+15_37_41%402x.png?expires=1789020000&signature=81ae9139ad7af3a65ad9e641f0f8649a773837af204a747373ce592581baded0&req=diEjH8p7nIdfWfMW1HO4zYnqMIyUIXCJ0wfO62ivdG%2F4%2FqKDXRFPmb%2B1ZZqe%0AikkWNcAQC3XzDjta67U%3D%0A) Select the "By group" tab to see **Standard seats** and **Premium seats** groups. Click the "..." icon next to the current limit, then "Edit limit." This opens a modal where you can either select "Set dollar amount" and input an amount, or click "Unlimited" to remove the limit for that seat type. Click "Set limit" to save your changes. -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2149362056/44993661ca2db771fe924d0346f6/image.png?expires=1788982200&signature=595116afffeefd1c4d0ad1198acf4b2a6befa415e4aabdf8bd13f590d52d3b44&req=diEjH8p4n4FaX%2FMW1HO4zRzvvI0CeE9Eq7nEDCGq9G7Kt8unzBgNwm9IkjTb%0AtA4S0sxtIDIRSrahR4s%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2149362056/44993661ca2db771fe924d0346f6/image.png?expires=1789020000&signature=4f7b3b7673e9e100983020a291381dd70b2542528dd00a9c1469206d553161a4&req=diEjH8p4n4FaX%2FMW1HO4zRzvvIwLck1Gq7nEDCGq9G7BvXBegEIFgiJe%2B6%2FC%0AvxtiFKswaqsIAxdppYI%3D%0A) --- @@ -90,11 +90,11 @@ Select the "By group" tab to see **Standard seats** and **Premium seats** groups Owners and Primary Owners can also set individual monthly spend limits for each member by finding **Spend limits by user** and clicking the "..." button next to the user, then "Edit limit." -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2149370853/db66f5cd03683b9cc119d0dcd6b8/image.png?expires=1788982200&signature=64a5d4a543425885ed5562ba9c0a1b01087547574eca6b3ac38fe080bebd65c7&req=diEjH8p5nYlaWvMW1HO4zaPdGQ9eXS1Ee9HwvwG7ubjsJ4ZynpCuklT510OD%0A7m8m2kcE%2BXNaHQGmQ4E%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2149370853/db66f5cd03683b9cc119d0dcd6b8/image.png?expires=1789020000&signature=4c220af4fcca1bcea23d2a941b64de66c2b76a2e985a3cc4e5560b860fb308ff&req=diEjH8p5nYlaWvMW1HO4zaPdGQ5XVy9Ge9HwvwG7ubh%2Fd0hASVWMYTPJpp%2Fo%0AU8TFNZD6Cv28Y7lC3mE%3D%0A) Enter the amount and click "Set limit." Alternatively, selecting "Set to unlimited" will remove that member's monthly spend limit (they will still be subject to any organization or seat-level spend limits). -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2149374028/97813fe3b515c2e839d8d92abd79/image.png?expires=1788982200&signature=17975e7f7f9ad21aa12bac6753380602f429b97d1a830e9aab2ccb6593424f82&req=diEjH8p5mYFdUfMW1HO4zevsAv%2BDO%2BmIw6z2wGSwkbsq%2B8WCqPnVNjfqloxS%0Ame8DF5dOqhoXJdtYCg0%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2149374028/97813fe3b515c2e839d8d92abd79/image.png?expires=1789020000&signature=14b4b2b3dc050d0062aa8967990381780ba294d799c97632903bdcbfca136192&req=diEjH8p5mYFdUfMW1HO4zevsAv6KMeuKw6z2wGSwkbuEn36ZAvpExSfmywSW%0AX4EWvUC05i5%2Bi9eUASQ%3D%0A) This allows owners fine control over usage credits, so you can set limits for different members based on their roles or individual needs. Once a user reaches their defined spend limit, this will automatically pause their usage credits until the end of the month. They will need to wait for their usage limits to reset before using Claude again. diff --git a/content/support/12012173-get-started-with-claude-in-chrome.md b/content/support/12012173-get-started-with-claude-in-chrome.md index b95bd909d..e50693a89 100644 --- a/content/support/12012173-get-started-with-claude-in-chrome.md +++ b/content/support/12012173-get-started-with-claude-in-chrome.md @@ -38,7 +38,7 @@ Follow these steps to connect Claude in Chrome in your desktop app: 4. Toggle the connector on, then download and install the extension if you haven’t already. -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2604933811/ae37c41fc808dbdf48d135338334/6cc9ba4b-9d31-43a2-ab80-8048b5f9d791?expires=1788981300&signature=cdb55455e32a9ad9ed4e4dd34452fa08118a6e82d44eaf5da9c4328381573167&req=diYnEsB9noleWPMW1HO4zUOPbPTPnuOOnt%2F2nPMwUPg0CUtdpGOfN7UO1qXS%0AzIC8vQzTIHMIydNaqeA%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2604933811/ae37c41fc808dbdf48d135338334/6cc9ba4b-9d31-43a2-ab80-8048b5f9d791?expires=1789020000&signature=23c0d131b7c06d14db29a0cc4fb1136eee0e1ce28c0b349e211ecadb077e721d&req=diYnEsB9noleWPMW1HO4zUOPbPXGlOKNnt%2F2nPMwUPgIa82EKdH%2BQqKEsL4j%0Ayeff38gpkWCmOpOEjFk%3D%0A) Completing these steps will add Claude in Chrome to the “Connectors” drop-down on your chats with Claude. This is disabled by default, so you’ll need to enable it manually for each conversation. diff --git a/content/support/12083917-change-your-team-plan-from-monthly-to-annual-billing.md b/content/support/12083917-change-your-team-plan-from-monthly-to-annual-billing.md index d6b5dd341..b10d82795 100644 --- a/content/support/12083917-change-your-team-plan-from-monthly-to-annual-billing.md +++ b/content/support/12083917-change-your-team-plan-from-monthly-to-annual-billing.md @@ -8,11 +8,11 @@ Owners and Primary Owners of Team plans with monthly subscriptions can switch fr 3. Or from /upgrade, click the “Switch to Annual plan” button: -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1690325734/d47f714680d78408d6022d06b8d1/image.png?expires=1789074000&signature=c00c3322d08fde938b58930c1bc7a0abd2fa82db8f93b01fab19a0cf28f1b6b3&req=dSYuFsp8mIZcXfMW3Hu4gZzas%2FXtsD9VmWrRiVwqPzYBDyG23dhXghhUnABd%0AcQ%3D%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1690325734/d47f714680d78408d6022d06b8d1/image.png?expires=1789128000&signature=867d0b1264318e7f48d04997d2be229efd4d9a0b43fda8b4180c0611962da158&req=dSYuFsp8mIZcXfMW3Hu4gZzas%2FXtsD5QlWrRiVwqPzY8rU32cALAOnqOqCrE%0Acw%3D%3D%0A) 4. The confirmation screen will display the total cost for your upgrade from monthly to annual billing: -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1690326039/3a91cdc5fff57d188a18ecc6273f/image.png?expires=1789074000&signature=73fde5cdea3e1012167760fe680f80eac3f671592943e6747501bfdd2ac7c011&req=dSYuFsp8m4FcUPMW3Hu4gbNj%2Bk78VQ3mj%2B5vzcg6znV2MVctkXvsoMGLOIu6%0ABg%3D%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1690326039/3a91cdc5fff57d188a18ecc6273f/image.png?expires=1789128000&signature=1d09b47474badc59145ac95670ec303cb224606713f791712a7a4f86f2d69d6f&req=dSYuFsp8m4FcUPMW3Hu4gbNj%2Bk78VQzjg%2B5vzcg6znXHGHIntXyl2tA3RfOY%0AlQ%3D%3D%0A) 5. Click “Confirm subscription.” diff --git a/content/support/12111783-create-and-edit-files-with-claude.md b/content/support/12111783-create-and-edit-files-with-claude.md index e389c9f26..8e7b607e1 100644 --- a/content/support/12111783-create-and-edit-files-with-claude.md +++ b/content/support/12111783-create-and-edit-files-with-claude.md @@ -48,7 +48,7 @@ These capabilities make it easy to produce professional documents by simply chat To give Claude access to external data sources, toggle **Allow network egress** on: -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2054774005/25bcfffba6c249cd128d6c3f6d52/CleanShot+2026-02-11+at+16_34_47%402x.png?expires=1788981300&signature=6944ecf0d3403826fb99673c4df4e2ae7a65b4bfa89f82acaba62a23a302c10f&req=diAiEs55mYFfXPMW1HO4zYFJywVMBJjNPQVowIiib2nFuuG4aNsvTh2wBDvm%0AjYEdhgn024%2BTdBW4Wy4%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2054774005/25bcfffba6c249cd128d6c3f6d52/CleanShot+2026-02-11+at+16_34_47%402x.png?expires=1789020000&signature=05643a27799c6f14cbc10450a2e11f41ebe8fd0999ab1114e1752dd49f8394ee&req=diAiEs55mYFfXPMW1HO4zYFJywRFDpnOPQVowIiib2nofsdB8pV57uGa%2FXGc%0AplJxstcFycWjr950JFc%3D%0A) ### Enabling on Claude Mobile @@ -66,11 +66,11 @@ Team and Enterprise organization owners can control network access settings in * - **Allow network egress to package managers and specific domains:** Claude can access package managers plus additional domains you specify. Add domains individually to whitelist specific resources your organization needs: -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1789945362/ad72504d5429960f369b8b91b43c/86f06c0e-6eaa-4574-a4cb-2c38b273613a?expires=1788981300&signature=251edcb26ff610e6eb99099efaf76d5834aa7f4262d8c0723bbd2f460e0df74d&req=dScvH8B6mIJZW%2FMW1HO4zXJcBmVKnShIpMW6Iph6YZd6O2DTrB2J3JhWE1pw%0A2xZ2QWaKG0uH5qJp5jA%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1789945362/ad72504d5429960f369b8b91b43c/86f06c0e-6eaa-4574-a4cb-2c38b273613a?expires=1789020000&signature=1654c645a55f7afa9d1b5c9c2665762fc53ea2c41fd988ad0a32294edda2b7dd&req=dScvH8B6mIJZW%2FMW1HO4zXJcBmRDlylLpMW6Iph6YZeskN%2Fnvi6oHSsXxd9%2F%0AK7P3Se1fegRi8x6fjDo%3D%0A) **All domains:** Claude has full internet access except for domains on Anthropic's legal blocklist. While this provides maximum flexibility for file creation and analysis tasks, it’s also the riskiest option. Please review the **[security considerations below](#h_0ee9d698a1)** before enabling “All domains”: -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1789945361/e3188cb8edb9ca7c303615da6378/f1c99a7d-5956-48d5-9ec7-b7ae6c8c3d28?expires=1788981300&signature=7542db848760a73b95e902ebe8fcba9b28770cd4d81a35b9ee7d2a70c63d0075&req=dScvH8B6mIJZWPMW1HO4zdnseByb5j6hqgKIA6CM1trXkzsrmma0JomitACb%0ADfNJJsNDsmZNRg1Z5QM%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1789945361/e3188cb8edb9ca7c303615da6378/f1c99a7d-5956-48d5-9ec7-b7ae6c8c3d28?expires=1789020000&signature=866ff0b70b4a129b90b2a89d99f5096142792467d51e003f46dc50dbbca716dc&req=dScvH8B6mIJZWPMW1HO4zdnseB2S7D%2BiqgKIA6CM1tpibJKRQ2WY9lE3KZDn%0AOJnG6ru5ej4vtTFdmho%3D%0A) --- diff --git a/content/support/12157520-claude-code-usage-analytics.md b/content/support/12157520-claude-code-usage-analytics.md index 2c94adcc7..d424aed6d 100644 --- a/content/support/12157520-claude-code-usage-analytics.md +++ b/content/support/12157520-claude-code-usage-analytics.md @@ -50,7 +50,7 @@ The **Usage** tab displays the following metrics for your organization. Data on - **Top commands**: The Claude Code commands used most often across your organization. -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1717579277/46c512f4b3ed05c359cecd78ed5c/e0ce2c19-39e2-411f-9a1f-cb1d46439a42?expires=1788982200&signature=28ed857d3386f3c42f01abf69e9f8ee708502091ab94313ac18418a4d78249b2&req=dScmEcx5lINYXvMW1HO4zfiEP65Zh3vMCX9h5MbdDjMNwMfi6Ut35%2F47SL1M%0AeAQ5QyDNth7AVbfgx30%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1717579277/46c512f4b3ed05c359cecd78ed5c/e0ce2c19-39e2-411f-9a1f-cb1d46439a42?expires=1789020000&signature=1d8662aac683410995141507d564869b117a0fc783d1ae85ffabf65e1c72db9e&req=dScmEcx5lINYXvMW1HO4zfiEP69QjXnOCX9h5MbdDjMd4gVqAuOQXBQKla5%2B%0ACdT3LnM%2BTlXHF2bRbzI%3D%0A) ### User-level metrics diff --git a/content/support/12260368-use-incognito-chats.md b/content/support/12260368-use-incognito-chats.md index 5f32c7341..0e8b6a6f6 100644 --- a/content/support/12260368-use-incognito-chats.md +++ b/content/support/12260368-use-incognito-chats.md @@ -30,7 +30,7 @@ Incognito chats are temporary conversations that aren't saved to your chat histo When starting a new chat with Claude outside of a project, you'll see a ghost icon in the upper right corner of your screen: -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1719768744/c7a2fa56cf284e48472f3b9c4dbf/030563f8-9f97-4891-a749-9ae95968a063?expires=1788981300&signature=94071a077894ab60d59a7acf48e564e7902dde2f6fe7a096ef9c6835a64d68d5&req=dScmH854lYZbXfMW1HO4zeUcuwq0ZuSIDCAt3Cx%2FSO1VNOlVWMps3uq6djE1%0A4mdwC8A0hXgwMzwEuoU%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1719768744/c7a2fa56cf284e48472f3b9c4dbf/030563f8-9f97-4891-a749-9ae95968a063?expires=1789020000&signature=2f411ef3890a3ff4df5d1635e245670bb7cf8f321af414ceb7c00a4acfbdde23&req=dScmH854lYZbXfMW1HO4zeUcuwu9bOWLDCAt3Cx%2FSO3X1lm9FoH5YNVUcug%2B%0AaylJkXBGgkQS%2F3Y%2BySg%3D%0A) 1. Click the ghost icon to enable incognito mode. diff --git a/content/support/12293051-use-claude-in-xcode.md b/content/support/12293051-use-claude-in-xcode.md index 1f29dda43..a237c80f1 100644 --- a/content/support/12293051-use-claude-in-xcode.md +++ b/content/support/12293051-use-claude-in-xcode.md @@ -34,7 +34,7 @@ To start using Claude in Xcode: 3. Log in with your Claude account. -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1727371585/b18ca03a6357c52d12d10386f28e/dab2dcb2-f670-4173-b77d-38767a34cec1?expires=1788982200&signature=f37211607f66710c54a4b3050bb526f02087672ac2dd5e4319d6140452da4b08&req=dSclEcp5nIRXXPMW1HO4zUAXI8QLWqrWFalhp3bugHL8OEqiheK%2FxH%2Fia8Tm%0ApDQV2PS6CEO4Fu5VpFg%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1727371585/b18ca03a6357c52d12d10386f28e/dab2dcb2-f670-4173-b77d-38767a34cec1?expires=1789020000&signature=64bd350dc8fc945f1a54475003feaf20ce564a3f5f096b437cfef939df31c630&req=dSclEcp5nIRXXPMW1HO4zUAXI8UCUKjUFalhp3bugHKt%2BPTSy5ECUngafNDx%0AWYcSen0iPe1YUzK5Myc%3D%0A) ## Usage limits diff --git a/content/support/12429409-manage-usage-credits-for-paid-claude-plans.md b/content/support/12429409-manage-usage-credits-for-paid-claude-plans.md index 2f3b14902..bfb45b862 100644 --- a/content/support/12429409-manage-usage-credits-for-paid-claude-plans.md +++ b/content/support/12429409-manage-usage-credits-for-paid-claude-plans.md @@ -46,7 +46,7 @@ To enable usage credits on your paid Claude plan: 8. You can also enable auto-reload to automatically make a purchase when your balance falls below a threshold you set: -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1805819785/5e203c38e6ba3f76bfd1dab0d5ce/fe062e7c-18cb-48cc-a7e2-754ac6e6c4be?expires=1788982200&signature=d7e5156f72d31b1972d87b25a263210614cd655e77779c3e04f6582e96e79cbb&req=dSgnE8F%2FlIZXXPMW1HO4zYj2ARqQrfI6opE7m38YdfcMd%2B26FBBvZqcQlFSI%0AcAaIE8WIqeWX8iSNL%2Fw%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1805819785/5e203c38e6ba3f76bfd1dab0d5ce/fe062e7c-18cb-48cc-a7e2-754ac6e6c4be?expires=1789020000&signature=b898162b534cac1aa5e9ee584da8142be247e237fc496c008c871d442f10762e&req=dSgnE8F%2FlIZXXPMW1HO4zYj2ARuZp%2FA4opE7m38Ydfdau0qGVXl7qqa8Xar5%0Amqbi6c2pdH7Zrofjj%2FA%3D%0A) **Note:** There is a daily redemption limit of $2000. diff --git a/content/support/12466728-troubleshoot-claude-error-messages.md b/content/support/12466728-troubleshoot-claude-error-messages.md index 81a6a52b2..3a48748f3 100644 --- a/content/support/12466728-troubleshoot-claude-error-messages.md +++ b/content/support/12466728-troubleshoot-claude-error-messages.md @@ -58,4 +58,4 @@ Capacity issues will not appear on our status page because they represent normal Service incidents are disruptions where Claude is unavailable or significantly degraded for all or most users. These represent actual technical problems with our systems. To check for confirmed incidents, visit status.claude.com, where you'll find real-time updates on scope, impact, and resolution progress for any active incidents. -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1753796247/e6a8c6ef8653b229c5758e881242/c2fc6fc0-d163-4119-93e0-394104d86bc9?expires=1788981300&signature=1bb0f402de8fb38767cae90816185d045c275add5c51b473184e3a2c211b65d5&req=dSciFc53m4NbXvMW1HO4za4BXqcq2rPH7y68oYp%2BYg%2F9KWE5uIH5bxsbtOjt%0A0rCIKSPmcf0phJgURlY%3D%0A) \ No newline at end of file +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1753796247/e6a8c6ef8653b229c5758e881242/c2fc6fc0-d163-4119-93e0-394104d86bc9?expires=1789020000&signature=4f37a83d0e42de1934b1432d53a468d9fb29c3d239afd42df372ebe3355c3d1a&req=dSciFc53m4NbXvMW1HO4za4BXqYj0LLE7y68oYp%2BYg83PCl9N8U8hWVis%2FBh%0Am5QwECzRtbtlM3h3E7Q%3D%0A) \ No newline at end of file diff --git a/content/support/12512180-use-skills-in-claude.md b/content/support/12512180-use-skills-in-claude.md index 8a9be937e..5d759effb 100644 --- a/content/support/12512180-use-skills-in-claude.md +++ b/content/support/12512180-use-skills-in-claude.md @@ -166,7 +166,7 @@ To remove a custom skill you've uploaded: 4. To delete the custom skill entirely, click the "..." button next to the toggle, then select "Delete": - ![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2105391273/8359cbf8be20dce0f1cd3fd40e6f/CleanShot-2B2026-02-25-2Bat-2B15_50_16.png?expires=1788981300&signature=8dd71bd0c8244dc7fba273661a87e25df4737ac0cc5e1e16224f8c643386ae4e&req=diEnE8p3nINYWvMW1HO4zSOgDyMhyueuH%2BdCnFXB0uinPxFg8RzKYCd%2BD%2BNf%0A3lie%0A) + ![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2105391273/8359cbf8be20dce0f1cd3fd40e6f/CleanShot-2B2026-02-25-2Bat-2B15_50_16.png?expires=1789020000&signature=6650990c4a50c595895fc43193d1b2d38caefdb0b8b1ac45c099d61b9529ada7&req=diEnE8p3nINYWvMW1HO4zSOgDyIowOatH%2BdCnFXB0ugeU5UEwmkIvMfonw7%2B%0A4ZZ1%0A) 5. Click "Delete" in the confirmation prompt. diff --git a/content/support/12592343-enabling-and-using-the-desktop-extension-allowlist.md b/content/support/12592343-enabling-and-using-the-desktop-extension-allowlist.md index 17d4f6555..aef84f4e4 100644 --- a/content/support/12592343-enabling-and-using-the-desktop-extension-allowlist.md +++ b/content/support/12592343-enabling-and-using-the-desktop-extension-allowlist.md @@ -20,11 +20,11 @@ The desktop extension allowlist is disabled by default, so an organization Owner 4. Switch to the "Desktop" tab: -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1781755172/63c92550571842577ad435860ec5/6f5cc4e1-ff7d-48de-863a-c4e6184d4605?expires=1788981300&signature=0b97331c7d8c5d460ac999dc0a4e37f0a8ec23efb36a5b1a5a46dff3f5046fd1&req=dScvF857mIBYW%2FMW1HO4zQ9pXUID93HY0ugSQm1MFW8MqJSNtoZ4XZmOWHEt%0A8Qmi%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1781755172/63c92550571842577ad435860ec5/6f5cc4e1-ff7d-48de-863a-c4e6184d4605?expires=1789020000&signature=39971aba12a46f63b843177ccf68a7e6582bcf1efe8147122a5505a2c2de44b2&req=dScvF857mIBYW%2FMW1HO4zQ9pXUMK%2FXDb0ugSQm1MFW%2B45sO6wS8pCwNIBH3n%0AiVIb%0A) 5. Toggle **Allowlist** on: -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1781755578/a6bafff5f084dc86ae463703fd3d/6cf0ee18-4e71-4129-98e8-cc08174e3c3a?expires=1788981300&signature=4650723d132ad8b295a94605e05f43789189cc722dbf005e25a0b7eda91cb1c2&req=dScvF857mIRYUfMW1HO4zaj0BHkiQaYHTAorLxpdoc%2BpY6XgvBj1DZtOuNip%0AaMCU%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1781755578/a6bafff5f084dc86ae463703fd3d/6cf0ee18-4e71-4129-98e8-cc08174e3c3a?expires=1789020000&signature=931b582b146d5254784c62892adfb69819335c2aa9e0a867c7ba217b1c3bee80&req=dScvF857mIRYUfMW1HO4zaj0BHgrS6cETAorLxpdoc8txzOuHcRj7ned%2BDgc%0AreBK%0A) ## What happens after enabling the allowlist? @@ -42,7 +42,7 @@ Consider completing the allowlist setup during off-hours to minimize disruption **Important:** The allowlist requires Claude Desktop version 0.13.91 or higher, so users should update the desktop app by clicking “Claude”, then either “Check for updates” or “Restart to update to Claude 0.13.91”: -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1781756960/ad18af50c83d35f2673656c23e00/a7ee450f-0c7d-42d6-a75f-fb1bc088cb52?expires=1788981300&signature=820e782b470f2327783ba8ea0c22b89762f062c19f19708c89c0f8e3b5aa5fce&req=dScvF857m4hZWfMW1HO4zYUJqYujAjPoCEDZ5AdBjIZf8DCZjCChEuo6YPFE%0AJyZmqOg7BEWEckfSPg0%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1781756960/ad18af50c83d35f2673656c23e00/a7ee450f-0c7d-42d6-a75f-fb1bc088cb52?expires=1789020000&signature=0bd5dbe1224d503c4c4f7c095fc5cf965c74a83a618907bdf53e911e1c03e528&req=dScvF857m4hZWfMW1HO4zYUJqYqqCDLrCEDZ5AdBjIZT4sWATH3cKMuI2OUj%0AdWSuB3aTmWtzmX9HDig%3D%0A) ## Managing allowed extensions @@ -60,7 +60,7 @@ After enabling the allowlist, you can choose which extensions to allow: If you want to remove an extension from the allowlist, click the “...” button and “Remove from allowlist.” -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1781751250/6558c0f59aea7976bd44b0213d76/e750f02b-cd0d-437e-a83f-9ac362cdf456?expires=1788981300&signature=f303dee384c55b84f29349bfb1c95fe38dd8b1874e6047510991ebdfc2754e2b&req=dScvF857nINaWfMW1HO4zTrxBaAg91aWqXridZhfx1LZWVAzW0danysfXVUj%0Ak7p4D1ZsCRunkCTNlO4%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1781751250/6558c0f59aea7976bd44b0213d76/e750f02b-cd0d-437e-a83f-9ac362cdf456?expires=1789020000&signature=055e31c4b95ceb39be6b337664eeb4bf16bb5ca2ed2b004cab9cdfa3f1a72d00&req=dScvF857nINaWfMW1HO4zTrxBaEp%2FVeVqXridZhfx1KYmuPpLEUlS%2F%2BVeLri%0AoAP4ZfActCwuMv1sz2g%3D%0A) ## Uploading custom extensions diff --git a/content/support/12618689-claude-code-on-the-web.md b/content/support/12618689-claude-code-on-the-web.md index 795f1c313..06ada2b2f 100644 --- a/content/support/12618689-claude-code-on-the-web.md +++ b/content/support/12618689-claude-code-on-the-web.md @@ -10,7 +10,7 @@ This feature works with repositories you may not have on your local machine. You Claude Code for web enables asynchronous development workflows. With Claude Code in your terminal or editor, you typically work synchronously: you make a request, wait for Claude to respond, review the changes, then make another request. Synchronous work like this gives you fine-grained control but requires your attention throughout the process. Claude Code on the web handles this differently: you can assign a larger task, let Claude work independently, and return later to review the completed work. -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1786446157/07ec74cd46317f8278083a317841/6448f3ee-c6df-4417-8a13-90d8c2ca3d55?expires=1788981300&signature=332fc7327e06f2df8d9f1eb31748527ffbe2ae3d95725c6e4fa12e225c33982c&req=dScvEM16m4BaXvMW1HO4zR8%2BAFuJSpx17XrRA1YwWGukUnkRofp2SrATuVxX%0AireHJzOajBiOYy2oZac%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1786446157/07ec74cd46317f8278083a317841/6448f3ee-c6df-4417-8a13-90d8c2ca3d55?expires=1789020000&signature=be23acc62a76f865c68dd692413ed4e1b5d0af7ea727b34de715c22253e45885&req=dScvEM16m4BaXvMW1HO4zR8%2BAFqAQJ127XrRA1YwWGt4nqFlIlDDWF7w1dgb%0ATWm0fclrxnpryT4flZE%3D%0A) You can also run multiple tasks in parallel. Since each task runs in its own isolated environment, you can have Claude working on several different issues or repositories simultaneously. Each task proceeds independently and creates its own pull request when complete. More than one task can work on the same repository at the same time. @@ -18,13 +18,13 @@ You can also run multiple tasks in parallel. Since each task runs in its own iso When you start a task, Claude Code on the web creates an isolated virtual machine for your work. Your GitHub repository is cloned into this environment, which comes pre-configured with common development tools and language ecosystems. -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1786446158/c092f1383826cb871493f74169d4/97b7cb98-5da2-438e-a920-e170b8b9790e?expires=1788981300&signature=92993944bbcfb7a5b6684de5282d38365a0f67e85316a341c2b6a3ac4eb49d5f&req=dScvEM16m4BaUfMW1HO4zcR0rZ49h%2BjD7DtpMiX%2FBYmQV6%2BnfxT4RN%2BQCucT%0A3p2C52dvF%2Fo8MFhZFMY%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1786446158/c092f1383826cb871493f74169d4/97b7cb98-5da2-438e-a920-e170b8b9790e?expires=1789020000&signature=3c34c67fcbc4dca4f5abe6d0af641afd1b85736d8be58ca0db26847d7d6987fb&req=dScvEM16m4BaUfMW1HO4zcR0rZ80jenA7DtpMiX%2FBYmxrdINcA3kQSxu74hc%0AZXSqD9dB6WdWmXsGnRM%3D%0A) Claude prepares the environment by running any setup commands you've defined in your repository's configuration. This includes installing dependencies, setting up databases, or running other initialization steps your project needs. If your task requires network access, maybe to install packages or fetch data, you can configure the level of internet access the environment has. Once the environment is ready, Claude begins working on your task. Claude reads your code, makes changes, writes tests, and runs commands to verify the work. You can monitor progress and provide guidance through the web interface if needed. -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1786446156/83ecf0a5b98eddc9ffc9694c50f7/353589ce-b678-441d-8909-71b45fa2d065?expires=1788981300&signature=ed46ea354120d3740ac8404ee7f54a4e95602717b5fb1b767fae4f6604396e5a&req=dScvEM16m4BaX%2FMW1HO4zVbcTGuK68XNUQl3YqgIJdaxU%2BPpVBi%2FxrVr5NhQ%0AXAOv5iE9KC11yoWaZXQ%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1786446156/83ecf0a5b98eddc9ffc9694c50f7/353589ce-b678-441d-8909-71b45fa2d065?expires=1789020000&signature=d976f2b8cd8988e3cf2e2a13d0a50dbd99e83ef7f9df9c8f31ddbe5268a443b9&req=dScvEM16m4BaX%2FMW1HO4zVbcTGqD4cTOUQl3YqgIJdakVe3i6FjJLrDxZ8PV%0Az7OT7TJvjpfuMZiByYI%3D%0A) When Claude completes the task, it pushes the changes to a new branch in your GitHub repository. You receive a notification and can review the changes, then create a pull request directly from the interface. The pull request includes all of Claude's work, ready for your review and any additional changes you want to make. diff --git a/content/support/12626668-use-quick-entry-with-claude-desktop-on-mac.md b/content/support/12626668-use-quick-entry-with-claude-desktop-on-mac.md index 8188d42ca..a5d559e90 100644 --- a/content/support/12626668-use-quick-entry-with-claude-desktop-on-mac.md +++ b/content/support/12626668-use-quick-entry-with-claude-desktop-on-mac.md @@ -40,7 +40,7 @@ When you first open the updated version of Claude Desktop, you'll see a prompt t Once enabled, double-tapping Option will open a text box where you can type your message and start a new chat. You can also click "New chat" to see your five most recent conversations. -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1893088365/2ca4b782dda90abea1fe5f4150af/CleanShot+2025-12-18+at+13_14_30%402x.png?expires=1788982200&signature=b905955283ac80ea0fe5eba564207d00c5beb6b04831a26d2513d8cf715571fc&req=dSguFcl2lYJZXPMW1HO4zWggD9ZYrp6YRC8c%2FcM5c2JOxMHpLrPClJ%2FnjU5F%0AR6IOy%2Fzp%2FdBXFhvSuuQ%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1893088365/2ca4b782dda90abea1fe5f4150af/CleanShot+2025-12-18+at+13_14_30%402x.png?expires=1789020000&signature=b9923316a0cae50daedfcb26d9e174aff0322dacac59d948f8c6b5abbbd34f6a&req=dSguFcl2lYJZXPMW1HO4zWggD9dRpJyaRC8c%2FcM5c2IygxOAj%2BtCkGOfSct1%0Ayz8XUVLy2newWI9O9lE%3D%0A) ### Enable the voice shortcut (optional) diff --git a/content/support/12883420-view-usage-analytics-for-team-and-enterprise-plans.md b/content/support/12883420-view-usage-analytics-for-team-and-enterprise-plans.md index aa18d1595..1c7fd96a5 100644 --- a/content/support/12883420-view-usage-analytics-for-team-and-enterprise-plans.md +++ b/content/support/12883420-view-usage-analytics-for-team-and-enterprise-plans.md @@ -22,7 +22,7 @@ This page includes the following analytics: - Sessions in Cowork -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2515895966/9f231a620f47d49e0ee648152189/848c1787-4eaa-4809-8fd2-1dbe2722560f?expires=1788981300&signature=b4e665bb67f7baa9c286785fc233d2323448891d7a60d2711d470b9b4628e180&req=diUmE8F3mIhZX%2FMW1HO4zZL6wa57k4RyExEG4dCAGDZc4lPCUGXehUd9Dc1D%0AIMWiWk4dloa66sMkNhM%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2515895966/9f231a620f47d49e0ee648152189/848c1787-4eaa-4809-8fd2-1dbe2722560f?expires=1789020000&signature=cae879b61d86f709888923bd84698687cccccb7d83224a783f355f06dab1a0f3&req=diUmE8F3mIhZX%2FMW1HO4zZL6wa9ymYVxExEG4dCAGDZ5tUbRyDbUAcjLFdOx%0A5xAtj%2FDlf5%2Br9CzDZ4A%3D%0A) ### Who’s using Claude? @@ -34,7 +34,7 @@ This page includes the following analytics: Use the dropdown on the **Active members and assigned seats** chart to filter by product, including Claude Design. -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2515896351/4d955858e6662c37489cc1470871/457cf159-8c2a-4403-ba22-cb92cb47e459?expires=1788981300&signature=009e5b343709ae9f7900a8c6b9d4ac086c1c742ccddc5ba4d9ed582ad2a3e63a&req=diUmE8F3m4JaWPMW1HO4zYEqej%2BgSpGsYqPRsgaNdTyozEOwpS9aD023Ywnl%0A3yMBOtrlhrPprLhkVWo%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2515896351/4d955858e6662c37489cc1470871/457cf159-8c2a-4403-ba22-cb92cb47e459?expires=1789020000&signature=02d1b3219b61e37e6202419e739c44287d32ae76ececf4ee1c75a6f4af9a56a0&req=diUmE8F3m4JaWPMW1HO4zYEqej6pQJCvYqPRsgaNdTzVSphxw94ua1JYszDk%0ADbcp2ztOzRyLZfuhZFk%3D%0A) ### How are they using Claude? @@ -48,9 +48,9 @@ Use the dropdown on the **Active members and assigned seats** chart to filter by - How agentic is their work? (beta) -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2583875713/e3cb3c329f3b643cb9a3809876b3/image.png?expires=1788981300&signature=ecfe94d5ad14470fcae7cff113f2228e18c5970b233f6b257c19956bc78dec74&req=diUvFcF5mIZeWvMW1HO4zciS3aDgkr9oDFD6TO7tG4gIxamakS4OoFoQgYsF%0A9Lwpq38ZscvyE%2B1wfcU%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2583875713/e3cb3c329f3b643cb9a3809876b3/image.png?expires=1789020000&signature=f795dbf96ad01c6745a4a3f23d70994f2c3156a643c3a47932d5b68727044edf&req=diUvFcF5mIZeWvMW1HO4zciS3aHpmL5rDFD6TO7tG4hCqAihj3%2FX%2BHFZPvaa%0AdFKTicGwt2tEpqESiZA%3D%0A) -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2515896563/abf008596ce5501297a609696362/fce5423c-4769-4b73-9a0a-c50f6407ebea?expires=1788981300&signature=045b55d2921b8f8c7d4338fa93ead0708d37f4a7e26d60cb1586fa1e0b0eee2e&req=diUmE8F3m4RZWvMW1HO4zR%2BIDo9ntfb0LS3kobW3ZgTwHhpEt%2FDS4WRfUifu%0AL6LgVJHTscvvWuC88lY%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2515896563/abf008596ce5501297a609696362/fce5423c-4769-4b73-9a0a-c50f6407ebea?expires=1789020000&signature=927aec6f555b402d62295629da35608f053f6b9f68ab01b6a6c6a7806ef7ca4f&req=diUmE8F3m4RZWvMW1HO4zR%2BIDo5uv%2Ff3LS3kobW3ZgROATYyL9BNDB8wQzeN%0A9c92MY2J%2FiQvdU9gGsU%3D%0A) ### What are the results? @@ -66,7 +66,7 @@ Use the dropdown on the **Active members and assigned seats** chart to filter by - Estimated time saved -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2515896943/dd415f03afe56ca38308ef987f86/189e8ebc-5594-4f4b-bd84-e3c11c824d5b?expires=1788981300&signature=0cdf93b58469b5d18ee444537d9b3a70d1ef765f9d7e2c98b2cb42ebdcb887f8&req=diUmE8F3m4hbWvMW1HO4zfJThCw2od1FiovaLYNN7RmYM5zllAhVa42vod1P%0AjxSYUjpAm27BQranf6k%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2515896943/dd415f03afe56ca38308ef987f86/189e8ebc-5594-4f4b-bd84-e3c11c824d5b?expires=1789020000&signature=1874f7f97edd9b3d34bf2ccca605927da4cd6b255f3ac5eb93acc10d14c475f4&req=diUmE8F3m4hbWvMW1HO4zfJThC0%2Fq9xGiovaLYNN7Rnv9ro63nmDyLvNjzx5%0AGYVN9PKCdEcppn58IXI%3D%0A) ### How much is Claude costing? @@ -82,9 +82,9 @@ This section includes the following analytics: - Spend by model (month-to-date, quarter-to-date, year-to-date, 1 year) -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2515896942/b403f2d216fc40b5195911020b8e/446b99f1-3187-4b79-b2be-9f17b1632ff8?expires=1788981300&signature=f838bd5162877ce35473feb7d4a1f3d768d1ee9dbd6ed32cff23b4315656de7b&req=diUmE8F3m4hbW%2FMW1HO4zYE%2BQ9YL5DDeWbBLGZ4vBJU3yxfcwtItPBrlwuKM%0A6Y6ApZn2%2B3M4lrRMuhU%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2515896942/b403f2d216fc40b5195911020b8e/446b99f1-3187-4b79-b2be-9f17b1632ff8?expires=1789020000&signature=f084f6e1aa3986760f6d97acdf38e4020d1057696adef965ae976116bd6c07ab&req=diUmE8F3m4hbW%2FMW1HO4zYE%2BQ9cC7jHdWbBLGZ4vBJWUyYjzineNiVdIAH95%0ANSpA2QmpI57oGczjYC0%3D%0A) -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2515896941/2239ce38639df339b24d5af1cb50/f829bc2a-ee52-4135-9b13-09ef1b7d66d6?expires=1788981300&signature=055b52102cdd94403ca62a1ba89b2e90d1fbef85a86624d465cb8c2dce3994a8&req=diUmE8F3m4hbWPMW1HO4zTz0NuILL8hTC%2BtvTPa1I7FCvA6TtYOTW3Kyj7yo%0A0vzDFERSagC52U6iYOE%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2515896941/2239ce38639df339b24d5af1cb50/f829bc2a-ee52-4135-9b13-09ef1b7d66d6?expires=1789020000&signature=003659433abb96e29c9fe2c898051ed1861c1d7a75e3fb0cca53173f81117997&req=diUmE8F3m4hbWPMW1HO4zTz0NuMCJclQC%2BtvTPa1I7FyoBYOMCvzuURoK0XT%0Ah41nNQyKQdafXlYQU6Q%3D%0A) ## Export a spend report @@ -160,7 +160,7 @@ Navigate to **[Analytics > Claude Chat](https://claude.ai/analytics/usage)** to - Top members by chats -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2515898793/405db0c492da11886c28a2b82731/71a55afc-1cef-4c50-b7e1-86775cb9a168?expires=1788981300&signature=bf7f7ad5cc70e715b70c5c848bef67635213073e13ee595288c9c8484d24db60&req=diUmE8F3lYZWWvMW1HO4zbhc8fWVaeUiTcfMEUwBBiVUqPfDiUHYjhIXeoAv%0AfVKxlkjkm8GKu0T1%2BTs%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2515898793/405db0c492da11886c28a2b82731/71a55afc-1cef-4c50-b7e1-86775cb9a168?expires=1789020000&signature=bbc306007ee4e3d03c5074162d2ccdd362cc0275174d6c5e0c73d7fc21537a03&req=diUmE8F3lYZWWvMW1HO4zbhc8fScY%2BQhTcfMEUwBBiUHLaaVJ0SVYTt7T3j1%0AB6Ourf4W4B3r2uoJVTE%3D%0A) ### Projects @@ -172,7 +172,7 @@ Navigate to **[Analytics > Claude Chat](https://claude.ai/analytics/usage)** to - Top members by project usage -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2515899610/91d93108f0767e795fb9e488e882/71607d6d-dff1-4a13-a445-aa1d79850eed?expires=1788981300&signature=0e9602e197e3445ffdf533e389e2915f945c021c25726410866f4ec776d8ea50&req=diUmE8F3lIdeWfMW1HO4zWhGoTSQkyKhExu5cYiHHN%2B9vic%2F8A7PUELOL%2FN0%0AOZqSxcV%2BDMBGtRIQcz8%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2515899610/91d93108f0767e795fb9e488e882/71607d6d-dff1-4a13-a445-aa1d79850eed?expires=1789020000&signature=8b539fe1c45ab9f1b6a2d5ac8be4961c7b342bfae684077a7ca4522f80ba29b8&req=diUmE8F3lIdeWfMW1HO4zWhGoTWZmSOiExu5cYiHHN8L9wGI5tkmXXzCehD0%0A2jsh05eSRD%2BbTRsTIo0%3D%0A) ### Artifacts @@ -182,7 +182,7 @@ Navigate to **[Analytics > Claude Chat](https://claude.ai/analytics/usage)** to - Top 10 users by artifacts generated (month-to-date, quarter-to-date, year-to-date, 1 year) -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2515899838/33d737f2357d6e485704669962ae/43faadc3-47da-4a93-bbb7-47a7983e7441?expires=1788981300&signature=4f51272af15a94bcc9d655c141c7288919603d66f0a3396b83fa48561a04c79f&req=diUmE8F3lIlcUfMW1HO4zcSk4rLbdu%2FDjHDogqK0V%2ByM4rr%2BZ2EoIvkI%2FYan%0Akbmjvp%2FJPPAQanG586o%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2515899838/33d737f2357d6e485704669962ae/43faadc3-47da-4a93-bbb7-47a7983e7441?expires=1789020000&signature=1eeed5bebea8690cd1828bf60897089042cda4ecca748013cc693c8c9ca65c5b&req=diUmE8F3lIlcUfMW1HO4zcSk4rPSfO7AjHDogqK0V%2BweJd3BhU8LTW3YmYU9%0AMiwHGIEpkva08eCw%2BaY%3D%0A) --- @@ -278,7 +278,7 @@ Navigate to **[Analytics > Cowork](https://claude.ai/analytics/cowork)** to view - Daily, weekly, and monthly active Cowork users -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2515901489/8005693d55b7fefbfe9233258d39/106c22a0-3f47-47a6-abbd-4788dd70f218?expires=1788981300&signature=acf64b451426aa6a6c3391698327b22610ee627d04cdd9bc7275123fb29929a4&req=diUmE8B%2BnIVXUPMW1HO4zX7WEoC4VUCrFSi1Z3SzLLtPQmAYtXRuj7BVbo1V%0A%2BwGBHJ7AeuWpy9vInEw%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2515901489/8005693d55b7fefbfe9233258d39/106c22a0-3f47-47a6-abbd-4788dd70f218?expires=1789020000&signature=5fc30eb76fa57962c6b59b71522587d3b8d3b4bd2bed2e9140ce941e51a624eb&req=diUmE8B%2BnIVXUPMW1HO4zX7WEoGxX0GoFSi1Z3SzLLv5TtqqCSxEDQ8os0Kv%0ASDaSFSHeVkAp3ccYJVA%3D%0A) **Note:** Cowork analytics are available alongside Chat and Claude Code data in the **[Analytics API](https://platform.claude.com/docs/en/manage-claude/analytics-api)**. @@ -294,7 +294,7 @@ Navigate to **[Analytics > Surveys](https://claude.ai/analytics/surveys)** to as On Enterprise plans with usage-based billing, when your admin turns on individual usage analytics, any member of the organization can see their own usage broken down by product, model, and skill, along with where they stand against any spend limits set for them. Individual usage analytics are available in **[Settings > Usage](https://claude.ai/settings/usage)**. -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2533906328/1f5cd0a57def40676410f8f379b4/member-usage-30d-model.png?expires=1788981300&signature=95f1993f456b0c61c382c30db1ca8293ffb8dd2b64d741c3b3a54d36e37b60dd&req=diUkFcB%2Bm4JdUfMW1HO4zfveB6fMdOrZWGUKUw6QS48cZBPYcOGKBMEXObAS%0AJzagS%2FesLu1oQm0%2BHZc%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2533906328/1f5cd0a57def40676410f8f379b4/member-usage-30d-model.png?expires=1789020000&signature=e3ee674c8ca5db3390b651dc17d274dc26b5b0c8cc31c15ff64868aa0da61047&req=diUkFcB%2Bm4JdUfMW1HO4zfveB6bFfuvaWGUKUw6QS48plrmnjmmCIim2HI61%0ADXAwA7a2JlOU8qta6u0%3D%0A) --- diff --git a/content/support/12902446-claude-in-chrome-permissions-guide.md b/content/support/12902446-claude-in-chrome-permissions-guide.md index 36ef216aa..57c28ce3f 100644 --- a/content/support/12902446-claude-in-chrome-permissions-guide.md +++ b/content/support/12902446-claude-in-chrome-permissions-guide.md @@ -28,7 +28,7 @@ In "Manually approve," Claude checks with you before it acts. What that looks li Claude creates a plan from your prompt, which you can approve before Claude starts. The plan specifies which websites you're allowing Claude to access, as well as the approach it will follow: -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1843320727/8d1c859ae9b8e0cdb536d024bf40/9bc3d239-8eb6-4bae-a032-a236f88ee606?expires=1788981300&signature=3a62acf9d5c70a9d04cc92bbafa34212efed7391bad8f6c2f2865b4b23453f34&req=dSgjFcp8nYZdXvMW1HO4zYqyZcpE9IO0gN0ADj5oqFBIUSJwc8CvLXQcvtjg%0AiX1hRepgFoQV5mkceig%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1843320727/8d1c859ae9b8e0cdb536d024bf40/9bc3d239-8eb6-4bae-a032-a236f88ee606?expires=1789020000&signature=9868f39eb1dd0ddca664420480edcaae63139fed48c6cd20377ad748fd361a41&req=dSgjFcp8nYZdXvMW1HO4zYqyZctN%2FoK3gN0ADj5oqFAJwvvjxl9%2BljG47%2Bri%0AeMFhzt%2F06lPlrkQNtO8%3D%0A) Note that Claude will only use the websites listed in the plan, so you’ll need to manually approve any additional access requests. @@ -62,7 +62,7 @@ When you choose "Skip all approvals," Claude doesn't pause to ask, and nothing c There are some websites on which Claude requires approval for every action. If you navigate to one of these sites, a **New permissions required** prompt will appear in the extension side panel, Claude Cowork, or Claude Code where Claude will ask for permission before accessing the page or taking any action. -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2604970825/d7b961271be69e7541b406df1efd/d845324e-6b4a-4f54-83b9-0bea86ec09c6?expires=1788981300&signature=d8cd196db3725d12e4ba0ce70f3ad1ca98a7f65b2fbb0aee70c3d5144164a5f6&req=diYnEsB5nYldXPMW1HO4zZ3Nqm55gC3v7A4lHPBihAWA7inOdDbtS74FzSor%0AWETPKQf1QTFtPXQuEmw%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2604970825/d7b961271be69e7541b406df1efd/d845324e-6b4a-4f54-83b9-0bea86ec09c6?expires=1789020000&signature=5078b5642db1fe3fe38f022789ddca916e17b798906b81ea4e9d737d50650c3a&req=diYnEsB5nYldXPMW1HO4zZ3Nqm9wiizs7A4lHPBihAXMG0Sp4AlubY6M6KUn%0AtDhLVMuuCoFF7Kd6cOY%3D%0A) ### Permission options diff --git a/content/support/12997503-team-plan-billing-faqs.md b/content/support/12997503-team-plan-billing-faqs.md index 0de6a0904..3060cba41 100644 --- a/content/support/12997503-team-plan-billing-faqs.md +++ b/content/support/12997503-team-plan-billing-faqs.md @@ -18,7 +18,7 @@ Your organization's billing address determines where your invoices are sent. You If you want to use a name other than the one tied to your payment method, an organization Owner should check the "Use a different name on invoices" box when adding or updating your payment method in **[Organization settings > Billing](https://claude.ai/admin-settings/billing)**: -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1922145253/f2e3d4e0fe43a2ea07e89244764c/image.png?expires=1788982200&signature=d1209d10d45cbe78bd17d5a38ca8e615315719c13385cf5c5d02f5a33b45abb9&req=dSklFMh6mINaWvMW1HO4zRZTxFLIs8nRKAqLF4ERnlUoIr%2BdLXVNb14d1QVU%0AsLi79zbrfjcBOmeoAis%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1922145253/f2e3d4e0fe43a2ea07e89244764c/image.png?expires=1789020000&signature=2e15cfba406fcfac6ba28e147389dd850cb9159a0847b8e45cf4b61aec270a44&req=dSklFMh6mINaWvMW1HO4zRZTxFPBucvTKAqLF4ERnlUACwByZC97tN2x89eq%0ApjfZ4lRxu1I0Rbzd%2FvU%3D%0A) ## When will I be billed? diff --git a/content/support/13132885-set-up-single-sign-on-sso.md b/content/support/13132885-set-up-single-sign-on-sso.md index 5a8de08ca..5b304a188 100644 --- a/content/support/13132885-set-up-single-sign-on-sso.md +++ b/content/support/13132885-set-up-single-sign-on-sso.md @@ -42,7 +42,7 @@ You can verify multiple domains for a single organization, but all domains must 3. Enter the domain(s) you want to verify in the **Update organization email domains** modal and click the “+” button: -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2498843282/561d5ceb1c3a5df75bdfee8bfc3f/d2491145-362d-490b-bdcf-66a0a7656ddc?expires=1788981300&signature=e7b3ab16899ee4fa617a283e6ea3c0aac64c1af271b130cdef9814e73bb85028&req=diQuHsF6noNXW%2FMW1HO4zSdmHnQw8sWPe3H0OpmIzWGxTO8lPQ4q%2BlddLffS%0A9o8N%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2498843282/561d5ceb1c3a5df75bdfee8bfc3f/d2491145-362d-490b-bdcf-66a0a7656ddc?expires=1789020000&signature=d6234096cb0902c227ec68c6e2f10e11199d5621dd373524749e0138c01254f4&req=diQuHsF6noNXW%2FMW1HO4zSdmHnU5%2BMSMe3H0OpmIzWGOWOLKh98yMwsKRudj%0ARzWI%0A) 4. Click “Save” when you’re finished adding domains. @@ -50,7 +50,7 @@ You can verify multiple domains for a single organization, but all domains must 6. Enter your domain in the text box and click “Continue”: -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2047042630/0617a562cd28a7ff0e607d66a30b/6bd08e1d-2b65-40ab-bc79-a257153854c1?expires=1788981300&signature=60d6b5e5b34316cf2343b74928add202999636efcc946d84daf65ffd1e8fe1f4&req=diAjEcl6n4dcWfMW1HO4zWHctRWen9CpyoyXAW0OlXr5PeL5tXuD52Z5vyJ%2B%0AL%2FnQ%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2047042630/0617a562cd28a7ff0e607d66a30b/6bd08e1d-2b65-40ab-bc79-a257153854c1?expires=1789020000&signature=4c06d271e0aacffdbed6cc634886da0720ebe3b64d642ce80142075eb02b1f6d&req=diAjEcl6n4dcWfMW1HO4zWHctRSXldGqyoyXAW0OlXr%2BhwNzWdvGU6ywcPIx%0AwUyE%0A) 7. The setup screen displays a TXT record. **Copy the full Value using the copy button**—it begins with `anthropic-domain-verification-` and is longer than what's visible in the box. In your DNS provider, add a TXT record to your domain and **Value** set to the copied string. The domain must match exactly what you entered in the previous step, including any subdomains. Add it alongside any existing TXT records; don't replace them. The value is case-sensitive, so paste it exactly. Please refer to your DNS provider's documentation on this topic. @@ -76,7 +76,7 @@ Clicking "Refresh" re-checks your DNS; it won't show Verified until the publishe If the record is correct and propagated but the status still shows Pending, contact Support. -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2047044496/b8df54a0331784cc9ae8f00112aa/bf9609c1-dc93-4665-a066-4cae2fe4b002?expires=1788981300&signature=29d424c13ba82d91f2338421dcec61a6e5232e752e4a3c4008bf2371c3b8a12d&req=diAjEcl6mYVWX%2FMW1HO4zVjmWSEJZ3W6PM2D8Zcdgrj8cSY6qyReIHLyvnju%0AVc9SqBV2iPWcB3vUH7E%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2047044496/b8df54a0331784cc9ae8f00112aa/bf9609c1-dc93-4665-a066-4cae2fe4b002?expires=1789020000&signature=0aae3e97c6acdfd9315542f750425ce49d60cd25a91d368c73ea06c3d483f5ab&req=diAjEcl6mYVWX%2FMW1HO4zVjmWSAAbXS5PM2D8ZcdgrjdGHMkdN2D68439KUs%0Apm6begh42mC7pntUwzE%3D%0A) **Note:** Once your domain is verified, you'll see a **Restrict organization creation** toggle under **Security** on the Organization and access organization settings page. Enable this if you want to prevent users from creating new Claude or Console organizations—including personal accounts—using your verified domains. @@ -116,7 +116,7 @@ For IdP-specific setup instructions, see: You can now choose to toggle on **Require SSO for Console** and/or **Require SSO for Claude,** on the **Organization and access** page, under the **Authentication** section: -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2312690200/bd2403586d4f6651ccd79e2a45af/b9f8d7ce-0def-49d9-bfb2-3a14352d7214?expires=1788981300&signature=58bb0ac2385f41fd7354e501c721c0114173374912e9caa5bef840adb3d9c388&req=diMmFM93nYNfWfMW1HO4zdAICweoCn0JItXtKivx6ZF40vPR935hluPQp5mx%0AIFq16H0tV4G6Xkst18M%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2312690200/bd2403586d4f6651ccd79e2a45af/b9f8d7ce-0def-49d9-bfb2-3a14352d7214?expires=1789020000&signature=331bb4a50dc5e71ac452b8b4b6abfa607fcbdf30aa49532dee467a779d9896fa&req=diMmFM93nYNfWfMW1HO4zdAICwahAHwKItXtKivx6ZGe0uRvTehV7I%2FYDUVu%0A8F5c7N0xLqt1ysKJz%2F0%3D%0A) When SSO is required, users must use the “Continue with SSO” option to log in to their Claude/Console accounts. When SSO is not required, they will have the option to choose “Continue with SSO” or “Continue with email.” diff --git a/content/support/13133195-set-up-jit-or-scim-provisioning.md b/content/support/13133195-set-up-jit-or-scim-provisioning.md index 653d7d16f..8acce9b8b 100644 --- a/content/support/13133195-set-up-jit-or-scim-provisioning.md +++ b/content/support/13133195-set-up-jit-or-scim-provisioning.md @@ -36,7 +36,7 @@ Use this table to help decide which provisioning mode is right for your organiza Both JIT and SCIM can be combined with **Enable group mappings** to control role or seat tier assignment based on IdP group membership. If you select either of these options for your provisioning mode, **Enable group mappings** will appear within the **User provisioning** section: -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2312706099/35d5d3ec149880a96bb7acec59f6/a4cfce55-86bf-40b0-b455-c8f412d48e9e?expires=1788981300&signature=4434f8625c3f11af22f68d662c8c6af6145d01b2e145891a3a3569819a353436&req=diMmFM5%2Bm4FWUPMW1HO4zXBDQ6NdBVt1xFMG%2BIEvQSdM12sLrM5WSrSDdZdM%0AUMkYCPFHCYwUeyS8so4%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2312706099/35d5d3ec149880a96bb7acec59f6/a4cfce55-86bf-40b0-b455-c8f412d48e9e?expires=1789020000&signature=33967a95564b73d11d729f8b176577a66360c47fd65374b906a076c4c6092d50&req=diMmFM5%2Bm4FWUPMW1HO4zXBDQ6JUD1p2xFMG%2BIEvQSczfoapjvAsjVpfboZk%0AN6tgwJb7LhCCPvKekHw%3D%0A) **Important:** Group mappings set a user’s role type and seat tier only. Users with the Custom role get their permissions from groups in Claude, and those groups sync from your IdP only when your provisioning mode is SCIM directory sync. With JIT, you need to create groups and add users to them manually in **[Organization settings > Groups](https://claude.ai/admin-settings/groups)**. If you map an IdP group to the Custom role under JIT without doing this, those users have no permissions when they log in. Learn more about **[managing groups on Enterprise plans](https://support.claude.com/en/articles/13799932)**. @@ -122,7 +122,7 @@ Once your IdP is connected, continue to Step 3. 4. Toggle **Enable group mappings** on (if it’s not already): - ![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2312714635/b57870b51e6511c8293637bceee2/da1ceabc-b6bc-451b-9cda-24ff6aa90d02?expires=1788981300&signature=6528cfd8e5f62577053ba35dc946452d62ddcaa645594589195d5184ba2bb76a&req=diMmFM5%2FmYdcXPMW1HO4zeBEbs3Rn%2FtLyb72rapuHpNOR2aRXrtNOySnuSI3%0AHKlE%0A) + ![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2312714635/b57870b51e6511c8293637bceee2/da1ceabc-b6bc-451b-9cda-24ff6aa90d02?expires=1789020000&signature=2bd2fb4e7ed70585a60ecfad68f51e6f26a00a5f3eb73b8cb0d92432ca566856&req=diMmFM5%2FmYdcXPMW1HO4zeBEbszYlfpIyb72rapuHpPUyT%2FW5Fds582xnbVS%0AWtOC%0A) 5. In the **Enable group mappings** section, click “Add” next to each role and select the corresponding group from your IdP in the dropdown. @@ -174,7 +174,7 @@ Verify you have enough seats purchased and available to add members to your org. 4. **For SCIM:** Click "Sync" to prompt an immediate sync, or wait for the automatic sync cycle: - ![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2312717421/c97fce49ad17d4660880a05fbaaf/59fbfa2a-1072-4662-8ca5-102970d5a795?expires=1788981300&signature=6023764d6452c067bfde35f1644d6107209220c507a62cba046dbfd32937c187&req=diMmFM5%2FmoVdWPMW1HO4zZ9La1WkEcvB5hujYvMis4dicMk2Yi1LN0Z%2FMlK8%0AI3JP%0A) + ![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2312717421/c97fce49ad17d4660880a05fbaaf/59fbfa2a-1072-4662-8ca5-102970d5a795?expires=1789020000&signature=6c481056854314cd95f21fef9fd8dd8fd9a66318d735afec2f00a8e0d799c795&req=diMmFM5%2FmoVdWPMW1HO4zZ9La1StG8rC5hujYvMis4eH1bsb7Ex5ooQPoLG%2B%0AMetx%0A) ### Users mapped to the Custom role can't access anything after logging in diff --git a/content/support/13163631-configuring-session-security-settings.md b/content/support/13163631-configuring-session-security-settings.md index 603a9f21c..fdd418c95 100644 --- a/content/support/13163631-configuring-session-security-settings.md +++ b/content/support/13163631-configuring-session-security-settings.md @@ -18,7 +18,7 @@ Session duration controls allow Enterprise and Console Admins to set a maximum s 5. Confirm your selection by clicking “Enable.” -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1888469436/1725e63ea1a2615948faecf4ec73/9bd276a1-7329-414d-87a1-d04dac93fff7?expires=1788981300&signature=8ae5478768ad821e7b728c5673759d9c117082536587d8c22c5063ff8877c7c8&req=dSgvHs14lIVcX%2FMW1HO4zQNx6%2BouS1tTg%2F6XaftFnjyKTuFAi6TYy5AkGngI%0AOqMvPsBalO1baLTYdEk%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1888469436/1725e63ea1a2615948faecf4ec73/9bd276a1-7329-414d-87a1-d04dac93fff7?expires=1789020000&signature=5da7fdc9cc6369357bd8ed79201e551828ccd0a0f020a7f53dd03ed1f23784c9&req=dSgvHs14lIVcX%2FMW1HO4zQNx6%2BsnQVpQg%2F6XaftFnjyT34oZFyJYw57PaYVq%0AyitNl2fj9wrznN0cnWU%3D%0A) ### For Console Admins @@ -32,7 +32,7 @@ Session duration controls allow Enterprise and Console Admins to set a maximum s 5. Confirm your selection by clicking “Enable.” -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1888469435/7a766bbe02e61c7d8f05deb5b8f0/b0bda400-47c6-43dd-9907-131ebe180b36?expires=1788981300&signature=74b7ffa715b3ad7f6e4bb161333a5841401be2715b8c6b9f978be483f4f7b32e&req=dSgvHs14lIVcXPMW1HO4zWzx2LE%2FL34iXZ5D7eVpMtcK5TQVfB7iCkt1UxhX%0A0%2FiI0x%2BO2vwSNzWnQL0%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1888469435/7a766bbe02e61c7d8f05deb5b8f0/b0bda400-47c6-43dd-9907-131ebe180b36?expires=1789020000&signature=a8b6ee557f201d3afec9111d3b1e538e6f75ed66c3f1aa957298731ff7db62b4&req=dSgvHs14lIVcXPMW1HO4zWzx2LA2JX8hXZ5D7eVpMteRINtdopuJY2F4yAfr%0Agoy0HdMj7iGHLaghTmk%3D%0A) ### What happens after enabling shortened session length? @@ -50,7 +50,7 @@ You can change the session duration at any time by selecting a new value from th - Sessions scheduled to expire beyond the new duration will have their expiration shortened accordingly. -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1888469437/46ac5bc55484ca01556d87a5ade7/b01a7651-ad65-4b32-93ff-16dbc9ca97c0?expires=1788981300&signature=85e09faf578529c751dffe0ce15394d5cf1a0418c8191b87b31c165846c4b2b9&req=dSgvHs14lIVcXvMW1HO4zZ7mWsCS7zigA00cbyPOLDWDE3pQdIJmGMyoEnvJ%0AM%2BwzyY5Ax1a1AiR24fM%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1888469437/46ac5bc55484ca01556d87a5ade7/b01a7651-ad65-4b32-93ff-16dbc9ca97c0?expires=1789020000&signature=3f53467d77a4827209f7d0efecd2946b937726e102fc283a7690ddbcf98e25c1&req=dSgvHs14lIVcXvMW1HO4zZ7mWsGb5TmjA00cbyPOLDVULuUHkRFNqHr3N2TV%0AmRnEuk%2Bt942eRyhIEKQ%3D%0A) ## Disabling session length settings diff --git a/content/support/13189465-log-in-to-your-claude-account.md b/content/support/13189465-log-in-to-your-claude-account.md index a60270eeb..3f0246a09 100644 --- a/content/support/13189465-log-in-to-your-claude-account.md +++ b/content/support/13189465-log-in-to-your-claude-account.md @@ -2,7 +2,7 @@ When you open Claude on a web browser ([claude.ai](http://claude.ai)), the desktop app, or a mobile app, you will see two different options for logging in to your Claude account. -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1893216804/f2209c3ec6cf4fc2e803d13bbc9d/40520c9e-ff82-4a7c-adca-5a064fe18d8c?expires=1788982200&signature=5aa2c20705b741772c7bbec4ef013f648054a201eb5f45e684c11516ae26a199&req=dSguFct%2Fm4lfXfMW1HO4zXg5BoqF6xC2zWhrqpWiTMnEykd7GqdWh52puYQ0%0ADiFoL7uOdFQbwGEnoRM%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1893216804/f2209c3ec6cf4fc2e803d13bbc9d/40520c9e-ff82-4a7c-adca-5a064fe18d8c?expires=1789020000&signature=4032c2244d74bf6204729713a4081b1b0af0ced13c6cc8d0b2060179d4eaef43&req=dSguFct%2Fm4lfXfMW1HO4zXg5BouM4RK0zWhrqpWiTMm6Qg%2B%2BPbcCp%2Fk7CPNH%0AdiG%2F2eS8JMPrjMUv0Qk%3D%0A) ## Continue with Google diff --git a/content/support/13325567-account-management-faqs.md b/content/support/13325567-account-management-faqs.md index ea439bda3..036e4c47c 100644 --- a/content/support/13325567-account-management-faqs.md +++ b/content/support/13325567-account-management-faqs.md @@ -44,6 +44,6 @@ The email domain that was used to create your Team or Enterprise plan organizati Owners can remove domains by opening up the same modal and clicking the trash can icon to the right of the domain: -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2053873852/1cbccea3b7067e03205f2ff8546b/CleanShot+2026-02-11+at+11_16_07%402x.png?expires=1788982200&signature=93978f3db99bae5fc2b2de09ab3c74f9fade99f74d53075b3552bc0a7bcc483b&req=diAiFcF5nolaW%2FMW1HO4zUrhFuORYQoYkeFUnrkrQZg4r8X9KwniT%2Fh8xAFA%0AHrnOJPFPx1MJ8arfDhk%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2053873852/1cbccea3b7067e03205f2ff8546b/CleanShot+2026-02-11+at+11_16_07%402x.png?expires=1789020000&signature=f50e423fd0b77d63c8089dadd4350a4950df7357014e1dbc2b9f58346d84d1e4&req=diAiFcF5nolaW%2FMW1HO4zUrhFuKYawgakeFUnrkrQZi4bnj7xSp0YYSKoCHv%0A0Cl9Quz53YES7WcBAGA%3D%0A) While the account creator must use a business email address, you can add public domains like @gmail.com, @yahoo.com, and @hotmail.com as allowed domains for other members of your organization. \ No newline at end of file diff --git a/content/support/13345190-get-started-with-claude-cowork.md b/content/support/13345190-get-started-with-claude-cowork.md index 8a4556cdc..79b309ac6 100644 --- a/content/support/13345190-get-started-with-claude-cowork.md +++ b/content/support/13345190-get-started-with-claude-cowork.md @@ -178,7 +178,7 @@ To set global instructions: 3. Type your instructions in the text box and click "Save": -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2525926874/15324ac4155d7802272e8bdef04b/ec66cd09-a4db-4f1d-8f30-226c9d126333?expires=1788981300&signature=7bbb3d72ba76a47751530c30ee459cbb1214b166291badffbe85638792f25448&req=diUlE8B8m4lYXfMW1HO4zcDl6tDlPlCz8iWjaktE941ioGi9yUQy2C2Ln9Iq%0AVT2OgxxSAuzJ8oy4l1Q%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2525926874/15324ac4155d7802272e8bdef04b/ec66cd09-a4db-4f1d-8f30-226c9d126333?expires=1789019100&signature=bbefbaae1e62e40a0faf3d442147e6b9d9770cc2de8b680f65e393dc14e09958&req=diUlE8B8m4lYXfMW1HO4zcDl6tHsN1ix8iWjaktE941XtWXFRFbvVrg25qi3%0At%2BKitXLKsVwH15QCP64%3D%0A) ### Folder instructions diff --git a/content/support/13346458-customizing-your-console-appearance-settings.md b/content/support/13346458-customizing-your-console-appearance-settings.md index a45109550..bbf8399d0 100644 --- a/content/support/13346458-customizing-your-console-appearance-settings.md +++ b/content/support/13346458-customizing-your-console-appearance-settings.md @@ -8,4 +8,4 @@ 3. Select from Light, System, or Dark under **Color mode**. -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1922579101/ede30d38dca693c59f9c15d79e69/CleanShot+2026-01-08+at+15_45_20%402x.png?expires=1788982200&signature=fb70171820b4946d381d403c6ee1ed54727c1b54079a5c300ef84770ee0329e0&req=dSklFMx5lIBfWPMW1HO4zRpFC8ANRRB0O9Kw38RlAYIn1O5wBgu7ajL4VaUf%0AlmxAPRnU%2FyGx0ME%2FIxE%3D%0A) \ No newline at end of file +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1922579101/ede30d38dca693c59f9c15d79e69/CleanShot+2026-01-08+at+15_45_20%402x.png?expires=1789020000&signature=121f0e410af4746bc6d7cad42c8f9d5ca071c789b4e6b1a95d70233e34126b47&req=dSklFMx5lIBfWPMW1HO4zRpFC8EETxJ2O9Kw38RlAYLH6OqSeD2SomNSSq55%0AmayACGsVfRCDYO0hTZY%3D%0A) \ No newline at end of file diff --git a/content/support/13371040-log-in-to-your-console-account.md b/content/support/13371040-log-in-to-your-console-account.md index b86d424b2..26ec77033 100644 --- a/content/support/13371040-log-in-to-your-console-account.md +++ b/content/support/13371040-log-in-to-your-console-account.md @@ -2,7 +2,7 @@ When you navigate to the **[Claude Console](https://platform.claude.com)**, you will see two different options for logging in to your Console account. -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1935026646/d90d1613a3dbe763fef5abb96e3c/image.png?expires=1788982200&signature=50a957fd2a73952351f80c1b282a3d4f0e4f4ec5d25b25e5db9a05308b1e608a&req=dSkkE8l8m4dbX%2FMW1HO4zcrI54HlqIIP8vUNcPt4%2B71DaScoNOaoPeiKDf%2Bw%0AJlVBQ8604D%2FWAzABYvM%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1935026646/d90d1613a3dbe763fef5abb96e3c/image.png?expires=1789020000&signature=3e29f5df0fc997f73ce3d2abd76b0b93d49f58d9ed0b8ed4c04ca554c00f38b9&req=dSkkE8l8m4dbX%2FMW1HO4zcrI54DsooAN8vUNcPt4%2B70IXAo7t6HamvH7I8AZ%0AVJtpaMPIBTNtkusnos8%3D%0A) ## Continue with Google diff --git a/content/support/13641943-visual-and-interactive-content.md b/content/support/13641943-visual-and-interactive-content.md index eb5e004b9..812039553 100644 --- a/content/support/13641943-visual-and-interactive-content.md +++ b/content/support/13641943-visual-and-interactive-content.md @@ -18,7 +18,7 @@ Claude can show current weather conditions and forecasts when you ask about the Claude automatically displays temperatures in Fahrenheit for US locations and Celsius for everywhere else. -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2040544927/3a9c695b24df387ecdd766ad308c/8be9f393-dcb0-4ff8-89e8-5fa47bedaa38?expires=1788982200&signature=6b6a2669758aa3c95a5f30d0d3e60a2e23a257e122f6c45abcaca50a9d691fd4&req=diAjFsx6mYhdXvMW1HO4zXlB7Taz3RqKdgndksVD5R2xNdxslaYdlwR3VZ2l%0AE9saLBsdM0PsuWzMmHo%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2040544927/3a9c695b24df387ecdd766ad308c/8be9f393-dcb0-4ff8-89e8-5fa47bedaa38?expires=1789020000&signature=63a06425c292b0a24b7432ffd8024ba2e90118dda0eb4135efb502f5251e7bf2&req=diAjFsx6mYhdXvMW1HO4zXlB7Te61xiIdgndksVD5R0eeaJETW18m%2BhHaKtV%0AWeph9ConBQFIPvZS064%3D%0A) Weather is powered by Google Maps (). @@ -28,7 +28,7 @@ When you ask about recipes, Claude can display formatted recipe cards that are e **Note:** Visual recipe cards are available on web and desktop only. On mobile, Claude provides recipe information as text in the conversation. -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2040544929/12f4c51eda7779d65d3ea2c7ab16/d0f4a314-cff8-421a-b401-10c2bf50374e?expires=1788982200&signature=4b7b9c878908f62a84aa034c9debcf8d86209ba0c5ad02476c90f960f8c828c8&req=diAjFsx6mYhdUPMW1HO4zUQpe7gc2laVrIPm%2FImZVg0a1bElShaZMBc6oRR8%0At3OYzbcKyypFmedZYco%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2040544929/12f4c51eda7779d65d3ea2c7ab16/d0f4a314-cff8-421a-b401-10c2bf50374e?expires=1789020000&signature=7c1a156bea83f9d6285459a5ad616435bc4f0b60c8ac5e6afeead7121bb99def&req=diAjFsx6mYhdUPMW1HO4zUQpe7kV0FSXrIPm%2FImZVg1YIxfaTXZrWjwnfG2m%0AHGmOIlVyDxIE0%2FcCZGo%3D%0A) ### Custom visuals @@ -76,7 +76,7 @@ For example, if you ask Claude to help you plan a trip, it might ask you to: This content appears at the bottom of the chat. You can still type a response if you prefer. -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2040544930/9ad066e137d11e4b559b0217e12d/9bf30d2d-1715-42b3-9da5-2a9298f41f08?expires=1788982200&signature=8f11c2cc3bea84d66b07da3d0168b660c46285f412c73ad3e2cb6ff0a8bdf2ed&req=diAjFsx6mYhcWfMW1HO4zWmF5%2F23YRygx4wz0C7CTAKNhjh9EdejkcesMB2M%0A1Wsxm80aqFa0U2vi7wA%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2040544930/9ad066e137d11e4b559b0217e12d/9bf30d2d-1715-42b3-9da5-2a9298f41f08?expires=1789020000&signature=7f4f9a9eec510a44e3b0f21d233b2c35f79cfdb196ef5613e72e8d2ba37317c7&req=diAjFsx6mYhcWfMW1HO4zWmF5%2Fy%2Bax6ix4wz0C7CTAIII2dPmrZxfrE39C2E%0APawdbvqP6BUcf5CTtYk%3D%0A) --- diff --git a/content/support/13756069-public-sector-faqs.md b/content/support/13756069-public-sector-faqs.md index 09fd8f24b..38330e24f 100644 --- a/content/support/13756069-public-sector-faqs.md +++ b/content/support/13756069-public-sector-faqs.md @@ -6,7 +6,7 @@ Select your product based on both your technical/functional requirements, and also your compliance/security/deployment environment requirements. Here is a list of options: -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2197717161/79965a24090029e9e58c727c3c24/pubsec-product-matrix_png+%281%29.jpg?expires=1788982200&signature=54bcbe739b4159a9b4be713e424eabb0ac9f8dc2ee973db8f29d9d2c5e68b91d&req=diEuEc5%2FmoBZWPMW1HO4zU94LlEsFd8y2WxtU42UVC3Hm7X2U1TpLmxzJzny%0Ad6fKUVZwunWYhSuyqCg%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2197717161/79965a24090029e9e58c727c3c24/pubsec-product-matrix_png+%281%29.jpg?expires=1789020000&signature=2235cc0fb7075c4d9ccf97f6e101074294a4f608931a49d9518108e481013088&req=diEuEc5%2FmoBZWPMW1HO4zU94LlAlH90w2WxtU42UVC14VgSfmCiFcCBgjXex%0ANzIquFlaC7qEeReC76g%3D%0A) ### What is Claude for Government (C4G)? diff --git a/content/support/13837433-manage-plugins-for-your-organization.md b/content/support/13837433-manage-plugins-for-your-organization.md index 590f474fc..c050d66f4 100644 --- a/content/support/13837433-manage-plugins-for-your-organization.md +++ b/content/support/13837433-manage-plugins-for-your-organization.md @@ -112,7 +112,7 @@ Your personal GitHub token is verified to confirm you have access, then Cowork u An initial sync runs automatically when you connect a repository. After that, organization owners can opt-in to continued automatic updates per marketplace by going to **[Organization settings > Plugins](https://claude.ai/admin-settings/plugins)**, clicking the menu button in the upper right corner of the marketplace, then toggling "Sync automatically" on: -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2193200015/a239033a9ab19fbd39f1a0d9edce/CleanShot+2026-03-23+at+11_41_31%402x.png?expires=1788981300&signature=cc6d57a79c624f9a4598b69930a7e2b2072b0aa44c7ab90d9fd95b33d21eccc8&req=diEuFct%2BnYFeXPMW1HO4zUYv5tXwyX4XRDH%2FtUo5ov6vw2kO8%2FcsDvTPlwPR%0AmRmDhapZbzVQerz%2Fgz0%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2193200015/a239033a9ab19fbd39f1a0d9edce/CleanShot+2026-03-23+at+11_41_31%402x.png?expires=1789020000&signature=9bce8b8b1c3d3ff102f9339fc8a5bd825f113abb982bf28bb0b7b919bc783f19&req=diEuFct%2BnYFeXPMW1HO4zUYv5tT5w38URDH%2FtUo5ov4RLICeOkiLXCs%2BeaVg%0AjEauYfJE5B7f0vW6IBg%3D%0A) Enabling automatic sync creates a webhook on the connected repository. The person turning the toggle on must have admin-level access to that repository on GitHub. This is checked through their personal GitHub connection, which is separate from the Claude GitHub App installation. Without admin access, the page shows "Cannot access repository. Ensure the repository exists and the Claude GitHub App is installed," even when the App is installed correctly and manual updates work. diff --git a/content/support/13837440-use-plugins-in-claude.md b/content/support/13837440-use-plugins-in-claude.md index d6ca83750..b608beb8f 100644 --- a/content/support/13837440-use-plugins-in-claude.md +++ b/content/support/13837440-use-plugins-in-claude.md @@ -40,7 +40,7 @@ In Cowork, open the "Cowork" tab first, then open **Customize**. You can also upload a custom plugin file if you built one yourself. On Team and Enterprise plans, a colleague can share a plugin with you directly instead of sending you the file. See **[Use a plugin shared with you](#h_ef985546b4)** below. On Claude Desktop and in Cowork, plugins you add yourself are saved locally to your computer. -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2100409211/fc01614dde1a616fa31ffaa9cb04/47bacf5b-a810-45b5-a468-9769f1a58ef8?expires=1788981300&signature=7cd5812e16d7430e082a3061ef6ee7f40497fe284e94a3c4b5a888e0a7b508a5&req=diEnFs1%2BlINeWPMW1HO4zZF3Ih3UO%2FRWxakFVfq5WwyMntHncQ1OFxumEJ9D%0ATDZ%2FnlkXcOaWnCOb%2BBs%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2100409211/fc01614dde1a616fa31ffaa9cb04/47bacf5b-a810-45b5-a468-9769f1a58ef8?expires=1789020000&signature=be36c1e48af81285988b5681593d42c915ba8b9fe7bb148579126edbed0eb004&req=diEnFs1%2BlINeWPMW1HO4zZF3IhzdMfVVxakFVfq5WwwO4etTJbBgEnAmHO75%0AWn0EILcEes7Xp6BNhaw%3D%0A) If you're on the Enterprise plan and your organization has skill scanning turned on, plugins are checked for malicious content when they're installed or updated. A plugin with malicious content is blocked, and one that may carry risk shows a caution banner. Learn more about **[skill and plugin scanning](https://support.claude.com/en/articles/15927065)**. @@ -50,7 +50,7 @@ If you're on the Enterprise plan and your organization has skill scanning turned Each plugin you install adds skills you can use while working with Claude. Type "/" or click the "+" button to see the available skills from your installed plugins, in chat and in Cowork. Click any skill to see its details. -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2157396844/4a790e10f5b88df770783df1d7e9/image.png?expires=1788981300&signature=69491b427f0b70fff4f13e82eec677881571170c1ef94d6c48f26786005b3d30&req=diEiEcp3m4lbXfMW1HO4zf4NBP71i0GXmKUxugP2BQv5i4%2F2nNTgGl%2FngA2%2F%0A%2FlaiKOrsq31U3AkCYbg%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2157396844/4a790e10f5b88df770783df1d7e9/image.png?expires=1789020000&signature=355f7083bec711d5db36dde9d87ef580f8e4d2d7a4897162a35a1c7119f8b8cc&req=diEiEcp3m4lbXfMW1HO4zf4NBP%2F8gUCUmKUxugP2BQtqAUKq6kc%2BCw3nJujs%0Av%2Be53D6JPbxMzeGMwCo%3D%0A) --- diff --git a/content/support/13854387-schedule-recurring-tasks-in-claude-cowork.md b/content/support/13854387-schedule-recurring-tasks-in-claude-cowork.md index 2705365f4..dfd9fdb93 100644 --- a/content/support/13854387-schedule-recurring-tasks-in-claude-cowork.md +++ b/content/support/13854387-schedule-recurring-tasks-in-claude-cowork.md @@ -52,7 +52,7 @@ There are two ways to create a scheduled task: 6. You can explicitly confirm you want to schedule the task when prompted by Claude by clicking “Schedule": -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2104085399/4dda7e6f76026fd827db0b9323a9/f20635bf-15e7-4978-a213-5b9f67e9fb9a?expires=1788981300&signature=30a37824d8a793761c9f7476332f670bb60c05f0dba5e1851e3b55ffac2cfc69&req=diEnEsl2mIJWUPMW1HO4zeLJBk3t9%2BuEPx%2FSrZI7l8z3csNZ5FupBHTitiGb%0AS9O4%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2104085399/4dda7e6f76026fd827db0b9323a9/f20635bf-15e7-4978-a213-5b9f67e9fb9a?expires=1789020000&signature=8843f6214c702d9854b374b72d050286196e72e48850b0f23726f15476402d95&req=diEnEsl2mIJWUPMW1HO4zeLJBkzk%2FeqHPx%2FSrZI7l8wj5cQvBGAkZAXFWlz6%0AdizU%0A) 7. Claude will create and schedule your task, and it will be added to the **Scheduled tasks** page. diff --git a/content/support/13947068-assign-tasks-from-anywhere-in-claude-cowork.md b/content/support/13947068-assign-tasks-from-anywhere-in-claude-cowork.md index 7477493d8..a127d35c2 100644 --- a/content/support/13947068-assign-tasks-from-anywhere-in-claude-cowork.md +++ b/content/support/13947068-assign-tasks-from-anywhere-in-claude-cowork.md @@ -48,11 +48,11 @@ Follow these steps to get started: 5. You’ll land on a page describing the functionality. Click “Get started”: -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2169954086/419674f781edb2977b93cce062b4/93b1893c-d79a-4eb6-b2f1-2fe3e043bd90?expires=1788981300&signature=993d51c3a88f8143dabcb02ce10f93c800a35866ab5403bdec9f668499a84ed3&req=diEhH8B7mYFXX%2FMW1HO4zSZP0pqCHQ%2F8B32drIe5EDkQyZSOeXc7xKqIv7ZH%0AMQze%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2169954086/419674f781edb2977b93cce062b4/93b1893c-d79a-4eb6-b2f1-2fe3e043bd90?expires=1789020000&signature=ccaa5c37ea25698409bbdb7fb057bead0e801b7e4613e748bc2ba846097f1535&req=diEhH8B7mYFXX%2FMW1HO4zSZP0puLFw7%2FB32drIe5EDmNMJnSNA6yKFpAbnap%0Ah85N%0A) 6. On the next screen, you can give Claude access to your files and keep your computer awake by toggling those on: -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2169955082/de4053ee0eab8fcb9263584bb171/d39b77da-1a69-4682-9fdb-7ed488f236b0?expires=1788981300&signature=e82701df6a3fc445a2ef6379467fc986e80ec908eeae413dd5d038c9644d27cc&req=diEhH8B7mIFXW%2FMW1HO4zaZWs9KRVQAdepuGRb1rD3LrWgZ%2FQUTpVsnqtYVT%0Ak5v4%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2169955082/de4053ee0eab8fcb9263584bb171/d39b77da-1a69-4682-9fdb-7ed488f236b0?expires=1789020000&signature=2135dc35d4336b7cf174742d6862cac18f58843bca8319cf16d2373cea5fc9fc&req=diEhH8B7mIFXW%2FMW1HO4zaZWs9OYXwEeepuGRb1rD3KAg5YpkYKQAPfxrbhM%0AJRNT%0A) 7. Click “Finish setup.” diff --git a/content/support/14116274-organize-your-tasks-with-projects-in-claude-cowork.md b/content/support/14116274-organize-your-tasks-with-projects-in-claude-cowork.md index ec9cddfda..b6c360a68 100644 --- a/content/support/14116274-organize-your-tasks-with-projects-in-claude-cowork.md +++ b/content/support/14116274-organize-your-tasks-with-projects-in-claude-cowork.md @@ -22,23 +22,23 @@ Cowork is available for paid plans (Pro, Max, Team, Enterprise) on: Find **Projects** in the left navigation panel and click the “+” button to see the three different ways to create a project: -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2183720240/6f6ef438913391703598d86d606c/CleanShot+2026-03-20+at+09_11_43.png?expires=1788981300&signature=ee5ae3a817499ff5cb1fb44acc6caf809a68a9c582e344db6731893967aaaa90&req=diEvFc58nYNbWfMW1HO4zcOgiw2z2Sl2ZwSvwegvtgyRXmX5OtWXecwIohQQ%0AYy25aJSO8NfJh9%2Bpj9E%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2183720240/6f6ef438913391703598d86d606c/CleanShot+2026-03-20+at+09_11_43.png?expires=1789020000&signature=44b44e1088fffe6669a61f1036e80836dbaa6182c384fe924cf873f01d96b819&req=diEvFc58nYNbWfMW1HO4zcOgiwy60yh1ZwSvwegvtgzCxq2FDIy89vg6p%2BIh%0AahHiFjclSGhidm2vJVo%3D%0A) ### Start from scratch Selecting “Start from scratch” allows you to set up a new folder with instructions and files: -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2177090014/07832b50003cf7fd3b4e9c7c448b/3385d9b8-c3e7-42b9-ae3f-4d213baa53a7?expires=1788981300&signature=5c3d2e57350bad4cf397cb004fcf7a28fcd3aca326641345a638ef911c49fbee&req=diEgEcl3nYFeXfMW1HO4zZCoQ4VMRnSVvb0suCMAnj0uLQuaE1P6aXyUO5uP%0AVnoz2CyJfI6SsadyrIo%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2177090014/07832b50003cf7fd3b4e9c7c448b/3385d9b8-c3e7-42b9-ae3f-4d213baa53a7?expires=1789020000&signature=4047e3b64031db992e3e7269919f72c81085dd38ae217fab447d390c507bb37c&req=diEgEcl3nYFeXfMW1HO4zZCoQ4RFTHWWvb0suCMAnj0fcrGvmaH5%2FpLhIjoo%0ApA3iEWycht%2Byt04JLAs%3D%0A) ### Import from a Claude project After selecting “Import from project,” you’ll see a “Search projects in Chat…” field: -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2183717962/acdc11bcc825ae76a13f508365bc/CleanShot+2026-03-20+at+09_12_08.png?expires=1788981300&signature=c0e6c755b0af9033815d39a0a8833b10bbb1149a6a6e8d9242082c15eba75ace&req=diEvFc5%2FmohZW%2FMW1HO4zQQ7UGtUwpkcjggUT7FIJz95KRMVT82LWVBXU7NS%0APd%2BnM6dO9ETmF9HlRy8%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2183717962/acdc11bcc825ae76a13f508365bc/CleanShot+2026-03-20+at+09_12_08.png?expires=1789020000&signature=422880b8d7a69e9435db7139ba22ca11039afa5b71967aba146302ae5d1a0187&req=diEvFc5%2FmohZW%2FMW1HO4zQQ7UGpdyJgfjggUT7FIJz80uLz%2BnGOLf1VOEmpk%0AqtFtb1YI5JX%2FkoOwVrQ%3D%0A) Clicking into the field will display a drop-down showing your recent projects, but you can also use it to search all your projects. After you select a chat project (bulk upload is not supported), you can name the new Cowork project and choose where to save it on your computer: -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2183727973/7a25430123d9e13e7c3cdd411f70/CleanShot+2026-03-20+at+09_13_41.png?expires=1788981300&signature=573f946ff89435bd46bde49caa45a8a37efd6f370e20e37c5d13cccb18d586ee&req=diEvFc58mohYWvMW1HO4zU%2FKAitP9CLPI7f%2FdY0VL6itgeZVrjEJiCanp1OY%0AjuBSKxbUmnvSgEpyBeE%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2183727973/7a25430123d9e13e7c3cdd411f70/CleanShot+2026-03-20+at+09_13_41.png?expires=1789020000&signature=3218080d4228c2a992bb5ad1262e4af5cbf9b61f39f654e5d95b35308640a258&req=diEvFc58mohYWvMW1HO4zU%2FKAipG%2FiPMI7f%2FdY0VL6hB29Hs5Tge4w5%2F2VwX%0AGXxppQNF%2FI9Fq8aidDU%3D%0A) Clicking “Create” will transfer the files and instructions from your existing Claude project and create a new Cowork project. @@ -46,11 +46,11 @@ Clicking “Create” will transfer the files and instructions from your existin If you select “Use an existing folder,” you’ll be prompted to pick a file to use as context for the new Cowork project: -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2177087935/2f0052dae601d0b7fecdc029e1c3/2e3ca9e7-23b1-436e-bbdb-edcd31c41f15?expires=1788981300&signature=6db9729e9eca59d875e0856491779450e75754500cb515398045eaafdbe23e93&req=diEgEcl2mohcXPMW1HO4zejrnz7fHSJcuv8e2Xj2xOW3NoauUZ9aMx%2BElybH%0AYoh1g1wJ5957gNaOEIM%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2177087935/2f0052dae601d0b7fecdc029e1c3/2e3ca9e7-23b1-436e-bbdb-edcd31c41f15?expires=1789020000&signature=b840ce7281094d5e6ebb0c3c10be87e33c75ffb05bac86d7ecf0d875d86eb090&req=diEgEcl2mohcXPMW1HO4zejrnz%2FWFyNfuv8e2Xj2xOUgFbyCVSgiQqS%2FFXwj%0A2jXR9ZUwa1%2B6WnAQP9M%3D%0A) After selecting a folder, you can name the new Cowork project, choose where to save it on your computer, add instructions, and attach any additional files. Click “Create” to start using your new project: -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2177087937/f59dbe3fc28448a9597ea097cb4d/96a59acb-4054-4b4b-a208-751f9711f535?expires=1788981300&signature=849047f39308e52015aa0cc9a148d361631c6a32466ee3188912f75b3f9c06e1&req=diEgEcl2mohcXvMW1HO4zUq4V%2Bu9i6M5MfnqHouW6MJBDgtLvEqJYwGvztb1%0AiarwaSu9t9xDhEOY0lU%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2177087937/f59dbe3fc28448a9597ea097cb4d/96a59acb-4054-4b4b-a208-751f9711f535?expires=1789020000&signature=34d2b4c15a64884fbde58ce004ba5de0b0eb9f67d2302e47e9cb5cd9e9fda83d&req=diEgEcl2mohcXvMW1HO4zUq4V%2Bq0gaI6MfnqHouW6MKKGTB4qqtDAmNxXwX3%0ApealCWK6THPcPVu%2Fr%2F4%3D%0A) --- diff --git a/content/support/14499648-how-scim-sync-works-for-enterprise-organizations.md b/content/support/14499648-how-scim-sync-works-for-enterprise-organizations.md index 2780a728c..9efa282c0 100644 --- a/content/support/14499648-how-scim-sync-works-for-enterprise-organizations.md +++ b/content/support/14499648-how-scim-sync-works-for-enterprise-organizations.md @@ -50,7 +50,7 @@ You can trigger a manual sync from two places in your admin settings. 2. Click "Check for updates" under **SCIM sync**: -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2312613548/44cd5970ee3c3b2c7f8dcd592d71/image+%2824%29.png?expires=1788981300&signature=b90d0adf6f5da01f16502523e1d9ca65b8b1d86b3c6067a4779ea1879c6aacfb&req=diMmFM9%2FnoRbUfMW1HO4zW4gbD2kPcy3rgfl7PnOiumoh5KZ7T8LgIDhluJs%0AzMbN%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2312613548/44cd5970ee3c3b2c7f8dcd592d71/image+%2824%29.png?expires=1789020000&signature=21e8789c7f7ea19465b1bc01eeff3bc9658594dbe72d573266929badddb44797&req=diMmFM9%2FnoRbUfMW1HO4zW4gbDytN820rgfl7PnOiunzRjYtFX7CZ2DBKiWa%0A8v9f%0A) 3. Select whether to sync members, groups, or both. @@ -62,7 +62,7 @@ You can trigger a manual sync from two places in your admin settings. 3. Select whether to sync members, groups, or both: -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2312608119/e4b0ef4f309f3c4eac8311a6ef47/image.png?expires=1788981300&signature=ab8b3e659883bf794b0e0e790975e5b7c983dac446f1a676e461964e03ed7d40&req=diMmFM9%2BlYBeUPMW1HO4zX%2F4frL5wzoc43OpyTHzM9R%2BL77mbDVJvYeuLHLN%0ApGHw%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2312608119/e4b0ef4f309f3c4eac8311a6ef47/image.png?expires=1789020000&signature=ef1f58c85ad89f4a695ebc3f361db86c362a691659a2bcf5267ada99f611f9c4&req=diMmFM9%2BlYBeUPMW1HO4zX%2F4frPwyTsf43OpyTHzM9SAWZ5hHyxv14ZBvXd%2F%0AOXbJ%0A) **Note:** If you trigger a manual sync while background changes are processing, your organization takes the most recent change for each member or group. If multiple changes are queued for the same member or group, you may need to resync again to make sure everything applies correctly. diff --git a/content/support/14503613-sso-login.md b/content/support/14503613-sso-login.md index d544282ca..a47d53633 100644 --- a/content/support/14503613-sso-login.md +++ b/content/support/14503613-sso-login.md @@ -47,9 +47,9 @@ Before configuring your Identity Provider (IdP), you must verify ownership of yo 3. Wait for the DNS propagation. Once the platform detects the record, the domain status will update to “**Verified**.” -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2256015862/476131c3139aec4db01b96127544/10c7a165-8b26-4443-b064-9d659659c65e?expires=1788981300&signature=1cc2449e3e64c8dcb26f14a997d78b1a672ca5bc7b6f8c473b0045eedafebec9&req=diIiEMl%2FmIlZW%2FMW1HO4zdpfuCKBElKM006zz1SmF9Ud7f2Xp3a57V8%2BhcYX%0AXvgN9ITv15GgGQ%2F4V78%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2256015862/476131c3139aec4db01b96127544/10c7a165-8b26-4443-b064-9d659659c65e?expires=1789020000&signature=2be3cdeb45a40f36acff4430f933b0b859a66d1c587021167b5d931291b0da85&req=diIiEMl%2FmIlZW%2FMW1HO4zdpfuCOIGFOP006zz1SmF9X4M%2BOPjaB12IXx19Ep%0AR9YLgvw9v%2FCcBNgFFNU%3D%0A) -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2256025910/a82e2de9382824fa9db7666f67c4/CleanShot%2B2026-04-09%2Bat%2B16_25_20-402x.png?expires=1788981300&signature=7728b0dfa7b43c98240dfbe1edb34734b388423a8162510c58c3a6b1bddf604e&req=diIiEMl8mIheWfMW1HO4zV%2BGnRE2S75Ex57dwYq5DdKe5Hv3EbiQYlfkjn5A%0A9rXwcP%2FNTvqv1HTlWZg%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2256025910/a82e2de9382824fa9db7666f67c4/CleanShot%2B2026-04-09%2Bat%2B16_25_20-402x.png?expires=1789020000&signature=2fecf01fddf5ad23aca55815209e0f3181c293e6e9ba2c326bdce86f34beb5c9&req=diIiEMl8mIheWfMW1HO4zV%2BGnRA%2FQb9Hx57dwYq5DdISogVWS%2FNZBvAxZZr6%0AKKmlT4bPx4e69zUQgbo%3D%0A) **Important:** Each domain can only have one identity provider. If multiple organizations share a single login domain, IT administrators from both organizations will be able to modify login settings. Contact **[Anthropic Support](https://claude.fedstart.com/support)** for assistance with multi-organization setups. For more details about multi-organization setups, see our **[SCIM provisioning guide](https://support.claude.com/en/articles/14503643-set-up-scim-in-claude-for-government)**. @@ -77,7 +77,7 @@ Once your SAML application is set up in your IdP, provide Anthropic with the det - Claims Information — Attribute mappings for user name and email. -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2256004522/a97b91092b393e93b2d7779f63e6/2db86a6d-1582-419e-925e-cbc914468fa1?expires=1788981300&signature=d8f0dfc73e1f2053a152f6f413e77906ab98deb157b765218a6c3bd8235cc6f5&req=diIiEMl%2BmYRdW%2FMW1HO4zQE9Jr%2B%2F8hX4bfNHh%2Fvd8OHckETvD%2BSG8U29MiZa%0AQhgl%2Bo0VC4If%2B5%2BCkNE%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2256004522/a97b91092b393e93b2d7779f63e6/2db86a6d-1582-419e-925e-cbc914468fa1?expires=1789020000&signature=df60990b4cbb445e2cd7dc2557fc05da88cc0dc1c6b1badde1eece3405dc1000&req=diIiEMl%2BmYRdW%2FMW1HO4zQE9Jr62%2BBT7bfNHh%2Fvd8OHCKL1vxeuEhsnVYPoR%0AObCwPxvIu8AdFe1OE7A%3D%0A) **Tip:** Using a metadata XML file: Most IdPs let you download a metadata.xml file. Upload it on the identity settings page to auto-fill the Signing Certificate, IdP Entity ID, and SSO URL. Some IdPs (like Entra ID) also include claims information in the metadata file; if present, the system will suggest field mappings automatically. diff --git a/content/support/14503643-set-up-scim-in-claude-for-government.md b/content/support/14503643-set-up-scim-in-claude-for-government.md index a135f5ac0..0e464f92f 100644 --- a/content/support/14503643-set-up-scim-in-claude-for-government.md +++ b/content/support/14503643-set-up-scim-in-claude-for-government.md @@ -41,7 +41,7 @@ With SCIM, login and provisioning are separate. Your IdP tells Anthropic who sho **Important**: Store this key securely. It cannot be retrieved after you leave the page. -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2256040196/c3b045028c4c2edef9172b6fb424/9a71258e-ae73-41e3-83a2-d24a240ac0ae?expires=1788981300&signature=9515db42715d2d85d519eb769dd3de6987ab912909f462ee9a798fea51d68206&req=diIiEMl6nYBWX%2FMW1HO4zSrRlaQWYTcXyIvvU1hav7PutQ9eUqyqTdyU3%2Bwx%0AnZiXRW4%2F1winkiKqkQ8%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2256040196/c3b045028c4c2edef9172b6fb424/9a71258e-ae73-41e3-83a2-d24a240ac0ae?expires=1789020000&signature=10f518059510083a64ec1c29058832dec301e197e678a442467b88bdffb4243b&req=diIiEMl6nYBWX%2FMW1HO4zSrRlaUfazYUyIvvU1hav7M7TZJH6JS5Eh%2Foy5Ve%0Aij1sCIc7upfSQAhkxvM%3D%0A) ### Step 2: Configure SCIM in your Identity Provider @@ -67,7 +67,7 @@ After enabling the integration in your IdP: **Warning**: When you fully enable SCIM provisioning, any users who were **not** synced via SCIM will be removed from the organization. Confirm that all expected users appear in the sync before proceeding. -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2256040198/da9188b8b968d5f900cc08e9ceb2/3814ab37-c3fa-4256-8d16-49c1e1b4c654?expires=1788981300&signature=ad5effbe34253667bbb2ecd8c98a3820e60bcba40bac8adb9fe9a8854ea6e5c4&req=diIiEMl6nYBWUfMW1HO4zeLvMlBmQk35oWupW8zJgMqFoG238l4nYchUr0Dt%0A7vHg69uVA6EXjS2CvBI%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2256040198/da9188b8b968d5f900cc08e9ceb2/3814ab37-c3fa-4256-8d16-49c1e1b4c654?expires=1789020000&signature=1656d76b97182cd7537b8834496ef7a01104c314d588babff4a02437e132172f&req=diIiEMl6nYBWUfMW1HO4zeLvMlFvSEz6oWupW8zJgMr0nongJ8QGX%2FnfntmG%0AE1BJmPc7wpsiTpgeYG0%3D%0A) ### Step 4: Map groups to roles and seat tiers @@ -83,7 +83,7 @@ SCIM provisioning uses IdP groups to assign roles and seat tiers within Claude f 3. Save your mappings. -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2256056441/f7eb09bba549e9861fc81b961cc7/2760fa5b-87bb-491f-9354-ca3cd2bc4475?expires=1788981300&signature=53b6ab8a91fb9ce8dfcc52fa356c0f6ac784da5450352366f21b23b2694e4451&req=diIiEMl7m4VbWPMW1HO4zaWhsXsrukYYh340B79BYGaUJMl6vu%2FGoM3xgzi4%0AJX%2BQCzLOxf4jmHhcZ%2FI%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2256056441/f7eb09bba549e9861fc81b961cc7/2760fa5b-87bb-491f-9354-ca3cd2bc4475?expires=1789020000&signature=42081303ce7796ac4569ab66dcb02aca4afdb2c15fb802aeced7d5e7375106e4&req=diIiEMl7m4VbWPMW1HO4zaWhsXoisEcbh340B79BYGbVQ2fXKw4J9yMxwYal%0AwXGzWUslWKhs5fx%2F5qQ%3D%0A) If you manage multiple organizations under a single parent (see below), each organization maintains its own role and seat tier mappings. Switch between organizations using the organization selector in the bottom-left corner of the page. diff --git a/content/support/14503775-mcp-web-search.md b/content/support/14503775-mcp-web-search.md index 8274bdd8d..6607bb782 100644 --- a/content/support/14503775-mcp-web-search.md +++ b/content/support/14503775-mcp-web-search.md @@ -4,7 +4,7 @@ The Web Search connector gives Claude the ability to search the public internet For questions about web search in commercial Claude, see **[Enabling and using web search](https://support.claude.com/en/articles/10684626-enabling-and-using-web-search)**. -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2256120763/7652c6c669446113eae75f3c5977/9c74d57e-aaa2-4f1c-bfe4-2b9b87fd41ab?expires=1788981300&signature=4bda13350cb30e2b15612f56d92d1787668387448e5a3480a5b066ed224a1372&req=diIiEMh8nYZZWvMW1HO4zQvFLLpahcX7M%2Fw5SJgC29GcNE57fjN1mP5okeDo%0AZEMWyzG0l%2F%2B1Wy%2BVOeg%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2256120763/7652c6c669446113eae75f3c5977/9c74d57e-aaa2-4f1c-bfe4-2b9b87fd41ab?expires=1789020000&signature=b2747b380f443fa17d3d5c932000d6ee051d2f44c4c57f0ad928d60fb95d5cbb&req=diIiEMh8nYZZWvMW1HO4zQvFLLtTj8T4M%2Fw5SJgC29HcK7Pd%2BTim%2BUUtQEqR%0AykSvm53q5Bz5upo5E%2BY%3D%0A) ## How Web Search differs for Claude for Government diff --git a/content/support/14604397-set-up-your-design-system-in-claude-design.md b/content/support/14604397-set-up-your-design-system-in-claude-design.md index 51010e55e..04c7dded1 100644 --- a/content/support/14604397-set-up-your-design-system-in-claude-design.md +++ b/content/support/14604397-set-up-your-design-system-in-claude-design.md @@ -72,7 +72,7 @@ To validate your design system, create a test project and see if the output matc Once you’re satisfied with the design system quality, make sure the “Published” toggle is switched on. After publishing, any projects created from the Claude Design homescreen while in your organization will use your design system instead of the default. -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2287527007/b1c46cb8dba4cd7e8bbea85fb0c3/2819c6cf-9ce1-4df5-84c8-feae0164bf2e?expires=1788982200&signature=03087a4c0d194896e11133bc839661c84f01b8c1d272974bf357fde958817d5b&req=diIvEcx8moFfXvMW1HO4zWNHF%2FqCBjkVIQKNMXlu0T%2FfBA%2BOW53PePnJ7oiw%0A2q2wiPYqufqx8N1YULw%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2287527007/b1c46cb8dba4cd7e8bbea85fb0c3/2819c6cf-9ce1-4df5-84c8-feae0164bf2e?expires=1789020000&signature=218817d36eeb36652697bfe6253ac7822089ab23eb76724aad47ed94079df724&req=diIvEcx8moFfXvMW1HO4zWNHF%2FuLDDsXIQKNMXlu0T9zkzoi2CmMiRwwSn40%0ASC0HaxFHq0l9BTSi3Ok%3D%0A) --- diff --git a/content/support/14604406-claude-design-admin-guide-for-team-and-enterprise-plans.md b/content/support/14604406-claude-design-admin-guide-for-team-and-enterprise-plans.md index e1d221603..98912a2a8 100644 --- a/content/support/14604406-claude-design-admin-guide-for-team-and-enterprise-plans.md +++ b/content/support/14604406-claude-design-admin-guide-for-team-and-enterprise-plans.md @@ -18,7 +18,7 @@ Team and Enterprise plan admins can enable this organization-wide by following t 2. Find the **Claude Design** toggle under **Anthropic Labs** and switch it on. -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2289240025/8a528b6cccc3ea1001c25953cb14/image.png?expires=1788982200&signature=261feeed06ad17dfc205c527b647b7798a80f8ca371044e26616c2530e4c3d97&req=diIvH8t6nYFdXPMW1HO4zahp3eoBEeQnDIPtKBLQ9H%2Fjv8ZL3aLxnqZxvWNy%0AXRbzZXEZZkVO5voDmLA%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2289240025/8a528b6cccc3ea1001c25953cb14/image.png?expires=1789020000&signature=da4bac9f10fa36932e6046aec24e19c5abf79855f0aacd949a4c89be4c93a7ec&req=diIvH8t6nYFdXPMW1HO4zahp3esIG%2BYlDIPtKBLQ9H%2FuzeqSklnT7R4maeb0%0AKau14RNuIntQYfb1R5A%3D%0A) --- diff --git a/content/support/14604416-get-started-with-claude-design.md b/content/support/14604416-get-started-with-claude-design.md index abdbc1daa..6c6935b11 100644 --- a/content/support/14604416-get-started-with-claude-design.md +++ b/content/support/14604416-get-started-with-claude-design.md @@ -153,7 +153,7 @@ Use the “Export” button in the upper right corner when viewing your project - Send to Claude Code Web -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2287510952/553a03eec5cea7b9eff53b473552/6dc33363-38b1-444e-96bb-f8218b588173?expires=1788982200&signature=7de5ebd2d779f37bee6db41c5193d70858da69d813be49ef73e92a78c74afef1&req=diIvEcx%2FnYhaW%2FMW1HO4zQFD4SRTk292nfz9ljnuyXQkAYM5ZBAyhKIY36j4%0AnrqFw3Eos8F08xhVUg8%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2287510952/553a03eec5cea7b9eff53b473552/6dc33363-38b1-444e-96bb-f8218b588173?expires=1789020000&signature=67119136468d16f758be2f70eec8e5ba5f4ae98cf6bb239e4470fe88a88705d0&req=diIvEcx%2FnYhaW%2FMW1HO4zQFD4SVamW10nfz9ljnuyXS8KktsWv%2FabOgS2Yz5%0AaT8wxzCfdSTpuygGYss%3D%0A) You can also share projects within your organization using a shareable link. Sharing options include view-only, comment, and edit access. diff --git a/content/support/15330088-set-a-default-model-for-your-organization.md b/content/support/15330088-set-a-default-model-for-your-organization.md index cdf157804..37dbe3183 100644 --- a/content/support/15330088-set-a-default-model-for-your-organization.md +++ b/content/support/15330088-set-a-default-model-for-your-organization.md @@ -50,7 +50,7 @@ The organization default applies to every member. To set it: 4. Click “Save changes.” -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2514722139/d05c94072a41ea9090ecf386c53e/c32ee31d-954a-4551-a2da-91677fbd0b6f?expires=1788981300&signature=977451467875ce9c1b5adca804be33ae4422b0405be061537eb13af9620844b9&req=diUmEs58n4BcUPMW1HO4zelOdzpJJUlEfdGVZ664dGFtm3zeb3WoMFZ%2BkV%2Fb%0AU587ApXPR2HfftwiReY%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2514722139/d05c94072a41ea9090ecf386c53e/c32ee31d-954a-4551-a2da-91677fbd0b6f?expires=1789020000&signature=118467ae48c878e6e426ba555bcd02ecd4b062850754d8c24cc126a096ae08aa&req=diUmEs58n4BcUPMW1HO4zelOdztAL0hHfdGVZ664dGEDr3Ce6daTcJTWfkV9%0A5zbuUUYOEJgfkS5YkGY%3D%0A) --- diff --git a/content/support/15694740-manage-model-access-for-your-organization.md b/content/support/15694740-manage-model-access-for-your-organization.md index 67be1f580..1efad6324 100644 --- a/content/support/15694740-manage-model-access-for-your-organization.md +++ b/content/support/15694740-manage-model-access-for-your-organization.md @@ -42,9 +42,9 @@ The organization setting is the ceiling. A role can't grant access to a model th If any custom role uses the model you’re disabling as its default, you’ll be prompted to change that role’s default before the change can be saved. -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2514693921/02ea72756f5163f14e5d158516dc/69102088-cd86-498e-97aa-c8a6e0004419?expires=1788981300&signature=aaed68db6d71849b22ff19fb26f8dbfe33faa418cdad6b40a8c386e7d2c19d3c&req=diUmEs93nohdWPMW1HO4zXlxEu%2BwX9BUQf5Pb7M2Q0tpM4pFEeRjdkGbOUg1%0A3aKH8myPSVDJgp9ixhE%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2514693921/02ea72756f5163f14e5d158516dc/69102088-cd86-498e-97aa-c8a6e0004419?expires=1789020000&signature=3d734e1f9afbe38c08b19d2cb6ffb11ca5dc0304a5da42220f16cef89d7eb02a&req=diUmEs93nohdWPMW1HO4zXlxEu65VdFXQf5Pb7M2Q0tZj%2BHR%2FefXbP%2BlWEQj%0AXJfsRwwiiseKBXNnDKA%3D%0A) -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2514693922/bfc5de6626eb19dca1d7caf818ca/c3cd8bb6-f86c-4d01-92da-6ae4ca966662?expires=1788981300&signature=ea6029e9fdf39254fa595ea310b5599d672bc30edf1053ed49f9ebb5e32341d4&req=diUmEs93nohdW%2FMW1HO4zTqNsYHMTllUAod9uc510lwHA0P4si54rqub9cpv%0AkOisbRlattaxiG1XoZc%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2514693922/bfc5de6626eb19dca1d7caf818ca/c3cd8bb6-f86c-4d01-92da-6ae4ca966662?expires=1789020000&signature=05ef5bbcd0a25ee4820f5b496db6c2f10380a627e4bd6599012676151e60c12e&req=diUmEs93nohdW%2FMW1HO4zTqNsYDFRFhXAod9uc510lxzbmC6zKYqaOuopN%2Ff%0AlxzYMbbkiOK3iDBWRcc%3D%0A) --- @@ -78,7 +78,7 @@ If any custom role has an effort cap higher than the new organization cap for th Only models the role grants access to can be selected as that role’s default model. -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2514693923/880665a87dbd4776cf19d6063a37/29d30c6d-f9fc-408c-8c72-4320c6d88d14?expires=1788981300&signature=7e23ab32951b0fe923c22326bcb793ac44b55a38715a8e7a5cd47d059c7d40bd&req=diUmEs93nohdWvMW1HO4zYj9Sf0K5YC%2BXsqpNqvyFRKsCIKxMYEmiuH0P6gc%0AcLQoVbM6AMq3Pid0hCM%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2514693923/880665a87dbd4776cf19d6063a37/29d30c6d-f9fc-408c-8c72-4320c6d88d14?expires=1789020000&signature=874e58c29768eda7278d5a9c4341c40647aeac8da2af4f6fea452d60a885e142&req=diUmEs93nohdWvMW1HO4zYj9SfwD74G9XsqpNqvyFRI8XJrHFbi8Cvwp3wwD%0AmPtVk5n9fsQgyVCXY84%3D%0A) --- @@ -96,7 +96,7 @@ Effort limits determine how much computation members on a role can apply per res 5. Click "Save" to save your changes. -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2514693927/7a25673b3b075d72adb3cdc371e3/d2d7cd8d-a713-4e91-a706-f589ac46a9fe?expires=1788981300&signature=df414909a356f80147fdecd651c1251ade9f2ada30f0938bb71c8301fea7d1a5&req=diUmEs93nohdXvMW1HO4ze1xBju1e7gaDeA1RkowXUE5NRWiHpZWz7sbY9be%0AcyPzOwAYbJx15pk0T4g%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2514693927/7a25673b3b075d72adb3cdc371e3/d2d7cd8d-a713-4e91-a706-f589ac46a9fe?expires=1789020000&signature=397a2d3f975d10b2342011efe8767e4e4ed62177507ef1f95eb86cee0e04f420&req=diUmEs93nohdXvMW1HO4ze1xBjq8cbkZDeA1RkowXUHk8HfKyisvlCoXr0Xh%0A1Tty3y%2FQVlQ1vP9Eocc%3D%0A) Members on the role see only effort levels at or below the cap in their model menu. Note that available effort levels differ depending on the model, and some models don’t support effort level settings at all. For an explanation of each level, see **[Change the model, effort, and thinking settings](https://support.claude.com/en/articles/8664678)**. diff --git a/content/support/15936181-get-started-with-1password-for-claude.md b/content/support/15936181-get-started-with-1password-for-claude.md index b61d9f787..4c2e61d9a 100644 --- a/content/support/15936181-get-started-with-1password-for-claude.md +++ b/content/support/15936181-get-started-with-1password-for-claude.md @@ -52,7 +52,7 @@ Once the requirements are in place, you can set up 1Password from a few places i 4. Toggle on **Password managers**: -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2546126596/ba71ca47e2df21cec62c243831f8/5b1c67e1-607d-4c73-8f61-d1ceb081082a?expires=1788981300&signature=d5820c8009e8d0799d439764994facfbfcb18dbc2a479730a5e586b853b74a0e&req=diUjEMh8m4RWX%2FMW1HO4zU5lnmNnpcRgGkiu4hEpcPW4aTzAtwZ6tgLbtkhS%0A3wQ%2B0CHQsy473tX6i%2F0%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2546126596/ba71ca47e2df21cec62c243831f8/5b1c67e1-607d-4c73-8f61-d1ceb081082a?expires=1789020000&signature=929c727e33fbd091ec139c1fe3d06c52ce20fa0e697c2413f32556f87fabbc5b&req=diUjEMh8m4RWX%2FMW1HO4zU5lnmJur8VjGkiu4hEpcPUHhIYxpp4dquoZ3fbd%0AzZvyvGI8wg6D%2F%2FxKGo8%3D%0A) Once enabled, eligible users will see the discovery options above. Users still need to install and set up the required apps and extensions themselves. diff --git a/content/support/16607638-understanding-your-pro-or-max-plan-invoices.md b/content/support/16607638-understanding-your-pro-or-max-plan-invoices.md index ac1c9fc26..45ec95f64 100644 --- a/content/support/16607638-understanding-your-pro-or-max-plan-invoices.md +++ b/content/support/16607638-understanding-your-pro-or-max-plan-invoices.md @@ -40,7 +40,7 @@ You can also open any invoice from your account: **Amount due.** The invoice total minus any applied balance. This is what your payment method was charged. -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2629072970/c514f489b65072ccad08e803864f/e8c7a7de-905f-4a40-815f-c9c66edcdbf6?expires=1788982200&signature=c4cbedfab42e2e6e44aecafd49c65d27cd858a26506be4614e31de14fbf90f5d&req=diYlH8l5n4hYWfMW1HO4zdWraBk25lYcPZYKVlMiWEV161hrdoE4%2BRJWC8kV%0AcCNGNB2y9W7MtEh8ICA%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2629072970/c514f489b65072ccad08e803864f/e8c7a7de-905f-4a40-815f-c9c66edcdbf6?expires=1789020000&signature=9329927c12c5187156e2b8b99314b3a7f736b8729b80c724a46f4e51c78d8a12&req=diYlH8l5n4hYWfMW1HO4zdWraBg%2F7FQePZYKVlMiWEXBBg64Z3UwwnnQM2Yg%0A9LWeDjrpSCkyzG%2BIoqU%3D%0A) ## Billing details on your invoice diff --git a/content/support/16764810-assign-a-program-to-workspaces-in-claude-console.md b/content/support/16764810-assign-a-program-to-workspaces-in-claude-console.md index aadbe7a4d..a8c1482d5 100644 --- a/content/support/16764810-assign-a-program-to-workspaces-in-claude-console.md +++ b/content/support/16764810-assign-a-program-to-workspaces-in-claude-console.md @@ -20,27 +20,27 @@ In the Console, programs are issued to your organization and apply to workspaces 1. **[Sign in to the Console](https://platform.claude.com/)** as an organization Admin. Go to **[Organization settings > Programs](https://platform.claude.com/settings/organization/programs)**. The program card shows whether it applies automatically or needs workspaces assigned. - ![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2642744587/d4584e035604f3b7c08afa53a1c6/ee1183ff-e591-4484-a989-1f754245d39c?expires=1788982200&signature=f8db6cdb62786a796f78603cab2d76706a21a5045068b1382477c12a7a3f09f6&req=diYjFM56mYRXXvMW1HO4zT%2FymEGOHAulktHcEoeKC4dJF3fcO7pc4t1LwSyL%0AsQca%0A) + ![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2642744587/d4584e035604f3b7c08afa53a1c6/ee1183ff-e591-4484-a989-1f754245d39c?expires=1789020000&signature=61320ad8a5cacdfe32bc98ad669da051ea53625b4b266b73f733e4248d2aabe8&req=diYjFM56mYRXXvMW1HO4zT%2FymECHFgmnktHcEoeKC4chi0O42FIBPc6HPqQG%0AyNHK%0A) 2. Select the program to open its page. The **Workspaces** table shows each workspace's status. A workspace marked with an issue does not meet a requirement yet. - ![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2642745562/253e55a3292b35f728fb5dc89fb2/0878a8a9-dce5-4df2-9826-3796605b52a0?expires=1788982200&signature=fc66f758fda9febcf5c20695fe2bd74c985ac5bf1a2b6671d314843ff6556a1b&req=diYjFM56mIRZW%2FMW1HO4zc116gZhSFKzMCr%2B42fbmkZTdTvdZaMR3ROa62%2Bv%0AQDd4%0A) + ![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2642745562/253e55a3292b35f728fb5dc89fb2/0878a8a9-dce5-4df2-9826-3796605b52a0?expires=1789020000&signature=67666167d5aff8d2dee7e9b47324e3a65fdcf19df0b289ecbd5544597f8d99bb&req=diYjFM56mIRZW%2FMW1HO4zc116gdoQlCxMCr%2B42fbmkZmgy8ko2rQJrfN96E9%0AwsU4%0A) Hover over the issue to see which requirement is not met. - ![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2642746466/c49291119729e99f4dba8ec924e4/3f802c0e-7fbc-4e80-935a-05da58f65bde?expires=1788982200&signature=50dee2443490f7578541acf91c21323c0191b538923dfbf309a6164397e94d83&req=diYjFM56m4VZX%2FMW1HO4zaveae5rnn%2FCVPpeIJbmktTtFMFThlFMenXBM2V8%0ApZzN%0A) + ![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2642746466/c49291119729e99f4dba8ec924e4/3f802c0e-7fbc-4e80-935a-05da58f65bde?expires=1789020000&signature=8e22d7f13646e52d1a559711fcfda6ceb75d5c5cf75ac224a7bc9350afa6a7aa&req=diYjFM56m4VZX%2FMW1HO4zaveae9ilH3AVPpeIJbmktRHjMSZdJ1SadvgdVbw%0AUpOh%0A) 3. To give a workspace access, make it meet the requirements. Open the workspace, select "Manage," then "Programs," and check the **Qualifications** panel. - ![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2642768117/1304e6b1350fc9bd88c4238a00e3/db606eb5-39d5-4309-a5a9-ee33847fc233?expires=1788982200&signature=96d51d8868e7035df1ba0a8709cd624b8e91b43891ad12175e9fc215e787fdeb&req=diYjFM54lYBeXvMW1HO4zTU0lNOZI0RF9BWcjfiNKI2Y6CG0sS5QE8EtyNHo%0AOW79%0A) + ![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2642768117/1304e6b1350fc9bd88c4238a00e3/db606eb5-39d5-4309-a5a9-ee33847fc233?expires=1789020000&signature=cb94abb01ec43e3d1227d4bbc0e8151a4588b862dc25078d88406e8fde111632&req=diYjFM54lYBeXvMW1HO4zTU0lNKQKUZH9BWcjfiNKI2tQn%2FUkjHEv0DHge5K%0AsRKz%0A) 4. Fix the requirement. For the Cyber Verification Program, turn on data retention under Manage, then Privacy controls. Then select "Rerun." - ![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2642746995/87151a11687a9c631b7a9d681390/d40a6c12-283d-4b3b-b6d6-9f631a73e7c0?expires=1788982200&signature=5701af8034ce8320e862534b01cd09eb53746d60419e4ce5631d932ed340485c&req=diYjFM56m4hWXPMW1HO4zQfcHTOn53wp9apHi%2BiM8ogqIjN%2BujeCmSdNAcob%0AD8vQ%0A) + ![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2642746995/87151a11687a9c631b7a9d681390/d40a6c12-283d-4b3b-b6d6-9f631a73e7c0?expires=1789020000&signature=b2ac7e9fa17040305352633a88f1037f3e317b9bf6b51f9d1c9ee9e507c19709&req=diYjFM56m4hWXPMW1HO4zQfcHTKu7X4r9apHi%2BiM8ogq2eCi51Zdt2L4NYSp%0AltB2%0A) 5. The program shows **Active** for the workspace. - ![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2642747200/a18bdccde474c9f4eba371cf6050/b0e9d5e3-1e5f-4f27-b682-5684084f92e8?expires=1788982200&signature=e2bbb0543b1c615b45c5028c287ccaf5097dba2781ee083d226e453bc3b6e84c&req=diYjFM56moNfWfMW1HO4zaUR8q5u%2Fvw6fTukdAE3MWtT4C%2BdxhZIPcnp6it9%0A8VJ%2F%0A) + ![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2642747200/a18bdccde474c9f4eba371cf6050/b0e9d5e3-1e5f-4f27-b682-5684084f92e8?expires=1789020000&signature=de44c10ced2c3841153c77d94fd21e7d5617262d501e6fa92e714b1e9215a341&req=diYjFM56moNfWfMW1HO4zaUR8q9n9P44fTukdAE3MWu319vQ8J%2FPVB3EESqX%0ARK35%0A) ## Troubleshooting diff --git a/content/support/8114491-get-started-with-claude.md b/content/support/8114491-get-started-with-claude.md index 21ad63e07..34ef66f37 100644 --- a/content/support/8114491-get-started-with-claude.md +++ b/content/support/8114491-get-started-with-claude.md @@ -36,7 +36,7 @@ You use **prompts** to communicate with Claude. The best approach is to speak to Type your prompt into the chat interface and click the submit button to start a conversation with Claude. You can click the "+" button in the lower left or type "/" to view additional options and commands: -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1916208578/2cf2ea52f1f884084b57983a8805/image.png?expires=1788982200&signature=d8f39342f152913157f38613c5f5b6bb03f621857b9f100106df1758b8a2eaa3&req=dSkmEMt%2BlYRYUfMW1HO4zV2J7SfDvIWD9crMELaMZPwh1aNUWa5rwLSzffCm%0AQGwBBnCm6jIgf5zNRbo%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1916208578/2cf2ea52f1f884084b57983a8805/image.png?expires=1789020000&signature=74e2275381e562496f64876f0314d9d48c6b8494881bbc8c3f81cecfbf260605&req=dSkmEMt%2BlYRYUfMW1HO4zV2J7SbKtoeB9crMELaMZPyZFxUhYLK%2F%2BkRU5HLN%0A3wExWNdYIrXMr%2BZ%2FSvs%3D%0A) --- diff --git a/content/support/8230524-delete-or-rename-a-conversation.md b/content/support/8230524-delete-or-rename-a-conversation.md index a20eb7693..6965359c1 100644 --- a/content/support/8230524-delete-or-rename-a-conversation.md +++ b/content/support/8230524-delete-or-rename-a-conversation.md @@ -44,15 +44,15 @@ These steps apply to Claude for iOS, listed on the App Store as Claude by Anthro 4. If deleting, tap "Delete" again in the confirmation prompt. -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2599501318/75c28edc693efbe8befd21e4da64/d18a921a-df4b-4788-833c-12c966a32527?expires=1788982200&signature=dd51802a90e55ca0fe1539ba57da8568d4cdfa418d8ca8292f6f9532bb83a522&req=diUuH8x%2BnIJeUfMW1HO4zSc12aZTgGKp1DBI29QsIlHxTQNJj6QgOdL1QyIH%0ALfmTI7P5eout%2FnWnPAM%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2599501318/75c28edc693efbe8befd21e4da64/d18a921a-df4b-4788-833c-12c966a32527?expires=1789020000&signature=535fc3376a3045982e600e5809646da97c05c7fcdc0e725462fd753be4e01d98&req=diUuH8x%2BnIJeUfMW1HO4zSc12adaimCr1DBI29QsIlFPef7Z4CERj8dzo0Ix%0AF1UJ26oeu6G7Qua%2FxC8%3D%0A) -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2599493852/2e58b92d18f307bb79ae30650f26/1bbe52f3-202b-4d5d-9f9a-eeda4d6952c3?expires=1788982200&signature=e2129768f60ba86aef54bbc5ee30e4a9860ef6d80d7e38a17812aa120b172f55&req=diUuH813nolaW%2FMW1HO4zTjXMu%2BFJsLnj7blKEDtUI3vq5Yt9tvs6xND%2FsOs%0AK2Ees3%2FCwvtqw4i5Oe4%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2599493852/2e58b92d18f307bb79ae30650f26/1bbe52f3-202b-4d5d-9f9a-eeda4d6952c3?expires=1789020000&signature=d39f50a2304c77d15703b962bcec23fab3b306eb95a3ad7873020f8a2e35c4e7&req=diUuH813nolaW%2FMW1HO4zTjXMu6MLMDlj7blKEDtUI1uk%2FDAMxbIya%2B4s73f%0AdL8h20iqP5zrXYUNI14%3D%0A) You can also delete the conversation you have open: tap the "⋯" button in the top right corner, tap "Delete," then confirm. -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2599493848/997184c386d0e6fb0bd2d7c1f2b6/5d2bc394-25fc-4814-8c2a-2f54d004f83f?expires=1788982200&signature=befbd36bd38260323a2f9c9638278905cd897b3a31809e50c881cf5cba691176&req=diUuH813nolbUfMW1HO4zVCIqpLGw95EzQl%2BKgU984xpW6km%2B42eMudegwb2%0ABk9WvNie00RLUgFUfIs%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2599493848/997184c386d0e6fb0bd2d7c1f2b6/5d2bc394-25fc-4814-8c2a-2f54d004f83f?expires=1789020000&signature=302661a420a558c5c8ddd1a42e4420c12e492ab0a14a72a67bf0f354d2cbea66&req=diUuH813nolbUfMW1HO4zVCIqpPPydxGzQl%2BKgU984z4lciAoCuTub8z73lg%0AF8u3OZug3VERFAM8Uqc%3D%0A) -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2599493856/799041da9fa918e90068c5ebf5bd/2e8d5cee-c45a-41d7-a14b-486e50a37f88?expires=1788982200&signature=0861b10083024bbb9284f8cd28f23296baea9a94bcac04e5678fbf7ee3092512&req=diUuH813nolaX%2FMW1HO4zVCl4AD72WdPEDIU8RT6jk1CQqPsenWSYJfxlM2M%0AIxWk3FoRaw9yC6RKSMU%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2599493856/799041da9fa918e90068c5ebf5bd/2e8d5cee-c45a-41d7-a14b-486e50a37f88?expires=1789020000&signature=079d51f4a6c886b34df03a2d142bec3dfaf58f639ee27a45d68f756efe65a275&req=diUuH813nolaX%2FMW1HO4zVCl4AHy02VNEDIU8RT6jk1mJuazcbZd9jt0aqFR%0A17IUg%2BOiVuUigQR3ofs%3D%0A) ## Delete or rename a conversation on Claude for Android @@ -66,9 +66,9 @@ These steps apply to the Claude for Android, listed on Google Play as Claude by 3. If deleting, tap "Delete" again in the confirmation prompt. -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2599493850/a64e6561222d535f2f5bd03e71f0/5de429c2-d8ed-4e8a-89e8-a13ccaa49767?expires=1788982200&signature=ad9944e07c046e08fc6ed8dbc3fa3c01fac18c13d56c32d991db797ae0b9d01d&req=diUuH813nolaWfMW1HO4zVTdd9olylJ3rqtc0YNNUtIdB%2BW0kybARgJ9ufQ%2F%0AJPInhqD4m54zhw4uo%2F4%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2599493850/a64e6561222d535f2f5bd03e71f0/5de429c2-d8ed-4e8a-89e8-a13ccaa49767?expires=1789020000&signature=e641c3aeaaca115f0ce4eb03837b5a424e753b7741087bffc12bad44d70162c7&req=diUuH813nolaWfMW1HO4zVTdd9sswFB1rqtc0YNNUtIS6E1NdPQVpo2knci2%0Arjciy0JjNUQmPDRmaWg%3D%0A) -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2599493851/f21b39c60e88050d4b0745325f0d/0a8c0d08-dc53-4ef1-8d9f-2b995242c1f9?expires=1788982200&signature=1c233b2efc024d7c54d08a9a4ce666250a893ce2557afddf71656e4039d76911&req=diUuH813nolaWPMW1HO4zUYvw10Cqjxe%2FjekULCQNzXD9u3DTACYPTSX79Tx%0A7gfzsUydl63y9KWJVZE%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2599493851/f21b39c60e88050d4b0745325f0d/0a8c0d08-dc53-4ef1-8d9f-2b995242c1f9?expires=1789020000&signature=e5761ab3cc758db245a81516e8731488b7ee4ef53cef71924b81cf507afe2707&req=diUuH813nolaWPMW1HO4zUYvw1wLoD5c%2FjekULCQNzWqjo77qon%2Fcxt9dE%2Fw%0A17l65q9XQEXNiTRqBtg%3D%0A) **To delete multiple conversations at once:** @@ -78,9 +78,9 @@ These steps apply to the Claude for Android, listed on Google Play as Claude by 3. Tap the trash icon, then tap "Delete" in the confirmation prompt. -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2599493849/3013a0ab921337b4544f7ffeffa6/e828ec14-fb52-4205-a840-707b6f2a848d?expires=1788982200&signature=5ed03be4457b3b73bf5f9ed5d020a7343f69841c33e7c55e66a06e41ad9a6784&req=diUuH813nolbUPMW1HO4zWGamM99co%2Fd4AqhTnZa84Xs5VmOHd5RM01g63YT%0AP8t6fHy44FemHZKkPSg%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2599493849/3013a0ab921337b4544f7ffeffa6/e828ec14-fb52-4205-a840-707b6f2a848d?expires=1789020000&signature=74f1070e7d9b995c427cd86dad0490cdebd4235a3a9576d3f4ea5ca277e56cd7&req=diUuH813nolbUPMW1HO4zWGamM50eI3f4AqhTnZa84XCXmelX0F6PrtLRVK%2B%0ApQKBLxOW8vKA4%2FXXzkU%3D%0A) -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2599493853/e2507f53cce8a26776a22a457b1a/bd79bb8a-b078-420f-a4e1-75590367aa80?expires=1788982200&signature=72b1f4fb6c4b63eafb39afc322879443cedd680d026a22aa7184458e9ed030bf&req=diUuH813nolaWvMW1HO4zQTtEx34zEI6SBGfF3I2bRg4wqXtnRiJkn00HhtV%0ATcN88F%2FPwYl8qb%2BseUM%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2599493853/e2507f53cce8a26776a22a457b1a/bd79bb8a-b078-420f-a4e1-75590367aa80?expires=1789020000&signature=de3300ff48a603ea2d3b051f372b091144a051679fe6178024b673f622ca2773&req=diUuH813nolaWvMW1HO4zQTtExzxxkA4SBGfF3I2bRjZPqUeac8wsO1tQ%2FgW%0A2fQ%2FyHjQss0PyCzgj8Y%3D%0A) ## What happens when you delete a conversation diff --git a/content/support/8325618-paid-plan-billing-faqs.md b/content/support/8325618-paid-plan-billing-faqs.md index 86c387dd9..8e5169d1b 100644 --- a/content/support/8325618-paid-plan-billing-faqs.md +++ b/content/support/8325618-paid-plan-billing-faqs.md @@ -50,7 +50,7 @@ There's no separate option to remove a card, and updating to a new card replaces If you want to use a name other than the one tied to your payment method, check the "Use a different name on invoices" box when adding or updating your payment method in **[Settings > Billing](https://claude.ai/settings/billing)**. -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1922141785/666191101c11030b05f03a668a74/image.png?expires=1788981300&signature=1061115ad131482b7650d04b39cad44ee05317effbe821a894ef43c5e7cfa940&req=dSklFMh6nIZXXPMW1HO4zVXW8GWiYzLPQoNvNFTb5cdUdg9PPhgpsi7BK84C%0AwK8LRjreK1E8mM1h5kQ%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1922141785/666191101c11030b05f03a668a74/image.png?expires=1789020000&signature=518e16e5cf7471f11e6742219ab9883406675a23732355be37a3c5f3005c8812&req=dSklFMh6nIZXXPMW1HO4zVXW8GSraTPMQoNvNFTb5cf0nVXVTuQKcrbgqyj%2F%0AvirqRdIsAgxUP4nikmg%3D%0A) ## How can I edit a paid invoice? diff --git a/content/support/8887527-customizing-your-appearance-settings.md b/content/support/8887527-customizing-your-appearance-settings.md index 6520892d2..c31e26775 100644 --- a/content/support/8887527-customizing-your-appearance-settings.md +++ b/content/support/8887527-customizing-your-appearance-settings.md @@ -8,7 +8,7 @@ 3. Select from Light, Match System, and Dark under **Color mode**. -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1648260417/d478c757c7115ad58a12026d4caf/AD_4nXc__Qop4X9hknWGfGj_y_DCpLutLruhxIclJIfir0ilsgNMg7X8ksIVnqk1Oce5FKlGIOYu9CKbVsu8DqD7iIY2aC0ZfXMyFTeAdNq-Cao2mXcj_WUpNF0kM2HoYR_dEx6N_cuJow?expires=1788982200&signature=c9860fe22f4e517b375eda6e99aa7a2c16b9ada6b4b0f21109c83c82a3836050&req=dSYjHst4nYVeXvMW1HO4zc2jJ6o0iInmSBkgeTglJrox0RXbo0Putb8vDQvZ%0AXO619n00uPQU6CeTNgY%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1648260417/d478c757c7115ad58a12026d4caf/AD_4nXc__Qop4X9hknWGfGj_y_DCpLutLruhxIclJIfir0ilsgNMg7X8ksIVnqk1Oce5FKlGIOYu9CKbVsu8DqD7iIY2aC0ZfXMyFTeAdNq-Cao2mXcj_WUpNF0kM2HoYR_dEx6N_cuJow?expires=1789020000&signature=7429dd89aff99357c4dd2c07569932e0ad33617b580f732a436f21114326ad7b&req=dSYjHst4nYVeXvMW1HO4zc2jJ6s9govkSBkgeTglJro%2FNYzdMvW5WQFsbW%2BZ%0A1HndzlbglpnzpIflEQw%3D%0A) ## How to change your font @@ -16,10 +16,10 @@ 2. Select from Default, Match System, and Dyslexic Friendly. -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1648260416/7fc0803d44d8de40f8e6636b2eb6/AD_4nXf0UEDa1i2QmqlQtoB5BgpQ-FfZVzss_7wMVQdvkmEDSfoTxixnG0GSxC6qrOs21HdkXH-I2Yn_GHDAf8yjd6FJtoh9FadALozvIErFp9r8LychDGLPb7OpN1CN4PRcgVAYNCre?expires=1788982200&signature=b7d09ddfcc92932248ca5d68e44872d0705cea35e3fca87bc39097ba5a611553&req=dSYjHst4nYVeX%2FMW1HO4zc8962jsVXM%2BQtNFlF5%2FHEdp%2FVHQYei6QDC01vjd%0ABTSpNZJN%2BQA83wpz8gU%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1648260416/7fc0803d44d8de40f8e6636b2eb6/AD_4nXf0UEDa1i2QmqlQtoB5BgpQ-FfZVzss_7wMVQdvkmEDSfoTxixnG0GSxC6qrOs21HdkXH-I2Yn_GHDAf8yjd6FJtoh9FadALozvIErFp9r8LychDGLPb7OpN1CN4PRcgVAYNCre?expires=1789020000&signature=e04680be27f46906620e5258b80bff33c91ce297107c8897a9b042e29737e860&req=dSYjHst4nYVeX%2FMW1HO4zc8962nlX3E8QtNFlF5%2FHEcG52gHR5YLPpfGkqaZ%0AgPM10zSnYZPRUAUWhCI%3D%0A) ## Can I disable the sidebar? It's not currently possible to completely disable the sidebar. You can click the button on the top right of the sidebar to open or close it. -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1941108004/5217903737ddd9bb62fe5d7a904c/CleanShot+2026-01-14+at+09_12_58.png?expires=1788982200&signature=db6f9ce357689daf39ae761726f9f535f4c113d1646b22652c96f8c48696d528&req=dSkjF8h%2BlYFfXfMW1HO4zUS%2BB1f%2FUXntylfYa7uDb9mhVUhpBlUwYPXN9idU%0AzaWvx%2FbSOwCApkPHOgY%3D%0A) \ No newline at end of file +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1941108004/5217903737ddd9bb62fe5d7a904c/CleanShot+2026-01-14+at+09_12_58.png?expires=1789020000&signature=a93deefeff815fb123d67a4640cd93409a38cda45bef20932609846edc03e28e&req=dSkjF8h%2BlYFfXfMW1HO4zUS%2BB1b2W3vvylfYa7uDb9lZoLATFz1d2OHJ4uGP%0AjoT6kXSzUo5ob4ygd%2BY%3D%0A) \ No newline at end of file diff --git a/content/support/9267400-move-your-personal-claude-account-to-a-team-or-enterprise-organization.md b/content/support/9267400-move-your-personal-claude-account-to-a-team-or-enterprise-organization.md index 27b5467a3..6d9b3fc7e 100644 --- a/content/support/9267400-move-your-personal-claude-account-to-a-team-or-enterprise-organization.md +++ b/content/support/9267400-move-your-personal-claude-account-to-a-team-or-enterprise-organization.md @@ -126,7 +126,7 @@ For the full walkthrough of your options, deadlines, and what happens to your su You may have both a personal account and an organization account tied to the same email address. You can switch between them by clicking your initials or name in the lower left corner of the screen. -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2312193347/712f763fc290b2488c103849f20c/0c135a6f-3442-4ee1-9ab7-98673f03ef6e?expires=1788981300&signature=2090ab2eb59a93fc0d28bc89db0cd7a26c3ff48fd316e7e1b8a228a13c511179&req=diMmFMh3noJbXvMW1HO4zXhPndg%2FwB5iufhmlOXMdYbnDQB1SjqK%2FNRq%2Bwb2%0Ack7pleO6IYFmuUv4w3Y%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2312193347/712f763fc290b2488c103849f20c/0c135a6f-3442-4ee1-9ab7-98673f03ef6e?expires=1789020000&signature=97a772a8d9f5c9797cb17c06a060409721709f0818f5c0cdd9eb44f17f9232b3&req=diMmFMh3noJbXvMW1HO4zXhPndk2yh9hufhmlOXMdYYBf6mmkC%2Bh%2BSz3hfys%0ABeBSebZv0Vu061v0%2B9c%3D%0A) A blue checkmark shows which account you're currently using. Click the other account to switch to it and access its separate conversations and projects. diff --git a/content/support/9519177-how-can-i-create-and-manage-projects.md b/content/support/9519177-how-can-i-create-and-manage-projects.md index ce61481dc..1e11e7e80 100644 --- a/content/support/9519177-how-can-i-create-and-manage-projects.md +++ b/content/support/9519177-how-can-i-create-and-manage-projects.md @@ -104,19 +104,19 @@ Starring a project allows for quick access from your projects and chats list, vi You can move a standalone chat into a project by clicking on the dropdown arrow next to the chat name, then “Add to project”: -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1784190248/0f19c8de18b494a27be252fdfaff/d4e7a5c5-25f5-4623-862b-c593d2dc0b39?expires=1788981300&signature=51bf4388b52f46bbed609a8e68eac3ffcb954b0990959de6a1d8fb58d6941391&req=dScvEsh3nYNbUfMW1HO4zQABaWllQqEWBSXNVFXQ%2FVExnd5%2FLJbd0h1Ad3HO%0AZ7sZ7%2FoHmbkRZnxtkAE%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1784190248/0f19c8de18b494a27be252fdfaff/d4e7a5c5-25f5-4623-862b-c593d2dc0b39?expires=1789020000&signature=a7b2c89b548f97626806bb85c6022fba25adfd89dcba9cf078032d8f7327d539&req=dScvEsh3nYNbUfMW1HO4zQABaWhsSKAVBSXNVFXQ%2FVGSsMR4HDqYRyuBdvmf%0At%2BIxO4W%2BRMNUknyaMlo%3D%0A) Browse or search for the correct project in the **Move chat** modal that appears, then click on it to move the chat. -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1784190951/34dc256ccd4c0cf74976f31062e6/55365cf2-059d-41b2-ac95-4b00c4389a76?expires=1788981300&signature=19da1ee02c0cbf49837e0de9ca64bf470b1a6e3f87e61906cc2dbaf7855ff9ed&req=dScvEsh3nYhaWPMW1HO4zSMECii5wwgCgYbpTjViBxA1MZMpanjLYOW%2FrF3d%0AM1omfVHstMN5ULI5Jd8%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1784190951/34dc256ccd4c0cf74976f31062e6/55365cf2-059d-41b2-ac95-4b00c4389a76?expires=1789020000&signature=a6b9d951e06f1bfca16b1388756198616f7a5a35f200068d4dcdf8eafe5eb218&req=dScvEsh3nYhaWPMW1HO4zSMECimwyQkBgYbpTjViBxC%2BNe9u0F4W5rukG3K8%0AsCTQ4RRwSOfriNiDO%2F4%3D%0A) You can also remove chats from projects, or move them between projects, using the same dropdown menu within the chat: -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1784185682/8625eac15b9fa452f148a6c47250/c53a1bc4-a991-4684-a789-5447ed789d35?expires=1788981300&signature=2a9acbda0772e0d72b270295d2412852a96d69f808900efa0fe732a600111481&req=dScvEsh2mIdXW%2FMW1HO4zb6DuP8lBkQJS2r1%2FGRlqOSfLpdMmoSDYbMjnqnf%0AssSqkfNwYE2WWGxEsVg%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1784185682/8625eac15b9fa452f148a6c47250/c53a1bc4-a991-4684-a789-5447ed789d35?expires=1789020000&signature=db212e838404098e566d21756a3a95133ea0c67e1ad04703cdece5a1113c1a59&req=dScvEsh2mIdXW%2FMW1HO4zb6DuP4sDEUKS2r1%2FGRlqOQVwRHa5FyO%2FkZfi%2B5m%0AoVOtWMB%2B1mLBtRMvgvY%3D%0A) You can move chats into projects in bulk from **[Your chat history page](https://claude.ai/recents)**: -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1784185685/bb960063204592db277a4ba62d8d/ebbf5c69-da79-4e56-9d87-f2a97a22fe67?expires=1788981300&signature=3da32c5142b930775200a5fb90543c9576e6db2890a7c5b97d92f1f9f2c3ef21&req=dScvEsh2mIdXXPMW1HO4zbParURA4fuguQSB0Ebsw9eC%2B%2Bz1QepZ4N%2FKO2UF%0A4rdvy4ojaooprjqPybU%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1784185685/bb960063204592db277a4ba62d8d/ebbf5c69-da79-4e56-9d87-f2a97a22fe67?expires=1789020000&signature=0bd09257b9c144b0020b857b8ac889dacb1fafda93613807e2b63a8fe57f2c94&req=dScvEsh2mIdXXPMW1HO4zbParUVJ6%2FqjuQSB0Ebsw9ffwf9ZlsM5XtNVA3%2Ff%0Ah1%2FZmSH8GSy5WFbSCCs%3D%0A) Select the chats you want to move, then click the icon next to the number of selected chats to move them into your project. diff --git a/content/support/9519189-manage-project-visibility-and-sharing.md b/content/support/9519189-manage-project-visibility-and-sharing.md index 1b7330c12..63da37bc7 100644 --- a/content/support/9519189-manage-project-visibility-and-sharing.md +++ b/content/support/9519189-manage-project-visibility-and-sharing.md @@ -12,7 +12,7 @@ When creating a project on a Team or Enterprise plan, you can choose between two - **Private:** Only invited members can view and use the project. -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1740370991/2b6b16e5deff094e073a5b4bb0ea/63197103-24c0-41e5-aebd-9b8f431837bb?expires=1788981300&signature=4367b9bf315a7e866e353436215a9e005a1d62e493675a9fd7e40f03f03d6445&req=dScjFsp5nYhWWPMW1HO4zd3a2VQtLI%2BkHK95%2FTFaPymX1QJItfRURpsmIkf8%0AuhzqA1NY26TXYDsH%2Fvk%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1740370991/2b6b16e5deff094e073a5b4bb0ea/63197103-24c0-41e5-aebd-9b8f431837bb?expires=1789020000&signature=2f81684b837bd0b52bdbdb75743163cc8caa178f56e55b3eb47e77e1c433eae6&req=dScjFsp5nYhWWPMW1HO4zd3a2VUkJo6nHK95%2FTFaPykV3I%2BbClh%2BfWf9kgtm%0AFuJ2F2DMwAvj1XDBrj0%3D%0A) ## What are public projects? @@ -22,11 +22,11 @@ If you choose to share a project with the rest of your organization upon creatio Yes, you can switch the visibility of a project you created as public to private at any time by opening the project and clicking the “Share” button to the right of the project name: -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1740370987/5d5db997e6b42e627ffa62fddf75/4823906b-9535-4a19-b89e-a1003f1e6e68?expires=1788981300&signature=db020e6c342a1151f1945501ead1c5e5b61dc8c9af3909f20ca51762357ae4f5&req=dScjFsp5nYhXXvMW1HO4zUiDoiH%2BiQcqE8Kp5wh0MSAH1aMTTYLV4YiWSERI%0AB12G2%2FJvJZwuWQcmUC8%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1740370987/5d5db997e6b42e627ffa62fddf75/4823906b-9535-4a19-b89e-a1003f1e6e68?expires=1789020000&signature=997e5bb439fe705d87fedfbd15212e1cba29f15b5a19c1f1988f5f4294e9efc1&req=dScjFsp5nYhXXvMW1HO4zUiDoiD3gwYpE8Kp5wh0MSAqIjkA7epFRdNmkaPO%0AA20THjGwFhc9dnq9fks%3D%0A) Click “Everyone at [your organization]” under **General access** and select “Only people invited” to change the project from public to private: -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1740370988/386407facbf3e73d2f5538623a18/69d8ffcd-e1ca-470f-a219-5b88704e41f2?expires=1788981300&signature=df1c8581b742560833b542efbc68eee7c04d8e78f14ee4214702e920ab4894cd&req=dScjFsp5nYhXUfMW1HO4zckCIfpraiOnl3XeGelDRW1EwDq0LNo1iffGjsj%2F%0AMfRIeoERELRSIYIT5tA%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1740370988/386407facbf3e73d2f5538623a18/69d8ffcd-e1ca-470f-a219-5b88704e41f2?expires=1789020000&signature=d605d8b370d981d076f4c9a4c712d6dc32773182eb580dfabca4aa1d31e5d3ef&req=dScjFsp5nYhXUfMW1HO4zckCIftiYCKkl3XeGelDRW37AnWZQukWCM7SsBUB%0AhRUkoEFbPFOxz2yVj1U%3D%0A) ## What are private projects? @@ -36,11 +36,11 @@ Choosing “Only people invited” keeps your project private so that you are th Yes, you can switch the visibility of a project you created as private to public at any time by opening the project and clicking the “Share” button to the right of the project name: -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1740370989/f829dcd8bdd88e944322f678323f/9d25eff1-6df3-40be-82eb-ba7fe09187e8?expires=1788981300&signature=6294848bce58ed40cfc37aabcf93df2832b1ab2e02a420909e0248eb601ea5e9&req=dScjFsp5nYhXUPMW1HO4zaSEGluVQrkO2JrJefVtywmb%2BLDPnm5s0Tq8RtBm%0AYa%2BRVzIwee%2F%2FT%2FV08Sk%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1740370989/f829dcd8bdd88e944322f678323f/9d25eff1-6df3-40be-82eb-ba7fe09187e8?expires=1789020000&signature=c7481848d998984720ed7b00767f9481141162a8adc47c7e6bb72a667ef0c2bd&req=dScjFsp5nYhXUPMW1HO4zaSEGlqcSLgN2JrJefVtywmXPL6gqPRK09%2Fe8X6k%0Atm33DLX2AOsr%2B2Vyt18%3D%0A) Click “Only people invited” under General access and select “Everyone at [your organization]” to change the project from private to public: -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1740370990/d173fbc6f030780d30c6d7b8e204/7e47b9d1-89fe-4607-8b5b-f7b06e7ad0d6?expires=1788981300&signature=6c32e0884f83d34fbb072333016a282347ab7aceeca25acaaff04066bb6ffa45&req=dScjFsp5nYhWWfMW1HO4zT7Q08CytQ0VAmYRPrgMBZk8tBowKo181xsay7%2Ba%0Apf67YONoYRRmax1xT2g%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1740370990/d173fbc6f030780d30c6d7b8e204/7e47b9d1-89fe-4607-8b5b-f7b06e7ad0d6?expires=1789020000&signature=30cb463f72571c06dc1bea7a05bd7a65f0b0b989f5571d7b4292a9decda79a01&req=dScjFsp5nYhWWfMW1HO4zT7Q08G7vwwWAmYRPrgMBZmFsHvppLZ%2FygTizvu1%0AnNdHJzR4TwnePI5udeA%3D%0A) ## Add and remove access to private projects diff --git a/content/support/9534590-cost-and-usage-reporting-in-the-claude-console.md b/content/support/9534590-cost-and-usage-reporting-in-the-claude-console.md index 551910bed..fc2f10536 100644 --- a/content/support/9534590-cost-and-usage-reporting-in-the-claude-console.md +++ b/content/support/9534590-cost-and-usage-reporting-in-the-claude-console.md @@ -8,7 +8,7 @@ The Claude Console provides detailed cost and usage reporting to help you effect Users with access to these reports can click into them on the left navigation menu on the Console: -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1584654217/db0a977417e38e43639f060d96e0/image.png?expires=1788981300&signature=e48b51ad9085d24875218b5a567244e66e5c87ea5f40570a64ba62ee1e4f054b&req=dSUvEs97mYNeXvMW1HO4zYCWiSwRiceZuqqBX2puyxRIibobWe5u8pPXIOrm%0AFSqCRRvpdCyXjTKmldY%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1584654217/db0a977417e38e43639f060d96e0/image.png?expires=1789020000&signature=a0a801c01c2ce939d74e1391cd808eb4b892c6ca3f1c66af30cdc1f0ae0e0b2d&req=dSUvEs97mYNeXvMW1HO4zYCWiS0Yg8aauqqBX2puyxTqw%2BkTHs0N8Crkvx%2Ft%0AePuP3o9yN7OdoK%2BDVvM%3D%0A) --- @@ -46,9 +46,9 @@ The [Usage page](https://platform.claude.com/usage) offers a detailed breakdown 6. Use the export button to download a CSV of the displayed data. -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1584664321/59b50eba0b61e0789f7055fcf9f4/image+%285%29.png?expires=1788981300&signature=f3997366d6060b98dd476ac168e09d9fea64e41a849691a8c74eeefb8491a191&req=dSUvEs94mYJdWPMW1HO4zQwER3sjKY5lqMITUZbanFAEdP188b7tucdl%2BaE7%0Ad3XXgzzTUhfHIYizXoM%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1584664321/59b50eba0b61e0789f7055fcf9f4/image+%285%29.png?expires=1789020000&signature=f431424052795a82fa77799cfde83f7cc1d3ad5af22e75a4cc78e6b119f67995&req=dSUvEs94mYJdWPMW1HO4zQwER3oqI49mqMITUZbanFBEce%2BXKwjiilGVcfIP%0AmVKZ82gggQa1cMRgAvw%3D%0A) -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1584693386/aed472efe163abcbc14fa32f3699/rate+limited+requests.png?expires=1788981300&signature=08172b5db65ea4e09319fca3233343c184303b08842ff17a6b4ad1872e3a271a&req=dSUvEs93noJXX%2FMW1HO4zRxEwWNE7lBv21D6pckxWMZI2MksQAkULrXFo1XC%0A0nytKtqdebW%2BdGiEEb4%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1584693386/aed472efe163abcbc14fa32f3699/rate+limited+requests.png?expires=1789020000&signature=4e92993c90e5c00c6eaa584210bdc6650c0d444c2200a03076f85aaa157d08e8&req=dSUvEs93noJXX%2FMW1HO4zRxEwWJN5FFs21D6pckxWMb4NrLuRp10LFc8uq30%0AqmoNz1ULw2SNvYo4Klk%3D%0A) ### Rate Limit Use @@ -88,6 +88,6 @@ The [Cost page](https://platform.claude.com/cost) helps you understand your spen 5. Use the export button to download a CSV of the cost data. -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1584679401/4d0bc8ed08625e1adee414e77030/CleanShot+2025-06-23+at+08_54_40%402x.png?expires=1788981300&signature=877276eef001b38578b153b101bdd0121a09953268285c28679be0c62b4d0485&req=dSUvEs95lIVfWPMW1HO4zUR%2Bh5TKW9FiCyIF5nuUsbzg0M3kXeywIG2Ytnts%0AhlOYbyMQPH6hKZg7U3E%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1584679401/4d0bc8ed08625e1adee414e77030/CleanShot+2025-06-23+at+08_54_40%402x.png?expires=1789020000&signature=789044fca7830013dd5c9df6ac30595126b285bb9eac78782e952e39e790aadf&req=dSUvEs95lIVfWPMW1HO4zUR%2Bh5XDUdBhCyIF5nuUsbx5Zv3cmJAZuzPagap1%0AI%2B5DO%2FKxOQUb%2BoaaZaI%3D%0A) **Note**: Currently, it's not possible to break down usage or cost by individual users. \ No newline at end of file diff --git a/content/support/9547008-publish-and-share-artifacts.md b/content/support/9547008-publish-and-share-artifacts.md index a8b4dc95f..745cc0dd8 100644 --- a/content/support/9547008-publish-and-share-artifacts.md +++ b/content/support/9547008-publish-and-share-artifacts.md @@ -56,11 +56,11 @@ Publishing also adds the artifact to the **[Artifacts](https://claude.ai/artifac After publishing, you'll see a “Get embed code” button. -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1951684960/0cd917c4455b31e86b70a97f8234/image.png?expires=1788981300&signature=edf38825f63b1e3813c186079fbfd52cdf6d74da05f0e635db2a975428b8e6fa&req=dSkiF892mYhZWfMW1HO4zdcpD15b7QKCR8xgMH3ra8gzQNDR2x3gNQ%2BXO5MF%0AvTh17vcmi5Ygv93r9ko%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1951684960/0cd917c4455b31e86b70a97f8234/image.png?expires=1789020000&signature=696db3f8cdb750a55d4a30b07d04aab4f4cd6dcdbf2fb1413020a35a3f378889&req=dSkiF892mYhZWfMW1HO4zdcpD19S5wOBR8xgMH3ra8i0vEMxrZo2BozWTeR%2B%0Ao%2Fj%2BOf0VYiXDY%2FMQ%2BIo%3D%0A) Click it to open a modal with automatically generated code you can copy and paste to embed your artifact on another website. -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1951685860/6bf1aa2c57d6ff95804797779e9c/image.png?expires=1788981300&signature=2f102623e50a327e87c758015630494b750b8b2937c03b287252572689a4d7ef&req=dSkiF892mIlZWfMW1HO4zcqH79GKwYVuf3CUbx4Ru6VMraSiX51odqzPGVUa%0AkpBu2vfz4v8tWwzQ6qY%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1951685860/6bf1aa2c57d6ff95804797779e9c/image.png?expires=1789020000&signature=0f1a4356658fab1c3e0a055089da9e0b781d465ac0b89c29836f7f1e16d9350c&req=dSkiF892mIlZWfMW1HO4zcqH79CDy4Rtf3CUbx4Ru6UsaD4w4cgpjuWhQnXH%0A225QJq%2BAllTmRYOK5Uk%3D%0A) You must specify which websites can embed your artifact by entering URLs in the **Allowed domains** field, separated by commas. @@ -116,7 +116,7 @@ Artifacts created on Team or Enterprise accounts can only be shared within your 4. Click “Share & copy link” to make this version shareable. -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1951680160/d5a38784df4c6d0cc55eda339279/Screenshot%2B2025-10-28%2Bat%2B2_00_15-E2-80-AFPM.png?expires=1788981300&signature=43f5d151d8c2b9685baa6df0b589ac023aa0d6a7936014390a2e4e70e89b690c&req=dSkiF892nYBZWfMW1HO4zbvYOlnsJXiQK6hAzMpXfmMR3bNLFk%2Fyws0tn0gD%0A4jXnKUM49ikcLSQ9dIM%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1951680160/d5a38784df4c6d0cc55eda339279/Screenshot%2B2025-10-28%2Bat%2B2_00_15-E2-80-AFPM.png?expires=1789020000&signature=b4ef2ff2fa2151bd1d4bd774e19db800141a03749b9310b5fce5350722ca4dd1&req=dSkiF892nYBZWfMW1HO4zbvYOljlL3mTK6hAzMpXfmPLEpLoIi4B5f%2BrF3AY%0AAykvxOYa4lukeYMrfqQ%3D%0A) ### Who can access shared artifacts @@ -138,7 +138,7 @@ When you share an artifact, viewers also gain access to any attachments and file 2. In the **Artifact shared** modal, click “Unshare.” -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1951676927/c66153a2c075c6a64404306aefd0/Screenshot%2B2025-10-28%2Bat%2B1_58_24-E2-80-AFPM.png?expires=1788981300&signature=69d97f9cdbe1e07e44bdb13c1ae88c2a25928e8a8c4ce41c1670c7ee0795a92c&req=dSkiF895m4hdXvMW1HO4zW9EwgG08XWwgj8mTHivCKYQbi60oYfwWGT2XpSY%0A4TSqBcStKiE2NLzqmoQ%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1951676927/c66153a2c075c6a64404306aefd0/Screenshot%2B2025-10-28%2Bat%2B1_58_24-E2-80-AFPM.png?expires=1789020000&signature=431c2e183ea400bde6d820989cdbfd6beea61a3cc50d252b4260089f50104be7&req=dSkiF895m4hdXvMW1HO4zW9EwgC9%2B3Szgj8mTHivCKbw9k5GdAoW6KlySXy6%0A3979N%2FiA21XjC9IdfJI%3D%0A) --- diff --git a/content/support/9927533-disable-public-projects-for-your-organization.md b/content/support/9927533-disable-public-projects-for-your-organization.md index 9c42f947f..4e3cf075f 100644 --- a/content/support/9927533-disable-public-projects-for-your-organization.md +++ b/content/support/9927533-disable-public-projects-for-your-organization.md @@ -10,7 +10,7 @@ Follow these steps: 2. Find **Public projects** and toggle it off -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2053902291/8c39d1a79dedc97411eed54dec5c/CleanShot+2026-02-11+at+11_25_34%402x.png?expires=1788981300&signature=b6bcab983e0fbf794641a52ece33c7e55d2de4bb38a5c2a8c5a03a489b7ca38d&req=diAiFcB%2Bn4NWWPMW1HO4zfGib2%2BtYwFcYabJlVJ9VPxlJ2lG0LGUNlJjuSPz%0AHI78ikBSmfEg7oQ5bA0%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2053902291/8c39d1a79dedc97411eed54dec5c/CleanShot+2026-02-11+at+11_25_34%402x.png?expires=1789020000&signature=2ad6f18f823cc687d5915de7130fa433ea2e6601037a98df92218f7dfe7b07fb&req=diAiFcB%2Bn4NWWPMW1HO4zfGib26kaQBfYabJlVJ9VPxJQR1Zu6j6k4Tb77V3%0A4WVtHZy8KRHm0FMKXxs%3D%0A) ## How does disabling public projects work? diff --git a/discovery.json b/discovery.json index 653264ef2..be7c94b7f 100644 --- a/discovery.json +++ b/discovery.json @@ -1,7 +1,7 @@ { "version": 1, "note": "What the last full run could see outside sources.json. Written by the fetcher so a new source arrives as a diff a human reviews, not as a line in an Actions log nobody reads. Stable facts only: a change here is always news. `review` is the actionable list \u2014 domains we could archive today and do not.", - "updated": "2026-09-09", + "updated": "2026-09-10", "domains": { "anthropic.com": { "status": "frozen", @@ -131,6 +131,7 @@ "anthropics/maestro", "anthropics/mockturtle", "anthropics/model-cards", + "anthropics/mythos-5-incident-transcript", "anthropics/nix-eval-jobs", "anthropics/oncall-kit", "anthropics/original_performance_takehome", diff --git a/tombstones.json b/tombstones.json index 949be0cdc..f316d6d3c 100644 --- a/tombstones.json +++ b/tombstones.json @@ -1,7 +1,7 @@ { "version": 1, "note": "URLs confirmed gone upstream. Kept so a page that died once does not report as a fresh failure on every later run, which would bury the failure that is actually new. An entry clears itself if the URL answers again -- but only while something still probes it. Entries whose local file was removed are no longer fetched, so they stay as a record of the restructure rather than a live check.", - "updated": "2026-09-09", + "updated": "2026-09-10", "urls": { "https://claude.com/docs/claude-science/annotations": { "since": "2026-09-01",