diff --git a/content/.metadata.json b/content/.metadata.json index f399e0d36..94a59b4b1 100644 --- a/content/.metadata.json +++ b/content/.metadata.json @@ -1,7 +1,7 @@ { "metadata": { "version": "2.0", - "fetch_date": "2026-07-28T17:15:59.786504Z", + "fetch_date": "2026-07-29T03:56:59.824475Z", "section": "all" }, "items": [ @@ -3866,15 +3866,15 @@ "url": "https://code.claude.com/docs/en/advisor", "status": "success", "path": "en/docs/claude-code/advisor.md", - "sha256": "ff20de2bfe61f9fff5df0c6b8b4bd66fb7622733bdfe7b236a021cf188117f62", - "size": 16022 + "sha256": "eac16abc57c5c6ca186e620c83ce2e67465489f8f605082db68476e9befdaf2b", + "size": 16096 }, { "url": "https://code.claude.com/docs/en/agent-sdk/agent-loop", "status": "success", "path": "en/docs/claude-code/agent-sdk/agent-loop.md", - "sha256": "716cd8c2c01a9bb32e4b697f722028f3a3f13ec10b970ebdf78f1eb75adfca60", - "size": 43962 + "sha256": "b5370457097d82f0324a7278c4be3fe16eca518e17740296ee70ae700de45266", + "size": 44748 }, { "url": "https://code.claude.com/docs/en/agent-sdk/claude-code-features", @@ -3901,29 +3901,29 @@ "url": "https://code.claude.com/docs/en/agent-sdk/file-checkpointing", "status": "success", "path": "en/docs/claude-code/agent-sdk/file-checkpointing.md", - "sha256": "edc4eb39cf9a62ed1b70aba2cbbfef7d8eedf33130a7ce21ce80792ff579f696", - "size": 32980 + "sha256": "de465650a077ab317764201ddf1914087f11e555f5b742b17506fb9c19104832", + "size": 34571 }, { "url": "https://code.claude.com/docs/en/agent-sdk/hooks", "status": "success", "path": "en/docs/claude-code/agent-sdk/hooks.md", - "sha256": "df572790d39a7200dc3cf91f7f2329aaf293731b922bcf1e1bcb4013e4055627", - "size": 49832 + "sha256": "b126059aa8e6dab3525f83f0caa59acd53c89e2f1bf554a53f7ea007a62424d3", + "size": 52671 }, { "url": "https://code.claude.com/docs/en/agent-sdk/hosting", "status": "success", "path": "en/docs/claude-code/agent-sdk/hosting.md", - "sha256": "46492f937f14492e2eb8c164dd430c6c6bb5affaaea18f19988a1657578224cc", - "size": 23109 + "sha256": "82bc19f70b347e886790617fda79222a158d34815ef2523edb3755e01ffbf822", + "size": 23469 }, { "url": "https://code.claude.com/docs/en/agent-sdk/mcp", "status": "success", "path": "en/docs/claude-code/agent-sdk/mcp.md", - "sha256": "7a47900cc0972123acb2f14d002008f92760b5df80c3336933ac5715c3dcd0c8", - "size": 32929 + "sha256": "d020bd860ff3ba9ccfbaf03257a897661e2f88a8fd1f1f5324a773daf67a67e8", + "size": 33305 }, { "url": "https://code.claude.com/docs/en/agent-sdk/migration-guide", @@ -3936,22 +3936,22 @@ "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": "91f01b277dfae82d074c9491b9f6c43258815e06979a067764a996e1902db954", - "size": 24630 + "sha256": "9321db6276134be8291673a6d719710e9a422c8b48eca1ba4a2573465c7f976e", + "size": 25344 }, { "url": "https://code.claude.com/docs/en/agent-sdk/observability", "status": "success", "path": "en/docs/claude-code/agent-sdk/observability.md", - "sha256": "717950ed8a38289da46a66eb2955caeeb914a29d62581390289480381f72ea9f", - "size": 19215 + "sha256": "37698e197cc7a65aab45a5ae331ff778a25a4b0a3da5a727c4000f42a9359662", + "size": 20166 }, { "url": "https://code.claude.com/docs/en/agent-sdk/overview", "status": "success", "path": "en/docs/claude-code/agent-sdk/overview.md", - "sha256": "72f434e264cd03bbad3d11ede2056ef909980c790568380027fd9b65014cc4b5", - "size": 29648 + "sha256": "a443e0c70e5b1c98998f6836a2a06ef17f310fb90dbd8e4c3f96b4179d4207bb", + "size": 9069 }, { "url": "https://code.claude.com/docs/en/agent-sdk/permissions", @@ -3964,22 +3964,22 @@ "url": "https://code.claude.com/docs/en/agent-sdk/plugins", "status": "success", "path": "en/docs/claude-code/agent-sdk/plugins.md", - "sha256": "e141b7d8f77621f0e145f65b49104f6109173ffc2b5ce9f2e3e8057daf2c511a", - "size": 12418 + "sha256": "1d0da47cda713fd6af4338206e842e0211f46089baab49f7198745de02f12c77", + "size": 13067 }, { "url": "https://code.claude.com/docs/en/agent-sdk/python", "status": "success", "path": "en/docs/claude-code/agent-sdk/python.md", - "sha256": "c661585680e7bc96e8bf7bf4bcbfe737861b6909954cdc26c88aa90f13bf4928", - "size": 192085 + "sha256": "5d2c9fb502c3b550afee3f9cd3262fdd6765297bd960348a0eb72c302691d631", + "size": 193870 }, { "url": "https://code.claude.com/docs/en/agent-sdk/quickstart", "status": "success", "path": "en/docs/claude-code/agent-sdk/quickstart.md", - "sha256": "548b0ae0312ae5776965cbbcae240eeb0215c33133ece3f9c65f77b3588dc81b", - "size": 17955 + "sha256": "fe1e770d35e523e308c281527bb696f03b8bd0b59b7f9c23969b0161ceb32199", + "size": 18048 }, { "url": "https://code.claude.com/docs/en/agent-sdk/secure-deployment", @@ -3992,29 +3992,29 @@ "url": "https://code.claude.com/docs/en/agent-sdk/session-storage", "status": "success", "path": "en/docs/claude-code/agent-sdk/session-storage.md", - "sha256": "f9841faface9ddcfd8f04125454fed5beefff06cabcc16cb5259576c2111f132", - "size": 19075 + "sha256": "bcc58d0fc90e6345eb79a8a3908428ea26be00c91714d902399d1d3fafe9a49e", + "size": 19803 }, { "url": "https://code.claude.com/docs/en/agent-sdk/sessions", "status": "success", "path": "en/docs/claude-code/agent-sdk/sessions.md", - "sha256": "a624c41567c45d3cd61f1e39498e66e63fceb6ece65213491596104f8480b51a", - "size": 21631 + "sha256": "89e991b777429220e0eb6ef74656c4b89c6303eaf81b78afe4e8066d4f982e87", + "size": 21626 }, { "url": "https://code.claude.com/docs/en/agent-sdk/skills", "status": "success", "path": "en/docs/claude-code/agent-sdk/skills.md", - "sha256": "4fdab3a401743723ea42cfe189d79fa95173b23ae2a9d05199f18331fe1a7234", - "size": 12822 + "sha256": "11eca5d721931887aa3ac1f96b32eb517e5679510c99392c0359102317aa9b3f", + "size": 13702 }, { "url": "https://code.claude.com/docs/en/agent-sdk/slash-commands", "status": "success", "path": "en/docs/claude-code/agent-sdk/slash-commands.md", - "sha256": "53703e1c38fce6081d84e2d0a6e3cc7683d3c1f66c4b9657b7e65eeca8531e73", - "size": 20489 + "sha256": "28ac01de544f9e387beb260b8398bde3d3fdf6ff3bbe05b76e3eb49957d9bf03", + "size": 20788 }, { "url": "https://code.claude.com/docs/en/agent-sdk/streaming-output", @@ -4034,8 +4034,8 @@ "url": "https://code.claude.com/docs/en/agent-sdk/structured-outputs", "status": "success", "path": "en/docs/claude-code/agent-sdk/structured-outputs.md", - "sha256": "74d557b7cc219b110ca577dd2e26c368d08cd577c0af8ea47ef3964370ee5c1b", - "size": 21449 + "sha256": "a3f916716cf737c89a04d13860922f86fde11310437fe87e8de1262334e6a08d", + "size": 21249 }, { "url": "https://code.claude.com/docs/en/agent-sdk/subagents", @@ -4055,36 +4055,36 @@ "url": "https://code.claude.com/docs/en/agent-sdk/tool-search", "status": "success", "path": "en/docs/claude-code/agent-sdk/tool-search.md", - "sha256": "92e7582fd652e96cee0c04ef47872309c777a72129280dbdf29374668541c35f", - "size": 10988 + "sha256": "34bb67c0413e749299a17f1026f6c03bd30205a03e009a4b0e5551ec1f2d1257", + "size": 12260 }, { "url": "https://code.claude.com/docs/en/agent-sdk/typescript", "status": "success", "path": "en/docs/claude-code/agent-sdk/typescript.md", - "sha256": "d6d9403ca6e6a0c2254b4a2215eba98863f8133cd68f78423b8df33cf302ac57", - "size": 218757 + "sha256": "a09e8a208842c263e85795ed77b2042f261e0f593d0ec249709e5cfb4cc63a14", + "size": 264631 }, { "url": "https://code.claude.com/docs/en/agent-sdk/typescript-v2-preview", "status": "success", "path": "en/docs/claude-code/agent-sdk/typescript-v2-preview.md", - "sha256": "9299fb45b5fc6be56a7efbc6167f73dbea4d9c73db575ddf624297566b17b328", - "size": 12050 + "sha256": "3d8af69e6112246f444b6ae50908206036863e79c4a7007e11fe76ccc1b02f70", + "size": 12165 }, { "url": "https://code.claude.com/docs/en/agent-sdk/user-input", "status": "success", "path": "en/docs/claude-code/agent-sdk/user-input.md", - "sha256": "91cbe97f95e3d88100bf4f038c27926e8f917384bac46c0951b179a4abb350f5", - "size": 39747 + "sha256": "1b8c7034a30966bc25994f2cf77ea2ab5d88c293b85186c9ebbd5354aefee82f", + "size": 39910 }, { "url": "https://code.claude.com/docs/en/agent-teams", "status": "success", "path": "en/docs/claude-code/agent-teams.md", - "sha256": "fc6e6b7a60c3b770b560ba0df53f5742ff1e08a7f3cfa45938c3d135807dcd9c", - "size": 33191 + "sha256": "94f51fac37ec13a29298828eeba24d2b924bf7c8ee4a919fc6efb20c33735a60", + "size": 33349 }, { "url": "https://code.claude.com/docs/en/agent-view", @@ -4125,22 +4125,22 @@ "url": "https://code.claude.com/docs/en/authentication", "status": "success", "path": "en/docs/claude-code/authentication.md", - "sha256": "43d151845b84e4aeca9f374a64d081aac2f5b1ea190bc10b4d318832ea2878f7", - "size": 17595 + "sha256": "093cc22097ce68a67c2d4e03a399146d6dbab6aec2fc37f7d9ba6024217d7154", + "size": 17731 }, { "url": "https://code.claude.com/docs/en/auto-mode-config", "status": "success", "path": "en/docs/claude-code/auto-mode-config.md", - "sha256": "6803653df6a7f24538430c747200083c25c54250774be0dad59fea066f7b38e4", - "size": 27683 + "sha256": "9dc246b78a74855e6ab7b58afa5b93d1e91b2d7f7276afb59063fcef52796179", + "size": 27697 }, { "url": "https://code.claude.com/docs/en/best-practices", "status": "success", "path": "en/docs/claude-code/best-practices.md", - "sha256": "a39640f06323961248f5cd17b89b46d6e4aafac74b64fccf4dbbcb216516183c", - "size": 39582 + "sha256": "20f44ccf4e6c4397e52c8a8e900c37424843974fd10e534918ea298e5b11bdd9", + "size": 39668 }, { "url": "https://code.claude.com/docs/en/champion-kit", @@ -4174,8 +4174,8 @@ "url": "https://code.claude.com/docs/en/checkpointing", "status": "success", "path": "en/docs/claude-code/checkpointing.md", - "sha256": "58e57f783dde1e2fea704f80a1eac5b309c3bc089dc3eba8ed52d0131b9ccc43", - "size": 8945 + "sha256": "129c91e92f22b378d166e4043e604dc6a066657a21c21708e3c709d1345d002c", + "size": 8078 }, { "url": "https://code.claude.com/docs/en/chrome", @@ -4195,8 +4195,8 @@ "url": "https://code.claude.com/docs/en/claude-apps-gateway-config", "status": "success", "path": "en/docs/claude-code/claude-apps-gateway-config.md", - "sha256": "727ef5eff18db91df9c6346c97b926a3280266c17bf6398bbccf22b6a285bc85", - "size": 83515 + "sha256": "5fa289dbe31ff4664e08bfc2549a9aadc2ca47eda19e7d56602b37a9327e1d1c", + "size": 83560 }, { "url": "https://code.claude.com/docs/en/claude-apps-gateway-deploy", @@ -4223,15 +4223,15 @@ "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": "89b25aab64f200a2dc45a309105cc20375e4e605ab03f84d48b7a860a62d8e93", - "size": 29344 + "sha256": "50cd29f7494090926a0bcc5b5fe7408ba98167d51439fcc333d6a1d4d6a61c85", + "size": 29486 }, { "url": "https://code.claude.com/docs/en/claude-directory", "status": "success", "path": "en/docs/claude-code/claude-directory.md", - "sha256": "9ca98b493874566d360cbe5d937a1d83be55fe6b4b1dfcf6d876cf9597aceb89", - "size": 88005 + "sha256": "19a8ef0e49cc1c1f030cebe3476889cf21015134f1312b02d51ff11634d923e1", + "size": 88263 }, { "url": "https://code.claude.com/docs/en/claude-platform-on-aws", @@ -4258,29 +4258,29 @@ "url": "https://code.claude.com/docs/en/cloud-environments", "status": "success", "path": "en/docs/claude-code/cloud-environments.md", - "sha256": "6c59d64b4bfd8242a21e40c41f64996339c9f692328135129e74c3cc730864ed", - "size": 48182 + "sha256": "0adf0899c70588fb488106dfe4a6de0d1b8352ce0843449dcbc0448811b835e3", + "size": 48895 }, { "url": "https://code.claude.com/docs/en/code-review", "status": "success", "path": "en/docs/claude-code/code-review.md", - "sha256": "f2d1e4c8d3ab8eee478cfbc59fa07524318935558e1e47bead44dd6aed2572b0", - "size": 28599 + "sha256": "5b44620689ab75fa16dd4dc698ed7a87c1e59a6dedd60e242b6e1a29324837e1", + "size": 29671 }, { "url": "https://code.claude.com/docs/en/commands", "status": "success", "path": "en/docs/claude-code/commands.md", - "sha256": "da1b533511bae6fac477468d0da5609756261cad44b25e424e699b85129efd09", - "size": 185368 + "sha256": "40171e0419a68f0949b919b83e4bfea21c26cf16c872848048dc43b06456c218", + "size": 185377 }, { "url": "https://code.claude.com/docs/en/common-workflows", "status": "success", "path": "en/docs/claude-code/common-workflows.md", - "sha256": "1ebdc7f9889596a169fe4b715b6f4b0dcd2baff10e75765a193ac15b8c8f0580", - "size": 18539 + "sha256": "df01507484f3f783d287ea79f063bf6070b19288dc2443c0df349c8cc2e38240", + "size": 18749 }, { "url": "https://code.claude.com/docs/en/communications-kit", @@ -4314,15 +4314,15 @@ "url": "https://code.claude.com/docs/en/costs", "status": "success", "path": "en/docs/claude-code/costs.md", - "sha256": "b1292713c4fafd342158d1a58cac028785ba4594bc82c20c2a62f329f59305d8", - "size": 29678 + "sha256": "179d5be3a3c48fe4ad0f70ff9b47bdaa295816e06309fc4c16fd4d2d5cbe1acf", + "size": 30132 }, { "url": "https://code.claude.com/docs/en/data-usage", "status": "success", "path": "en/docs/claude-code/data-usage.md", - "sha256": "4249b31c7f30f958d941502f0294f1e6c6775a9ada2a5eb4ea9cb8cad596b235", - "size": 20155 + "sha256": "41ce71d59147b1d4fe4c22b50d3b22e9f84d61b957d85a51455bc5509845a247", + "size": 20378 }, { "url": "https://code.claude.com/docs/en/debug-your-config", @@ -4342,8 +4342,8 @@ "url": "https://code.claude.com/docs/en/desktop", "status": "success", "path": "en/docs/claude-code/desktop.md", - "sha256": "a551d06b0d1a245efc8a9cca27e52aa2b37dc065f3f94e43438098205c85bf17", - "size": 90174 + "sha256": "2e75e46e89943236c7ecb89dfe96c1a33856c38b479331d909f310da8c1e5c91", + "size": 90921 }, { "url": "https://code.claude.com/docs/en/desktop-ios-simulator", @@ -4356,8 +4356,8 @@ "url": "https://code.claude.com/docs/en/desktop-linux", "status": "success", "path": "en/docs/claude-code/desktop-linux.md", - "sha256": "1562b9e7017b302fee5a38e356caf600111ad9243d8fd55c1b441008f989040f", - "size": 7142 + "sha256": "65f623473eb2c16a2a6039eabf2bfb3a3f66889ff0406c80818b2c4873ed6013", + "size": 7418 }, { "url": "https://code.claude.com/docs/en/desktop-quickstart", @@ -4384,8 +4384,8 @@ "url": "https://code.claude.com/docs/en/devcontainer", "status": "success", "path": "en/docs/claude-code/devcontainer.md", - "sha256": "c72fed7e75b5b57c88b6e25b51efecafd399575c44aec3136fdb22f9251ace8c", - "size": 17535 + "sha256": "2f072d7b6056bf14f6aaaf75c8afa1e7879e7762e494df2d3acc0e2ce5bba64d", + "size": 18498 }, { "url": "https://code.claude.com/docs/en/discover-plugins", @@ -4398,15 +4398,15 @@ "url": "https://code.claude.com/docs/en/env-vars", "status": "success", "path": "en/docs/claude-code/env-vars.md", - "sha256": "7495c8d612ea11275b5bc4c0249a0532c9a73be466e0f969864812c912d90709", - "size": 332890 + "sha256": "3bdadb31a98dc86caf639f4a72868998ba71efae9c1a58c58b03ac18a768e052", + "size": 334390 }, { "url": "https://code.claude.com/docs/en/errors", "status": "success", "path": "en/docs/claude-code/errors.md", - "sha256": "a6e478617be9c2531e014759b14869e57e0d378c895eaa1aac68ef4d64615740", - "size": 149213 + "sha256": "1193746fcedd1f0787c5a92c478d3933b50944731a565e6650dcc8c071416c2f", + "size": 153978 }, { "url": "https://code.claude.com/docs/en/fast-mode", @@ -4419,8 +4419,8 @@ "url": "https://code.claude.com/docs/en/feature-availability", "status": "success", "path": "en/docs/claude-code/feature-availability.md", - "sha256": "01e5a490d35942c54f5bc51eea44d6cd173df9dcb8cc85426913f949357cd324", - "size": 20538 + "sha256": "0ea5cc8c91b4e326538f7f56437f3f04b331ee6a634b2660f9b122a777f8a7a3", + "size": 21039 }, { "url": "https://code.claude.com/docs/en/features-overview", @@ -4454,8 +4454,8 @@ "url": "https://code.claude.com/docs/en/github-enterprise-server", "status": "success", "path": "en/docs/claude-code/github-enterprise-server.md", - "sha256": "05b3a96047c1a1f237a603139f2d2cca77065cf2cdbebc1f6ea6a592da8251f7", - "size": 19676 + "sha256": "6449e3e9e23e34bd2ae6d80c385b5803b067fff9d271b962639207cedfc1c636", + "size": 19844 }, { "url": "https://code.claude.com/docs/en/gitlab-ci-cd", @@ -4475,8 +4475,8 @@ "url": "https://code.claude.com/docs/en/goal", "status": "success", "path": "en/docs/claude-code/goal.md", - "sha256": "56a76edc6bf3e8e52f184385c7223a075d520b0565ad8a3eb5b07d04b811e076", - "size": 9080 + "sha256": "f7b5281df344cfea4190e7b2948810a73f8fefcfecd33bb9c50f58e1ecf4ff62", + "size": 9718 }, { "url": "https://code.claude.com/docs/en/google-vertex-ai", @@ -4496,15 +4496,15 @@ "url": "https://code.claude.com/docs/en/hooks", "status": "success", "path": "en/docs/claude-code/hooks.md", - "sha256": "b65c99124dc5e4a1ad671d9fa2e906e9601706c0621e18718a122a29af7d33f7", - "size": 239248 + "sha256": "78cbfc99b83febc475c29bf1e4b32d3abd779418fafa6ec430f029357880e45d", + "size": 240318 }, { "url": "https://code.claude.com/docs/en/hooks-guide", "status": "success", "path": "en/docs/claude-code/hooks-guide.md", - "sha256": "cd7a9e7d97216d617b709c25d1848ad4c36a0a1c4b40f7df08df312da312c5f1", - "size": 60826 + "sha256": "890bfcdbc56fa6c60f811ad739a0e35bed509cdf2e52be793c71f2ec25d7d36e", + "size": 62429 }, { "url": "https://code.claude.com/docs/en/how-claude-code-works", @@ -4538,8 +4538,8 @@ "url": "https://code.claude.com/docs/en/large-codebases", "status": "success", "path": "en/docs/claude-code/large-codebases.md", - "sha256": "ff3698115ed40ec008eb55db10a59f82474e1b0a793022394d4ac03c4d2c39f6", - "size": 35112 + "sha256": "a543f35ee8f48332cafff485b655ebbe0457d60978fb8cad1d695b8cf5cb76dc", + "size": 35170 }, { "url": "https://code.claude.com/docs/en/legal-and-compliance", @@ -4559,15 +4559,15 @@ "url": "https://code.claude.com/docs/en/llm-gateway-connect", "status": "success", "path": "en/docs/claude-code/llm-gateway-connect.md", - "sha256": "0c5329b87a1715f1bfcf4e8b07d83a96fbd88d0fe5289a10c6d2449ef524157d", - "size": 48720 + "sha256": "2d6b534ee1fd3e5cf5897f23094e2857434ed5a046d43fd98b27a33a87836455", + "size": 48810 }, { "url": "https://code.claude.com/docs/en/llm-gateway-protocol", "status": "success", "path": "en/docs/claude-code/llm-gateway-protocol.md", - "sha256": "4fa26b575a2e55a255247886c4fc1e2f0644a79aedfcb4ae07e330dba9818fc8", - "size": 27351 + "sha256": "9d1a777cb1f16b9fbf7a49f211914689add9425177d68fb9acd01bc597d2645b", + "size": 27891 }, { "url": "https://code.claude.com/docs/en/llm-gateway-rollout", @@ -4587,8 +4587,8 @@ "url": "https://code.claude.com/docs/en/mcp", "status": "success", "path": "en/docs/claude-code/mcp.md", - "sha256": "8dc1f1ba7f4724cf90231f4d4ff54e2c09591b1eb4f427f534339581adc330c2", - "size": 76305 + "sha256": "9812bbfe1e360f0da018cd7d47c5fb30455f9e26ce7ee6cb4dc8a0e1225ba869", + "size": 80806 }, { "url": "https://code.claude.com/docs/en/mcp-quickstart", @@ -4622,22 +4622,22 @@ "url": "https://code.claude.com/docs/en/model-config", "status": "success", "path": "en/docs/claude-code/model-config.md", - "sha256": "cbd3ba1917853d3d1c2f703d92cbf2a14d83419bb3969053024ad2397d940bc2", - "size": 82832 + "sha256": "0a8aca620929e8f273c56fb0010b842ad10981d8bde4ff1a925ca8931aeab58a", + "size": 83540 }, { "url": "https://code.claude.com/docs/en/monitoring-usage", "status": "success", "path": "en/docs/claude-code/monitoring-usage.md", - "sha256": "df45b53c15b5447ff4881cbf8c488b0cf1d1506f07c3ce04995c513a07198861", - "size": 128658 + "sha256": "b3e4e755cb3035d3d561fca8094ea71fce8793348863950b40ef7d0761cb3064", + "size": 129393 }, { "url": "https://code.claude.com/docs/en/network-config", "status": "success", "path": "en/docs/claude-code/network-config.md", - "sha256": "3f3b934c153143a006bee9eaeeb16f71537d1cff6d6d93adf3c2e90ac0e3aa3b", - "size": 19996 + "sha256": "921399d697b665c199b5b821c54579e122d6c32d2608882f8b081ad372879d05", + "size": 22005 }, { "url": "https://code.claude.com/docs/en/output-styles", @@ -4650,15 +4650,15 @@ "url": "https://code.claude.com/docs/en/overview", "status": "success", "path": "en/docs/claude-code/overview.md", - "sha256": "6ab249f4af57b42d07e7a035d3f44a4fe61bd90b92c4e6fee6ba69d166e168fa", - "size": 16251 + "sha256": "a7bcdc9737d8a2395dcb3e9c3e1d9c6baffd337e0847d22a9f65fb37d94b0393", + "size": 16445 }, { "url": "https://code.claude.com/docs/en/permission-modes", "status": "success", "path": "en/docs/claude-code/permission-modes.md", - "sha256": "a681c29797c2131ce8bc8598e3fedb6fc436b5694019a1dd355f257b2a1fb691", - "size": 50058 + "sha256": "84bd8417ad03577138192b41bcca228b99e15b073379e1b384d87486639ae2ce", + "size": 49848 }, { "url": "https://code.claude.com/docs/en/permissions", @@ -4692,8 +4692,8 @@ "url": "https://code.claude.com/docs/en/plugin-marketplaces", "status": "success", "path": "en/docs/claude-code/plugin-marketplaces.md", - "sha256": "bdedcb01831a1bbf30bb74e7afeed9ddde687b0c92d25cfc91ea014a2cd04895", - "size": 72624 + "sha256": "31adf2d4d2f61b799d3ee33180f9192673e107c7014563bc8739dd494f4a9309", + "size": 73577 }, { "url": "https://code.claude.com/docs/en/plugin-relevance", @@ -4706,43 +4706,43 @@ "url": "https://code.claude.com/docs/en/plugins", "status": "success", "path": "en/docs/claude-code/plugins.md", - "sha256": "e97b47470c911b6952aea072b5963835af48fe1839d53ae55e35605fc317e914", - "size": 27039 + "sha256": "d3145837a20cc6d6a5a587c165c16682d43d10c7a6258e788fab0c0ef5d9fd31", + "size": 27728 }, { "url": "https://code.claude.com/docs/en/plugins-reference", "status": "success", "path": "en/docs/claude-code/plugins-reference.md", - "sha256": "de627123349a9ae7e96089569fc532f8c1dd7aa96f960284a18a7086ea552442", - "size": 90234 + "sha256": "224451e05fb4e4a322a0e799316d66acdef8c7d6bbb373a9d9a94c3b81ac142e", + "size": 90543 }, { "url": "https://code.claude.com/docs/en/prompt-caching", "status": "success", "path": "en/docs/claude-code/prompt-caching.md", - "sha256": "d97eaca7ae94e690434c1d0a81d72db439670f178b59c86ea07f61bf0ce71095", - "size": 28961 + "sha256": "b68f0b570c2d9c12da3d4c4bfb4633ccc54b56a8624d293caf8283f182f2fae3", + "size": 29777 }, { "url": "https://code.claude.com/docs/en/prompt-library", "status": "success", "path": "en/docs/claude-code/prompt-library.md", - "sha256": "922e064e2fb8742b8af2ed8b48cff81d9839e0ce998245dfb97417b93dd27ac9", - "size": 56232 + "sha256": "1fcd41bd5ad993cb2c11c874898106afd1f8aa2f1ea15a9eeb7a85a7af6fbcdc", + "size": 56262 }, { "url": "https://code.claude.com/docs/en/quickstart", "status": "success", "path": "en/docs/claude-code/quickstart.md", - "sha256": "cf01823d70f5c9eb0187e98a447a76f9153ab1472d2c8e2a582d38c98962d18d", - "size": 12866 + "sha256": "3e6ab4bdc5d56b2efb56e4e0a92dbdc549549de4787648b67189eb73b82c2be8", + "size": 13572 }, { "url": "https://code.claude.com/docs/en/remote-control", "status": "success", "path": "en/docs/claude-code/remote-control.md", - "sha256": "b5963d31991f907985fec3199f54291e6cb4b3b079efa8d839cff268588f7cf8", - "size": 41369 + "sha256": "8fb5777c7b004977a77dc690b631d0abe11e77e545a900d5f01d79c7294411e9", + "size": 42486 }, { "url": "https://code.claude.com/docs/en/routines", @@ -4755,15 +4755,15 @@ "url": "https://code.claude.com/docs/en/sandbox-environments", "status": "success", "path": "en/docs/claude-code/sandbox-environments.md", - "sha256": "2324628f2ff29aed71ef7cd1e28a018757c4420d6e3f0315acea3ad1fbb51035", - "size": 15967 + "sha256": "d768ec703e25ff9065ecf1147369ecb05f9c29c5bb47671fab25ef3b2978eba9", + "size": 16881 }, { "url": "https://code.claude.com/docs/en/sandboxing", "status": "success", "path": "en/docs/claude-code/sandboxing.md", - "sha256": "c93ebcaae0a236c87c9fc3f60655bb348a08d7db4a34a8d22753375f7891d518", - "size": 49062 + "sha256": "2e2c82f8ce24969e26225b0fd5a5f328a5baf22c343277b551023d2702a8b02a", + "size": 49116 }, { "url": "https://code.claude.com/docs/en/scheduled-tasks", @@ -4776,15 +4776,15 @@ "url": "https://code.claude.com/docs/en/security", "status": "success", "path": "en/docs/claude-code/security.md", - "sha256": "173bbec3c7b9870026c26440a712b637cd7615f1f9e2614a16db10c66122a54f", - "size": 11258 + "sha256": "2993bb5cffd66ce03aa1bc415cbc3a56070c8fbcf5eb82bd983b6e8c3a47cd2a", + "size": 11385 }, { "url": "https://code.claude.com/docs/en/security-guidance", "status": "success", "path": "en/docs/claude-code/security-guidance.md", - "sha256": "6902efc58e5081202cafc7390023ebdea96b6e978c60456587d021171f9828c9", - "size": 20217 + "sha256": "ca28fc3d2cdb0ee41834cd23ab4ff38a5333384f6f6e15e8c640a7c7eaeda989", + "size": 20842 }, { "url": "https://code.claude.com/docs/en/server-managed-settings", @@ -4797,36 +4797,36 @@ "url": "https://code.claude.com/docs/en/sessions", "status": "success", "path": "en/docs/claude-code/sessions.md", - "sha256": "1e233018d07944587f6609b9c9be35164334e1c1f0aff29c4fefb719ab1d0ce9", - "size": 21490 + "sha256": "58d8c92a0d66530a9dee4d1c7e59e8bdd137438921c6ead03eb1f8e171e68d50", + "size": 23307 }, { "url": "https://code.claude.com/docs/en/settings", "status": "success", "path": "en/docs/claude-code/settings.md", - "sha256": "48994b0ac72e18586bca8d9f041119d720bac9fdcb618b7f9b9bac1503e29059", - "size": 269940 + "sha256": "de75920ec75659d057cda3a01e97d59d39f8f827925c7fcdde651e88665a5bfb", + "size": 271221 }, { "url": "https://code.claude.com/docs/en/setup", "status": "success", "path": "en/docs/claude-code/setup.md", - "sha256": "cc4acc3af867749f1aa819a17dce2a606dcad8df70aaed1c7fe2869c46b045d6", - "size": 30263 + "sha256": "22d94bf028d677c9069d0ccfba5c8feccf665460ebd4b3db5acbc1ab4b3e46c4", + "size": 30871 }, { "url": "https://code.claude.com/docs/en/skills", "status": "success", "path": "en/docs/claude-code/skills.md", - "sha256": "d367eefbfb5bf84a7697acf07d7ff18e47ca8e2dd660b1825706b77b5785e9ec", - "size": 72906 + "sha256": "9a319c076368d1db19020515c14ee283f054eb863a14b3a1b412570d9e3bb35d", + "size": 73200 }, { "url": "https://code.claude.com/docs/en/slack", "status": "success", "path": "en/docs/claude-code/slack.md", - "sha256": "9207433e566af55ee6120b12b888ad0caeb7e0117b838838a0772846a6818eff", - "size": 14716 + "sha256": "878f148a01a2309622829a9b465cf4ccf8290c11e2aa0b8dd803127cbbe3710f", + "size": 16337 }, { "url": "https://code.claude.com/docs/en/statusline", @@ -4839,8 +4839,8 @@ "url": "https://code.claude.com/docs/en/sub-agents", "status": "success", "path": "en/docs/claude-code/sub-agents.md", - "sha256": "64abaedb06ae3bbe6fbc47b12520f9f8bc0644a52c17069e9c2ada13155bdc7a", - "size": 91917 + "sha256": "4bcfd2c17685096ae92442e1bc85ae49fe41175f81e75cf000c554e2d1078b31", + "size": 92556 }, { "url": "https://code.claude.com/docs/en/terminal-config", @@ -4860,15 +4860,15 @@ "url": "https://code.claude.com/docs/en/tools-reference", "status": "success", "path": "en/docs/claude-code/tools-reference.md", - "sha256": "23f40794c6328b20e4be4382a1f8d0b51b4152497a089ac695709a33a38884fa", - "size": 87598 + "sha256": "1daaffed279e7f4217fa50fe33ed267eb358e26a6d889f77db7f1a1a2b8f507d", + "size": 87836 }, { "url": "https://code.claude.com/docs/en/troubleshoot-install", "status": "success", "path": "en/docs/claude-code/troubleshoot-install.md", - "sha256": "0fd8274bb0a2f4ad7b1aa6b23d691c128a21955200a2eb0a1434caf7b4239beb", - "size": 54892 + "sha256": "56af7a5665317524c2450118a5c2fea772547f30778141282f52b2b93095aa04", + "size": 55706 }, { "url": "https://code.claude.com/docs/en/troubleshooting", @@ -4909,8 +4909,8 @@ "url": "https://code.claude.com/docs/en/web-quickstart", "status": "success", "path": "en/docs/claude-code/web-quickstart.md", - "sha256": "cbc41fdfaa1e9a1eefaf65d78ae27b06c6b7e24b0b602568bcce27181926980f", - "size": 19073 + "sha256": "85f020ae8290f104d8c8d729ffa5b9e3acb345eb65c63f8befe92583ad9437f7", + "size": 19902 }, { "url": "https://code.claude.com/docs/en/whats-new/2026-w13", @@ -5028,8 +5028,8 @@ "url": "https://code.claude.com/docs/en/whats-new/2026-w29", "status": "success", "path": "en/docs/claude-code/whats-new/2026-w29.md", - "sha256": "e0563fc80db055d3df06848a14803783f8c06f05815f0374cf8c3d3b657ce93a", - "size": 5468 + "sha256": "275e9c88fadfa5cc0cb39665a4a5d89234c970295e0f4d0bc583e15e2ff9bb29", + "size": 5479 }, { "url": "https://code.claude.com/docs/en/whats-new/index", @@ -5042,15 +5042,15 @@ "url": "https://code.claude.com/docs/en/workflows", "status": "success", "path": "en/docs/claude-code/workflows.md", - "sha256": "06e085b51991299f0a9eff9f55cb60bc786d9c6fd464e77915cfd58c8f1b03b7", - "size": 30223 + "sha256": "ed496d57683eb78fed89b1c4a56d8a65f6d5a8f1e104c35d11c4758857f9dd3e", + "size": 30946 }, { "url": "https://code.claude.com/docs/en/worktrees", "status": "success", "path": "en/docs/claude-code/worktrees.md", - "sha256": "4e50a52477834746b29ba307586fde7769f719fd4ebef18b91df6f8357277dae", - "size": 18332 + "sha256": "e62fe98699431eb5a05dee7a76877c3db63a0a68ab9d03e131dc903d65ce041c", + "size": 18415 }, { "url": "https://code.claude.com/docs/en/zero-data-retention", @@ -6939,22 +6939,22 @@ "url": "https://modelcontextprotocol.io/specification/2026-07-28/basic/authorization", "status": "success", "path": "mcp/specification/2026-07-28/basic/authorization.md", - "sha256": "3da515b6f536b4fafa65c2ff56dd3a99488285e652984e6bd00d3bec012d1efd", - "size": 25881 + "sha256": "1fc340c24cdbacee58c9a568f551b4245b12848534ca7d891cb41281d563d862", + "size": 25886 }, { "url": "https://modelcontextprotocol.io/specification/2026-07-28/basic/authorization/security-considerations", "status": "success", "path": "mcp/specification/2026-07-28/basic/authorization/security-considerations.md", - "sha256": "53c351dc92f8e4598212f56dcf31cd92eb4db4e3a2edc5eee616a97b5c928a67", - "size": 10074 + "sha256": "9d642d93bb5b0210dc6d1bcd9a70f2938f0607d2339009fe0f5caf67229c48f8", + "size": 10089 }, { "url": "https://modelcontextprotocol.io/specification/2026-07-28/basic", "status": "success", "path": "mcp/specification/2026-07-28/basic.md", - "sha256": "94f185aa6e27b1e481f0f88fa5e2a995759af3db77e23dc967858fe8461ee77c", - "size": 25399 + "sha256": "ced8d481053cb045c1d682e616f8edefec84b85d64ae151611e05997d60778f3", + "size": 25414 }, { "url": "https://modelcontextprotocol.io/specification/2026-07-28/basic/patterns/cancellation", @@ -7023,15 +7023,15 @@ "url": "https://modelcontextprotocol.io/specification/2026-07-28/changelog", "status": "success", "path": "mcp/specification/2026-07-28/changelog.md", - "sha256": "e05eb7fcecc34f94c96a27ed8b19f9a90e56dbd2a18cb57c71787bf7366dd50c", - "size": 11887 + "sha256": "203d3c9974e1a0e22308a4f0ae55e6ff7f1ad4150de64411b8c8e03003589aae", + "size": 11892 }, { "url": "https://modelcontextprotocol.io/specification/2026-07-28/client/elicitation", "status": "success", "path": "mcp/specification/2026-07-28/client/elicitation.md", - "sha256": "44086e7052a20b4e72b643c8cecb76b55b168ab14d616ebc3ec984a23f29d811", - "size": 28660 + "sha256": "e0ac8453a0e75d47a746fc1dc19bbeb7bdd288ed0742fd888ed58a66667f06a1", + "size": 28680 }, { "url": "https://modelcontextprotocol.io/specification/2026-07-28/client/roots", @@ -7058,8 +7058,8 @@ "url": "https://modelcontextprotocol.io/specification/2026-07-28", "status": "success", "path": "mcp/specification/2026-07-28.md", - "sha256": "d3b1d410de0a0f9f7d617c0e0c778b444081b5f8f3b4e5f1e32214c2656e7c73", - "size": 5812 + "sha256": "f8df03767e5cbdd4921ae569d1d69e8da9e455e1629fadf4d0613cd658dd632f", + "size": 5817 }, { "url": "https://modelcontextprotocol.io/specification/2026-07-28/schema", @@ -7429,7 +7429,7 @@ "url": "https://support.claude.com/en/articles/8114491-get-started-with-claude", "status": "success", "path": "support/8114491-get-started-with-claude.md", - "sha256": "ee0c5085e8b25c2c2abfb67ecb698fd785c35cd4331989ebca70660bd7e98078", + "sha256": "a5882f5b886dc7732508957e734dd64379d46c6fb07ee6ea4f577ba0f4d3a373", "size": 5300 }, { @@ -7513,8 +7513,8 @@ "url": "https://support.claude.com/en/articles/8230524-how-can-i-delete-or-rename-a-conversation", "status": "success", "path": "support/8230524-how-can-i-delete-or-rename-a-conversation.md", - "sha256": "fcea850551ce6ae767fd217996b93194e393662e3c965b63060c00b892c859e9", - "size": 1301 + "sha256": "2cf5ca7e1f5f59470bdd09e1206ea7ca4934e6ba38f848db3c4d941402e5d754", + "size": 1299 }, { "url": "https://support.claude.com/en/articles/8241126-upload-files-to-claude", @@ -7555,8 +7555,8 @@ "url": "https://support.claude.com/en/articles/8287232-verify-your-phone-number", "status": "success", "path": "support/8287232-verify-your-phone-number.md", - "sha256": "6b5c5e084bfb1891f7fdf3a68816caa945ad5c173be899816059127ee71355b7", - "size": 3975 + "sha256": "b80f61deb1a389cc6eedd71039849e4f9a5fce61388005d104df99c9991d6bf9", + "size": 3977 }, { "url": "https://support.claude.com/en/articles/8325606-what-is-the-pro-plan", @@ -7583,7 +7583,7 @@ "url": "https://support.claude.com/en/articles/8325618-paid-plan-billing-faqs", "status": "success", "path": "support/8325618-paid-plan-billing-faqs.md", - "sha256": "27d998c9a524d64712c826bb0d03d08eebc893501d691da977234822bb8b80e8", + "sha256": "ad9c388f16736e392da455c2c728708985d469acef1e7594bb9d7c8347472fbe", "size": 4555 }, { @@ -7625,7 +7625,7 @@ "url": "https://support.claude.com/en/articles/8606378-how-do-i-use-the-workbench", "status": "success", "path": "support/8606378-how-do-i-use-the-workbench.md", - "sha256": "22fd1e8b85486f0c3f0327ce48ecef4f5a228b0ad0197613a88a7f402fc9d753", + "sha256": "16e9f69059c029814424b718029da8cc2776866a344660123a5c8445d5df311a", "size": 9649 }, { @@ -7653,8 +7653,8 @@ "url": "https://support.claude.com/en/articles/8887527-customizing-your-appearance-settings", "status": "success", "path": "support/8887527-customizing-your-appearance-settings.md", - "sha256": "2b9626faa11d98d435b5604b3d7ebed98342eee2b60755ebd3eaf419fa4852ef", - "size": 1882 + "sha256": "2683cd532b7e095e712c1d5294770b57cb4f38eb2bcea48adc14930e8576ebe2", + "size": 1874 }, { "url": "https://support.claude.com/en/articles/8896518-does-anthropic-crawl-data-from-the-web-and-how-can-site-owners-block-the-crawler", @@ -7709,8 +7709,8 @@ "url": "https://support.claude.com/en/articles/9028421-how-can-i-delete-my-claude-account", "status": "success", "path": "support/9028421-how-can-i-delete-my-claude-account.md", - "sha256": "7dfcfae773941304e60e885861a413c6bd344d5c7c1d0a9d5917fd1d0064813d", - "size": 2015 + "sha256": "713f31de7eca556f96c732085b6e7c755cbb3c9d1ce2598584b3367de0db72c9", + "size": 2017 }, { "url": "https://support.claude.com/en/articles/9035075-law-enforcement-requests", @@ -7828,7 +7828,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": "fac1f28091969d47672b9beb141588c6e90a113744e13285f61be00b2f04603a", + "sha256": "63d898ddc6d9a7d4cc071aac77f81549106bd9eb7345a743c06f69044ec0d925", "size": 8330 }, { @@ -7877,14 +7877,14 @@ "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": "d2c0ab411e19c55cea45f792f83e4be52182dd211804a057ca34b7b6faf4dfeb", - "size": 9267 + "sha256": "2c30cdccbe29a82a80439f2013a5ed378bda3ca177f90718a56f4695092d987f", + "size": 9269 }, { "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": "0e43193c2aa1b87f43e052bf16a5ca471f3375ede7a2f57880952bef148b3f0c", + "sha256": "c698162c58e37fb2350b212e132c95e0a3d7e8259d6151eff1856a2246139d9f", "size": 8560 }, { @@ -7905,15 +7905,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": "67cb560bd5d37c918399219cc2e40fd146fa6507eea43a4fe22c8569fd2032ad", - "size": 5102 + "sha256": "a86be6ac761bb198f1e5f3cf10211f20d99954afd35e61021c6402ce64e6bfce", + "size": 5110 }, { "url": "https://support.claude.com/en/articles/9547008-publish-and-share-artifacts", "status": "success", "path": "support/9547008-publish-and-share-artifacts.md", - "sha256": "5acc2eeca4fcbd702cb373328d00c19379f6dd607c601fb342fb5ff8420a046d", - "size": 7330 + "sha256": "40a5f94277f4963b168bcf0382c0c8e807cf4e54107394ecea3d1b83112314e1", + "size": 7322 }, { "url": "https://support.claude.com/en/articles/9612887-install-claude-for-android", @@ -7989,8 +7989,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": "f9b69136b09a91436b1e73a8c1c6e4884735dfe8edf677b5cd1d05b3f13d30d1", - "size": 2582 + "sha256": "36f8fc69e3112be885dfde221da2f9440e5b37a0c432a962d1390fb39c03f17a", + "size": 2588 }, { "url": "https://support.claude.com/en/articles/9927624-add-or-update-your-team-plan-s-tax-or-vat-id", @@ -8129,15 +8129,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": "37f002d59f9343e43753d5607732cd54e9661ab778ae71e1e12ebab63a493830", - "size": 2482 + "sha256": "1c78edf127efcd68b8b2d0756c6e87fb40e0a75020e4bc543a77da20c70852a2", + "size": 2486 }, { "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": "bc53c48ac4291210023d00a86187be868fb21b78a31e1ebce7df47d36f89e324", - "size": 3165 + "sha256": "8bf8a5565bd66ae031ad6c5ddf0d553f43fea4a7214e1bf7c7189288c15aa213", + "size": 3163 }, { "url": "https://support.claude.com/en/articles/10366389-how-can-i-get-higher-rate-limits-on-the-claude-api", @@ -8185,14 +8185,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": "c0657862ece319824c743c6b512332f60e1bb74e98b2ef6af47952116cac54b6", - "size": 1034 + "sha256": "406fc51e92eff7ca2f0dead03bd175692906ab50fead9cdb1bf8337cdc9c95f8", + "size": 1036 }, { "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": "d5c95846b405849a8ba5c3a77e153057fa249972b71282cd9fd9f66d0d410ad5", + "sha256": "d7a48678916a0adae7a86b28babc08703f53f1732cf62c6c11ccf24de3fefbe4", "size": 1001 }, { @@ -8206,14 +8206,14 @@ "url": "https://support.claude.com/en/articles/10593882-share-and-unshare-chats", "status": "success", "path": "support/10593882-share-and-unshare-chats.md", - "sha256": "dd689e3a176960d54ed6bebc5896a631a4cd336adee1ddfee88dc680fb378627", - "size": 4014 + "sha256": "c63995362c5feaf23b6a33db4001192d9ef57b30e4b4508b9fd75779ef06b361", + "size": 4012 }, { "url": "https://support.claude.com/en/articles/10684626-enable-and-use-web-search", "status": "success", "path": "support/10684626-enable-and-use-web-search.md", - "sha256": "fd5785fece6586e3abe995a9d08cf215f0657bbfdb2c747e2a6587bafc646ce3", + "sha256": "a5a4ff4d27f471d88a5807d49c39fba1faf1102c4d0b9a8fa720e7d01688fcd3", "size": 6368 }, { @@ -8227,7 +8227,7 @@ "url": "https://support.claude.com/en/articles/10722177-sharing-prompts-in-the-claude-console", "status": "success", "path": "support/10722177-sharing-prompts-in-the-claude-console.md", - "sha256": "a6e21d6d9fe7e0b0d3eb6f45e184aa1be7c2a179fc2eaa381400070a3fd32469", + "sha256": "9f290fe195466b6b29a63345ba038b5e02afcbed89b7f93d1bb38accf81b2a61", "size": 4525 }, { @@ -8241,8 +8241,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": "f3c21a12d6bf4f6c52389b3523da7b5847a894c44cb1e285fe3fd5e941cd5d1e", - "size": 8269 + "sha256": "dc1192b35bec675a551f0199101490307ba4eb83a8aa39a1870e169d78640ec1", + "size": 8267 }, { "url": "https://support.claude.com/en/articles/11049741-what-is-the-max-plan", @@ -8283,8 +8283,8 @@ "url": "https://support.claude.com/en/articles/11101966-use-voice-mode", "status": "success", "path": "support/11101966-use-voice-mode.md", - "sha256": "bcb6c3c7a8df0332c539a2c805baca70accc85575fe49c4ca5ae811439397c7e", - "size": 10558 + "sha256": "8c739fe1a7f6e59fb9dd4af686e644741ede5b07b4bd87ce53c3405afd2d777d", + "size": 10554 }, { "url": "https://support.claude.com/en/articles/11107691-why-is-a-coupon-or-promotion-not-available-for-my-account", @@ -8388,8 +8388,8 @@ "url": "https://support.claude.com/en/articles/11506255-get-started-with-claude-in-slack", "status": "success", "path": "support/11506255-get-started-with-claude-in-slack.md", - "sha256": "6c74c55d96d936d440b6883905aab0a87f78b83d2b4186c9623627b987dabb01", - "size": 10406 + "sha256": "1827b6871a4d615866c713f726984938f8f24068612131429e91d7adb7d533b2", + "size": 10414 }, { "url": "https://support.claude.com/en/articles/11526368-how-am-i-billed-for-my-enterprise-plan", @@ -8430,8 +8430,8 @@ "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": "fe5ad60f8e10a24e7d119c406755d8f3e8552069769fe09c55012ae13ca16335", - "size": 2748 + "sha256": "267e951d7e0ff5d20dcda9f963f98e1d28f559ef7a6f118b626929ef6a0b5fd5", + "size": 2746 }, { "url": "https://support.claude.com/en/articles/11732894-who-owns-and-manages-the-data-of-my-claude-for-education-account", @@ -8444,15 +8444,15 @@ "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": "b543a22d1f58e375b9b65f55396712d92fe48f636a84a60343fd515144f09eff", - "size": 21508 + "sha256": "7df594f5ce5a1da325014e8f1a0cd6ea26ebc80e49c2c8273285a4e517bcb4ff", + "size": 21512 }, { "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": "3dbea8dd4f58b92b547181ac65a7e040bafaa1602426f64f724432adaadbafdf", - "size": 816 + "sha256": "e7099b0dad721cd6c68655adcb83b6ee50c97dc8d894d0acf62a8851b4bf2585", + "size": 814 }, { "url": "https://support.claude.com/en/articles/11825384-how-to-update-claude-for-ios", @@ -8486,7 +8486,7 @@ "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": "f067d4e30f42d2f8f6f1b13d19156e35fc3e49f7f3e3d9c39e9f477a03c02724", + "sha256": "9e23472c274b3f9ee7c719a87a499cf78f2a60bb2892f5a070184cddee3c7310", "size": 13879 }, { @@ -8521,15 +8521,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": "91bebb09e414700a409ad910f0f51d3bf8437cefe0cb35fe89b9c08c524f554f", - "size": 9632 + "sha256": "50c48be6bb6ad4e6ec20dc5a1ad5345aae99bc120407fbbe9117cd88e1431204", + "size": 9644 }, { "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": "03a1e40321f967a50229f07e25d1b4596e01f28c1255881cd6e5d0965f3d351b", - "size": 12676 + "sha256": "aa7b6aa3eef0fd9a8b8356026a1200c5d0ca095a3c2bac90d3a278fb83f3bafb", + "size": 12670 }, { "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", @@ -8542,8 +8542,8 @@ "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": "4246439e5c1ab95530c8feb2e64e2c5ffa0f5809f28622de7aab4a0e14ec678b", - "size": 1393 + "sha256": "0dc54335a6a2ccbc4de4f4c2bb87e68e59d3fef9b52c546fd41d39507c5baa04", + "size": 1391 }, { "url": "https://support.claude.com/en/articles/12109679-creating-a-new-account-after-deletion", @@ -8556,8 +8556,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": "6de865e545592066432f9ead616e4e18d2614fd1da24e5711d91f99619fa418d", - "size": 18407 + "sha256": "23a5b1a6c8ddf6743541b2cf8d46f012bd419b7132cd5cab6f7c455849f21c85", + "size": 18409 }, { "url": "https://support.claude.com/en/articles/12119250-model-safety-bug-bounty-program", @@ -8584,22 +8584,22 @@ "url": "https://support.claude.com/en/articles/12157520-claude-code-usage-analytics", "status": "success", "path": "support/12157520-claude-code-usage-analytics.md", - "sha256": "2e704726fe4d0c312e04e2e50f53a737e5b9291e881db1b8544c893781cd2eaf", - "size": 6429 + "sha256": "4107d6d364bf9d4e3419fd8cd98c015fc8a684e1668b749774ec711d4f6ef6b6", + "size": 6427 }, { "url": "https://support.claude.com/en/articles/12260368-use-incognito-chats", "status": "success", "path": "support/12260368-use-incognito-chats.md", - "sha256": "509eebec4b37afe6c1553b81d95398b622eddaa8e0ef367ffdd2afed88acdd36", - "size": 3598 + "sha256": "9d275b1df77e96eb1ba2ffa1847f70acfd917abe357fdb720d167ceec40bf95e", + "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": "432ed3b6cfa13e186be55e34c4debea9e813591f3e49ef6641ba3be8009c38cf", - "size": 1907 + "sha256": "8e5bb2a35b8a5d6fc74bef7b60e1ad0d315403a17ef2b6014056a62a70721900", + "size": 1905 }, { "url": "https://support.claude.com/en/articles/12304248-manage-api-key-environment-variables-in-claude-code", @@ -8640,22 +8640,22 @@ "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": "79de665c7a4412fe3451dd655db374d07f5a57589d70d1559f76363aeeaabd64", - "size": 6073 + "sha256": "04aca023a59774670dec3ce81f4f10bc76144ba647c8ff1a4c4e7fe55bf618ca", + "size": 6071 }, { "url": "https://support.claude.com/en/articles/12461605-use-claude-in-slack", "status": "success", "path": "support/12461605-use-claude-in-slack.md", - "sha256": "95dbd8320d3721749b7fb4e5aed99acb28cd039f954ea1c7816b7fc1819e1d7a", - "size": 9969 + "sha256": "3def9b51ed29295a78b2eb78d40d42d57f356c5d1c36952fa62b63ab5f315865", + "size": 9975 }, { "url": "https://support.claude.com/en/articles/12466728-troubleshoot-claude-error-messages", "status": "success", "path": "support/12466728-troubleshoot-claude-error-messages.md", - "sha256": "513b41506e2002f432647d64dd586d8b08b893d60dab83688652e9d2660d02f4", - "size": 4236 + "sha256": "1be50e6730275d6d3c53539fe9ce6c7f152d631608795611d417ea4e61f9494b", + "size": 4234 }, { "url": "https://support.claude.com/en/articles/12489464-use-enterprise-search", @@ -8675,8 +8675,8 @@ "url": "https://support.claude.com/en/articles/12512180-use-skills-in-claude", "status": "success", "path": "support/12512180-use-skills-in-claude.md", - "sha256": "2a8385edbee96fa9cd089d44a14fea922c1f3b4e62d0d89c8c1cc26238b4b2c7", - "size": 13266 + "sha256": "a494eb6feea476ed5aa230d65f43d9027ce89076faa5f27caf11e0789ed539e9", + "size": 13272 }, { "url": "https://support.claude.com/en/articles/12512198-how-to-create-custom-skills", @@ -8696,7 +8696,7 @@ "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": "9da7e687e68072b91442ad532e25975d63070c2cfe1884926c818ac6bd209211", + "sha256": "fc8a4fe1c61d1fc086115e8e5965131fe987f8ae2ee6c9ab434b631dbbb7420f", "size": 5712 }, { @@ -8710,8 +8710,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": "2ef316ad164cc5728567fd1fb5871b3241fc3837df0c23e2453c1e091a655307", - "size": 10958 + "sha256": "3c77f7704211fea24c930a371454d9d56ba0707cc3b6ba00525f13c79623a932", + "size": 10966 }, { "url": "https://support.claude.com/en/articles/12622667-enterprise-configuration-for-claude-desktop", @@ -8731,15 +8731,15 @@ "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": "047f917749098108f6a21dd812a3f7afe9b7823278ee486985bc869a6c6e96b9", - "size": 5972 + "sha256": "84d2fb64dc333dec9f6dbe5b69293ea4b55b1421f1a913475a07fcd12079af3e", + "size": 5974 }, { "url": "https://support.claude.com/en/articles/12650343-use-claude-for-excel", "status": "success", "path": "support/12650343-use-claude-for-excel.md", - "sha256": "e37c4efe6f8a4a87652cf005b0af328c56c95b164da0c35eb9e66e331b7b1d75", - "size": 20223 + "sha256": "1fc588412b41291a05d44ec2b65d75de40fdb42fb0b43bee996c8a2e2ac27790", + "size": 20229 }, { "url": "https://support.claude.com/en/articles/12684923-microsoft-365-connector-security-guide", @@ -8773,8 +8773,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": "a3039e1eca9c55efe81c281d6b41455ae54fd1f7ea3713ba515fe759f021a97f", - "size": 13079 + "sha256": "31e1f4cb16b6af956294464cdf31a7e0198284ace3bdc62503e9bd4a50250141", + "size": 13083 }, { "url": "https://support.claude.com/en/articles/12893767-getting-started-with-claude-for-nonprofits", @@ -8801,8 +8801,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": "af5460c436c37732e8391b1142e82c2a07e4d7289e41de41b50045971c5bfddc", - "size": 8090 + "sha256": "8c128f7aeffdd7309e4a0d42be4423cf96686df40b27f4f94451f4771ca6b3e2", + "size": 8088 }, { "url": "https://support.claude.com/en/articles/12922490-remote-mcp-server-submission-guide", @@ -8885,8 +8885,8 @@ "url": "https://support.claude.com/en/articles/12997503-team-plan-billing-faqs", "status": "success", "path": "support/12997503-team-plan-billing-faqs.md", - "sha256": "94445934b6b70af7d10152cc4d563dbf6574c33f13a65df1c017d98522b8945c", - "size": 3930 + "sha256": "cbfa196dcdb9c9fdb7ce22579caee8780d2a1956bf6cb99b84c9d03000b3baa6", + "size": 3924 }, { "url": "https://support.claude.com/en/articles/13015708-access-the-compliance-api", @@ -8934,15 +8934,15 @@ "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": "a6ff5cd1db707e44b0f0d926ef756fee23955bc22dad024b461f046beb8e1984", - "size": 12317 + "sha256": "8a1fd55f77cb0f0cf50fa7aa24743c2995264099ab4cceada3e2ce35133e6ae6", + "size": 12315 }, { "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": "8676aa1147ddb5092659ef777cf4ebe8927fc18293b5b188abde88083d40b6f4", - "size": 16612 + "sha256": "a81d6289340aad9150596736d4967e0f557b425d22562dd5112a1e4a0a166b61", + "size": 16604 }, { "url": "https://support.claude.com/en/articles/13133750-manage-members-on-team-and-enterprise-plans", @@ -8969,8 +8969,8 @@ "url": "https://support.claude.com/en/articles/13163631-configuring-session-security-settings", "status": "success", "path": "support/13163631-configuring-session-security-settings.md", - "sha256": "e88b7af22f3808daec4b768a72202ef68e4d7378221f32f4d38a142ae1567e0c", - "size": 3714 + "sha256": "ec7a7feaff52a37076b60cd868a381ac97a26eb32b07fd6c210ab513a5fbb29b", + "size": 3704 }, { "url": "https://support.claude.com/en/articles/13163666-holiday-2025-usage-promotion", @@ -8990,8 +8990,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": "983e9ad9e02d6d529ff6869ddfae82a09f33d9d01d9428c603455a6e9d47646f", - "size": 7036 + "sha256": "c7c0a0b047cad8f142644f7d977753262cef443a7dc94b8a2cb57a90a1569166", + "size": 7038 }, { "url": "https://support.claude.com/en/articles/13198485-enforce-network-level-access-control-with-tenant-restrictions", @@ -9018,21 +9018,21 @@ "url": "https://support.claude.com/en/articles/13325567-account-management-faqs", "status": "success", "path": "support/13325567-account-management-faqs.md", - "sha256": "9e838cb2c803f105ab9e70d77ce5253e745bfb62eb7f19222bdccde086c18064", + "sha256": "b5c86ac8fd0ab6579ae59d0349d3788b2c15a7eec5545c382857e0a2c58f9d92", "size": 2637 }, { "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": "2f60751590686470571d9d8f4c0fb18a10365dbb02bfe8fe49f577d1767f3f14", + "sha256": "e4052d3da514cd1d23e10bb09881bd0c892b59ce576fafde0b8842457c7afea1", "size": 20041 }, { "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": "c900212a7a6c3c191499e6f89472a33717c3af9b73f821685e28c250be59fd62", + "sha256": "71ef1202dfb5cfdeb94a420e30cb5e128c362fb32086e50dd7c7285018809fce", "size": 605 }, { @@ -9053,8 +9053,8 @@ "url": "https://support.claude.com/en/articles/13371040-logging-in-to-your-console-account", "status": "success", "path": "support/13371040-logging-in-to-your-console-account.md", - "sha256": "f0f8df6004928a32fbe0d64f07ee7a72cc2b25ca2356748531a6022f7100bef2", - "size": 4596 + "sha256": "ecb1b785398a6d1e1884128d73974734294b98b10124dd07b4578f91c52432b3", + "size": 4606 }, { "url": "https://support.claude.com/en/articles/13393991-purchase-and-manage-seats-on-enterprise-plans", @@ -9116,7 +9116,7 @@ "url": "https://support.claude.com/en/articles/13641943-visual-and-interactive-content", "status": "success", "path": "support/13641943-visual-and-interactive-content.md", - "sha256": "7ac0dea61e09997302bafe3148184e3a987b11e3ea5711d69d9fdf7b1ad2a421", + "sha256": "37ed33c5a408a5c67a621f94e5f33124aa2146c7a46a3e5d82b2d083efa6d377", "size": 6509 }, { @@ -9144,8 +9144,8 @@ "url": "https://support.claude.com/en/articles/13756069-public-sector-faqs", "status": "success", "path": "support/13756069-public-sector-faqs.md", - "sha256": "30ed7046b8720160c5005347ac78a6c09049c922b44cb0018947f62a2aa9af45", - "size": 8378 + "sha256": "a1723aca9db4b35e496a88af946b531dd70516d5504644ef7e34cd5a0fc722f6", + "size": 8376 }, { "url": "https://support.claude.com/en/articles/13776697-join-an-organization-via-invite-link", @@ -9172,28 +9172,28 @@ "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": "3e97797ac61f73a03469e6b2ca66641ee2121142c655d2927325e0e1dd0dcc36", - "size": 19761 + "sha256": "0df5b3b57e8a5d479125fa8e6537dc3df61bfa59bc897b45e002415de59b6116", + "size": 19759 }, { "url": "https://support.claude.com/en/articles/13837440-use-plugins-in-claude", "status": "success", "path": "support/13837440-use-plugins-in-claude.md", - "sha256": "064159379c4ae8abf898c978a36fc89d30a5016ed45830e074be6fb1f6687e88", - "size": 6356 + "sha256": "9a7ec9ad99308e04d1230d5669e29fc9b4dea4191edf16839fd8224adbe39e58", + "size": 6362 }, { "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": "0ff0fbe1bf4930ba18fd2d75d1f4c2bcc4effeda37d2409d683c05ea7429fbf5", + "sha256": "82b10431314843f00da776833c65c91138b2d30ee608fb8912eceebaf8acfa15", "size": 4700 }, { "url": "https://support.claude.com/en/articles/13892150-work-across-microsoft-365-apps", "status": "success", "path": "support/13892150-work-across-microsoft-365-apps.md", - "sha256": "5a5187694325fb61e11915dfd55868534b4ee2aed9cabb5735467cfb0ae86059", + "sha256": "8b7699dd4380b4b997790358852175aca760658ca91b4a39aa0b637f55e233a6", "size": 6342 }, { @@ -9277,8 +9277,8 @@ "url": "https://support.claude.com/en/articles/13930458-set-up-role-based-permissions-on-enterprise-plans", "status": "success", "path": "support/13930458-set-up-role-based-permissions-on-enterprise-plans.md", - "sha256": "355ac671718f1a46413315fec1e37c85e9463c3319672a5cecab5ccfb3d48ea9", - "size": 40982 + "sha256": "a9fcc8c45facb915423e826093428655c48100bfbe91eef054c10184e5784f30", + "size": 40976 }, { "url": "https://support.claude.com/en/articles/13945233-use-claude-for-microsoft-365-with-third-party-platforms", @@ -9291,7 +9291,7 @@ "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": "1c7b92964dca1d76447d628e4554c8b5b22f077873da89b423468fd21ec37c62", + "sha256": "f240f917a899582557f0bbb1120a872736a43583dd33ebe7ced73c93fe49b6d6", "size": 8280 }, { @@ -9312,15 +9312,15 @@ "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": "d1d2c4482ec37f362bae7e26b3a96aed29ce3849b006ba0d4848ff4a6789fec2", - "size": 5698 + "sha256": "55357f889228c3e7a7433cbc8717891359f29c6ddd68fdf51406bf8a5cd8cf51", + "size": 5694 }, { "url": "https://support.claude.com/en/articles/14128542-let-claude-use-your-computer-in-cowork", "status": "success", "path": "support/14128542-let-claude-use-your-computer-in-cowork.md", - "sha256": "743f662be9451bb9bcaad0773fa85e43de57099114cb39c74ff918ad29b43a3a", - "size": 8288 + "sha256": "8cce958dc7750d08ee83fd6078a06483f7dad39deaa74197de1d34f4a5a899e8", + "size": 8286 }, { "url": "https://support.claude.com/en/articles/14128775-claude-code-on-console-to-enterprise-migration", @@ -9396,7 +9396,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": "6d4ce92009035336e5f5dc0d70f616ab7a659d0bf84c37018be13638b61fad0c", + "sha256": "d3ed6e506acfd99f7883e9bb96727bb921311303c0cb225ccf7709b5f95ccbc4", "size": 7439 }, { @@ -9417,15 +9417,15 @@ "url": "https://support.claude.com/en/articles/14503613-sso-login", "status": "success", "path": "support/14503613-sso-login.md", - "sha256": "34b3bab9c1e913bb04fa876c90c0475f0b521311d7f14bb6d38b4c85a60dd581", + "sha256": "5c42a12cd2d5bdf4cefe0ac84e8ff0ce351a67c59749e98ef5f61f28637560f8", "size": 6692 }, { "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": "dc99795a8532380334b96f2bf8bb6ccb1bd8dfbf88893b0155bfdc2e3ef93277", - "size": 6408 + "sha256": "b79c48f70001640e0cc9cfb373c56a24721eec2c005d38ce47bb6aa8d2edd685", + "size": 6416 }, { "url": "https://support.claude.com/en/articles/14503675-organization-instructions-in-claude-for-government", @@ -9452,8 +9452,8 @@ "url": "https://support.claude.com/en/articles/14503775-mcp-web-search", "status": "success", "path": "support/14503775-mcp-web-search.md", - "sha256": "b7be887602ef738984f78f504d05e97377d4d801f028488b7e66718dfe559e61", - "size": 4679 + "sha256": "bc738c174a59c6b5013f453bf4257c18aaa005d6368e4e5518dac8b27b54e78a", + "size": 4675 }, { "url": "https://support.claude.com/en/articles/14503794-model-availability-in-claude-for-government", @@ -9550,22 +9550,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": "c54d71f5efd2a31639b7ed89dba04de0c9da3616eabbcd54ad49ba9531f940e5", + "sha256": "6a89e9240c09e0d7ddc169901be9baa05a1d350b807e386e8fb5c28378950db6", "size": 4397 }, { "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": "bffe8f0633260ab60842b36c4765d7912895e0a91ff6f0610e78caefa59fa980", - "size": 12739 + "sha256": "9d4887338be9c2bec627d06d497d86ff4a65c8e6155aa55d930672ba9d6e7439", + "size": 12731 }, { "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": "c2dc65376990f2e318e9bf278c4b7ebc15e629c85db8a4a393d7b2b49f28c4d3", - "size": 11132 + "sha256": "9d697dc6cc105821bd6c42ad61b8b4953d96c95c976ad6fcea791f13579a9f39", + "size": 11130 }, { "url": "https://support.claude.com/en/articles/14604842-real-time-cyber-safeguards-on-claude-opus-and-sonnet", @@ -9697,8 +9697,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": "19e413907b7bfa008d301b8806ae321b09a70063e3678d54016435b3be196b5a", - "size": 5731 + "sha256": "0f55fc8c793a6c55102dc5489f04a6a6d16479cec9f3cae3ead586302b537641", + "size": 5727 }, { "url": "https://support.claude.com/en/articles/15330651-claude-enterprise-admin-api-reference-guide", @@ -9809,8 +9809,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": "a975a3433089355cba3af579596f46bd2836599955ef58933de9cf95264b665e", - "size": 8494 + "sha256": "aef3955e9f8b66b8eaf738a7807057408a758c049517d9fb0f80ba0e516305ed", + "size": 8504 }, { "url": "https://support.claude.com/en/articles/15707726-using-claude-for-legal-work-privilege-confidentiality-and-how-to-think-about-configuration", @@ -9837,8 +9837,8 @@ "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": "9b5bc163db747348ca600b5f859f48aa50b226eb0c6cf478b1e88a7b8bc9fe7c", - "size": 5058 + "sha256": "b87a514354a66397c3b42b024082e308848a1c16dc335d69fef2c5f523cfe476", + "size": 5060 }, { "url": "https://support.claude.com/en/articles/16049681-why-claude-switched-models-in-your-conversation-with-opus-5", @@ -11888,7 +11888,7 @@ "url": "https://raw.githubusercontent.com/anthropics/claude-plugins-official/main/.claude-plugin/marketplace.json", "status": "success", "path": "github/claude-plugins-official/.claude-plugin/marketplace.json", - "sha256": "9dc7822b00da81d296ca563f99b3b8bb290a68d4437c01d7799262710ba78a97", + "sha256": "afeb58eeb8512e2217964b67ec8ad0f211630a025cda21b58590b7b4c4c4e449", "size": 161310 }, { @@ -15255,8 +15255,8 @@ "url": "https://raw.githubusercontent.com/anthropics/anthropic-sdk-python/main/CHANGELOG.md", "status": "success", "path": "github/anthropic-sdk-python/CHANGELOG.md", - "sha256": "0c02bce5a8155933a8ad914bd052108fdcc206b3601b6612f3b78c423d7ed47e", - "size": 215056 + "sha256": "1e8b6095b4aab99a6b610ec2c4928da2c037959a36f28fccfb7b13cbc0a7f0d7", + "size": 215443 }, { "url": "https://raw.githubusercontent.com/anthropics/anthropic-sdk-python/main/CONTRIBUTING.md", diff --git a/content/en/docs/claude-code/advisor.md b/content/en/docs/claude-code/advisor.md index 6ce31c50d..0783118c7 100644 --- a/content/en/docs/claude-code/advisor.md +++ b/content/en/docs/claude-code/advisor.md @@ -85,7 +85,7 @@ The advisor must be at least as capable as the main model. Fable 5 satisfies the Fable 5 requires Claude Code v2.1.170 or later and Fable 5 access, whether it acts as the main model or the advisor. -Set the advisor as `opus` or `sonnet`, or as `fable` once the rollout returns it as an option. These aliases resolve to the latest version of each model. You can also pass a full model ID such as `claude-opus-5`. +Set the advisor as `opus` or `sonnet`, or as `fable` once the rollout returns it as an option. These aliases resolve to Claude Code's built-in default version for each model family, which advances with new Claude Code releases. You can also pass a full model ID such as `claude-opus-5`. Subagents inherit the configured advisor and apply the same pairing check against their own model. 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 40e08a6ff..41f6c15d6 100644 --- a/content/en/docs/claude-code/agent-sdk/agent-loop.md +++ b/content/en/docs/claude-code/agent-sdk/agent-loop.md @@ -201,7 +201,7 @@ The `effort` option controls how much reasoning Claude applies. Lower effort lev If you don't set `effort`, both SDKs leave the parameter unset and defer to the model's default behavior. - `effort` trades latency and token cost for reasoning depth within each response. [Extended thinking](https://platform.claude.com/docs/en/build-with-claude/extended-thinking) is a separate feature that produces visible chain-of-thought blocks in the output. They are independent: you can set `effort: "low"` with extended thinking enabled, or `effort: "max"` without it. + `effort` trades latency and token cost for reasoning depth within each response. [Extended thinking](https://platform.claude.com/docs/en/build-with-claude/extended-thinking) is a separate feature that produces `thinking` blocks in the output, and the `display` field on `ThinkingConfig` for [Python](/docs/en/agent-sdk/python#thinkingconfig) or [TypeScript](/docs/en/agent-sdk/typescript#thinkingconfig) controls whether you receive their text. They are independent: you can set `effort: "low"` with extended thinking enabled, or `effort: "max"` without it. Use lower effort for agents doing simple, well-scoped tasks (like listing files or running a single grep) to reduce cost and latency. Set `effort` in the top-level `query()` options for the whole session, or per subagent with the `effort` field on [`AgentDefinition`](/docs/en/agent-sdk/subagents#agentdefinition-configuration) to override the session level. @@ -233,13 +233,13 @@ The context window is the total amount of information available to Claude during Here's how each component affects context in the SDK: -| Source | When it loads | Impact | -| :----------------------- | :------------------------------------------------------------------------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -| **System prompt** | Every request | Small fixed cost, always present | -| **CLAUDE.md files** | Session start, via [`settingSources`](/docs/en/agent-sdk/claude-code-features) | Full content in every request (but prompt-cached, so only the first request pays full cost) | -| **Tool definitions** | Every request; MCP schemas deferred by default | Built-in tool schemas load every request. [Tool search](/docs/en/agent-sdk/mcp#mcp-tool-search) defers MCP tool schemas by default, falling back to upfront loading on Google Cloud's Agent Platform or a non-first-party `ANTHROPIC_BASE_URL`. See [Configure tool search](/docs/en/agent-sdk/tool-search#configure-tool-search) for the full matrix | -| **Conversation history** | Accumulates over turns | Grows with each turn: prompts, responses, tool inputs, tool outputs | -| **Skill descriptions** | Session start, via setting sources | Short summaries; full content loads only when invoked | +| Source | When it loads | Impact | +| :----------------------- | :------------------------------------------------------------------------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| **System prompt** | Every request | Small fixed cost, always present | +| **CLAUDE.md files** | Session start, via [`settingSources`](/docs/en/agent-sdk/claude-code-features) | Full content in every request (but prompt-cached, so only the first request pays full cost) | +| **Tool definitions** | Every request; MCP schemas deferred by default | Built-in tool schemas load every request. [Tool search](/docs/en/agent-sdk/mcp#mcp-tool-search) defers MCP tool schemas by default, falling back to upfront loading on Google Cloud's Agent Platform, a non-first-party `ANTHROPIC_BASE_URL`, or a Microsoft Foundry deployment hosted on Azure. See [Configure tool search](/docs/en/agent-sdk/tool-search#configure-tool-search) for the full matrix | +| **Conversation history** | Accumulates over turns | Grows with each turn: prompts, responses, tool inputs, tool outputs | +| **Skill descriptions** | Session start, via setting sources | Short summaries; full content loads only when invoked | Large tool outputs consume significant context. Reading a big file or running a command with verbose output can use thousands of tokens in a single turn. Context accumulates across turns, so longer sessions with many tool calls build up significantly more context than short ones. @@ -275,7 +275,7 @@ A few strategies for long-running agents: * **Use subagents for subtasks.** Each subagent starts with a fresh conversation (no prior message history, though it does load its own system prompt and project-level context like CLAUDE.md). It does not see the parent's turns, and only its final response returns to the parent as a tool result. The main agent's context grows by that summary, not by the full subtask transcript. See [What subagents inherit](/docs/en/agent-sdk/subagents#what-subagents-inherit) for details. * **Be selective with tools.** Every tool definition takes context space. Use the `tools` field on [`AgentDefinition`](/docs/en/agent-sdk/subagents#agentdefinition-configuration) to scope subagents to the minimum set they need. -* **Watch MCP server costs.** [MCP tool search](/docs/en/agent-sdk/mcp#mcp-tool-search) defers MCP tool schemas by default and loads them on demand. When tool search is off, on Google Cloud's Agent Platform, or behind a non-first-party `ANTHROPIC_BASE_URL`, each MCP server adds all its tool schemas to every request, so a few servers with many tools can consume significant context before the agent does any work. +* **Watch MCP server costs.** [MCP tool search](/docs/en/agent-sdk/mcp#mcp-tool-search) defers MCP tool schemas by default and loads them on demand. When tool search is off or has fallen back to upfront loading, each MCP server adds all its tool schemas to every request, so a few servers with many tools can consume significant context before the agent does any work. The fallback applies on Google Cloud's Agent Platform, behind a non-first-party `ANTHROPIC_BASE_URL`, and on a Microsoft Foundry deployment hosted on Azure. * **Use lower effort for routine tasks.** Set [effort](#effort-level) to `"low"` for agents that only need to read files or list directories. This reduces token usage and cost. For a detailed breakdown of per-feature context costs, see [Understand context costs](/docs/en/features-overview#understand-context-costs). @@ -434,6 +434,8 @@ Because a single-shot `query()` call raises after yielding an error result, the ``` +When the agent finishes successfully, the example prints a `Done:` line with the agent's summary of the fix, then a line like `Cost: $0.0312`. + ## Next steps Now that you understand the loop, here's where to go depending on what you're building: diff --git a/content/en/docs/claude-code/agent-sdk/file-checkpointing.md b/content/en/docs/claude-code/agent-sdk/file-checkpointing.md index a38c614b5..0c05b24be 100644 --- a/content/en/docs/claude-code/agent-sdk/file-checkpointing.md +++ b/content/en/docs/claude-code/agent-sdk/file-checkpointing.md @@ -15,7 +15,7 @@ With checkpointing, you can: * **Recover from errors** when the agent makes incorrect modifications - Only changes made through the Write, Edit, and NotebookEdit tools are tracked. Changes made through Bash commands (like `echo > file.txt` or `sed -i`) are not captured by the checkpoint system. + Only changes made through the Write, Edit, and NotebookEdit tools are tracked. Changes made through Bash commands (like `echo > file.txt` or `sed -i`) are not captured by the checkpoint system, and neither are edits a [subagent](/docs/en/agent-sdk/subagents) applies, except a [skill with `context: fork`](/docs/en/skills#run-skills-in-a-subagent) that runs in the foreground. ## How checkpointing works @@ -40,7 +40,7 @@ The checkpoint system tracks: * Files modified during the session * The original content of modified files -When you rewind to a checkpoint, created files are deleted and modified files are restored to their content at that point. +When you rewind to a checkpoint, Claude Code deletes the files it created and restores the files it modified to their content at that point. {/* min-version: 2.1.216 */}Claude Code skips a tracked path that is a symlink, hard link, or other non-regular file. It also skips a tracked file whose parent directory no longer resolves to its checkpoint-time location, or whose backup it can't read safely. [`RewindFilesResult`](/docs/en/agent-sdk/typescript#rewindfilesresult) counts every skipped path in its `skippedLinks` field. Skipping requires Claude Code v2.1.216 or later; before v2.1.216, a rewind wrote and deleted through links at tracked paths. ## Implement checkpointing @@ -191,7 +191,7 @@ The following example shows the complete flow: enable checkpointing, capture the With the `replay-user-messages` option set (shown above), each user message in the response stream has a UUID that serves as a checkpoint. - For most use cases, capture the first user message UUID (`message.uuid`); rewinding to it restores all files to their original state. To store multiple checkpoints and rewind to intermediate states, see [Multiple restore points](#multiple-restore-points). + For most use cases, capture the first user message UUID (`message.uuid`); rewinding to it restores the tracked files to their original state. To store multiple checkpoints and rewind to intermediate states, see [Multiple restore points](#multiple-restore-points). Capturing the session ID (`message.session_id`) is optional; you only need it if you want to rewind later, after the stream completes. If you're calling `rewindFiles()` immediately while still processing messages (as the example in [Checkpoint before risky operations](#checkpoint-before-risky-operations) does), you can skip capturing the session ID. @@ -724,12 +724,13 @@ Before you begin, make sure you have the [Claude Agent SDK installed](/docs/en/a File checkpointing has the following limitations: -| Limitation | Description | -| ---------------------------------- | -------------------------------------------------------------------- | -| Write/Edit/NotebookEdit tools only | Changes made through Bash commands are not tracked | -| Same session | Checkpoints are tied to the session that created them | -| File content only | Creating, moving, or deleting directories is not undone by rewinding | -| Local files | Remote or network files are not tracked | +| Limitation | Description | +| ---------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| Write/Edit/NotebookEdit tools only | Changes made through Bash commands are not tracked | +| Subagent edits | Edits a [subagent](/docs/en/agent-sdk/subagents) applies aren't tracked or restored, except a skill with `context: fork` running in the foreground; use git to revert untracked edits | +| Same session | Checkpoints are tied to the session that created them | +| File content only | Creating, moving, or deleting directories is not undone by rewinding | +| Local files | Remote or network files are not tracked | ## Troubleshooting diff --git a/content/en/docs/claude-code/agent-sdk/hooks.md b/content/en/docs/claude-code/agent-sdk/hooks.md index 1ad176e86..56ebc7255 100644 --- a/content/en/docs/claude-code/agent-sdk/hooks.md +++ b/content/en/docs/claude-code/agent-sdk/hooks.md @@ -161,7 +161,7 @@ The SDK provides hooks for different stages of agent execution. Some hooks are a | `SubagentStop` | Yes | Yes | Subagent completion | Aggregate results from parallel tasks | | `PreCompact` | Yes | Yes | Conversation compaction request | Archive full transcript before summarizing | | `PostCompact` | No | Yes | Conversation compaction completes | Log the generated summary | -| `PermissionRequest` | Yes | Yes | Permission dialog would be displayed | Custom permission handling | +| `PermissionRequest` | Yes | Yes | A tool call needs a permission decision | Custom permission handling | | `PermissionDenied` | No | Yes | The auto mode classifier denies a tool call | Log classifier denials or tell the model it may retry | | `SessionStart` | No | Yes | Session initialization | Initialize logging and telemetry | | `SessionEnd` | No | Yes | Session termination | Clean up temporary resources | @@ -178,6 +178,7 @@ The SDK provides hooks for different stages of agent execution. Some hooks are a | `WorktreeRemove` | No | Yes | Git worktree removed | Clean up workspace resources | | `CwdChanged` | No | Yes | The working directory changes during a session | Reload environment variables per directory | | `FileChanged` | No | Yes | A watched file is modified, created, or deleted | Reload configuration when project files change | +| `DirectoryAdded` | No | Yes | A working directory is added during a session | Install dependencies for a repository added mid-session | ## Configure hooks @@ -228,11 +229,11 @@ Hyphens in the exact-match set require a Claude Code runtime of v2.1.195 or late `StopFailure` and `FileChanged` use a narrower exact-match set of letters, digits, `_`, and `|` only. A hyphen, space, or comma in a matcher for those two events keeps it on the regular-expression path, and only `|` separates alternatives, so write `rate_limit|overloaded`, not `rate_limit, overloaded`. `FileChanged` additionally uses its matcher to build the watch list of literal filenames; see [FileChanged in the hooks reference](/docs/en/hooks#filechanged). -| Option | Type | Default | Description | -| --------- | ---------------- | ----------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `matcher` | `string` | `undefined` | Pattern matched against the event's filter field, following the comparison rules above. For tool hooks, this is the tool name. Built-in tools include `Bash`, `Read`, `Write`, `Edit`, `Glob`, `Grep`, `WebFetch`, `Agent`, and others (see [Tool Input Types](/docs/en/agent-sdk/typescript#tool-input-types) for the full list). MCP tools use the pattern `mcp____`. | -| `hooks` | `HookCallback[]` | - | Required. Array of callback functions to execute when the pattern matches | -| `timeout` | `number` | `undefined` | Timeout in seconds. When omitted, the per-event default applies: 10 minutes for most events, 30 seconds for `UserPromptSubmit`. A few events run with shorter limits, such as 10 seconds for `MessageDisplay` | +| Option | Type | Default | Description | +| --------- | ---------------- | ----------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `matcher` | `string` | `undefined` | Pattern matched against the event's filter field, following the comparison rules above. For tool hooks, this is the tool name. Built-in tools include `Bash`, `Read`, `Write`, `Edit`, `Glob`, `Grep`, `WebFetch`, `Agent`, and others (see [Tool Input Types](/docs/en/agent-sdk/typescript#tool-input-types) for the full list). MCP tools use the pattern `mcp____`. | +| `hooks` | `HookCallback[]` | - | Required. Array of callback functions to execute when the pattern matches | +| `timeout` | `number` | `undefined` | Timeout in seconds. When omitted, Claude Code applies the [event's default timeout](#hook-timeout): 10 minutes for most events, 30 seconds for `UserPromptSubmit`. Claude Code uses shorter limits for a few events, such as 10 seconds for `MessageDisplay` and a 1.5-second default [budget](/docs/en/hooks#sessionend-input) for `SessionEnd`. Your SDK callbacks follow the `command` hook defaults | Use the `matcher` pattern to target specific tools whenever possible. A matcher with `'Bash'` only runs for Bash commands, while omitting the pattern runs your callbacks for every occurrence of the event. @@ -353,9 +354,11 @@ This example intercepts Write tool calls and rewrites the `file_path` argument t - When using `updatedInput`, you must also include `permissionDecision: 'allow'` to auto-approve the modified input or `permissionDecision: 'ask'` to show it to the user. With `'defer'`, `updatedInput` is ignored. Always return a new object rather than mutating the original `tool_input`. + Pair `updatedInput` with `permissionDecision: 'allow'` to auto-approve the modified input, or `permissionDecision: 'ask'` to show it to the user. If you omit `permissionDecision`, the modified input still applies and flows through the normal permission evaluation. With `'defer'`, `updatedInput` is ignored. Always return a new object rather than mutating the original `tool_input`. +To confirm the redirect, set the prefix to a path you can write to, such as `./sandbox` or `/tmp/sandbox` (macOS doesn't allow creating a root-level `/sandbox` directory), then ask the agent to write a file: the Write tool's result in the message stream names the path with your sandbox prefix rather than the one Claude requested. + ### Add context and block a tool This example blocks writes to the `/etc` directory and explains why to both the model and the user: @@ -654,6 +657,8 @@ This example sends a webhook after each tool completes, logging which tool ran a ``` +To confirm the hook fires, point the webhook URL at an endpoint you can watch and send a prompt that uses a tool: the hook sends a POST with the tool name and timestamp after each tool completes. + ### Forward notifications to Slack Use `Notification` hooks to receive system notifications from the agent and forward them to external services. Notifications fire for event types such as: @@ -663,6 +668,8 @@ Use `Notification` hooks to receive system notifications from the agent and forw * `auth_success` when authentication completes * `elicitation_dialog`, `elicitation_complete`, and `elicitation_response` for user-prompt elicitation flows +In headless SDK sessions, only the elicitation events `elicitation_complete` and `elicitation_response` fire this hook; the other types are emitted by interactive UI that SDK sessions don't run. Permission requests, for example, go to the `canUseTool` callback instead. + Each notification includes a `message` field with a human-readable description and optionally a `title`. This example forwards every notification to a Slack channel. It requires a [Slack incoming webhook URL](https://docs.slack.dev/messaging/sending-messages-using-incoming-webhooks/), which you create by adding an app to your Slack workspace and enabling incoming webhooks: @@ -761,6 +768,8 @@ This example forwards every notification to a Slack channel. It requires a [Slac ``` +When a `Notification` event fires, the hook posts the notification's `message`, prefixed with `Agent status:`, to the channel your webhook targets. + ## Fix common issues ### Hook not firing @@ -788,12 +797,19 @@ const myHook: HookCallback = async (input, toolUseID, { signal }) => { ### Hook timeout -* Increase the `timeout` value in the `HookMatcher` configuration -* Use the `AbortSignal` from the third callback argument to handle cancellation gracefully in TypeScript +Claude Code runs each callback with a timeout, which you set in seconds with the `timeout` field on its `HookMatcher`. When you don't set one, Claude Code uses the event's default: 600 seconds for most events, 30 seconds for `UserPromptSubmit`, and 10 seconds for `MessageDisplay`. Claude Code runs `SessionEnd` callbacks during shutdown under the shorter [SessionEnd timeout budget](/docs/en/hooks#sessionend-input). + +When a callback exceeds its timeout, Claude Code cancels it and treats it as a failed hook: it discards the callback's output and the session continues rather than hanging. What happens next depends on the event: + +* `PreToolUse`: {/* min-version: 2.1.210 */}Claude Code doesn't run the tool call, Claude receives a tool result stating the hook didn't respond before its timeout, and the turn continues. If another `PreToolUse` hook returned an explicit deny, Claude receives that denial instead of the timeout error. Before v2.1.210, Claude Code reported the timeout to Claude as a user rejection, which made unattended sessions stop and wait for input. +* `PostToolUse` and `PostToolUseFailure`: Claude Code keeps the tool result and the turn continues. +* `UserPromptSubmit` and [`UserPromptExpansion`](/docs/en/hooks#userpromptexpansion): {/* min-version: 2.1.208 */}Claude Code blocks the prompt with a message naming the hook and the timeout, and the session continues. Because a callback on these events can act as a policy gate, Claude Code never lets a timed-out prompt through unscreened. Before v2.1.208, Claude Code ended the query with `error_during_execution` when a callback on these events timed out. +* `Stop` and `SubagentStop`: Claude Code shows a warning and the agent stops normally. +* Other events, such as `Notification` and `PreCompact`: Claude Code logs the failure and continues. -{/* min-version: 2.1.208 */}A `UserPromptSubmit` or [`UserPromptExpansion`](/docs/en/hooks#userpromptexpansion) callback that exceeds its timeout blocks that prompt with a timeout message and the session continues. Interrupting the query while a callback is pending cancels the pending tool call. Before v2.1.208, a callback timeout on those events ended the query with `error_during_execution`, and an interrupt during a pending `PreToolUse` callback could let the tool call proceed. +{/* min-version: 2.1.208 */}If you interrupt the query while a callback is pending, Claude Code cancels the pending tool call. Before v2.1.208, the tool call could still proceed if you interrupted during a pending `PreToolUse` callback. -{/* min-version: 2.1.210 */}A `PreToolUse` callback that exceeds its timeout blocks the tool call, and Claude receives an error result naming the timeout. If another `PreToolUse` hook returned an explicit deny, Claude receives that denial instead. Before v2.1.210, Claude Code reported the timeout to Claude as if the user had rejected the tool call, so an unattended session stopped and waited for input. +If your callback needs more time, set a higher `timeout` on its `HookMatcher`. In TypeScript, use the `AbortSignal` from the third callback argument to handle cancellation gracefully when the timeout fires. ### Tool blocked unexpectedly @@ -815,7 +831,7 @@ const myHook: HookCallback = async (input, toolUseID, { signal }) => { }; ``` -* Return `permissionDecision: 'allow'` to auto-approve the modified input, or `'ask'` to show it to the user for approval +* Don't pair `updatedInput` with `permissionDecision: 'defer'`, which drops the modified input. Omitting `permissionDecision` is fine: the modified input still applies through the normal permission evaluation. You can also return `'allow'` to auto-approve the modified input or `'ask'` to show it to the user for approval * Include `hookEventName` in `hookSpecificOutput` to identify which hook type the output is for diff --git a/content/en/docs/claude-code/agent-sdk/hosting.md b/content/en/docs/claude-code/agent-sdk/hosting.md index 2851397e2..5aab4e2d3 100644 --- a/content/en/docs/claude-code/agent-sdk/hosting.md +++ b/content/en/docs/claude-code/agent-sdk/hosting.md @@ -58,16 +58,36 @@ Create a container for each user task and destroy it when the task completes. Be Example workloads include bug investigation and fix, invoice and receipt extraction, document translation, and media transformation. -The container runs a one-shot entrypoint that calls the SDK and exits. The example below shows a minimal TypeScript version. Save it as `entrypoint.mts` or set `"type": "module"` in `package.json` so top-level `await` is available. +The container runs a one-shot entrypoint that calls the SDK and exits. In TypeScript, save the file as `entrypoint.mts` or set `"type": "module"` in `package.json` so top-level `await` is available. -```typescript theme={null} -import { query } from "@anthropic-ai/claude-agent-sdk"; + + ```typescript TypeScript theme={null} + import { query } from "@anthropic-ai/claude-agent-sdk"; -const prompt = process.env.TASK_PROMPT!; -for await (const message of query({ prompt, options: { maxTurns: 20 } })) { - console.log(message); -} -``` + const prompt = process.env.TASK_PROMPT!; + for await (const message of query({ prompt, options: { maxTurns: 20 } })) { + console.log(message); + } + ``` + + ```python Python theme={null} + import asyncio + import os + + from claude_agent_sdk import ClaudeAgentOptions, query + + + async def main(): + async for message in query( + prompt=os.environ["TASK_PROMPT"], + options=ClaudeAgentOptions(max_turns=20), + ): + print(message) + + + asyncio.run(main()) + ``` + ### Long-running sessions @@ -215,7 +235,7 @@ Prompt text and tool inputs are not included in exports by default. See [Control Three auth concerns matter at hosting time: -* **Anthropic API**: the subprocess reads `ANTHROPIC_API_KEY` from its environment. Supply it from your secret manager, or set `ANTHROPIC_BASE_URL` to route model calls through a proxy that injects the key outside the container. See [Credential management](/docs/en/agent-sdk/secure-deployment#credential-management) for the proxy pattern and the [SDK overview](/docs/en/agent-sdk/overview#get-started) for supported authentication methods. +* **Anthropic API**: the subprocess reads `ANTHROPIC_API_KEY` from its environment. Supply it from your secret manager, or set `ANTHROPIC_BASE_URL` to route model calls through a proxy that injects the key outside the container. See [Credential management](/docs/en/agent-sdk/secure-deployment#credential-management) for the proxy pattern and [Setup in the SDK quickstart](/docs/en/agent-sdk/quickstart#setup) for supported authentication methods. * **Inbound**: put authentication at a gateway in front of the agent container. The agent should receive pre-authenticated requests and should not be the component that validates user tokens. * **Outbound tools**: keep tool credentials out of the agent environment. Route outbound calls through a proxy that injects API keys after the request leaves the container. The agent makes the call; the proxy adds the credential. diff --git a/content/en/docs/claude-code/agent-sdk/mcp.md b/content/en/docs/claude-code/agent-sdk/mcp.md index 9995cec65..18bf8c3a4 100644 --- a/content/en/docs/claude-code/agent-sdk/mcp.md +++ b/content/en/docs/claude-code/agent-sdk/mcp.md @@ -768,10 +768,12 @@ The SDK emits a `system` message with subtype `init` at the start of each query. } } } catch (error) { - // A single-shot query() throws after yielding an error result. - // If the failure was an error result, the error subtype branch above - // has already run; connection or process failures yield no result - // message. + // A single-shot query() throws after yielding an error result. If the + // failure was an error result, the error subtype branch above has + // already run; a failure to start or reach the Claude Code process + // yields no result message. MCP servers that fail to connect don't + // throw: use the status check above, and note that servers still + // "pending" at init need a later status check. console.log(`Session ended with an error: ${error}`); } ``` @@ -803,10 +805,12 @@ The SDK emits a `system` message with subtype `init` at the start of each query. ): print("Execution failed") except Exception as error: - # A single-shot query() raises after yielding an error result. - # If the failure was an error result, the error subtype branch - # above has already run; connection or process failures yield - # no result message. + # A single-shot query() raises after yielding an error result. If the + # failure was an error result, the error subtype branch above has + # already run; a failure to start or reach the Claude Code process + # yields no result message. MCP servers that fail to connect don't + # raise: use the status check above, and note that servers still + # "pending" at init need a later status check. print(f"Session ended with an error: {error}") 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 36b9cdbc9..13fb80f0c 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 @@ -107,6 +107,8 @@ To load CLAUDE.md, set `settingSources` to include the level your CLAUDE.md live ``` +When you run either example, the SDK streams messages as Claude works: a system init message, assistant messages, user messages carrying tool results, and a final result message with the session outcome. + CLAUDE.md is persistent across all sessions in a project, shared with your team through git, and discovered automatically without code changes. It is not loaded if you pass an empty `settingSources` array. ### Output styles for persistent configurations @@ -329,6 +331,8 @@ You can provide a custom string as `systemPrompt` to replace the default entirel ``` +In Python, load a large custom prompt from a file with `system_prompt={"type": "file", "path": "..."}` instead of passing it as a string. The Python SDK passes a string prompt as one command-line argument to the CLI subprocess, so a prompt that exceeds the OS argument-length limit fails at process spawn before any API request is sent. On Linux the error is `Argument list too long`. See [`SystemPromptFile`](/docs/en/agent-sdk/python#systempromptfile) for the platform thresholds and the Windows behavior. + ## 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/observability.md b/content/en/docs/claude-code/agent-sdk/observability.md index 3a3c4ecad..7c090880c 100644 --- a/content/en/docs/claude-code/agent-sdk/observability.md +++ b/content/en/docs/claude-code/agent-sdk/observability.md @@ -103,6 +103,8 @@ The following example sets the variables in a dictionary and passes them through Because the child process inherits your application's environment by default, you can achieve the same result by exporting these variables in a Dockerfile, Kubernetes manifest, or shell profile and omitting `options.env` entirely. +To confirm that export is working, check your collector's logs for incoming spans, metrics, and log events after the task completes. The CLI fails silently on export errors by default: if the endpoint is unreachable or rejects the data, the agent still runs normally and the CLI drops the telemetry without surfacing an error in your application. To surface exporter errors, set [`CLAUDE_CODE_OTEL_DIAG_STDERR=1`](/docs/en/env-vars) alongside the exporter variables and read the diagnostics through the SDK's `stderr` callback (Python) or `stderr` option (TypeScript). {/* min-version: 2.1.179 */}Requires Claude Code v2.1.179 or later. + The `console` exporter writes telemetry to standard output, which the SDK uses as its message channel. Do not set `console` as an exporter value when running @@ -176,7 +178,7 @@ The following example renames the service and attaches deployment metadata. Thes ```python Python theme={null} options = ClaudeAgentOptions( env={ - # ... exporter configuration ... + # ... exporter configuration from the Enable telemetry export example ... "OTEL_SERVICE_NAME": "support-triage-agent", "OTEL_RESOURCE_ATTRIBUTES": "service.version=1.4.0,deployment.environment=production", }, @@ -187,7 +189,7 @@ The following example renames the service and attaches deployment metadata. Thes const options = { env: { ...process.env, - // ... exporter configuration ... + // ... exporter configuration from the Enable telemetry export example ... OTEL_SERVICE_NAME: "support-triage-agent", OTEL_RESOURCE_ATTRIBUTES: "service.version=1.4.0,deployment.environment=production", @@ -208,7 +210,8 @@ To make tool calls and MCP activity attributable to your application's end users options = ClaudeAgentOptions( env={ - # ... exporter configuration ... + # ... exporter configuration from the Enable telemetry export example ... + # request is the incoming request object from your web framework. "OTEL_RESOURCE_ATTRIBUTES": f"enduser.id={quote(request.user_id)},tenant.id={quote(request.tenant_id)}", }, ) @@ -218,7 +221,8 @@ To make tool calls and MCP activity attributable to your application's end users const options = { env: { ...process.env, - // ... exporter configuration ... + // ... exporter configuration from the Enable telemetry export example ... + // request is the incoming request object from your web framework. OTEL_RESOURCE_ATTRIBUTES: `enduser.id=${encodeURIComponent(request.userId)},tenant.id=${encodeURIComponent(request.tenantId)}`, }, }; diff --git a/content/en/docs/claude-code/agent-sdk/overview.md b/content/en/docs/claude-code/agent-sdk/overview.md index 3522e3d68..eca3e6cb1 100644 --- a/content/en/docs/claude-code/agent-sdk/overview.md +++ b/content/en/docs/claude-code/agent-sdk/overview.md @@ -6,633 +6,43 @@ > Build production AI agents with Claude Code as a library -Build AI agents that autonomously read files, run commands, search the web, edit code, and more. The Agent SDK gives you the same tools, agent loop, and context management that power Claude Code, programmable in Python and TypeScript. For other languages, [run the CLI programmatically](/docs/en/headless) with the `-p` flag and `--output-format json`. For the thinking behind agent harness design, see [A harness for every task: dynamic workflows in Claude Code](https://claude.com/blog/a-harness-for-every-task-dynamic-workflows-in-claude-code) on the blog. To run the example below, install the SDK first by following the steps in [Get started](#get-started). - - - ```python Python theme={null} - import asyncio - from claude_agent_sdk import query, ClaudeAgentOptions - - - async def main(): - async for message in query( - prompt="Find and fix the bug in auth.py", - options=ClaudeAgentOptions(allowed_tools=["Read", "Edit", "Bash"]), - ): - print(message) # Claude reads the file, finds the bug, edits it - - - asyncio.run(main()) - ``` - - ```typescript TypeScript theme={null} - import { query } from "@anthropic-ai/claude-agent-sdk"; - - for await (const message of query({ - prompt: "Find and fix the bug in auth.ts", - options: { allowedTools: ["Read", "Edit", "Bash"] } - })) { - console.log(message); // Claude reads the file, finds the bug, edits it - } - ``` - - -The Agent SDK includes built-in tools for reading files, running commands, and editing code, so your agent can start working immediately without you implementing tool execution. Dive into the quickstart or explore real agents built with the SDK: - - - - Build a bug-fixing agent in minutes - - - - Email assistant, research agent, and more - - - -## Get started - - - - - - ```bash theme={null} - npm init -y - npm pkg set type=module - npm install @anthropic-ai/claude-agent-sdk - npm install --save-dev tsx - ``` - - Setting `"type": "module"` in `package.json` lets your agent script use top-level `await`, and [tsx](https://tsx.is) runs TypeScript files directly. In an existing CommonJS project, skip the first two commands and name your script `agent.mts` instead of `agent.ts`. - - - - [uv](https://docs.astral.sh/uv/) is a fast Python package manager that handles virtual environments automatically: - - ```bash theme={null} - uv init - uv add claude-agent-sdk - ``` - - - - Create and activate a virtual environment, then install the package. Installing into a virtual environment avoids the `error: externally-managed-environment` failure that system Python on recent Debian, Ubuntu, and Homebrew installs returns for `pip install` outside a venv. - - On macOS or Linux: - - ```bash theme={null} - python3 -m venv .venv - source .venv/bin/activate - pip install claude-agent-sdk - ``` - - On Windows: - - ```powershell theme={null} - py -m venv .venv - .venv\Scripts\Activate.ps1 - pip install claude-agent-sdk - ``` - - If PowerShell blocks `Activate.ps1` with an execution policy error, run `Set-ExecutionPolicy -Scope Process RemoteSigned` first. - - The Python package requires Python 3.10 or later. If pip reports `No matching distribution found for claude-agent-sdk`, your interpreter is older than 3.10. Run `python3 --version` on macOS or Linux, or `py --version` on Windows, to check. - - - - - Both the TypeScript and Python SDKs bundle a native Claude Code binary for your platform, so you don't need to install Claude Code separately. - - - - - Get an API key from the [Console](https://platform.claude.com/), then set it as an environment variable. - - On macOS or Linux: - - ```bash theme={null} - export ANTHROPIC_API_KEY=sk-ant-xxxxx - ``` - - On Windows PowerShell: - - ```powershell theme={null} - $env:ANTHROPIC_API_KEY = "sk-ant-xxxxx" - ``` - - The SDK also supports authentication via third-party API providers: - - * **Amazon Bedrock**: set `CLAUDE_CODE_USE_BEDROCK=1` environment variable and configure AWS credentials - * **Claude Platform on AWS**: set `CLAUDE_CODE_USE_ANTHROPIC_AWS=1` and `ANTHROPIC_AWS_WORKSPACE_ID`, then configure AWS credentials - * **Google Cloud's Agent Platform**: set `CLAUDE_CODE_USE_VERTEX=1` environment variable and configure Google Cloud credentials - * **Microsoft Foundry**: set `CLAUDE_CODE_USE_FOUNDRY=1` environment variable and configure Azure credentials - - See the setup guides for [Amazon Bedrock](/docs/en/amazon-bedrock), [Claude Platform on AWS](/docs/en/claude-platform-on-aws), [Google Cloud's Agent Platform](/docs/en/google-vertex-ai), or [Microsoft Foundry](/docs/en/microsoft-foundry) for details. - - - Unless previously approved, Anthropic does not allow third party developers to offer claude.ai login or rate limits for their products, including agents built on the Claude Agent SDK. Please use the API key authentication methods described in this document instead. - - - - - This example creates an agent that lists files in your current directory using built-in tools. - - - ```python Python theme={null} - import asyncio - from claude_agent_sdk import query, ClaudeAgentOptions - - - async def main(): - async for message in query( - prompt="What files are in this directory?", - options=ClaudeAgentOptions(allowed_tools=["Bash", "Glob"]), - ): - if hasattr(message, "result"): - print(message.result) - - - asyncio.run(main()) - ``` - - ```typescript TypeScript theme={null} - import { query } from "@anthropic-ai/claude-agent-sdk"; - - for await (const message of query({ - prompt: "What files are in this directory?", - options: { allowedTools: ["Bash", "Glob"] } - })) { - if ("result" in message) console.log(message.result); - } - ``` - - - Save the example as `agent.py` or `agent.ts`, then run it. The agent prints a short summary of the files in the directory. - - - - ```bash theme={null} - npx tsx agent.ts - ``` - - If you named your script `agent.mts` for a CommonJS project, run `npx tsx agent.mts` instead. - - - - ```bash theme={null} - uv run agent.py - ``` - - - - With the virtual environment activated, on macOS or Linux: - - ```bash theme={null} - python3 agent.py - ``` - - On Windows, run `python agent.py`. - - - - - -**Ready to build?** Follow the [Quickstart](/docs/en/agent-sdk/quickstart) to create an agent that finds and fixes bugs in minutes. - -## Capabilities - -Everything that makes Claude Code powerful is available in the SDK: - - - - Your agent can read files, run commands, and search codebases out of the box. Key tools include: - - | Tool | What it does | - | --------------------------------------------------------------------------- | ------------------------------------------------------------------- | - | **Read** | Read any file in the working directory | - | **Write** | Create new files | - | **Edit** | Make precise edits to existing files | - | **Bash** | Run terminal commands, scripts, git operations | - | **Monitor** | Watch a background script and react to each output line as an event | - | **Glob** | Find files by pattern (`**/*.ts`, `src/**/*.py`) | - | **Grep** | Search file contents with regex | - | **WebSearch** | Search the web for current information | - | **WebFetch** | Fetch and parse web page content | - | **[AskUserQuestion](/docs/en/agent-sdk/user-input#handle-clarifying-questions)** | Ask the user clarifying questions with multiple choice options | - - For the full list, including scheduling and worktree tools, see the [tools reference](/docs/en/tools-reference). - - This example creates an agent that searches your codebase for TODO comments: - - - ```python Python theme={null} - import asyncio - from claude_agent_sdk import query, ClaudeAgentOptions - - - async def main(): - async for message in query( - prompt="Find all TODO comments and create a summary", - options=ClaudeAgentOptions(allowed_tools=["Read", "Glob", "Grep"]), - ): - if hasattr(message, "result"): - print(message.result) - - - asyncio.run(main()) - ``` - - ```typescript TypeScript theme={null} - import { query } from "@anthropic-ai/claude-agent-sdk"; - - for await (const message of query({ - prompt: "Find all TODO comments and create a summary", - options: { allowedTools: ["Read", "Glob", "Grep"] } - })) { - if ("result" in message) console.log(message.result); - } - ``` - - - - - Run custom code at key points in the agent lifecycle. SDK hooks use callback functions to validate, log, block, or transform agent behavior. - - **Available hooks:** `PreToolUse`, `PostToolUse`, `Stop`, `SessionStart`, `SessionEnd`, `UserPromptSubmit`, and more. - - This example logs all file changes to an audit file: - - - ```python Python theme={null} - import asyncio - from datetime import datetime - from claude_agent_sdk import query, ClaudeAgentOptions, HookMatcher - - - async def log_file_change(input_data, tool_use_id, context): - file_path = input_data.get("tool_input", {}).get("file_path", "unknown") - with open("./audit.log", "a") as f: - f.write(f"{datetime.now()}: modified {file_path}\n") - return {} - - - async def main(): - async for message in query( - prompt="Create a file named hello.py that prints a greeting", - options=ClaudeAgentOptions( - allowed_tools=["Read", "Edit"], - permission_mode="acceptEdits", - hooks={ - "PostToolUse": [ - HookMatcher(matcher="Edit|Write", hooks=[log_file_change]) - ] - }, - ), - ): - if hasattr(message, "result"): - print(message.result) - - - asyncio.run(main()) - ``` - - ```typescript TypeScript theme={null} - import { query, HookCallback } from "@anthropic-ai/claude-agent-sdk"; - import { appendFile } from "fs/promises"; - - const logFileChange: HookCallback = async (input) => { - const filePath = (input as any).tool_input?.file_path ?? "unknown"; - await appendFile("./audit.log", `${new Date().toISOString()}: modified ${filePath}\n`); - return {}; - }; - - for await (const message of query({ - prompt: "Create a file named hello.ts that prints a greeting", - options: { - allowedTools: ["Read", "Edit"], - permissionMode: "acceptEdits", - hooks: { - PostToolUse: [{ matcher: "Edit|Write", hooks: [logFileChange] }] - } - } - })) { - if ("result" in message) console.log(message.result); - } - ``` - - - After the agent finishes, run `cat audit.log` to see the recorded file changes. - - [Learn more about hooks →](/docs/en/agent-sdk/hooks) - - - - Spawn specialized agents to handle focused subtasks. Your main agent delegates work, and subagents report back with results. - - Define custom agents with specialized instructions. Subagents are invoked via the Agent tool, so include `Agent` in `allowedTools` to auto-approve those invocations: - - - ```python Python theme={null} - import asyncio - from claude_agent_sdk import query, ClaudeAgentOptions, AgentDefinition - - - async def main(): - async for message in query( - prompt="Use the code-reviewer agent to review this codebase", - options=ClaudeAgentOptions( - allowed_tools=["Read", "Glob", "Grep", "Agent"], - agents={ - "code-reviewer": AgentDefinition( - description="Expert code reviewer for quality and security reviews.", - prompt="Analyze code quality and suggest improvements.", - tools=["Read", "Glob", "Grep"], - ) - }, - ), - ): - if hasattr(message, "result"): - print(message.result) - - - asyncio.run(main()) - ``` - - ```typescript TypeScript theme={null} - import { query } from "@anthropic-ai/claude-agent-sdk"; - - for await (const message of query({ - prompt: "Use the code-reviewer agent to review this codebase", - options: { - allowedTools: ["Read", "Glob", "Grep", "Agent"], - agents: { - "code-reviewer": { - description: "Expert code reviewer for quality and security reviews.", - prompt: "Analyze code quality and suggest improvements.", - tools: ["Read", "Glob", "Grep"] - } - } - } - })) { - if ("result" in message) console.log(message.result); - } - ``` - - - Messages from within a subagent's context include a `parent_tool_use_id` field, letting you track which messages belong to which subagent execution. - - [Learn more about subagents →](/docs/en/agent-sdk/subagents) - - - - Connect to external systems via the Model Context Protocol: databases, browsers, APIs, and [hundreds more](https://github.com/modelcontextprotocol/servers). - - This example connects the [Playwright MCP server](https://github.com/microsoft/playwright-mcp) to give your agent browser automation capabilities: - - - ```python Python theme={null} - import asyncio - from claude_agent_sdk import query, ClaudeAgentOptions - - - async def main(): - async for message in query( - prompt="Open example.com and describe what you see", - options=ClaudeAgentOptions( - mcp_servers={ - "playwright": {"command": "npx", "args": ["@playwright/mcp@latest"]} - }, - allowed_tools=["mcp__playwright__*"], - ), - ): - if hasattr(message, "result"): - print(message.result) - - - asyncio.run(main()) - ``` - - ```typescript TypeScript theme={null} - import { query } from "@anthropic-ai/claude-agent-sdk"; - - for await (const message of query({ - prompt: "Open example.com and describe what you see", - options: { - mcpServers: { - playwright: { command: "npx", args: ["@playwright/mcp@latest"] } - }, - allowedTools: ["mcp__playwright__*"] - } - })) { - if ("result" in message) console.log(message.result); - } - ``` - - - [Learn more about MCP →](/docs/en/agent-sdk/mcp) - - - - Control exactly which tools your agent can use. Allow safe operations, block dangerous ones, or require approval for sensitive actions. - - - For interactive approval prompts and the `AskUserQuestion` tool, see [Handle approvals and user input](/docs/en/agent-sdk/user-input). - - - This example creates a read-only agent that can analyze but not modify code. `allowed_tools` pre-approves `Read`, `Glob`, and `Grep` so they run without prompting. Tools not listed are still available but fall through to the permission mode; to block tools entirely, use `disallowed_tools`. - - - ```python Python theme={null} - import asyncio - from claude_agent_sdk import query, ClaudeAgentOptions - - - async def main(): - async for message in query( - prompt="Review this code for best practices", - options=ClaudeAgentOptions( - allowed_tools=["Read", "Glob", "Grep"], - ), - ): - if hasattr(message, "result"): - print(message.result) - - - asyncio.run(main()) - ``` - - ```typescript TypeScript theme={null} - import { query } from "@anthropic-ai/claude-agent-sdk"; - - for await (const message of query({ - prompt: "Review this code for best practices", - options: { - allowedTools: ["Read", "Glob", "Grep"] - } - })) { - if ("result" in message) console.log(message.result); - } - ``` - - - [Learn more about permissions →](/docs/en/agent-sdk/permissions) - - - - Maintain context across multiple exchanges. Claude remembers files read, analysis done, and conversation history. Resume sessions later, or fork them to explore different approaches. - - This example captures the session ID from the first query, then resumes to continue with full context: - - - ```python Python theme={null} - import asyncio - from claude_agent_sdk import query, ClaudeAgentOptions, SystemMessage, ResultMessage - - - async def main(): - session_id = None - - # First query: capture the session ID - try: - async for message in query( - prompt="Read the authentication module", - options=ClaudeAgentOptions(allowed_tools=["Read", "Glob"]), - ): - if isinstance(message, SystemMessage) and message.subtype == "init": - session_id = message.data["session_id"] - except Exception as error: - # A single-shot query() raises after yielding an error result. If - # the failure was an error result, session_id was already captured - # by the loop above; connection or process failures yield no - # result message. - print(f"Session ended with an error: {error}") - - # Resume with full context from the first query - async for message in query( - prompt="Now find all places that call it", # "it" = auth module - options=ClaudeAgentOptions(resume=session_id), - ): - if isinstance(message, ResultMessage): - print(message.result) - - - asyncio.run(main()) - ``` - - ```typescript TypeScript theme={null} - import { query } from "@anthropic-ai/claude-agent-sdk"; - - let sessionId: string | undefined; - - // First query: capture the session ID - try { - for await (const message of query({ - prompt: "Read the authentication module", - options: { allowedTools: ["Read", "Glob"] } - })) { - if (message.type === "system" && message.subtype === "init") { - sessionId = message.session_id; - } - } - } catch (error) { - // A single-shot query() throws after yielding an error result. If the - // failure was an error result, sessionId was already captured by the - // loop above; connection or process failures yield no result message. - console.error(`Session ended with an error: ${error}`); - } - - // Resume with full context from the first query - for await (const message of query({ - prompt: "Now find all places that call it", // "it" = auth module - options: { resume: sessionId } - })) { - if ("result" in message) console.log(message.result); - } - ``` - - - [Learn more about sessions →](/docs/en/agent-sdk/sessions) - - - -### Claude Code features - -The SDK also supports Claude Code's filesystem-based configuration. With default options the SDK loads these from `.claude/` in your working directory and `~/.claude/`. To restrict which sources load, set `setting_sources` (Python) or `settingSources` (TypeScript) in your options. - -| Feature | Description | Location | -| ------------------------------------------------ | ----------------------------------------------------------------------------- | ---------------------------------- | -| [Skills](/docs/en/agent-sdk/skills) | Specialized capabilities Claude uses automatically or you invoke with `/name` | `.claude/skills/*/SKILL.md` | -| [Commands](/docs/en/agent-sdk/slash-commands) | Custom commands in the legacy format. Use skills for new custom commands | `.claude/commands/*.md` | -| [Memory](/docs/en/agent-sdk/modifying-system-prompts) | Project context and instructions | `CLAUDE.md` or `.claude/CLAUDE.md` | -| [Plugins](/docs/en/agent-sdk/plugins) | Extend with skills, agents, hooks, and MCP servers | Programmatic via `plugins` option | +An agent is an application that completes a task by planning its own steps and calling tools that read files, run commands, or edit code. The Agent SDK gives you the same tools, [agent loop](/docs/en/agent-sdk/agent-loop), and context management that power Claude Code, programmable in Python and TypeScript. ## Compare the Agent SDK to other Claude tools -The Claude Platform offers multiple ways to build with Claude. Here's how the Agent SDK fits in: +The Agent SDK, the CLI, the Client SDK, and Managed Agents each fit different needs. Use the table to find the one that matches what you're building. - - - The [Anthropic Client SDK](https://platform.claude.com/docs/en/api/client-sdks) gives you direct API access: you send prompts and implement tool execution yourself. The **Agent SDK** gives you Claude with built-in tool execution. +| If you're... | Use | Why | +| ------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | +| Building an agent without implementing the tool loop yourself | **Agent SDK** | A library that runs the agent loop in your own process, in Python or TypeScript. | +| Doing interactive development or running one-off tasks from a terminal | [**Claude Code CLI**](/docs/en/overview) | The terminal interface, built for daily interactive use. | +| Calling the API directly and implementing the tool loop yourself | [**Client SDK**](https://platform.claude.com/docs/en/api/client-sdks) | Direct access to the Anthropic API rather than to Claude Code. You implement the tool loop yourself. | +| Running long-running or asynchronous agents without managing your own sandbox or session infrastructure | [**Managed Agents**](https://platform.claude.com/docs/en/managed-agents/overview) | Hosted REST API, a separate product from the Agent SDK. Anthropic runs the agent and the sandbox. | - With the Client SDK, you implement a tool loop. With the Agent SDK, Claude handles it. This simplified pseudocode shows the difference: +The SDK is available as a library for Python and TypeScript only. To drive the same agent loop from another language, [run the CLI as a subprocess](/docs/en/headless) with the `-p` flag and `--output-format json`. - - ```python Python theme={null} - # Client SDK: You implement the tool loop - response = client.messages.create(...) - while response.stop_reason == "tool_use": - result = your_tool_executor(response.tool_use) - response = client.messages.create(tool_result=result, **params) - - # Agent SDK: Claude handles tools autonomously - async for message in query(prompt="Fix the bug in auth.py"): - print(message) - ``` - - ```typescript TypeScript theme={null} - // Client SDK: You implement the tool loop - let response = await client.messages.create({ ...params }); - while (response.stop_reason === "tool_use") { - const result = yourToolExecutor(response.tool_use); - response = await client.messages.create({ tool_result: result, ...params }); - } - - // Agent SDK: Claude handles tools autonomously - for await (const message of query({ prompt: "Fix the bug in auth.ts" })) { - console.log(message); - } - ``` - - - - - Same capabilities, different interface: +## Capabilities - | Use case | Best choice | - | ----------------------- | ----------- | - | Interactive development | CLI | - | CI/CD pipelines | SDK | - | Custom applications | SDK | - | One-off tasks | CLI | - | Production automation | SDK | +Everything that makes Claude Code powerful is available in the SDK. - Many teams use both: CLI for daily development, SDK for production. Workflows translate directly between them. - +| Capability | What it does | Learn more | +| ---------------------------- | -------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| Built-in tools | Read, write, edit files, run commands, and search the web | [Tools reference](/docs/en/tools-reference) | +| Hooks | Run custom code at key points in the agent lifecycle | [Hooks](/docs/en/agent-sdk/hooks) | +| Subagents | Spawn specialized agents for focused subtasks | [Subagents](/docs/en/agent-sdk/subagents) | +| MCP | Connect external tools and data sources via the Model Context Protocol | [MCP](/docs/en/agent-sdk/mcp) | +| Permissions | Control which tools run automatically, which need approval | [Permissions](/docs/en/agent-sdk/permissions) | +| Sessions | Maintain context across exchanges, resume or fork later | [Sessions](/docs/en/agent-sdk/sessions) | +| Skills, commands, and memory | Load automatically from your project's `.claude/` and from `~/.claude/`, same as Claude Code | [Skills](/docs/en/agent-sdk/skills), [Commands](/docs/en/agent-sdk/slash-commands), [Memory](/docs/en/agent-sdk/modifying-system-prompts), [Configuration loading](/docs/en/agent-sdk/claude-code-features) | +| Plugins | Package skills, agents, hooks, and MCP servers, and load them by local path | [Plugins](/docs/en/agent-sdk/plugins) | - - [Managed Agents](https://platform.claude.com/docs/en/managed-agents/overview) is a hosted REST API: Anthropic runs the agent and the sandbox, and your application sends events and streams back results. The **Agent SDK** is a library that runs the agent loop inside your own process. +## Get started - | | Agent SDK | Managed Agents | - | ------------------ | ---------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- | - | **Runs in** | Your process, your infrastructure | Anthropic-managed infrastructure | - | **Interface** | Python or TypeScript library | REST API | - | **Agent works on** | Files on your infrastructure | A managed sandbox per session | - | **Session state** | JSONL on your filesystem | Anthropic-hosted event log | - | **Custom tools** | In-process Python or TypeScript functions | Claude triggers the tool; you execute and return results | - | **Best for** | Local prototyping, agents that work directly on your filesystem and services | Production agents without operating sandbox or session infrastructure, long-running and asynchronous sessions | +Follow the [Quickstart](/docs/en/agent-sdk/quickstart) to install the SDK, set your API key, and build your first agent, one that finds and fixes bugs in existing code. - A common path is to prototype with the Agent SDK locally, then move to Managed Agents for production. - - + + Unless previously approved, Anthropic does not allow third party developers to offer claude.ai login or rate limits for their products, including agents built on the Claude Agent SDK. Use the API key authentication methods described in the [Quickstart](/docs/en/agent-sdk/quickstart) instead. + ## Changelog @@ -641,7 +51,7 @@ View the full changelog for SDK updates, bug fixes, and new features: * **TypeScript SDK**: [view CHANGELOG.md](https://github.com/anthropics/claude-agent-sdk-typescript/blob/main/CHANGELOG.md) * **Python SDK**: [view CHANGELOG.md](https://github.com/anthropics/claude-agent-sdk-python/blob/main/CHANGELOG.md) -## Reporting bugs +## Report bugs If you encounter bugs or issues with the Agent SDK: @@ -654,9 +64,9 @@ For partners integrating the Claude Agent SDK, use of Claude branding is optiona **Allowed:** -* "Claude Agent" (preferred for dropdown menus) -* "Claude" (when within a menu already labeled "Agents") -* "{YourAgentName} Powered by Claude" (if you have an existing agent name) +* "Claude Agent", preferred for dropdown menus +* "Claude", when within a menu already labeled "Agents" +* "\{YourAgentName} Powered by Claude", if you have an existing agent name **Not permitted:** @@ -671,20 +81,11 @@ Use of the Claude Agent SDK is governed by [Anthropic's Commercial Terms of Serv ## Next steps - - - Build an agent that finds and fixes bugs in minutes - - - - Email assistant, research agent, and more - - - - Full TypeScript API reference and examples - +These resources cover deeper technical detail and example projects for building with the Agent SDK. - - Full Python API reference and examples - - +* [Quickstart](/docs/en/agent-sdk/quickstart): build your first agent that finds and fixes bugs +* [Agent loop](/docs/en/agent-sdk/agent-loop): how Claude plans, calls tools, and decides when a task is done +* [Example agents](https://github.com/anthropics/claude-agent-sdk-demos): demo apps for local development +* [TypeScript SDK](/docs/en/agent-sdk/typescript): full TypeScript API reference and examples +* [Python SDK](/docs/en/agent-sdk/python): full Python API reference and examples +* [Agent harness design](https://claude.com/blog/a-harness-for-every-task-dynamic-workflows-in-claude-code): how the Claude Code team uses dynamic workflows to orchestrate subagents at scale diff --git a/content/en/docs/claude-code/agent-sdk/plugins.md b/content/en/docs/claude-code/agent-sdk/plugins.md index e0e9e1f13..576299850 100644 --- a/content/en/docs/claude-code/agent-sdk/plugins.md +++ b/content/en/docs/claude-code/agent-sdk/plugins.md @@ -25,7 +25,9 @@ For complete information on plugin structure and how to create plugins, see [Plu ## Loading plugins -Load plugins by providing their local file system paths in your options configuration. The `type` field must be `"local"`, the only value the SDK accepts. To use a plugin distributed through a [marketplace](/docs/en/plugin-marketplaces) or remote repository, download it first and provide the local directory path. The SDK supports loading multiple plugins from different locations. +Load plugins by providing their local file system paths in your options configuration. The `type` field must be `"local"`, the only value the SDK accepts. The SDK supports loading multiple plugins from different locations. + +To use a plugin distributed through a [marketplace](/docs/en/plugin-marketplaces) or remote repository, download it first and provide the local directory path. For the directory layout a plugin needs, see the [Plugin structure reference](#plugin-structure-reference) below. ```typescript TypeScript theme={null} @@ -95,7 +97,7 @@ When plugins load successfully, they appear in the system initialization message if (message.type === "system" && message.subtype === "init") { // Check loaded plugins console.log("Plugins:", message.plugins); - // Example: [{ name: "my-plugin", path: "./my-plugin" }] + // Example: [{ name: "my-plugin", path: "/absolute/path/to/my-plugin" }] // Plugin skills appear with the plugin name as a prefix console.log("Skills:", message.skills); @@ -123,7 +125,7 @@ When plugins load successfully, they appear in the system initialization message if isinstance(message, SystemMessage) and message.subtype == "init": # Check loaded plugins print("Plugins:", message.data.get("plugins")) - # Example: [{"name": "my-plugin", "path": "./my-plugin"}] + # Example: [{"name": "my-plugin", "path": "/absolute/path/to/my-plugin"}] # Plugin skills appear with the plugin name as a prefix print("Skills:", message.data.get("skills")) @@ -168,9 +170,9 @@ Skills from plugins are automatically namespaced with the plugin name to avoid c async def main(): # Load a plugin with a custom /greet skill async for message in query( - prompt="/demo-plugin:greet", # Use plugin skill with namespace + prompt="/my-plugin:greet", # Use plugin skill with namespace options=ClaudeAgentOptions( - plugins=[{"type": "local", "path": "./plugins/demo-plugin"}] + plugins=[{"type": "local", "path": "./my-plugin"}] ), ): # Claude executes the custom greeting skill from the plugin @@ -195,10 +197,10 @@ Here's a full example demonstrating plugin loading and usage: ```typescript TypeScript theme={null} import { query } from "@anthropic-ai/claude-agent-sdk"; - import * as path from "path"; + import { fileURLToPath } from "node:url"; async function runWithPlugin() { - const pluginPath = path.join(__dirname, "plugins", "my-plugin"); + const pluginPath = fileURLToPath(new URL("./plugins/my-plugin", import.meta.url)); console.log("Loading plugin from:", pluginPath); @@ -228,8 +230,9 @@ Here's a full example demonstrating plugin loading and usage: #!/usr/bin/env python3 """Example demonstrating how to use plugins with the Agent SDK.""" + import asyncio from pathlib import Path - import anyio + from claude_agent_sdk import ( AssistantMessage, ClaudeAgentOptions, @@ -241,7 +244,7 @@ Here's a full example demonstrating plugin loading and usage: async def run_with_plugin(): """Example using a custom plugin.""" - plugin_path = Path(__file__).parent / "plugins" / "demo-plugin" + plugin_path = Path(__file__).parent / "plugins" / "my-plugin" print(f"Loading plugin from: {plugin_path}") @@ -265,7 +268,7 @@ Here's a full example demonstrating plugin loading and usage: if __name__ == "__main__": - anyio.run(run_with_plugin) + asyncio.run(run_with_plugin()) ``` @@ -317,12 +320,22 @@ plugins: [{ type: "local", path: "./project-plugins/team-workflows" }]; Combine plugins from different locations: ```typescript theme={null} +import * as os from "node:os"; +import * as path from "node:path"; + plugins: [ { type: "local", path: "./local-plugin" }, - { type: "local", path: "~/.claude/custom-plugins/shared-plugin" } + { + type: "local", + path: path.join(os.homedir(), ".claude", "custom-plugins", "shared-plugin") + } ]; ``` + + The SDK doesn't expand tilde paths like `~/plugins`. If a plugin path doesn't exist, the SDK skips that plugin and the session continues, so check the `plugins` list in the init message to confirm each plugin loaded. + + ## Troubleshooting ### Plugin not loading @@ -332,6 +345,7 @@ If your plugin doesn't appear in the init message: 1. **Check the path**: ensure the path points to the plugin root directory, the parent of `skills/`, `agents/`, `hooks/`, `commands/` (legacy), or `.claude-plugin/` 2. **Validate plugin.json**: if your plugin includes a manifest, ensure it has valid JSON syntax 3. **Check file permissions**: ensure the plugin directory is readable +4. **Confirm the directory exists**: the SDK skips a nonexistent path, and the plugin doesn't appear in the init message's `plugins` list ### Skills not appearing diff --git a/content/en/docs/claude-code/agent-sdk/python.md b/content/en/docs/claude-code/agent-sdk/python.md index df9806b29..ec436a1a4 100644 --- a/content/en/docs/claude-code/agent-sdk/python.md +++ b/content/en/docs/claude-code/agent-sdk/python.md @@ -16,7 +16,7 @@ source .venv/bin/activate pip install claude-agent-sdk ``` -For uv, Windows PowerShell, and API key setup, see [Get started in the Agent SDK overview](/docs/en/agent-sdk/overview#get-started). +For uv, Windows PowerShell, and API key setup, see [Setup in the Agent SDK quickstart](/docs/en/agent-sdk/quickstart#setup). ## Choosing between `query()` and `ClaudeSDKClient` @@ -624,8 +624,9 @@ async def interruptible_task(): # Drain the interrupted task's messages (including its ResultMessage) async for message in client.receive_response(): if isinstance(message, ResultMessage): - print(f"Interrupted task finished with subtype={message.subtype!r}") - # subtype is "error_during_execution" for interrupted tasks + print(f"Interrupted task: terminal_reason={message.terminal_reason!r}") + # terminal_reason is "aborted_streaming" or "aborted_tools" + # for interrupted turns # Send a new command await client.query("Just say hello instead") @@ -640,7 +641,7 @@ asyncio.run(interruptible_task()) ``` - **Buffer behavior after interrupt:** `interrupt()` sends a stop signal but does not clear the message buffer. Messages already produced by the interrupted task, including its `ResultMessage` (with `subtype="error_during_execution"`), remain in the stream. You must drain them with `receive_response()` before reading the response to a new query. If you send a new query immediately after `interrupt()` and call `receive_response()` only once, you'll receive the interrupted task's messages, not the new query's response. + **Buffer behavior after interrupt:** `interrupt()` sends a stop signal but does not clear the message buffer. Messages already produced by the interrupted task, including its `ResultMessage`, remain in the stream. You must drain them with `receive_response()` before reading the response to a new query. If you send a new query immediately after `interrupt()` and call `receive_response()` only once, you'll receive the interrupted task's messages, not the new query's response. #### Example - Advanced permission control @@ -886,7 +887,7 @@ options = ClaudeAgentOptions( * `API_TIMEOUT_MS`: per-request timeout on the Anthropic client, in milliseconds. Default `600000`. Applies to the main loop and all subagents. * `CLAUDE_CODE_MAX_RETRIES`: maximum API retries. Default `10`, capped at `15`. Each retry gets its own `API_TIMEOUT_MS` window, so worst-case wall time is roughly `API_TIMEOUT_MS × (CLAUDE_CODE_MAX_RETRIES + 1)` plus backoff. For unattended runs that need to wait through longer outages, set `CLAUDE_CODE_RETRY_WATCHDOG=1`: it retries capacity errors indefinitely, and {/* min-version: 2.1.199 */}as of Claude Code v2.1.199 raises the default for other transient errors to `300` and removes the cap on this variable. * `CLAUDE_ASYNC_AGENT_STALL_TIMEOUT_MS`: stall watchdog for subagents launched with `run_in_background`. Default `600000`. Resets on each stream event; on stall it aborts the subagent, marks the task failed, and surfaces the error to the parent with any partial result. Does not apply to synchronous subagents. -* `CLAUDE_ENABLE_STREAM_WATCHDOG` with `CLAUDE_STREAM_IDLE_TIMEOUT_MS`: aborts the request when headers have arrived but the response body stops streaming. The watchdog is on by default for all providers; set `CLAUDE_ENABLE_STREAM_WATCHDOG=0` to disable it. `CLAUDE_STREAM_IDLE_TIMEOUT_MS` defaults to `300000` and is clamped to that minimum. The aborted request goes through the normal retry path. +* `CLAUDE_ENABLE_STREAM_WATCHDOG` with `CLAUDE_STREAM_IDLE_TIMEOUT_MS`: aborts the request when headers have arrived but the response body stops streaming. The watchdog is on by default for all providers; set `CLAUDE_ENABLE_STREAM_WATCHDOG=0` to disable it. `CLAUDE_STREAM_IDLE_TIMEOUT_MS` defaults to `300000` and is clamped to that minimum. After the abort, Claude Code retries the request at most once, and only before Claude has started a block of text or a tool call in the response; once Claude has completed a block of text or a tool call, Claude Code keeps the completed output, appends an [incomplete-response notice](/docs/en/errors#the-response-above-may-be-incomplete) instead of retrying, and still runs any completed tool call. ### `OutputFormat` @@ -947,11 +948,11 @@ Controls which filesystem-based configuration sources the SDK loads settings fro SettingSource = Literal["user", "project", "local"] ``` -| Value | Description | Location | -| :---------- | :---------------------------------------------- | :---------------------------- | -| `"user"` | Global user settings | `~/.claude/settings.json` | -| `"project"` | Shared project settings (version controlled) | `.claude/settings.json` | -| `"local"` | Local project settings (not version controlled) | `.claude/settings.local.json` | +| Value | Description | Location | +| :---------- | :------------------------------------------------------------------------ | :---------------------------- | +| `"user"` | Global user settings | `~/.claude/settings.json` | +| `"project"` | Shared project settings (version controlled) | `.claude/settings.json` | +| `"local"` | Local project settings, gitignored when Claude Code saves a setting to it | `.claude/settings.local.json` | #### Default behavior @@ -1365,7 +1366,7 @@ ThinkingConfig = ThinkingConfigAdaptive | ThinkingConfigEnabled | ThinkingConfig | `enabled` | `type`, `budget_tokens`, `display` | Enable thinking with a specific token budget | | `disabled` | `type` | Disable thinking | -The optional `display` field controls whether thinking text is returned `"summarized"` or `"omitted"`. On Claude Opus 4.7 and later, the API default is `"omitted"`, so set `"summarized"` to receive thinking content in [`ThinkingBlock`](#thinkingblock) outputs. +The optional `display` field controls whether thinking text is returned `"summarized"` or `"omitted"`. On Claude Opus 4.7 and later, the API default is `"omitted"`, so set `"summarized"` to receive thinking content in [`ThinkingBlock`](#thinkingblock) outputs. Claude Code doesn't send `display` to Amazon Bedrock or Google Cloud's Agent Platform, so on those providers Opus 4.7 and later return empty `ThinkingBlock` outputs even when you set `display` to `"summarized"`. Because these are `TypedDict` classes, they're plain dicts at runtime. Either construct them as dict literals or call the class like a constructor; both produce a `dict`. Access fields with `config["budget_tokens"]`, not `config.budget_tokens`: @@ -1407,7 +1408,7 @@ SdkBeta = Literal["context-1m-2025-08-07"] Use with the `betas` field in `ClaudeAgentOptions` to enable beta features. - The `context-1m-2025-08-07` beta is retired as of April 30, 2026. Passing this header with Claude Sonnet 4.5 or Sonnet 4 has no effect, and requests that exceed the standard 200k-token context window return an error. To use a 1M-token context window, migrate to [Claude Sonnet 5, Claude Sonnet 4.6, Claude Opus 4.6, Claude Opus 4.7, or Claude Opus 4.8](https://platform.claude.com/docs/en/about-claude/models/overview), which include 1M context at standard pricing with no beta header required. + The `context-1m-2025-08-07` beta is retired as of April 30, 2026. Passing this header with Claude Sonnet 4.5 or Sonnet 4 has no effect, and requests that exceed the standard 200k-token context window return an error. To use a 1M-token context window, migrate to [Claude Opus 5, Claude Sonnet 5, Claude Sonnet 4.6, Claude Opus 4.6, Claude Opus 4.7, or Claude Opus 4.8](https://platform.claude.com/docs/en/about-claude/models/overview), which include 1M context at standard pricing with no beta header required. ### `McpSdkServerConfig` @@ -1613,11 +1614,12 @@ AssistantMessageError = Literal[ "rate_limit", "invalid_request", "server_error", - "max_output_tokens", "unknown", ] ``` +The underlying CLI process can emit error types this Literal doesn't list, such as `max_output_tokens`. The SDK passes the value through unmodified, so treat strings outside this list the way you treat `unknown`. The TypeScript [`SDKAssistantMessageError`](/docs/en/agent-sdk/typescript#sdkassistantmessage) type lists the full set of values the CLI can emit. + ### `SystemMessage` System message with metadata. @@ -1664,7 +1666,7 @@ Several fields carry diagnostic detail about how the conversation ended: * `api_error_status`: the HTTP status code of the terminating API error. `None` when the turn ended without one. Populated only on `subtype="success"`. * `result`: text of the final assistant message on `subtype="success"`, or `None` on the `error_*` subtypes. When `subtype="success"` and `is_error=True`, this holds the API error string if one is available but can be empty, so check `api_error_status` and the preceding `AssistantMessage` content for detail. * `errors`: loop-level error strings such as the max-turns message. Populated only on the `error_*` subtypes. -* `terminal_reason`: why the query loop terminated, such as `"completed"`, `"max_turns"`, or `"aborted_streaming"`. A value of `"aborted_streaming"` or `"aborted_tools"` means the turn was cancelled by an interrupt. `None` when the CLI didn't report a terminal reason, such as with an older CLI version. See [`SDKResultMessage`](/docs/en/agent-sdk/typescript#sdkresultmessage) for the full list of values. +* `terminal_reason`: why the query loop ended, such as `"completed"`, `"max_turns"`, `"api_error"`, `"aborted_streaming"`, or `"aborted_tools"`. A value of `"aborted_streaming"` or `"aborted_tools"` means the turn was aborted before completing. Common causes are [`interrupt()`](#claudesdkclient) and a permission callback returning [`PermissionResultDeny`](#permissionresultdeny) with `interrupt=True`. `None` on CLI versions that predate the field, on results that bypassed the query loop such as local slash commands, or on synthesized error results emitted when the session fails fatally. Mirrors the TypeScript SDK's [`SDKResultMessage.terminal_reason`](/docs/en/agent-sdk/typescript#sdkresultmessage), which lists the full set of values. The `usage` dict contains the following keys when present: @@ -1917,6 +1919,8 @@ class ClaudeSDKError(Exception): """Base error for Claude SDK.""" ``` +When a single-shot `query()` ends with an error result, for example a turn-limit error, the SDK raises a plain `Exception` after yielding the final result message, not a `ClaudeSDKError` subclass. + ### `CLINotFoundError` Raised when Claude Code CLI is not installed or not found. @@ -2041,7 +2045,8 @@ class HookMatcher: default_factory=list ) # List of callbacks to execute timeout: float | None = ( - None # Timeout in seconds. When omitted, the per-event default applies + None # Timeout in seconds. When omitted, the per-event default applies: + # 600 for most events, 30 for UserPromptSubmit ) ``` @@ -3412,6 +3417,9 @@ async def main(): print(f"Process failed with exit code: {e.exit_code}") except CLIJSONDecodeError as e: print(f"Failed to parse response: {e}") + # A single-shot query() raises a plain Exception after yielding an error result + except Exception as e: + print(f"Query ended with an error result: {e}") asyncio.run(main()) @@ -3554,11 +3562,12 @@ class SandboxSettings(TypedDict, total=False): ```python theme={null} import asyncio -from claude_agent_sdk import query, ClaudeAgentOptions, SandboxSettings +from claude_agent_sdk import query, ClaudeAgentOptions -sandbox_settings: SandboxSettings = { +sandbox_settings = { "enabled": True, "autoAllowBashIfSandboxed": True, + "failIfUnavailable": True, "network": {"allowLocalBinding": True}, } diff --git a/content/en/docs/claude-code/agent-sdk/quickstart.md b/content/en/docs/claude-code/agent-sdk/quickstart.md index 4a040401f..1a8dc589c 100644 --- a/content/en/docs/claude-code/agent-sdk/quickstart.md +++ b/content/en/docs/claude-code/agent-sdk/quickstart.md @@ -17,7 +17,7 @@ Use the Agent SDK to build an AI agent that reads your code, finds bugs, and fix ## Prerequisites * **Node.js 18+** or **Python 3.10+** -* An **Anthropic account** ([sign up here](https://platform.claude.com/)) +* An **Anthropic account**. If you don't have one, [sign up here](https://platform.claude.com/). ## Setup @@ -217,7 +217,7 @@ This code has three main parts: 3. **`options`**: configuration for the agent. This example uses `allowedTools` to pre-approve `Read`, `Edit`, and `Glob`, and `permissionMode: "acceptEdits"` to auto-approve file changes. Other options include `systemPrompt`, `mcpServers`, and more. See all options for [Python](/docs/en/agent-sdk/python#claudeagentoptions) or [TypeScript](/docs/en/agent-sdk/typescript#options). -The `async for` loop keeps running as Claude thinks, calls tools, observes results, and decides what to do next. Each iteration yields a message: Claude's reasoning, a tool call, a tool result, or the final outcome. The SDK handles the orchestration (tool execution, context management, retries) so you just consume the stream. The loop ends when Claude finishes the task or hits an error. +The `async for` loop keeps running as Claude thinks, calls tools, observes results, and decides what to do next. Each iteration yields a message: Claude's reasoning, a tool call, a tool result, or the final outcome. The SDK handles the orchestration, tool execution, context management, and retries, so you consume the stream. The loop ends when Claude finishes the task or hits an error. The message handling inside the loop filters for human-readable output. Without filtering, you'd see raw message objects including system initialization and internal state, which is useful for debugging but noisy otherwise. @@ -360,7 +360,7 @@ With `Bash` enabled, try: `"Write unit tests for utils.py, run them, and fix any | `bypassPermissions` | Runs every tool without prompting, except tools matched by an explicit [`ask` rule](/docs/en/agent-sdk/permissions#how-permissions-are-evaluated), connector tools [your organization set to `ask`](/docs/en/mcp#organization-controls-on-connector-tools), and tools that require user interaction. In the TypeScript SDK, also requires `allowDangerouslySkipPermissions: true` in `options` | Sandboxed CI, fully trusted environments | | `default` | Requires a `canUseTool` callback to handle approval | Custom approval flows | -The example above uses `acceptEdits` mode, which auto-approves file operations so the agent can run without interactive prompts. If you want to prompt users for approval, use `default` mode and provide a [`canUseTool` callback](/docs/en/agent-sdk/user-input) that collects user input. For more control, see [Permissions](/docs/en/agent-sdk/permissions). +[Building an agent that finds and fixes bugs](#build-an-agent-that-finds-and-fixes-bugs) uses `acceptEdits` mode, which auto-approves file operations so the agent can run without interactive prompts. If you want to prompt users for approval, use `default` mode and provide a [`canUseTool` callback](/docs/en/agent-sdk/user-input) that collects user input. For more control, see [Permissions](/docs/en/agent-sdk/permissions). ## Next steps diff --git a/content/en/docs/claude-code/agent-sdk/session-storage.md b/content/en/docs/claude-code/agent-sdk/session-storage.md index a5713932a..bdae3a3b6 100644 --- a/content/en/docs/claude-code/agent-sdk/session-storage.md +++ b/content/en/docs/claude-code/agent-sdk/session-storage.md @@ -232,18 +232,26 @@ for await (const message of query({ Both SDKs ship a conformance suite that asserts the behavioral contract `append`, `load`, and the optional methods must satisfy. Tests for optional methods skip automatically when those methods are not implemented. -In TypeScript, copy [`shared/conformance.ts`](https://github.com/anthropics/claude-agent-sdk-typescript/blob/main/examples/session-stores/shared/conformance.ts) from the example directory into your test suite. In Python, the suite ships in the package: +In TypeScript, copy [`shared/conformance.ts`](https://github.com/anthropics/claude-agent-sdk-typescript/blob/main/examples/session-stores/shared/conformance.ts) from the example directory into your test suite. In Python, the suite ships in the package. To run it with pytest, which isn't an SDK dependency, install pytest first: + +```bash theme={null} +pip install pytest +``` + +Then pass your adapter to the suite in a test file as a zero-argument factory, which `run_session_store_conformance` calls once per contract to build a fresh store: ```python Python theme={null} import pytest from claude_agent_sdk.testing import run_session_store_conformance -@pytest.mark.asyncio +@pytest.mark.anyio async def test_my_store_conformance(): - await run_session_store_conformance(MyRedisStore) # Your adapter class + await run_session_store_conformance(MyRedisStore) ``` +Passing the `MyRedisStore` class itself, as this example does, works when the constructor takes no arguments. For an adapter that takes a pre-configured client, pass a lambda that constructs the store instead. Because the contracts reuse the same session keys, each store the factory returns must start with empty storage, so have the lambda provision isolated backing storage per call, such as a fresh in-memory fake, a unique key prefix, or a new test database. + ## Behavior notes ### Dual-write architecture diff --git a/content/en/docs/claude-code/agent-sdk/sessions.md b/content/en/docs/claude-code/agent-sdk/sessions.md index 8944f2453..6f6a076f8 100644 --- a/content/en/docs/claude-code/agent-sdk/sessions.md +++ b/content/en/docs/claude-code/agent-sdk/sessions.md @@ -170,10 +170,9 @@ Resume and fork require a session ID. Read it from the `session_id` field on the if message.subtype == "success": print(message.result) except Exception as error: - # A single-shot query() raises after yielding an error result. - # If the failure was an error result, session_id was already - # captured by the loop above; connection or process failures - # yield no result message. + # A single-shot query() raises after yielding an error result. If the + # failure was an error result, the loop above already captured session_id; + # process failures yield no result message, so session_id stays None. print(f"Session ended with an error: {error}") print(f"Session ID: {session_id}") @@ -201,10 +200,9 @@ Resume and fork require a session ID. Read it from the `session_id` field on the } } } catch (error) { - // A single-shot query() throws after yielding an error result. - // If the failure was an error result, sessionId was already captured - // by the loop above; connection or process failures yield no result - // message. + // A single-shot query() throws after yielding an error result. If the + // failure was an error result, the loop above already captured sessionId; + // process failures yield no result message, so sessionId stays undefined. console.error(`Session ended with an error: ${error}`); } diff --git a/content/en/docs/claude-code/agent-sdk/skills.md b/content/en/docs/claude-code/agent-sdk/skills.md index 63d4c6056..9b201fcc9 100644 --- a/content/en/docs/claude-code/agent-sdk/skills.md +++ b/content/en/docs/claude-code/agent-sdk/skills.md @@ -34,15 +34,19 @@ Set the `skills` option on `query()` to control which Skills are available to th Once configured, Claude automatically discovers Skills from the filesystem and invokes them when relevant to the user's request. +The following example sets `cwd` to the process's current working directory, so run it from inside a project that has a `.claude/skills/` directory in the current directory or any parent up to the repository root: + ```python Python theme={null} import asyncio + import os + from claude_agent_sdk import query, ClaudeAgentOptions async def main(): options = ClaudeAgentOptions( - cwd="/path/to/project", # Project with .claude/skills/ + cwd=os.getcwd(), # .claude/skills/ here or in a parent directory setting_sources=["user", "project"], # Load Skills from filesystem skills="all", # Enable every discovered Skill allowed_tools=["Read", "Write", "Bash"], @@ -63,7 +67,7 @@ Once configured, Claude automatically discovers Skills from the filesystem and i for await (const message of query({ prompt: "Help me process this PDF document", options: { - cwd: "/path/to/project", // Project with .claude/skills/ + cwd: process.cwd(), // .claude/skills/ here or in a parent directory settingSources: ["user", "project"], // Load Skills from filesystem skills: "all", // Enable every discovered Skill allowedTools: ["Read", "Write", "Bash"] @@ -74,8 +78,14 @@ Once configured, Claude automatically discovers Skills from the filesystem and i ``` +Near the start of the stream, the SDK yields a system message with subtype `init`. Check its `skills` array to confirm your Skills loaded before Claude starts working. The array lists user-invocable Skills only. A Skill with [`user-invocable: false`](/docs/en/skills#control-who-invokes-a-skill) in its frontmatter loads and remains available to Claude but doesn't appear in the array. + To enable only specific Skills, pass their names. Names match the `name` field in `SKILL.md` or the Skill's directory name. Use `plugin:skill` for plugin-provided Skills. + + Import statements from the first example are assumed in the following code snippets. + + ```python Python theme={null} options = ClaudeAgentOptions(skills=["pdf", "docx"]) @@ -102,7 +112,7 @@ Skills are defined as directories containing a `SKILL.md` file with YAML frontma **Example directory structure**: -```bash theme={null} +```text theme={null} .claude/skills/processing-pdfs/ └── SKILL.md ``` @@ -122,16 +132,13 @@ For complete guidance on creating Skills, including SKILL.md structure, multi-fi To control tool access for Skills in SDK applications, use `allowedTools` to pre-approve specific tools. Without a `canUseTool` callback, anything not in the list is denied: - - Import statements from the first example are assumed in the following code snippets. - - ```python Python theme={null} options = ClaudeAgentOptions( setting_sources=["user", "project"], # Load Skills from filesystem skills="all", allowed_tools=["Read", "Grep", "Glob"], + permission_mode="dontAsk", # Deny anything not pre-approved instead of prompting ) @@ -150,7 +157,7 @@ To control tool access for Skills in SDK applications, use `allowedTools` to pre settingSources: ["user", "project"], // Load Skills from filesystem skills: "all", allowedTools: ["Read", "Grep", "Glob"], - permissionMode: "dontAsk" // Deny anything not in allowedTools + permissionMode: "dontAsk" // Deny anything not pre-approved instead of prompting } })) { console.log(message); @@ -160,14 +167,11 @@ To control tool access for Skills in SDK applications, use `allowedTools` to pre ## Discovering Available Skills -To see which Skills are available in your SDK application, simply ask Claude: +To see which Skills are available in your SDK application, ask Claude. The example below sets only the `skills` option and omits `settingSources`/`setting_sources`. When you leave `settingSources`/`setting_sources` unset, the SDK still loads Skills from the user and project sources, so the `skills` option set to `"all"` on its own makes them available to list. ```python Python theme={null} - options = ClaudeAgentOptions( - setting_sources=["user", "project"], # Load Skills from filesystem - skills="all", - ) + options = ClaudeAgentOptions(skills="all") async def main(): @@ -182,7 +186,6 @@ To see which Skills are available in your SDK application, simply ask Claude: for await (const message of query({ prompt: "What Skills are available?", options: { - settingSources: ["user", "project"], // Load Skills from filesystem skills: "all" } })) { @@ -200,7 +203,7 @@ Test Skills by asking questions that match their descriptions: ```python Python theme={null} options = ClaudeAgentOptions( - cwd="/path/to/project", + cwd=os.getcwd(), setting_sources=["user", "project"], # Load Skills from filesystem skills="all", allowed_tools=["Read", "Bash"], @@ -219,7 +222,7 @@ Test Skills by asking questions that match their descriptions: for await (const message of query({ prompt: "Extract text from invoice.pdf", options: { - cwd: "/path/to/project", + cwd: process.cwd(), settingSources: ["user", "project"], // Load Skills from filesystem skills: "all", allowedTools: ["Read", "Bash"] @@ -252,13 +255,13 @@ Claude automatically invokes the relevant Skill if the description matches your ```typescript TypeScript theme={null} // Skills not loaded: settingSources excludes user and project - const options = { + const optionsWithoutSkills = { settingSources: [], skills: "all" }; // Skills loaded: user and project sources included - const options = { + const optionsWithSkills = { settingSources: ["user", "project"], skills: "all" }; diff --git a/content/en/docs/claude-code/agent-sdk/slash-commands.md b/content/en/docs/claude-code/agent-sdk/slash-commands.md index 66c49ddeb..bc43fd966 100644 --- a/content/en/docs/claude-code/agent-sdk/slash-commands.md +++ b/content/en/docs/claude-code/agent-sdk/slash-commands.md @@ -400,6 +400,8 @@ Use in SDK: ``` +If the prompt passes fewer arguments than the placeholders reference, unmatched indexed placeholders such as `$1` stay in the command text verbatim. For the full substitution behavior, including named arguments, see [available string substitutions](/docs/en/skills#available-string-substitutions). + #### Bash Command Execution Custom commands can execute bash commands and include their output: diff --git a/content/en/docs/claude-code/agent-sdk/structured-outputs.md b/content/en/docs/claude-code/agent-sdk/structured-outputs.md index 7b07513f0..775f8e8db 100644 --- a/content/en/docs/claude-code/agent-sdk/structured-outputs.md +++ b/content/en/docs/claude-code/agent-sdk/structured-outputs.md @@ -431,11 +431,9 @@ A result can also end with subtype `success` but no `structured_output` value, f } } } catch (error) { - // A single-shot query() throws after yielding an error result. - // If the failure was an error result, the subtype branches above - // have already run; connection or process failures yield no result - // message. Handle the failure here - retry with a simpler prompt, - // fall back to unstructured, etc. + // A single-shot query() throws after yielding an error result. If the + // failure was an error result, the error subtype branches above have + // already run; connection or process failures yield no result message. console.log(`Session ended with an error: ${error}`); } ``` @@ -471,11 +469,9 @@ A result can also end with subtype `success` but no `structured_output` value, f else: print("Run ended without a structured output") except Exception as error: - # A single-shot query() raises after yielding an error result. - # If the failure was an error result, the subtype branches above - # have already run; connection or process failures yield no - # result message. Handle the failure here - retry with a simpler - # prompt, fall back to unstructured, etc. + # A single-shot query() raises after yielding an error result. If the + # failure was an error result, the error subtype branches above have + # already run; connection or process failures yield no result message. print(f"Session ended with an error: {error}") diff --git a/content/en/docs/claude-code/agent-sdk/tool-search.md b/content/en/docs/claude-code/agent-sdk/tool-search.md index 44ca720f1..08c5b9bdb 100644 --- a/content/en/docs/claude-code/agent-sdk/tool-search.md +++ b/content/en/docs/claude-code/agent-sdk/tool-search.md @@ -25,19 +25,21 @@ For details on the underlying API mechanism, see [Tool search in the API](https: Tool search is supported on Claude Sonnet 4.5, Claude Haiku 4.5, Claude Opus 4.5, and later models; see [model compatibility in the API docs](https://platform.claude.com/docs/en/agents-and-tools/tool-use/tool-search-tool#model-compatibility) for the current list. On Google Cloud's Agent Platform, the minimum supported models are Claude Sonnet 4.5 and Claude Opus 4.5. + + Tool search also isn't supported on Microsoft Foundry [deployments hosted on Azure](https://platform.claude.com/docs/en/build-with-claude/claude-in-microsoft-foundry#hosting-options), which reject it server-side: the SDK detects the rejection and loads tool definitions upfront for that deployment instead. [`ENABLE_TOOL_SEARCH`](#configure-tool-search) can't override this, since the rejection comes from the deployment itself. ## Configure tool search Tool search is on by default. It is disabled by default on Google Cloud's Agent Platform, where it is supported for Claude Sonnet 4.5 and later and Claude Opus 4.5 and later. It is also disabled when `ANTHROPIC_BASE_URL` points to a non-first-party host, since most proxies do not forward `tool_reference` blocks. You can override either default with the `ENABLE_TOOL_SEARCH` environment variable: -| Value | Behavior | -| :------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| (unset) | Tool search is on. Tool definitions are deferred and discovered on demand. Falls back to loading upfront on Google Cloud's Agent Platform or a non-first-party `ANTHROPIC_BASE_URL`. | -| `true` | Tool search is always on. The SDK sends the beta header even on Google Cloud's Agent Platform and through proxies. Requests fail on Google Cloud's Agent Platform models earlier than Sonnet 4.5 or Opus 4.5, or on proxies that do not support `tool_reference` blocks. | -| `auto` | Checks the combined token count of all tool definitions against the model's context window. If they exceed 10%, tool search activates. If they're under 10%, all tools are loaded into context normally. | -| `auto:N` | Same as `auto` with a custom percentage. `auto:5` activates when tool definitions exceed 5% of the context window. Lower values activate sooner. | -| `false` | Tool search is off. All tool definitions are loaded into context on every turn. | +| Value | Behavior | +| :------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| (unset) | Tool search is on. Tool definitions are deferred and discovered on demand. Falls back to loading upfront on Google Cloud's Agent Platform, a non-first-party `ANTHROPIC_BASE_URL`, or a Microsoft Foundry deployment hosted on Azure. | +| `true` | Tool search is always on, except on a Microsoft Foundry deployment hosted on Azure, where the server-side rejection still forces upfront loading. The SDK sends the beta header even on Google Cloud's Agent Platform and through proxies. Requests fail on Google Cloud's Agent Platform models earlier than Sonnet 4.5 or Opus 4.5, or on proxies that do not support `tool_reference` blocks. | +| `auto` | Checks the combined token count of all tool definitions against the model's context window. If they exceed 10%, tool search activates. If they're under 10%, all tools are loaded into context normally. | +| `auto:N` | Same as `auto` with a custom percentage. `auto:5` activates when tool definitions exceed 5% of the context window. Lower values activate sooner. | +| `false` | Tool search is off. All tool definitions are loaded into context on every turn. | Setting [`CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS`](/docs/en/env-vars) keeps tool search off, and `ENABLE_TOOL_SEARCH` can't override it. The variable strips the beta header that `defer_loading` tool definitions and `tool_reference` content blocks require. diff --git a/content/en/docs/claude-code/agent-sdk/typescript-v2-preview.md b/content/en/docs/claude-code/agent-sdk/typescript-v2-preview.md index c7f4e2317..35f8e71e3 100644 --- a/content/en/docs/claude-code/agent-sdk/typescript-v2-preview.md +++ b/content/en/docs/claude-code/agent-sdk/typescript-v2-preview.md @@ -305,6 +305,8 @@ for await (const msg of resumedSession.stream()) { Sessions can be closed manually or automatically using [`await using`](https://www.typescriptlang.org/docs/handbook/release-notes/typescript-5-2.html#using-declarations-and-explicit-resource-management), a TypeScript 5.2+ feature for automatic resource cleanup. If you're using an older TypeScript version or encounter compatibility issues, use manual cleanup instead. +The examples below show only the cleanup pattern and don't send any messages, so running them produces no output. + **Automatic cleanup (TypeScript 5.2+):** ```typescript theme={null} diff --git a/content/en/docs/claude-code/agent-sdk/typescript.md b/content/en/docs/claude-code/agent-sdk/typescript.md index 00a89ae1a..9802b8aca 100644 --- a/content/en/docs/claude-code/agent-sdk/typescript.md +++ b/content/en/docs/claude-code/agent-sdk/typescript.md @@ -380,7 +380,7 @@ function resolveSettings( #### Example -The example below resolves settings for a project directory and prints the source that controls the cleanup period. +The example below resolves settings for a project directory and prints the source that controls the cleanup period. On a machine where no settings file sets `cleanupPeriodDays`, both printed lines show `undefined` for the value, which is the expected output rather than an error. ```typescript theme={null} import { resolveSettings } from "@anthropic-ai/claude-agent-sdk"; @@ -424,7 +424,7 @@ Configuration object for the `query()` function. | `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 | +| `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. {/* min-version: 2.1.219 */}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 for every hook event 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 | | `includePartialMessages` | `boolean` | `false` | Include partial message events | @@ -470,6 +470,8 @@ Configuration object for the `query()` function. The CLI subprocess reads several environment variables that control API timeouts and stall detection. Pass them through the `env` option: ```typescript theme={null} +import { query } from "@anthropic-ai/claude-agent-sdk"; + const result = query({ prompt: "Analyze this code", options: { @@ -486,7 +488,7 @@ const result = query({ * `API_TIMEOUT_MS`: per-request timeout on the Anthropic client, in milliseconds. Default `600000`. Applies to the main loop and all subagents. * `CLAUDE_CODE_MAX_RETRIES`: maximum API retries. Default `10`, capped at `15`. Each retry gets its own `API_TIMEOUT_MS` window, so worst-case wall time is roughly `API_TIMEOUT_MS × (CLAUDE_CODE_MAX_RETRIES + 1)` plus backoff. For unattended runs that need to wait through longer outages, set `CLAUDE_CODE_RETRY_WATCHDOG=1`: it retries capacity errors indefinitely, and {/* min-version: 2.1.199 */}as of Claude Code v2.1.199 raises the default for other transient errors to `300` and removes the cap on this variable. * `CLAUDE_ASYNC_AGENT_STALL_TIMEOUT_MS`: stall watchdog for subagents launched with `run_in_background`. Default `600000`. Resets on each stream event; on stall it aborts the subagent, marks the task failed, and surfaces the error to the parent with any partial result. Does not apply to synchronous subagents. -* `CLAUDE_ENABLE_STREAM_WATCHDOG` with `CLAUDE_STREAM_IDLE_TIMEOUT_MS`: aborts the request when headers have arrived but the response body stops streaming. The watchdog is on by default for all providers; set `CLAUDE_ENABLE_STREAM_WATCHDOG=0` to disable it. `CLAUDE_STREAM_IDLE_TIMEOUT_MS` defaults to `300000` and is clamped to that minimum. The aborted request goes through the normal retry path. +* `CLAUDE_ENABLE_STREAM_WATCHDOG` with `CLAUDE_STREAM_IDLE_TIMEOUT_MS`: aborts the request when headers have arrived but the response body stops streaming. The watchdog is on by default for all providers; set `CLAUDE_ENABLE_STREAM_WATCHDOG=0` to disable it. `CLAUDE_STREAM_IDLE_TIMEOUT_MS` defaults to `300000` and is clamped to that minimum. After the abort, Claude Code retries the request at most once, and only before Claude has started a block of text or a tool call in the response; once Claude has completed a block of text or a tool call, Claude Code keeps the completed output, appends an [incomplete-response notice](/docs/en/errors#the-response-above-may-be-incomplete) instead of retrying, and still runs any completed tool call. ### `Query` object @@ -509,6 +511,7 @@ interface Query extends AsyncGenerator { supportedModels(): Promise; supportedAgents(): Promise; mcpServerStatus(): Promise; + getContextUsage(): Promise; accountInfo(): Promise; reconnectMcpServer(serverName: string): Promise; toggleMcpServer(serverName: string, enabled: boolean): Promise; @@ -526,15 +529,16 @@ interface Query extends AsyncGenerator { | `interrupt()` | Interrupts the query. Only available in streaming input mode. {/* min-version: 2.1.205 */}When the CLI advertises the `interrupt_receipt_v1` capability in [`SDKSystemMessage.capabilities`](#sdksystemmessage), resolves with an [`SDKControlInterruptResponse`](#sdkcontrolinterruptresponse) listing the queued messages that survive the interrupt. Resolves `undefined` on CLIs before v2.1.205 | | `rewindFiles(userMessageId, options?)` | Restores files to their state at the specified user message. Pass `{ dryRun: true }` to preview changes. Requires `enableFileCheckpointing: true`. See [File checkpointing](/docs/en/agent-sdk/file-checkpointing) | | `setPermissionMode()` | Changes the permission mode (only available in streaming input mode) | -| `setModel()` | Changes the model (only available in streaming input mode) | +| `setModel()` | Changes the model (only available in streaming input mode). Passing `undefined` or the string `"default"` resets to the session default model | | `setMaxThinkingTokens()` | *Deprecated:* Use the `thinking` option instead. Changes the maximum thinking tokens. Passing `null` resets thinking to the session default: a mid-session override is cleared, and thinking stays off for sessions that have it disabled | | `applyFlagSettings(settings)` | Merges settings into the session's flag settings layer at runtime (only available in streaming input mode). See [`applyFlagSettings()`](#applyflagsettings) | | `initializationResult()` | Returns the full initialization result including supported commands, models, account info, and output style configuration | | `reinitialize()` | {/* min-version: 2.1.195 */}Re-sends the `initialize` control request to the running CLI and returns a fresh result instead of the cached first-connect result. Use it after a transport gap, such as reattaching to a session after a disconnect, so pending permission requests reach your `canUseTool` callback again. Make the callback idempotent per request ID, because a request whose response was lost is dispatched again. Requires Claude Code v2.1.195 or later | -| `supportedCommands()` | Returns available slash commands | +| `supportedCommands()` | Returns available slash commands. {/* min-version: agent-sdk@0.3.216 */}From Agent SDK v0.3.216 the list reflects mid-session command changes; see [`SDKCommandsChangedMessage`](#sdkcommandschangedmessage) | | `supportedModels()` | Returns available models with display info | | `supportedAgents()` | Returns available subagents as [`AgentInfo`](#agentinfo)`[]` | | `mcpServerStatus()` | Returns status of connected MCP servers | +| `getContextUsage()` | Returns an [`SDKControlGetContextUsageResponse`](#sdkcontrolgetcontextusageresponse) breaking down the session's context window usage by category, skill, and tool. The same data `/context` shows in an interactive session | | `accountInfo()` | Returns account information | | `reconnectMcpServer(serverName)` | Reconnect an MCP server by name | | `toggleMcpServer(serverName, enabled)` | Enable or disable an MCP server by name | @@ -564,6 +568,8 @@ Only available in streaming input mode, the same constraint as `setModel()` and The example below switches the active model mid-session, then clears the override so the model falls back to whatever the user or project settings specify. ```typescript theme={null} +import { query } from "@anthropic-ai/claude-agent-sdk"; + const q = query({ prompt: messageStream }); // Override the model for the rest of the session @@ -610,9 +616,12 @@ type SDKControlInitializeResponse = { models: ModelInfo[]; account: AccountInfo; fast_mode_state?: "off" | "cooldown" | "on"; + fast_mode_disabled_reason?: FastModeDisabledReason; }; ``` +{/* min-version: 2.1.219 */}The response always reports `fast_mode_state`, and when something blocks [fast mode](/docs/en/fast-mode), `fast_mode_disabled_reason` carries the reason code alongside it, so you can explain the blocked state instead of re-deriving availability. Both behaviors require Claude Code v2.1.219 or later. Before v2.1.219, the response omitted `fast_mode_state` when fast mode wasn't available and never carried a reason. For the reason codes and their meanings, see [`fast_mode_disabled_reason`](#sdkresultmessage) on the result message. + When a client sends `initialize` to a session that is already running, the control-response wrapper also carries an optional `pending_permission_requests` array. The field is on the response wrapper itself, not in the `SDKControlInitializeResponse` payload above. Each entry is a complete `control_request` message with the same `{ type: "control_request", request_id, request }` shape the session streams for permission requests while running. These are requests that were issued before the client connected and are still awaiting a reply. The SDK reads the array for you and dispatches each entry to your [`canUseTool`](#canusetool) callback, the same redelivery that [`reinitialize()`](#query-object) triggers after a transport gap. Handle repeated request IDs idempotently, because an entry can repeat a request the callback already received before the connection dropped. @@ -624,6 +633,7 @@ The interrupt receipt: the value [`interrupt()`](#query-object) resolves with on ```typescript theme={null} type SDKControlInterruptResponse = { still_queued: string[]; + cancelled?: string[]; }; ``` @@ -635,8 +645,119 @@ Interpret the list with these caveats: * Only main-thread messages are listed. Messages addressed to a subagent are out of scope. * The list can include UUIDs your client never sent, such as [scheduled task](/docs/en/scheduled-tasks) triggers. Ignore UUIDs you don't recognize instead of treating them as an error. +{/* min-version: 2.1.219 */}A client that drives the CLI's control protocol directly, rather than through `interrupt()`, can set `cancel_queued: true` on the `interrupt` control request. Claude Code v2.1.219 and later advertises support with the `interrupt_cancel_queued_v1` capability in [`SDKSystemMessage.capabilities`](#sdksystemmessage); older CLIs ignore the field and leave queued messages to run as usual. Such an interrupt also cancels every message that would otherwise be listed under `still_queued`: the receipt lists them under `cancelled` instead, `still_queued` is empty, and none of them run. + +The `cancelled` list carries the same caveats as `still_queued`. The `interrupt()` method never sends `cancel_queued`, so receipts it resolves with don't carry `cancelled`. + The receipt is a snapshot taken at the moment the interrupt is processed, and on a clean interrupt it arrives before the interrupted turn's [`SDKResultMessage`](#sdkresultmessage). Read the receipt rather than inspecting the queue after that result: the loop starts the next queued turn immediately, so the queue you inspect after the result has already changed. +### `SDKControlGetContextUsageResponse` + +Return type of [`getContextUsage()`](#query-object). This is the same payload the `/context` command renders in an interactive session, so alongside the token counts it carries display fields such as `color`, `gridRows`, and `percentage` that `/context` uses to draw its usage grid. + +```typescript theme={null} +type SDKControlGetContextUsageResponse = { + categories: { + name: string; + tokens: number; + color: string; + isDeferred?: boolean; + }[]; + totalTokens: number; + maxTokens: number; + rawMaxTokens: number; + percentage: number; + gridRows: { + color: string; + isFilled: boolean; + categoryName: string; + tokens: number; + percentage: number; + squareFullness: number; + }[][]; + model: string; + memoryFiles: { + path: string; + type: string; + tokens: number; + }[]; + mcpTools: { + name: string; + serverName: string; + tokens: number; + isLoaded?: boolean; + }[]; + deferredBuiltinTools?: { + name: string; + tokens: number; + isLoaded: boolean; + }[]; + systemTools?: { + name: string; + tokens: number; + }[]; + systemPromptSections?: { + name: string; + tokens: number; + }[]; + agents: { + agentType: string; + source: string; + tokens: number; + }[]; + slashCommands?: { + totalCommands: number; + includedCommands: number; + tokens: number; + }; + skills?: { + totalSkills: number; + includedSkills: number; + tokens: number; + skillFrontmatter: { + name: string; + source: string; + tokens: number; + }[]; + }; + autoCompactThreshold?: number; + isAutoCompactEnabled: boolean; + messageBreakdown?: { + toolCallTokens: number; + toolResultTokens: number; + attachmentTokens: number; + assistantMessageTokens: number; + userMessageTokens: number; + redirectedContextTokens: number; + unattributedTokens: number; + toolCallsByType: { + name: string; + callTokens: number; + resultTokens: number; + }[]; + attachmentsByType: { + name: string; + tokens: number; + }[]; + }; + apiUsage: { + input_tokens: number; + output_tokens: number; + cache_creation_input_tokens: number; + cache_read_input_tokens: number; + } | null; +}; +``` + +Read token attribution from the collection fields: + +* `categories` holds the per-category totals. +* `mcpTools` and `agents` attribute tokens to individual MCP tools and subagents. +* `memoryFiles` lists each loaded memory file with its cost. +* `skills.skillFrontmatter` attributes the skill listing's tokens to each included skill. The per-skill counts measure each skill's listing entry as Claude Code actually sends it, which can be shorter than the skill's full frontmatter. Compare `skills.totalSkills` with `skills.includedSkills` to see whether every discovered skill made it into the listing. + +`totalTokens` is the session's current context usage, and `maxTokens` is the window that usage is measured against. That window is the model's context window, or the lower auto-compaction window when one applies. Claude Code leaves the optional `deferredBuiltinTools`, `systemTools`, and `systemPromptSections` diagnostics unset, so expect them to be absent even though the type declares them. + ### `AgentDefinition` Configuration for a subagent defined programmatically. @@ -695,11 +816,11 @@ Controls which filesystem-based configuration sources the SDK loads settings fro type SettingSource = "user" | "project" | "local"; ``` -| Value | Description | Location | -| :---------- | :---------------------------------------------- | :---------------------------- | -| `'user'` | Global user settings | `~/.claude/settings.json` | -| `'project'` | Shared project settings (version controlled) | `.claude/settings.json` | -| `'local'` | Local project settings (not version controlled) | `.claude/settings.local.json` | +| Value | Description | Location | +| :---------- | :------------------------------------------------------------------------ | :---------------------------- | +| `'user'` | Global user settings | `~/.claude/settings.json` | +| `'project'` | Shared project settings (version controlled) | `.claude/settings.json` | +| `'local'` | Local project settings, gitignored when Claude Code saves a setting to it | `.claude/settings.local.json` | #### Default behavior @@ -710,6 +831,8 @@ When `settingSources` is omitted or `undefined`, `query()` loads the same filesy **Disable filesystem settings:** ```typescript theme={null} +import { query } from "@anthropic-ai/claude-agent-sdk"; + // Do not load user, project, or local settings from disk const result = query({ prompt: "Analyze this code", @@ -720,6 +843,8 @@ const result = query({ **Load all filesystem settings explicitly:** ```typescript theme={null} +import { query } from "@anthropic-ai/claude-agent-sdk"; + const result = query({ prompt: "Analyze this code", options: { @@ -731,6 +856,8 @@ const result = query({ **Load only specific setting sources:** ```typescript theme={null} +import { query } from "@anthropic-ai/claude-agent-sdk"; + // Load only project settings, ignore user and local const result = query({ prompt: "Run CI checks", @@ -743,12 +870,15 @@ const result = query({ **Testing and CI environments:** ```typescript theme={null} +import { query } from "@anthropic-ai/claude-agent-sdk"; + // Ensure consistent behavior in CI by excluding local settings const result = query({ prompt: "Run tests", options: { settingSources: ["project"], // Only team-shared settings - permissionMode: "bypassPermissions" + permissionMode: "bypassPermissions", + allowDangerouslySkipPermissions: true } }); ``` @@ -756,6 +886,8 @@ const result = query({ **SDK-only applications:** ```typescript theme={null} +import { query } from "@anthropic-ai/claude-agent-sdk"; + // Define everything programmatically. // Pass [] to opt out of filesystem setting sources. const result = query({ @@ -776,6 +908,8 @@ const result = query({ **Loading CLAUDE.md project instructions:** ```typescript theme={null} +import { query } from "@anthropic-ai/claude-agent-sdk"; + // Load project settings to include CLAUDE.md files const result = query({ prompt: "Add a new feature following project conventions", @@ -1036,6 +1170,7 @@ type SDKAssistantMessage = { message: BetaMessage; // From Anthropic SDK parent_tool_use_id: string | null; error?: SDKAssistantMessageError; + aborted?: true; timestamp?: string; }; ``` @@ -1044,6 +1179,8 @@ The `message` field is a [`BetaMessage`](https://platform.claude.com/docs/en/api `SDKAssistantMessageError` is one of: `'authentication_failed'`, `'oauth_org_not_allowed'`, `'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. +`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. + `timestamp` is the ISO 8601 time when the message's content finished generating on the process that produced it. The value comes from that machine's clock, so use it for display only and don't order messages by it. One API turn can produce several assistant messages that share a `message.id`, each with its own `timestamp`. When the field is absent, fall back to the time you received the message. ### `SDKUserMessage` @@ -1110,6 +1247,8 @@ type SDKResultMessage = stop_reason: string | null; ttft_ms?: number; ttft_stream_ms?: number; + user_message_uuid?: string; + request_sent_wall_ms?: number; total_cost_usd: number; usage: NonNullableUsage; modelUsage: { [modelName: string]: ModelUsage }; @@ -1118,6 +1257,7 @@ type SDKResultMessage = deferred_tool_use?: { id: string; name: string; input: Record }; terminal_reason?: TerminalReason; fast_mode_state?: FastModeState; + fast_mode_disabled_reason?: FastModeDisabledReason; origin?: SDKMessageOrigin; } | { @@ -1141,6 +1281,7 @@ type SDKResultMessage = errors: string[]; terminal_reason?: TerminalReason; fast_mode_state?: FastModeState; + fast_mode_disabled_reason?: FastModeDisabledReason; origin?: SDKMessageOrigin; }; ``` @@ -1150,8 +1291,28 @@ 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. +* {/* min-version: 2.1.216 */}`user_message_uuid`: the `uuid` of the [`SDKUserMessage`](#sdkusermessage) that started this turn, echoed back so you can match the result to the message you sent. Requires Claude Code v2.1.216 or later. Present on the success arm only, together with `request_sent_wall_ms`; absent on API-error results, subagent calls, and synthetic turns such as scheduled ones. +* `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`. * `terminal_reason`: why the loop ended. One of `"completed"`, `"max_turns"`, `"tool_deferred"`, `"aborted_streaming"`, `"aborted_tools"`, `"hook_stopped"`, `"stop_hook_prevented"`, `"background_requested"`, `"blocking_limit"`, `"rapid_refill_breaker"`, `"prompt_too_long"`, `"image_error"`, `"model_error"`, `"api_error"`, `"malformed_tool_use_exhausted"`, `"budget_exhausted"`, `"structured_output_retry_exhausted"`, `"tool_deferred_unavailable"`, or `"turn_setup_failed"`. * `fast_mode_state`: one of `"on"`, `"off"`, or `"cooldown"`. +* `fast_mode_disabled_reason`: {/* min-version: 2.1.219 */}why [fast mode](/docs/en/fast-mode) isn't available right now. Absent when nothing blocks fast mode, though a request may still run at standard speed. During the cooldown after a fast mode rate limit, Claude Code reports `fast_mode_state: "cooldown"` with no reason code and re-enables fast mode when the cooldown expires. Requires Claude Code v2.1.219 or later. + +Use the reason code to explain why fast mode is off in your own UI instead of re-deriving availability. Each code names the check that blocked fast mode: + +| Reason code | Meaning | +| ---------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `free` | The account doesn't have the paid subscription or usage credits fast mode requires | +| `preference` | The organization has disabled fast mode | +| `extra_usage_disabled` | Usage credits are turned off for the account | +| `network_error` | The [availability check](/docs/en/fast-mode#use-fast-mode-behind-proxies-and-llm-gateways) couldn't reach `api.anthropic.com` | +| `unknown` | Claude Code couldn't determine availability | +| `not_first_party` | The session uses a provider other than the Anthropic API | +| `disabled_by_env` | [`CLAUDE_CODE_DISABLE_FAST_MODE`](/docs/en/env-vars) is set | +| `model_not_allowed` | The fast mode Opus model isn't in the organization's [`availableModels`](/docs/en/model-config#restrict-model-selection) allowlist | +| `sdk_opt_in_required` | The session hasn't opted in to fast mode: pass `fastMode: true` in the [`settings`](#options) option or through [`applyFlagSettings()`](#applyflagsettings) | +| `pending` | The availability check hasn't completed yet | + +The same pair of fields appears on [`SDKSystemMessage`](#sdksystemmessage) and on the [`SDKControlInitializeResponse`](#sdkcontrolinitializeresponse), so you can read the fast mode state before the first turn. The `origin` field forwards the [`SDKMessageOrigin`](#sdkmessageorigin) of the user message that triggered this result. When a background task finishes and the SDK injects a synthetic follow-up turn, the resulting `SDKResultMessage` carries `origin: { kind: "task-notification" }`. Check this field to distinguish results that answer your prompt from results emitted for background-task follow-ups, so you can route or suppress the latter. The field is absent for results emitted before any user turn, such as startup errors. @@ -1183,17 +1344,20 @@ type SDKSystemMessage = { output_style: string; skills: string[]; plugins: { name: string; path: string }[]; + fast_mode_state?: FastModeState; + fast_mode_disabled_reason?: FastModeDisabledReason; capabilities?: string[]; }; ``` -{/* min-version: 2.1.205 */} +`fast_mode_state` reports the session's [fast mode](/docs/en/fast-mode) state. {/* min-version: 2.1.219 */}When something blocks fast mode, `fast_mode_disabled_reason` names the check that blocked it; the field requires Claude Code v2.1.219 or later. For the reason codes and their meanings, see [`fast_mode_disabled_reason`](#sdkresultmessage) on the result message. The `capabilities` array names the protocol behaviors this CLI implements, so you can feature-detect instead of comparing `claude_code_version` strings. It is an open set: ignore values you don't recognize, and check for the specific capability whose behavior you rely on. The field requires Claude Code v2.1.205 or later and is absent on earlier CLIs. -| Capability | Meaning | -| ---------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `interrupt_receipt_v1` | [`interrupt()`](#query-object) resolves with an [`SDKControlInterruptResponse`](#sdkcontrolinterruptresponse) receipt naming the queued messages that survive the interrupt | +| Capability | Meaning | +| ---------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `interrupt_receipt_v1` | [`interrupt()`](#query-object) resolves with an [`SDKControlInterruptResponse`](#sdkcontrolinterruptresponse) receipt naming the queued messages that survive the interrupt | +| `interrupt_cancel_queued_v1` | {/* min-version: 2.1.219 */}The `interrupt` control request honors `cancel_queued: true`, cancelling the queued messages that would otherwise survive the interrupt and listing them on the receipt's `cancelled` field. See [`SDKControlInterruptResponse`](#sdkcontrolinterruptresponse). Requires Claude Code v2.1.219 or later | ### `SDKPartialAssistantMessage` @@ -1328,22 +1492,35 @@ type SDKMessageOrigin = kind: "peer"; from: string; name?: string; + fromSession?: string; senderTaskId?: string; body?: string; + verifiedPeerPid?: number; } | { kind: "task-notification" } | { kind: "coordinator" } | { kind: "auto-continuation" }; ``` -| `kind` | Meaning | -| ------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `human` | Direct input from the end user. If your application forwards what the user typed as a user message, set its `origin` to `{ kind: "human" }` explicitly: {/* min-version: 2.1.210 */}Claude Code treats a user message with no `origin` as unattributed, and checks that require a human-typed prompt, such as the [`ultracode` workflow keyword](/docs/en/workflows#ask-for-a-workflow-in-your-prompt), don't accept it. Before v2.1.210, Claude Code treated an absent `origin` on a user message as human input. | -| `channel` | Message arriving on a [channel](/docs/en/channels). `server` is the source MCP server name. | -| `peer` | Message from another agent. For an in-process [teammate](/docs/en/agent-teams) sending to `main` via `SendMessage`, `from` is the teammate's name and `senderTaskId` is its task ID. For a cross-session peer such as another local Claude Code process, `from` is the sender address and `senderTaskId` is absent. {/* min-version: 2.1.205 */}`name` and `body` require Claude Code v2.1.205 or later. `name` is the sender's display name, normalized by Claude Code: it strips Unicode control, format, surrogate, and line or paragraph separator code points, then trims the result and caps it at 64 code points with an ellipsis. `body` is the decoded message body with the peer envelope stripped, byte-exact with what the model sees. For a teammate message `body` is always present; for a cross-session peer it is present only when the turn is exactly one peer envelope formed by Claude Code. Render `name` and `body` instead of re-parsing the message text. | -| `task-notification` | Synthetic turn injected after a background task finished. See [`SDKTaskNotificationMessage`](#sdktasknotificationmessage). | -| `coordinator` | Message from a team coordinator in an [agent team](/docs/en/agent-teams). | -| `auto-continuation` | Synthetic turn injected when the session continues without fresh user input, such as a command result that triggers a follow-up prompt. | +| `kind` | Meaning | +| ------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `human` | Direct input from the end user. If your application forwards what the user typed as a user message, set its `origin` to `{ kind: "human" }` explicitly: {/* min-version: 2.1.210 */}Claude Code treats a user message with no `origin` as unattributed, and checks that require a human-typed prompt, such as the [`ultracode` workflow keyword](/docs/en/workflows#ask-for-a-workflow-in-your-prompt), don't accept it. Before v2.1.210, Claude Code treated an absent `origin` on a user message as human input. | +| `channel` | Message arriving on a [channel](/docs/en/channels). `server` is the source MCP server name. | +| `peer` | Message from another agent: an in-process [teammate](/docs/en/agent-teams) or a cross-session peer such as another local Claude Code process. See [Peer origin fields](#peer-origin-fields) for the per-field semantics and the trust model. | +| `task-notification` | Synthetic turn injected after a background task finished. See [`SDKTaskNotificationMessage`](#sdktasknotificationmessage). | +| `coordinator` | Message from a team coordinator in an [agent team](/docs/en/agent-teams). | +| `auto-continuation` | Synthetic turn injected when the session continues without fresh user input, such as a command result that triggers a follow-up prompt. | + +### Peer origin fields + +A `peer` origin identifies which agent sent the message: an in-process [teammate](/docs/en/agent-teams) sending to `main` with `SendMessage`, or a cross-session peer such as another local Claude Code process. The two kinds of sender fill the fields differently: + +* `from`: the teammate's name, or the sender address for a cross-session peer. The value is sender-authored; `verifiedPeerPid` is the verified identity. +* `senderTaskId`: the teammate's task ID. Absent for a cross-session peer. +* {/* min-version: 2.1.205 */}`name`: the sender's display name, normalized by Claude Code: it strips Unicode control, format, surrogate, and line or paragraph separator code points, then trims the result and caps it at 64 code points with an ellipsis. Requires Claude Code v2.1.205 or later. +* {/* min-version: 2.1.205 */}`body`: the decoded message body with the peer envelope stripped, byte-exact with what the model sees. Always present for a teammate message; for a cross-session peer, present only when the turn is exactly one peer envelope formed by Claude Code. Render `name` and `body` instead of re-parsing the message text. Requires Claude Code v2.1.205 or later. +* {/* min-version: 2.1.216 */}`fromSession`: the sender's host-openable session ID, set by the sender's host so your UI can link back to the sending session. Like `from`, it is sender-asserted: use it as a navigation target only, and don't treat it as proof of the sender's identity. Requires Claude Code v2.1.216 or later. +* {/* min-version: 2.1.216 */}`verifiedPeerPid`: the process ID of the process that connected to this session's cross-session messaging socket, verified by the kernel and read from the connection itself, never from the payload. Use it, not `from`, to identify the sender: `from` is forgeable by any same-user process. The field is absent when Claude Code can't verify it, such as on Windows or non-socket ingress, so an absent value means the sender is unverified. For relayed traffic it identifies the relay rather than the message's author, and process IDs are recyclable, so treat it as provenance rather than an authentication token. Requires Claude Code v2.1.216 or later. ## Hook Types @@ -1365,16 +1542,26 @@ type HookEvent = | "SessionStart" | "SessionEnd" | "Stop" + | "StopFailure" | "SubagentStart" | "SubagentStop" | "PreCompact" + | "PostCompact" | "PermissionRequest" + | "PermissionDenied" | "Setup" | "TeammateIdle" + | "TaskCreated" | "TaskCompleted" + | "Elicitation" + | "ElicitationResult" | "ConfigChange" + | "DirectoryAdded" | "WorktreeCreate" | "WorktreeRemove" + | "InstructionsLoaded" + | "CwdChanged" + | "FileChanged" | "MessageDisplay"; ``` @@ -1412,21 +1599,32 @@ type HookInput = | PostToolUseHookInput | PostToolUseFailureHookInput | PostToolBatchHookInput + | PermissionDeniedHookInput | NotificationHookInput | UserPromptSubmitHookInput + | UserPromptExpansionHookInput | SessionStartHookInput | SessionEndHookInput | StopHookInput + | StopFailureHookInput | SubagentStartHookInput | SubagentStopHookInput | PreCompactHookInput + | PostCompactHookInput | PermissionRequestHookInput | SetupHookInput | TeammateIdleHookInput + | TaskCreatedHookInput | TaskCompletedHookInput + | ElicitationHookInput + | ElicitationResultHookInput | ConfigChangeHookInput + | InstructionsLoadedHookInput + | DirectoryAddedHookInput | WorktreeCreateHookInput | WorktreeRemoveHookInput + | CwdChangedHookInput + | FileChangedHookInput | MessageDisplayHookInput; ``` @@ -1505,6 +1703,18 @@ type PostToolBatchToolCall = { }; ``` +#### `PermissionDeniedHookInput` + +```typescript theme={null} +type PermissionDeniedHookInput = BaseHookInput & { + hook_event_name: "PermissionDenied"; + tool_name: string; + tool_input: unknown; + tool_use_id: string; + reason: string; +}; +``` + #### `NotificationHookInput` ```typescript theme={null} @@ -1522,6 +1732,20 @@ type NotificationHookInput = BaseHookInput & { type UserPromptSubmitHookInput = BaseHookInput & { hook_event_name: "UserPromptSubmit"; prompt: string; + session_title?: string; +}; +``` + +#### `UserPromptExpansionHookInput` + +```typescript theme={null} +type UserPromptExpansionHookInput = BaseHookInput & { + hook_event_name: "UserPromptExpansion"; + expansion_type: "slash_command" | "mcp_prompt"; + command_name: string; + command_args: string; + command_source?: string; + prompt: string; }; ``` @@ -1530,9 +1754,10 @@ type UserPromptSubmitHookInput = BaseHookInput & { ```typescript theme={null} type SessionStartHookInput = BaseHookInput & { hook_event_name: "SessionStart"; - source: "startup" | "resume" | "clear" | "compact"; + source: "startup" | "resume" | "clear" | "compact" | "fork"; agent_type?: string; model?: string; + session_title?: string; }; ``` @@ -1557,6 +1782,17 @@ type StopHookInput = BaseHookInput & { }; ``` +#### `StopFailureHookInput` + +```typescript theme={null} +type StopFailureHookInput = BaseHookInput & { + hook_event_name: "StopFailure"; + error: SDKAssistantMessageError; + error_details?: string; + last_assistant_message?: string; +}; +``` + #### `SubagentStartHookInput` ```typescript theme={null} @@ -1611,6 +1847,16 @@ type PreCompactHookInput = BaseHookInput & { }; ``` +#### `PostCompactHookInput` + +```typescript theme={null} +type PostCompactHookInput = BaseHookInput & { + hook_event_name: "PostCompact"; + trigger: "manual" | "auto"; + compact_summary: string; +}; +``` + #### `PermissionRequestHookInput` ```typescript theme={null} @@ -1642,6 +1888,20 @@ type TeammateIdleHookInput = BaseHookInput & { }; ``` +#### `TaskCreatedHookInput` + +```typescript theme={null} +type TaskCreatedHookInput = BaseHookInput & { + hook_event_name: "TaskCreated"; + task_id: string; + task_subject: string; + task_description?: string; + teammate_name?: string; + /** @deprecated since v2.1.178. Carries the session-derived team name; will be removed. */ + team_name?: string; +}; +``` + #### `TaskCompletedHookInput` ```typescript theme={null} @@ -1656,6 +1916,33 @@ type TaskCompletedHookInput = BaseHookInput & { }; ``` +#### `ElicitationHookInput` + +```typescript theme={null} +type ElicitationHookInput = BaseHookInput & { + hook_event_name: "Elicitation"; + mcp_server_name: string; + message: string; + mode?: "form" | "url"; + url?: string; + elicitation_id?: string; + requested_schema?: Record; +}; +``` + +#### `ElicitationResultHookInput` + +```typescript theme={null} +type ElicitationResultHookInput = BaseHookInput & { + hook_event_name: "ElicitationResult"; + mcp_server_name: string; + elicitation_id?: string; + mode?: "form" | "url"; + action: "accept" | "decline" | "cancel"; + content?: Record; +}; +``` + #### `ConfigChangeHookInput` ```typescript theme={null} @@ -1671,6 +1958,37 @@ type ConfigChangeHookInput = BaseHookInput & { }; ``` +#### `InstructionsLoadedHookInput` + +```typescript theme={null} +type InstructionsLoadedHookInput = BaseHookInput & { + hook_event_name: "InstructionsLoaded"; + file_path: string; + memory_type: "User" | "Project" | "Local" | "Managed"; + load_reason: + | "session_start" + | "nested_traversal" + | "path_glob_match" + | "include" + | "compact"; + globs?: string[]; + trigger_file_path?: string; + parent_file_path?: string; +}; +``` + +#### `DirectoryAddedHookInput` + +```typescript theme={null} +type DirectoryAddedHookInput = BaseHookInput & { + hook_event_name: "DirectoryAdded"; + directory: string; + source: "slash_command" | "register_repo_root"; +}; +``` + +`directory` is the absolute path of the directory that was added. `source` is `"slash_command"` when `/add-dir` added it and `"register_repo_root"` when the SDK control request did. + #### `WorktreeCreateHookInput` ```typescript theme={null} @@ -1689,6 +2007,26 @@ type WorktreeRemoveHookInput = BaseHookInput & { }; ``` +#### `CwdChangedHookInput` + +```typescript theme={null} +type CwdChangedHookInput = BaseHookInput & { + hook_event_name: "CwdChanged"; + old_cwd: string; + new_cwd: string; +}; +``` + +#### `FileChangedHookInput` + +```typescript theme={null} +type FileChangedHookInput = BaseHookInput & { + hook_event_name: "FileChanged"; + file_path: string; + event: "change" | "add" | "unlink"; +}; +``` + #### `MessageDisplayHookInput` ```typescript theme={null} @@ -1728,6 +2066,13 @@ type SyncHookJSONOutput = { stopReason?: string; decision?: "approve" | "block"; systemMessage?: string; + /** + * A terminal escape sequence (e.g. OSC 9 / OSC 777 desktop-notification) + * for Claude Code to emit on your behalf. Only notification/title OSCs + * (0, 1, 2, 9, 99, 777) and BEL are permitted; a value containing + * anything else is ignored as a whole. + */ + terminalSequence?: string; reason?: string; hookSpecificOutput?: | { @@ -1740,10 +2085,26 @@ type SyncHookJSONOutput = { | { hookEventName: "UserPromptSubmit"; additionalContext?: string; + sessionTitle?: string; + /** When decision is "block", omit the original prompt from the block message. */ + suppressOriginalPrompt?: boolean; + } + | { + hookEventName: "UserPromptExpansion"; + additionalContext?: string; } | { hookEventName: "SessionStart"; additionalContext?: string; + initialUserMessage?: string; + sessionTitle?: string; + watchPaths?: string[]; + /** + * Re-scan skill and command directories after SessionStart hooks + * complete, so skills installed by the hook are available in the + * same session. + */ + reloadSkills?: boolean; } | { hookEventName: "Setup"; @@ -1768,6 +2129,18 @@ type SyncHookJSONOutput = { hookEventName: "PostToolBatch"; additionalContext?: string; } + | { + hookEventName: "Stop"; + additionalContext?: string; + } + | { + hookEventName: "SubagentStop"; + additionalContext?: string; + } + | { + hookEventName: "PermissionDenied"; + retry?: boolean; + } | { hookEventName: "Notification"; additionalContext?: string; @@ -1785,6 +2158,33 @@ type SyncHookJSONOutput = { message?: string; interrupt?: boolean; }; + } + | { + hookEventName: "Elicitation"; + action?: "accept" | "decline" | "cancel"; + content?: Record; + } + | { + hookEventName: "ElicitationResult"; + action?: "accept" | "decline" | "cancel"; + content?: Record; + } + | { + hookEventName: "CwdChanged"; + watchPaths?: string[]; + } + | { + hookEventName: "FileChanged"; + watchPaths?: string[]; + } + | { + hookEventName: "WorktreeCreate"; + worktreePath: string; + } + | { + hookEventName: "MessageDisplay"; + /** Text displayed in place of the delta. Omit (or return the delta unchanged) to display the original. */ + displayContent?: string; }; }; ``` @@ -1795,16 +2195,21 @@ Documentation of input schemas for all built-in Claude Code tools. These types a ### `ToolInputSchemas` -Union of all tool input types, exported from `@anthropic-ai/claude-agent-sdk`. +Union of tool input types exported from `@anthropic-ai/claude-agent-sdk`; members include: ```typescript theme={null} type ToolInputSchemas = | AgentInput + | ArtifactInput | AskUserQuestionInput | BashInput - | TaskOutputInput + | CronCreateInput + | CronDeleteInput + | CronListInput + | EnterPlanModeInput | EnterWorktreeInput | ExitPlanModeInput + | ExitWorktreeInput | FileEditInput | FileReadInput | FileWriteInput @@ -1814,17 +2219,23 @@ type ToolInputSchemas = | McpInput | MonitorInput | NotebookEditInput + | ProjectsInput + | PushNotificationInput + | ReadMcpResourceDirInput | ReadMcpResourceInput - | SubscribeMcpResourceInput - | SubscribePollingInput + | RefreshMcpToolsInput + | RemoteTriggerInput + | REPLInput + | ReportFindingsInput + | ScheduleWakeupInput + | ShowOnboardingRolePickerInput | TaskCreateInput | TaskGetInput | TaskListInput + | TaskOutputInput | TaskStopInput | TaskUpdateInput | TodoWriteInput - | UnsubscribeMcpResourceInput - | UnsubscribePollingInput | WebFetchInput | WebSearchInput | WorkflowInput; @@ -1832,7 +2243,7 @@ type ToolInputSchemas = ### Agent -**Tool name:** `Agent` (previously `Task`, which is still accepted as an alias) +**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. {/* min-version: 2.1.212 */}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`. @@ -1846,7 +2257,8 @@ type AgentInput = { model?: "sonnet" | "opus" | "haiku" | "fable"; run_in_background?: boolean; name?: string; - mode?: "acceptEdits" | "auto" | "bypassPermissions" | "default" | "dontAsk" | "plan"; + 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 isolation?: "worktree" | "remote"; }; ``` @@ -1865,6 +2277,9 @@ type AskUserQuestionInput = { options: Array<{ label: string; description: string; preview?: string }>; multiSelect: boolean; }>; + answers?: Record; + annotations?: Record; + metadata?: { source?: string }; }; ``` @@ -1898,19 +2313,21 @@ type MonitorInput = { protocols?: string[]; }; description: string; - timeout_ms?: number; - persistent?: boolean; + timeout_ms: number; + persistent: boolean; }; ``` Runs a background source and delivers each event to Claude so it can react without polling: `command` runs a script and emits one event per stdout line, and `ws` opens a WebSocket and emits one event per text frame. Provide exactly one of `command` or `ws`. {/* min-version: 2.1.195 */}The `ws` source requires Claude Code v2.1.195 or later. -Set `persistent: true` for session-length watches such as log tails. When Monitor runs a command, it follows the same permission rules as Bash; a WebSocket watch prompts for approval separately. See the [Monitor tool reference](/docs/en/tools-reference#monitor-tool) for behavior and provider availability. +Set `persistent: true` for session-length watches such as log tails. When Monitor runs a command, it follows the same permission rules as Bash; a WebSocket watch prompts for approval separately. See the [Monitor tool reference](/docs/en/tools-reference#monitor-tool) for behavior and provider availability. The exported type marks `timeout_ms` and `persistent` as required because the schema fills in their defaults, 300000 and `false`; a call that omits them validates. ### TaskOutput **Tool name:** `TaskOutput` +`TaskOutput` is deprecated; prefer `Read` on the task's output file path. {/* min-version: 2.1.83 */}Deprecated since Claude Code v2.1.83. The schemas below remain valid for hooks and permission handlers that encounter the tool. + ```typescript theme={null} type TaskOutputInput = { task_id: string; @@ -1989,6 +2406,7 @@ type GrepInput = { type?: string; output_mode?: "content" | "files_with_matches" | "count"; "-i"?: boolean; + "-o"?: boolean; // print only the matched parts of each line; requires output_mode: "content" "-n"?: boolean; "-B"?: number; "-A"?: number; @@ -2067,8 +2485,10 @@ type WorkflowInput = { script?: string; name?: string; scriptPath?: string; - args?: unknown; + args?: unknown; // any JSON value; the published typings render this as an object map resumeFromRunId?: string; + title?: string; // ignored; the script's meta block sets the title + description?: string; // ignored; the script's meta block sets the description }; ``` @@ -2080,7 +2500,11 @@ Runs a [dynamic workflow](/docs/en/workflows): a script that orchestrates many s | `name` | `string` | Name of a built-in workflow or one saved in `.claude/workflows/`. Resolved to a script | | `scriptPath` | `string` | Path to a workflow script file on disk. Takes precedence over `script` and `name`. Every invocation persists its script and returns the path in the result, so you can edit that file and re-invoke with the same `scriptPath` to iterate | | `args` | `unknown` | Input value exposed to the script as the global `args`, for parameterized named workflows such as a research question or a list of file paths. Pass arrays and objects as actual JSON values, not as a JSON-encoded string | -| `resumeFromRunId` | `string` | Run ID of a prior `Workflow` invocation to resume. Completed `agent()` calls with unchanged inputs return cached results; only changed or new calls run live. Same session only | +| `resumeFromRunId` | `string` | Run ID of a prior `Workflow` invocation to resume. Completed `agent()` calls with unchanged inputs usually return cached results; the rest run live. [Resume after a pause](/docs/en/workflows#resume-after-a-pause) covers which completed calls re-run. Same session only | +| `title` | `string` | Ignored; the script's `meta` block sets the title | +| `description` | `string` | Ignored; the script's `meta` block sets the description | + +The schema accepts any JSON value for `args`; the exported type marks it `unknown`, but the published typings render the field as an object map. ### TodoWrite @@ -2170,6 +2594,7 @@ type ExitPlanModeInput = { tool: "Bash"; prompt: string; }>; + [k: string]: unknown; }; ``` @@ -2213,30 +2638,302 @@ type EnterWorktreeInput = { Creates and enters a temporary git worktree for isolated work. Pass `path` to switch into an existing worktree instead of creating a new one. On first entry the target must be a registered worktree of the current repository or, in a multi-repo workspace, of a repository nested inside it; from within a worktree session it must be under `.claude/worktrees/` of the session's repository. `name` and `path` are mutually exclusive. +### ExitWorktree + +**Tool name:** `ExitWorktree` + +```typescript theme={null} +type ExitWorktreeInput = { + action: "keep" | "remove"; + discard_changes?: boolean; +}; +``` + +Exits the current git worktree and returns to the original working directory. The `keep` action leaves the worktree and branch on disk, while `remove` deletes both. `discard_changes` must be `true` when removing a worktree that has uncommitted files or unmerged commits. + +### EnterPlanMode + +**Tool name:** `EnterPlanMode` + +```typescript theme={null} +type EnterPlanModeInput = {}; +``` + +Enters plan mode, where Claude researches and presents a plan before making changes. + +### CronCreate + +**Tool name:** `CronCreate` + +```typescript theme={null} +type CronCreateInput = { + cron: string; + prompt: string; + recurring?: boolean; + durable?: boolean; +}; +``` + +Schedules a prompt to run on a 5-field cron schedule in local time. Set `recurring` to `false` to fire once at the next match. Jobs are session-scoped by default: starting a fresh conversation clears them, and resuming with `--resume` or `--continue` restores jobs that haven't expired. See [Scheduled tasks](/docs/en/scheduled-tasks). + +Setting `durable` to `true` requests persistence to `.claude/scheduled_tasks.json` so the job survives restarts. Durable scheduling isn't available in every session: when it isn't, Claude Code accepts `durable: true` but creates the job session-only. Read the output's `durable` field to see whether the job persisted. + +### CronDelete + +**Tool name:** `CronDelete` + +```typescript theme={null} +type CronDeleteInput = { + id: string; +}; +``` + +Deletes a scheduled cron job by the ID returned from `CronCreate`. + +### CronList + +**Tool name:** `CronList` + +```typescript theme={null} +type CronListInput = {}; +``` + +Lists the scheduled cron jobs: durable jobs from `.claude/scheduled_tasks.json` and session-only jobs from the current session. + +### ScheduleWakeup + +**Tool name:** `ScheduleWakeup` + +```typescript theme={null} +type ScheduleWakeupInput = { + delaySeconds?: number; + reason?: string; + prompt?: string; + stop?: boolean; +}; +``` + +Schedules a one-shot wake-up that fires the given prompt after a delay. This tool backs the self-paced `/loop` command. The runtime clamps `delaySeconds` to between 60 and 3600 seconds. The `delaySeconds`, `reason`, and `prompt` fields are required unless `stop` is true. {/* min-version: 2.1.202 */}Setting `stop: true` cancels the pending wakeup and ends the self-paced `/loop`. The `stop` field requires Claude Code v2.1.202 or later. See the [ScheduleWakeup row in the tools reference](/docs/en/tools-reference) for provider availability; it isn't available on Amazon Bedrock, Claude Platform on AWS, Google Cloud's Agent Platform, or Microsoft Foundry. + +### RemoteTrigger + +**Tool name:** `RemoteTrigger` + +```typescript theme={null} +type RemoteTriggerInput = { + action: "list" | "get" | "create" | "update" | "run"; + trigger_id?: string; + body?: { + [k: string]: unknown; + }; +}; +``` + +Manages [Routines](/docs/en/routines), the scheduled and triggered Claude Code runs hosted on Anthropic-managed cloud infrastructure. This tool backs the `/schedule` command. `trigger_id` is required for the `get`, `update`, and `run` actions. `body` is required for `create` and `update`, and optional for `run`. + +This tool is available only when the session is authenticated with a claude.ai account on a plan with Routines enabled. + +### PushNotification + +**Tool name:** `PushNotification` + +```typescript theme={null} +type PushNotificationInput = { + message: string; + status: "proactive"; +}; +``` + +Sends a proactive push notification to the user. Keep `message` under 200 characters because mobile operating systems truncate longer text. See the [PushNotification row in the tools reference](/docs/en/tools-reference) for provider availability; push delivery runs through Anthropic-hosted infrastructure that isn't accessible from Amazon Bedrock, Claude Platform on AWS, Google Cloud's Agent Platform, or Microsoft Foundry. + +### REPL + +**Tool name:** `REPL` + +```typescript theme={null} +type REPLInput = { + code: string; + description?: string; + timeout?: number; +}; +``` + +Executes JavaScript code in a persistent REPL. State persists across calls and top-level await is supported. `timeout` is in milliseconds, with a default of 30000 and a maximum of 600000. + +The types are exported, but the tool is off in SDK sessions unless you set `CLAUDE_CODE_REPL=1` in the [`env` option](#options). It also requires the Bun-based `claude` executable that the native installer provides. + +### ReportFindings + +**Tool name:** `ReportFindings` + +```typescript theme={null} +type ReportFindingsInput = { + level?: "low" | "medium" | "high" | "xhigh" | "max"; + findings: Array<{ + file: string; + line?: number; + summary: string; + failure_scenario: string; + short_summary?: string; + category?: string; + verdict?: "CONFIRMED" | "PLAUSIBLE"; + outcome?: "fixed" | "skipped" | "no_change_needed"; + }>; +}; +``` + +Reports code-review findings as a structured list so Claude Code can render them instead of printing them as text. `level` is the effort level the review ran at. Findings are ordered most-severe first, with at most 32 per call, and the array is empty when none survived. Requires Claude Code v2.1.196 or later. + +Each finding carries these fields: + +* `file`: repo-relative path the finding is in. The optional `line` is the 1-indexed line it anchors to. +* `summary`: one-sentence statement of the defect. `failure_scenario` describes the concrete inputs and state that lead to the wrong output or crash. +* `short_summary`: optional compressed label of at most 60 characters for compact display. {/* min-version: 2.1.212 */}Requires Claude Code v2.1.212 or later. +* `category`: optional short kebab-case slug of the finding type, such as `correctness` or `test-coverage`. {/* min-version: 2.1.199 */}Requires Claude Code v2.1.199 or later. +* `verdict`: set when a verify pass ran; absent on inline-only reviews. +* `outcome`: set only when re-reporting after applying fixes. + +### Artifact + +**Tool name:** `Artifact` + +```typescript theme={null} +type ArtifactInput = { + action?: "publish" | "list"; + file_path?: string; + favicon?: string; + limit?: number; + scope?: "mine" | "shared" | "all"; + title?: string; + description?: string; + label?: string; + url?: string; + force?: boolean; +}; +``` + +Publishes a local `.html` or `.md` file as a hosted artifact page, or lists the user's published artifacts. Omit `action` or pass `"publish"` to publish `file_path`, which is required for the publish action along with `favicon`, one or two emoji for the browser tab. `title` names the published page in the browser tab and gallery when the HTML file has no `` tag. `url` targets an existing artifact to update in place instead of minting a new one, and `force` is a last-resort overwrite that discards another session's published version; on a 409 conflict the normal fix is to re-read, merge, and publish again rather than pass `force`. + +Pass `"list"` to enumerate the user's published artifacts; only `limit` and `scope` may accompany it. `scope` defaults to `"mine"`, which lists artifacts the user owns; `"shared"` lists artifacts other people shared with the user, and `"all"` lists both. + +The types are exported, but the tool is off by default in Agent SDK sessions. Publishing also requires every condition in the [artifacts availability table](/docs/en/artifacts#availability), which sessions authenticated with an API key don't meet. + +### Projects + +**Tool name:** `Projects` + +```typescript theme={null} +type ProjectsInput = { + method: + | "project_info" + | "project_read" + | "project_search" + | "project_write" + | "project_delete"; + path?: string; + content?: string; + local_path?: string; + present_to_user?: boolean; + query?: string; + n?: number; +}; +``` + +Reads and writes the claude.ai Project attached to the session. Dispatches on `method`: + +* `project_info`: returns project metadata and the doc list. +* `project_read`: reads one doc by `path`. +* `project_search`: queries the project's knowledge base with `query`. `n` caps the hits and defaults to 5. +* `project_write`: creates or replaces a doc at `path` from exactly one of `content`, which carries inline text, or `local_path`, which names a file inside the working directory. `present_to_user: true` marks the written doc as the deliverable the user needs to see. +* `project_delete`: deletes a doc by `path`. + +### ReadMcpResourceDir + +**Tool name:** `ReadMcpResourceDirTool` + +```typescript theme={null} +type ReadMcpResourceDirInput = { + server: string; + uri: string; +}; +``` + +Lists the direct children of a directory resource on an MCP server. Only usable against a server that has declared support for directory listing; the listing isn't recursive. Directory listing isn't enabled in every session: when it's off, the call returns an empty `resources` list and the `error` field reports that directory listing isn't enabled. + +### RefreshMcpTools + +**Tool name:** `RefreshMcpTools` + +```typescript theme={null} +type RefreshMcpToolsInput = { + server?: string; // refresh only this server; omit to refresh all connected servers +}; +``` + +Re-queries the tool list of connected MCP servers and applies any changes. The types are exported, but Claude Code registers the tool only when you set `CLAUDE_CODE_ENABLE_REFRESH_MCP_TOOLS=1` in the [`env` option](#options), and only in sessions with at least one MCP server. {/* min-version: 2.1.211 */}Requires Claude Code v2.1.211 or later. + +### ShowOnboardingRolePicker + +**Tool name:** `ShowOnboardingRolePicker` + +```typescript theme={null} +type ShowOnboardingRolePickerInput = {}; +``` + +Renders a clickable role-picker chip row during Cowork onboarding so the user can pick their role and get a matching plugin installed. Takes no arguments; the role list is defined by the client. The call blocks until the user responds. + +### McpInput + +**Tool name:** dynamic MCP tool names of the form `mcp__<server>__<tool>` + +```typescript theme={null} +type McpInput = { + [k: string]: unknown; +}; +``` + +MCP tool arguments are an open object: each server defines its own parameters, so the type places no constraints on field names or values. Consult the server's own tool schema for the fields a specific tool accepts. + ## Tool Output Types Documentation of output schemas for all built-in Claude Code tools. These types are exported from `@anthropic-ai/claude-agent-sdk` and represent the actual response data returned by each tool. ### `ToolOutputSchemas` -Union of all tool output types. +Union of tool output types exported from `@anthropic-ai/claude-agent-sdk`; members include: ```typescript theme={null} type ToolOutputSchemas = | AgentOutput + | ArtifactOutput | AskUserQuestionOutput | BashOutput + | CronCreateOutput + | CronDeleteOutput + | CronListOutput + | EnterPlanModeOutput | EnterWorktreeOutput | ExitPlanModeOutput + | ExitWorktreeOutput | FileEditOutput | FileReadOutput | FileWriteOutput | GlobOutput | GrepOutput | ListMcpResourcesOutput + | McpOutput | MonitorOutput | NotebookEditOutput + | ProjectsOutput + | PushNotificationOutput + | ReadMcpResourceDirOutput | ReadMcpResourceOutput + | RefreshMcpToolsOutput + | RemoteTriggerOutput + | REPLOutput + | ReportFindingsOutput + | ScheduleWakeupOutput + | ShowOnboardingRolePickerOutput | TaskCreateOutput | TaskGetOutput | TaskListOutput @@ -2250,7 +2947,7 @@ type ToolOutputSchemas = ### Agent -**Tool name:** `Agent` (previously `Task`, which is still accepted as an alias) +**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. ```typescript theme={null} type AgentOutput = @@ -2319,7 +3016,7 @@ type AgentOutput = Returns the result from the subagent. Discriminated on the `status` field: `"completed"` for finished tasks, `"async_launched"` for background tasks, and `"remote_launched"` for tasks Claude Code dispatched to a remote cloud session, where `sessionUrl` links to that session and `taskId` identifies it. -The `resolvedModel` field on the `completed` and `async_launched` variants names the model the subagent actually ran on, which can differ from the requested `model` input when [`availableModels`](/docs/en/model-config#restrict-model-selection) or another override applies. {/* min-version: 2.1.174 */}This field requires Claude Code v2.1.174 or later. {/* min-version: 2.1.212 */}On `async_launched`, it names the model in use when the task moved to the background. +On the `completed` variant, `resolvedModel` names the model the subagent started on, which can differ from the requested `model` input when [`availableModels`](/docs/en/model-config#restrict-model-selection) or another override applies. {/* min-version: 2.1.174 */}This field requires Claude Code v2.1.174 or later. {/* min-version: 2.1.212 */}On `async_launched`, it names the model in use when the task moved to the background. `modelsUsed` lists the models the subagent used, in order. The field is present only when a mid-run swap happened, and a model appears again when the run swapped back to it. On `async_launched`, the list covers the models used before backgrounding. {/* min-version: 2.1.212 */}Both `modelsUsed` and the backgrounding behavior of `resolvedModel` require Claude Code v2.1.212 or later. @@ -2341,6 +3038,8 @@ type AskUserQuestionOutput = { }>; answers: Record<string, string>; response?: string; + annotations?: Record<string, { preview?: string; notes?: string }>; + afkTimeoutMs?: number; }; ``` @@ -2363,9 +3062,22 @@ type BashOutput = { backgroundCwdHint?: string; dangerouslyDisableSandbox?: boolean; returnCodeInterpretation?: string; + noOutputExpected?: boolean; structuredContent?: unknown[]; persistedOutputPath?: string; persistedOutputSize?: number; + staleReadFileStateHint?: string; + ghRateLimitHint?: string; + gitOperation?: { + commit?: { sha: string; kind: "committed" | "amended" | "cherry-picked" }; + push?: { branch: string }; + branch?: { ref: string; action: "merged" | "rebased" }; + pr?: { + number: number; + url?: string; + action: "created" | "edited" | "merged" | "commented" | "closed" | "ready" | "draft" | "auto-merge-enabled" | "auto-merge-disabled"; + }; + }; }; ``` @@ -2396,7 +3108,7 @@ type FileEditOutput = { filePath: string; oldString: string; newString: string; - originalFile: string; + originalFile: string | null; structuredPatch: Array<{ oldStart: number; oldLines: number; @@ -2413,6 +3125,7 @@ type FileEditOutput = { deletions: number; changes: number; patch: string; + repository?: string | null; }; }; ``` @@ -2433,6 +3146,8 @@ type FileReadOutput = numLines: number; startLine: number; totalLines: number; + /** True when a whole-file read was auto-paginated because it exceeded the token cap (the content is a partial first page). */ + truncatedByTokenCap?: boolean; }; } | { @@ -2472,6 +3187,14 @@ type FileReadOutput = count: number; outputDir: string; }; + } + | { + type: "file_unchanged"; + file: { + filePath: string; + }; + /** Set when the dedup matched a startup-seeded entry (CLAUDE.md / nested memory) rather than a prior Read tool_result. */ + source?: "seeded"; }; ``` @@ -2501,7 +3224,9 @@ type FileWriteOutput = { deletions: number; changes: number; patch: string; + repository?: string | null; }; + userModified?: boolean; }; ``` @@ -2571,6 +3296,7 @@ Returns confirmation after stopping the background task. ```typescript theme={null} type NotebookEditOutput = { new_source: string; + old_source?: string; cell_id?: string; cell_type: "code" | "markdown"; language: string; @@ -2596,6 +3322,10 @@ type WebFetchOutput = { result: string; durationMs: number; url: string; + artifactRead?: { + slug: string; + ver?: string; + }; }; ``` @@ -2616,6 +3346,7 @@ type WebSearchOutput = { | string >; durationSeconds: number; + searchCount?: number; }; ``` @@ -2627,27 +3358,35 @@ Returns search results from the web. ```typescript theme={null} type WorkflowOutput = { - status: "async_launched"; + status: "async_launched" | "remote_launched"; taskId: string; + taskType?: "local_workflow" | "remote_agent"; + workflowName?: string; runId?: string; summary?: string; transcriptDir?: string; scriptPath?: string; + sessionUrl?: string; // set when the workflow launched as a remote session + warning?: string; error?: string; }; ``` Returns immediately after the tool accepts the invocation. The final result arrives later as a task completion. Check `error` before treating the run as started: a script that fails its syntax check returns `status: "async_launched"` with `error` set, and never runs. -| Field | Type | Description | -| --------------- | ------------------ | ------------------------------------------------------------------------------------------------------------------------------- | -| `status` | `"async_launched"` | The tool accepted the invocation. This is the only value the field takes | -| `taskId` | `string` | Background task identifier for the run | -| `runId` | `string` | Workflow run identifier to pass as `resumeFromRunId` on a later invocation | -| `summary` | `string` | One-line description of what the workflow does | -| `transcriptDir` | `string` | Directory where subagent transcripts are written during execution | -| `scriptPath` | `string` | Path to the persisted workflow script for this run. Edit it and pass back as `scriptPath` to rerun without resending the script | -| `error` | `string` | Set when the script fails its syntax check. When present, the run did not start despite the `async_launched` status | +| Field | Type | Description | +| --------------- | --------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `status` | `"async_launched" \| "remote_launched"` | The tool accepted the invocation. `"async_launched"` for in-process runs, `"remote_launched"` for runs dispatched to a remote session instead of running in-process | +| `taskId` | `string` | Background task identifier for the run | +| `taskType` | `"local_workflow" \| "remote_agent"` | Task type of the registered background task, matching the `status` arm | +| `workflowName` | `string` | The `meta.name` from the workflow script | +| `runId` | `string` | Workflow run identifier to pass as `resumeFromRunId` on a later invocation. Absent for `remote_launched` runs, where the cloud session URL is the resume handle | +| `summary` | `string` | One-line description of what the workflow does | +| `transcriptDir` | `string` | Directory where subagent transcripts are written during execution | +| `scriptPath` | `string` | Path to the persisted workflow script for this run. Edit it and pass back as `scriptPath` to rerun without resending the script | +| `sessionUrl` | `string` | Cloud session URL, set when `status` is `"remote_launched"` | +| `warning` | `string` | Non-blocking heads-up, such as local git state diverging from the pushed branch a cloud session will clone | +| `error` | `string` | Set when the script fails its syntax check. When present, the run did not start despite the launched status | ### TodoWrite @@ -2755,6 +3494,7 @@ type ExitPlanModeOutput = { isAgent: boolean; filePath?: string; hasTaskTool?: boolean; + planWasEdited?: boolean; awaitingLeaderApproval?: boolean; requestId?: string; }; @@ -2788,7 +3528,9 @@ type ReadMcpResourceOutput = { uri: string; mimeType?: string; text?: string; + blobSavedTo?: string; }>; + error?: string; }; ``` @@ -2808,6 +3550,340 @@ type EnterWorktreeOutput = { Returns information about the git worktree. +### ExitWorktree + +**Tool name:** `ExitWorktree` + +```typescript theme={null} +type ExitWorktreeOutput = { + action: "keep" | "remove"; + originalCwd: string; + worktreePath: string; + worktreeBranch?: string; + tmuxSessionName?: string; + discardedFiles?: number; + discardedCommits?: number; + message: string; +}; +``` + +Returns the action taken and details about the worktree that was exited. + +### EnterPlanMode + +**Tool name:** `EnterPlanMode` + +```typescript theme={null} +type EnterPlanModeOutput = { + message: string; +}; +``` + +Returns a confirmation that plan mode was entered. + +### CronCreate + +**Tool name:** `CronCreate` + +```typescript theme={null} +type CronCreateOutput = { + id: string; + humanSchedule: string; + recurring: boolean; + durable?: boolean; // true when persisted to .claude/scheduled_tasks.json; false when session-only +}; +``` + +Returns the job ID and a human-readable description of the schedule. + +### CronDelete + +**Tool name:** `CronDelete` + +```typescript theme={null} +type CronDeleteOutput = { + id: string; +}; +``` + +Returns the ID of the deleted job. + +### CronList + +**Tool name:** `CronList` + +```typescript theme={null} +type CronListOutput = { + jobs: { + id: string; + cron: string; + humanSchedule: string; + prompt: string; + recurring?: boolean; + durable?: boolean; + }[]; +}; +``` + +Returns the scheduled cron jobs: durable jobs from `.claude/scheduled_tasks.json` and session-only jobs from the current session. A session-only job carries `durable: false`; jobs read from disk omit the field. + +### ScheduleWakeup + +**Tool name:** `ScheduleWakeup` + +```typescript theme={null} +type ScheduleWakeupOutput = { + scheduledFor: number; + clampedDelaySeconds: number; + wasClamped: boolean; + stopped?: boolean; + cancelledWakeups?: number; +}; +``` + +Returns when the wake-up will fire as an epoch millisecond timestamp, the delay actually used, and whether the requested delay was clamped. {/* min-version: 2.1.202 */}The `stopped` field is `true` when the call ended the loop with `stop: true`. It requires Claude Code v2.1.202 or later. {/* min-version: 2.1.206 */}The `cancelledWakeups` field counts how many pending wakeups a `stop: true` call cancelled. A value of 0 means nothing was pending, and a recurring `/loop` cron isn't cancelled by `stop: true`. It requires Claude Code v2.1.206 or later. + +### RemoteTrigger + +**Tool name:** `RemoteTrigger` + +```typescript theme={null} +type RemoteTriggerOutput = { + status: number; + json: string; + summary?: string; +}; +``` + +Returns the API response status and body for the trigger operation. + +### PushNotification + +**Tool name:** `PushNotification` + +```typescript theme={null} +type PushNotificationOutput = { + message: string; + pushSent?: boolean; + localSent?: boolean; + disabledReason?: "config_off" | "user_present" | "no_transport"; + sentAt?: string; +}; +``` + +Returns delivery details, including whether a push or local notification was sent and why delivery was skipped. + +### REPL + +**Tool name:** `REPL` + +```typescript theme={null} +type REPLOutput = { + code: string; + result: { + [k: string]: unknown; + }; + stdout: string; + stderr: string; + error?: string; + registeredTools?: string[]; + images?: { + base64: string; + mediaType: string; + }[]; + documents?: { + base64: string; + }[]; +}; +``` + +Returns the execution result, captured console output, and any images or documents surfaced by inner `Read` calls. + +### ReportFindings + +**Tool name:** `ReportFindings` + +```typescript theme={null} +type ReportFindingsOutput = { + count: number; + level?: "low" | "medium" | "high" | "xhigh" | "max"; + findings: Array<{ + file: string; + line?: number; + summary: string; + failure_scenario: string; + short_summary?: string; + category?: string; + verdict?: "CONFIRMED" | "PLAUSIBLE"; + outcome?: "fixed" | "skipped" | "no_change_needed"; + }>; +}; +``` + +Returns the number of findings reported, the effort level the review ran at, and the findings echoed back for the result body. Requires Claude Code v2.1.196 or later. {/* min-version: 2.1.212 */}The echoed `short_summary` field requires Claude Code v2.1.212 or later. + +### Artifact + +**Tool name:** `Artifact` + +```typescript theme={null} +type ArtifactOutput = + | { + url: string; + path: string; + title?: string; + version?: string; + capabilities?: unknown; + stored?: { + contract: string; + capabilities?: Record<string, unknown>; + }; + warnings?: string[]; + contract?: string; + updated?: boolean; + liveSubscription?: string; + } + | { + artifacts: Array<{ + title: string; + url: string; + updatedAt?: string; + rel?: "mine" | "shared"; + }>; + truncated?: boolean; + scope?: "shared" | "all"; + }; +``` + +Returns the published page's `url` and the local `path` that was published for the publish action, with `updated` set to true when the publish redeployed an existing artifact, and `warnings` carrying any publish-time advisories. The list action returns the `artifacts` rows instead, with `truncated` set when more artifacts exist than the requested limit. On listings whose scope isn't `"mine"`, each row carries `rel` marking whether the user owns the artifact or it was shared with them, and the output's `scope` records which non-default scope produced the listing; both are absent on default listings. + +### Projects + +**Tool name:** `Projects` + +```typescript theme={null} +type ProjectsOutput = + | { + method: "project_info"; + notice?: string; + name: string; + description: string; + instructions: string; + docs: Array<{ path: string; created_at: string | null }>; + files?: Array<{ + path: string; + file_kind: string; + created_at: string | null; + }>; + sync_sources?: Array<{ + type: string | null; + config: Record<string, unknown>; + }>; + knowledge: { + knowledge_size: number; + max_knowledge_size: number; + }; + } + | { + method: "project_read"; + notice?: string; + path: string; + file_kind?: string; + content?: string; + local_file?: string; + created_at: string | null; + } + | { + method: "project_search"; + notice?: string; + rag: boolean; + hits?: Array<{ name?: string; doc_uuid?: string; text?: string }>; + docs?: string[]; + } + | { + method: "project_write"; + notice?: string; + path: string; + doc_uuid: string; + replaced: boolean; + present_to_user?: boolean; + local_path?: string; + } + | { + method: "project_delete"; + notice?: string; + path: string; + deleted: boolean; + }; +``` + +Discriminated on the `method` field, mirroring the input. `project_read` returns small text docs inline in `content` and writes larger docs to a `local_file` path instead; `project_search` returns RAG `hits` with `rag: true` when the project's index is available and falls back to a `docs` path list otherwise. + +### ReadMcpResourceDir + +**Tool name:** `ReadMcpResourceDirTool` + +```typescript theme={null} +type ReadMcpResourceDirOutput = { + resources: Array<{ + uri: string; + name: string; + mimeType?: string; + }>; + error?: string; +}; +``` + +Returns the direct children of the directory resource. Subdirectories appear with mimeType `"inode/directory"`; `error` carries a human-readable message when the server couldn't list the directory. + +### RefreshMcpTools + +**Tool name:** `RefreshMcpTools` + +```typescript theme={null} +type RefreshMcpToolsOutput = Array<{ + server: string; + status: "refreshed" | "error" | "not_connected"; + toolCount?: number; // tools now available from this server + added?: string[]; // tool names this refresh added + removed?: string[]; // tool names this refresh removed + error?: string; // why the refresh failed or the server was unavailable +}>; +``` + +Returns one entry per server: `refreshed` means the re-queried tool list was applied, `error` means the re-query failed and the previous tool set was kept, and `not_connected` means the server has no live connection to query. + +### ShowOnboardingRolePicker + +**Tool name:** `ShowOnboardingRolePicker` + +```typescript theme={null} +type ShowOnboardingRolePickerOutput = { + role?: string; + dismissed?: boolean; +}; +``` + +Returns the user's selection: `role` when they picked a role chip or typed one, and `dismissed: true` when they closed the picker. An empty object means the user approved the call without picking a role. + +### McpOutput + +**Tool name:** dynamic MCP tool names of the form `mcp__<server>__<tool>` + +```typescript theme={null} +type McpOutput = + | string + | { + type: string; + [k: string]: unknown; + }[] + | { + [k: string]: unknown; + }; +``` + +MCP tool results are returned as a string or an array of content blocks, depending on the server. The trailing plain-object branch in the exported type is a schema-generation artifact: the SDK doesn't return a bare object, because a server's structured output is serialized to a JSON string before being returned. At runtime the value may also be `undefined`, although the exported type doesn't model this. + ## Permission Types ### `PermissionUpdate` @@ -2885,6 +3961,10 @@ type PermissionRuleValue = { type ApiKeySource = "user" | "project" | "org" | "temporary" | "oauth"; ``` +<Note> + At runtime, the `apiKeySource` field on the [`SDKSystemMessage`](#sdksystemmessage) init message can also be the string `"none"` when no API key is in use, for example when the session authenticates with an OAuth token. Handle values outside this union defensively. +</Note> + ### `SdkBeta` Available beta features that can be enabled via the `betas` option. See [Beta headers](https://platform.claude.com/docs/en/api/beta-headers) for more information. @@ -2894,7 +3974,7 @@ type SdkBeta = "context-1m-2025-08-07"; ``` <Warning> - The `context-1m-2025-08-07` beta is retired as of April 30, 2026. Passing this value with Claude Sonnet 4.5 or Sonnet 4 has no effect, and requests that exceed the standard 200k-token context window return an error. To use a 1M-token context window, migrate to [Claude Sonnet 5, Claude Sonnet 4.6, Claude Opus 4.6, Claude Opus 4.7, or Claude Opus 4.8](https://platform.claude.com/docs/en/about-claude/models/overview), which include 1M context at standard pricing with no beta header required. + The `context-1m-2025-08-07` beta is retired as of April 30, 2026. Passing this value with Claude Sonnet 4.5 or Sonnet 4 has no effect, and requests that exceed the standard 200k-token context window return an error. To use a 1M-token context window, migrate to [Claude Opus 5, Claude Sonnet 5, Claude Sonnet 4.6, Claude Opus 4.6, Claude Opus 4.7, or Claude Opus 4.8](https://platform.claude.com/docs/en/about-claude/models/overview), which include 1M context at standard pricing with no beta header required. </Warning> ### `SlashCommand` @@ -3028,9 +4108,15 @@ type ModelUsage = { costUSD: number; contextWindow: number; maxOutputTokens: number; + canonicalModel?: string; + provider?: string; }; ``` +{/* min-version: 2.1.218 */}The `canonicalModel` and `provider` fields require Claude Code v2.1.218 or later. `canonicalModel` is the canonical model ID that the pricing lookup uses; it can differ from the raw model string that keys the entry, for example when that string is a provider-specific ID or an alias. + +`provider` names the API backend that served the model, such as `firstParty`, `bedrock`, `vertex`, `foundry`, `anthropicAws`, `mantle`, or `gateway`. + ### `ConfigScope` ```typescript theme={null} @@ -3099,7 +4185,7 @@ type ThinkingConfig = | { type: "disabled" }; // No extended thinking ``` -The optional `display` field controls whether thinking text is returned `"summarized"` or `"omitted"`. On Claude Opus 4.7 and later, the API default is `"omitted"`, so set `"summarized"` to receive thinking content in `thinking` blocks. +The optional `display` field controls whether thinking text is returned `"summarized"` or `"omitted"`. On Claude Opus 4.7 and later, the API default is `"omitted"`, so set `"summarized"` to receive thinking content in `thinking` blocks. Claude Code doesn't send `display` to Amazon Bedrock or Google Cloud's Agent Platform, so on those providers Opus 4.7 and later return empty `thinking` blocks even when you set `display` to `"summarized"`. ### `SpawnedProcess` @@ -3173,9 +4259,12 @@ type RewindFilesResult = { filesChanged?: string[]; insertions?: number; deletions?: number; + skippedLinks?: number; }; ``` +{/* min-version: 2.1.216 */}`skippedLinks` counts the tracked paths the rewind refused to restore or delete for link safety: a symlink, hard link, or other non-regular file at the tracked path, a parent directory that no longer resolves to where it pointed when the checkpoint was taken, or a backup that couldn't be read safely. The field requires Claude Code v2.1.216 or later. A preview call with `rewindFiles(userMessageId, { dryRun: true })` never sets it. + ### `SDKStatusMessage` Status update message (e.g., compacting). @@ -3298,11 +4387,31 @@ type SDKToolProgressMessage = { parent_tool_use_id: string | null; elapsed_time_seconds: number; task_id?: string; + heartbeat?: boolean; + subagent_type?: string; + subagent_retry?: { + agent_id: string; + attempt: number; + max_retries: number; + retry_delay_ms: number; + error_status: number | null; + error_category: string; + }; uuid: UUID; session_id: string; }; ``` +While a tool call runs in the main conversation, Claude Code emits a `tool_progress` message every 30 seconds with `heartbeat: true`. Each heartbeat carries the tool name and elapsed seconds, so you can distinguish a long-running call from a stalled session. Claude Code doesn't emit heartbeats for the Agent tool, whose subagents stream their own progress, or for tool calls inside a subagent. The `heartbeat` field requires Agent SDK v0.3.214 or later. + +On `tool_progress` messages for the Agent tool, `subagent_type` names the running subagent type, such as `general-purpose`. `subagent_retry` is present while that subagent waits out an API error backoff, such as a rate limit or overload, with one message per retry attempt. Both fields require Agent SDK v0.3.214 or later. + +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 without the field, or when the tool's result message 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`. + ### `SDKAuthStatusMessage` Emitted during authentication flows. @@ -3476,7 +4585,7 @@ type SDKLocalCommandOutputMessage = { ### `SDKCommandsChangedMessage` -Emitted when the set of available commands changes mid-session, such as when skills are discovered as the agent enters a subdirectory. The `commands` array is the full updated list, so replace any cached command list with this payload. Calling `supportedCommands()` again is not equivalent: that method returns the snapshot captured at initialization and does not reflect mid-session changes. +Emitted when the set of available commands changes mid-session, such as when Claude Code discovers skills as the agent enters a subdirectory. The `commands` array is the full updated list, so replace any cached command list with this payload. {/* min-version: agent-sdk@0.3.216 */}Calling [`supportedCommands()`](#query-object) after this message returns the same updated list, because the method tracks the latest push; this requires Agent SDK v0.3.216 or later. In earlier SDK versions, `supportedCommands()` returns the snapshot captured at initialization and never reflects mid-session changes. ```typescript theme={null} type SDKCommandsChangedMessage = { @@ -3603,6 +4712,7 @@ Network-specific configuration for sandbox mode. These settings apply to sandbox type SandboxNetworkConfig = { allowedDomains?: string[]; deniedDomains?: string[]; + strictAllowlist?: boolean; allowManagedDomainsOnly?: boolean; allowLocalBinding?: boolean; allowUnixSockets?: string[]; @@ -3612,16 +4722,17 @@ type SandboxNetworkConfig = { }; ``` -| Property | Type | Default | Description | -| :------------------------ | :--------- | :---------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `allowedDomains` | `string[]` | `[]` | Domain names that sandboxed processes can access | -| `deniedDomains` | `string[]` | `[]` | Domain names that sandboxed processes cannot access. Takes precedence over `allowedDomains` | -| `allowManagedDomainsOnly` | `boolean` | `false` | Managed-settings only. When set in [managed settings](/docs/en/permissions#managed-settings), only `allowedDomains` entries from managed settings are honored and entries from user, project, or local settings are ignored. Has no effect when set via SDK options | -| `allowLocalBinding` | `boolean` | `false` | Allow processes to bind to local ports (e.g., for dev servers) | -| `allowUnixSockets` | `string[]` | `[]` | Unix socket paths that processes can access (e.g., Docker socket) | -| `allowAllUnixSockets` | `boolean` | `false` | Allow access to all Unix sockets | -| `httpProxyPort` | `number` | `undefined` | HTTP proxy port for network requests | -| `socksProxyPort` | `number` | `undefined` | SOCKS proxy port for network requests | +| Property | Type | Default | Description | +| :------------------------ | :--------- | :---------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `allowedDomains` | `string[]` | `[]` | Domain names that sandboxed processes can access | +| `deniedDomains` | `string[]` | `[]` | Domain names that sandboxed processes cannot access. Takes precedence over `allowedDomains` | +| `strictAllowlist` | `boolean` | `false` | {/* min-version: 2.1.219 */}Deny sandboxed commands access to hosts not in `allowedDomains` instead of prompting. Enforced for sandboxed commands only; in-process tools such as WebFetch aren't gated by it. Only honored from user, managed, or CLI `--settings` settings; project settings are ignored. Requires Claude Code v2.1.219 or later | +| `allowManagedDomainsOnly` | `boolean` | `false` | Managed-settings only. When set in [managed settings](/docs/en/permissions#managed-settings), only `allowedDomains` entries from managed settings are honored and entries from user, project, or local settings are ignored. Has no effect when set via SDK options | +| `allowLocalBinding` | `boolean` | `false` | Allow processes to bind to local ports (e.g., for dev servers) | +| `allowUnixSockets` | `string[]` | `[]` | Unix socket paths that processes can access (e.g., Docker socket) | +| `allowAllUnixSockets` | `boolean` | `false` | Allow access to all Unix sockets | +| `httpProxyPort` | `number` | `undefined` | HTTP proxy port for network requests | +| `socksProxyPort` | `number` | `undefined` | SOCKS proxy port for network requests | <Note> The built-in sandbox proxy enforces `allowedDomains` based on the requested hostname and does not terminate or inspect TLS traffic, so techniques such as [domain fronting](https://en.wikipedia.org/wiki/Domain_fronting) can potentially bypass it. See [Sandboxing security limitations](/docs/en/sandboxing#security-limitations) for details and [Secure deployment](/docs/en/agent-sdk/secure-deployment#traffic-forwarding) for configuring a TLS-terminating proxy. diff --git a/content/en/docs/claude-code/agent-sdk/user-input.md b/content/en/docs/claude-code/agent-sdk/user-input.md index 7563ae939..4ec898c83 100644 --- a/content/en/docs/claude-code/agent-sdk/user-input.md +++ b/content/en/docs/claude-code/agent-sdk/user-input.md @@ -22,6 +22,9 @@ Pass a `canUseTool` callback in your query options. The callback fires whenever <CodeGroup> ```python Python theme={null} + from claude_agent_sdk import ClaudeAgentOptions + + async def handle_tool_request(tool_name, input_data, context): # Prompt user and return allow or deny ... @@ -243,6 +246,8 @@ Beyond allowing or denying, you can modify the tool's input or provide context t * **Suggest alternative**: block but guide Claude toward what the user wants instead * **Redirect entirely**: use [streaming input](/docs/en/agent-sdk/streaming-vs-single-mode) to send Claude a completely new instruction +The `ask_user` and `askUser` helpers in the following snippets stand in for your application's own prompt UI. + <Tabs> <Tab title="Approve"> The user approves the action as-is. Pass through the `input` from your callback unchanged and the tool executes exactly as Claude requested. diff --git a/content/en/docs/claude-code/agent-teams.md b/content/en/docs/claude-code/agent-teams.md index e4b5551a0..341047452 100644 --- a/content/en/docs/claude-code/agent-teams.md +++ b/content/en/docs/claude-code/agent-teams.md @@ -67,7 +67,7 @@ After enabling agent teams, describe the task and the teammates you want in natu This example works well because the three roles are independent and can explore the problem without waiting on each other: -```text theme={null} +```text wrap theme={null} I'm designing a CLI tool that helps developers track TODO comments across their codebase. Spawn three teammates to explore this from different angles: one on UX, one on technical architecture, one playing devil's advocate. @@ -133,7 +133,7 @@ Split-pane mode requires either [tmux](https://github.com/tmux/tmux/wiki) or iTe Claude decides the number of teammates to spawn based on your task, or you can specify exactly what you want: -```text theme={null} +```text wrap theme={null} Spawn 4 teammates to refactor these modules in parallel. Use Sonnet for each teammate. ``` @@ -146,7 +146,7 @@ Teammates don't inherit the lead's `/model` selection by default. To change the For complex or risky tasks, you can require teammates to plan before implementing. The teammate works in read-only plan mode until the lead approves their approach: -```text theme={null} +```text wrap theme={null} Spawn an architect teammate to refactor the authentication module. Require plan approval before they make any changes. ``` @@ -181,7 +181,7 @@ Task claiming uses file locking to prevent race conditions when multiple teammat To gracefully end a teammate's session, refer to it by name. For example, with a teammate named researcher: -```text theme={null} +```text wrap theme={null} Ask the researcher teammate to shut down ``` @@ -238,7 +238,7 @@ The team config holds runtime state such as session IDs and tmux pane IDs, so do To define reusable teammate roles, use [subagent definitions](#use-subagent-definitions-for-teammates) instead. -The team config contains a `members` array with each member's name and agent ID. The lead's entry always carries the agent type `team-lead`; a teammate's entry includes an agent type only when the teammate was spawned from a [subagent definition](#use-subagent-definitions-for-teammates). Teammates can read this file to discover other team members. +The team config contains a `members` array with each member's name and agent ID. The lead's entry always carries the agent type `team-lead`. A teammate's entry carries whatever agent type the lead named when spawning it, whether a [built-in type](/docs/en/sub-agents#built-in-subagents) or a [subagent definition](#use-subagent-definitions-for-teammates), and omits the field when the lead named none. Teammates can read this file to discover other team members. There is no project-level equivalent of the team config. A file like `.claude/teams/teams.json` in your project directory is not recognized as configuration; Claude treats it as an ordinary file. @@ -248,7 +248,7 @@ When spawning a teammate, you can reference a [subagent](/docs/en/sub-agents) ty To use a subagent definition, mention it by name when asking Claude to spawn the teammate: -```text theme={null} +```text wrap theme={null} Spawn a teammate using the security-reviewer agent type to audit the auth module. ``` @@ -291,7 +291,7 @@ These examples show how agent teams handle tasks where parallel exploration adds A single reviewer tends to gravitate toward one type of issue at a time. Splitting review criteria into independent domains means security, performance, and test coverage all get thorough attention simultaneously. The prompt assigns each teammate a distinct lens so they don't overlap: -```text theme={null} +```text wrap theme={null} Spawn three teammates to review PR #142: - One focused on security implications - One checking performance impact @@ -305,7 +305,7 @@ Each reviewer works from the same PR but applies a different filter. The lead sy When the root cause is unclear, a single agent tends to find one plausible explanation and stop looking. The prompt fights this by making teammates explicitly adversarial: each one's job is not only to investigate its own theory but to challenge the others'. -```text theme={null} +```text wrap theme={null} Users report the app exits after one message instead of staying connected. Spawn 5 agent teammates to investigate different hypotheses. Have them talk to each other to try to disprove each other's theories, like a scientific @@ -322,7 +322,7 @@ With multiple independent investigators actively trying to disprove each other, Teammates load project context automatically, including CLAUDE.md, MCP servers, and skills, but they don't inherit the lead's conversation history. See [Context and communication](#context-and-communication) for details. Include task-specific details in the spawn prompt: -```text theme={null} +```text wrap theme={null} Spawn a security reviewer teammate with the prompt: "Review the authentication module at src/auth/ for security vulnerabilities. Focus on token handling, session management, and input validation. The app uses JWT tokens stored in @@ -357,7 +357,7 @@ Scale up only when the work genuinely benefits from having teammates work simult Sometimes the lead starts implementing tasks itself instead of waiting for teammates. If you notice this: -```text theme={null} +```text wrap theme={null} Wait for your teammates to complete their tasks before proceeding ``` diff --git a/content/en/docs/claude-code/authentication.md b/content/en/docs/claude-code/authentication.md index 5f54bda0b..33a1e8098 100644 --- a/content/en/docs/claude-code/authentication.md +++ b/content/en/docs/claude-code/authentication.md @@ -10,7 +10,7 @@ Claude Code supports multiple authentication methods depending on your setup. In ## Log in to Claude Code -After [installing Claude Code](/docs/en/setup#install-claude-code), run `claude` in your terminal. On first launch, Claude Code opens a browser window for you to log in. +After [installing Claude Code](/docs/en/setup#install-claude-code), run `claude` in your terminal. On first launch, Claude Code opens a browser window for you to log in. If you've set the `ANTHROPIC_API_KEY` environment variable, Claude Code skips the login prompt and asks you to approve the key instead. If the browser doesn't open automatically, press `c` to copy the login URL to your clipboard, then paste it into your browser. diff --git a/content/en/docs/claude-code/auto-mode-config.md b/content/en/docs/claude-code/auto-mode-config.md index 4a0aef08a..6852ac591 100644 --- a/content/en/docs/claude-code/auto-mode-config.md +++ b/content/en/docs/claude-code/auto-mode-config.md @@ -9,7 +9,7 @@ [Auto mode](/docs/en/permission-modes#eliminate-prompts-with-auto-mode) lets Claude Code run without routine permission prompts by routing tool calls through a classifier that blocks anything irreversible, destructive, or aimed outside your environment. Deny and explicit ask rules are evaluated before the classifier and still block or prompt. Use the `autoMode` settings block to tell that classifier which repos, buckets, and domains your organization trusts, so it stops blocking routine internal operations. <Note> - Auto mode is available to all users on every provider, including the Anthropic API, [Claude Platform on AWS](/docs/en/claude-platform-on-aws), Amazon Bedrock, Google Cloud's Agent Platform, Microsoft Foundry, and signed-in [Claude apps gateway](/docs/en/claude-apps-gateway) sessions. If Claude Code reports auto mode as unavailable for your account, check the [full requirements](/docs/en/permission-modes#eliminate-prompts-with-auto-mode), which also cover the supported models and Owner enablement on Team and Enterprise plans. {/* min-version: 2.1.207 */}In v2.1.158 through v2.1.206, auto mode on Amazon Bedrock, Google Cloud's Agent Platform, Microsoft Foundry, and Claude apps gateway sessions required setting `CLAUDE_CODE_ENABLE_AUTO_MODE=1`; v2.1.207 removed the requirement. + Auto mode is available to all users on every provider, including the Anthropic API, [Claude Platform on AWS](/docs/en/claude-platform-on-aws), Amazon Bedrock, Google Cloud's Agent Platform, Microsoft Foundry, and signed-in [Claude apps gateway](/docs/en/claude-apps-gateway) sessions. If Claude Code reports auto mode as unavailable for your account, check the [full requirements](/docs/en/permission-modes#eliminate-prompts-with-auto-mode), which also cover the supported models and the organization-level control on Team and Enterprise plans. {/* min-version: 2.1.207 */}In v2.1.158 through v2.1.206, auto mode on Amazon Bedrock, Google Cloud's Agent Platform, Microsoft Foundry, and Claude apps gateway sessions required setting `CLAUDE_CODE_ENABLE_AUTO_MODE=1`; v2.1.207 removed the requirement. </Note> By default, the classifier trusts only the working directory and the current repo's configured remotes. Actions like pushing to your company's source-control org or writing to a team cloud bucket are blocked until you add them to `autoMode.environment`. diff --git a/content/en/docs/claude-code/best-practices.md b/content/en/docs/claude-code/best-practices.md index abe7e9684..d80b34d53 100644 --- a/content/en/docs/claude-code/best-practices.md +++ b/content/en/docs/claude-code/best-practices.md @@ -67,7 +67,7 @@ The recommended workflow has four phases: <Step title="Explore"> Enter plan mode. Claude reads files and answers questions without making changes. - ```txt claude (plan mode) theme={null} + ```txt title="claude (plan mode)" wrap theme={null} read /src/auth and understand how we handle sessions and login. also look at how we manage environment variables for secrets. ``` @@ -76,7 +76,7 @@ The recommended workflow has four phases: <Step title="Plan"> Ask Claude to create a detailed implementation plan. - ```txt claude (plan mode) theme={null} + ```txt title="claude (plan mode)" wrap theme={null} I want to add Google OAuth. What files need to change? What's the session flow? Create a plan. ``` @@ -87,7 +87,7 @@ The recommended workflow has four phases: <Step title="Implement"> Switch out of plan mode and let Claude code, verifying against its plan. - ```txt claude (default mode) theme={null} + ```txt title="claude (default mode)" wrap theme={null} implement the OAuth flow from your plan. write tests for the callback handler, run the test suite and fix any failures. ``` @@ -96,7 +96,7 @@ The recommended workflow has four phases: <Step title="Commit"> Ask Claude to commit with a descriptive message and create a PR. - ```txt claude (default mode) theme={null} + ```txt title="claude (default mode)" wrap theme={null} commit with a descriptive message and open a PR ``` </Step> @@ -359,7 +359,7 @@ Using Claude Code this way is an effective onboarding workflow, improving ramp-u Claude asks about things you might not have considered yet, including technical implementation, UI/UX, edge cases, and tradeoffs. Replace `[brief description]` with your feature before sending the prompt. -```text theme={null} +```text wrap theme={null} I want to build [brief description]. Interview me in detail using the AskUserQuestion tool. Ask about technical implementation, UI/UX, edge cases, concerns, and tradeoffs. Don't ask obvious questions, dig into the hard parts I might not have considered. @@ -405,7 +405,7 @@ During long sessions, Claude's context window can fill with irrelevant conversat * Use `/clear` frequently between tasks to reset the context window entirely * When auto compaction triggers, Claude summarizes what matters most, including code patterns, file states, and key decisions * For more control, run `/compact <instructions>`, like `/compact Focus on the API changes` -* To compact only part of the conversation, use `Esc + Esc` or `/rewind`, select a message checkpoint, and choose **Summarize from here** or **Summarize up to here**. The first condenses messages from that point forward while keeping earlier context intact; the second condenses earlier messages while keeping recent ones in full. See [Restore vs. summarize](/docs/en/checkpointing#restore-vs-summarize). +* To compact only part of the conversation, use `Esc + Esc` or `/rewind`, select a message checkpoint, and choose **Summarize from here** or **Summarize up to here**. The first condenses messages from that point forward while keeping earlier context intact; the second condenses earlier messages while keeping recent ones in full. See [the rewind menu's summarize options](/docs/en/checkpointing#rewind-and-summarize). * Customize compaction behavior in CLAUDE.md with instructions like `"When compacting, always preserve the full list of modified files and any test commands"` to ensure critical context survives summarization * For quick questions that don't need to stay in context, use [`/btw`](/docs/en/interactive-mode#side-questions-with-%2Fbtw). The answer appears in a dismissible overlay and never enters conversation history, so you can check a detail without growing context. @@ -417,7 +417,7 @@ During long sessions, Claude's context window can fill with irrelevant conversat Since context is your fundamental constraint, subagents are one of the most powerful tools available. When Claude researches a codebase it reads lots of files, all of which consume your context. Subagents run in separate context windows and report back summaries: -```text theme={null} +```text wrap theme={null} Use subagents to investigate how our authentication system handles token refresh, and whether we have any existing OAuth utilities I should reuse. ``` @@ -426,7 +426,7 @@ The subagent explores the codebase, reads relevant files, and reports back with You can also use subagents for verification after Claude implements something: -```text theme={null} +```text wrap theme={null} use a subagent to review this code for edge cases ``` @@ -561,7 +561,7 @@ The longer Claude works unattended, the more an independent check matters before For a correctness check, run the bundled [`/code-review` skill](/docs/en/commands), which reviews the current diff for bugs in a fresh subagent and returns findings to the session. To check the diff against your plan instead, write the review prompt yourself. Name the work to check, the plan to check it against, and what counts as a finding: -```text theme={null} +```text wrap theme={null} Use a subagent to review the rate limiter diff against PLAN.md. Check that every requirement is implemented, the listed edge cases have tests, and nothing outside the task's scope changed. Report gaps, not style preferences. diff --git a/content/en/docs/claude-code/checkpointing.md b/content/en/docs/claude-code/checkpointing.md index 2f4587cfe..8a4c276ab 100644 --- a/content/en/docs/claude-code/checkpointing.md +++ b/content/en/docs/claude-code/checkpointing.md @@ -48,17 +48,12 @@ Choosing Summarize up to here leaves you at the end of the conversation with the If you ran `/clear` earlier in the same Claude Code process, the rewind menu shows an additional entry at the top of the list labeled `/resume <session-id> (previous session)`. Select it to resume the conversation that was active before `/clear` ran. The entry is available until you exit Claude Code or resume a different session, and requires Claude Code v2.1.191 or later. On earlier versions, run `/resume` and pick the previous session from the list instead. -#### Restore vs. summarize +#### Guide a summary -The restore options revert state: they undo code changes, conversation history, or both. The summarize options compress part of the conversation into an AI-generated summary without changing files on disk: - -* **Summarize from here**: messages before the selected message stay intact. The selected message and everything after it are replaced with a summary. Use this to discard a side discussion while keeping early context in full detail. -* **Summarize up to here**: messages before the selected message are replaced with a summary. The selected message and everything after it stay intact, and you remain at the end of the conversation. Use this to compress early setup discussion while keeping recent work in full detail. - -In both cases the original messages are preserved in the session transcript, so Claude can reference the details if needed. To guide what the summary focuses on, highlight a **Summarize** option with the arrow keys and type instructions inline where the row reads **add context (optional)**, then press `Enter` to summarize; selecting the option by its number key summarizes immediately without instructions. This is similar to `/compact`, but targeted: instead of summarizing the entire conversation, you choose which side of the selected message to compress. +Summarizing doesn't change files on disk, and the original messages stay in the session transcript, so Claude can still reference the details. To guide what the summary focuses on, highlight a **Summarize** option with the arrow keys and type instructions where the row reads **add context (optional)**, then press `Enter`. Selecting the option with its number key summarizes immediately without instructions. <Note> - Summarize keeps you in the same session and compresses context. If you want to branch off and try a different approach while preserving the original session intact, use [`/branch`](/docs/en/sessions#branch-a-session) or `claude --continue --fork-session` instead. + Summarize keeps you in the same session and compresses context, like a targeted `/compact`. To branch off and try a different approach while preserving the original session intact, use [`/branch`](/docs/en/sessions#branch-a-session) or `claude --continue --fork-session` instead. </Note> ## Common use cases diff --git a/content/en/docs/claude-code/claude-apps-gateway-config.md b/content/en/docs/claude-code/claude-apps-gateway-config.md index 2e2e85e96..71dcef37e 100644 --- a/content/en/docs/claude-code/claude-apps-gateway-config.md +++ b/content/en/docs/claude-code/claude-apps-gateway-config.md @@ -613,13 +613,14 @@ telemetry: Enable logs and traces only on destinations with the access controls and retention policy that data warrants. </Warning> -Telemetry is off in the CLI by default. Configuring `telemetry.forward_to` together with `listen.public_url` turns it on. The gateway pushes five env vars to every connected client through `/managed/settings`: +Telemetry is off in the CLI by default. Configuring `telemetry.forward_to` together with `listen.public_url` turns it on. The gateway pushes six env vars to every connected client through `/managed/settings`: * `CLAUDE_CODE_ENABLE_TELEMETRY=1` * `OTEL_METRICS_EXPORTER=otlp` * `OTEL_LOGS_EXPORTER=otlp` * `OTEL_TRACES_EXPORTER=otlp` * `OTEL_EXPORTER_OTLP_ENDPOINT=<public_url>` +* `OTEL_EXPORTER_OTLP_PROTOCOL=http/protobuf` The pushed endpoint is built from the public URL, so metrics and logs need no OTEL configuration from developers or policies. The pushed configuration is applied at the managed tier, overriding `OTEL_*` variables a developer sets locally. 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 481dbddba..dbe906364 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 @@ -28,7 +28,9 @@ This page covers the web product itself: ## Cloud environments -Every cloud session runs in a [cloud environment](/docs/en/cloud-environments), the saved configuration that controls network access, environment variables, and setup scripts. Onboarding sets you up with a **Default** environment that has [**Trusted** network access](/docs/en/cloud-environments#access-levels); see [The Default environment](/docs/en/cloud-environments#the-default-environment) for how it's created and how sessions choose an environment when you have more than one. The same environments apply wherever you start a cloud session: the web, the terminal, [Claude Tag](https://claude.com/docs/claude-tag/overview), [routines](/docs/en/routines), and the mobile and Desktop apps. +Every cloud session runs in a [cloud environment](/docs/en/cloud-environments), the saved configuration that controls network access, environment variables, and setup scripts. When you onboard, Claude Code sets up a **Default** environment with [**Trusted** network access](/docs/en/cloud-environments#access-levels). See [The Default environment](/docs/en/cloud-environments#the-default-environment) for how it's created and how sessions choose an environment when you have more than one. + +The same environments apply wherever you start a cloud session: the web, the terminal, [Claude Tag](https://claude.com/docs/claude-tag/overview), [routines](/docs/en/routines), and the mobile and Desktop apps. Claude Tag channel sessions use [organization-shared environments](/docs/en/cloud-environments#organization-shared-environments) only. See [Configure cloud environments](/docs/en/cloud-environments) to change what an environment allows, set variables, or add a setup script, and [Installed tools](/docs/en/cloud-environments#installed-tools) for what sessions include without any configuration. diff --git a/content/en/docs/claude-code/claude-directory.md b/content/en/docs/claude-code/claude-directory.md index 7c4201755..1eed39d3e 100644 --- a/content/en/docs/claude-code/claude-directory.md +++ b/content/en/docs/claude-code/claude-directory.md @@ -102,7 +102,7 @@ config/secrets.json`, icon: 'folder', color: 'var(--ce-accent)', oneLiner: 'Project-level configuration, rules, and extensions', - description: 'Everything Claude Code reads that is specific to this project. If you use git, commit most files here so your team shares them; a few, like settings.local.json, are automatically gitignored. Each file badge shows which.', + description: 'Everything Claude Code reads that is specific to this project. If you use git, commit most files here so your team shares them; a few, like settings.local.json, are gitignored when Claude Code saves settings to them. Each file badge shows which.', children: [{ id: 'settings-json', label: 'settings.json', @@ -146,8 +146,8 @@ config/secrets.json`, badge: 'gitignored', oneLiner: 'Your personal settings overrides for this project', when: 'Highest of the user-editable settings files; CLI flags and managed settings still take precedence', - description: 'Personal settings that take precedence over the project defaults. Same JSON format as settings.json, but not committed. Use this when you need different permissions or defaults than the team config.', - tips: [<>Same schema as settings.json. Array settings like <C>permissions.allow</C> combine across scopes; scalar settings like <C>model</C> use the local value</>, <>Claude Code adds this file to <C>~/.config/git/ignore</C> the first time it writes one. If you use a custom <C>core.excludesFile</C>, add the pattern there too. To share the ignore rule with your team, also add it to the project <C>.gitignore</C></>], + description: 'Personal settings that take precedence over the project defaults. Same JSON format as settings.json, gitignored when Claude Code saves a setting to it. Use this when you need different permissions or defaults than the team config.', + tips: [<>Same schema as settings.json. Array settings like <C>permissions.allow</C> combine across scopes; scalar settings like <C>model</C> use the local value</>, <>When Claude Code saves a setting to this file in a repository that doesn't already ignore it, it adds <C>**/.claude/settings.local.json</C> to your global git excludes file: <C>core.excludesFile</C> from your global git config when it's set to an absolute or <C>~</C>-prefixed path, otherwise <C>$XDG_CONFIG_HOME/git/ignore</C>, or <C>~/.config/git/ignore</C>. To share the ignore rule with your team, also add it to the project <C>.gitignore</C></>], exampleIntro: 'This example adds Docker permissions on top of whatever the team settings.json allows.', example: `{ "permissions": { @@ -1492,7 +1492,7 @@ Click a filename to open that node in the explorer above. | [`CLAUDE.md`](#ce-claude-md) | Project and global | ✓ | Instructions loaded every session | [Memory](/docs/en/memory) | | [`rules/*.md`](#ce-rules) | Project and global | ✓ | Topic-scoped instructions, optionally path-gated | [Rules](/docs/en/memory#organize-rules-with-claude/rules/) | | [`settings.json`](#ce-settings-json) | Project and global | ✓ | Permissions, hooks, env vars, model defaults | [Settings](/docs/en/settings) | -| [`settings.local.json`](#ce-settings-local-json) | Project only | | Your personal overrides, gitignored when Claude Code creates it | [Settings scopes](/docs/en/settings#settings-files) | +| [`settings.local.json`](#ce-settings-local-json) | Project only | | Your personal overrides, gitignored when Claude Code saves a setting to it | [Settings scopes](/docs/en/settings#settings-files) | | [`.mcp.json`](#ce-mcp-json) | Project only | ✓ | Team-shared MCP servers | [MCP scopes](/docs/en/mcp#mcp-installation-scopes) | | [`.worktreeinclude`](#ce-worktreeinclude) | Project only | ✓ | Gitignored files to copy into new worktrees | [Worktrees](/docs/en/worktrees#copy-gitignored-files-into-worktrees) | | [`skills/<name>/SKILL.md`](#ce-skills) | Project and global | ✓ | Reusable prompts invoked with `/name` or auto-invoked | [Skills](/docs/en/skills) | diff --git a/content/en/docs/claude-code/cloud-environments.md b/content/en/docs/claude-code/cloud-environments.md index a299414e4..d5e8a7858 100644 --- a/content/en/docs/claude-code/cloud-environments.md +++ b/content/en/docs/claude-code/cloud-environments.md @@ -12,7 +12,11 @@ Each [cloud session](/docs/en/claude-code-on-the-web) runs in a cloud environment. You can configure an environment to allow or deny [network access](#access-levels), set environment variables for the session, and run a [setup script](#setup-scripts) before Claude starts working. -The same environments apply wherever you start a cloud session: [Claude Code on the web](/docs/en/claude-code-on-the-web), the terminal with [`claude --cloud`](/docs/en/claude-code-on-the-web#from-terminal-to-web), [Claude Tag](https://claude.com/docs/claude-tag/overview), [routines](/docs/en/routines), the [Claude mobile app](/docs/en/mobile), and the [Desktop app](/docs/en/desktop). [Remote Control](/docs/en/remote-control) sessions are the exception: they connect the web and mobile interfaces to a session on your own machine, which uses your machine's network and files, not a cloud environment. +The same environments apply wherever you start a cloud session: [Claude Code on the web](/docs/en/claude-code-on-the-web), the terminal with [`claude --cloud`](/docs/en/claude-code-on-the-web#from-terminal-to-web), [Claude Tag](https://claude.com/docs/claude-tag/overview), [routines](/docs/en/routines), the [Claude mobile app](/docs/en/mobile), and the [Desktop app](/docs/en/desktop). + +<Info> + [Remote Control](/docs/en/remote-control) sessions connect the web and mobile interfaces to a session on your own machine, which uses your machine's network and files, not a cloud environment. Claude Tag channel sessions use [shared environments](#organization-shared-environments) only. +</Info> ## The Default environment @@ -90,6 +94,11 @@ Create, edit, and archive shared environments from the **Cloud environments** pa Values in a shared environment reach every member's sessions in that environment. Like personal environments, shared environments have no dedicated secrets store, so don't include secrets. +In [Claude Tag](https://claude.com/docs/claude-tag/overview) channels, Claude works as your organization's shared identity, not as any member, so channel sessions use shared environments only. You can set the environment a channel uses in two ways: + +* Set a shared environment as the organization's [default environment](#the-default-environment) at [claude.ai/admin-settings/claude-code](https://claude.ai/admin-settings/claude-code). +* [Pin one to a channel](https://claude.com/docs/claude-tag/admins/troubleshooting#channel-sessions-use-the-wrong-environment-or-can%E2%80%99t-find-one) in the Claude Tag admin settings. + Shared environments add to members' selectors rather than replacing them. ## Network access diff --git a/content/en/docs/claude-code/code-review.md b/content/en/docs/claude-code/code-review.md index e2c34ddd2..daa3736a0 100644 --- a/content/en/docs/claude-code/code-review.md +++ b/content/en/docs/claude-code/code-review.md @@ -309,6 +309,12 @@ The [`/code-review` command](/docs/en/commands) reviews a diff in your terminal </Step> </Steps> +{/* min-version: 2.1.218 */}When the host application requests it, Claude reports the review's findings through the [`ReportFindings` tool](/docs/en/tools-reference) instead of as text in its reply. Claude Code renders the report as a findings list, one entry per finding. Each entry shows the file location, a one-sentence summary, and a category tag such as `correctness` when the finding carries one. A host request applies at every effort level and requires Claude Code v2.1.218 or later. + +{/* min-version: 2.1.218 */}In a terminal session, `/code-review` runs the review as a fork and reports the findings as text in the reply, and Claude reports as text in any `-p` run with text or JSON output, even when the host application requests the findings list. {/* max-version: 2.1.217 */}On v2.1.216 and v2.1.217, a terminal review at `medium` or higher effort reported the findings list instead. + +When Claude fixes reported findings later in the session, it reports them again, and Claude Code marks each finding in the new list as fixed, skipped, or no change needed. + ### What the review reads and edits The review follows your `CLAUDE.md` like any Claude Code session, but it doesn't read [`REVIEW.md`](#review-md). {/* min-version: 2.1.218 */}A background review applies its `--fix` edits outside your session's [checkpoints](/docs/en/checkpointing#subagent-edits-not-restored), so `/rewind` doesn't undo them; use git to revert them. When the review [runs in the foreground](#run-in-the-foreground), it edits your working tree during your own turn, so `/rewind` restores its edits as usual. diff --git a/content/en/docs/claude-code/commands.md b/content/en/docs/claude-code/commands.md index 50b581763..0de36684b 100644 --- a/content/en/docs/claude-code/commands.md +++ b/content/en/docs/claude-code/commands.md @@ -43,7 +43,7 @@ To add your own commands, see [skills](/docs/en/skills). In the table below, `<arg>` indicates a required argument and `[arg]` indicates an optional one. <Note> - Not every command appears for every user. Availability depends on your platform, plan, and environment. For example, `/desktop` only shows on macOS and Windows when signed in with a Claude subscription, and `/upgrade` doesn't show on Enterprise plans. + Not every command appears for every user. Availability depends on your platform, plan, and environment. For example, `/desktop` only shows on macOS and x64 Windows when signed in with a Claude subscription, and `/upgrade` doesn't show on Enterprise plans. </Note> | Command | Purpose | @@ -73,7 +73,7 @@ In the table below, `<arg>` indicates a required argument and `[arg]` indicates | `/deep-research <question>` | **[Workflow](/docs/en/workflows#bundled-workflows).** Fan out web searches on a question, fetch and cross-check sources, and synthesize a cited report | | `/design-login` | Authorize design-system access for `/design-sync` with your claude.ai account | | `/design-sync [hint]` | **[Skill](/docs/en/skills#bundled-skills).** Convert your repo's React design system and upload it to [Claude Design](https://claude.ai/design), so designs it produces use your real components. Optionally name the design system, for example `/design-sync Acme DS`. A first-time sync verifies every component and can take a few hours on a large repo. Available on the Anthropic API; on Amazon Bedrock, Google Cloud's Agent Platform, Microsoft Foundry, and Claude Platform on AWS the underlying tool can't reach claude.ai, so the command is unavailable | -| `/desktop` | Continue the current session in the Claude Code Desktop app. Requires macOS or Windows and a Claude subscription. Alias: `/app` | +| `/desktop` | Continue the current session in the Claude Code Desktop app. Requires macOS or x64 Windows and a Claude subscription. Alias: `/app` | | `/diff` | Open an interactive diff viewer showing uncommitted changes and per-turn diffs. Use left/right arrows to switch between the current git diff and individual Claude turns, and up/down to browse files. Press Enter to open the selected file's diff, scroll it with up/down or PageUp/PageDown, and press Esc to return to the file list. {/* min-version: 2.1.198 */}As of v2.1.198, the open viewer also refreshes automatically when the repository's git state changes outside the session, such as a branch switch or commit in another terminal | | `/doctor` | **[Skill](/docs/en/skills#bundled-skills).** Run a setup checkup that diagnoses issues and can fix them. Checks installation health, including duplicate or leftover installs, `PATH` problems, and unparseable settings files. Finds unused skills, MCP servers, and plugins versus their context cost, flags slow [hooks](/docs/en/hooks), and checks for a newer version on your release channel. Deduplicates local `CLAUDE.md` files against checked-in ones, trims checked-in [`CLAUDE.md`](/docs/en/memory) files by cutting content Claude could derive from the codebase, and migrates the always-loaded guidance that remains into [skills](/docs/en/skills) and nested `CLAUDE.md` files that load on demand. The trim cuts sections such as directory layouts, dependency lists, and architecture overviews, and keeps pitfalls, rationale, and conventions that differ from tool defaults. Also offers to make [auto mode](/docs/en/permissions#permission-modes) your default and to [pre-approve](/docs/en/permissions) frequently denied read-only commands. Reports findings first and asks for confirmation before changing anything. From the terminal, `claude doctor` prints read-only installation diagnostics without starting a session. Alias: `/checkup`. {/* min-version: 2.1.206 */}The `CLAUDE.md` trim check requires Claude Code v2.1.206 or later. Before v2.1.206, the version check compared Homebrew installs against the `autoUpdatesChannel` setting rather than the [installed cask's channel](/docs/en/setup#configure-release-channel). {/* min-version: 2.1.205 */}Before v2.1.205, `/doctor` opened a read-only diagnostics screen and pressing `f` sent the report to Claude | | `/effort [level\|auto]` | Set the model [effort level](/docs/en/model-config#adjust-effort-level). Accepts `low`, `medium`, `high`, `xhigh`, `max`, or [`ultracode`](/docs/en/workflows#let-claude-decide-with-ultracode); available levels depend on the model, and `max` and `ultracode` are session-only. `auto` resets to the model default. Without an argument, opens an interactive slider. Takes effect immediately without waiting for the current response to finish. {/* min-version: 2.1.205 */}Also available in non-interactive mode (`-p`) with a level argument, where it applies to the current session only; requires Claude Code v2.1.205 or later. While the [model-default effort hold](/docs/en/model-config#adjust-effort-level) is in force, a non-interactive `/effort` reports `Not applied`, so pass `--effort` at launch instead | @@ -124,7 +124,7 @@ In the table below, `<arg>` indicates a required argument and `[arg]` indicates | `/sandbox` | Toggle [sandbox mode](/docs/en/sandboxing). Available on supported platforms only | | `/schedule [description]` | Create, update, list, or run [routines](/docs/en/routines), which execute on Anthropic-managed cloud infrastructure. Claude walks you through the setup conversationally. Alias: `/routines` | | `/scroll-speed` | Adjust mouse wheel [scroll speed](/docs/en/fullscreen#mouse-wheel-scrolling) interactively, with a ruler you can scroll while the dialog is open to preview the change. Available in [fullscreen rendering](/docs/en/fullscreen) only and not in the JetBrains IDE terminal | -| `/security-review` | Analyze pending changes on the current branch for security vulnerabilities. Reviews the git diff and identifies risks like injection, auth issues, and data exposure | +| `/security-review` | Analyze the changes on your current branch for security vulnerabilities. Reviews the diff between your branch and origin's default branch, identifying risks like injection, auth issues, and data exposure. Needs an `origin` remote; if the review fails with an `ambiguous argument` error, see the [error reference](/docs/en/errors#security-review-fails-without-origin-head) | | `/setup-bedrock` | Configure [Amazon Bedrock](/docs/en/amazon-bedrock) authentication, region, and model pins through an interactive wizard. Only visible when `CLAUDE_CODE_USE_BEDROCK=1` is set. First-time Amazon Bedrock users can also access this wizard from the login screen | | `/setup-vertex` | Configure [Google Cloud's Agent Platform](/docs/en/google-vertex-ai) authentication, project, region, and model pins through an interactive wizard. Only visible when `CLAUDE_CODE_USE_VERTEX=1` is set. First-time Google Cloud's Agent Platform users can also access this wizard from the login screen | | `/simplify [target]` | {/* min-version: 2.1.154 */}**[Skill](/docs/en/skills#bundled-skills).** Review the changed code for cleanup opportunities and apply the fixes. Four review [agents](/docs/en/sub-agents) run in parallel, covering reuse of existing helpers, simplification, efficiency, and whether the change is at the right level of abstraction. From v2.1.154, the review doesn't look for correctness bugs. Use `/code-review` to find bugs. On earlier versions, `/simplify` is equivalent to `/code-review --fix`. Pass a path or PR reference to review a specific target | diff --git a/content/en/docs/claude-code/common-workflows.md b/content/en/docs/claude-code/common-workflows.md index 2389c0cec..9a5e66bf2 100644 --- a/content/en/docs/claude-code/common-workflows.md +++ b/content/en/docs/claude-code/common-workflows.md @@ -45,21 +45,21 @@ Suppose you've just joined a new project and need to understand its structure qu </Step> <Step title="Ask for a high-level overview"> - ```text theme={null} + ```text wrap theme={null} give me an overview of this codebase ``` </Step> <Step title="Dive deeper into specific components"> - ```text theme={null} + ```text wrap theme={null} explain the main architecture patterns used here ``` - ```text theme={null} + ```text wrap theme={null} what are the key data models? ``` - ```text theme={null} + ```text wrap theme={null} how is authentication handled? ``` </Step> @@ -79,19 +79,19 @@ Suppose you need to locate code related to a specific feature or functionality. <Steps> <Step title="Ask Claude to find relevant files"> - ```text theme={null} + ```text wrap theme={null} find the files that handle user authentication ``` </Step> <Step title="Get context on how components interact"> - ```text theme={null} + ```text wrap theme={null} how do these authentication files work together? ``` </Step> <Step title="Understand the execution flow"> - ```text theme={null} + ```text wrap theme={null} trace the login process from front-end to database ``` </Step> @@ -113,19 +113,19 @@ Suppose you've encountered an error message and need to find and fix its source. <Steps> <Step title="Share the error with Claude"> - ```text theme={null} + ```text wrap theme={null} I'm seeing an error when I run npm test ``` </Step> <Step title="Ask for fix recommendations"> - ```text theme={null} + ```text wrap theme={null} suggest a few ways to fix the @ts-ignore in user.ts ``` </Step> <Step title="Apply the fix"> - ```text theme={null} + ```text wrap theme={null} update user.ts to add the null check you suggested ``` </Step> @@ -147,25 +147,25 @@ Suppose you need to update old code to use modern patterns and practices. <Steps> <Step title="Identify legacy code for refactoring"> - ```text theme={null} + ```text wrap theme={null} find deprecated API usage in our codebase ``` </Step> <Step title="Get refactoring recommendations"> - ```text theme={null} + ```text wrap theme={null} suggest how to refactor utils.js to use modern JavaScript features ``` </Step> <Step title="Apply the changes safely"> - ```text theme={null} + ```text wrap theme={null} refactor utils.js to use ES2024 features while maintaining the same behavior ``` </Step> <Step title="Verify the refactoring"> - ```text theme={null} + ```text wrap theme={null} run tests for the refactored code ``` </Step> @@ -187,25 +187,25 @@ Suppose you need to add tests for uncovered code. <Steps> <Step title="Identify untested code"> - ```text theme={null} + ```text wrap theme={null} find functions in NotificationsService.swift that are not covered by tests ``` </Step> <Step title="Generate test scaffolding"> - ```text theme={null} + ```text wrap theme={null} add tests for the notification service ``` </Step> <Step title="Add meaningful test cases"> - ```text theme={null} + ```text wrap theme={null} add test cases for edge conditions in the notification service ``` </Step> <Step title="Run and verify tests"> - ```text theme={null} + ```text wrap theme={null} run the new tests and fix any failures ``` </Step> @@ -223,19 +223,19 @@ You can create pull requests by asking Claude directly ("create a pr for my chan <Steps> <Step title="Summarize your changes"> - ```text theme={null} + ```text wrap theme={null} summarize the changes I've made to the authentication module ``` </Step> <Step title="Generate a pull request"> - ```text theme={null} + ```text wrap theme={null} create a pr ``` </Step> <Step title="Review and refine"> - ```text theme={null} + ```text wrap theme={null} enhance the PR description with more context about the security improvements ``` </Step> @@ -253,25 +253,25 @@ Suppose you need to add or update documentation for your code. <Steps> <Step title="Identify undocumented code"> - ```text theme={null} + ```text wrap theme={null} find functions without proper JSDoc comments in the auth module ``` </Step> <Step title="Generate documentation"> - ```text theme={null} + ```text wrap theme={null} add JSDoc comments to the undocumented functions in auth.js ``` </Step> <Step title="Review and enhance"> - ```text theme={null} + ```text wrap theme={null} improve the generated documentation with more context and examples ``` </Step> <Step title="Verify documentation"> - ```text theme={null} + ```text wrap theme={null} check if the documentation follows our project standards ``` </Step> @@ -309,35 +309,35 @@ Suppose you need to work with images in your codebase, and you want Claude's hel </Step> <Step title="Ask Claude to analyze the image"> - ```text theme={null} + ```text wrap theme={null} What does this image show? ``` - ```text theme={null} + ```text wrap theme={null} Describe the UI elements in this screenshot ``` - ```text theme={null} + ```text wrap theme={null} Are there any problematic elements in this diagram? ``` </Step> <Step title="Use images for context"> - ```text theme={null} + ```text wrap theme={null} Here's a screenshot of the error. What's causing it? ``` - ```text theme={null} + ```text wrap theme={null} This is our current database schema. How should we modify it for the new feature? ``` </Step> <Step title="Get code suggestions from visual content"> - ```text theme={null} + ```text wrap theme={null} Generate CSS to match this design mockup ``` - ```text theme={null} + ```text wrap theme={null} What HTML structure would recreate this component? ``` </Step> @@ -361,7 +361,7 @@ Use @ to quickly include files or directories without waiting for Claude to read <Steps> <Step title="Reference a single file"> - ```text theme={null} + ```text wrap theme={null} Explain the logic in @src/utils/auth.js ``` @@ -369,7 +369,7 @@ Use @ to quickly include files or directories without waiting for Claude to read </Step> <Step title="Reference a directory"> - ```text theme={null} + ```text wrap theme={null} What's the structure of @src/components? ``` @@ -377,7 +377,7 @@ Use @ to quickly include files or directories without waiting for Claude to read </Step> <Step title="Reference MCP resources"> - ```text theme={null} + ```text wrap theme={null} Show me the data from @github:repos/owner/repo/issues ``` @@ -422,27 +422,27 @@ Claude has built-in access to its documentation and can answer questions about i #### Example questions -```text theme={null} +```text wrap theme={null} can Claude Code create pull requests? ``` -```text theme={null} +```text wrap theme={null} how does Claude Code handle permissions? ``` -```text theme={null} +```text wrap theme={null} what skills are available? ``` -```text theme={null} +```text wrap theme={null} how do I use MCP with Claude Code? ``` -```text theme={null} +```text wrap theme={null} how do I configure Claude Code for Amazon Bedrock? ``` -```text theme={null} +```text wrap theme={null} what are the limitations of Claude Code? ``` @@ -494,7 +494,7 @@ You can also press `Shift+Tab` mid-session to cycle to plan mode. The cycle runs Exploring a large codebase fills your context with file reads. Delegate the exploration so only the findings come back. -```text theme={null} +```text wrap theme={null} use a subagent to investigate how our auth system handles token refresh ``` diff --git a/content/en/docs/claude-code/costs.md b/content/en/docs/claude-code/costs.md index 336e6573d..ad88e2b20 100644 --- a/content/en/docs/claude-code/costs.md +++ b/content/en/docs/claude-code/costs.md @@ -271,8 +271,8 @@ These background processes consume a small amount of tokens (typically under \$0 A session that has been open for hours can use far more of your plan limits than your activity suggests, usually for one of these reasons: -* **Long context**: Claude Code sends your full conversation with every message, so a one-line question in a session that has been open all day uses tokens for the whole conversation, not just the one line. See [Manage context proactively](#manage-context-proactively) for ways to keep your context small -* **Cache misses**: your first message after a break longer than the [cache lifetime](/docs/en/prompt-caching#cache-lifetime) misses the cache and reprocesses your full context. The lifetime is an hour on a subscription and drops to five minutes once you're drawing on [usage credits](https://support.claude.com/en/articles/12429409-extra-usage-for-paid-claude-plans); on an API key or cloud provider, it's five minutes by default +* **Long context**: Claude Code sends your full conversation with every request, and each time Claude uses tools it sends another request carrying that batch of tool results. With [prompt caching](/docs/en/prompt-caching), Claude Code re-reads that history at the [cached token rate](https://platform.claude.com/docs/en/about-claude/pricing), so a one-line question in a session that has been open all day still draws usage for the whole conversation. See [Manage context proactively](#manage-context-proactively) for ways to keep your context small +* **Cache misses**: your first message after a break longer than the [cache lifetime](/docs/en/prompt-caching#cache-lifetime) misses the cache and reprocesses your full context. The lifetime is an hour on a subscription and drops to five minutes once you're drawing on [usage credits](https://support.claude.com/en/articles/12429409-extra-usage-for-paid-claude-plans); on an API key or cloud provider, it's five minutes by default. On Pro and Max plans, when you resume a large session after a long break, Claude Code [offers to resume from a summary](/docs/en/sessions#resume-from-a-summary) so later requests don't carry the full history * **Scheduled tasks**: a [scheduled task](/docs/en/scheduled-tasks) fires on its interval even while the session is idle, sending your full context each time * **Agent teammates**: each active [teammate](#agent-team-token-costs) keeps consuming tokens until it exits * **Compaction**: `/compact` reads the conversation it summarizes, so [compacting a large context](/docs/en/prompt-caching#compacting-the-conversation) is itself a large request. When you want a fresh start instead of continuity, `/clear` costs nothing diff --git a/content/en/docs/claude-code/data-usage.md b/content/en/docs/claude-code/data-usage.md index 8e446e505..ed9b255f5 100644 --- a/content/en/docs/claude-code/data-usage.md +++ b/content/en/docs/claude-code/data-usage.md @@ -95,7 +95,7 @@ For security details about cloud execution, see [Security](/docs/en/security#clo ## Telemetry services -Claude Code sends two kinds of operational telemetry: usage metrics and error reports. You can turn each off individually with the environment variables below, or disable all non-essential traffic at once by setting `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC`. +Claude Code sends two kinds of operational telemetry: usage metrics and error reports. You can turn each off individually with the environment variables below, or disable all non-essential traffic at once by setting `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC`. Setting `DISABLE_TELEMETRY` or `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC` also disables the feature-flag evaluation that [Remote Control](/docs/en/remote-control#requirements) depends on; `DISABLE_ERROR_REPORTING` doesn't. **Metrics**: latency, reliability, and usage patterns, sent to Anthropic and to third-party logging infrastructure over TLS. Metrics never include your code, prompts, or file paths. Set `DISABLE_TELEMETRY=1` to opt out. diff --git a/content/en/docs/claude-code/desktop-linux.md b/content/en/docs/claude-code/desktop-linux.md index c6495c372..858239a7f 100644 --- a/content/en/docs/claude-code/desktop-linux.md +++ b/content/en/docs/claude-code/desktop-linux.md @@ -25,10 +25,10 @@ Install from Anthropic's apt repository so that updates arrive through your syst <Steps> <Step title="Add Anthropic's apt repository"> - This step downloads the signing key with `curl`, which fresh Debian and Ubuntu installations may not include. If the download command fails with `sudo: curl: command not found`, install curl first: + This step downloads the signing key with `curl` and verifies it with `gpg`, which fresh Debian and Ubuntu installations may not include. If either command reports `command not found`, install both first: ```bash theme={null} - sudo apt install curl + sudo apt install curl gnupg ``` Download Anthropic's signing key: @@ -37,6 +37,14 @@ Install from Anthropic's apt repository so that updates arrive through your syst sudo curl -fsSLo /usr/share/keyrings/claude-desktop-archive-keyring.asc https://downloads.claude.ai/claude-desktop/key.asc ``` + If this download fails, `apt update` later fails with `NO_PUBKEY BAA929FF1A7ECACE`. Confirm the key downloaded and belongs to Anthropic before continuing: + + ```bash theme={null} + gpg --show-keys /usr/share/keyrings/claude-desktop-archive-keyring.asc + ``` + + The fingerprint gpg prints should be `31DDDE24DDFAB679F42D7BD2BAA929FF1A7ECACE`. If gpg reports that the file can't be opened or contains no valid OpenPGP data, the download failed or returned the wrong content: confirm your network can reach `downloads.claude.ai`, then rerun the download command. + Register the repository: ```bash theme={null} @@ -57,16 +65,6 @@ Install from Anthropic's apt repository so that updates arrive through your syst </Step> </Steps> -<Accordion title="Verify the signing key"> - You can confirm the downloaded signing key belongs to Anthropic: - - ```bash theme={null} - gpg --show-keys /usr/share/keyrings/claude-desktop-archive-keyring.asc - ``` - - The fingerprint should be `31DD DE24 DDFA B679 F42D 7BD2 BAA9 29FF 1A7E CACE`. -</Accordion> - ### Install from a downloaded file If you can't install through the apt repository, download the `.deb` package directly from the repository's package pool. This command looks up the newest package for your architecture in the repository index, then downloads it to the current directory: diff --git a/content/en/docs/claude-code/desktop.md b/content/en/docs/claude-code/desktop.md index d2eb4e1a1..4e8372a8d 100644 --- a/content/en/docs/claude-code/desktop.md +++ b/content/en/docs/claude-code/desktop.md @@ -328,7 +328,7 @@ Worktrees are stored in `<project-root>/.claude/worktrees/` by default. You can To include gitignored files like `.env` in new worktrees, create a [`.worktreeinclude` file](/docs/en/worktrees#copy-gitignored-files-into-worktrees) in your project root. <Note> - Session isolation requires [Git](https://git-scm.com/downloads). Most Macs include Git by default. Run `git --version` in Terminal to check. On Windows, Git is required for the Code tab to work: [download Git for Windows](https://git-scm.com/downloads/win), install it, and restart the app. If you run into Git errors, ask Claude in the [Cowork tab](https://claude.com/product/cowork) to help troubleshoot your setup. + Session isolation requires [Git](https://git-scm.com/downloads). Most Macs include Git by default. Run `git --version` in Terminal to check; if it prints a version number, Git is installed. On Windows, Git is required for the Code tab to work: [download Git for Windows](https://git-scm.com/downloads/win), install it, and restart the app. If you run into Git errors, ask Claude in the [Cowork tab](https://claude.com/product/cowork) to help troubleshoot your setup. </Note> Use the controls at the top of the sidebar to filter sessions by status, project, or environment, and to group sessions by project. To rename a session, click the session title in the toolbar at the top of the active session. To check context usage, see [Check usage](#check-usage). When context fills up, Claude automatically summarizes the conversation and continues working. You can also type `/compact` to trigger summarization earlier and free up context space. See [the context window](/docs/en/how-claude-code-works#the-context-window) for details on how compaction works. @@ -438,7 +438,14 @@ Auto-verify is on by default. Disable it per-project by adding `"autoVerify": fa { "version": "0.0.1", "autoVerify": false, - "configurations": [...] + "configurations": [ + { + "name": "my-app", + "runtimeExecutable": "npm", + "runtimeArgs": ["run", "dev"], + "port": 3000 + } + ] } ``` @@ -782,7 +789,7 @@ For the full enterprise configuration reference, see the [enterprise configurati If you already use the Claude Code CLI, Desktop runs the same underlying engine with a graphical interface. You can run both simultaneously on the same machine, even on the same project. Each maintains separate session history, but they share configuration and project memory via CLAUDE.md files. -To move a CLI session into Desktop, run `/desktop` in the terminal. Claude saves your session and opens it in the desktop app, then exits the CLI. This command is available on macOS and Windows when you are signed in with a Claude subscription. It is not available with API key authentication or on Amazon Bedrock, Google Cloud's Agent Platform, or Microsoft Foundry. +To move a CLI session into Desktop, run `/desktop` in the terminal. Claude saves your session and opens it in the desktop app, then exits the CLI. This command is available on macOS and x64 Windows when you are signed in with a Claude subscription. It is not available with API key authentication or on Amazon Bedrock, Google Cloud's Agent Platform, or Microsoft Foundry. <Tip> When to use Desktop vs CLI: use Desktop when you want to manage parallel sessions in one window, arrange panes side by side, or review changes visually. Use the CLI when you need scripting, automation, or prefer a terminal workflow. @@ -815,9 +822,15 @@ Desktop and CLI read the same configuration files, so your setup carries over: * **[Settings](/docs/en/settings)** in `~/.claude.json` and `~/.claude/settings.json` are shared. Permission rules, allowed tools, and other settings in `settings.json` apply to Desktop sessions. * **Models**: the same [models](/docs/en/model-config#available-models) are available in both. In Desktop, select the model from the dropdown next to the send button. You can change the model mid-session from the same dropdown. -<Note> - **MCP servers from the Claude Desktop chat app**: the Desktop app loads MCP servers from `claude_desktop_config.json` into Code tab sessions, alongside servers from `~/.claude.json` and `.mcp.json`. A server defined in `claude_desktop_config.json` is available in both the Desktop chat surface and the Code tab. +#### MCP servers from the Claude Desktop chat app + +The Desktop app loads MCP servers from `claude_desktop_config.json` into local Code tab sessions, alongside servers from `~/.claude.json` and `.mcp.json`. A server you define in `claude_desktop_config.json` is available in both the Desktop chat surface and local Code tab sessions. +If you define the same server name in `claude_desktop_config.json` and in `~/.claude.json` or `.mcp.json`, the Code tab in local sessions connects once and uses the `claude_desktop_config.json` definition. + +The app also re-delivers stdio servers from `~/.claude.json` to the embedded CLI in local sessions. When the top level of `~/.claude.json` (user scope) and `.mcp.json` define the same stdio server name, the Code tab uses the `~/.claude.json` definition, departing from the CLI [scope hierarchy](/docs/en/mcp#scope-hierarchy-and-precedence). + +<Note> The standalone CLI does not read `claude_desktop_config.json`. On macOS and WSL, run `claude mcp add-from-claude-desktop` to copy those servers into `~/.claude.json`. See [Import MCP servers from Claude Desktop](/docs/en/mcp#import-mcp-servers-from-claude-desktop) for the import flow and scope options. </Note> diff --git a/content/en/docs/claude-code/devcontainer.md b/content/en/docs/claude-code/devcontainer.md index 890364ed0..2f7d41317 100644 --- a/content/en/docs/claude-code/devcontainer.md +++ b/content/en/docs/claude-code/devcontainer.md @@ -57,6 +57,8 @@ When you open the container in VS Code or Codespaces, the feature also adds the ``` Replace the `image` line with your project's base image or remove it if your existing file uses a Dockerfile. + + The Claude Code feature installs Node.js itself when the base image doesn't provide it. If that install fails and the build stops with `Failed to install Node.js and npm`, add `"ghcr.io/devcontainers/features/node:1": {}` to the `features` block above the Claude Code feature and rebuild. </Step> <Step title="Rebuild the container"> @@ -85,21 +87,26 @@ See [Choose your API provider](/docs/en/admin-setup#choose-your-api-provider) to ## Persist authentication and settings across rebuilds -By default, the container's home directory is discarded on rebuild, so engineers must sign in again each time. Claude Code stores its authentication token, user settings, and session history under [`~/.claude`](/docs/en/claude-directory). Mount a named volume at that path to keep this state across rebuilds. +By default, the container's home directory is discarded on rebuild, so engineers must sign in again each time. Claude Code stores its authentication token, user settings, and session history under the [`~/.claude`](/docs/en/claude-directory) directory. It stores your OAuth account, personal MCP servers, and per-project trust in [`~/.claude.json`](/docs/en/settings#global-config-settings), a separate file outside that directory, so mounting a volume at `~/.claude` alone doesn't keep you signed in. Mount a named volume at `~/.claude` and set [`CLAUDE_CONFIG_DIR`](/docs/en/env-vars) to the same path so Claude Code writes `.claude.json` inside the volume. -The following example mounts a volume at the home directory of the `node` user: +The following example mounts the volume and sets `CLAUDE_CONFIG_DIR` for a container whose `remoteUser` is `node`: ```json devcontainer.json theme={null} "mounts": [ "source=claude-code-config,target=/home/node/.claude,type=volume" -] +], +"containerEnv": { + "CLAUDE_CONFIG_DIR": "/home/node/.claude" +} ``` -Replace `/home/node` with the home directory of your container's `remoteUser`. If you mount the volume somewhere other than `~/.claude`, set [`CLAUDE_CONFIG_DIR`](/docs/en/env-vars) to the mount path so Claude Code reads and writes there. +Replace `/home/node` with the home directory of your container's `remoteUser`. If you already set `containerEnv`, for example in [Enforce organization policy](#enforce-organization-policy), add `CLAUDE_CONFIG_DIR` to that object rather than adding a second one. To isolate state per project rather than sharing one volume across all repositories, include the `${devcontainerId}` variable in the source name. The [reference configuration](https://github.com/anthropics/claude-code/blob/main/.devcontainer/devcontainer.json) uses `source=claude-code-config-${devcontainerId}` for this purpose. -In GitHub Codespaces, `~/.claude` persists across stopping and starting a codespace, but is still cleared when you rebuild the container, so the volume mount above applies there too. To carry authentication across codespaces, store `ANTHROPIC_API_KEY` or a `CLAUDE_CODE_OAUTH_TOKEN` from [`claude setup-token`](/docs/en/authentication#generate-a-long-lived-token) as a [Codespaces secret](https://docs.github.com/en/codespaces/managing-your-codespaces/managing-your-account-specific-secrets-for-github-codespaces); Codespaces makes secrets available as environment variables inside the container automatically. +In GitHub Codespaces, `~/.claude` persists when you stop and start a codespace but is cleared when you rebuild the container, so the configuration above applies there too. + +To carry authentication across codespaces, store `ANTHROPIC_API_KEY` or a `CLAUDE_CODE_OAUTH_TOKEN` from [`claude setup-token`](/docs/en/authentication#generate-a-long-lived-token) as a [Codespaces secret](https://docs.github.com/en/codespaces/managing-your-codespaces/managing-your-account-specific-secrets-for-github-codespaces). Codespaces exposes secrets as environment variables inside the container automatically. ## Enforce organization policy @@ -123,6 +130,8 @@ To set [environment variables](/docs/en/env-vars) that apply to every Claude Cod } ``` +`CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC` also disables the feature-flag evaluation that [Remote Control](/docs/en/remote-control#requirements) depends on, so sessions in the container can't use Remote Control. + The Dev Container Feature always installs the latest Claude Code release. To pin a specific Claude Code version for reproducible builds, install it from your Dockerfile with `npm install -g @anthropic-ai/claude-code@X.Y.Z` instead of using the feature, and set `DISABLE_AUTOUPDATER` as shown above. For the full list of policy controls including permission rules, tool restrictions, and MCP server allowlists, see [Set up Claude Code for your organization](/docs/en/admin-setup). diff --git a/content/en/docs/claude-code/env-vars.md b/content/en/docs/claude-code/env-vars.md index 451fd5305..181629449 100644 --- a/content/en/docs/claude-code/env-vars.md +++ b/content/en/docs/claude-code/env-vars.md @@ -88,21 +88,23 @@ Add variables under the `env` key in a `settings.json` file, creating the file i The file you choose controls who the variables apply to: -| File | Applies to | -| :---------------------------- | :---------------------------------------------------------------------------- | -| `~/.claude/settings.json` | You, in every project | -| `.claude/settings.json` | Everyone working in the project, checked into source control | -| `.claude/settings.local.json` | You, in this project only (add it to your gitignore if you create it by hand) | -| Managed settings | Everyone in your organization, deployed by an admin | +| File | Applies to | +| :---------------------------- | :------------------------------------------------------------------------------------------------------------------------------ | +| `~/.claude/settings.json` | You, in every project | +| `.claude/settings.json` | Everyone working in the project, checked into source control | +| `.claude/settings.local.json` | You, in this project only, gitignored when Claude Code saves a setting to it; add it to your gitignore if you create it by hand | +| Managed settings | Everyone in your organization, deployed by an admin | See [Settings files](/docs/en/settings#settings-files) for where each file lives and [Settings precedence](/docs/en/settings#settings-precedence) for how they combine when more than one sets the same variable. ## Precedence -Where the same behavior has both an environment variable and a settings field, the environment variable takes precedence. For example, `ANTHROPIC_MODEL` overrides the `model` setting, and `CLAUDE_CODE_AUTO_CONNECT_IDE` overrides `autoConnectIde`. The settings field applies when the environment variable is not set. +Some behaviors have both an environment variable and a dedicated settings key. If you set both, the environment variable takes precedence. For example, `ANTHROPIC_MODEL` overrides the `model` setting, and `CLAUDE_CODE_AUTO_CONNECT_IDE` overrides `autoConnectIde`. Claude Code uses the settings key only when the environment variable is unset. When the same variable is set in both your shell and a settings file `env` block, the settings file value applies. Claude Code writes each `env` entry into the process environment at startup and again when the file changes, replacing the value inherited from the shell. A few variables are special-cased; the [`env` setting](/docs/en/settings#available-settings) lists the exceptions. +In a settings file you can set a variable but you can't remove one. To override a variable you can't unset, such as a stale `CLAUDE_CODE_USE_VERTEX` exported by a shell profile you don't control, set it to an empty string in the `env` block: `"CLAUDE_CODE_USE_VERTEX": ""`. Claude Code treats the empty value as unset for provider selection. Subprocesses still inherit the empty value. + Between settings files, `env` values follow [settings precedence](/docs/en/settings#settings-precedence), so a managed settings entry overrides the same variable in user or project settings. How an environment variable interacts with CLI flags and in-session commands varies per feature: `--model` and `/model` override `ANTHROPIC_MODEL`, while `CLAUDE_CODE_EFFORT_LEVEL` overrides `/effort`. When a variable interacts with another configuration source, its row in the [Variables](#variables) list states the precedence or links to the page that documents it. @@ -113,6 +115,21 @@ Claude Code reads shell environment variables at startup, so changes to them tak Numeric variables such as timeouts, token budgets, and retry counts accept scientific notation and digit-separator spellings in addition to plain digits, except where a variable's row notes it takes plain digits only. For example, Claude Code reads `2e3` as 2000 and `64_000` as 64000. Before v2.1.211, these spellings could silently set a much smaller value, such as `1e6` setting a timeout to 1. +<Note> + For variables that turn a behavior on or off, set `1` or `true` to turn it on and `0` or `false` to turn it off, in any casing. + + Some variables read only whether you set them at all, so any non-empty value including `0` turns the behavior on, and you turn the behavior off by unsetting the variable or setting it to an empty value. These variables work that way: + + * `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC` + * `DISABLE_TELEMETRY` + * `DISABLE_ERROR_REPORTING` + * `CLAUDE_CODE_TMUX_TRUECOLOR` + * `FALLBACK_FOR_ALL_PRIMARY_MODELS` + * `IS_DEMO` + + One other variable has its own rule: `FORCE_HYPERLINK` reads a number, so only `0` turns it off. Each variable's row also states its own rule. +</Note> + | Variable | Purpose | | :------------------------------------------------------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `ANTHROPIC_API_KEY` | API key sent as `X-Api-Key` header. When set, this key is used instead of your Claude Pro, Max, Team, or Enterprise subscription even if you are logged in. In non-interactive mode (`-p`), the key is always used when present. In interactive mode, you are prompted to approve the key once before it overrides your subscription. To use your subscription instead, run `unset ANTHROPIC_API_KEY` | @@ -129,23 +146,23 @@ Numeric variables such as timeouts, token budgets, and retry counts accept scien | `ANTHROPIC_CUSTOM_MODEL_OPTION` | Model ID to add as a custom entry in the `/model` picker. Use this to make a non-standard or gateway-specific model selectable without replacing built-in aliases. See [Model configuration](/docs/en/model-config#add-a-custom-model-option) | | `ANTHROPIC_CUSTOM_MODEL_OPTION_DESCRIPTION` | Display description for the custom model entry in the `/model` picker. Defaults to `Custom model (<model-id>)` when not set | | `ANTHROPIC_CUSTOM_MODEL_OPTION_NAME` | Display name for the custom model entry in the `/model` picker. Defaults to the model ID when not set | -| `ANTHROPIC_CUSTOM_MODEL_OPTION_SUPPORTED_CAPABILITIES` | See [Model configuration](/docs/en/model-config#customize-pinned-model-display-and-capabilities) | -| `ANTHROPIC_DEFAULT_FABLE_MODEL` | See [Model configuration](/docs/en/model-config#environment-variables) | -| `ANTHROPIC_DEFAULT_FABLE_MODEL_DESCRIPTION` | See [Model configuration](/docs/en/model-config#customize-pinned-model-display-and-capabilities) | -| `ANTHROPIC_DEFAULT_FABLE_MODEL_NAME` | See [Model configuration](/docs/en/model-config#customize-pinned-model-display-and-capabilities) | -| `ANTHROPIC_DEFAULT_FABLE_MODEL_SUPPORTED_CAPABILITIES` | See [Model configuration](/docs/en/model-config#customize-pinned-model-display-and-capabilities) | -| `ANTHROPIC_DEFAULT_HAIKU_MODEL` | See [Model configuration](/docs/en/model-config#environment-variables) | -| `ANTHROPIC_DEFAULT_HAIKU_MODEL_DESCRIPTION` | See [Model configuration](/docs/en/model-config#customize-pinned-model-display-and-capabilities) | -| `ANTHROPIC_DEFAULT_HAIKU_MODEL_NAME` | See [Model configuration](/docs/en/model-config#customize-pinned-model-display-and-capabilities) | -| `ANTHROPIC_DEFAULT_HAIKU_MODEL_SUPPORTED_CAPABILITIES` | See [Model configuration](/docs/en/model-config#customize-pinned-model-display-and-capabilities) | -| `ANTHROPIC_DEFAULT_OPUS_MODEL` | See [Model configuration](/docs/en/model-config#environment-variables) | -| `ANTHROPIC_DEFAULT_OPUS_MODEL_DESCRIPTION` | See [Model configuration](/docs/en/model-config#customize-pinned-model-display-and-capabilities) | -| `ANTHROPIC_DEFAULT_OPUS_MODEL_NAME` | See [Model configuration](/docs/en/model-config#customize-pinned-model-display-and-capabilities) | -| `ANTHROPIC_DEFAULT_OPUS_MODEL_SUPPORTED_CAPABILITIES` | See [Model configuration](/docs/en/model-config#customize-pinned-model-display-and-capabilities) | -| `ANTHROPIC_DEFAULT_SONNET_MODEL` | See [Model configuration](/docs/en/model-config#environment-variables) | -| `ANTHROPIC_DEFAULT_SONNET_MODEL_DESCRIPTION` | See [Model configuration](/docs/en/model-config#customize-pinned-model-display-and-capabilities) | -| `ANTHROPIC_DEFAULT_SONNET_MODEL_NAME` | See [Model configuration](/docs/en/model-config#customize-pinned-model-display-and-capabilities) | -| `ANTHROPIC_DEFAULT_SONNET_MODEL_SUPPORTED_CAPABILITIES` | See [Model configuration](/docs/en/model-config#customize-pinned-model-display-and-capabilities) | +| `ANTHROPIC_CUSTOM_MODEL_OPTION_SUPPORTED_CAPABILITIES` | Comma-separated list of [capabilities](/docs/en/model-config#customize-pinned-model-display-and-capabilities) the custom model supports, for example `effort,thinking`. See [Model configuration](/docs/en/model-config#customize-pinned-model-display-and-capabilities) | +| `ANTHROPIC_DEFAULT_FABLE_MODEL` | Model ID that the `fable` alias resolves to, and the ID Claude Code recognizes as Fable 5 for [automatic model fallback](/docs/en/model-config#automatic-model-fallback) on third-party providers. See [Model configuration](/docs/en/model-config#environment-variables) | +| `ANTHROPIC_DEFAULT_FABLE_MODEL_DESCRIPTION` | Display description for the pinned Fable model in the `/model` picker. Defaults to `Custom Fable model` when not set. See [Model configuration](/docs/en/model-config#customize-pinned-model-display-and-capabilities) | +| `ANTHROPIC_DEFAULT_FABLE_MODEL_NAME` | Display name for the pinned Fable model in the `/model` picker. Defaults to the model ID when not set. See [Model configuration](/docs/en/model-config#customize-pinned-model-display-and-capabilities) | +| `ANTHROPIC_DEFAULT_FABLE_MODEL_SUPPORTED_CAPABILITIES` | Comma-separated list of [capabilities](/docs/en/model-config#customize-pinned-model-display-and-capabilities) the pinned Fable model supports, for example `effort,thinking`. See [Model configuration](/docs/en/model-config#customize-pinned-model-display-and-capabilities) | +| `ANTHROPIC_DEFAULT_HAIKU_MODEL` | Model ID that the `haiku` alias resolves to, also used for [background functionality](/docs/en/costs#background-token-usage). See [Model configuration](/docs/en/model-config#environment-variables) | +| `ANTHROPIC_DEFAULT_HAIKU_MODEL_DESCRIPTION` | Display description for the pinned Haiku model in the `/model` picker. Defaults to `Custom Haiku model` when not set. See [Model configuration](/docs/en/model-config#customize-pinned-model-display-and-capabilities) | +| `ANTHROPIC_DEFAULT_HAIKU_MODEL_NAME` | Display name for the pinned Haiku model in the `/model` picker. Defaults to the model ID when not set. See [Model configuration](/docs/en/model-config#customize-pinned-model-display-and-capabilities) | +| `ANTHROPIC_DEFAULT_HAIKU_MODEL_SUPPORTED_CAPABILITIES` | Comma-separated list of [capabilities](/docs/en/model-config#customize-pinned-model-display-and-capabilities) the pinned Haiku model supports, for example `effort,thinking`. See [Model configuration](/docs/en/model-config#customize-pinned-model-display-and-capabilities) | +| `ANTHROPIC_DEFAULT_OPUS_MODEL` | Model ID that the `opus` alias resolves to, and that `opusplan` uses while Plan Mode is active. See [Model configuration](/docs/en/model-config#environment-variables) | +| `ANTHROPIC_DEFAULT_OPUS_MODEL_DESCRIPTION` | Display description for the pinned Opus model in the `/model` picker. When not set, defaults to `Custom Opus model`, or `Custom Opus model (1M context)` if the pinned model ID has the `[1m]` suffix and `CLAUDE_CODE_DISABLE_1M_CONTEXT` isn't turned on. See [Model configuration](/docs/en/model-config#customize-pinned-model-display-and-capabilities) | +| `ANTHROPIC_DEFAULT_OPUS_MODEL_NAME` | Display name for the pinned Opus model in the `/model` picker. Defaults to the model ID when not set. See [Model configuration](/docs/en/model-config#customize-pinned-model-display-and-capabilities) | +| `ANTHROPIC_DEFAULT_OPUS_MODEL_SUPPORTED_CAPABILITIES` | Comma-separated list of [capabilities](/docs/en/model-config#customize-pinned-model-display-and-capabilities) the pinned Opus model supports, for example `effort,thinking`. See [Model configuration](/docs/en/model-config#customize-pinned-model-display-and-capabilities) | +| `ANTHROPIC_DEFAULT_SONNET_MODEL` | Model ID that the `sonnet` alias resolves to, and that `opusplan` uses when Plan Mode is not active. See [Model configuration](/docs/en/model-config#environment-variables) | +| `ANTHROPIC_DEFAULT_SONNET_MODEL_DESCRIPTION` | Display description for the pinned Sonnet model in the `/model` picker. When not set, defaults to `Custom Sonnet model`, or `Custom Sonnet model (1M context)` if the pinned model ID has the `[1m]` suffix and `CLAUDE_CODE_DISABLE_1M_CONTEXT` isn't turned on. See [Model configuration](/docs/en/model-config#customize-pinned-model-display-and-capabilities) | +| `ANTHROPIC_DEFAULT_SONNET_MODEL_NAME` | Display name for the pinned Sonnet model in the `/model` picker. Defaults to the model ID when not set. See [Model configuration](/docs/en/model-config#customize-pinned-model-display-and-capabilities) | +| `ANTHROPIC_DEFAULT_SONNET_MODEL_SUPPORTED_CAPABILITIES` | Comma-separated list of [capabilities](/docs/en/model-config#customize-pinned-model-display-and-capabilities) the pinned Sonnet model supports, for example `effort,thinking`. See [Model configuration](/docs/en/model-config#customize-pinned-model-display-and-capabilities) | | `ANTHROPIC_FOUNDRY_API_KEY` | API key for Microsoft Foundry authentication (see [Microsoft Foundry](/docs/en/microsoft-foundry)) | | `ANTHROPIC_FOUNDRY_AUTH_TOKEN` | {/* min-version: 2.1.203 */}Bearer token for Microsoft Foundry authentication, such as a Microsoft Entra access token. Claude Code sends it as the `Authorization: Bearer` header. Takes precedence over `ANTHROPIC_FOUNDRY_API_KEY` and over the Azure default credential chain. See [Microsoft Foundry](/docs/en/microsoft-foundry). Requires Claude Code v2.1.203 or later | | `ANTHROPIC_FOUNDRY_BASE_URL` | Full base URL for the Microsoft Foundry resource (for example, `https://my-resource.services.ai.azure.com/anthropic`). Alternative to `ANTHROPIC_FOUNDRY_RESOURCE` (see [Microsoft Foundry](/docs/en/microsoft-foundry)) | @@ -180,7 +197,7 @@ Numeric variables such as timeouts, token budgets, and retry counts accept scien | `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#available-settings)) | | `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_ATTRIBUTION_HEADER` | Set to `0` to omit the attribution block (client version and prompt fingerprint) from the start of the system prompt. Disabling it improves prompt-cache hit rates when routing through an [LLM gateway](/docs/en/llm-gateway). Caching on a direct connection to the Anthropic API is unaffected either way | +| `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. {/* min-version: 2.1.181 */}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](/docs/en/llm-gateway) caches on the request body or forwards requests to a third-party provider, or when you connect to Microsoft Foundry directly | | `CLAUDE_CODE_AUTO_COMPACT_WINDOW` | Set the context capacity in tokens used for auto-compaction calculations. Defaults to the model's context window, 200K for standard models or 1M for [extended context](/docs/en/model-config#extended-context) models, except on Sonnet 5, which has its own [default threshold](/docs/en/model-config#sonnet-5-context-window). Use a lower value like `500000` on a 1M model to treat the window as 500K for compaction purposes. The value is capped at the model's actual context window. `CLAUDE_AUTOCOMPACT_PCT_OVERRIDE` is applied as a percentage of this value. Setting this variable decouples the compaction threshold from the status line's `used_percentage`, which always uses the model's full context window | | `CLAUDE_CODE_AUTO_CONNECT_IDE` | Override automatic [IDE connection](/docs/en/vs-code). By default, Claude Code connects automatically when launched inside a supported IDE's integrated terminal. Set to `false` to prevent this. Set to `true` to force a connection attempt when auto-detection fails, such as when tmux obscures the parent terminal. Takes precedence over the [`autoConnectIde`](/docs/en/settings#global-config-settings) global config setting | | `CLAUDE_CODE_AWS_CHAIN_RESOLVE_TIMEOUT_MS` | {/* min-version: 2.1.207 */}Time in milliseconds Claude Code waits for the AWS default credential provider chain to produce credentials before the request fails with [`AWS default-chain credential resolve timed out`](/docs/en/errors#aws-default-chain-credential-resolve-timed-out) (default: `60000`). Raise it when a step in your chain legitimately needs longer, such as a browser-based SSO sign-in with MFA through a wrapper like `aws-vault`. Applies wherever Claude Code signs with the default chain: [Amazon Bedrock](/docs/en/amazon-bedrock#credential-caching-and-resolution-timeout), [Claude Platform on AWS](/docs/en/claude-platform-on-aws), and the [Mantle endpoint](/docs/en/amazon-bedrock#use-the-mantle-endpoint). Requires Claude Code v2.1.207 or later | @@ -205,19 +222,19 @@ Numeric variables such as timeouts, token budgets, and retry counts accept scien | `CLAUDE_CODE_DISABLE_BEDROCK_CONTENT_TYPE_GUARD` | {/* min-version: 2.1.208 */}Set to `1` to skip the check that an [Amazon Bedrock](/docs/en/amazon-bedrock) streaming response carries the `application/vnd.amazon.eventstream` content-type. Without this variable, a response with a different content-type fails with an error naming that content-type, which means a [gateway or proxy is transforming the response](/docs/en/amazon-bedrock#streaming-errors-behind-a-gateway-or-proxy). Set it only when the gateway rewrites the `Content-Type` header but passes the binary event-stream body through unmodified; if the body itself was transformed, requests fail with `Truncated event message received` instead. Requires Claude Code v2.1.208 or later | | `CLAUDE_CODE_DISABLE_BG_EXIT_HANDOFF` | {/* min-version: 2.1.196 */}Set to `1` to stop a [background session's](/docs/en/agent-view) running background shell commands, dynamic workflows, {/* min-version: 2.1.198 */}and, as of v2.1.198, background subagents when the [supervisor](/docs/en/agent-view#the-supervisor-process) stops, restarts, or updates that session's process, instead of handing them to the session's next process. Affects only that handoff: backgrounding a session with `←` or [`/background`](/docs/en/agent-view#from-inside-a-session) still carries in-flight work over, and `CLAUDE_DISABLE_ADOPT` turns off both. Requires Claude Code v2.1.196 or later | | `CLAUDE_CODE_DISABLE_BG_SHELL_PRESSURE_REAP` | {/* min-version: 2.1.193 */}Set to `1` to stop Claude Code from terminating [background shell commands](/docs/en/interactive-mode#background-bash-commands) when the operating system reports memory pressure. By default, on macOS and Linux, Claude Code terminates a background shell started in the main session on a memory-pressure signal once the session has been idle for 30 minutes and no turn or subagent is running. Windows has no memory-pressure signal, so this variable has no effect there. Requires Claude Code v2.1.193 or later | -| `CLAUDE_CODE_DISABLE_BUNDLED_SKILLS` | Set to `1` to disable the [skills](/docs/en/skills) and workflows included with Claude Code: bundled skills and workflows are removed entirely, while built-in commands like `/init` stay typable but are hidden from the model. `/doctor` stays typable like the built-in commands; hide it with `DISABLE_DOCTOR_COMMAND` instead. Skills from plugins, `.claude/skills/`, and `.claude/commands/` are unaffected. Equivalent to the [`disableBundledSkills`](/docs/en/settings#available-settings) setting; `0` doesn't override it | +| `CLAUDE_CODE_DISABLE_BUNDLED_SKILLS` | Set to `1` to disable the [skills](/docs/en/skills) and workflows included with Claude Code: bundled skills and workflows are removed entirely, while built-in commands like `/init` stay typable but are hidden from the model. `/doctor` stays typable like the built-in commands; hide it with `DISABLE_DOCTOR_COMMAND` instead. Skills from plugins, `.claude/skills/`, and `.claude/commands/` are unaffected. Equivalent to the [`disableBundledSkills`](/docs/en/settings#available-settings) setting | | `CLAUDE_CODE_DISABLE_CLAUDE_MDS` | Set to `1` to prevent loading any CLAUDE.md memory files into context, including user, project, and auto-memory files | | `CLAUDE_CODE_DISABLE_CRON` | Set to `1` to disable [scheduled tasks](/docs/en/scheduled-tasks). The `/loop` skill and cron tools become unavailable and any already-scheduled tasks stop firing, including tasks that are already running mid-session | | `CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS` | Set to `1` to strip Anthropic-specific `anthropic-beta` request headers and beta tool-schema fields (such as `defer_loading` and `eager_input_streaming`) from API requests. Use this when a proxy gateway rejects requests with errors like "Unexpected value(s) for the `anthropic-beta` header" or "Extra inputs are not permitted". Standard fields (`name`, `description`, `input_schema`, `cache_control`) are preserved. [MCP tool search](/docs/en/mcp#scale-with-mcp-tool-search) is disabled and all MCP tools load upfront, even when `ENABLE_TOOL_SEARCH` is set | | `CLAUDE_CODE_DISABLE_EXPLORE_PLAN_AGENTS` | {/* min-version: 2.1.198 */}Set to `1` to disable the built-in [Explore and Plan subagents](/docs/en/sub-agents#built-in-subagents). Claude explores with its search tools or the general-purpose subagent instead, and [plan mode](/docs/en/permission-modes#analyze-before-you-edit-with-plan-mode) reads files directly rather than launching Explore and Plan agents. Custom subagents named `Explore` or `Plan` are unaffected. To remove every built-in subagent type in the Agent SDK or non-interactive mode, use `CLAUDE_AGENT_SDK_DISABLE_BUILTIN_AGENTS` instead. Requires Claude Code v2.1.198 or later | | `CLAUDE_CODE_DISABLE_FAST_MODE` | Set to `1` to disable [fast mode](/docs/en/fast-mode) | | `CLAUDE_CODE_DISABLE_FEEDBACK_SURVEY` | Set to `1` to disable the "How is Claude doing?" session quality surveys. Surveys are also disabled when `DISABLE_TELEMETRY`, `DO_NOT_TRACK`, or `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC` is set, unless `CLAUDE_CODE_ENABLE_FEEDBACK_SURVEY_FOR_OTEL` opts back in. To set a sample rate instead of disabling outright, use the [`feedbackSurveyRate`](/docs/en/settings#available-settings) setting. See [Session quality surveys](/docs/en/data-usage#session-quality-surveys) | -| `CLAUDE_CODE_DISABLE_FILE_CHECKPOINTING` | Set to `1` to disable file [checkpointing](/docs/en/checkpointing). The `/rewind` command will not be able to restore code changes | +| `CLAUDE_CODE_DISABLE_FILE_CHECKPOINTING` | Set to `1` to disable file [checkpointing](/docs/en/checkpointing). The `/rewind` command will not be able to restore code changes. Overrides the [`fileCheckpointingEnabled`](/docs/en/settings#available-settings) setting | | `CLAUDE_CODE_DISABLE_GIT_INSTRUCTIONS` | Set to `1` to remove built-in commit and PR workflow instructions and the git status snapshot from Claude's system prompt. Useful when using your own git workflow skills. Takes precedence over the [`includeGitInstructions`](/docs/en/settings#available-settings) setting when set | | `CLAUDE_CODE_DISABLE_LEGACY_MODEL_REMAP` | Set to `1` to prevent automatic remapping of Opus 4.0 and 4.1 to the current Opus version on the Anthropic API. Use when you intentionally want to pin an older model. The remap does not run on Amazon Bedrock, Google Cloud's Agent Platform, or Microsoft Foundry | | `CLAUDE_CODE_DISABLE_MOUSE` | Set to `1` to disable mouse tracking in [fullscreen rendering](/docs/en/fullscreen). Keyboard scrolling with `PgUp` and `PgDn` still works. Use this to keep your terminal's native copy-on-select behavior | | `CLAUDE_CODE_DISABLE_MOUSE_CLICKS` | {/* min-version: 2.1.195 */}Set to `1` to disable click, drag, and hover handling in [fullscreen rendering](/docs/en/fullscreen) while keeping mouse-wheel scrolling. Use this when you want wheel scroll to work inside Claude Code but don't want clicks to position the cursor, expand tool output, or open links. `CLAUDE_CODE_DISABLE_MOUSE` takes precedence when both are set. Requires Claude Code v2.1.195 or later | -| `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC` | Set to any non-empty value to disable nonessential network traffic: auto-updates, telemetry, error reporting, the `/feedback` command, release notes, [gateway model discovery](/docs/en/llm-gateway-connect#add-gateway-models-to-the-model-picker) refreshes, and availability checks such as the [fast mode](/docs/en/fast-mode#use-fast-mode-behind-proxies-and-llm-gateways) check. Feature-flag evaluation is also disabled, so [Remote Control](/docs/en/remote-control#troubleshooting) can't start while this is set. Official plugin marketplace auto-install isn't covered; disable it with `CLAUDE_CODE_DISABLE_OFFICIAL_MARKETPLACE_AUTOINSTALL` | +| `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC` | Set to any non-empty value, such as `1`, to disable nonessential network traffic: auto-updates, telemetry, error reporting, the `/feedback` command, release notes, [gateway model discovery](/docs/en/llm-gateway-connect#add-gateway-models-to-the-model-picker) refreshes, and availability checks such as the [fast mode](/docs/en/fast-mode#use-fast-mode-behind-proxies-and-llm-gateways) check. **Setting it to `0` or `false` still disables this traffic**, unlike most on/off variables; unset the variable to allow it again. Also disables feature-flag fetching, which makes [Remote Control](/docs/en/remote-control#requirements) unavailable. Official plugin marketplace auto-install isn't covered; disable it with `CLAUDE_CODE_DISABLE_OFFICIAL_MARKETPLACE_AUTOINSTALL` | | `CLAUDE_CODE_DISABLE_NONSTREAMING_FALLBACK` | Set to `1` to disable the non-streaming fallback when a streaming request fails mid-stream. Streaming errors propagate to the retry layer instead. Useful when a proxy or gateway causes the fallback to produce duplicate tool execution | | `CLAUDE_CODE_DISABLE_NOTIFICATION_PRESENCE_CHECK` | {/* min-version: 2.1.193 */}Set to `1` to send the `PushNotification` tool's desktop notification even while you are typing in or focused on the terminal. By default the tool skips both the desktop notification and the [mobile push](/docs/en/remote-control#mobile-push-notifications) when it detects recent keyboard activity or terminal focus. This variable disables only that local check, so the server can still suppress the mobile push when it detects that you are active. Requires Claude Code v2.1.193 or later | | `CLAUDE_CODE_DISABLE_OFFICIAL_MARKETPLACE_AUTOINSTALL` | Set to `1` to skip automatic addition of the official plugin marketplace on first run | @@ -257,7 +274,7 @@ Numeric variables such as timeouts, token budgets, and retry counts accept scien | `CLAUDE_CODE_IDE_SKIP_VALID_CHECK` | Set to `1` to skip validation of IDE lockfile entries during connection. Use when auto-connect fails to find your IDE despite it running | | `CLAUDE_CODE_MAX_CONCURRENT_SUBAGENTS` | {/* min-version: 2.1.217 */}How many [subagents](/docs/en/sub-agents#concurrent-subagent-limit) can be running in one session before the Agent tool refuses to spawn another (default: 20). Accepts a positive whole number in plain digits; anything else is ignored, so the variable can adjust the cap but can't disable it. Requires Claude Code v2.1.217 or later | | `CLAUDE_CODE_MAX_CONTEXT_TOKENS` | Override the context window size Claude Code assumes for the active model. {/* min-version: 2.1.193 */}As of v2.1.193, applied directly for model names Claude Code does not recognize as a Claude model; for recognized Claude models it only takes effect when `DISABLE_COMPACT` is also set. Use this when routing to a model through `ANTHROPIC_BASE_URL` whose context window does not match the built-in size for its name | -| `CLAUDE_CODE_MAX_OUTPUT_TOKENS` | Set the maximum number of output tokens for most requests. Defaults and caps vary by model; see [max output tokens](https://platform.claude.com/docs/en/about-claude/models/overview#latest-models-comparison). Increasing this value reduces the effective context window available before [auto-compaction](/docs/en/costs#reduce-token-usage) triggers | +| `CLAUDE_CODE_MAX_OUTPUT_TOKENS` | Set the maximum number of output tokens for most requests. Defaults and caps vary by model; see [max output tokens](https://platform.claude.com/docs/en/about-claude/models/overview#latest-models-comparison). Claude Code defaults to 32000 for model IDs it doesn't recognize, such as gateway-specific names, and lowers values above a model's cap to the cap. Increasing this value reduces the effective context window available before [auto-compaction](/docs/en/costs#reduce-token-usage) triggers | | `CLAUDE_CODE_MAX_RETRIES` | Override the number of times to retry failed API requests (default: 10). {/* min-version: 2.1.186 */}Capped at 15 as of v2.1.186; {/* min-version: 2.1.199 */}as of v2.1.199, `CLAUDE_CODE_RETRY_WATCHDOG` raises the default and removes the cap. For unattended sessions that need to wait through longer outages, set `CLAUDE_CODE_RETRY_WATCHDOG` instead | | `CLAUDE_CODE_MAX_SUBAGENTS_PER_SESSION` | {/* min-version: 2.1.212 */}Cap on the number of [subagents](/docs/en/sub-agents#session-subagent-limit) one session can spawn with the Agent tool (default: 200). When Claude reaches the cap, spawning another subagent fails with an error telling Claude to finish the remaining work directly. Accepts a positive whole number in plain digits with no upper bound; this variable doesn't take the scientific notation or digit-separator spellings. Anything else is ignored and the default applies, so the cap can be raised but not turned off. Requires Claude Code v2.1.212 or later | | `CLAUDE_CODE_MAX_SUBAGENT_SPAWN_DEPTH` | {/* min-version: 2.1.217 */}Number of [subagent layers](/docs/en/sub-agents#let-subagents-spawn-their-own-subagents) allowed below the main conversation {/* min-version: 2.1.219 */}(default: 3). At the default, subagents can spawn their own subagents, and a subagent at the third layer can't spawn further; set `1` to turn nesting off. In v2.1.217 through v2.1.218, the default was 1, so a subagent couldn't spawn its own unless you raised the limit; v2.1.219 raised the default to 3. Accepts a positive whole number in plain digits; anything else is ignored, so the limit can be adjusted but not removed. Requires Claude Code v2.1.217 or later | @@ -294,7 +311,7 @@ Numeric variables such as timeouts, token budgets, and retry counts accept scien | `CLAUDE_CODE_PROXY_RESOLVES_HOSTS` | Set to `1` to allow the proxy to perform DNS resolution instead of the caller. Opt-in for environments where the proxy should handle hostname resolution | | `CLAUDE_CODE_REMOTE` | Set automatically to `true` when Claude Code is running as a [cloud session](/docs/en/claude-code-on-the-web). Read this from a hook or setup script to detect whether you are in a cloud session | | `CLAUDE_CODE_REMOTE_SESSION_ID` | Set automatically in [cloud sessions](/docs/en/claude-code-on-the-web) to the current session's ID. Read this to construct a link back to the session transcript. See [Link output back to the session](/docs/en/cloud-environments#link-output-back-to-the-session) | -| `CLAUDE_CODE_RESUME_INTERRUPTED_TURN` | Set to `1` to automatically resume if the previous session ended mid-turn. Used in SDK mode so the model continues without requiring the SDK to re-send the prompt | +| `CLAUDE_CODE_RESUME_INTERRUPTED_TURN` | Set to `1` to automatically resume if the previous session ended mid-turn. Used in SDK mode so the model continues without requiring the SDK to re-send the prompt. To turn this off, unset the variable, because setting it to `0` still triggers the resume in non-interactive mode | | `CLAUDE_CODE_RESUME_INTERRUPTED_TURN_MAX_AGE_MS` | {/* min-version: 2.1.211 */}Maximum age in milliseconds of the last transcript message for a session that ended mid-turn to continue automatically on resume. When the last message is older than this bound, Claude Code skips both the `CLAUDE_CODE_RESUME_INTERRUPTED_TURN` automatic resume and the injected `CLAUDE_CODE_RESUME_PROMPT` continuation message, and the session starts idle so you continue explicitly. Unset or `0` means no bound; a negative or non-numeric value applies a one-hour bound. Spawn scripts for long-running agents can set this so a restart against an old transcript doesn't re-run a stale prompt. Claude Code sets a one-hour bound itself when it restarts a crashed [agent view](/docs/en/agent-view) session that inherited its conversation from an interactive session. Requires Claude Code v2.1.211 or later | | `CLAUDE_CODE_RESUME_PROMPT` | Override the continuation message injected when resuming a session that ended mid-turn. Defaults to `Continue from where you left off.`. Spawn scripts for long-running agents can set this to a more directive boot message. An empty string uses the default | | `CLAUDE_CODE_RETRY_WATCHDOG` | {/* min-version: 2.1.186 */}Set to `1` for unattended sessions such as eval harnesses, CI jobs, or remote workers. Retries `429` and `529` capacity errors indefinitely instead of failing after `CLAUDE_CODE_MAX_RETRIES` attempts. The watchdog backs off up to 5 minutes between attempts, or until the limit resets when the response carries a rate-limit reset time, so a session that hits a usage limit waits out the remaining window. {/* min-version: 2.1.199 */}As of v2.1.199 it also raises the default retry count for other transient errors, such as server errors, timeouts, and dropped connections, to 300, roughly three hours of backoff, and removes the cap of 15 on `CLAUDE_CODE_MAX_RETRIES` if you set that variable explicitly. Requires Claude Code v2.1.186 or later | @@ -317,7 +334,7 @@ Numeric variables such as timeouts, token budgets, and retry counts accept scien | `CLAUDE_CODE_SKIP_PROMPT_HISTORY` | Set to `1` to skip writing prompt history and session transcripts to disk. Sessions started with this variable set do not appear in `--resume`, `--continue`, or up-arrow history. Useful for ephemeral scripted sessions | | `CLAUDE_CODE_SKIP_VERTEX_AUTH` | Skip Google authentication for Google Cloud's Agent Platform (for example, when using an LLM gateway) | | `CLAUDE_CODE_STOP_HOOK_BLOCK_CAP` | Maximum number of consecutive times a [Stop](/docs/en/hooks#stop) or [SubagentStop](/docs/en/hooks#subagentstop) hook may block the turn from ending before Claude Code overrides it and ends the turn anyway (default: 8). Set to `0` to disable the cap. Raise this if your hook legitimately needs more iterations to resolve | -| `CLAUDE_CODE_SUBAGENT_MODEL` | See [Model configuration](/docs/en/model-config). {/* min-version: 2.1.196 */}As of v2.1.196, setting it to `inherit` is the same as leaving it unset; earlier versions treated `inherit` as an override that forced every subagent onto the main conversation's model | +| `CLAUDE_CODE_SUBAGENT_MODEL` | The model Claude Code uses for all [subagents](/docs/en/sub-agents#choose-a-model), [agent teams](/docs/en/agent-teams), and agents in a [workflow](/docs/en/workflows). Accepts an alias such as `haiku` or a full model name, and takes precedence over the per-invocation `model` parameter and the subagent definition's `model` frontmatter. See [Model configuration](/docs/en/model-config#environment-variables). {/* min-version: 2.1.196 */}Setting it to `inherit` is the same as leaving it unset; before v2.1.196, `inherit` was an override that forced every subagent onto the main conversation's model | | `CLAUDE_CODE_SUBPROCESS_ENV_SCRUB` | Set to `1` to strip Anthropic and cloud provider credentials from subprocess environments (Bash tool, hooks, MCP stdio servers). The parent Claude process keeps these credentials for API calls, but child processes cannot read them, reducing exposure to prompt injection attacks that attempt to exfiltrate secrets via shell expansion. On Linux, this also runs Bash subprocesses in an isolated PID namespace so they cannot read host process environments via `/proc`; as a side effect, `ps`, `pgrep`, and `kill` cannot see or signal host processes. `claude-code-action` sets this automatically when `allowed_non_write_users` is configured | | `CLAUDE_CODE_SYNC_PLUGIN_INSTALL` | Set to `1` in non-interactive mode (the `-p` flag) to wait for plugin installation to complete before the first query. Without this, plugins install in the background and may not be available on the first turn. Combine with `CLAUDE_CODE_SYNC_PLUGIN_INSTALL_TIMEOUT_MS` to bound the wait | | `CLAUDE_CODE_SYNC_PLUGIN_INSTALL_TIMEOUT_MS` | Timeout in milliseconds for synchronous plugin installation. When exceeded, Claude Code proceeds without plugins and logs an error. No default: without this variable, synchronous installation waits until complete | @@ -328,7 +345,7 @@ Numeric variables such as timeouts, token budgets, and retry counts accept scien | `CLAUDE_CODE_TASK_LIST_ID` | Share a task list across sessions. Set the same ID in multiple Claude Code instances to coordinate on a shared task list. See [Task list](/docs/en/interactive-mode#task-list) | | `CLAUDE_CODE_TEAM_TEARDOWN_PARK_TIMEOUT_MS` | {/* min-version: 2.1.206 */}Override, in milliseconds, how long a non-interactive session waits at exit for its [agent team](/docs/en/agent-teams) to finish tearing down. Accepts 1000 to 60000; an out-of-range value is ignored and the default of 10000 applies. Requires Claude Code v2.1.206 or later | | `CLAUDE_CODE_TMPDIR` | Override the temp directory used for internal temp files. Claude Code appends `/claude-{uid}/` on Unix or `/claude/` on Windows to this path. Default: `/tmp` on macOS, `os.tmpdir()` on Linux and Windows. {/* min-version: 2.1.161 */}As of v2.1.161, on macOS and Linux, [sandboxed](/docs/en/sandboxing) Bash subprocesses receive a short fallback `$TMPDIR` under the system default when your override is a long path, since some tools fail when temp paths get too long. Unsandboxed Bash commands inherit your shell's `$TMPDIR` unchanged. Claude Code's own temp files always use your override | -| `CLAUDE_CODE_TMUX_TRUECOLOR` | Set to `1` to allow 24-bit truecolor output inside tmux. 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_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_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) | @@ -348,14 +365,14 @@ Numeric variables such as timeouts, token budgets, and retry counts accept scien | `CLAUDE_STREAM_IDLE_TIMEOUT_MS` | Timeout in milliseconds before the streaming idle watchdog closes a stalled connection. When you set this variable explicitly, the minimum is `300000` (5 minutes); lower values are silently clamped to absorb extended thinking pauses and proxy buffering. When unset, the event-level watchdog defaults to 300 seconds and the byte-level watchdog defaults to 180 seconds on direct Anthropic API connections (300 seconds on Claude Platform on AWS and other providers). The unset 180-second byte-watchdog default is a separate value and is not subject to the 5-minute clamp. The body idle timeout described under `API_FORCE_IDLE_TIMEOUT` applies independently. On Amazon Bedrock, also applies when `CLAUDE_ENABLE_BYTE_WATCHDOG_BEDROCK=1` | | `DEBUG` | Set to `1` to enable debug mode, equivalent to launching with [`--debug`](/docs/en/cli-reference#cli-flags). Debug logs are written to `~/.claude/debug/<session-id>.txt`, or to the path set by `CLAUDE_CODE_DEBUG_LOGS_DIR`. Only the truthy values `1`, `true`, `yes`, and `on` enable debug mode, so namespace patterns like `DEBUG=express:*` set for other tools do not trigger it | | `DISABLE_AUTOUPDATER` | Set to `1` to disable automatic background updates. Manual `claude update` still works. Use `DISABLE_UPDATES` to block both | -| `DISABLE_AUTO_COMPACT` | Set to `1` to disable automatic compaction when approaching the context limit. The manual `/compact` command remains available. Use when you want explicit control over when compaction occurs | +| `DISABLE_AUTO_COMPACT` | Set to `1` to disable automatic compaction when approaching the context limit. The manual `/compact` command remains available. Use when you want explicit control over when compaction occurs. Overrides the [`autoCompactEnabled`](/docs/en/settings#available-settings) setting | | `DISABLE_COMPACT` | Set to `1` to disable all compaction: both automatic compaction and the manual `/compact` command | | `DISABLE_COST_WARNINGS` | Set to `1` to disable cost warning messages | | `DISABLE_DOCTOR_COMMAND` | Set to `1` to hide the [`/doctor`](/docs/en/commands#all-commands) setup checkup skill and its `/checkup` alias. Useful for managed deployments where users shouldn't run setup diagnostics from a session. Doesn't affect the `claude doctor` terminal command. {/* min-version: 2.1.205 */}Before v2.1.205, this variable hid the `/doctor` diagnostics screen command | -| `DISABLE_ERROR_REPORTING` | Set to `1` to opt out of error reporting | +| `DISABLE_ERROR_REPORTING` | Set to any non-empty value, such as `1`, to opt out of error reporting. **Setting it to `0` or `false` still opts out**, unlike most on/off variables; unset the variable to turn error reporting back on | | `DISABLE_EXTRA_USAGE_COMMAND` | Set to `1` to hide the `/usage-credits` command that lets users purchase additional usage beyond rate limits | | `DISABLE_FEEDBACK_COMMAND` | Set to `1` to disable the `/feedback` command. {/* min-version: 2.1.212 */}Also disables `/bug` and `/share`, which report through the same path; before v2.1.212 they were aliases of `/feedback`, so the command was disabled under every name. The older name `DISABLE_BUG_COMMAND` is also accepted | -| `DISABLE_GROWTHBOOK` | Set to `1` to disable GrowthBook feature-flag fetching and use code defaults for every flag. Telemetry event logging stays on unless `DISABLE_TELEMETRY` is also set. [Remote Control](/docs/en/remote-control#troubleshooting) can't start while this is set | +| `DISABLE_GROWTHBOOK` | Set to `1` to disable GrowthBook feature-flag fetching and use code defaults for every flag. This makes [Remote Control](/docs/en/remote-control#requirements) unavailable. Telemetry event logging stays on unless `DISABLE_TELEMETRY` is also set | | `DISABLE_INSTALLATION_CHECKS` | Set to `1` to disable installation warnings. Use only when manually managing the installation location, as this can mask issues with standard installations | | `DISABLE_INSTALL_GITHUB_APP_COMMAND` | Set to `1` to hide the `/install-github-app` command. Already hidden when using third-party providers (Amazon Bedrock, Google Cloud's Agent Platform, or Microsoft Foundry) | | `DISABLE_INTERLEAVED_THINKING` | Set to `1` to prevent sending the interleaved-thinking beta header. Useful when your LLM gateway or provider does not support [interleaved thinking](https://platform.claude.com/docs/en/build-with-claude/extended-thinking#interleaved-thinking) | @@ -366,24 +383,24 @@ Numeric variables such as timeouts, token budgets, and retry counts accept scien | `DISABLE_PROMPT_CACHING_HAIKU` | Set to `1` to disable prompt caching for Haiku models | | `DISABLE_PROMPT_CACHING_OPUS` | Set to `1` to disable prompt caching for Opus models | | `DISABLE_PROMPT_CACHING_SONNET` | Set to `1` to disable prompt caching for Sonnet models | -| `DISABLE_TELEMETRY` | Set to `1` to opt out of telemetry. Telemetry events do not include user data like code, file paths, or bash commands. Also disables feature-flag fetching with the same effect as `DISABLE_GROWTHBOOK`, so some flagged features may be unavailable and [Remote Control](/docs/en/remote-control#troubleshooting) can't start | +| `DISABLE_TELEMETRY` | Set to any non-empty value, such as `1`, to opt out of telemetry. **Setting it to `0` or `false` still opts out**, unlike most on/off variables; unset the variable to turn telemetry back on. Telemetry events do not include user data like code, file paths, or bash commands. Also disables feature-flag fetching with the same effect as `DISABLE_GROWTHBOOK`, which makes [Remote Control](/docs/en/remote-control#requirements) unavailable | | `DISABLE_UPDATES` | Set to `1` to block all updates including manual `claude update` and `claude install`. Stricter than `DISABLE_AUTOUPDATER`. Use when distributing Claude Code through your own channels and users should not self-update | | `DISABLE_UPGRADE_COMMAND` | Set to `1` to hide the `/upgrade` command | -| `DO_NOT_TRACK` | Set to `1` to opt out of telemetry. Equivalent to setting `DISABLE_TELEMETRY`, including that [Remote Control](/docs/en/remote-control#troubleshooting) can't start. Claude Code honors this as the cross-tool convention recognized by many developer CLIs | +| `DO_NOT_TRACK` | Set to `1` to opt out of telemetry, with the same effect as `DISABLE_TELEMETRY`, including making [Remote Control](/docs/en/remote-control#requirements) unavailable. Claude Code reads this variable as a standard boolean, so `0` leaves telemetry on, and honors it as the cross-tool convention recognized by many developer CLIs | | `ENABLE_CLAUDEAI_MCP_SERVERS` | Set to `false` to disable [claude.ai MCP servers](/docs/en/mcp#use-mcp-servers-from-claude-ai) in Claude Code. Enabled by default for logged-in users. To disable per-project or per-org, set [`disableClaudeAiConnectors`](/docs/en/settings#available-settings) in settings instead | | `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 1-hour TTL automatically. 1-hour cache writes are billed at a higher rate | | `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: all MCP tools deferred by default, but loaded upfront on Google Cloud's Agent Platform or when `ANTHROPIC_BASE_URL` points to a non-first-party host. Values: `true` (always defer and send the beta header, requests fail on Google Cloud's Agent Platform models earlier than Sonnet 4.5 or Opus 4.5, or on proxies that do not support `tool_reference`), `auto` (threshold mode: load upfront if tools fit within 10% of context), `auto:N` (custom threshold, e.g., `auto:5` for 5%), `false` (load all upfront). Ignored when `CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS` is set, which forces all tools to load upfront | -| `FALLBACK_FOR_ALL_PRIMARY_MODELS` | Set to any non-empty value to make all models, not only Opus, stop retrying with a repeated-overload error when no fallback model is configured. {/* min-version: 2.1.160 */}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 | +| `ENABLE_TOOL_SEARCH` | Controls [MCP tool search](/docs/en/mcp#scale-with-mcp-tool-search). Unset: all MCP tools deferred by default, but loaded upfront on Google Cloud's Agent Platform, when `ANTHROPIC_BASE_URL` points to a non-first-party host, or on a Microsoft Foundry deployment hosted on Azure. Values: `true` (always defer and send the beta header, except on a Microsoft Foundry deployment hosted on Azure, where the server-side rejection still forces upfront loading; requests fail on Google Cloud's Agent Platform models earlier than Sonnet 4.5 or Opus 4.5, or on proxies that do not support `tool_reference`), `auto` (threshold mode: load upfront if tools fit within 10% of context), `auto:N` (custom threshold, e.g., `auto:5` for 5%), `false` (load all upfront). Ignored when `CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS` is set, which forces all tools to load upfront | +| `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 5, 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. {/* min-version: 2.1.160 */}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 | | `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 | +| `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. Claude Code parses this value as a number, not a boolean, so word spellings such as `false`, `no`, or `off` enable hyperlinks rather than disabling them | | `FORCE_PROMPT_CACHING_5M` | Set to `1` to force the 5-minute prompt cache TTL even when 1-hour TTL would otherwise apply. Overrides `ENABLE_PROMPT_CACHING_1H` | | `HTTP_PROXY` | Specify HTTP proxy server for network connections | | `HTTPS_PROXY` | Specify HTTPS proxy server for network connections | -| `IS_DEMO` | Set to `1` to enable demo mode: hides your email and organization name from the header and `/status` output, and skips onboarding. Useful when streaming or recording a session | +| `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 times to retry when the model's response fails validation against the [`--json-schema`](/docs/en/cli-reference#cli-flags) in non-interactive mode (the `-p` flag). Defaults to 5 | -| `MAX_THINKING_TOKENS` | Override the [extended thinking](https://platform.claude.com/docs/en/build-with-claude/extended-thinking) token budget. The ceiling is the model's [max output tokens](https://platform.claude.com/docs/en/about-claude/models/overview#latest-models-comparison) minus one. Set to `0` to disable thinking on the Anthropic API except on Fable 5, which cannot have thinking turned off. On [third-party providers](/docs/en/third-party-integrations), `0` omits the `thinking` parameter instead, and models with [adaptive reasoning](/docs/en/model-config#adjust-effort-level) may still think. For nonzero values on adaptive reasoning models, the budget is ignored unless adaptive reasoning is disabled via `CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING` | +| `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 5, which cannot have thinking turned off; on [third-party providers](/docs/en/third-party-integrations), `0` omits the `thinking` parameter instead. Nonzero values are ignored on adaptive reasoning models unless `CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING` is set | | `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. {/* min-version: 2.1.142 */}As of Claude Code v2.1.142, MCP startup is non-blocking by default: servers connect in the background and their tools become available as they finish. Set to `0` to restore the blocking 5-second connection wait. Servers configured with [`alwaysLoad: true`](/docs/en/mcp#exempt-a-server-from-deferral) still block startup regardless, since their tools must be present when the first prompt is built | | `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 but won't appear until the next query. Distinct from `MCP_TIMEOUT`, which bounds an individual server's connect attempt | diff --git a/content/en/docs/claude-code/errors.md b/content/en/docs/claude-code/errors.md index 21b14e035..20bed53be 100644 --- a/content/en/docs/claude-code/errors.md +++ b/content/en/docs/claude-code/errors.md @@ -88,6 +88,7 @@ Match the message you see in your terminal to a section below. | `Error: Workspace not trusted` when starting Remote Control | [Command-line errors](#workspace-not-trusted-when-starting-remote-control) | | `Could not import <server>: <reason>` | [Command-line errors](#could-not-import-a-server-from-claude-desktop) | | `Error: MCP tool <name> (passed via --permission-prompt-tool) not found` | [Command-line errors](#mcp-permission-prompt-tool-not-found) | +| ``Shell command failed for pattern "!`git ... origin/HEAD...`"`` | [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) | | `Diff is too large for ultrareview` / `PR #<N> is too large for ultrareview` | [Command-line errors](#diff-is-too-large-for-ultrareview) | | `Failed to resume the conversation` | [Command-line errors](#failed-to-resume-the-conversation) | @@ -112,23 +113,33 @@ Match the message you see in your terminal to a section below. ## Automatic retries -Claude Code retries transient failures before showing you an error. Server errors, overloaded responses, request timeouts, temporary 429 throttles, and dropped connections are all retried up to 10 times with exponential backoff. {/* min-version: 2.1.198 */}As of v2.1.198, this covers connections that drop in the middle of a response before any visible output has streamed: Claude Code re-issues the request with the same backoff and the turn continues instead of stopping with a connection error. {/* min-version: 2.1.199 */}As of v2.1.199, temporary 429 throttles that don't carry your plan's quota headers are also retried when you're signed in with a claude.ai subscription; earlier versions retried them only for API key and Enterprise sign-ins. +Claude Code retries transient failures up to 10 times with exponential backoff before showing you an error. It doesn't always retry a failure that arrives partway through Claude's response. When you see one of the errors on this page, Claude Code has already exhausted those retries, unless the failure is one it doesn't retry. -Some failure classes aren't retried, because a retry can't succeed: +Claude Code retries these failures: -* {/* min-version: 2.1.199 */}As of v2.1.199, a TLS certificate validation failure, such as a TLS-inspecting proxy, a missing `NODE_EXTRA_CA_CERTS` bundle, or an expired certificate, fails on the first attempt so the fix appears immediately instead of after the full retry budget. See [SSL certificate errors](#ssl-certificate-errors). Transient TLS conditions such as a handshake timeout still retry. -* {/* min-version: 2.1.199 */}As of v2.1.199, a server error that arrives after Claude has already streamed visible output keeps the partial response and appends an [incomplete-response notice](#the-response-above-may-be-incomplete) instead of retrying, since re-running the request could execute the same tools twice. Earlier versions discarded the partial output and reported the turn as an error. -* {/* min-version: 2.1.208 */}An [Amazon Bedrock streaming response with an unexpected content-type](#bedrock-streaming-response-has-an-unexpected-content-type) fails on the first attempt, because the gateway or proxy rewriting the response would rewrite the retry the same way. Requires Claude Code v2.1.208 or later. +* Server errors, overloaded responses, and request timeouts. +* Dropped connections. {/* min-version: 2.1.198 */}This covers a connection that drops in the middle of a request, before any part of Claude's response has completed: Claude Code re-issues the request with the same backoff, and the turn continues. Before v2.1.198, Claude Code stopped the turn with a connection error when the connection dropped mid-response, before any visible output had streamed. +* Temporary 429 throttles. {/* min-version: 2.1.199 */}When you're signed in with a claude.ai subscription, this includes 429 throttles that don't carry your plan's quota headers. Before v2.1.199, Claude Code retried those throttles only for API key and Enterprise sign-ins. + +Claude Code doesn't retry these failures: + +* {/* min-version: 2.1.199 */}A TLS certificate validation failure, such as a TLS-inspecting proxy, a missing `NODE_EXTRA_CA_CERTS` bundle, or an expired certificate. Claude Code reports the error on the first attempt, so you can fix the certificate setup right away; see [SSL certificate errors](#ssl-certificate-errors). Claude Code still retries transient TLS conditions such as a handshake timeout. Before v2.1.199, Claude Code retried certificate failures through the full retry budget before showing the error. +* {/* min-version: 2.1.199 */}A server error, dropped connection, or stalled stream that arrives partway through a response, once Claude has completed a block of text or a tool call in that response: Claude Code could execute the same tool calls twice if it re-ran the request, so it keeps the completed output and ends the turn with an [incomplete-response notice](#the-response-above-may-be-incomplete). Before v2.1.199, Claude Code discarded the partial output and reported the whole turn as an error when a server error arrived mid-stream. +* {/* min-version: 2.1.208 */}An [Amazon Bedrock streaming response with an unexpected content-type](#bedrock-streaming-response-has-an-unexpected-content-type), because the gateway or proxy rewriting the response would rewrite the retry the same way. Requires Claude Code v2.1.208 or later. + +### What you see while Claude Code retries or waits While retrying, the spinner shows a `Retrying in Ns · attempt x/y` countdown after an error label. The label names the specific reason from the first attempt for failures you can act on right away: the network is down, a TLS handshake failed, or you hit a rate limit. For other errors it reads `API error` at first. {/* min-version: 2.1.198 */}As of v2.1.198 it switches to the specific reason from the third attempt, or on the final attempt when `CLAUDE_CODE_MAX_RETRIES` allows fewer than three; earlier versions switch only on the final attempt. {/* min-version: 2.1.198 */}As of v2.1.198, the usual spinner tip is suppressed during retries. Once the error reason is revealed, if the failure is a 529 overload the line below the countdown also names where to check service status: `status.claude.com` on the Anthropic API, or the provider or gateway host named in the message on other configurations. -{/* min-version: 2.1.185 */}If no data arrives on the response stream for 20 seconds while a request is still pending, the spinner shows `Waiting for API response · will retry in … · check your network` before any retry has started. The request has not failed yet: the countdown runs to the point where Claude Code aborts the stalled connection and retries, so the banner clears on its own once data resumes or the retry succeeds. As of v2.1.185 the threshold is 20 seconds; earlier versions show the banner after 10 seconds with different wording. If it reappears on every attempt, treat it as a [network issue](#unable-to-connect-to-api). +{/* min-version: 2.1.185 */}If no data arrives on the response stream for 20 seconds while a request is still pending, the spinner shows `Waiting for API response · will retry in … · check your network` before any retry has started. The request has not failed yet: the countdown runs to the point where Claude Code aborts the stalled connection, after which the turn either retries or ends with an error such as [The response above may be incomplete](#the-response-above-may-be-incomplete). The banner clears on its own once data resumes or a retry succeeds; if it reappears on every attempt, treat it as a [network issue](#unable-to-connect-to-api). As of v2.1.185 the threshold is 20 seconds; earlier versions show the banner after 10 seconds with different wording. {/* min-version: 2.1.214 */}While Claude is consulting the [advisor](/docs/en/advisor), the banner appears after 90 seconds without data instead of 20, because a long advisor review can send nothing for well over 20 seconds. Before v2.1.214, the 20-second threshold applied during advisor calls too, so the banner appeared during advisor reviews even when nothing was wrong. -When you see one of the errors on this page, those retries have already been exhausted, unless it belongs to a class that isn't retried, such as a certificate-validation failure. You can tune the behavior with these environment variables: +### Tune retry behavior + +You can tune retry behavior with these environment variables: | Variable | Default | Effect | | :------------------------------------------- | :------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | @@ -138,7 +149,7 @@ When you see one of the errors on this page, those retries have already been exh ## Server errors -Most of these errors come from the inference provider's infrastructure: Anthropic's on the Anthropic API, and that provider's on Amazon Bedrock, Google Cloud's Agent Platform, Microsoft Foundry, or a custom gateway. [Auto mode cannot determine the safety of an action](#auto-mode-cannot-determine-the-safety-of-an-action) and [Agent terminated early due to an API error](#agent-terminated-early-due-to-an-api-error) also cover causes on your side, such as an Amazon Bedrock account that can't invoke the classifier model or a subagent that hit a usage limit. +Most of these errors come from the inference provider: Anthropic's service on the Anthropic API, and the service behind that provider's endpoint on Amazon Bedrock, Google Cloud's Agent Platform, Microsoft Foundry, or a custom gateway. [Auto mode cannot determine the safety of an action](#auto-mode-cannot-determine-the-safety-of-an-action) and [Agent terminated early due to an API error](#agent-terminated-early-due-to-an-api-error) also cover causes on your side, such as an Amazon Bedrock account that can't invoke the classifier model or a subagent that hit a usage limit. ### API Error: 500 Internal server error @@ -195,7 +206,7 @@ This can happen during periods of high load or when the model is generating a ve ### The response above may be incomplete -A streaming response failed after Claude had already produced visible output. Re-sending the request could run the same tool calls twice, so Claude Code keeps what already streamed and appends this notice instead of discarding the turn. Which variant you see names the cause: +A streaming request failed after Claude had started producing a response. Re-sending the request could run the same tool calls twice, so Claude Code keeps the output Claude completed and appends this notice instead of discarding the turn. Which variant you see names the cause: ```text theme={null} API Error: Server error mid-response. The response above may be incomplete. @@ -207,11 +218,15 @@ API Error: Response stalled mid-stream. The response above may be incomplete. * `Connection closed mid-response`: the connection dropped. * `Response stalled mid-stream`: the stream stopped sending data. +Claude Code never shows this notice for a failure that happens before Claude starts producing a response: at that point it either retries the failure or ends the turn with a different error. See [Automatic retries](#automatic-retries). + **What to do:** -* Read the response that streamed. Nothing has been lost, but the final sentences or tool calls may be missing. -* Reply with `continue` to have Claude pick up where it stopped -* If the same error appears before any visible output, Claude Code retries the request instead of finalizing it. See [Automatic retries](#automatic-retries). +* In an interactive session, read the response that remains on screen: Claude Code keeps every block Claude completed before the error, but discards an interrupted final block when the turn ends, so the final sentences or tool calls may be missing. Reply with `continue` to have Claude pick up from its last completed block. +* In [non-interactive mode](/docs/en/headless) (`-p`): + * {/* min-version: 2.1.219 */}With the default text output, Claude Code prints the last completed block of text it still holds from earlier in the turn, followed by this message. When it holds none, Claude Code prints this message alone, for example because Claude completed only tool calls before the error, or because Claude Code compacted the conversation mid-turn and cleared that text. Before v2.1.219, Claude Code printed only this message in `-p` text output and dropped the response it had already produced. + * With `--output-format json` or `stream-json`, Claude Code reports this message in the `result` field. + * To continue the turn, resume the session and send `continue` as described in [Continue conversations](/docs/en/headless#continue-conversations). ### Auto mode cannot determine the safety of an action @@ -432,7 +447,7 @@ Could not resolve authentication method. Expected one of apiKey, authToken, cred * Upgrade to v2.1.174 or later if this appears in a background or cloud session and your credentials are already configured * Confirm `ANTHROPIC_API_KEY`, `CLAUDE_CODE_OAUTH_TOKEN`, or your cloud provider credentials are set in the environment that launches the worker, not only in your interactive shell -* For the Agent SDK, see [authentication setup](/docs/en/agent-sdk/overview#get-started) +* For the Agent SDK, see [authentication setup in the quickstart](/docs/en/agent-sdk/quickstart#setup) * Run `/status` in an interactive session in the same environment to confirm which credential source resolves ### Invalid API key @@ -721,7 +736,9 @@ If `curl` succeeds but Claude Code still fails, the cause is usually something b ### Socket is closed -The connection carrying a streaming response was closed while the response was still arriving, and the failure surfaced with the text `Socket is closed`. This happens almost exclusively on Windows behind a corporate proxy, when the proxy drops an established tunnel mid-response. Claude Code treats this as a dropped connection and [retries it automatically](#automatic-retries), so the turn continues. Before v2.1.214, the retry didn't cover this failure, and the turn stopped with an error containing `Socket is closed`. +`Socket is closed` means the connection carrying a streaming response was closed while the response was still arriving. The most common cause is a corporate proxy on Windows dropping an established tunnel mid-response. + +When nothing in the interrupted response had completed yet, Claude Code treats this as a dropped connection and [retries it automatically](#automatic-retries), so the turn continues. Once Claude has completed a block of text or a tool call in the response, Claude Code keeps that output and ends the turn with an [incomplete-response notice](#the-response-above-may-be-incomplete) instead. Before v2.1.214, Claude Code didn't retry this failure, and the turn stopped with an error containing `Socket is closed`. **What to do:** @@ -1161,7 +1178,7 @@ The usual cause is a proxy or gateway that closes a long transfer before it fini ## Command-line errors -These errors come from the `claude` command line and its subcommands. Claude Code prints them before running your prompt or sending any API request. +These errors come from the `claude` command line, its subcommands, and commands such as `/security-review` that gather context by running shell commands before their prompt runs. ### Conflict between --bg and --print @@ -1258,6 +1275,27 @@ The list after `Available MCP tools:` names the MCP tools that were connected wh * Confirm the tool name matches the `mcp__<server>__<tool>` name the server exposes * If the server needs longer than 30 seconds to start, raise [`MCP_TIMEOUT`](/docs/en/env-vars) +<h3 id="security-review-fails-without-origin-head"> + /security-review fails without origin/HEAD +</h3> + +[`/security-review`](/docs/en/commands#all-commands) builds its review context by diffing your branch against `origin/HEAD`, the local ref that records which branch is the default on your `origin` remote. When that ref doesn't exist, the git commands that gather the diff fail and the review stops before it starts. + +```text theme={null} +Error: Shell command failed for pattern "!`git diff --name-only origin/HEAD...`": [stderr] +fatal: ambiguous argument 'origin/HEAD...': unknown revision or path not in the working tree. +Use '--' to separate paths from revisions, like this: +'git <command> [<revision>...] -- [<file>...]' +``` + +The quoted command varies between runs: the review starts several `git` commands against `origin/HEAD` at once and reports whichever fails first, so you may see `git log` or a different `git diff` in its place. Git creates the ref only when the remote's default branch is both advertised by the remote and covered by your fetch refspec. A full `git clone` of a remote with commits meets both conditions. Single-branch and CI checkouts fetch too narrow a refspec, a server-side HEAD left pointing at a branch nobody pushed advertises no default, and a repository with no `origin` remote, or one you never fetched, provides neither. + +**What to do:** + +* Create the ref by naming your remote's default branch: `git remote set-head origin <default-branch>`. This works whenever the local tracking ref `origin/<default-branch>` exists. If it doesn't, as in single-branch clones, fetch the branch first: `git remote set-branches --add origin <branch> && git fetch origin`, then rerun the set-head command. Rerun `/security-review`. +* If you'd rather not name the branch, run `git fetch origin && git remote set-head origin --auto`, which asks the remote which branch is its default. It fails with `error: Cannot determine remote HEAD` when the remote advertises no default branch, because it is empty or its HEAD points at a branch nobody pushed; name the branch explicitly instead. It fails with `error: Not a valid ref` when your clone doesn't fetch that branch; widen the refspec as above first. +* If the repository has no remote, add one with `git remote add origin <url>` and fetch before creating the ref. If the remote is empty, push your branch first with `git push -u origin HEAD` and name that branch in the set-head command; `origin/HEAD` then points at the branch you just pushed, so `/security-review` sees an empty diff until the branch diverges from it. + <h3 id="input-must-be-provided-when-using-print"> Input must be provided when using --print </h3> diff --git a/content/en/docs/claude-code/feature-availability.md b/content/en/docs/claude-code/feature-availability.md index 9e9c6bf41..a36220b3a 100644 --- a/content/en/docs/claude-code/feature-availability.md +++ b/content/en/docs/claude-code/feature-availability.md @@ -19,7 +19,7 @@ How you authenticate determines which features Claude Code can reach. For a sing * **Amazon Bedrock**: you use Claude models from the Amazon Bedrock model catalog and set `CLAUDE_CODE_USE_BEDROCK`. The [Mantle endpoint](/docs/en/amazon-bedrock#use-the-mantle-endpoint) (`CLAUDE_CODE_USE_MANTLE`) is covered by this column * **Claude Platform on AWS**: you bought Claude through AWS Marketplace but call the Anthropic API, and set `CLAUDE_CODE_USE_ANTHROPIC_AWS` * **Google Cloud's Agent Platform**: Google-operated; you set `CLAUDE_CODE_USE_VERTEX` -* **Microsoft Foundry**: Anthropic-operated on Azure; you set `CLAUDE_CODE_USE_FOUNDRY` +* **Microsoft Foundry**: Anthropic-operated; you set `CLAUDE_CODE_USE_FOUNDRY` ### Features available on every provider @@ -34,7 +34,7 @@ These work on every provider: Three of these have provider-specific differences: -* **MCP servers**: [connectors from claude.ai](/docs/en/mcp#use-mcp-servers-from-claude-ai) load only when your claude.ai subscription is the active authentication method, and [tool search](/docs/en/mcp#configure-tool-search) is off by default on Google Cloud's Agent Platform and when `ANTHROPIC_BASE_URL` points to a non-first-party host +* **MCP servers**: [connectors from claude.ai](/docs/en/mcp#use-mcp-servers-from-claude-ai) load only when your claude.ai subscription is the active authentication method. [Tool search](/docs/en/mcp#configure-tool-search) is off by default on Google Cloud's Agent Platform and when `ANTHROPIC_BASE_URL` points to a non-first-party host, and isn't supported on Microsoft Foundry [deployments hosted on Azure](https://platform.claude.com/docs/en/build-with-claude/claude-in-microsoft-foundry#hosting-options) * **Subagents**: the built-in [Explore subagent](/docs/en/sub-agents#built-in-subagents) caps its inherited model at Opus on the Claude API, and inherits the main conversation's model directly on any other provider, including Claude Platform on AWS * **[Commands](/docs/en/commands#all-commands)**: `/design-sync` and `/radio` are unavailable on Amazon Bedrock, Google Cloud's Agent Platform, Microsoft Foundry, and Claude Platform on AWS, and `/voice` requires a claude.ai account @@ -80,7 +80,7 @@ These features work in the local CLI but depend on a server-side capability that <td>✗</td> <td>✓</td> <td>See note <sup><a href="#fn1">1</a></sup></td> - <td>✓</td> + <td>✓ ([deployments hosted on Anthropic](https://platform.claude.com/docs/en/build-with-claude/claude-in-microsoft-foundry#hosting-options))</td> </tr> <tr> @@ -255,6 +255,7 @@ Each tab lists what is unavailable or partially supported on that provider, with **Partial support:** * [Desktop](/docs/en/desktop): only via [Claude Desktop on 3P](https://claude.com/docs/third-party/claude-desktop/overview) + * [Web search](/docs/en/tools-reference#websearch-tool-behavior): [deployments hosted on Anthropic](https://platform.claude.com/docs/en/build-with-claude/claude-in-microsoft-foundry#hosting-options) only * [Auto mode](/docs/en/auto-mode-config): Sonnet 5, Opus 4.7 or later, and Fable 5 only * [`/loop`](/docs/en/scheduled-tasks): explicit intervals only * [Zero Data Retention](/docs/en/zero-data-retention): subject to your Azure agreement diff --git a/content/en/docs/claude-code/github-enterprise-server.md b/content/en/docs/claude-code/github-enterprise-server.md index eceea20aa..fa74575b9 100644 --- a/content/en/docs/claude-code/github-enterprise-server.md +++ b/content/en/docs/claude-code/github-enterprise-server.md @@ -164,7 +164,7 @@ Claude Code installs these marketplaces locally: it registers each entry and clo ### Allowlist GHES marketplaces in managed settings -If your organization uses [managed settings](/docs/en/settings) to restrict which marketplaces developers can add, use the `hostPattern` source type to allow all marketplaces from your GHES instance without enumerating each repository: +If your organization uses [managed settings](/docs/en/settings) to restrict which marketplaces developers can add, use the `hostPattern` source type to allow all marketplaces from your GHES instance without enumerating each repository. See [settings files](/docs/en/settings#settings-files) for file locations on each platform. Add the JSON to your `managed-settings.json` file or equivalent MDM policy: ```json theme={null} { diff --git a/content/en/docs/claude-code/goal.md b/content/en/docs/claude-code/goal.md index 055a6be50..f7b14fa04 100644 --- a/content/en/docs/claude-code/goal.md +++ b/content/en/docs/claude-code/goal.md @@ -123,7 +123,16 @@ Interrupt the process with Ctrl+C to stop a non-interactive goal before the cond ## How evaluation works -`/goal` is a wrapper around a session-scoped [prompt-based Stop hook](/docs/en/hooks#prompt-based-hooks). Each time Claude finishes a turn, the condition and the conversation so far are sent to your configured [small fast model](/docs/en/model-config), which defaults to Haiku. The model returns a yes-or-no decision and a short reason. A "no" tells Claude to keep working and includes the reason as guidance for the next turn. A "yes" clears the goal and records an achieved entry in the transcript. +`/goal` is a wrapper around a session-scoped [prompt-based Stop hook](/docs/en/hooks#prompt-based-hooks). Each time Claude finishes a turn, the condition and the conversation so far are sent to your configured [small fast model](/docs/en/model-config), which defaults to Haiku on the Claude API; on a third-party provider, check your [provider page](/docs/en/third-party-integrations) for the platform's default. The model answers yes or no and gives a short reason. + +* **No**: Claude keeps working and takes the reason as guidance for the next turn. +* **Yes**: Claude Code clears the goal and records an achieved entry in the transcript. + +To evaluate on a different model, set [`ANTHROPIC_DEFAULT_HAIKU_MODEL`](/docs/en/model-config#environment-variables). + +<Warning> + Claude Code reads `ANTHROPIC_DEFAULT_HAIKU_MODEL` everywhere it uses the small fast model, not only for `/goal` evaluation. When you set it, Claude Code also resolves the [`haiku` alias](/docs/en/model-config#model-aliases) to that model and runs [background functionality](/docs/en/costs#background-token-usage), such as conversation summarization, on it. +</Warning> The evaluator runs on whichever provider your session is configured for. It does not call tools, so it can only judge what Claude has already surfaced in the conversation. diff --git a/content/en/docs/claude-code/hooks-guide.md b/content/en/docs/claude-code/hooks-guide.md index eb11919f1..3c162155d 100644 --- a/content/en/docs/claude-code/hooks-guide.md +++ b/content/en/docs/claude-code/hooks-guide.md @@ -206,6 +206,8 @@ This hook uses the `PostToolUse` event with an `Edit|Write` matcher, so it runs } ``` +To test the hook, ask Claude to add a line with single-quoted strings to a JavaScript file, then open the file: with Prettier's default settings, the hook rewrites them to double quotes. + On Claude Code v2.1.191 or later you can also write the matcher as `Edit,Write`, since `|` and `,` are interchangeable list separators for tool-name matchers on those versions. <Note> @@ -271,6 +273,10 @@ This example uses a separate script file that the hook calls. The script checks } ``` </Step> + + <Step title="Test the hook"> + Ask Claude to add a comment to your `.env` file. Claude Code blocks the edit before it runs and passes the script's `Blocked:` message to Claude as feedback. + </Step> </Steps> ### Re-inject context after compaction @@ -325,6 +331,8 @@ This example appends each change to an audit log. Add this to `~/.claude/setting The matcher filters by configuration type: `user_settings`, `project_settings`, `local_settings`, `policy_settings`, or `skills`. To block a change from taking effect, exit with code 2 or return `{"decision": "block"}`. See the [ConfigChange reference](/docs/en/hooks#configchange) for the full input schema. +To confirm the hook records changes, edit a settings file in another editor while a session is running, then open `~/claude-config-audit.log`: the hook appends one JSON line per change with the timestamp, source, and file path. + ### Reload environment when directory or files change Some projects set different environment variables depending on which directory you are in. Tools like [direnv](https://direnv.net/) do this automatically in your shell, but Claude's Bash tool doesn't pick up those changes on its own. @@ -386,7 +394,7 @@ See the [CwdChanged](/docs/en/hooks#cwdchanged) and [FileChanged](/docs/en/hooks Skip the approval dialog for tool calls you always allow. This example auto-approves `ExitPlanMode`, the tool Claude calls when it finishes presenting a plan and asks to proceed, so you aren't prompted every time a plan is ready. -Unlike the exit-code examples above, auto-approval requires your hook to write a JSON decision to stdout. A `PermissionRequest` hook fires when Claude Code is about to show a permission dialog, and returning `"behavior": "allow"` answers it on your behalf. +Unlike the exit-code examples above, auto-approval requires your hook to write a JSON decision to stdout. A `PermissionRequest` hook fires when Claude Code is about to ask you for permission, and returning `"behavior": "allow"` answers the request on your behalf. The matcher scopes the hook to `ExitPlanMode` only, so no other prompts are affected. Add this to `~/.claude/settings.json`: @@ -445,7 +453,7 @@ Hook events fire at specific lifecycle points in Claude Code. When an event fire | `UserPromptSubmit` | When you submit a prompt, before Claude processes it | | `UserPromptExpansion` | When a user-typed command expands into a prompt, before it reaches Claude. Can block the expansion | | `PreToolUse` | Before a tool call executes. Can block it | -| `PermissionRequest` | When a permission dialog appears | +| `PermissionRequest` | When a tool call needs a permission decision | | `PermissionDenied` | When a tool call is denied by the auto mode classifier. Return `{retry: true}` to tell the model it may retry the denied tool call | | `PostToolUse` | After a tool call succeeds | | `PostToolUseFailure` | After a tool call fails | @@ -767,14 +775,14 @@ The `if` field accepts the same patterns as permission rules: `"Bash(git *)"`, ` Where you add a hook determines its scope: -| Location | Scope | Shareable | -| :--------------------------------------------------------- | :--------------------------------- | :----------------------------------------- | -| `~/.claude/settings.json` | All your projects | No, local to your machine | -| `.claude/settings.json` | Single project | Yes, can be committed to the repo | -| `.claude/settings.local.json` | Single project | No, gitignored when Claude Code creates it | -| Managed policy settings | Organization-wide | Yes, admin-controlled | -| [Plugin](/docs/en/plugins) `hooks/hooks.json` | When plugin is enabled | Yes, bundled with the plugin | -| [Skill](/docs/en/skills) or [agent](/docs/en/sub-agents) frontmatter | While the skill or agent is active | Yes, defined in the component file | +| Location | Scope | Shareable | +| :--------------------------------------------------------- | :--------------------------------- | :---------------------------------------------------- | +| `~/.claude/settings.json` | All your projects | No, local to your machine | +| `.claude/settings.json` | Single project | Yes, can be committed to the repo | +| `.claude/settings.local.json` | Single project | No, gitignored when Claude Code saves a setting to it | +| Managed policy settings | Organization-wide | Yes, admin-controlled | +| [Plugin](/docs/en/plugins) `hooks/hooks.json` | When plugin is enabled | Yes, bundled with the plugin | +| [Skill](/docs/en/skills) or [agent](/docs/en/sub-agents) frontmatter | While the skill or agent is active | Yes, defined in the component file | Run [`/hooks`](/docs/en/hooks#the-%2Fhooks-menu) in Claude Code to browse all configured hooks grouped by event. @@ -896,8 +904,11 @@ Keep these constraints in mind when designing hooks: * `command`, `http`, `mcp_tool`: 10 minutes. `UserPromptSubmit` lowers these to 30 seconds, and `MessageDisplay` lowers them to 10 seconds. * `prompt`: 30 seconds. * `agent`: 60 seconds. + * [`SessionEnd`](/docs/en/hooks#sessionend) hooks of any type share a 1.5-second budget. If your settings set a longer per-hook `timeout`, Claude Code raises the budget to match, up to 60 seconds. * `PostToolUse` hooks can't undo actions since the tool has already executed. -* `PermissionRequest` hooks don't fire in [non-interactive mode](/docs/en/headless) with the `-p` flag. Use `PreToolUse` hooks for automated permission decisions. +* `PermissionRequest` hooks fire when Claude Code is about to ask you for permission. + * In [non-interactive mode](/docs/en/headless) with the `-p` flag, that prompt only exists when the Agent SDK's [`canUseTool` callback](/docs/en/agent-sdk/permissions) supplies it. In plain `-p` runs or with `--permission-prompt-tool`, use `PreToolUse` hooks for automated permission decisions instead. + * Background subagents can't show a prompt in non-interactive mode. Claude Code still runs the hooks for their tool calls, and if no hook returns a decision, it denies the call. In an interactive session, background subagent prompts surface in your main session and the hooks fire as usual. * `Stop` hooks fire whenever Claude finishes responding, not only at task completion. They don't fire on user interrupts. API errors fire [StopFailure](/docs/en/hooks#stopfailure) instead. * When multiple `PreToolUse` hooks return [`updatedInput`](/docs/en/hooks#pretooluse) to rewrite a tool's arguments, the last one to finish takes effect. Since hooks run in parallel, the order is non-deterministic. Avoid having more than one hook modify the same tool's input. @@ -914,7 +925,7 @@ The hook is configured but never executes. * Run `/hooks` and confirm the hook appears under the correct event * Check that the matcher pattern matches the tool name exactly. Matchers are case-sensitive * Verify you're triggering the right event type: `PreToolUse` fires before tool execution, `PostToolUse` fires after -* If using `PermissionRequest` hooks in non-interactive mode with the `-p` flag, switch to `PreToolUse` instead +* In non-interactive mode with the `-p` flag, `PermissionRequest` hooks fire only when the Agent SDK's `canUseTool` callback supplies the prompt, or for tool calls inside background subagents. In plain `-p` runs or with `--permission-prompt-tool`, use `PreToolUse` hooks instead ### Hook error in output diff --git a/content/en/docs/claude-code/hooks.md b/content/en/docs/claude-code/hooks.md index a51b53a38..3293a48eb 100644 --- a/content/en/docs/claude-code/hooks.md +++ b/content/en/docs/claude-code/hooks.md @@ -37,7 +37,7 @@ The table below summarizes when each event fires. The [Hook events](#hook-events | `UserPromptSubmit` | When you submit a prompt, before Claude processes it | | `UserPromptExpansion` | When a user-typed command expands into a prompt, before it reaches Claude. Can block the expansion | | `PreToolUse` | Before a tool call executes. Can block it | -| `PermissionRequest` | When a permission dialog appears | +| `PermissionRequest` | When a tool call needs a permission decision | | `PermissionDenied` | When a tool call is denied by the auto mode classifier. Return `{retry: true}` to tell the model it may retry the denied tool call | | `PostToolUse` | After a tool call succeeds | | `PostToolUseFailure` | After a tool call fails | @@ -87,7 +87,7 @@ To see how these pieces fit together, consider this `PreToolUse` hook that block } ``` -The script reads the JSON input from stdin, extracts the command, and returns a `permissionDecision` of `"deny"` if it contains `rm -rf`: +The script reads the JSON input from stdin, extracts the command, and returns a `permissionDecision` of `"deny"` if it contains `rm -rf`. Save it to `.claude/hooks/block-rm.sh` in your project: ```bash theme={null} #!/bin/bash @@ -107,6 +107,8 @@ else fi ``` +On macOS and Linux, make the script executable with `chmod +x .claude/hooks/block-rm.sh` so Claude Code can run it. On Windows, write the hook in PowerShell instead and register it with `"command": "powershell.exe"`, as shown in the [MessageDisplay example](#messagedisplay). + This script and the Bash examples on this page that parse JSON input use `jq`, so install `jq` and make sure it is on your `PATH` before trying them. Now suppose Claude Code decides to run `Bash "rm -rf /tmp/build"`. Here's what happens: @@ -173,14 +175,14 @@ See [How a hook resolves](#how-a-hook-resolves) above for a complete walkthrough Where you define a hook determines its scope: -| Location | Scope | Shareable | -| :--------------------------------------------------------- | :---------------------------- | :----------------------------------------- | -| `~/.claude/settings.json` | All your projects | No, local to your machine | -| `.claude/settings.json` | Single project | Yes, can be committed to the repo | -| `.claude/settings.local.json` | Single project | No, gitignored when Claude Code creates it | -| Managed policy settings | Organization-wide | Yes, admin-controlled | -| [Plugin](/docs/en/plugins) `hooks/hooks.json` | When plugin is enabled | Yes, bundled with the plugin | -| [Skill](/docs/en/skills) or [agent](/docs/en/sub-agents) frontmatter | While the component is active | Yes, defined in the component file | +| Location | Scope | Shareable | +| :--------------------------------------------------------- | :---------------------------- | :---------------------------------------------------- | +| `~/.claude/settings.json` | All your projects | No, local to your machine | +| `.claude/settings.json` | Single project | Yes, can be committed to the repo | +| `.claude/settings.local.json` | Single project | No, gitignored when Claude Code saves a setting to it | +| Managed policy settings | Organization-wide | Yes, admin-controlled | +| [Plugin](/docs/en/plugins) `hooks/hooks.json` | When plugin is enabled | Yes, bundled with the plugin | +| [Skill](/docs/en/skills) or [agent](/docs/en/sub-agents) frontmatter | While the component is active | Yes, defined in the component file | For details on settings file resolution, see [settings](/docs/en/settings). @@ -334,7 +336,7 @@ These fields apply to all hook types: | :-------------- | :------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `type` | yes | `"command"`, `"http"`, `"mcp_tool"`, `"prompt"`, or `"agent"` | | `if` | no | Permission rule syntax to filter when this hook runs, such as `"Bash(git *)"` or `"Edit(*.ts)"`. The hook command only runs if the tool call matches the pattern. See the [Bash matching table](#bash-if-matching) below for how Bash patterns evaluate against subcommands, `$()`, and backticks. Only evaluated on tool events: `PreToolUse`, `PostToolUse`, `PostToolUseFailure`, `PermissionRequest`, and `PermissionDenied`. On other events, a hook with `if` set never runs. Uses the same syntax as [permission rules](/docs/en/permissions) | -| `timeout` | no | Seconds before canceling. Defaults: 600 for `command`, `http`, and `mcp_tool`; 30 for `prompt`; 60 for `agent`. [`UserPromptSubmit`](#userpromptsubmit) lowers the `command`, `http`, and `mcp_tool` default to 30, and [`MessageDisplay`](#messagedisplay) lowers it to 10 | +| `timeout` | no | Seconds before canceling. Defaults: 600 for `command`, `http`, and `mcp_tool`; 30 for `prompt`; 60 for `agent`. [`UserPromptSubmit`](#userpromptsubmit) lowers the `command`, `http`, and `mcp_tool` default to 30, and [`MessageDisplay`](#messagedisplay) lowers it to 10. [`SessionEnd`](#sessionend) hooks share a 1.5-second budget; if your settings set a longer per-hook `timeout`, Claude Code raises the budget to match, up to 60 seconds | | `statusMessage` | no | Custom spinner message displayed while the hook runs | | `once` | no | If `true`, runs once per session then is removed. Only honored for hooks declared in [skill frontmatter](#hooks-in-skills-and-agents); ignored in settings files and agent frontmatter | @@ -590,12 +592,12 @@ Type `/hooks` in Claude Code to open a read-only browser for your configured hoo The menu displays all five hook types: `command`, `prompt`, `agent`, `http`, and `mcp_tool`. Each hook is labeled with a `[type]` prefix and a source indicating where it was defined: -* `User`: from `~/.claude/settings.json` -* `Project`: from `.claude/settings.json` -* `Local`: from `.claude/settings.local.json` -* `Plugin`: from a plugin's `hooks/hooks.json` -* `Session`: registered in memory for the current session -* `Built-in`: registered internally by Claude Code +* `User Settings`: from `~/.claude/settings.json` +* `Project Settings`: from `.claude/settings.json` +* `Local Settings`: from `.claude/settings.local.json` +* `Plugin Hooks`: from a plugin's `hooks/hooks.json` +* `Session Hooks`: registered in memory for the current session +* `Built-in Hooks`: registered internally by Claude Code Selecting a hook opens a detail view showing its event, matcher, type, source file, and the full command, prompt, or URL. The menu is read-only: to add, modify, or remove hooks, edit the settings JSON directly or ask Claude to make the change. @@ -678,7 +680,8 @@ For example, a hook command script that blocks dangerous Bash commands: ```bash theme={null} #!/bin/bash # Reads JSON input from stdin, checks the command -command=$(jq -r '.tool_input.command' < /dev/stdin) +input=$(cat) +command=$(jq -r '.tool_input.command' <<<"$input") if [[ "$command" == rm* ]]; then echo "Blocked: rm commands are not allowed" >&2 @@ -1060,7 +1063,11 @@ The matcher value corresponds to the CLI flag that triggered the hook: | `init` | `claude --init-only` or `claude -p --init` | | `maintenance` | `claude -p --maintenance` | -`--init-only` runs Setup hooks and `SessionStart` hooks with the `startup` matcher, then exits without starting a conversation. `--init` and `--maintenance` fire Setup hooks only when combined with `-p`; in an interactive session those two flags don't currently fire Setup hooks. +When you run `claude --init-only`, Claude Code runs Setup hooks and `SessionStart` hooks with the `startup` matcher, then exits without starting a conversation. + +`--init` and `--maintenance` fire Setup hooks only when you combine them with `-p`. In an interactive session, those two flags don't currently fire Setup hooks. + +When you start or continue a conversation with `-p`, you also need to supply a prompt, as an argument or piped on stdin. You can skip the prompt when a `SessionStart` hook supplies [`initialUserMessage`](#sessionstart-decision-control) or when you resume a session with a [deferred tool call](#defer-a-tool-call-for-later). On success, `--init-only` prints nothing to the terminal. To confirm the hooks ran, start with `claude --debug-file <path> --init-only`, replacing `<path>` with a log file location, and check the log for the Setup and SessionStart hook entries. @@ -1611,7 +1618,7 @@ If the deferred tool is no longer available when you resume, the process exits w ### PermissionRequest -Runs when the user is shown a permission dialog. +Runs when Claude Code is about to ask you for permission. In sessions that can't show a prompt, such as background subagents in [non-interactive mode](/docs/en/headless), Claude Code still runs these hooks, and if no hook returns a decision, it denies the tool call. Use [PermissionRequest decision control](#permissionrequest-decision-control) to allow or deny on behalf of the user. Matches on tool name, same values as PreToolUse. @@ -1620,7 +1627,7 @@ Matches on tool name, same values as PreToolUse. PermissionRequest hooks receive `tool_name` and `tool_input` fields like PreToolUse hooks, but without `tool_use_id`. An optional `permission_suggestions` array contains the "always allow" options the user would normally see in the permission dialog. -The difference from PreToolUse is when the hook fires: PermissionRequest hooks run when a permission dialog is about to be shown to the user, while PreToolUse hooks run before tool execution regardless of permission status. Neither event fires for [`EndConversation`](/docs/en/tools-reference#endconversation-tool-behavior). +PreToolUse hooks run before every tool call, whether or not it needs permission. PermissionRequest hooks run only when Claude Code is about to ask you for permission, or when it would otherwise auto-deny a call that can't prompt. Neither event fires for [`EndConversation`](/docs/en/tools-reference#endconversation-tool-behavior). ```json theme={null} { diff --git a/content/en/docs/claude-code/large-codebases.md b/content/en/docs/claude-code/large-codebases.md index acf623702..5f6d4ea2c 100644 --- a/content/en/docs/claude-code/large-codebases.md +++ b/content/en/docs/claude-code/large-codebases.md @@ -134,7 +134,7 @@ When you start Claude from the repository root, each subdirectory's CLAUDE.md lo Use this for directories you never work in, such as other teams' packages, legacy code, or vendored subtrees. The exclusion list is static, not a per-task switch. To focus on one package today and another tomorrow, [start Claude from that package's directory](#choose-where-to-start-claude) instead of editing exclusions. -If you only want these exclusions for yourself, put the setting in `.claude/settings.local.json`. Claude Code gitignores that file when it creates it; since you're creating it by hand here, add it to your gitignore. Patterns use glob syntax matched against absolute file paths, so start relative-style patterns with `**/` to match anywhere in the tree. The example below excludes a package owned by another team: +If you only want these exclusions for yourself, put the setting in `.claude/settings.local.json`. Claude Code adds that file to your global gitignore when it saves a setting there. Since you are creating it by hand here, add it to your gitignore yourself. Patterns use glob syntax matched against absolute file paths, so start relative-style patterns with `**/` to match anywhere in the tree. The example below excludes a package owned by another team: ```json .claude/settings.local.json theme={null} { @@ -366,7 +366,7 @@ With skills spread across many directories, the list Claude chooses from can gro Which skills are in scope depends on where you start Claude: * **From a subdirectory such as `packages/api/`**: skills from that directory, every parent up to the repository root, and the user and enterprise levels -* **From the repository root**: skills from every subdirectory Claude touches during the session, which can accumulate into the hundreds +* **From the repository root**: root skills, plus skills from every subdirectory Claude touches during the session, which can accumulate into the hundreds * **After adding a sibling with [`--add-dir`](#grant-access-across-packages-or-repositories)**: that sibling's skills load too. The `additionalDirectories` setting grants file access only and does not load skills Names always load, but [descriptions are shortened when there are many](/docs/en/skills#skill-descriptions-are-cut-short), which can strip the keywords Claude uses to decide whether a skill applies. Keep descriptions short and lead with words a request would contain, like "writing or modifying tests in `packages/api/`". diff --git a/content/en/docs/claude-code/llm-gateway-connect.md b/content/en/docs/claude-code/llm-gateway-connect.md index 6c4b0f07b..289671be9 100644 --- a/content/en/docs/claude-code/llm-gateway-connect.md +++ b/content/en/docs/claude-code/llm-gateway-connect.md @@ -100,7 +100,7 @@ If you export the gateway only in your shell, it doesn't reliably reach backgrou To make the configuration apply everywhere Claude Code runs, including [background agents](/docs/en/agent-view#how-background-sessions-are-hosted), set the variables in the `env` block of a [settings file](/docs/en/settings) instead of relying on your shell. Settings files have different scopes: * `~/.claude/settings.json` applies to all your projects. On Windows the path is `%USERPROFILE%\.claude\settings.json` -* `.claude/settings.local.json` applies to one project. Claude Code adds it to your gitignore when it creates the file; if you create it yourself, add it to your gitignore manually first so you don't accidentally commit your credential +* `.claude/settings.local.json` applies to one project. Claude Code adds it to your global gitignore when it saves a setting there; if you create it by hand or have Claude write it, add it to your gitignore yourself first so you don't accidentally commit your credential <Warning> Don't put the credential in a project's `.claude/settings.json`. That file is committed and shared with everyone who clones the repository. @@ -307,7 +307,7 @@ Enable it if your gateway serves model names that aren't in Claude Code's built- To enable it, set `CLAUDE_CODE_ENABLE_GATEWAY_MODEL_DISCOVERY=1` in your shell or in the `env` block of `~/.claude/settings.json`. Discovery requires Claude Code v2.1.129 or later. {/* min-version: 2.1.129 */} -Discovered models appear as additional `/model` entries labeled `From gateway`. To confirm discovery ran, start `claude --debug` and look for the `[gatewayDiscovery]` lines: a success logs how many models were cached, and a `404`, timeout, or redirect is recorded there too. For when discovery runs, what it filters, and the response format gateways serve, see the [model discovery reference](/docs/en/llm-gateway-protocol#model-discovery). +Discovered models appear as additional `/model` entries labeled `From gateway`. To confirm discovery ran, start `claude --debug` and look for the `[gatewayDiscovery]` lines in the debug log at `~/.claude/debug/<session-id>.txt`: a success logs how many models were cached, and a `404`, timeout, or redirect is recorded there too. For when discovery runs, what it filters, and the response format gateways serve, see the [model discovery reference](/docs/en/llm-gateway-protocol#model-discovery). ### Rotate credentials with apiKeyHelper diff --git a/content/en/docs/claude-code/llm-gateway-protocol.md b/content/en/docs/claude-code/llm-gateway-protocol.md index 1420bdfc5..5c8c21691 100644 --- a/content/en/docs/claude-code/llm-gateway-protocol.md +++ b/content/en/docs/claude-code/llm-gateway-protocol.md @@ -102,7 +102,10 @@ The strip is positional, so it only works when the gateway forwards the `system` Requests that reach the endpoint unmodified are unaffected. -{/* min-version: 2.1.181 */}From Claude Code v2.1.181, the block is stable for the lifetime of a conversation when requests route through a custom base URL, so a gateway-side prompt cache keyed on the full request body works without disabling it. Before v2.1.181 the block included a per-request token; on those versions, set `CLAUDE_CODE_ATTRIBUTION_HEADER=0` if your gateway implements such a cache. +{/* min-version: 2.1.181 */}From Claude Code v2.1.181, the block is stable for the lifetime of a conversation when requests route through a custom base URL, so a gateway-side prompt cache keyed on the full request body works without disabling it, and any provider your gateway forwards to receives a stable prompt prefix. Before v2.1.181 the block included a per-request token that changed the start of the system prompt on every request. On those versions, set `CLAUDE_CODE_ATTRIBUTION_HEADER=0` when your gateway does either of these: + +* Implements a prompt cache keyed on the request body. +* Forwards requests to a third-party provider such as Amazon Bedrock, Microsoft Foundry, or Google Cloud's Agent Platform, in the Anthropic Messages format or the provider's own, where the changing prefix reduces prompt-cache reuse on that provider. ## Feature pass-through @@ -177,7 +180,7 @@ The picker is the interactive model list that opens when a developer runs `/mode A discovered ID is skipped when it exactly matches a row already in the picker, or when both the discovered and existing IDs resolve to [Fable](/docs/en/model-config#work-with-fable-5). {/* min-version: 2.1.197 */}As of Claude Code v2.1.197, a discovered explicit ID is also folded into a built-in entry when both resolve to the same model. Built-in rows are keyed on aliases such as `sonnet`, so a discovered explicit ID of the model the alias currently resolves to, such as `claude-sonnet-5`, collapses into the `sonnet` row, while an ID the alias doesn't resolve to, such as `claude-sonnet-4-6`, still adds its own "From gateway" row alongside the built-in entry. -Results are cached to `~/.claude/cache/gateway-models.json`, or `%USERPROFILE%\.claude\cache\gateway-models.json` on Windows, and refreshed on each startup. If the request fails or the gateway doesn't implement `/v1/models`, the picker falls back to the cached list from the previous startup or to the built-in model list. If your gateway serves Claude models under aliases that don't match the discovery filter, developers can add those aliases manually with the [model configuration](/docs/en/model-config) variables. +Results are cached to `~/.claude/cache/gateway-models.json`, or `%USERPROFILE%\.claude\cache\gateway-models.json` on Windows, and refreshed on each startup. If you set [`CLAUDE_CONFIG_DIR`](/docs/en/env-vars), the cache lives under that directory instead. If the request fails or the gateway doesn't implement `/v1/models`, the picker falls back to the cached list from the previous startup or to the built-in model list. If your gateway serves Claude models under aliases that don't match the discovery filter, developers can add those aliases manually with the [model configuration](/docs/en/model-config) variables. ## Related resources diff --git a/content/en/docs/claude-code/mcp.md b/content/en/docs/claude-code/mcp.md index 7ffeabc22..faca8df8b 100644 --- a/content/en/docs/claude-code/mcp.md +++ b/content/en/docs/claude-code/mcp.md @@ -85,6 +85,8 @@ A JSON entry that has a `url` but no `type` is a configuration error, because Cl The SSE (Server-Sent Events) transport is deprecated. Use HTTP servers instead, where available. </Warning> +Some services still expose only an SSE endpoint. Use the same command as the HTTP transport, with `--transport sse`: + ```bash theme={null} # Basic syntax claude mcp add --transport sse <name> <url> @@ -153,17 +155,21 @@ Once configured, you can manage your MCP servers with these commands: claude mcp list # Get details for a specific server -claude mcp get github +claude mcp get notion # Remove a server -claude mcp remove github +claude mcp remove notion # (within Claude Code) Check server status /mcp ``` +`claude mcp add` confirms a successful add by printing an `Added ...` line, which means the configuration was written. `claude mcp list` then shows a health status next to each server it lists, such as `✔ Connected`, `! Needs authentication`, or `✘ Failed to connect`. A failure status means Claude Code couldn't connect to that server, not that the list command failed. + Project-scoped servers from `.mcp.json` that are awaiting your approval appear in `claude mcp list` and `claude mcp get <name>` as ``⏸ Pending approval (run `claude` to approve)``. Run `claude` interactively to review and approve them. `claude mcp get <name>` shows rejected servers as `✘ Rejected (see disabledMcpjsonServers in settings)`. +WebSocket servers don't appear in `claude mcp list` output. Use `claude mcp get <name>` or the `/mcp` panel to check them. + As of v2.1.196, `claude mcp list` and `claude mcp get` read `.mcp.json` approvals only from settings files that aren't checked into the repository until you trust the workspace by running `claude` in it and accepting the workspace trust dialog. A cloned repository can't approve its own servers: [`enableAllProjectMcpServers` or `enabledMcpjsonServers`](/docs/en/settings#available-settings) committed to the project's `.claude/settings.json` is ignored in an untrusted folder, and the server stays at `⏸ Pending approval` instead of being connected and health-checked. Approvals from these sources still apply in an untrusted folder: @@ -180,7 +186,7 @@ The `/mcp` panel shows the tool count next to each connected server and flags se A remote server whose configuration has an empty `url` shows as `not configured` in `/mcp`, in `claude mcp list`, and in the [`/plugin`](/docs/en/plugins) manager, and Claude Code doesn't attempt to connect to it. A plugin can include a placeholder entry like this for a connector you configure later, so Claude Code doesn't report it as an error or a setup issue. The server's detail view in `/mcp` reads `No URL configured for this server`; set the entry's `url` to connect it. Before v2.1.208, Claude Code reported an empty `url` as a configuration issue with a prompt to reconnect. -If your request needs tools from a server that is still connecting in the background, Claude waits for that server before continuing. With [tool search](#scale-with-mcp-tool-search) enabled, which is the default, the wait happens inside the `ToolSearch` call. In configurations without tool search, such as Google Cloud's Agent Platform, a custom `ANTHROPIC_BASE_URL`, or `ENABLE_TOOL_SEARCH=false`, Claude uses the `WaitForMcpServers` tool instead. +If your request needs tools from a server that is still connecting in the background, Claude waits for that server before continuing. With [tool search](#scale-with-mcp-tool-search) enabled, which is the default, the wait happens inside the `ToolSearch` call. In configurations without tool search, such as Google Cloud's Agent Platform, a custom `ANTHROPIC_BASE_URL`, or `ENABLE_TOOL_SEARCH=false`, Claude uses the `WaitForMcpServers` tool instead. A Microsoft Foundry [deployment hosted on Azure](https://platform.claude.com/docs/en/build-with-claude/claude-in-microsoft-foundry#hosting-options) starts on the tool-search path rather than with `WaitForMcpServers`, since Claude Code discovers the deployment's server-side rejection only from the API; after Claude Code switches that deployment to [upfront loading](#scale-with-mcp-tool-search), tools from a server that finishes connecting become available on Claude's next request. Some server names are reserved for Claude Code's built-in servers: `workspace`, `claude-in-chrome`, `computer-use`, `Claude Preview`, and `Claude Browser`. If your configuration defines a server with a reserved name, Claude Code skips it at load time and shows a warning asking you to rename it. `claude mcp add` rejects a reserved name with an error. @@ -307,7 +313,7 @@ Or inline in `plugin.json`: * **Automatic lifecycle**: servers connect and disconnect at these points: * At session startup, Claude Code connects the servers for enabled plugins automatically - * If you enable or disable a plugin during a session, run `/reload-plugins` to connect or disconnect its MCP servers + * If you enable or disable a plugin during a session, run `/reload-plugins` to connect or disconnect its MCP servers. When you reload, Claude Code keeps the live connections of plugin servers whose configuration is unchanged, and does the same when you [replace the session's MCP server list](/docs/en/agent-sdk/typescript#mcpsetserversresult) from the Agent SDK without naming them. {/* min-version: 2.1.210 */}Before v2.1.210, Claude Code disconnected plugin-provided MCP servers that the new SDK server list didn't name * In [web sessions](/docs/en/claude-code-on-the-web), an MCP call to a plugin server that isn't connected yet, such as right after an idle session wakes, starts the server on demand and waits for it to connect. {/* min-version: 2.1.211 */}Before v2.1.211, plugin servers in a web session reconnected only when the next message started a turn, so MCP calls after an idle session woke failed until then * **Path placeholders**: `${CLAUDE_PLUGIN_ROOT}` resolves to the plugin's installation directory, `${CLAUDE_PLUGIN_DATA}` to its [persistent state](/docs/en/plugins-reference#persistent-data-directory) directory, and `${CLAUDE_PROJECT_DIR}` to the stable project root. Substitution applies to: * `stdio` servers: `command`, `args`, `env` @@ -393,7 +399,7 @@ Project-scoped servers enable team collaboration by storing configurations in a ```bash theme={null} # Add a project-scoped server -claude mcp add --transport http paypal --scope project https://mcp.paypal.com/mcp +claude mcp add --transport http shared-server --scope project https://example.com/mcp ``` The resulting `.mcp.json` file follows a standardized format: @@ -402,9 +408,8 @@ The resulting `.mcp.json` file follows a standardized format: { "mcpServers": { "shared-server": { - "command": "/path/to/server", - "args": [], - "env": {} + "type": "http", + "url": "https://example.com/mcp" } } } @@ -433,6 +438,8 @@ When the same server is defined in more than one place, Claude Code connects to The three scopes match duplicates by name. Plugins and connectors match by endpoint, so one that points at the same URL or command as a server above is treated as a duplicate. +If you open a local session in the [Desktop app's Code tab](/docs/en/desktop#mcp-servers-from-the-claude-desktop-chat-app) with the same stdio server name at the top level of `~/.claude.json` (user scope) and in `.mcp.json`, the Code tab uses the `~/.claude.json` definition. + ### Environment variable expansion in `.mcp.json` Claude Code supports environment variable expansion in `.mcp.json` files, allowing teams to share configurations while maintaining flexibility for machine-specific paths and sensitive values like API keys. @@ -473,6 +480,10 @@ If a referenced environment variable isn't set and has no default value, the con ### Example: Monitor errors with Sentry +Sentry's remote MCP server gives Claude access to the errors your applications report to Sentry. It authenticates through OAuth rather than an API key, so you don't pass a credential when you add it. + +If you already added the `sentry` server in the [MCP quickstart](/docs/en/mcp-quickstart), skip this command: running `claude mcp add` again with the same server name at the same scope fails with `MCP server sentry already exists in local config`. + ```bash theme={null} claude mcp add --transport http sentry https://mcp.sentry.dev/mcp ``` @@ -483,6 +494,8 @@ Authenticate with your Sentry account: /mcp ``` +Follow the sign-in steps in your browser. Once you're signed in, the `sentry` server shows `connected` in the `/mcp` menu. + Then debug production issues: ```text theme={null} @@ -524,11 +537,15 @@ Show me all open PRs assigned to me ### Example: Query your PostgreSQL database +[DBHub](https://github.com/bytebase/dbhub), the `@bytebase/dbhub` package, is an MCP server that connects Claude to a relational database through the connection string you pass in `--dsn`. Use a read-only database user in the connection string so the queries Claude runs can't modify data: + ```bash theme={null} claude mcp add --transport stdio db -- npx -y @bytebase/dbhub \ --dsn "postgresql://readonly:pass@prod.db.com:5432/analytics" ``` +To confirm the server starts, run `/mcp` and check that `db` shows `connected`. + Then query your database naturally: ```text theme={null} @@ -563,7 +580,7 @@ If you configured `headers.Authorization` for the server and the server rejects <Steps> <Step title="Add the server that requires authentication"> - For example: + If you already added this server in the [Sentry example](#example-monitor-errors-with-sentry) or the [MCP quickstart](/docs/en/mcp-quickstart), skip this step: running `claude mcp add` again with the same server name at the same scope fails with `MCP server sentry already exists in local config`. Otherwise, run: ```bash theme={null} claude mcp add --transport http sentry https://mcp.sentry.dev/mcp @@ -944,6 +961,8 @@ You can use Claude Code itself as an MCP server that other applications can conn claude mcp serve ``` +The command prints nothing when it starts. A stdio MCP server communicates over stdin and stdout, so a silent, blocked terminal means the server is running and waiting for a client to connect. + You can use this in Claude Desktop by adding this configuration to claude\_desktop\_config.json: ```json theme={null} @@ -1137,6 +1156,10 @@ MCP servers can expose resources that you can reference using @ mentions, simila Tool search keeps MCP context usage low by deferring tool definitions until Claude needs them. Only tool names and server instructions load at session start, so adding more MCP servers has minimal impact on your context window. Claude Code doesn't impose a fixed per-server tool cap; the practical limit is your context window budget. +<Note> + Tool search isn't supported on Microsoft Foundry [deployments hosted on Azure](https://platform.claude.com/docs/en/build-with-claude/claude-in-microsoft-foundry#hosting-options), which reject it server-side: Claude Code detects the rejection and loads MCP tools upfront for that deployment instead. [`ENABLE_TOOL_SEARCH`](#configure-tool-search) can't override this, since the rejection comes from the deployment itself. +</Note> + ### How it works Tool search is enabled by default. MCP tools are deferred rather than loaded into context upfront, and Claude uses a search tool to discover relevant ones when a task needs them. Only the tools Claude actually uses enter context. From your perspective, MCP tools work exactly as before. @@ -1165,13 +1188,13 @@ Tool search requires a model that supports `tool_reference` blocks: Claude Sonne Control tool search behavior with the `ENABLE_TOOL_SEARCH` environment variable: -| Value | Behavior | -| :------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| (unset) | All MCP tools deferred and loaded on demand. Falls back to loading upfront on Google Cloud's Agent Platform or when `ANTHROPIC_BASE_URL` is a non-first-party host | -| `true` | All MCP tools deferred. Claude Code sends the beta header even on Google Cloud's Agent Platform and through proxies. Requests fail on Google Cloud's Agent Platform models earlier than Sonnet 4.5 or Opus 4.5, or on proxies that don't support `tool_reference` blocks | -| `auto` | Threshold mode: tools load upfront if they fit within 10% of the context window, deferred otherwise | -| `auto:N` | Threshold mode with a custom percentage, where `N` is 0-100. For example, `auto:5` for 5% | -| `false` | All MCP tools loaded upfront, no deferral | +| Value | Behavior | +| :------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| (unset) | All MCP tools deferred and loaded on demand. Falls back to loading upfront on Google Cloud's Agent Platform, when `ANTHROPIC_BASE_URL` is a non-first-party host, or on a Microsoft Foundry deployment hosted on Azure | +| `true` | All MCP tools deferred, except on a Microsoft Foundry deployment hosted on Azure, where the server-side rejection still forces upfront loading. Claude Code sends the beta header even on Google Cloud's Agent Platform and through proxies. Requests fail on Google Cloud's Agent Platform models earlier than Sonnet 4.5 or Opus 4.5, or on proxies that don't support `tool_reference` blocks | +| `auto` | Threshold mode: tools load upfront if they fit within 10% of the context window, deferred otherwise | +| `auto:N` | Threshold mode with a custom percentage, where `N` is 0-100. For example, `auto:5` for 5% | +| `false` | All MCP tools loaded upfront, no deferral | ```bash theme={null} # Use a custom 5% threshold diff --git a/content/en/docs/claude-code/model-config.md b/content/en/docs/claude-code/model-config.md index f689f4a3c..0abe595a7 100644 --- a/content/en/docs/claude-code/model-config.md +++ b/content/en/docs/claude-code/model-config.md @@ -602,13 +602,13 @@ A custom ID that embeds a family name, such as `my-gateway/claude-opus-5`, count You can use the following environment variables to control the model names that the aliases map to. Each value must be a full model name, or the equivalent identifier for your API provider. -| Environment variable | Description | -| -------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `ANTHROPIC_DEFAULT_FABLE_MODEL` | The model to use for `fable`, and the model ID Claude Code recognizes as Fable 5 for [automatic model fallback](#automatic-model-fallback) on third-party providers | -| `ANTHROPIC_DEFAULT_OPUS_MODEL` | The model to use for `opus`, or for `opusplan` when Plan Mode is active. | -| `ANTHROPIC_DEFAULT_SONNET_MODEL` | The model to use for `sonnet`, or for `opusplan` when Plan Mode is not active. | -| `ANTHROPIC_DEFAULT_HAIKU_MODEL` | The model to use for `haiku`, or [background functionality](/docs/en/costs#background-token-usage) | -| `CLAUDE_CODE_SUBAGENT_MODEL` | The model to use for all [subagents](/docs/en/sub-agents#choose-a-model), [agent teams](/docs/en/agent-teams), and the agents a [workflow](/docs/en/workflows) runs. Accepts an alias such as `haiku` or a full model name, and overrides the per-invocation `model` parameter and the subagent definition's `model` frontmatter. Set to `inherit` to use normal model resolution instead | +| Environment variable | Description | +| -------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `ANTHROPIC_DEFAULT_FABLE_MODEL` | The model to use for `fable`, and the model ID Claude Code recognizes as Fable 5 for [automatic model fallback](#automatic-model-fallback) on third-party providers | +| `ANTHROPIC_DEFAULT_OPUS_MODEL` | The model to use for `opus`, or for `opusplan` when Plan Mode is active. | +| `ANTHROPIC_DEFAULT_SONNET_MODEL` | The model to use for `sonnet`, or for `opusplan` when Plan Mode is not active. | +| `ANTHROPIC_DEFAULT_HAIKU_MODEL` | The model to use for `haiku`, or [background functionality](/docs/en/costs#background-token-usage) | +| `CLAUDE_CODE_SUBAGENT_MODEL` | The model Claude Code uses for all [subagents](/docs/en/sub-agents#choose-a-model), [agent teams](/docs/en/agent-teams), and agents in a [workflow](/docs/en/workflows). Accepts an alias such as `haiku` or a full model name, and overrides the per-invocation `model` parameter and the subagent definition's `model` frontmatter. Set to `inherit` to use normal model resolution instead | Note: `ANTHROPIC_SMALL_FAST_MODEL` is deprecated in favor of `ANTHROPIC_DEFAULT_HAIKU_MODEL`. @@ -657,11 +657,11 @@ When you pin a model on a third-party provider, the provider-specific ID appears These variables take effect on third-party providers such as Amazon Bedrock, Google Cloud's Agent Platform, and Microsoft Foundry. The `_NAME` and `_DESCRIPTION` variables also take effect when `ANTHROPIC_BASE_URL` points to an [LLM gateway](/docs/en/llm-gateway). They have no effect when connecting directly to `api.anthropic.com`. -| Environment variable | Description | -| ----------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------ | -| `ANTHROPIC_DEFAULT_OPUS_MODEL_NAME` | Display name for the pinned Opus model in the `/model` picker. Defaults to the model ID when not set | -| `ANTHROPIC_DEFAULT_OPUS_MODEL_DESCRIPTION` | Display description for the pinned Opus model in the `/model` picker. Defaults to `Custom Opus model` when not set | -| `ANTHROPIC_DEFAULT_OPUS_MODEL_SUPPORTED_CAPABILITIES` | Comma-separated list of capabilities the pinned Opus model supports | +| Environment variable | Description | +| ----------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `ANTHROPIC_DEFAULT_OPUS_MODEL_NAME` | Display name for the pinned Opus model in the `/model` picker. Defaults to the model ID when not set | +| `ANTHROPIC_DEFAULT_OPUS_MODEL_DESCRIPTION` | Display description for the pinned Opus model in the `/model` picker. When not set, defaults to `Custom Opus model`, or `Custom Opus model (1M context)` if the pinned model ID has the `[1m]` suffix and `CLAUDE_CODE_DISABLE_1M_CONTEXT` isn't turned on | +| `ANTHROPIC_DEFAULT_OPUS_MODEL_SUPPORTED_CAPABILITIES` | Comma-separated list of capabilities the pinned Opus model supports | The same `_NAME`, `_DESCRIPTION`, and `_SUPPORTED_CAPABILITIES` suffixes are available for `ANTHROPIC_DEFAULT_SONNET_MODEL`, `ANTHROPIC_DEFAULT_HAIKU_MODEL`, `ANTHROPIC_DEFAULT_FABLE_MODEL`, and `ANTHROPIC_CUSTOM_MODEL_OPTION`. diff --git a/content/en/docs/claude-code/monitoring-usage.md b/content/en/docs/claude-code/monitoring-usage.md index 684a64bf6..136d1e024 100644 --- a/content/en/docs/claude-code/monitoring-usage.md +++ b/content/en/docs/claude-code/monitoring-usage.md @@ -68,18 +68,18 @@ Example managed settings configuration: Claude Code doesn't pass `OTEL_*` environment variables to the subprocesses it spawns, including the Bash tool, hooks, MCP servers, and language servers. An OpenTelemetry-instrumented application that you run through the Bash tool doesn't inherit Claude Code's exporter endpoint or headers, so set those variables directly in the command if that application needs to export its own telemetry. -### Managed endpoints govern signal-specific endpoints +### How managed settings lock the OTLP destination -A generic `OTEL_EXPORTER_OTLP_ENDPOINT` set in managed settings governs every signal's endpoint. If a lower-precedence source, such as user settings or a shell export, sets a signal-specific endpoint like `OTEL_EXPORTER_OTLP_LOGS_ENDPOINT`, Claude Code removes that variable at startup and logs a warning, visible with `claude --debug`. Users can't point one signal's OTLP traffic at a different endpoint, so you don't need to set the signal-specific endpoint variables in managed settings to prevent it. +When you set an `OTEL_EXPORTER_OTLP_*` variable in managed settings, Claude Code removes conflicting developer-set variables at startup and logs a warning you can see with `claude --debug`. What it removes depends on which variable you set: -This applies only on machines where an administrator deploys managed settings with telemetry configured, and it changes where telemetry is delivered, not what Claude Code collects. +* **Endpoints**: when you set `OTEL_EXPORTER_OTLP_ENDPOINT`, Claude Code removes every developer-set per-signal endpoint. Developers can't point one signal at a different collector, so you don't need to also set the per-signal endpoint variables in managed settings. +* **Protocols**: when you set `OTEL_EXPORTER_OTLP_PROTOCOL`, Claude Code removes every developer-set per-signal protocol. +* **Credentials**: when you set `OTEL_EXPORTER_OTLP_HEADERS`, `OTEL_EXPORTER_OTLP_CLIENT_KEY`, or `OTEL_EXPORTER_OTLP_CLIENT_CERTIFICATE`, Claude Code removes the developer-set per-signal versions of that variable, plus every developer-set endpoint variable, generic or per-signal, since those credentials would otherwise reach a collector the managed settings didn't choose. +* **Exporter selectors**: `OTEL_METRICS_EXPORTER`, `OTEL_LOGS_EXPORTER`, and the beta `OTEL_TRACES_EXPORTER` follow normal per-key precedence. A developer's setting can still disable a signal or switch it to the console exporter, so set the selectors in managed settings too if you need them locked. -A managed `OTEL_EXPORTER_OTLP_HEADERS`, `OTEL_EXPORTER_OTLP_CLIENT_KEY`, or `OTEL_EXPORTER_OTLP_CLIENT_CERTIFICATE` variable also governs the endpoint variables, since those credentials would otherwise accompany telemetry to a collector the managed settings didn't choose. +Claude Code doesn't remove per-signal variables that you set in managed settings itself, so you can route one signal to a different collector by setting its variable there, as the [SIEM example](#send-events-to-a-siem) does. If you set a per-signal credential there, Claude Code removes the developer-set endpoint for that signal. -Two cases keep the normal per-key precedence: - -* Signal-specific variables set in the managed settings file itself still apply, so you can route one signal to a different collector by setting them there, as the [SIEM example](#send-events-to-a-siem) does. -* The exporter selectors (`OTEL_METRICS_EXPORTER`, `OTEL_LOGS_EXPORTER`, and the beta `OTEL_TRACES_EXPORTER`) and the protocol variables follow per-key precedence, so a lower-precedence source can still change how a signal is exported. To make those authoritative too, set the signal-specific keys in managed settings directly. +This removal behavior changes where telemetry is delivered, not what Claude Code collects. {/* min-version: 2.1.217 */}Before v2.1.217, every variable followed per-key settings precedence independently, so a signal-specific endpoint set in user settings or the shell redirected that signal away from the managed collector. @@ -87,14 +87,14 @@ Two cases keep the normal per-key precedence: ### Common configuration variables -These variables configure exporters, endpoints, and export behavior for all deployments. A signal-specific variable overrides its generic counterpart, except that a generic endpoint or credential variable set in [managed settings](#administrator-configuration) governs all signals' endpoints and can't be overridden from lower-precedence sources. +These variables configure exporters, endpoints, and export behavior for all deployments. A per-signal variable overrides its generic counterpart. On machines with managed settings, see [How managed settings lock the OTLP destination](#how-managed-settings-lock-the-otlp-destination) for what Claude Code removes. | Environment Variable | Description | Example Values | | --------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `CLAUDE_CODE_ENABLE_TELEMETRY` | Enables telemetry collection (required) | `1` | | `OTEL_METRICS_EXPORTER` | Metrics exporter types, comma-separated. Use `none` to disable | `console`, `otlp`, `prometheus`, `none` | | `OTEL_LOGS_EXPORTER` | Logs/events exporter types, comma-separated. Use `none` to disable | `console`, `otlp`, `none` | -| `OTEL_EXPORTER_OTLP_PROTOCOL` | Protocol for OTLP exporter, applies to all signals | `grpc`, `http/json`, `http/protobuf` | +| `OTEL_EXPORTER_OTLP_PROTOCOL` | Protocol for OTLP exporter, applies to all signals. Claude Code has no default protocol, so set this or the signal-specific protocol variable for each `otlp` exporter you enable | `grpc`, `http/json`, `http/protobuf` | | `OTEL_EXPORTER_OTLP_ENDPOINT` | OTLP collector endpoint for all signals | `http://localhost:4317` | | `OTEL_EXPORTER_OTLP_METRICS_PROTOCOL` | Protocol for metrics, overrides general setting | `grpc`, `http/json`, `http/protobuf` | | `OTEL_EXPORTER_OTLP_METRICS_ENDPOINT` | OTLP metrics endpoint, overrides general setting | `http://localhost:4318/v1/metrics` | @@ -123,7 +123,7 @@ How you configure client certificates for the OTLP exporter depends on the OTLP | `http/protobuf`, `http/json` | `CLAUDE_CODE_CLIENT_CERT`, `CLAUDE_CODE_CLIENT_KEY`, and optionally `CLAUDE_CODE_CLIENT_KEY_PASSPHRASE`. See [Network configuration](/docs/en/network-config#mtls-authentication) | `NODE_EXTRA_CA_CERTS` | | `grpc` | `OTEL_EXPORTER_OTLP_CLIENT_KEY` and `OTEL_EXPORTER_OTLP_CLIENT_CERTIFICATE`, or the per-signal variants such as `OTEL_EXPORTER_OTLP_METRICS_CLIENT_KEY` to use a different certificate per signal | `OTEL_EXPORTER_OTLP_CERTIFICATE` | -For `grpc`, the OpenTelemetry SDK reads the standard OTLP variables directly, so existing configurations that set the per-signal metrics variables continue to work. +For `grpc`, the OpenTelemetry SDK reads the standard OTLP variables directly, so existing configurations that set the per-signal metrics variables continue to work. On machines with managed settings, Claude Code [may remove developer-set per-signal credentials and endpoints](#how-managed-settings-lock-the-otlp-destination) at startup. ### Metrics cardinality control @@ -143,7 +143,7 @@ These variables help control the cardinality of metrics, which affects storage r Distributed tracing exports spans that link each user prompt to the API requests and tool executions it triggers, so you can view a full request as a single trace in your tracing backend. -Tracing is off by default. To enable it, set both `CLAUDE_CODE_ENABLE_TELEMETRY=1` and `CLAUDE_CODE_ENHANCED_TELEMETRY_BETA=1`, then set `OTEL_TRACES_EXPORTER` to choose where spans are sent. Traces reuse the [common OTLP configuration](#common-configuration-variables) for endpoint, protocol, headers, and [mTLS](#mtls-authentication). A generic endpoint or credential variable set in [managed settings](#managed-endpoints-govern-signal-specific-endpoints) governs the traces endpoint too, so the `OTEL_EXPORTER_OTLP_TRACES_ENDPOINT` override in the table below applies only when managed settings don't set one. +Tracing is off by default. To enable it, set both `CLAUDE_CODE_ENABLE_TELEMETRY=1` and `CLAUDE_CODE_ENHANCED_TELEMETRY_BETA=1`, then set `OTEL_TRACES_EXPORTER` to choose where spans are sent. Traces reuse the [common OTLP configuration](#common-configuration-variables) for endpoint, protocol, headers, and [mTLS](#mtls-authentication). On machines with managed settings, Claude Code [may remove developer-set](#how-managed-settings-lock-the-otlp-destination) `OTEL_EXPORTER_OTLP_TRACES_ENDPOINT` and `OTEL_EXPORTER_OTLP_TRACES_PROTOCOL` variables at startup. | Environment Variable | Description | Example Values | | ------------------------------------- | --------------------------------------------------------------------------------- | ------------------------------------ | @@ -371,7 +371,7 @@ Each custom key becomes a label on every metric series, so high-cardinality valu ### Example configurations -Set these environment variables before running `claude`. Each scenario below shows a complete configuration, and each variable is described under [Common configuration variables](#common-configuration-variables). +Set these environment variables before running `claude`. Each scenario below shows a complete configuration, and each variable is described under [Common configuration variables](#common-configuration-variables). To confirm a configuration took effect, check your backend for the `claude_code.session.count` metric after starting a session; the [Quick start](#quick-start) covers logs-only verification and what to check when nothing arrives. For console debugging with a 1-second export interval: @@ -1225,6 +1225,8 @@ Point `OTEL_EXPORTER_OTLP_LOGS_ENDPOINT` at your SIEM's OTLP receiver, or at an } ``` +To confirm events arrive, submit a prompt in a session running under this configuration and check your SIEM for the `claude_code.user_prompt` event. If nothing arrives, run `claude --debug` and check the debug log for OTel export errors. + ## Backend considerations Your choice of metrics, logs, and traces backends determines the types of analyses you can perform: diff --git a/content/en/docs/claude-code/network-config.md b/content/en/docs/claude-code/network-config.md index e9b758310..015e44bcc 100644 --- a/content/en/docs/claude-code/network-config.md +++ b/content/en/docs/claude-code/network-config.md @@ -8,6 +8,8 @@ Claude Code supports various enterprise network and security configurations through environment variables. This includes routing traffic through corporate proxy servers, trusting custom Certificate Authorities (CA), and authenticating with mutual Transport Layer Security (mTLS) certificates for enhanced security. +Set these environment variables before you launch Claude Code. Variables exported in your shell are read once at startup, so a running session doesn't pick up later changes to your shell environment. + <Note> All environment variables shown on this page can also be configured in [`settings.json`](/docs/en/settings). </Note> @@ -33,6 +35,8 @@ export NO_PROXY="localhost,192.168.1.1,example.com,.example.com" export NO_PROXY="*" ``` +Lowercase variants also work, and Claude Code uses the first one that's set in the order `https_proxy`, `HTTPS_PROXY`, `http_proxy`, `HTTP_PROXY`. + <Note> Claude Code does not support SOCKS proxies. </Note> @@ -113,6 +117,32 @@ Claude Code notes each ignored key in the session's debug log. In [Claude Desktop](/docs/en/desktop) sessions where the app manages the provider connection, such as the Code tab on a [third-party provider](/docs/en/third-party-integrations) and Cowork sessions, Claude Code reads these variables and the proxy variables `HTTP_PROXY`, `HTTPS_PROXY`, and `NO_PROXY` only from [managed settings](/docs/en/settings#settings-files) and `~/.claude/settings.json`: it ignores them in a repository's own settings files, so a checked-out repository can't redirect the TLS or proxy path of a session whose credentials come from the app. In a local, SSH, or WSL Code tab session signed in through claude.ai, the app doesn't manage the connection, and Claude Code reads these variables from every settings scope, like any terminal session; [cloud sessions](/docs/en/claude-code-on-the-web) follow the cloud-session rules above wherever you start them. Before v2.1.217, Claude Code ignored these variables in every settings file when the app managed the connection. +## Verify your configuration + +You usually find out about a wrong proxy address or a bad certificate path from a [connection or certificate error](/docs/en/errors#network-and-connection-errors) on a later request, since Claude Code doesn't validate most of these settings when it reads them. The one setting it checks at startup is the proxy URL: when it can't parse the value, such as one missing the `http://` scheme, Claude Code stops launch with an error naming the variable to fix. + +To confirm your configuration loaded before you send a request, start Claude Code with debug logging: + +```bash theme={null} +claude --debug +``` + +Debug output goes to `~/.claude/debug/<session-id>.txt` rather than the terminal, or to a path you set with `--debug-file <path>`. In the log, look for the lines that confirm each file loaded: + +```text theme={null} +CA certs: Appended extra certificates from NODE_EXTRA_CA_CERTS (/etc/ssl/certs/corp-ca.pem) +mTLS: Loaded client certificate from CLAUDE_CODE_CLIENT_CERT +mTLS: Loaded client key from CLAUDE_CODE_CLIENT_KEY +``` + +If Claude Code can't read one of these files, the log shows a `Failed to read` or `Failed to load` line with the reason instead. + +You can also run `/status` in an interactive session and check these rows: + +* **Proxy**: shows the active proxy URL, and marks a value it can't parse as invalid and ignored. +* **mTLS client cert** and **mTLS client key**: appear only when the files loaded, so a missing row means the load failed and the debug log has the reason. +* **Additional CA cert(s)**: shows the `NODE_EXTRA_CA_CERTS` path without checking that the file loaded, so confirm this one in the debug log. + ## Apply network settings to background agents [Background agents](/docs/en/agent-view) don't run inside the terminal that dispatched them. A per-user supervisor process starts on demand, outlives your shell, and hosts every `claude agents`, `--bg`, and `/background` session. See [How background sessions are hosted](/docs/en/agent-view#how-background-sessions-are-hosted). This changes how the configuration on this page reaches those sessions. diff --git a/content/en/docs/claude-code/overview.md b/content/en/docs/claude-code/overview.md index 57069f5ea..60243ab63 100644 --- a/content/en/docs/claude-code/overview.md +++ b/content/en/docs/claude-code/overview.md @@ -81,7 +81,7 @@ Claude Code runs on several surfaces: the terminal, IDE extensions, a desktop ap claude ``` - You'll be prompted to log in on first use. That's it! [Continue with the Quickstart →](/docs/en/quickstart) + You'll be prompted to log in on first use. If you've set the `ANTHROPIC_API_KEY` environment variable, Claude Code skips the login prompt and asks you to approve the key instead. That's it! [Continue with the Quickstart →](/docs/en/quickstart) <Tip> See [advanced setup](/docs/en/setup) for installation options, manual updates, or uninstallation instructions. Visit [installation troubleshooting](/docs/en/troubleshoot-install) if you hit issues. @@ -208,7 +208,7 @@ Here are some of the ways you can use Claude Code: * Step away from your desk and keep working from your phone or any browser with [Remote Control](/docs/en/remote-control) * Message [Dispatch](/docs/en/desktop#sessions-from-dispatch) a task from your phone and open the Desktop session it creates * Kick off a long-running task on the [web](/docs/en/claude-code-on-the-web) or the [Claude mobile app](/docs/en/mobile), then pull it into your terminal with `claude --teleport`. Teleport requires a claude.ai subscription. - * Run `/desktop` to continue your current terminal session in the [Desktop app](/docs/en/desktop), where you can review diffs visually. Available on macOS and x64 Windows. + * Run `/desktop` to continue your current terminal session in the [Desktop app](/docs/en/desktop), where you can review diffs visually. The `/desktop` handoff requires a claude.ai subscription. Available on macOS and x64 Windows. * Route tasks from team chat: mention `@Claude` in [Slack](/docs/en/slack) with a bug report and get a pull request back </Accordion> </AccordionGroup> diff --git a/content/en/docs/claude-code/permission-modes.md b/content/en/docs/claude-code/permission-modes.md index 57db578e9..b47355b21 100644 --- a/content/en/docs/claude-code/permission-modes.md +++ b/content/en/docs/claude-code/permission-modes.md @@ -207,7 +207,7 @@ Auto mode also nudges Claude to keep working without stopping for clarifying que Auto mode is available only when your account meets all of these requirements: * **Plan**: All plans. -* **Owner**: on Team and Enterprise, an Owner must enable it in [Claude Code admin settings](https://claude.ai/admin-settings/claude-code) before users can turn it on. Administrators can also turn auto mode off by setting `permissions.disableAutoMode` to `"disable"` in [managed settings](/docs/en/permissions#managed-settings). For the desktop app's Code tab, `disableAutoMode` is the organization-level control, and the admin settings toggle doesn't apply. +* **Organization**: on Team and Enterprise, auto mode is available by default. Administrators can turn it off for the organization by setting `permissions.disableAutoMode` to `"disable"` in [managed settings](/docs/en/permissions#managed-settings). * **Model**: on the Anthropic API and [Claude Platform on AWS](/docs/en/claude-platform-on-aws), Claude Opus 4.6 or later, Sonnet 4.6 or later, or [Fable 5](/docs/en/model-config#work-with-fable-5). On Amazon Bedrock, Google Cloud's Agent Platform, Microsoft Foundry, and signed-in [Claude apps gateway](/docs/en/claude-apps-gateway) sessions, only Claude Sonnet 5, Opus 4.7 or later, and Fable 5. Older models, including Sonnet 4.5, Opus 4.5, Haiku, and claude-3 models, are not supported on any provider. * **Provider**: available by default on the Anthropic API, Claude Platform on AWS, Amazon Bedrock, Google Cloud's Agent Platform, Microsoft Foundry, and signed-in Claude apps gateway sessions. {/* min-version: 2.1.207 */}In v2.1.158 through v2.1.206, auto mode was off on all of these providers except the Anthropic API and Claude Platform on AWS until you set `CLAUDE_CODE_ENABLE_AUTO_MODE=1`; v2.1.207 removed the requirement. diff --git a/content/en/docs/claude-code/plugin-marketplaces.md b/content/en/docs/claude-code/plugin-marketplaces.md index 347e1d51e..0a61b2d66 100644 --- a/content/en/docs/claude-code/plugin-marketplaces.md +++ b/content/en/docs/claude-code/plugin-marketplaces.md @@ -656,15 +656,15 @@ For organizations requiring strict control over plugin sources, administrators c When `strictKnownMarketplaces` is configured in managed settings, the restriction behavior depends on the value: -| Value | Behavior | -| ------------------- | ---------------------------------------------------------------- | -| Undefined (default) | No restrictions. Users can add any marketplace | -| Empty array `[]` | Complete lockdown. Users can't add any new marketplaces | -| List of sources | Users can only add marketplaces that match the allowlist exactly | +| Value | Behavior | +| ------------------- | ------------------------------------------------------------------------------------------------ | +| Undefined (default) | No restrictions. Users can add any marketplace | +| Empty array `[]` | Complete lockdown. Blocks every marketplace source, including the official Anthropic marketplace | +| List of sources | Users can only add marketplaces that match the allowlist exactly | #### Common configurations -Disable all marketplace additions: +Disable all marketplace additions, including the official Anthropic marketplace: ```json theme={null} { @@ -672,6 +672,21 @@ Disable all marketplace additions: } ``` +Allow only the official Anthropic marketplace. Matching is exact, so this entry doesn't cover `ref` or `path` variants of the same repository: + +```json theme={null} +{ + "strictKnownMarketplaces": [ + { + "source": "github", + "repo": "anthropics/claude-plugins-official" + } + ] +} +``` + +With this entry, the official marketplace registers itself automatically the first time you start Claude Code interactively, so you don't need to pair it with `extraKnownMarketplaces`. In a non-interactive environment that runs before that first interactive launch, add it explicitly with `claude plugin marketplace add anthropics/claude-plugins-official` or include it in `extraKnownMarketplaces`. + Allow specific marketplaces only: ```json theme={null} @@ -732,7 +747,7 @@ Restrictions are checked before any network or filesystem operation. The check r The allowlist uses exact matching for most source types. For a marketplace to be allowed, all specified fields must match exactly: -* For GitHub sources: `repo` is required, and `ref` or `path` must also match if specified in the allowlist +* For GitHub sources: `repo` is required, and `ref` and `path` must each match exactly or be absent from both the marketplace source and the allowlist entry * For URL sources: the full URL must match exactly * For `hostPattern` sources: the marketplace host is matched against the regex pattern * For `pathPattern` sources: the marketplace's filesystem path is matched against the regex pattern diff --git a/content/en/docs/claude-code/plugins-reference.md b/content/en/docs/claude-code/plugins-reference.md index a5de7cfc4..aeb212538 100644 --- a/content/en/docs/claude-code/plugins-reference.md +++ b/content/en/docs/claude-code/plugins-reference.md @@ -119,7 +119,7 @@ Plugin hooks respond to the same lifecycle events as [user-defined hooks](/docs/ | `UserPromptSubmit` | When you submit a prompt, before Claude processes it | | `UserPromptExpansion` | When a user-typed command expands into a prompt, before it reaches Claude. Can block the expansion | | `PreToolUse` | Before a tool call executes. Can block it | -| `PermissionRequest` | When a permission dialog appears | +| `PermissionRequest` | When a tool call needs a permission decision | | `PermissionDenied` | When a tool call is denied by the auto mode classifier. Return `{retry: true}` to tell the model it may retry the denied tool call | | `PostToolUse` | After a tool call succeeds | | `PostToolUseFailure` | After a tool call fails | @@ -189,6 +189,7 @@ Plugins can bundle Model Context Protocol (MCP) servers to connect Claude Code w * Servers appear as standard MCP tools in Claude's toolkit * Server capabilities integrate seamlessly with Claude's existing tools * Plugin servers can be configured independently of user MCP servers +* If you run [`/reload-plugins`](/docs/en/discover-plugins#apply-plugin-changes-without-restarting) mid-session, Claude Code keeps the live connections of servers whose configuration is unchanged ### LSP servers @@ -358,12 +359,12 @@ Selecting a plugin theme persists `custom:<plugin-name>:<slug>` in the user's co When you install a plugin, you choose a **scope** that determines where the plugin is available and who else can use it: -| Scope | Settings file | Use case | -| :-------- | :---------------------------------------------- | :------------------------------------------------------- | -| `user` | `~/.claude/settings.json` | Personal plugins available across all projects (default) | -| `project` | `.claude/settings.json` | Team plugins shared via version control | -| `local` | `.claude/settings.local.json` | Project-specific plugins, gitignored | -| `managed` | [Managed settings](/docs/en/settings#settings-files) | Managed plugins (read-only, update only) | +| Scope | Settings file | Use case | +| :-------- | :---------------------------------------------- | :-------------------------------------------------------------------------- | +| `user` | `~/.claude/settings.json` | Personal plugins available across all projects (default) | +| `project` | `.claude/settings.json` | Team plugins shared via version control | +| `local` | `.claude/settings.local.json` | Project-specific plugins, gitignored when Claude Code saves a setting to it | +| `managed` | [Managed settings](/docs/en/settings#settings-files) | Managed plugins (read-only, update only) | Plugins use the same scope system as other Claude Code configurations. For installation instructions and scope flags, see [Install plugins](/docs/en/discover-plugins#install-plugins). For a complete explanation of scopes, see [Configuration scopes](/docs/en/settings#configuration-scopes). @@ -397,7 +398,7 @@ A project-scope plugin is checked into the repository and reaches every collabor Personal-scope plugins have none of these restrictions. <Warning> - Project-scope `@skills-dir` plugins load only from the `.claude/skills/` of the directory where you start Claude Code. They do not [walk up to the repository root](/docs/en/skills#automatic-discovery-from-parent-and-nested-directories) the way plain skills and commands do, so launching from a subdirectory misses a plugin that lives at the repo root. Launch from the repository root, or run `/reload-plugins` after changing directories. + Project-scope `@skills-dir` plugins load only from the `.claude/skills/` of the directory where you start Claude Code. They don't [walk up to the repository root](/docs/en/skills#discovery-from-parent-and-nested-directories) the way plain skills and commands do, so launching from a subdirectory misses a plugin that lives at the repo root. Launch from the repository root, or run `/reload-plugins` after changing directories. </Warning> ### Edit, reload, and disable a skills-directory plugin @@ -953,7 +954,7 @@ claude plugin install formatter@my-marketplace # Install to project scope (shared with team) claude plugin install formatter@my-marketplace --scope project -# Install to local scope (gitignored) +# Install to local scope (not shared with team) claude plugin install formatter@my-marketplace --scope local ``` diff --git a/content/en/docs/claude-code/plugins.md b/content/en/docs/claude-code/plugins.md index 88c2af3fa..1cae19746 100644 --- a/content/en/docs/claude-code/plugins.md +++ b/content/en/docs/claude-code/plugins.md @@ -271,6 +271,8 @@ LSP (Language Server Protocol) plugins give Claude real-time code intelligence. Users installing your plugin must have the language server binary installed on their machine. +To confirm the server starts, launch Claude Code with the plugin enabled and check the `/plugin` Errors tab: a language server that fails to start appears there, for example with `Executable not found in $PATH` when the binary isn't installed. An entry with an invalid configuration is skipped instead; run `claude --debug` to see why. + For complete LSP configuration options, see [LSP servers](/docs/en/plugins-reference#lsp-servers). ### Add background monitors to your plugin @@ -329,7 +331,7 @@ As you make changes to your plugin, run `/reload-plugins` to pick up the updates * Try your skills with `/plugin-name:skill-name` * Check that agents appear in `/context` under Custom Agents, or @-mention one by its scoped name -* Verify hooks work as expected +* Trigger the event each hook matches, such as asking Claude to edit a file for a `PostToolUse` hook, and confirm its effect. Claude Code records which hooks matched, their exit codes, and their output in the [debug log](/docs/en/hooks#debug-hooks) <Tip> You can load multiple plugins at once by specifying the flag multiple times: @@ -467,7 +469,7 @@ If you already have skills or hooks in your `.claude/` directory, you can conver claude --plugin-dir ./my-plugin ``` - Test each component: run your commands, check that agents appear in `/context`, and verify hooks trigger correctly. + Test each component: run your commands, check that agents appear in `/context`, and trigger the event each hook matches to confirm its effect. Claude Code records which hooks matched and how they exited in the [debug log](/docs/en/hooks#debug-hooks). </Step> </Steps> diff --git a/content/en/docs/claude-code/prompt-caching.md b/content/en/docs/claude-code/prompt-caching.md index cb89244e3..5a1c73ee6 100644 --- a/content/en/docs/claude-code/prompt-caching.md +++ b/content/en/docs/claude-code/prompt-caching.md @@ -6,7 +6,7 @@ > Claude Code manages prompt caching automatically. See why a model switch triggers a slow uncached turn, what `/compact` costs, why CLAUDE.md edits don't apply mid-session, and how to check your cache hit rate. -Prompt caching makes Claude Code faster and more cost-efficient. Without caching, the API would reprocess your full history on every turn. With caching, it reuses what it already processed and only does new work for what changed. +Prompt caching makes Claude Code faster and more cost-efficient. Without caching, the API would reprocess your full history on every turn. With caching, it reuses what it already processed, bills the re-read at the [cached token rate](https://platform.claude.com/docs/en/about-claude/pricing), and fully processes only what changed. Claude Code handles prompt caching for you, unless you [disable it](#disable-prompt-caching). It is still useful to know how prompt caching works, because some actions invalidate the cache and make the next response slower and more expensive while it rebuilds. This page covers which actions those are, why some settings wait for a restart to apply, and how to check cache performance when usage looks high. @@ -92,7 +92,7 @@ The cost applies once per conversation. After the first fast mode turn, Claude C Tool definitions sit in the system prompt layer, so the cache invalidates when the set of tool definitions in the request changes between turns. Toggling the [advisor tool](/docs/en/advisor) is an exception: its definition sits after the cache breakpoint, so enabling or disabling `/advisor` keeps the cached prefix intact. Whether an [MCP server](/docs/en/mcp) change does this depends on whether its tools are deferred by [tool search](/docs/en/mcp#scale-with-mcp-tool-search) or loaded into the prefix: * **Deferred tools**, the default on supported models: a server connecting, disconnecting, or changing its tool list only appends new content and doesn't disturb anything already cached. -* **Tools loaded into the prefix**: any change to them invalidates the cache. This happens when [tool search is unavailable or disabled](/docs/en/mcp#configure-tool-search), such as on Google Cloud's Agent Platform or with a custom `ANTHROPIC_BASE_URL` gateway. It also happens for a server or tool marked [`alwaysLoad`](/docs/en/mcp#exempt-a-server-from-deferral), and for definitions kept upfront by [threshold-based loading](/docs/en/mcp#configure-tool-search). +* **Tools loaded into the prefix**: any change to them invalidates the cache. This happens when [tool search is unavailable or disabled](/docs/en/mcp#configure-tool-search), such as on Google Cloud's Agent Platform, with a custom `ANTHROPIC_BASE_URL` gateway, or on a Microsoft Foundry [deployment hosted on Azure](https://platform.claude.com/docs/en/build-with-claude/claude-in-microsoft-foundry#hosting-options) once Claude Code detects that the deployment rejects tool search. It also happens for a server or tool marked [`alwaysLoad`](/docs/en/mcp#exempt-a-server-from-deferral), and for definitions kept upfront by [threshold-based loading](/docs/en/mcp#configure-tool-search). When tools load into the prefix, the most common cause of an invalidation is a server connecting or disconnecting mid-session, which can happen without any action on your part: a stdio server's process exits, an HTTP session expires, or a server [reconnects automatically after a transient failure](/docs/en/mcp#automatic-reconnection). A connected server can also push a [dynamic tool update](/docs/en/mcp#dynamic-tool-updates) that changes its tool list. @@ -118,7 +118,9 @@ Only a deny rule that matches in the tool-name position has this effect: a bare [Compaction](/docs/en/context-window#what-survives-compaction) replaces your message history with a summary. By design, this invalidates the conversation layer, since the next request has a new, shorter history that doesn't share a prefix with the old one. Claude Code reuses the system prompt layer and reloads project context from disk, which cache-hits only if CLAUDE.md and memory are unchanged since the session started. -To produce the summary, Claude Code sends a one-off request with the same system prompt, tools, and history as your conversation, plus a summarization instruction appended as a final user message. Because it shares your prefix, that request reads the existing cache rather than reprocessing the full history. Most of compaction's time goes to generating the summary, not to a cache miss. The turn that follows rebuilds the conversation cache only for the much shorter summary, so the post-compaction turn is not the slow part. +To produce the summary, Claude Code sends a separate request with the same system prompt, tools, and history as your conversation, plus a summarization instruction appended as a final user message. While the cache is warm, that request reads your prefix from the cache, so a mid-session `/compact` costs a fraction of what the context size suggests and spends most of its time generating the summary. + +After a break longer than the [cache lifetime](#cache-lifetime), there is no cache left to read, so the summarization request reprocesses the full history as uncached input. This is why `/compact` costs the most when you [resume an old session](/docs/en/sessions#resume-from-a-summary). In both the warm and cold cases, the turn after compaction rebuilds the conversation cache for only the much shorter summary, so that turn is not the slow part. <Tip> Compaction works in your favor when the context you discard is content you no longer need. To choose when its overhead happens, run `/compact` at a natural break in your work, such as between tasks, instead of waiting for auto-compaction to trigger mid-task. If you've gone down a path you want to abandon entirely, [`/rewind`](#rewinding-the-conversation) to an earlier turn instead. Rewinding truncates back to a prefix that is already cached, rather than building a new one as compaction does. @@ -181,13 +183,15 @@ Restoring file checkpoints alongside the conversation has no separate effect on Cached prefixes expire after a period of inactivity. Each request that hits the cache resets the timer, so the cache stays warm as long as you keep working. After a long enough gap, the next request recomputes the full input and re-establishes the cache, which is why the first turn back after stepping away can be noticeably slower. +On a Pro or Max plan, when you resume a large session after a long break, Claude Code [offers to resume from a summary](/docs/en/sessions#resume-from-a-summary) so later requests don't carry the full history. + The time to live (TTL) controls how long a gap the cache survives. The API offers two: a five-minute TTL, and a [one-hour TTL](https://platform.claude.com/docs/en/build-with-claude/prompt-caching#1-hour-cache-duration) that keeps the cache warm through longer breaks but [bills cache writes at a higher rate](https://platform.claude.com/docs/en/build-with-claude/prompt-caching#pricing). Claude Code picks the TTL for you based on how you authenticate, and you can override it with environment variables. ### On a Claude subscription -On a Claude subscription, Claude Code requests the one-hour TTL automatically. Usage is included in your plan rather than billed per token, so the longer TTL costs you nothing extra and only affects how long your cache stays warm. +On a Claude subscription, Claude Code requests the one-hour TTL automatically, so the cache survives breaks of up to an hour. -If you've gone over your plan's usage limit and Claude Code is drawing on [usage credits](https://support.claude.com/en/articles/12429409-extra-usage-for-paid-claude-plans), you are billed for that usage, so Claude Code automatically drops the TTL to five minutes. +If you've gone over your plan's usage limit and Claude Code is drawing on [usage credits](https://support.claude.com/en/articles/12429409-extra-usage-for-paid-claude-plans), you are billed for that usage. Cache writes cost more at the one-hour TTL than at the five-minute TTL, so Claude Code automatically drops to the shorter one. ### On an API key or third-party provider diff --git a/content/en/docs/claude-code/prompt-library.md b/content/en/docs/claude-code/prompt-library.md index 79fe1f937..d2610de81 100644 --- a/content/en/docs/claude-code/prompt-library.md +++ b/content/en/docs/claude-code/prompt-library.md @@ -1335,37 +1335,37 @@ The prompts above share a few patterns. Recognizing them helps you adapt any pro **Describe the outcome, not the steps.** Say what you want and let Claude find the files. The prompt below works without naming a single file path. -```text theme={null} +```text wrap theme={null} add rate limiting to the public API and make sure existing tests still pass ``` **Give it a way to check its own work.** Ask for run, test, compare, or verify in the same prompt so Claude iterates instead of stopping after one attempt. -```text theme={null} +```text wrap theme={null} write the migration, run it against the dev database, and confirm the schema matches ``` **Point at a reference.** Name an existing file, test, or pattern to match so the new code is consistent with what you already have. -```text theme={null} +```text wrap theme={null} add a settings page that follows the same layout as the profile page ``` **State the measurable target.** When the goal is performance or coverage, give the metric and threshold so completion is unambiguous. -```text theme={null} +```text wrap theme={null} get the bundle size under 200KB and show me what you removed ``` **Give it the artifact.** Paste errors, logs, screenshots, and plan output directly in the prompt, or type `@` to reference a file. Claude reads the source instead of your description of it. -```text theme={null} +```text wrap theme={null} why is the build failing? @build.log ``` **Say how you want the answer.** Name the format, length, or audience so the explanation fits how you'll use it. To make a format the default for every response, set an [output style](/docs/en/output-styles). -```text theme={null} +```text wrap theme={null} explain how the payment retry logic works as an HTML page with a diagram, then open it in my browser ``` diff --git a/content/en/docs/claude-code/quickstart.md b/content/en/docs/claude-code/quickstart.md index 376b03384..2868d80ba 100644 --- a/content/en/docs/claude-code/quickstart.md +++ b/content/en/docs/claude-code/quickstart.md @@ -29,19 +29,19 @@ To install Claude Code, use one of the following methods: <Tab title="Native Install (Recommended)"> **macOS, Linux, WSL:** - ```bash theme={null} + ```bash theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} curl -fsSL https://claude.ai/install.sh | bash ``` **Windows PowerShell:** - ```powershell theme={null} + ```powershell theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} irm https://claude.ai/install.ps1 | iex ``` **Windows CMD:** - ```batch theme={null} + ```batch theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} curl -fsSL https://claude.ai/install.cmd -o install.cmd && install.cmd && del install.cmd ``` @@ -57,7 +57,7 @@ To install Claude Code, use one of the following methods: </Tab> <Tab title="Homebrew"> - ```bash theme={null} + ```bash theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} brew install --cask claude-code ``` @@ -69,7 +69,7 @@ To install Claude Code, use one of the following methods: </Tab> <Tab title="WinGet"> - ```powershell theme={null} + ```powershell theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} winget install Anthropic.ClaudeCode ``` @@ -97,9 +97,9 @@ Claude Code requires an account to use. Start an interactive session with the `c claude ``` -For Claude subscription or Console accounts, follow the prompts to complete authentication in your browser. To switch accounts later or re-authenticate, type `/login` inside the running session: +For Claude subscription or Console accounts, follow the prompts to complete authentication in your browser. If you've set the `ANTHROPIC_API_KEY` environment variable, Claude Code skips the login prompt and asks you to approve the key instead. To switch accounts later or re-authenticate, type `/login` inside the running session: -```text theme={null} +```text wrap theme={null} /login ``` @@ -133,35 +133,35 @@ You'll see the Claude Code prompt with the version, current model, and working d Let's start with understanding your codebase. Try one of these commands: -```text theme={null} +```text wrap theme={null} what does this project do? ``` Claude will analyze your files and provide a summary. You can also ask more specific questions: -```text theme={null} +```text wrap theme={null} what technologies does this project use? ``` -```text theme={null} +```text wrap theme={null} where is the main entry point? ``` -```text theme={null} +```text wrap theme={null} explain the folder structure ``` You can also ask Claude about its own capabilities: -```text theme={null} +```text wrap theme={null} what can Claude Code do? ``` -```text theme={null} +```text wrap theme={null} how do I create custom skills in Claude Code? ``` -```text theme={null} +```text wrap theme={null} can Claude Code work with Docker? ``` @@ -173,7 +173,7 @@ can Claude Code work with Docker? Now let's make Claude Code do some actual coding. Try a simple task: -```text theme={null} +```text wrap theme={null} add a hello world function to the main file ``` @@ -192,25 +192,25 @@ Claude Code will: Claude Code makes Git operations conversational: -```text theme={null} +```text wrap theme={null} what files have I changed? ``` -```text theme={null} +```text wrap theme={null} commit my changes with a descriptive message ``` You can also prompt for more complex Git operations: -```text theme={null} +```text wrap theme={null} create a new branch called feature/quickstart ``` -```text theme={null} +```text wrap theme={null} show me the last 5 commits ``` -```text theme={null} +```text wrap theme={null} help me resolve merge conflicts ``` @@ -220,13 +220,13 @@ Claude is proficient at debugging and feature implementation. Describe what you want in natural language: -```text theme={null} +```text wrap theme={null} add input validation to the user registration form ``` Or fix existing issues: -```text theme={null} +```text wrap theme={null} there's a bug where users can submit empty forms - fix it ``` @@ -243,25 +243,25 @@ There are a number of ways to work with Claude: **Refactor code** -```text theme={null} +```text wrap theme={null} refactor the authentication module to use async/await instead of callbacks ``` **Write tests** -```text theme={null} +```text wrap theme={null} write unit tests for the calculator functions ``` **Update documentation** -```text theme={null} +```text wrap theme={null} update the README with installation instructions ``` **Code review** -```text theme={null} +```text wrap theme={null} review my changes and suggest improvements ``` @@ -307,7 +307,7 @@ For more, see [best practices](/docs/en/best-practices) and [common workflows](/ <Accordion title="Use step-by-step instructions"> Break complex tasks into steps: - ```text theme={null} + ```text wrap theme={null} 1. create a new database table for user profiles 2. create an API endpoint to get and update user profiles 3. build a webpage that allows users to see and edit their information @@ -317,11 +317,11 @@ For more, see [best practices](/docs/en/best-practices) and [common workflows](/ <Accordion title="Let Claude explore first"> Before making changes, let Claude understand your code: - ```text theme={null} + ```text wrap theme={null} analyze the database schema ``` - ```text theme={null} + ```text wrap theme={null} build a dashboard showing products that are most frequently returned by our UK customers ``` </Accordion> diff --git a/content/en/docs/claude-code/remote-control.md b/content/en/docs/claude-code/remote-control.md index 5c972fe44..cc2ad5c1d 100644 --- a/content/en/docs/claude-code/remote-control.md +++ b/content/en/docs/claude-code/remote-control.md @@ -30,6 +30,7 @@ Before using Remote Control, confirm that your environment meets these condition * **Subscription**: available on Pro, Max, Team, and Enterprise plans. API keys are not supported. On Team and Enterprise, an Owner must first enable the Remote Control toggle in [Claude Code admin settings](https://claude.ai/admin-settings/claude-code). * **Authentication**: run `claude` and use `/login` to sign in through claude.ai if you haven't already. Without an eligible login, `claude remote-control` exits with an error, while `claude --remote-control` still starts an interactive session and shows a Remote Control failure notification shortly after launch. * **API endpoint**: not available on Amazon Bedrock, Google Cloud's Agent Platform, or Microsoft Foundry. {/* min-version: 2.1.196 */}As of v2.1.196, Remote Control is also disabled when [`ANTHROPIC_BASE_URL`](/docs/en/env-vars) points at a host other than `api.anthropic.com`, such as an [LLM gateway](/docs/en/llm-gateway) or proxy. Unset the variable to use Remote Control. +* **Feature-flag evaluation**: [`DISABLE_TELEMETRY`, `DO_NOT_TRACK`, `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC`, and `DISABLE_GROWTHBOOK`](/docs/en/env-vars) each disable the feature-flag evaluation that Remote Control availability depends on. Unset the variable wherever it's set, in your shell environment or in the `env` block of a [`settings.json` file](/docs/en/settings#available-settings), to use Remote Control. * **Workspace trust**: run `claude` in your project directory at least once to accept the workspace trust dialog. The startup trust dialog never saves trust for your home directory, so start Remote Control from a project directory. ## Start a Remote Control session @@ -59,6 +60,8 @@ You can start a Remote Control session from the CLI or the VS Code extension. Th | `--[no-]create-session-in-dir` | Pre-create one session in the current directory when the server starts, so you have somewhere to type immediately. In `worktree` mode this session stays in the current directory while on-demand sessions get isolated worktrees. On by default; pass `--no-create-session-in-dir` to start with none. | | `--verbose` | Show detailed connection and session logs. | | `--sandbox` / `--no-sandbox` | Enable or disable [sandboxing](/docs/en/sandboxing) for filesystem and network isolation. Off by default. | + + Claude Code checks Remote Control eligibility before printing help, so `claude remote-control --help` returns an error instead of this flag list when you aren't signed in with an eligible account. </Tab> <Tab title="Interactive session"> @@ -150,9 +153,9 @@ If you don't have the Claude app yet, use the `/mobile` command inside Claude Co ### Enable Remote Control for all sessions -Remote Control only activates when you explicitly run `claude remote-control`, `claude --remote-control`, or `/remote-control`, unless auto-connect is turned on. To enable it automatically for every interactive session, run `/config` inside Claude Code and set **Enable Remote Control for all sessions** to `true`. Set it to `false` to never auto-connect, or leave it unset to follow your organization's default. In the Desktop app, you can also toggle this from **Settings → Claude Code → Enable remote control by default**. {/* min-version: 2.1.203 */}In the [VS Code extension](/docs/en/vs-code#use-the-prompt-box), the same toggle appears as **Enable Remote Control for all sessions** in the command menu's Settings section; requires Claude Code v2.1.203 or later. +Remote Control only activates when you explicitly run `claude remote-control`, `claude --remote-control`, or `/remote-control`, unless auto-connect is turned on. To enable it automatically for every interactive session, run `/config` inside Claude Code and set **Enable Remote Control for all sessions** to `true`. Set it to `false` to never auto-connect, or to `default` to clear your choice. When the setting is cleared, Remote Control follows your organization's admin default if one is set, and otherwise Claude Code's current default. In the Desktop app, you can also toggle this from **Settings → Claude Code → Enable remote control by default**. {/* min-version: 2.1.203 */}In the [VS Code extension](/docs/en/vs-code#use-the-prompt-box), the same toggle appears as **Enable Remote Control for all sessions** in the command menu's Settings section; requires Claude Code v2.1.203 or later. -With this setting on, each interactive Claude Code process registers one remote session. If you run multiple instances, each one gets its own environment and session. To run multiple concurrent sessions from a single process, use [server mode](#start-a-remote-control-session) instead. +With this setting on, each interactive Claude Code process registers one remote session. If you run multiple instances, each one gets its own remote session. To run multiple concurrent sessions from a single process, use [server mode](#start-a-remote-control-session) instead. ## Connection and security @@ -290,7 +293,7 @@ Your cached account information is stale or incomplete. Run `claude auth login` ### "Remote Control is not yet enabled for your account" -The Remote Control rollout has not reached your account, or your cached entitlements are out of date. If you recently changed plans, run `claude auth logout` then `claude auth login` to refresh them. Run `claude doctor` to see which individual eligibility check failed. Environment-variable conflicts, unreachable checks, and organization policy each produce their own message, so this error means the rollout gate itself. +The Remote Control rollout has not reached your account, or your cached entitlements are out of date. If you recently changed plans, run `claude auth logout` then `claude auth login` to refresh them. Run `claude doctor` to see which individual eligibility check failed. Environment-variable conflicts, unreachable checks, and organization policy each produce their own message, so this error means the rollout gate itself. {/* min-version: 2.1.154 */}Before v2.1.154, a variable that disables feature-flag evaluation, such as `DISABLE_TELEMETRY` or `DO_NOT_TRACK`, also produced this message; the "Remote Control requires feature-flag evaluation" entry below covers that configuration. ### "Couldn't verify Remote Control eligibility" @@ -298,7 +301,7 @@ Claude Code could not reach the feature-flag service to check whether Remote Con ### "Remote Control requires feature-flag evaluation" -The full message names the environment variable that caused it: `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC`, `DISABLE_TELEMETRY`, `DO_NOT_TRACK`, or `DISABLE_GROWTHBOOK`. These privacy opt-outs disable feature-flag evaluation, which Remote Control needs to check its rollout gate. Unset the named variable, or start the session in a shell without it. Before v2.1.154, this case surfaced as "Remote Control is not yet enabled for your account" instead of naming the variable. +One of these variables is set: [`DISABLE_TELEMETRY`, `DO_NOT_TRACK`, `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC`, or `DISABLE_GROWTHBOOK`](/docs/en/env-vars). Each of them disables the feature-flag evaluation that Remote Control availability depends on, and the full message names the variable Claude Code found. Unset that variable wherever it's set, in your shell environment or in the `env` block of a [`settings.json` file](/docs/en/settings#available-settings). On versions before 2.1.154, the same configuration produces "Remote Control is not yet enabled for your account" instead. ### "Remote Control is only available when using Claude via api.anthropic.com" diff --git a/content/en/docs/claude-code/sandbox-environments.md b/content/en/docs/claude-code/sandbox-environments.md index 6347538da..6e988dc7a 100644 --- a/content/en/docs/claude-code/sandbox-environments.md +++ b/content/en/docs/claude-code/sandbox-environments.md @@ -18,14 +18,14 @@ Claude Code can run in several kinds of isolated environments, ranging from a li The first two approaches in the table below run on the host operating system without containers. The rest place Claude Code inside a container or virtual machine. -| Approach | What is isolated | Requires Docker | Setup effort | -| :------------------------------------------------ | :-------------------------------------------------------------------------- | :-------------- | :---------------------------------------------- | -| [Sandboxed Bash tool](#sandboxed-bash-tool) | Bash commands and their child processes | No | Minimal on macOS; low on Linux and WSL2 | -| [Sandbox runtime](#sandbox-runtime) | The whole Claude Code process, including file tools, MCP servers, and hooks | No | Low | -| [Dev container](#dev-containers) | Full development environment | Yes | Medium | -| [Custom container](#custom-container) | Full development environment | Yes | Medium to high | -| [Virtual machine](#virtual-machine) | Full operating system | No | High | -| [Claude Code on the web](#claude-code-on-the-web) | Full operating system, hosted by Anthropic | No | None; requires a Claude subscription and GitHub | +| Approach | What is isolated | Requires Docker | Setup effort | +| :------------------------------------------------ | :-------------------------------------------------------------------------- | :-------------- | :-------------------------------------------------------------------------------------- | +| [Sandboxed Bash tool](#sandboxed-bash-tool) | Bash commands and their child processes | No | Minimal on macOS; low on Linux and WSL2 | +| [Sandbox runtime](#sandbox-runtime) | The whole Claude Code process, including file tools, MCP servers, and hooks | No | Low | +| [Dev container](#dev-containers) | Full development environment | Yes | Medium | +| [Custom container](#custom-container) | Full development environment | Yes | Medium to high | +| [Virtual machine](#virtual-machine) | Full operating system | No | High | +| [Claude Code on the web](#claude-code-on-the-web) | Full operating system, hosted by Anthropic | No | None; requires a Claude subscription, and GitHub when you launch from the web interface | The [sandboxed Bash tool](/docs/en/sandboxing) is built into Claude Code and restricts only Bash commands. Built-in file tools, MCP servers, and hooks still run directly on your host. Every other approach in the table puts the whole Claude Code process inside the isolation boundary, so file tools, MCP servers, and hooks are restricted too. @@ -39,16 +39,16 @@ The [sandboxed Bash tool](/docs/en/sandboxing) is built into Claude Code and res Match your goal to a row below, then read the detail section that follows. -| You want to | Start with | -| :---------------------------------------------------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------- | -| Reduce permission prompts during everyday work on your own machine | The [sandboxed Bash tool](/docs/en/sandboxing), enabled with `/sandbox` | -| Let Claude work unattended with `--dangerously-skip-permissions` or auto mode | The preconfigured [dev container](/docs/en/devcontainer), any container or VM, or the [sandbox runtime](#sandbox-runtime) | -| Isolate MCP servers and hooks as well as Bash, without Docker | The sandbox runtime | -| Work on an untrusted repository | A dedicated virtual machine, or [Claude Code on the web](/docs/en/claude-code-on-the-web) if you have a Claude subscription and a connected GitHub account | -| Standardize a sandboxed environment across a team | The preconfigured [dev container](/docs/en/devcontainer), copied into your repository | -| Use Claude Code from a device with no local setup | [Claude Code on the web](/docs/en/claude-code-on-the-web), which requires a Claude subscription and a connected GitHub account | -| Require isolation for every developer in your organization | [Enforce isolation across an organization](#enforce-isolation-across-an-organization) | -| Work on a native Windows host | A container or VM, or run the Bash sandbox inside WSL2 | +| You want to | Start with | +| :---------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| Reduce permission prompts during everyday work on your own machine | The [sandboxed Bash tool](/docs/en/sandboxing), enabled with `/sandbox` | +| Let Claude work unattended with `--dangerously-skip-permissions` or auto mode | The preconfigured [dev container](/docs/en/devcontainer), any container or VM, or the [sandbox runtime](#sandbox-runtime) | +| Isolate MCP servers and hooks as well as Bash, without Docker | The sandbox runtime | +| Work on an untrusted repository | A dedicated virtual machine, or [Claude Code on the web](/docs/en/claude-code-on-the-web) if you have a Claude subscription; GitHub is only required when you launch from the web interface | +| Standardize a sandboxed environment across a team | The preconfigured [dev container](/docs/en/devcontainer), copied into your repository | +| Use Claude Code from a device with no local setup | [Claude Code on the web](/docs/en/claude-code-on-the-web), which requires a Claude subscription and a connected GitHub account | +| Require isolation for every developer in your organization | [Enforce isolation across an organization](#enforce-isolation-across-an-organization) | +| Work on a native Windows host | A container or VM, or run the Bash sandbox inside WSL2 | ### How isolation relates to permission modes @@ -115,7 +115,7 @@ Use this approach when you are evaluating untrusted code, when your security pol [Claude Code on the web](/docs/en/claude-code-on-the-web) runs each session in an isolated, Anthropic-managed virtual machine. A network proxy enforces a default allowlist, and a separate proxy holds your GitHub token outside the sandbox while issuing scoped credentials for repository access inside it. -Use this approach when you want full VM isolation without provisioning infrastructure yourself, or when you are delegating tasks from a device that does not have a local development environment. It requires a Claude subscription and a connected GitHub account, and sessions clone your repository from GitHub. See [Claude Code on the web](/docs/en/claude-code-on-the-web) for plan availability and GitHub authentication options. +Use this approach when you want full VM isolation without provisioning infrastructure yourself, or when you are delegating tasks from a device that does not have a local development environment. It requires a Claude subscription. When you launch a session from the web interface, you also need a connected GitHub account so the sandbox can clone your repository. When you launch from the CLI with `--cloud`, Claude Code can [bundle and upload your local repository](/docs/en/claude-code-on-the-web#send-local-repositories-without-github) instead if GitHub isn't connected. See [Claude Code on the web](/docs/en/claude-code-on-the-web) for plan availability and GitHub authentication options. ## Enforce isolation across an organization diff --git a/content/en/docs/claude-code/sandboxing.md b/content/en/docs/claude-code/sandboxing.md index 6b511aa24..ef98882a5 100644 --- a/content/en/docs/claude-code/sandboxing.md +++ b/content/en/docs/claude-code/sandboxing.md @@ -46,7 +46,7 @@ On macOS, there is nothing to install: sandboxing uses the built-in Seatbelt fra </Step> </Steps> -Selecting a mode in the panel writes to your project's local settings at `.claude/settings.local.json`, which apply to the current project and are not checked into git. To enable the sandbox across all of your projects, set [`sandbox.enabled`](/docs/en/settings#sandbox-settings) to `true` in your user settings at `~/.claude/settings.json`. To enforce sandboxing for every developer in an organization, use [managed settings](#enforce-sandboxing-with-managed-settings). +Selecting a mode in the panel writes to your project's local settings at `.claude/settings.local.json`, which apply to the current project. Claude Code adds that file to your global gitignore when it saves a setting there. To enable the sandbox across all of your projects, set [`sandbox.enabled`](/docs/en/settings#sandbox-settings) to `true` in your user settings at `~/.claude/settings.json`. To enforce sandboxing for every developer in an organization, use [managed settings](#enforce-sandboxing-with-managed-settings). <Warning> By default, if the sandbox cannot start because dependencies are missing or the platform is unsupported, Claude Code shows a warning and runs commands without sandboxing. To make this a hard failure instead, set [`sandbox.failIfUnavailable`](/docs/en/settings#sandbox-settings) to `true`. This is intended for managed deployments that require sandboxing as a security gate. diff --git a/content/en/docs/claude-code/security-guidance.md b/content/en/docs/claude-code/security-guidance.md index bb1ecf198..bd21586f1 100644 --- a/content/en/docs/claude-code/security-guidance.md +++ b/content/en/docs/claude-code/security-guidance.md @@ -10,7 +10,7 @@ The security guidance plugin makes Claude review its own code changes for common Once installed, the plugin runs automatically. There is nothing to invoke and no separate command to remember. -The plugin is the in-session companion to [Code Review](/docs/en/code-review), which runs on pull requests. This plugin reduces what reaches the PR. Code Review catches what does. For how the plugin layers with on-demand review and CI scanning, see [How this fits with other security tools](#how-this-fits-with-other-security-tools). +The plugin is the in-session companion to [Code Review](/docs/en/code-review), which runs on pull requests. This plugin reduces what reaches the PR. Code Review catches what does. For how the plugin layers with on-demand review and CI scanning, or to scan code you already have rather than changes Claude is writing, see [How this fits with other security tools](#how-this-fits-with-other-security-tools). ## Prerequisites @@ -156,11 +156,11 @@ The plugin also reads `.claude/security-patterns.yml` and `.claude/security-patt The plugin looks for `claude-security-guidance.md` and `security-patterns.yaml` in the same locations, independently of how the plugin was enabled: -| Scope | Path | Notes | -| :------------ | :------------------------------------------ | :--------------------------------------- | -| User | `~/.claude/claude-security-guidance.md` | Applies to every project on your machine | -| Project | `.claude/claude-security-guidance.md` | Checked in with the repository | -| Project local | `.claude/claude-security-guidance.local.md` | Gitignored, for personal overrides | +| Scope | Path | Notes | +| :------------ | :------------------------------------------ | :-------------------------------------------------- | +| User | `~/.claude/claude-security-guidance.md` | Applies to every project on your machine | +| Project | `.claude/claude-security-guidance.md` | Checked in with the repository | +| Project local | `.claude/claude-security-guidance.local.md` | For personal overrides; add it to your `.gitignore` | The plugin loads all locations that exist and concatenates them, with a combined cap of 8 KB for the guidance file. Administrators can distribute organization-wide rules by pushing the user-scope file to `~/.claude/` through device management. The same paths apply to `security-patterns.yaml`. @@ -226,6 +226,8 @@ The plugin is one layer in a defense-in-depth approach. It catches issues earlie Each later stage catches what earlier ones miss. The plugin's value is reducing the volume that reaches them, not eliminating the need for them. +To find security issues in code you already have, rather than in changes Claude is writing, ask Claude in a session to review a specific file or directory for vulnerabilities, or use the [Claude Security plugin](/docs/en/claude-security) for a deeper multi-agent scan of the whole repository; [`/security-review`](/docs/en/commands#all-commands) covers only the changes on your current branch. Either way, the review reads the source code in your checkout, not a running site or deployed service. + ## Troubleshooting The plugin writes runtime diagnostics to `~/.claude/security/log.txt`. Check there first if reviews are not appearing. diff --git a/content/en/docs/claude-code/security.md b/content/en/docs/claude-code/security.md index c2e1dc461..8c6d26e97 100644 --- a/content/en/docs/claude-code/security.md +++ b/content/en/docs/claude-code/security.md @@ -138,6 +138,7 @@ If you discover a security vulnerability in Claude Code: ## Related resources * [Security guidance plugin](/docs/en/security-guidance): have Claude review and fix vulnerabilities in its own code changes during the session +* [`/security-review`](/docs/en/commands#all-commands): run an on-demand security pass over the changes on your current branch * [Sandbox environments](/docs/en/sandbox-environments): compare isolation approaches and choose one for your threat model * [Sandboxing](/docs/en/sandboxing): filesystem and network isolation for Bash commands * [Permissions](/docs/en/permissions): configure permissions and access controls diff --git a/content/en/docs/claude-code/sessions.md b/content/en/docs/claude-code/sessions.md index a5805369e..94ee5c621 100644 --- a/content/en/docs/claude-code/sessions.md +++ b/content/en/docs/claude-code/sessions.md @@ -37,6 +37,18 @@ A resumed session restores the conversation along with the state saved in it: Not every configuration flag from the original launch is restored. If the session depended on `--mcp-config`, `--settings`, `--plugin-dir`, `--fallback-model`, or directories added with `--add-dir`, pass them again when you resume; directories added mid-session with `/add-dir` aren't restored either, though the session picker still uses them to locate the session. The standard settings files, such as `settings.json` and `settings.local.json`, are re-read at launch, so configuration that lives in them doesn't need to be passed again. +### Resume from a summary + +On a Pro or Max plan, when you resume a session that has been inactive for more than about an hour and is over 100,000 tokens, Claude Code restores the conversation and then opens a dialog before you send your first message. The session's [prompt cache](/docs/en/prompt-caching#cache-lifetime) has expired by then, so the next request processes the full history once no matter which of the dialog's options you pick. + +The dialog offers three ways to continue the session. They differ in how much of the conversation each one carries forward into later requests, which is a tradeoff between keeping every detail and sending fewer tokens per request: + +* **Resume from summary**: runs [`/compact`](/docs/en/context-window#what-survives-compaction) immediately. Claude Code sends one summarization request over the full history, then replaces the history with the summary, your most recent exchanges, and up to five recently read files. Later requests carry the summary instead of the full history. +* **Resume full session as-is**: loads the conversation unchanged. After you send your first message, Claude Code reprocesses and re-caches the full history, then re-reads it from the cache on later requests while the cache stays warm. +* **Don't ask me again**: resumes the full session and stops showing the dialog on all future resumes. + +Resuming as-is keeps every detail of the conversation available, at a per-request cost that scales with the conversation's size. Resuming from the summary costs less on each later request because it carries the summary instead of the full history, but whatever the summary leaves out is no longer in Claude's context. See [why usage climbs in a long session](/docs/en/costs#why-usage-climbs-in-a-long-session) for where that per-request cost comes from. + ### Where the session picker looks Claude Code stores sessions per project directory. By default the session picker shows: diff --git a/content/en/docs/claude-code/settings.md b/content/en/docs/claude-code/settings.md index 94985171b..361ebe8f4 100644 --- a/content/en/docs/claude-code/settings.md +++ b/content/en/docs/claude-code/settings.md @@ -14,12 +14,12 @@ Claude Code uses a scope system to determine where configurations apply and who ### Available scopes -| Scope | Location | Who it affects | Shared with team? | -| :---------- | :--------------------------------------------------------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------ | -| **Managed** | Server-managed settings, plist / registry, or system-level `managed-settings.json` | All organization members for server-managed delivery; all users on the machine for plist, HKLM registry, and file delivery; the current user for HKCU registry delivery | Yes (deployed by IT) | -| **User** | `~/.claude/` directory | You, across all projects | No | -| **Project** | `.claude/` in repository | All collaborators on this repository | Yes (committed to git) | -| **Local** | `.claude/settings.local.json` at the repository root | You, in this repository only | No (gitignored when Claude Code creates it) | +| Scope | Location | Who it affects | Shared with team? | +| :---------- | :--------------------------------------------------------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :----------------------------------------------------- | +| **Managed** | Server-managed settings, plist / registry, or system-level `managed-settings.json` | All organization members for server-managed delivery; all users on the machine for plist, HKLM registry, and file delivery; the current user for HKCU registry delivery | Yes (deployed by IT) | +| **User** | `~/.claude/` directory | You, across all projects | No | +| **Project** | `.claude/` in repository | All collaborators on this repository | Yes (committed to git) | +| **Local** | `.claude/settings.local.json` at the repository root | You, in this repository only | No (gitignored when Claude Code saves a setting to it) | ### When to use each scope @@ -84,7 +84,7 @@ Code through hierarchical settings: projects. * **Project settings** are saved in your project directory: * `.claude/settings.json` for settings that are checked into source control and shared with your team - * `.claude/settings.local.json` for settings that are not checked in, useful for personal preferences and experimentation. When Claude Code creates `.claude/settings.local.json`, it configures git to ignore the file. If you create the file yourself, add it to your gitignore manually. + * `.claude/settings.local.json` for settings that are not checked in, useful for personal preferences and experimentation. When Claude Code saves a setting to this file in a repository that doesn't already ignore it, Claude Code adds `**/.claude/settings.local.json` to your global git excludes file. That excludes file is `core.excludesFile` from your global git config when it's set to an absolute or `~`-prefixed path, otherwise `$XDG_CONFIG_HOME/git/ignore`, or `~/.config/git/ignore`. If you create the file by hand or have Claude write it with the Write tool, add it to your gitignore yourself. Claude Code reads and writes this file at the root of the git repository, resolved through [worktrees](/docs/en/worktrees) to the main checkout, so one file covers sessions started in any subdirectory or worktree of the repository. The file stays in the directory you start Claude Code from in three cases: outside a git repository, when the repository root is your home directory, and in [Agent SDK](/docs/en/agent-sdk/claude-code-features#control-filesystem-settings-with-settingsources) sessions. @@ -153,7 +153,8 @@ The following example works in any of the settings file locations above. Where y }, "env": { "CLAUDE_CODE_ENABLE_TELEMETRY": "1", - "OTEL_METRICS_EXPORTER": "otlp" + "OTEL_METRICS_EXPORTER": "otlp", + "OTEL_EXPORTER_OTLP_PROTOCOL": "http/protobuf" }, "companyAnnouncements": [ "Welcome to Acme Corp! Review our code guidelines at docs.acme.com", @@ -306,7 +307,7 @@ This tolerance applies only to managed settings. User, project, and local settin | `processWrapper` | {/* min-version: 2.1.210 */}Corporate launcher command placed in front of the [background processes Claude Code starts](/docs/en/corporate-launcher#what-the-launcher-covers). Honored from managed settings, a `--settings` file, and user settings only; the [`CLAUDE_CODE_PROCESS_WRAPPER`](/docs/en/env-vars) environment variable takes precedence when both are set. See [Run Claude Code behind a corporate launcher](/docs/en/corporate-launcher) for the launcher contract. Requires Claude Code v2.1.210 or later | `"/opt/corp/launcher --profile claude"` | | `prUrlTemplate` | URL template for the PR badge shown in the footer and in tool-result summaries. Substitutes `{host}`, `{owner}`, `{repo}`, `{number}`, and `{url}` from the `gh`-reported PR URL. Use to point PR links at an internal code-review tool instead of `github.com`. Does not affect `#123` autolinks in Claude's prose | `"https://reviews.example.com/{owner}/{repo}/pull/{number}"` | | `remote.defaultEnvironmentId` | Default [cloud environment](/docs/en/cloud-environments) for cloud sessions you create from the CLI, such as with `claude --cloud` or [ultraplan](/docs/en/ultraplan). Written to user settings when you pick an environment with [`/remote-env`](/docs/en/cloud-environments#select-an-environment-from-the-cli). Follows the standard settings precedence, so a value in a repo's project settings overrides the user-level pick | `"env_0123abcd"` | -| `remoteControlAtStartup` | {/* min-version: 2.1.119 */}Connect [Remote Control](/docs/en/remote-control) automatically when each interactive session starts, instead of waiting for `/remote-control`. Set to `true` to always auto-connect, `false` to never auto-connect, or leave unset to follow your organization's default. Appears in `/config` as **Enable Remote Control for all sessions**. See [Enable Remote Control for all sessions](/docs/en/remote-control#enable-remote-control-for-all-sessions) | `false` | +| `remoteControlAtStartup` | {/* min-version: 2.1.119 */}Connect [Remote Control](/docs/en/remote-control) automatically when each interactive session starts, instead of waiting for `/remote-control`. Set to `true` to always auto-connect, `false` to never auto-connect, or leave unset to follow your organization's admin default if one is set, and otherwise Claude Code's current default. Appears in `/config` as **Enable Remote Control for all sessions**. See [Enable Remote Control for all sessions](/docs/en/remote-control#enable-remote-control-for-all-sessions) | `false` | | `requiredMaximumVersion` | Managed settings only. Maximum Claude Code version allowed to start. If the running version is newer, Claude Code exits at startup and instructs the user to install an approved version through the organization's approved method; `claude install <version>` may also work. Background auto-updates and `claude update` skip versions above the ceiling, so an in-range installation stays in range. `claude update`, `claude install`, and `claude doctor` keep working above the ceiling so users can recover. Versions that predate this setting ignore it | `"2.1.150"` | | `requiredMinimumVersion` | Managed settings only. Minimum Claude Code version required to start. If the running version is older, Claude Code exits at startup and instructs the user to update through the organization's approved method. `claude update`, `claude install`, and `claude doctor` keep working below the floor so users can recover. Differs from `minimumVersion`, which prevents downgrades but never blocks startup. Versions that predate this setting ignore it | `"2.1.150"` | | `respectGitignore` | **Default**: `true`. Control whether the `@` file picker respects `.gitignore` patterns. When `true`, files matching `.gitignore` patterns are excluded from suggestions | `false` | @@ -787,7 +788,7 @@ Controls which plugins are enabled. Format: `"plugin-name@marketplace-name": tru * **User settings** (`~/.claude/settings.json`): Personal plugin preferences * **Project settings** (`.claude/settings.json`): Project-specific plugins shared with team -* **Local settings** (`.claude/settings.local.json`): Per-machine overrides, gitignored when Claude Code creates it +* **Local settings** (`.claude/settings.local.json`): Per-machine overrides, gitignored when Claude Code saves a setting to it * **Managed settings** (`managed-settings.json`): Organization-wide policy overrides that block installation at all scopes and hide the plugin from the marketplace <Note> @@ -920,7 +921,7 @@ Use `source: 'settings'` to declare a small set of plugins inline without settin **Allowlist behavior**: * `undefined` (default): no restrictions, so users can add any marketplace -* Empty array `[]`: complete lockdown, so users can't add any new marketplaces +* Empty array `[]`: complete lockdown that blocks every marketplace source, including the official Anthropic marketplace, so users can't add any new marketplaces * List of sources: users can only add marketplaces that match exactly **All supported source types**: @@ -1044,7 +1045,7 @@ Example: allow specific marketplaces only: } ``` -Example: disable all marketplace additions: +Example: disable all marketplace additions, including the official Anthropic marketplace: ```json theme={null} { @@ -1052,6 +1053,21 @@ Example: disable all marketplace additions: } ``` +Example: allow only the official Anthropic marketplace. Matching is exact, so this entry doesn't cover `ref` or `path` variants of the same repository: + +```json theme={null} +{ + "strictKnownMarketplaces": [ + { + "source": "github", + "repo": "anthropics/claude-plugins-official" + } + ] +} +``` + +With this entry, the official marketplace registers itself automatically the first time you start Claude Code interactively, so you don't need to pair it with `extraKnownMarketplaces`. In a non-interactive environment that runs before that first interactive launch, add it explicitly with `claude plugin marketplace add anthropics/claude-plugins-official` or include it in `extraKnownMarketplaces`. + Example: allow all marketplaces from an internal git server: ```json theme={null} diff --git a/content/en/docs/claude-code/setup.md b/content/en/docs/claude-code/setup.md index ad4e8ddf9..6abcb2107 100644 --- a/content/en/docs/claude-code/setup.md +++ b/content/en/docs/claude-code/setup.md @@ -358,6 +358,8 @@ To install a specific version number: </Tab> </Tabs> +To confirm which version installed, run `claude --version`: the command prints the exact version you passed, such as `2.1.89 (Claude Code)`. + ### Install with Linux package managers Claude Code publishes signed apt, dnf, and apk repositories. Each repository offers two channels: `stable` serves a version that is typically about one week old, skipping releases with major regressions, and `latest` serves every release as soon as it ships. The commands below configure the `stable` channel, which fits most users; each tab also shows the `latest` repository URL. Package manager installations do not auto-update through Claude Code; updates arrive through your normal system upgrade workflow. @@ -366,18 +368,31 @@ All repositories are signed with the [Claude Code release signing key](#binary-i <Tabs> <Tab title="apt"> - For Debian and Ubuntu. The install commands below download the signing key with `curl`, which fresh Debian and Ubuntu installations may not include. If the download fails with `sudo: curl: command not found`, install curl first: + For Debian and Ubuntu. The install commands below download the signing key with `curl` and verify it with `gpg`, which fresh Debian and Ubuntu installations may not include. If either command reports `command not found`, install both first: ```bash theme={null} - sudo apt install curl + sudo apt install curl gnupg ``` - The following commands configure the `stable` channel: + Download the signing key: ```bash theme={null} sudo install -d -m 0755 /etc/apt/keyrings sudo curl -fsSL https://downloads.claude.ai/keys/claude-code.asc \ -o /etc/apt/keyrings/claude-code.asc + ``` + + If this download fails, `apt update` later fails with `NO_PUBKEY BAA929FF1A7ECACE`. Confirm the key downloaded and belongs to Anthropic before continuing: + + ```bash theme={null} + gpg --show-keys /etc/apt/keyrings/claude-code.asc + ``` + + The fingerprint gpg prints should be `31DDDE24DDFAB679F42D7BD2BAA929FF1A7ECACE`. If gpg reports that the file can't be opened or contains no valid OpenPGP data, the download failed or returned the wrong content: confirm your network can reach `downloads.claude.ai`, then rerun the download command. + + Register the repository on the `stable` channel and install: + + ```bash theme={null} echo "deb [signed-by=/etc/apt/keyrings/claude-code.asc] https://downloads.claude.ai/claude-code/apt/stable stable main" \ | sudo tee /etc/apt/sources.list.d/claude-code.list sudo apt update @@ -391,8 +406,6 @@ All repositories are signed with the [Claude Code release signing key](#binary-i | sudo tee /etc/apt/sources.list.d/claude-code.list ``` - Verify the GPG key fingerprint before trusting it: `gpg --show-keys /etc/apt/keyrings/claude-code.asc` should report `31DD DE24 DDFA B679 F42D 7BD2 BAA9 29FF 1A7E CACE`. - To upgrade later, run `sudo apt update && sudo apt upgrade claude-code`. </Tab> diff --git a/content/en/docs/claude-code/skills.md b/content/en/docs/claude-code/skills.md index ccc989004..d8e1b33c9 100644 --- a/content/en/docs/claude-code/skills.md +++ b/content/en/docs/claude-code/skills.md @@ -143,9 +143,11 @@ Claude Code watches skill directories for file changes. Adding, editing, or remo Live change detection covers `SKILL.md` text only. For a skill folder that is also a [plugin](/docs/en/plugins-reference#skills-directory-plugins), changes to `hooks/`, `.mcp.json`, `agents/`, and `output-styles/` need `/reload-plugins` to take effect. </Note> -#### Automatic discovery from parent and nested directories +#### Discovery from parent and nested directories -Project skills load from `.claude/skills/` in your starting directory and in every parent directory up to the repository root, so starting Claude in a subdirectory still picks up skills defined at the root. When you work with files in subdirectories below your starting directory, Claude Code also discovers skills from nested `.claude/skills/` directories on demand. For example, if you're editing a file in `packages/frontend/`, Claude Code also looks for skills in `packages/frontend/.claude/skills/`. This supports monorepo setups where packages have their own skills. +Project skills load from `.claude/skills/` in the directory where you start Claude Code and in every parent directory up to the repository root. Starting Claude in a subdirectory still picks up skills defined at the root. To load skills from a directory outside that path at startup, pass it with [`--add-dir`](/docs/en/cli-reference). Claude Code reads `.claude/skills/` inside each added directory alongside the project skills. + +Skills in nested `.claude/skills/` directories below your starting directory aren't loaded at startup. They load the first time Claude reads or edits a file inside that subdirectory, and stay available for the rest of the session. For example, after Claude edits a file under `packages/frontend/`, skills in `packages/frontend/.claude/skills/` become available. Until then, those skills don't appear in autocomplete and can't be invoked by name. Each skill is a directory with `SKILL.md` as the entrypoint: diff --git a/content/en/docs/claude-code/slack.md b/content/en/docs/claude-code/slack.md index 2fdd56a97..7d3dc5d41 100644 --- a/content/en/docs/claude-code/slack.md +++ b/content/en/docs/claude-code/slack.md @@ -4,11 +4,14 @@ # Claude Code in Slack -> Delegate coding tasks directly from your Slack workspace +> Delegate coding tasks directly from your Slack workspace. Anthropic is retiring this earlier version for Team and Enterprise workspaces in favor of Claude Tag; it remains the setup path on Pro and Max plans. -<Note> - Claude Code in Slack is being replaced by [Claude Tag](https://claude.com/product/tag) for Team and Enterprise workspaces. Claude Tag runs @Claude as your organization's shared identity with admin-configured access, under the same Slack app, so there is nothing to reinstall and existing setups continue to work during the transition. To switch a workspace, see [Migrate from the earlier Claude in Slack](https://claude.com/docs/claude-tag/admins/migrate-from-earlier). -</Note> +<Warning> + This page documents the earlier Claude Code in Slack, which runs each session under an individual user's account. + + * **Team and Enterprise plans:** Anthropic is retiring this version in favor of [Claude Tag](https://claude.com/docs/claude-tag/overview), which runs @Claude as your organization's shared identity with admin-configured access. Your existing Slack app and @Claude handle stay, and your Anthropic account team can tell you the cutover date. Set up Claude Tag for a new workspace; to move one that already uses this version, see [Migrate from the earlier Claude in Slack](https://claude.com/docs/claude-tag/admins/migrate-from-earlier). + * **Pro and Max plans:** Claude Tag isn't available on individual plans, so this page remains the setup path. +</Warning> Claude Code in Slack brings the power of Claude Code directly into your Slack workspace. When you mention `@Claude` with a coding task, Claude automatically detects the intent and creates a Claude Code session on the web, allowing you to delegate development work without leaving your team conversations. @@ -193,6 +196,17 @@ This error means your Claude account has no cloud environment yet, not that an a 2. Check that you have Claude Code on the web access enabled 3. Ensure you have at least one GitHub repository connected to Claude Code +### Sessions from a Claude Tag channel fail to start + +This entry applies to workspaces using [Claude Tag](https://claude.com/docs/claude-tag/overview), where Claude works in channels as your organization's shared identity, not as any member's account. If you created the channel's cloud environment at [claude.ai/code](https://claude.ai/code), it belongs to your personal account, and Claude can't start channel sessions in a personal environment. Claude Code fails the session immediately, and retrying doesn't help. + +If you're an Owner or admin, recreate the environment as an [organization-shared environment](/docs/en/cloud-environments#organization-shared-environments) from the **Cloud environments** page in [admin settings](https://claude.ai/admin-settings). You can apply it in two ways: + +* Set it as the organization default at [claude.ai/admin-settings/claude-code](https://claude.ai/admin-settings/claude-code). +* [Set it on the channel](https://claude.com/docs/claude-tag/admins/troubleshooting#channel-sessions-use-the-wrong-environment-or-can%E2%80%99t-find-one) in the Claude Tag admin settings. + +If you're not an Owner or admin, send this entry to one. + ### Repository not showing 1. Connect the repository in Claude Code on the web at [claude.ai/code](https://claude.ai/code) diff --git a/content/en/docs/claude-code/sub-agents.md b/content/en/docs/claude-code/sub-agents.md index d7fe5a720..b659d00d1 100644 --- a/content/en/docs/claude-code/sub-agents.md +++ b/content/en/docs/claude-code/sub-agents.md @@ -573,6 +573,14 @@ fi exit 0 ``` +On macOS and Linux, make the script executable, or the hook fails instead of blocking anything: + +```bash theme={null} +chmod +x ./scripts/validate-readonly-query.sh +``` + +To test the rule, ask the subagent to run an `UPDATE` statement: the script exits with code 2, Claude Code blocks the command, and the subagent sees the `Blocked: Only SELECT queries are allowed` message. + See [Hook input](/docs/en/hooks#pretooluse-input) for the complete input schema and [exit codes](/docs/en/hooks#exit-code-output) for how exit codes affect behavior. On Windows, write hook scripts in PowerShell and add `shell: powershell` to the hook entry as shown in [running hooks in PowerShell](/docs/en/hooks#windows-powershell-tool). #### Disable specific subagents @@ -1227,6 +1235,8 @@ On Windows, write the validation script in PowerShell and add `shell: powershell The hook receives JSON via stdin with the Bash command in `tool_input.command`. Exit code 2 blocks the operation and feeds the error message back to Claude. See [Hooks](/docs/en/hooks#exit-code-output) for details on exit codes and [Hook input](/docs/en/hooks#pretooluse-input) for the complete input schema. +The system prompt tells the subagent to refuse write requests, so the hook is a backstop: if the subagent attempts a write anyway, Claude Code blocks the command and the subagent sees the `Blocked: Write operations not allowed. Use SELECT queries only.` message. + ## Next steps Now that you understand subagents, explore these related features: diff --git a/content/en/docs/claude-code/tools-reference.md b/content/en/docs/claude-code/tools-reference.md index 216d29e77..ca4d3ffaf 100644 --- a/content/en/docs/claude-code/tools-reference.md +++ b/content/en/docs/claude-code/tools-reference.md @@ -38,7 +38,7 @@ To add custom tools, connect an [MCP server](/docs/en/mcp). To extend Claude wit | `Monitor` | Runs a command in the background and feeds each output line back to Claude, so it can react to log entries, file changes, or polled status mid-conversation. Can also open a WebSocket and treat each incoming message as an event. See [Monitor tool](#monitor-tool) | Yes | | `NotebookEdit` | Modifies Jupyter notebook cells. See [NotebookEdit tool behavior](#notebookedit-tool-behavior) | Yes | | `PowerShell` | Executes PowerShell commands natively. See [PowerShell tool](#powershell-tool) for availability | Yes | -| `PushNotification` | Sends a desktop notification, and a phone push when [Remote Control](/docs/en/remote-control) is connected, so a long-running task or [scheduled task](/docs/en/scheduled-tasks) can reach you when you step away. {/* plan-availability: feature=push-notifications providers=anthropic */}Push delivery runs through Anthropic-hosted infrastructure, which is not accessible from Amazon Bedrock, Google Cloud's Agent Platform, or Microsoft Foundry | No | +| `PushNotification` | Sends a desktop notification, and a phone push when [Remote Control](/docs/en/remote-control) is connected, so a long-running task or [scheduled task](/docs/en/scheduled-tasks) can reach you when you step away. {/* plan-availability: feature=push-notifications providers=anthropic */}Push delivery runs through Anthropic-hosted infrastructure, which is not accessible from Amazon Bedrock, Claude Platform on AWS, Google Cloud's Agent Platform, or Microsoft Foundry | No | | `Read` | Reads the contents of files. See [Read tool behavior](#read-tool-behavior) | No | | `ReadMcpResourceTool` | Reads a specific MCP resource by URI | No | | `RemoteTrigger` | Creates, updates, runs, and lists [Routines](/docs/en/routines) on claude.ai. Backs the `/schedule` command. {/* plan-availability: feature=routines plans=pro,max,team,enterprise providers=anthropic */}Routines live on claude.ai and require a Pro, Max, Team, or Enterprise plan, so this tool is not accessible from Amazon Bedrock, Google Cloud's Agent Platform, or Microsoft Foundry | No | @@ -424,7 +424,7 @@ WebSearch permission rules take no specifier. A bare `WebSearch` entry in `allow The search backend is not configurable. To search with a different provider, add an [MCP server](/docs/en/mcp) that exposes a search tool. <Note> - WebSearch is available on the Claude API, [Claude Platform on AWS](/docs/en/claude-platform-on-aws), and Microsoft Foundry. On Google Cloud's Agent Platform it works with Claude 4 and later models, including Opus, Sonnet, and Haiku. Amazon Bedrock doesn't expose the server-side web search tool. + WebSearch is available on the Claude API and [Claude Platform on AWS](/docs/en/claude-platform-on-aws). On Microsoft Foundry it requires a [deployment hosted on Anthropic](https://platform.claude.com/docs/en/build-with-claude/claude-in-microsoft-foundry#hosting-options): deployments hosted on Azure don't support server-side tools, so the WebSearch call fails. On Google Cloud's Agent Platform it works with Claude 4 and later models, including Opus, Sonnet, and Haiku. Amazon Bedrock doesn't expose the server-side web search tool. </Note> ### Session search limit diff --git a/content/en/docs/claude-code/troubleshoot-install.md b/content/en/docs/claude-code/troubleshoot-install.md index 4fd87193a..d0393ffe4 100644 --- a/content/en/docs/claude-code/troubleshoot-install.md +++ b/content/en/docs/claude-code/troubleshoot-install.md @@ -352,6 +352,8 @@ Otherwise, this can happen due to network issues, regional routing, or a tempora winget install Anthropic.ClaudeCode ``` + Then run `claude --version` to confirm: the command prints a version number such as `2.1.211 (Claude Code)`. If the shell reports `claude` isn't found, open a new terminal window and retry: the session you installed from keeps its old `PATH`. + 2. **Retry after a few minutes**: the issue is often temporary. Wait and try the original command again. ### `command not found: claude` after installation @@ -399,6 +401,8 @@ The `curl ... | bash` command downloads the script and pipes it to Bash for exec winget install Anthropic.ClaudeCode ``` + Then run `claude --version` to confirm: the command prints a version number such as `2.1.211 (Claude Code)`. If the shell reports `claude` isn't found, open a new terminal window and retry: the session you installed from keeps its old `PATH`. + ### Homebrew cask unavailable or outdated Homebrew reports `Error: Cask 'claude-code' is unavailable: No Cask with this name exists` when your local copy of the Homebrew cask index predates the cask's publication. Refresh the index and retry: @@ -485,6 +489,8 @@ The installer couldn't reach the download server. This typically means `download winget install Anthropic.ClaudeCode ``` + Then run `claude --version` to confirm: the command prints a version number such as `2.1.211 (Claude Code)`. If the shell reports `claude` isn't found, open a new terminal window and retry: the session you installed from keeps its old `PATH`. + ### Wrong install command on Windows If you see `'irm' is not recognized`, `The token '&&' is not valid`, `A parameter cannot be found that matches parameter name 'fsSL'`, or `'bash' is not recognized as the name of a cmdlet`, you copied the install command for a different shell or operating system. @@ -554,11 +560,11 @@ irm https://claude.ai/install.ps1 | iex ### Install killed on low-memory Linux servers -A `Killed` message during install usually means the Linux out-of-memory (OOM) killer terminated the `claude install` step because the system ran out of free memory. This is common on small VPS and cloud instances. The install script reports the cause and exits with code 137: +A `Killed` message during install usually means the Linux out-of-memory (OOM) killer terminated the `claude install` step because the system ran out of free memory. This is common on small VPS and cloud instances. The install script reports the cause and exits with code 137. In this example, the line number and process ID vary by release and run: ```text theme={null} Setting up Claude Code... -bash: line 142: 34803 Killed "$binary_path" install ${TARGET:+"$TARGET"} +bash: line 183: 34803 Killed "$binary_path" install ${TARGET:+"$TARGET"} Installation was killed before it could finish (exit code 137). This usually means the system ran out of memory. Claude Code needs roughly 512MB of free memory to install. Free up memory, then run this script again. ``` diff --git a/content/en/docs/claude-code/web-quickstart.md b/content/en/docs/claude-code/web-quickstart.md index ddf793efb..2f7ed4a21 100644 --- a/content/en/docs/claude-code/web-quickstart.md +++ b/content/en/docs/claude-code/web-quickstart.md @@ -88,7 +88,7 @@ If you already use the GitHub CLI (`gh`), you can set up Claude Code on the web </Step> <Step title="Sign in to Claude"> - In the Claude Code CLI, run `/login` to sign in with your claude.ai account. Skip this step if you're already signed in. + In the Claude Code CLI, run `/login` to sign in with your claude.ai account. Skip this step if you're already signed in with a claude.ai account. Authenticating with an API key doesn't count. To check, run `/status` and confirm the **Login method** row shows a claude.ai account. </Step> <Step title="Run /web-setup"> @@ -98,7 +98,7 @@ If you already use the GitHub CLI (`gh`), you can set up Claude Code on the web /web-setup ``` - This syncs your `gh` token to your Claude account. If you don't have a cloud environment yet, `/web-setup` creates one with Trusted network access and no setup script. You can [edit the environment or add variables](/docs/en/cloud-environments#configure-your-environment) afterward. Once `/web-setup` completes, you can start cloud sessions from your terminal with [`--cloud`](/docs/en/claude-code-on-the-web#from-terminal-to-web) or set up recurring tasks with [`/schedule`](/docs/en/routines). + This syncs your `gh` token to your Claude account. On success, Claude Code prints `Connected as <your-github-username>` and opens [claude.ai/code](https://claude.ai/code) in your browser. If you don't have a cloud environment yet, `/web-setup` creates one with Trusted network access and no setup script. You can [edit the environment or add variables](/docs/en/cloud-environments#configure-your-environment) afterward. Once `/web-setup` completes, you can start cloud sessions from your terminal with [`--cloud`](/docs/en/claude-code-on-the-web#from-terminal-to-web) or set up recurring tasks with [`/schedule`](/docs/en/routines). </Step> </Steps> @@ -179,11 +179,15 @@ Cloud sessions require a connected GitHub account. Connect via the browser flow Enterprise organizations may need an Owner to enable Claude Code on the web. Contact your Anthropic account team. +### `/web-setup` says "Not signed in to Claude" + +If `/web-setup` responds with "Not signed in to Claude. Run /login first.", the CLI doesn't have a valid claude.ai sign-in. This can also happen when a previous sign-in has expired. Run `/login`, sign in with your claude.ai account, then run `/web-setup` again. + ### `/web-setup` shows "No commands match" or "Unknown command" `/web-setup` runs inside the Claude Code CLI, not your shell. Launch `claude` first, then type `/web-setup` at the prompt. -If you typed it inside Claude Code and the command menu shows `No commands match "/web-setup"`, or submitting it returns `Unknown command: /web-setup`, the command is hidden because a requirement isn't met. The cause is usually that you're authenticated with an API key or third-party provider instead of a claude.ai subscription. Run `/login` to sign in with your claude.ai account. +If you typed it inside Claude Code and the command menu shows `No commands match "/web-setup"`, or submitting it returns `Unknown command: /web-setup`, the command is hidden because a requirement isn't met. The cause is usually that you're authenticated with an API key or third-party provider instead of a claude.ai subscription. Run `/login` to sign in with your claude.ai account. Team and Enterprise Owners can also [disable `/web-setup`](/docs/en/claude-code-on-the-web#github-authentication-options) for their organization, which hides the command. In that case, use the browser flow above instead. On Team and Enterprise plans, the command is also hidden when any of the following apply: diff --git a/content/en/docs/claude-code/whats-new/2026-w29.md b/content/en/docs/claude-code/whats-new/2026-w29.md index 3f6725439..5ba977400 100644 --- a/content/en/docs/claude-code/whats-new/2026-w29.md +++ b/content/en/docs/claude-code/whats-new/2026-w29.md @@ -25,8 +25,8 @@ <p className="digest-feature-try">Name the connector and the data you want in your prompt:</p> - ```text Claude Code theme={null} - > Build a dashboard artifact of open pull requests that pulls the live list through my GitHub connector when the page loads. + ```text title="Claude Code" wrap theme={null} + Build a dashboard artifact of open pull requests that pulls the live list through my GitHub connector when the page loads. ``` <a className="digest-feature-link" href="/docs/docs/en/artifacts#pull-live-data-with-mcp-connectors">Pull live data with MCP connectors</a> diff --git a/content/en/docs/claude-code/workflows.md b/content/en/docs/claude-code/workflows.md index ccc1d396a..3a8dbbd4e 100644 --- a/content/en/docs/claude-code/workflows.md +++ b/content/en/docs/claude-code/workflows.md @@ -41,7 +41,7 @@ The quickest way to see a workflow in action is to run `/deep-research`, the [bu <Step title="Run the workflow"> Run `/deep-research` with a question you want investigated. It fans out web searches across several angles, fetches and cross-checks the sources it finds, and synthesizes a cited report. - ```text theme={null} + ```text wrap theme={null} /deep-research What changed in the Node.js permission model between v20 and v22? ``` </Step> @@ -53,7 +53,7 @@ The quickest way to see a workflow in action is to run `/deep-research`, the [bu <Step title="Watch progress"> The run starts in the background. Run `/workflows`, use the arrow keys to select the run, and press Enter to open its progress view: - ```text theme={null} + ```text wrap theme={null} /workflows ``` @@ -87,7 +87,7 @@ Claude Code includes `/deep-research` as a built-in workflow: Workflows run in the background, so the session stays responsive while agents work. Run `/workflows` at any time to list running and completed workflows, then select one to open its progress view. -```text theme={null} +```text wrap theme={null} /workflows ``` @@ -118,7 +118,7 @@ You can also run a workflow command that already exists: a [bundled workflow](#b To run a single task as a workflow without changing the session's effort level, include the keyword `ultracode` in your prompt. Asking in your own words, for example "use a workflow" or "run a workflow", also works: Claude treats a direct request as the same opt-in. Before v2.1.160 the literal trigger keyword was `workflow`; natural-language requests work in both versions. -```text theme={null} +```text wrap theme={null} ultracode: audit every API endpoint under src/routes/ for missing auth checks ``` @@ -147,7 +147,7 @@ The keyword is an opt-in only in a prompt you type yourself: at the interactive Ultracode is a Claude Code setting that combines `xhigh` [reasoning effort](/docs/en/model-config#adjust-effort-level) with automatic workflow orchestration. With it on, Claude plans a workflow for each substantive task instead of waiting for you to ask. -```text theme={null} +```text wrap theme={null} /effort ultracode ``` @@ -220,8 +220,8 @@ A saved workflow can accept input through the `args` parameter. The script reads The following prompt runs a saved workflow with a list of issue numbers: -```text theme={null} -> Run /triage-issues on issues 1024, 1025, and 1030 +```text wrap theme={null} +Run /triage-issues on issues 1024, 1025, and 1030 ``` Claude passes the list as structured data, so the script can call array and object methods on `args` directly without parsing it first. If `args` is omitted, the global is `undefined` inside the script. @@ -234,48 +234,48 @@ A workflow fits best when the task is larger than one agent can hold in context, Fan out one agent per file, then collect and verify the findings. -```text theme={null} -> use a workflow to audit every route handler under src/routes/ for missing authentication checks, and adversarially verify each finding before reporting it +```text wrap theme={null} +use a workflow to audit every route handler under src/routes/ for missing authentication checks, and adversarially verify each finding before reporting it ``` ### Keep fixing until a check passes Run a checker, fix what failed, and repeat until it passes or stops making progress. -```text theme={null} -> use a workflow to run npx tsc --noEmit and keep fixing the reported errors until the type check passes or two rounds in a row make no progress +```text wrap theme={null} +use a workflow to run npx tsc --noEmit and keep fixing the reported errors until the type check passes or two rounds in a row make no progress ``` ### Migrate many files in parallel Discover the files to migrate, transform each one in an isolated copy so edits don't conflict, and verify each result. -```text theme={null} -> use a workflow to migrate every component under src/components/ from styled-components to Tailwind, working on each file in its own isolated copy +```text wrap theme={null} +use a workflow to migrate every component under src/components/ from styled-components to Tailwind, working on each file in its own isolated copy ``` ### Review every changed file and write one summary Run a reviewer per file, then hand all the findings to one agent that ranks and deduplicates them. -```text theme={null} -> use a workflow to review every file changed in this PR for correctness issues, then merge the per-file findings into one ranked summary +```text wrap theme={null} +use a workflow to review every file changed in this PR for correctness issues, then merge the per-file findings into one ranked summary ``` ### Research a topic across many sources Fan out readers across changelogs, issues, and docs, then synthesize. The bundled `/deep-research` workflow does this; you can also describe a narrower version. -```text theme={null} -> use a workflow to research how our three competitors handle rate limiting: read their public docs and recent changelog entries in parallel, then compare the approaches +```text wrap theme={null} +use a workflow to research how our three competitors handle rate limiting: read their public docs and recent changelog entries in parallel, then compare the approaches ``` ### Find issues until the list stops growing Keep searching in rounds and stop when new rounds turn up nothing new. -```text theme={null} -> use a workflow to find flaky tests in this repo: run the suite repeatedly, record which tests fail intermittently, and stop once two rounds in a row find nothing new +```text wrap theme={null} +use a workflow to find flaky tests in this repo: run the suite repeatedly, record which tests fail intermittently, and stop once two rounds in a row find nothing new ``` ### What the saved script looks like @@ -326,7 +326,18 @@ Once a run starts, you manage it from the `/workflows` view, or by expanding its ### Resume after a pause -If you stop a run, you can resume it: agents that already completed return their cached results, and the rest run live. An agent that was still running when you stopped isn't saved and starts over on resume, so a workflow that fans work out across many small agents preserves more progress than one long agent. Resume a paused run from `/workflows` by selecting it and pressing `p`, or ask Claude to relaunch the workflow with the same script. +If you stop a run, you can resume it. Agents that already completed usually return their cached results, and the rest run live. + +Two rules decide which results survive: + +* An agent that was still running when you stopped isn't saved, so it starts over on resume. +* Replay follows the order agents started. Cached results stop at the first agent that didn't finish, and every agent that started after that one runs again, even if it completed. + +The second rule is what makes stopping mid fan-out expensive. Say a script starts four agents, A, B, C, and D, in that order, and you stop the run while B is still going. On resume, A returns from cache. B runs again because it never finished. C and D run again too, because they started after B, even though both completed before you stopped. + +A workflow that fans work out across many small agents therefore preserves more progress than one long agent. + +Resume a paused run from `/workflows` by selecting it and pressing `p`, or ask Claude to relaunch the workflow with the same script. Resume works within the same Claude Code session. If you exit Claude Code while a workflow is running, the next session starts the workflow fresh. @@ -334,7 +345,7 @@ Resume works within the same Claude Code session. If you exit Claude Code while A workflow spawns many agents, so a single run can use meaningfully more tokens than working through the same task in conversation. Runs count toward your plan's usage and rate limits like any other session. -To gauge the spend before committing to a large task, run the workflow on a small slice first: one directory instead of the whole repo, or a narrow question instead of a broad one. The `/workflows` view shows each agent's token usage as the run progresses, and you can stop the run there at any time without losing completed work. The runtime's [agent caps](#behavior-and-limits) limit how many agents a single run can spawn, which bounds the cost of a runaway script. To keep runs to fewer agents, choose the `small` [size guideline](#set-a-size-guideline). +To gauge the spend before committing to a large task, run the workflow on a small slice first: one directory instead of the whole repo, or a narrow question instead of a broad one. The `/workflows` view shows each agent's token usage as the run progresses, and you can stop the run there at any time, usually without losing completed work. [Resume after a pause](#resume-after-a-pause) covers what a stopped run keeps. The runtime's [agent caps](#behavior-and-limits) limit how many agents a single run can spawn, which bounds the cost of a runaway script. To keep runs to fewer agents, choose the `small` [size guideline](#set-a-size-guideline). Claude Code also flags a run that grows unusually large. When a workflow schedules more than 25 agents, or its projected token total passes 1.5 million, its progress line in the task panel below the input box shows a `Large workflow` warning. The warning points you to [`/workflows`](#watch-the-run), where you can stop the run. Requires Claude Code v2.1.203 or later. diff --git a/content/en/docs/claude-code/worktrees.md b/content/en/docs/claude-code/worktrees.md index 76c8462bb..919b23769 100644 --- a/content/en/docs/claude-code/worktrees.md +++ b/content/en/docs/claude-code/worktrees.md @@ -183,10 +183,10 @@ Create a worktree on a new branch: git worktree add ../project-feature-a -b feature-a ``` -Create a worktree from an existing branch: +Create a worktree from an existing branch, replacing `fix-issue-456` with a branch that already exists in your repository: ```bash theme={null} -git worktree add ../project-bugfix bugfix-123 +git worktree add ../project-bugfix fix-issue-456 ``` Start Claude in the worktree: diff --git a/content/github/anthropic-sdk-python/CHANGELOG.md b/content/github/anthropic-sdk-python/CHANGELOG.md index 3b6ea9351..0b4a79825 100644 --- a/content/github/anthropic-sdk-python/CHANGELOG.md +++ b/content/github/anthropic-sdk-python/CHANGELOG.md @@ -1,5 +1,13 @@ # Changelog +## 0.120.2 (2026-07-28) + +Full Changelog: [v0.120.1...v0.120.2](https://github.com/anthropics/anthropic-sdk-python/compare/v0.120.1...v0.120.2) + +### Bug Fixes + +* **mcp:** support mcp sdk v2 alongside v1 ([#300](https://github.com/anthropics/anthropic-sdk-python/issues/300)) ([177f88c](https://github.com/anthropics/anthropic-sdk-python/commit/177f88ccd7f966e47b654cb19ad0e9cfa4c58ac2)) + ## 0.120.1 (2026-07-28) Full Changelog: [v0.120.0...v0.120.1](https://github.com/anthropics/anthropic-sdk-python/compare/v0.120.0...v0.120.1) diff --git a/content/github/claude-plugins-official/.claude-plugin/marketplace.json b/content/github/claude-plugins-official/.claude-plugin/marketplace.json index 3b74bd17e..d338cbb4a 100644 --- a/content/github/claude-plugins-official/.claude-plugin/marketplace.json +++ b/content/github/claude-plugins-official/.claude-plugin/marketplace.json @@ -65,7 +65,7 @@ "source": { "source": "url", "url": "https://github.com/SalesforceAIResearch/agentforce-adlc.git", - "sha": "74e7c25b9b0141b57f1c04300b15e7b3ff139647" + "sha": "2e735ab70a33d83aeea5ce10b6d61a99a978dc68" }, "homepage": "https://github.com/SalesforceAIResearch/agentforce-adlc" }, @@ -190,7 +190,7 @@ "url": "https://github.com/amd/skills.git", "path": "skills", "ref": "main", - "sha": "228980933abd97a8aa4a2656c8ea3ae9e8b590c7" + "sha": "d93e3ed65ddeb86807b088870aca14367ca57a26" }, "strict": false, "skills": [ @@ -238,7 +238,7 @@ "source": { "source": "url", "url": "https://github.com/apollographql/skills.git", - "sha": "3466193ed52d61ae51d48582b57a95575ae384e2" + "sha": "85996a0b75cb106eacfc4b9f3a4fdae7a2109a89" }, "homepage": "https://www.apollographql.com" }, @@ -445,7 +445,7 @@ "url": "https://github.com/awslabs/startups.git", "path": "advisor/plugins/aws-startup-advisor", "ref": "main", - "sha": "084d44e1dedab244c938a2eb37bd613a9643b223" + "sha": "927def0cbf8e3c3d17b670f3054ef049ae84a09a" }, "homepage": "https://github.com/awslabs/startups" }, @@ -508,7 +508,7 @@ "source": { "source": "url", "url": "https://github.com/base44/skills.git", - "sha": "b557b167b07ab9c315f7ff194f533f3f76c3fcf4" + "sha": "0d3b72a76e91d920f4a151b68dd224510ca5dc14" }, "homepage": "https://docs.base44.com" }, @@ -538,7 +538,7 @@ "source": { "source": "url", "url": "https://github.com/gemini-cli-extensions/bigquery-data-analytics.git", - "sha": "7b89e74199b1f1432fa020605d5a6dbedbe8210a" + "sha": "b8feae853c8b676cada2b3c33b094763443b1a97" }, "homepage": "https://github.com/gemini-cli-extensions/bigquery-data-analytics" }, @@ -658,7 +658,7 @@ "url": "https://github.com/carta/plugins.git", "path": "plugins/carta-cap-table", "ref": "main", - "sha": "35c258475c5c618be5161b0eafe6f8d170206a8d" + "sha": "7e2e42fc2131c7d6000547bc3c99a3e78692ce56" }, "homepage": "https://carta.com" }, @@ -720,7 +720,7 @@ "source": { "source": "url", "url": "https://github.com/cap-js/mcp-server.git", - "sha": "1f08b6288ca1b78a0200c003a5cc787aafe5bd06" + "sha": "562ac32d2ea2750b8847d8329913ae986acb5dc3" }, "homepage": "https://cap.cloud.sap/" }, @@ -731,7 +731,7 @@ "source": { "source": "url", "url": "https://github.com/ChromeDevTools/chrome-devtools-mcp.git", - "sha": "dd2661c764c82da28e352030ec7fe56998471ed4" + "sha": "04269f1b31ddf395d71ce046a06cdb54a29be429" }, "homepage": "https://github.com/ChromeDevTools/chrome-devtools-mcp" }, @@ -999,7 +999,7 @@ "source": { "source": "url", "url": "https://github.com/CodSpeedHQ/codspeed.git", - "sha": "aebdbbc63c1a001728c11287fb05d62dc94652be" + "sha": "0418479c0edbb552d477c496d44f47f1d5dc2225" }, "homepage": "https://codspeed.io" }, @@ -1095,7 +1095,7 @@ "source": { "source": "url", "url": "https://github.com/CrowdStrike/foundry-skills.git", - "sha": "fad171a87bb0bccce4f92c148b7d1c1501a31a71" + "sha": "cd35ba4d750f9b27b7235b2650ae4ab86609cc19" }, "homepage": "https://github.com/CrowdStrike/foundry-skills" }, @@ -1166,7 +1166,7 @@ "source": { "source": "url", "url": "https://github.com/gemini-cli-extensions/data-agent-kit-starter-pack.git", - "sha": "cc9c6719f6847a647e0b932896e3e520d15e53fe" + "sha": "e8fa2b8ca06c4269dd2953f39e8798764f687c34" }, "homepage": "https://github.com/gemini-cli-extensions/data-agent-kit-starter-pack" }, @@ -1261,7 +1261,7 @@ "source": { "source": "url", "url": "https://github.com/datarobot-oss/datarobot-agent-skills.git", - "sha": "f432e0cbfc04a38176bc27246f10cf779646c9e3" + "sha": "b54fba9708cf87aa47543aaefdbcd48f08370349" }, "homepage": "https://datarobot.com" }, @@ -1274,7 +1274,7 @@ "url": "https://github.com/microsoft/Dataverse-skills.git", "path": ".github/plugins/dataverse", "ref": "main", - "sha": "a6e497123a1a8a618d9a0dd5764c660861bb9f8b" + "sha": "ab56d1ad56783ffce1c671b55b4d964b2d09501d" }, "homepage": "https://github.com/microsoft/Dataverse-skills" }, @@ -1289,7 +1289,7 @@ "source": { "source": "url", "url": "https://github.com/confident-ai/deepeval.git", - "sha": "bc296f8ad2eeba763796fc3ec099b7893ef1cdf8" + "sha": "0d100e37d4263f208488f3c13e15561bce3b694f" }, "homepage": "https://github.com/confident-ai/deepeval" }, @@ -1420,7 +1420,7 @@ "url": "https://github.com/expo/skills.git", "path": "plugins/expo", "ref": "main", - "sha": "09eb052410e7f609624cb161ea4cd9576c69cd5d" + "sha": "b1ec56fc67ab61528f80652ae7cd5b8c94f88e2c" }, "homepage": "https://github.com/expo/skills/blob/main/plugins/expo/README.md" }, @@ -1724,7 +1724,7 @@ "source": { "source": "url", "url": "https://github.com/hunter-io/claude-plugin.git", - "sha": "aa23b21c9c1c36344e65639e33c6d8a24cd3f5f7" + "sha": "c8b2d456a85ec0f5ad8f8fbf93e880fda04e7521" }, "homepage": "https://hunter.io" }, @@ -1738,7 +1738,7 @@ "source": { "source": "url", "url": "https://github.com/heygen-com/hyperframes.git", - "sha": "dbdc940833c5a8278f56227bfaca775a4413b1ca" + "sha": "4f344c50b0c70e74a791e3613c3a285531e1862f" }, "homepage": "https://hyperframes.heygen.com" }, @@ -2099,7 +2099,7 @@ "source": { "source": "url", "url": "https://github.com/mattpocock/skills.git", - "sha": "ed37663cc5fbef691ddfecd080dff42f7e7e350d" + "sha": "2ab958093e83e0ec752e6c1c5932da465bf23e0c" }, "homepage": "https://github.com/mattpocock/skills" }, @@ -2362,7 +2362,7 @@ "source": { "source": "url", "url": "https://github.com/Nimbleway/agent-skills.git", - "sha": "74ca4dd4bad18a899b1fbf364b70e5a9ceace80d" + "sha": "83fcffc38b693e98b319e10cd8e77d57519aa2c6" }, "homepage": "https://docs.nimbleway.com/integrations/agent-skills/plugin-installation" }, @@ -2467,7 +2467,7 @@ "url": "https://github.com/growthxai/output.git", "path": "coding_assistants/claude/plugins/outputai", "ref": "main", - "sha": "2cbd0a260d470d22143ba0c0478d992f16c0bd12" + "sha": "3d1f9bd02b58ba89e7f7e97b9a1e941f500e8820" }, "homepage": "https://output.ai" }, @@ -2492,7 +2492,7 @@ "source": { "source": "url", "url": "https://github.com/paypal/AI-Toolkit.git", - "sha": "c93cbfe5b0b16ef920670ce7d6afabdf7e79c7a3" + "sha": "a8e5aef84bf7006054a17ad98f8c5114e92358ad" }, "homepage": "https://developer.paypal.com/" }, @@ -2725,7 +2725,7 @@ "source": { "source": "url", "url": "https://github.com/qdrant/skills.git", - "sha": "e24485f0e76d3d4504bf5045ead9a42b56561521" + "sha": "50d3590744b9ee26bd7a3c95e84b82ab9c572e45" }, "homepage": "https://skills.qdrant.tech" }, @@ -2765,7 +2765,7 @@ "source": { "source": "url", "url": "https://github.com/quarkusio/quarkus-agent-mcp.git", - "sha": "47cd6df3582942352d63348f99e6528cd60ef93e" + "sha": "d39fa1cf9c1b8bcdc39265ef64b5b128605557e9" }, "homepage": "https://quarkus.io" }, @@ -2778,7 +2778,7 @@ "url": "https://github.com/railwayapp/railway-skills.git", "path": "plugins/railway", "ref": "main", - "sha": "191601b4954527a87f4f004eaa355c8f30a855bf" + "sha": "c8b1487773d88f27b33e599300d6100b0978eafe" }, "homepage": "https://docs.railway.com/ai/claude-code-plugin" }, @@ -2838,7 +2838,7 @@ "source": { "source": "url", "url": "https://github.com/Digital-Process-Tools/claude-remember.git", - "sha": "d1fc794569e6fa4fc0ee19d5283ff1039fd89919" + "sha": "c85af5397ecff5fa2fffceadef9c1062ede61dad" }, "homepage": "https://github.com/Digital-Process-Tools/claude-remember" }, @@ -2991,7 +2991,7 @@ "source": { "source": "url", "url": "https://github.com/sanity-io/agent-toolkit.git", - "sha": "af54474c21b00aee8e2fa2855b8ff6ef8a0cf41c" + "sha": "fc0e709f61be8abd03e805756d0c4c2983b0a1b5" }, "homepage": "https://www.sanity.io" }, @@ -3007,7 +3007,7 @@ "source": { "source": "url", "url": "https://github.com/cap-js/mcp-server.git", - "sha": "1f08b6288ca1b78a0200c003a5cc787aafe5bd06" + "sha": "562ac32d2ea2750b8847d8329913ae986acb5dc3" }, "homepage": "https://cap.cloud.sap/" }, @@ -3057,7 +3057,7 @@ "source": { "source": "url", "url": "https://github.com/SAP/mdk-mcp-server.git", - "sha": "dd1bd4673c3d90a66f7a64a3f1ed91fb8c91d12c" + "sha": "0bc8ea10139be06d08cdb3a8157d34128858ff0e" }, "homepage": "https://help.sap.com/docs/MDK" }, @@ -3108,7 +3108,7 @@ "source": { "source": "url", "url": "https://github.com/getsentry/plugin-claude.git", - "sha": "8ed4f25563d90806e8a50c7fb78170ede9ca2f5e" + "sha": "b098833ef3bd25d17ef7b404597f80ea35c493ba" }, "homepage": "https://github.com/getsentry/plugin-claude" }, @@ -3124,7 +3124,7 @@ "url": "https://github.com/getsentry/cli.git", "path": "plugins/sentry-cli", "ref": "main", - "sha": "ed185afd09e9eef02f2f4e4d9d90cc9a64a7c00b" + "sha": "3e292ee4beb5c8254e0f020d2bfaf64fa16a7132" }, "homepage": "https://sentry.io" }, @@ -3213,7 +3213,7 @@ "source": { "source": "url", "url": "https://github.com/slackapi/slack-mcp-plugin.git", - "sha": "e75b0cf18f1a19f3fd629e3af9565ee84b8c2ce0" + "sha": "f43f620b0f7a95271ec044e3cfebeef81d2a6ee7" }, "homepage": "https://github.com/slackapi/slack-mcp-plugin/tree/main" }, @@ -3369,7 +3369,7 @@ "source": { "source": "url", "url": "https://github.com/obra/superpowers.git", - "sha": "3dcbd5c4b48e02263fbf4a3c01e3fe4f81d584d9" + "sha": "44c9b2d6e889982ac18c27d05a19fefe335194e1" }, "homepage": "https://github.com/obra/superpowers.git" }, @@ -3684,7 +3684,7 @@ "source": { "source": "url", "url": "https://github.com/wix/skills.git", - "sha": "5498215d69d8df054cbaed35c85b1555f249299f" + "sha": "6fd2e431ea3411688ed3eff2fc99cbab78d61820" }, "homepage": "https://dev.wix.com/docs/wix-cli/guides/development/about-wix-skills" }, @@ -3724,7 +3724,7 @@ "source": { "source": "url", "url": "https://github.com/youdotcom-oss/agent-skills.git", - "sha": "b390ddb6d0b6c0ec650ce1991eb0c601075476da" + "sha": "4006e71aad9b0380a18385c9ef89888b1cdfc601" }, "homepage": "https://you.com" }, @@ -3805,7 +3805,7 @@ "source": { "source": "url", "url": "https://github.com/langfuse/skills.git", - "sha": "e42071670d01e537c16f4931d81c3e388f41346e" + "sha": "cf98ef9b6e154b821012f9773ec9ec3238b3b976" }, "homepage": "https://langfuse.com" }, diff --git a/content/mcp/specification/2026-07-28.md b/content/mcp/specification/2026-07-28.md index b42c3932c..efe353c8c 100644 --- a/content/mcp/specification/2026-07-28.md +++ b/content/mcp/specification/2026-07-28.md @@ -14,7 +14,7 @@ they need. This specification defines the authoritative protocol requirements, based on the TypeScript schema in -[schema.ts](https://github.com/modelcontextprotocol/specification/blob/main/schema/draft/schema.ts). +[schema.ts](https://github.com/modelcontextprotocol/specification/blob/main/schema/2026-07-28/schema.ts). For implementation guides and examples, visit [modelcontextprotocol.io](https://modelcontextprotocol.io). diff --git a/content/mcp/specification/2026-07-28/basic.md b/content/mcp/specification/2026-07-28/basic.md index a7ca58cca..4dc45f9b5 100644 --- a/content/mcp/specification/2026-07-28/basic.md +++ b/content/mcp/specification/2026-07-28/basic.md @@ -217,7 +217,7 @@ Their state is scoped to the request itself, not to the connection underneath. <Info> For a walkthrough of how the per-request model maps to SDK code, see the - [Architecture guide](/docs/draft/learn/architecture#example). + [Architecture guide](/docs/2026-07-28/learn/architecture#example). </Info> ## Auth @@ -238,11 +238,11 @@ to help shape the future of the protocol! ## Schema The full specification of the protocol is defined as a -[TypeScript schema](https://github.com/modelcontextprotocol/specification/blob/main/schema/draft/schema.ts). +[TypeScript schema](https://github.com/modelcontextprotocol/specification/blob/main/schema/2026-07-28/schema.ts). This is the source of truth for all protocol messages and structures. There is also a -[JSON Schema](https://github.com/modelcontextprotocol/specification/blob/main/schema/draft/schema.json), +[JSON Schema](https://github.com/modelcontextprotocol/specification/blob/main/schema/2026-07-28/schema.json), which is automatically generated from the TypeScript source of truth, for use with various automated tooling. diff --git a/content/mcp/specification/2026-07-28/basic/authorization.md b/content/mcp/specification/2026-07-28/basic/authorization.md index 368f1333a..c8cc8ae1a 100644 --- a/content/mcp/specification/2026-07-28/basic/authorization.md +++ b/content/mcp/specification/2026-07-28/basic/authorization.md @@ -131,7 +131,7 @@ only the scopes necessary for their intended operations. During the initial auth 2. **If `scope` is not available**, use all scopes defined in `scopes_supported` from the Protected Resource Metadata document, omitting the `scope` parameter if `scopes_supported` is undefined. The `scopes_supported` field is intended to represent the minimal set of scopes necessary -for basic functionality (see [Scope Minimization](/docs/draft/tutorials/security/security_best_practices#scope-minimization)), +for basic functionality (see [Scope Minimization](/docs/2026-07-28/tutorials/security/security_best_practices#scope-minimization)), with additional scopes requested incrementally through the step-up authorization flow steps described in the [Scope Challenge Handling](#scope-challenge-handling) section. diff --git a/content/mcp/specification/2026-07-28/basic/authorization/security-considerations.md b/content/mcp/specification/2026-07-28/basic/authorization/security-considerations.md index 670c56797..43e0a0cc7 100644 --- a/content/mcp/specification/2026-07-28/basic/authorization/security-considerations.md +++ b/content/mcp/specification/2026-07-28/basic/authorization/security-considerations.md @@ -20,7 +20,7 @@ audiences **when the Authorization Server supports the capability**. To enable c * MCP clients **MUST** include the `resource` parameter in authorization and token requests as specified in the [Resource Parameter Implementation](/specification/2026-07-28/basic/authorization#resource-parameter-implementation) section * MCP servers **MUST** validate that tokens presented to them were specifically issued for their use -The [Security Best Practices document](/docs/draft/tutorials/security/security_best_practices#token-passthrough) +The [Security Best Practices document](/docs/2026-07-28/tutorials/security/security_best_practices#token-passthrough) outlines why token audience validation is crucial and why token passthrough is explicitly forbidden. ## Token Theft @@ -107,7 +107,7 @@ Authorization servers **MAY** implement domain-based trust policies for acceptin ## Confused Deputy Problem -Attackers can exploit MCP servers acting as intermediaries to third-party APIs, leading to [confused deputy vulnerabilities](/docs/draft/tutorials/security/security_best_practices#confused-deputy-problem). +Attackers can exploit MCP servers acting as intermediaries to third-party APIs, leading to [confused deputy vulnerabilities](/docs/2026-07-28/tutorials/security/security_best_practices#confused-deputy-problem). By using stolen authorization codes, they can obtain access tokens without user consent. MCP proxy servers using static client IDs **MUST** obtain user consent for each @@ -122,7 +122,7 @@ MCP servers **MUST** validate access tokens before processing the request, ensur A MCP server **MUST** follow the guidelines in [OAuth 2.1 - Section 5.2](https://www.ietf.org/archive/id/draft-ietf-oauth-v2-1-13.html#section-5.2) to validate inbound tokens. -MCP servers **MUST** only accept tokens specifically intended for themselves and **MUST** reject tokens that do not include them in the audience claim or otherwise verify that they are the intended recipient of the token. See the [Security Best Practices Token Passthrough section](/docs/draft/tutorials/security/security_best_practices#token-passthrough) for details. +MCP servers **MUST** only accept tokens specifically intended for themselves and **MUST** reject tokens that do not include them in the audience claim or otherwise verify that they are the intended recipient of the token. See the [Security Best Practices Token Passthrough section](/docs/2026-07-28/tutorials/security/security_best_practices#token-passthrough) for details. If the MCP server makes requests to upstream APIs, it may act as an OAuth client to them. The access token used at the upstream API is a separate token, issued by the upstream authorization server. The MCP server **MUST NOT** pass through the token it received from the MCP client. diff --git a/content/mcp/specification/2026-07-28/changelog.md b/content/mcp/specification/2026-07-28/changelog.md index 9d532cfc6..c87ef692d 100644 --- a/content/mcp/specification/2026-07-28/changelog.md +++ b/content/mcp/specification/2026-07-28/changelog.md @@ -120,4 +120,4 @@ Features listed here remain part of the specification but are scheduled for remo ## Full changelog For a complete list of all changes that have been made since the last protocol revision, -[see GitHub](https://github.com/modelcontextprotocol/specification/compare/2025-11-25...draft). +[see GitHub](https://github.com/modelcontextprotocol/specification/compare/2025-11-25...2026-07-28). diff --git a/content/mcp/specification/2026-07-28/client/elicitation.md b/content/mcp/specification/2026-07-28/client/elicitation.md index bdde2c07a..438635f33 100644 --- a/content/mcp/specification/2026-07-28/client/elicitation.md +++ b/content/mcp/specification/2026-07-28/client/elicitation.md @@ -470,7 +470,7 @@ Servers should handle each state appropriately: Elicitations do not require that the server maintain state about users with the [multi round-trip requests](/specification/2026-07-28/basic/patterns/mrtr#multi-round-trip-requests) mechanism. -However, if state is stored, servers implementing elicitation **MUST** securely associate this state with individual users following the guidelines in the [security best practices](/docs/draft/tutorials/security/security_best_practices) document. Specifically: +However, if state is stored, servers implementing elicitation **MUST** securely associate this state with individual users following the guidelines in the [security best practices](/docs/2026-07-28/tutorials/security/security_best_practices) document. Specifically: * State storage **MUST** be protected against unauthorized access * For remote MCP servers, user identification **MUST** be derived from credentials acquired via [MCP authorization](../basic/authorization) when possible (e.g. `sub` claim) @@ -519,7 +519,7 @@ Example scenario: The critical security requirements are: 1. **The third-party credentials MUST NOT transit through the MCP client**: The client must never see third-party credentials to protect the security boundary -2. **The MCP server MUST NOT use the client's credentials for the third-party service**: That would be [token passthrough](/docs/draft/tutorials/security/security_best_practices#token-passthrough), which is forbidden +2. **The MCP server MUST NOT use the client's credentials for the third-party service**: That would be [token passthrough](/docs/2026-07-28/tutorials/security/security_best_practices#token-passthrough), which is forbidden 3. **The user MUST authorize the MCP server directly**: The interaction happens outside the MCP protocol, without involving the MCP client 4. **The MCP server is responsible for tokens**: The MCP server is responsible for storing and managing the third-party tokens obtained through the URL mode elicitation (in other words, the MCP server must be stateful). @@ -527,7 +527,7 @@ Credentials obtained via URL mode elicitation are distinct from the MCP server c <Note> For additional background, refer to the [token passthrough - section](/docs/draft/tutorials/security/security_best_practices#token-passthrough) + section](/docs/2026-07-28/tutorials/security/security_best_practices#token-passthrough) of the Security Best Practices document to understand why MCP servers cannot act as pass-through proxies. </Note> @@ -623,7 +623,7 @@ When handling URL mode elicitation requests, MCP clients: ### Identifying the User Servers **MUST NOT** rely on client-provided user identification without server verification, as this can be forged. -Instead, servers **SHOULD** follow [security best practices](/docs/draft/tutorials/security/security_best_practices). +Instead, servers **SHOULD** follow [security best practices](/docs/2026-07-28/tutorials/security/security_best_practices). Non-normative examples: 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 67b10bc6c..09e30a9be 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](http://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=1785260700&signature=fef292581e63a0db4998cf196b75ba687a4e8ca4a7b41bf7dedc4e068987d2f4&req=dSYnHst4nohdWvMW1HO4zVuHihn%2F0Ge8AQofdwM8qVegSkhdme1xSXH1EMBW%0AdEJxDUbsiyRd%2BaAiMy4%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1608263923/b4fa7d6f6f08f2adffb4ea63bc58/image+%287%29.png?expires=1785299400&signature=ffa2cdff36d0b44d75411e8ee8542c9eca5bb629e37c864701630f396c47879e&req=dSYnHst4nohdWvMW1HO4zVuHihn%2F326%2FAQofdwM8qVcm7BQwtFaGQe8Bs%2F2k%0A4%2FkJXE9JmsdoEBdw8kg%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 17b158d8f..f2dc04bef 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=1785260700&signature=326f6025f7c824bf51c7ea033123602adfccbf0516ed07b5585007659e32e02e&req=dSkgFcB7moZZX%2FMW1HO4zbYXUBJgWuQcFZRyvJPpBZ8q%2BqDbSmx1jrv2tAgf%0AHX3KbaC1iVGlA%2FMihkQ%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1973957766/5c2dd87c0818a0400099a833c9b3/4cc3130a-f696-4967-9fe3-e5623c6f02bd?expires=1785299400&signature=461a121c79f9205f0b7657d063fe66e628b22892fb75c1010a906ab42c2df5f4&req=dSkgFcB7moZZX%2FMW1HO4zbYXUBJgVe0fFZRyvJPpBZ8ynkiPbQbDqBrjxVNZ%0AMzdtNWdpC%2FoL2UiDMwc%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=1785260700&signature=49c6ae7b82656f5a000578f633313618f75e05bf8ee9eaa4ec93b7b29d4fd992&req=dSkgFcB7moZZXPMW1HO4zRW12%2BDPfqT%2BZxDZGlqR6GgDcZqHLQJeDGaxssYZ%0Ab5He3Qj2EkaD9HI0aWU%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1973957765/19dda72a40db95d78c00c27a1a1c/6ce89be6-93ce-409c-bbea-d34be09db348?expires=1785299400&signature=71b5e40a49cdb49115cc589eb3252db6f3a4dff984fd281c45e49a83828c2d47&req=dSkgFcB7moZZXPMW1HO4zRW12%2BDPca39ZxDZGlqR6Gg%2FGJqP6O5aHYmy1b7z%0A96NBf05y60oQPho63gU%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 810fd4bb5..ca48d47e3 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=1785260700&signature=3b9cf0c5a5e5065ecd610a4abcf0d0d3819e0c558f4190dc23dbb86eca809ce2&req=diAiHst3n4dfWvMW1HO4zYGm8iIeFqjL085gFtEpvcQBZSIaP0lV28Vu6wfU%0Acd5XDGG2hKXxJC3JwTQ%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2058292603/75752add0bed6a9f3ab217f01708/CleanShot%2B2026-02-12%2Bat%2B08_55_14-402x.png?expires=1785299400&signature=978360d20ae1e66df547ca28dca055507bc839d8007695f6add994c2f7b48647&req=diAiHst3n4dfWvMW1HO4zYGm8iIeGaHI085gFtEpvcTe4RGwVWfWofTIPBG7%0A5y5fdxV5UEHeqh%2BaNo8%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 7bea8d133..b532520c6 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=1785260700&signature=4e5f7417a9c53c6ce9c257b263e564f176c3b9c0462f0fe2c0c6d656c075ea90&req=dSclH8h2m4BXW%2FMW1HO4zVpN5HIfX2hCJ%2FadMup7FQdt1o7I%2F37KB7EW6zDk%0AJZ9jVpzKKgZEcOfsJ%2F0%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1729186182/ebf4032a12a8c56959ca927726ce/Screenshot+2025-09-16+at+12_32_31%E2%80%AFPM.png?expires=1785299400&signature=5bffe46528967f88cc371e06a97bd4465f983912f3ec4e60fc65759b8aa15e65&req=dSclH8h2m4BXW%2FMW1HO4zVpN5HIfUGFBJ%2FadMup7FQeUZIJTLd%2BQjyAN8Wb4%0AYGIpYWNliWLup6zM3%2Fw%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 b25bcef7a..e329b0ab8 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=1785260700&signature=7e7bc641af4c4aa4e3b1c6ba826587d241815e58458503720a23139435ac7cba&req=dSklF894lIheWvMW1HO4zWn5HzYfZEVsc9cNIYuX0GFcMc425XPIKHU%2FAuyf%0APh3WkfbrzmSU6QkGrgQ%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1921669913/7cc7be48cfc7a18f9f469d6cd83c/CleanShot+2026-01-08+at+10_20_43%402x.png?expires=1785299400&signature=6786c5bd96ccbd7f5a5a818c09d1056b31dc945e7d9fd7a4bebed28169075614&req=dSklF894lIheWvMW1HO4zWn5HzYfa0xvc9cNIYuX0GGhDwZl2Po2IFlvKmoc%0A6nKZ1%2Bmg8TYsF2Q9KAE%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=1785260700&signature=f5e6933fd26c24a423b564e7966e1af690ac5a5e16d4e4432a13dfcddd36f303&req=dSYlEst6noleWfMW1HO4ze44eCJjkhI5guvTv9woD7aDUcizuubwcIxF4Ji%2F%0ASpgsDopVxwYXdga1%2BoE%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1624243810/e6fe1d262597446c7fe21dff9f10/AD_4nXdW-GhByF8uKV7fCq9lTbkVB91FglSL6TSyXAOUk_MLcTV9YsEMBMkm9rgm1oXqv0k3sJh1JhlzZP6tHVkKbDJJ71pDRRtM3aVNG64MDuKDIzgmknh-XDZdNa7biTsTdwGoPr5GRg?expires=1785299400&signature=e1c33937a797be589b45eb910f03dc67b40e7c45af73e892bb49112987ac36d7&req=dSYlEst6noleWfMW1HO4ze44eCJjnRs6guvTv9woD7aqvYcRjOSqYm250S4H%0AZqFcA3Y1QVrOgdRqjcU%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=1785260700&signature=d58ad8c6520312001ac0bf08504b7508e069164428e017c483262410366b3f29&req=dSYlEst6nolfUfMW1HO4zdaFncB2h4m2DeZsm0Gz1HsKYrmdUBEFrN1PXfDl%0Aq21iALoK0ONtvYa4Sy0%3D%0A) \ No newline at end of file +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1624243808/b025db8e598f0c88fb16d83d48d5/AD_4nXeUwCKnmFzzrjMHhfr5By4zk5pJlkEn3wbJ8-aNfu13Yl99IjBywpqPx9G07QRzpH1EwRY7uG7Q9m9fib98Gql1cIV7XwUCTzEgBNu79Ey8tCOS5CEVmwveIcEOxJ4fonBhe3g9MA?expires=1785299400&signature=a703aef492174f8a7abcbaa0c5ac35cc7409f80667fdcb3411ff8cbca5e39c85&req=dSYlEst6nolfUfMW1HO4zdaFncB2iIC1DeZsm0Gz1HvpEZvG%2FHJ6t93cYAxL%0AzVfr5LERVTlZLg19e6I%3D%0A) \ No newline at end of file diff --git a/content/support/10684626-enable-and-use-web-search.md b/content/support/10684626-enable-and-use-web-search.md index ccf063b87..565267ebb 100644 --- a/content/support/10684626-enable-and-use-web-search.md +++ b/content/support/10684626-enable-and-use-web-search.md @@ -24,7 +24,7 @@ Web search expands Claude's knowledge with real-time data, helping you make bett An Owner or Primary Owner must first enable web search for the entire workspace. This can be found in **[Admin settings > Capabilities](https://claude.ai/admin-settings/capabilities)**: -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2032032614/ad907328c4d9a26ee4bd9ca27a52/CleanShot+2026-02-05+at+09_01_42%402x.png?expires=1785260700&signature=9dbed9fcd94edc74a825bd3d7f6d72ea579f767c71b2b6424dd8f68e5bf151cd&req=diAkFMl9n4deXfMW1HO4zetvyre4Hs5XUJIbgsqS2%2BPpi6dGxjEZChse5oMW%0A9psLYykyaGpw1mPVrfU%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2032032614/ad907328c4d9a26ee4bd9ca27a52/CleanShot+2026-02-05+at+09_01_42%402x.png?expires=1785299400&signature=bff532bec1eaa087263e469f279767e8a63982f17acceef73f9550cb4dcf51ab&req=diAkFMl9n4deXfMW1HO4zetvyre4EcdUUJIbgsqS2%2BM17lQt6Ww9LuC2JmAL%0Aom77HFedKet8QH3jcps%3D%0A) Once this is enabled at the workspace level, any member of the organization can switch it on while starting a chat by clicking the “+” button in the lower left corner of the chat window and selecting “Web search." Users can toggle this off for chats that don’t require web search capabilities. diff --git a/content/support/10722177-sharing-prompts-in-the-claude-console.md b/content/support/10722177-sharing-prompts-in-the-claude-console.md index 0e6886ba5..cc3f318ad 100644 --- a/content/support/10722177-sharing-prompts-in-the-claude-console.md +++ b/content/support/10722177-sharing-prompts-in-the-claude-console.md @@ -10,13 +10,13 @@ The prompt sharing feature enables teams to collaborate on prompt development wi 3. Select "Share" from the dropdown menu: -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1409899224/f39d557d4925710cb16384886baa/AD_4nXf-Ev9bV40PoDjQX2fMF_zYpHSMQp7u3X92DNp-KRcykraFg8DnLdHCamIzXEPhtAEYhsBT9grnobQwQm1tgtnjR0EfyEuOFV61_InUuDwa121cj-1_KDtm9_NOYRD4LjcZQUIK?expires=1785260700&signature=481c1b09f1b7bff436a6ed683da1081f43293b7b3a3fa7f7c32b28b361b09677&req=dSQnH8F3lINdXfMW1HO4zajBO1wsPw%2B85HPc4FxcZuqyNg%2F9ry4vCBRaQ5jN%0Aa736%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1409899224/f39d557d4925710cb16384886baa/AD_4nXf-Ev9bV40PoDjQX2fMF_zYpHSMQp7u3X92DNp-KRcykraFg8DnLdHCamIzXEPhtAEYhsBT9grnobQwQm1tgtnjR0EfyEuOFV61_InUuDwa121cj-1_KDtm9_NOYRD4LjcZQUIK?expires=1785299400&signature=f0abd1c6ed51aa770877b4abf5a61f64d79d1e6773c0a6416ff92a20f6130c3c&req=dSQnH8F3lINdXfMW1HO4zajBO1wsMAa%2F5HPc4FxcZuoH0wTGrTVjDUwJ81x%2B%0Af1lf%0A) 4. Change the access settings from "Private" to "Shared." 5. Click the "Copy link" button that appears: -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1409899713/0fd923a839b2c0ff8a0b5e11cf0c/AD_4nXdGUlO0CiCdnhllDnlz2Dd75uiNClFmR8_Qi1Wx6MM9rF-EUSIzRzvs_P6kGSqWBuF-l4iBMRtoEN8ip1-c8bqNzSqKA7SX1STIjtRqNisW-NCmcl9DEhWjv4edORWaT4LNZuPVww?expires=1785260700&signature=b36fad445dd447842a92041e8d44e58120d0786cb97195070340829a46fb8850&req=dSQnH8F3lIZeWvMW1HO4zaU8nlK2OMyuiqPPSiDAl9JK7ff%2BusdHzEKCBstO%0ALFwC%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1409899713/0fd923a839b2c0ff8a0b5e11cf0c/AD_4nXdGUlO0CiCdnhllDnlz2Dd75uiNClFmR8_Qi1Wx6MM9rF-EUSIzRzvs_P6kGSqWBuF-l4iBMRtoEN8ip1-c8bqNzSqKA7SX1STIjtRqNisW-NCmcl9DEhWjv4edORWaT4LNZuPVww?expires=1785299400&signature=2b7d095a7199053e64e39ad0cb9743c95b572fb1a825aff91912fa1b0001db33&req=dSQnH8F3lIZeWvMW1HO4zaU8nlK2N8WtiqPPSiDAl9IvGHZzsNZUahUfmnKJ%0ArSLg%0A) 6. Share the link with members of your workspace. @@ -38,7 +38,7 @@ When working on a shared prompt: **Note:** If a collaborator saves changes to the prompt while you are viewing it, you will be prompted with a message to “Go to the Latest Version,” where all their changes will be reflected. -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1409901036/6b69f2878fcb1b4e9ba0747464ac/AD_4nXcp1htcsSLR8H98i7KazEFqIkOhVUHnw__-17jbMZ-n70qnSttxx_m7wNNaHsK7FZHoG8v6zRyqkElQrtdVkxnydo2hzsznCwt6ehzqlGAR7Js7TggP6WmVfwnUTgbouDIxyGS0?expires=1785260700&signature=c07509cbb261deb43b40be68c71d76d3c4e4763a15eff100f3ed5352a2e69956&req=dSQnH8B%2BnIFcX%2FMW1HO4zUnGutINA0Mh83rdFAdB3KwTwCeQmkJ7Jx5SuVxc%0AiH1a8XGUxrTn25m6yNw%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1409901036/6b69f2878fcb1b4e9ba0747464ac/AD_4nXcp1htcsSLR8H98i7KazEFqIkOhVUHnw__-17jbMZ-n70qnSttxx_m7wNNaHsK7FZHoG8v6zRyqkElQrtdVkxnydo2hzsznCwt6ehzqlGAR7Js7TggP6WmVfwnUTgbouDIxyGS0?expires=1785299400&signature=a7dc874bf5fb133db112a4e06da88517e0765bdc7d45accb1da53a6929158145&req=dSQnH8B%2BnIFcX%2FMW1HO4zUnGutINDEoi83rdFAdB3KxFjEbYzalLsmp4fJMk%0AjCwg26klcz%2FE%2FLV9YYk%3D%0A) ## Viewing Version History @@ -48,13 +48,13 @@ To see previous versions of a prompt: 2. Select "Version history" from the dropdown: -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1409901693/2924593d08c79c5ef1c4ca795f9d/AD_4nXf-Ev9bV40PoDjQX2fMF_zYpHSMQp7u3X92DNp-KRcykraFg8DnLdHCamIzXEPhtAEYhsBT9grnobQwQm1tgtnjR0EfyEuOFV61_InUuDwa121cj-1_KDtm9_NOYRD4LjcZQUIK?expires=1785260700&signature=81c77e3a9059dbfed78ec25b1f7ab2b9c8bfc7d58518558351d53fe536f22619&req=dSQnH8B%2BnIdWWvMW1HO4zdOs5EEiM3LZplKKWUPxWw2pPuuU4iYx%2BWkm2q4x%0A5HF5%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1409901693/2924593d08c79c5ef1c4ca795f9d/AD_4nXf-Ev9bV40PoDjQX2fMF_zYpHSMQp7u3X92DNp-KRcykraFg8DnLdHCamIzXEPhtAEYhsBT9grnobQwQm1tgtnjR0EfyEuOFV61_InUuDwa121cj-1_KDtm9_NOYRD4LjcZQUIK?expires=1785299400&signature=7b4ea8e33b46d1aa7ba9a9d5edcb64bc04e71437c07e162dc418f642f21b2afd&req=dSQnH8B%2BnIdWWvMW1HO4zdOs5EEiPHvaplKKWUPxWw1FgvAsK55r8QFmYdDW%0AR1Zs%0A) 3. Choose the specific version you want to view from the list. **Note:** Past versions cannot be edited. To restore the prompt to a previous version, select the version from the version history list, and click the “Restore” button in the pop up. -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1409902092/39258424bd71205743134bb5a2d8/AD_4nXe7EGQNq4UAioXobBxbEdluYda1qU277VuDxoqXgmL9z1ch8ro5k3RjDmBWlpPzcfI8eeAbbmiouCc2AEfGPO_LiwFekOgCDj5MV8klaRgH1BHko5OZ1WtWq8Ow0HlYif77j2AxRQ?expires=1785260700&signature=744bc7cf54517c50747a7290f626e74c130713e8ed4753f9329a27e778e1dbc6&req=dSQnH8B%2Bn4FWW%2FMW1HO4zeZkcjJRjdcnRPhLT%2BKEBGN0K3Frhhfs3bhBDH0R%0AFR64qWLDOB1O57XptQE%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1409902092/39258424bd71205743134bb5a2d8/AD_4nXe7EGQNq4UAioXobBxbEdluYda1qU277VuDxoqXgmL9z1ch8ro5k3RjDmBWlpPzcfI8eeAbbmiouCc2AEfGPO_LiwFekOgCDj5MV8klaRgH1BHko5OZ1WtWq8Ow0HlYif77j2AxRQ?expires=1785299400&signature=01aabe27cb5a4d78ec04e3316d4c9c72f5809779ffe129d35ee97e48d417530d&req=dSQnH8B%2Bn4FWW%2FMW1HO4zeZkcjJRgt4kRPhLT%2BKEBGO2jL6bu7Ul6JkV51Rl%0ATaKPkHlZFeGLkPIsmxw%3D%0A) ## Unsharing a Prompt @@ -64,6 +64,6 @@ To see previous versions of a prompt: 3. Change the access settings from "Shared" to "Private": -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1409898166/d7f3c0233ef3a3fa66701b558db7/AD_4nXcuZY7tln-InGzsyEmOZdRER_FWN9rQmcKalQqRTu6lSEyFSGBhGuvVPkLv7QHvsJCZsHz6-lTOX_tw77ribji4VlTsdG2dp-orGm6ST7IQ9aRnZvQMNvetkik0voTDZ1rHuFP5zA?expires=1785260700&signature=24752e7c63d5f20bf7ad1a164f471612137dd4d184de1a6b81c982721c3cc01b&req=dSQnH8F3lYBZX%2FMW1HO4zZMvtFLcQvZmH68akkuAPm0M2fHw3i1JLbU1bs1j%0ArtX1dw6I2lJeR8m4rIM%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1409898166/d7f3c0233ef3a3fa66701b558db7/AD_4nXcuZY7tln-InGzsyEmOZdRER_FWN9rQmcKalQqRTu6lSEyFSGBhGuvVPkLv7QHvsJCZsHz6-lTOX_tw77ribji4VlTsdG2dp-orGm6ST7IQ9aRnZvQMNvetkik0voTDZ1rHuFP5zA?expires=1785299400&signature=913f5956f44c42bf67c917fd1042c7cac3e63a1685d0ad295620b02b3fee869d&req=dSQnH8F3lYBZX%2FMW1HO4zZMvtFLcTf9lH68akkuAPm3G8bQkHFj8oWBWFbXQ%0AMGGY0MhAd4Ry0JOLtl0%3D%0A) **Note:** Unsharing immediately disables access via the direct link. Anyone that the link was previously shared with will no longer be able to view the prompt. \ 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 3340fb0a6..a284e75d3 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=1785260700&signature=7ead727987f3d646b83811a63c2b8d07f37b22d718a6985346b2f9852ef32c73&req=dSYvF89%2BmodfXvMW1HO4zWbPxEV9MT01Hn9K2IaIG2L4%2F1skcVp%2BVc1yiOIY%0AadTSuzIXXFKZIIp61X8%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1681607607/ba6e379d2769d190f0970a0adaed/AD_4nXd4aZkqjJFpiXMPF28Pih7HmSJ9pPsnoWAfVgiLdFRFiTkO92YtXteIjvDHaPl7T0tjfpRTBOlyrMbQ_aciCNDgfIuEvV3szmKvt72x5O51DMSClXOYWk1JIRIzylwkj3joXqZcLw?expires=1785299400&signature=92a6f70339ec5e0702264a870f0556411665890e3520712ffd08682315d64985&req=dSYvF89%2BmodfXvMW1HO4zWbPxEV9PjQ2Hn9K2IaIG2JWS3E7qRmJgxQ5NkZV%0AJKzASgm8gV%2BTPefOFyI%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 1cf87ebf1..5a3ac953a 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=1785260700&signature=2548938b990fb5872818c1ae521ad93197c400df7c59e3f0bb8d0b775d75fbd1&req=diAjFMp7lYddWfMW1HO4zZyGrstwvVcXF6uXnTLMvvBAZe30UE%2BY5HtvOohY%0ApnQF%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2042358620/1bf2311353615c1c494da1312a17/124b93a8-0a9b-4c84-9d1f-ede6ca3498dd?expires=1785299400&signature=0b6c8bcf8b613e5829d8dfdb20cfc321325ce79761b7f4a75ee922766f6fba9e&req=diAjFMp7lYddWfMW1HO4zZyGrstwsl4UF6uXnTLMvvBs%2BLnWutGh4lfCBQmV%0AMdjT%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=1785260700&signature=14fcdc7363cdbf11d6b726c1013882db26e5f3c28dedc0f3e9625ee8b0799bf0&req=diAjFMp7n4FZWfMW1HO4zU6VRfjITrxuxNdRzYWrfF6cvhXc%2B0dbc6laN7%2F1%0AGjjTW6fU5JLU6vQav5A%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2042352060/162f9e61f7fbeb689201dfc1cac1/6a7fafb2-31df-43be-a43f-0059d735e3c4?expires=1785299400&signature=10a858101d3c04a236fa52bb2fd2efe0376c2563d974398cd1ab50968f4ca27b&req=diAjFMp7n4FZWfMW1HO4zU6VRfjIQbVtxNdRzYWrfF7QJ4bWcOWb0njN9c8V%0A7SuoVSM8jz6kNHTZ%2BDQ%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=1785260700&signature=0d194bacc33fbbc0386b648717492ffbfa5295fc87df01a410dfbe0e1008c2da&req=diAjFMp7lIdWWfMW1HO4zQTUIfF4lthJD%2FRXAPlQ7LZDIRAoYolkji%2BgHCT9%0AAcg9%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2042359690/68879db64559ecf87991f73ce058/671ff972-9e08-4686-bc04-955dab4b2de3?expires=1785299400&signature=55750b8b6423b08043e98bf13db17e3a90ffd1256dda9258a4c7910aa2d440a9&req=diAjFMp7lIdWWfMW1HO4zQTUIfF4mdFKD%2FRXAPlQ7Lad0v4c7O30nrcvL6hh%0ASYCl%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=1785260700&signature=e293f1cfc413d6125f364365d21dba2a704cea09fe879af2828506ead4a250db&req=diAjFMp7n4FZWvMW1HO4zZ3%2FGG%2BXZlANy8OQfYsvK3yRVOqJazV5aqcOH%2FNg%0ApQaLE5o0gKcvecJSjWE%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2042352063/25eca25bcfd573ecab30dd53158c/074454a6-fa5a-4c49-8b19-02d434b4ca50?expires=1785299400&signature=9476401e1660306e219e0793f5615effd806acb44ca850590075c0072549b6bc&req=diAjFMp7n4FZWvMW1HO4zZ3%2FGG%2BXaVkOy8OQfYsvK3wjhi0kMhD5KcqtQog3%0AYMwcbE%2FFxOVbqXSeKao%3D%0A) ## Choose a model diff --git a/content/support/11506255-get-started-with-claude-in-slack.md b/content/support/11506255-get-started-with-claude-in-slack.md index 97bebc9fc..e195c4ac7 100644 --- a/content/support/11506255-get-started-with-claude-in-slack.md +++ b/content/support/11506255-get-started-with-claude-in-slack.md @@ -12,17 +12,17 @@ It’s how we’ve brought Claude’s capabilities directly to Slack, bringing A **Direct message with Claude**: Start a private conversation with @Claude. -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1755143775/0ac74968f16b0c304ad05c1501c3/8f870a90-c622-449d-9eba-0a2edf5d63f1?expires=1785260700&signature=f975233bebebfe4d24070e31784c26858e34bb3d1d956951ca76d5989d520a36&req=dSciE8h6noZYXPMW1HO4zb2WCgABEIRw5mlLMjhGEMH0fNAVDWcV6h5W%2Bmto%0Ax9v5Lu0g8oYOLXJtHzU%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1755143775/0ac74968f16b0c304ad05c1501c3/8f870a90-c622-449d-9eba-0a2edf5d63f1?expires=1785299400&signature=316d4008d6f81d563d83985c45df13740bd6a3fdacea72ca461bfd3741abffc5&req=dSciE8h6noZYXPMW1HO4zb2WCgABH41z5mlLMjhGEMGJCtmYrlSVYEADtBOw%0AhMKaUa3trf8sfRAHDuY%3D%0A) **AI assistant panel**: Click the Claude icon in Slack's AI assistant header to open a panel on the right side of your Slack window, allowing you to access Claude from anywhere in the Slack app. -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1755144720/47781e38d6f97597aa494e0aeb2d/38f88d2c-aa96-4d35-8a02-7ad6b23f8699?expires=1785260700&signature=f8307f9735a6055e90efa855f4ec2c386716c8857f642d25205c5090a31002f3&req=dSciE8h6mYZdWfMW1HO4zUifzTTbEaOjPUSeDntyEuW8ypBorEt2Bj2cBZAp%0A9KoO1JZ2PTN7IU3TV3U%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1755144720/47781e38d6f97597aa494e0aeb2d/38f88d2c-aa96-4d35-8a02-7ad6b23f8699?expires=1785299400&signature=cacaf26b06e9130dea2fcede6548a916dbf698fd5b75573a098969b5e107a0b1&req=dSciE8h6mYZdWfMW1HO4zUifzTTbHqqgPUSeDntyEuWzlJxVRAxQQRuHCsCE%0AMZxYcl6kiSuXAWPa3sU%3D%0A) -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1755145556/3155c34bba5a64e0ab7b760e78c2/5c54e519-3c0d-4ffa-a555-0b9d9660ea53?expires=1785260700&signature=c47f380efa299b618c1f4a14358bd73a04287c847a58c07b3d8f399a89eb0cec&req=dSciE8h6mIRaX%2FMW1HO4zXrVUt1%2B9o%2FEBGejWRiWDiJwe3wK009TAE1Q9O7Q%0APpbkdWtGzahfirD7nfA%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1755145556/3155c34bba5a64e0ab7b760e78c2/5c54e519-3c0d-4ffa-a555-0b9d9660ea53?expires=1785299400&signature=bc68fa5664c415bbcead71dd390c3aebe19a2212e94b246385c6bf57423ba8be&req=dSciE8h6mIRaX%2FMW1HO4zXrVUt1%2B%2BYbHBGejWRiWDiIITK4p5jpM%2BAIFcbC%2F%0A1OAUwHHaQg3m9UROk1s%3D%0A) **Thread participation**: Mention @Claude in any thread to get Claude's help with the conversation. -![A Slack thread where a user @mentions Claude and asks for a summary. Claude replies in the thread with a short bulleted summary of the conversation.](https://downloads.intercomcdn.com/i/o/lupk8zyo/2398958204/25a1254c9c17bb0af6bf64ac99d3/Slack_Claude_Thread.png?expires=1785260700&signature=c539f95cbf90a1bacb37259d174823f9373256900c8eb993fc4f65d2ef98e2b6&req=diMuHsB7lYNfXfMW1HO4zdOLiZ4vKuuvZVaRIDJSo4IGMeCqFZC62GIzsAIM%0ASHBwPAeS0obtEwTiXos%3D%0A) +![A Slack thread where a user @mentions Claude and asks for a summary. Claude replies in the thread with a short bulleted summary of the conversation.](https://downloads.intercomcdn.com/i/o/lupk8zyo/2398958204/25a1254c9c17bb0af6bf64ac99d3/Slack_Claude_Thread.png?expires=1785299400&signature=22e2880d487f28f943038067528de497ca497407e095089a9d49ca476df23887&req=diMuHsB7lYNfXfMW1HO4zdOLiZ4vJeKsZVaRIDJSo4L6q8nL5Io8tCLxgxtl%0AzwoNZJWiPwUAUcD%2BDYA%3D%0A) All surfaces provide the same capabilities that you have enabled in Claude, including web search and connections to your integrated tools, allowing you to seamlessly integrate AI assistance into your existing workflow. @@ -60,17 +60,17 @@ Once your Slack admin has approved Claude (or if you're on a personal Slack plan 2. Click "Connect Account” to be prompted to connect your Claude account: - ![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1755147280/abac53f0415690817c630a420091/98c15ecd-761c-4e0d-aeae-1c52d38e52c8?expires=1785260700&signature=519ad4dcdbdfb0941de94662822f94fb75f8567f421bba31b5824dba7fa13f8f&req=dSciE8h6moNXWfMW1HO4zRIwhUm%2BQyBh%2Fy7g3WAjXh6HGbkkepGczRiMrLaB%0A%2BH5S%0A) + ![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1755147280/abac53f0415690817c630a420091/98c15ecd-761c-4e0d-aeae-1c52d38e52c8?expires=1785299400&signature=654eceb8bdc65a51a0a9cfe374b4f67bb51c8bb42f452523dab9ae6ba25ba074&req=dSciE8h6moNXWfMW1HO4zRIwhUm%2BTCli%2Fy7g3WAjXh4chffgs60%2Bo2GqWQf4%0Ab3uA%0A) 3. In the window that opens, select which organization you would like to connect with Claude for Slack. 4. Click “Authorize” to allow Claude in Slack to access your Claude chat account: -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1755147985/57be4bd15a4720466d9114ef9e0d/5944ab3f-20b9-43f7-b475-127b98a3eef4?expires=1785260700&signature=5cbfa78d43034d409cac02400d67eb36ee5be50493f13dc30e893e9b81271f92&req=dSciE8h6mohXXPMW1HO4zcpXSpA5FA2TFQ%2BRWX0w%2Fe6jcWbhiUQ8VlLkC4px%0As91B%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1755147985/57be4bd15a4720466d9114ef9e0d/5944ab3f-20b9-43f7-b475-127b98a3eef4?expires=1785299400&signature=d29ab55b6e65a447f63331be23b62bf4d5b7e1e44185ac46e404984ff489dea9&req=dSciE8h6mohXXPMW1HO4zcpXSpA5GwSQFQ%2BRWX0w%2Fe7ThWd6dcwxSOdXSeq2%0AqYBx%0A) 5. You should see a confirmation message upon successful connection: - ![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1755148657/71571a264d97c7a145c399b3e653/f0d32375-bf8f-47d5-89e3-c165eb3a1d41?expires=1785260700&signature=7287e297f474c54b9ce7b7988fddd550d8365496bab774e256de751f43d7eb34&req=dSciE8h6lYdaXvMW1HO4zZ9S6jQbcpFsXLLzhWuBjzPkvceVqI4BBKQLnTAw%0A1phm%0A) + ![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1755148657/71571a264d97c7a145c399b3e653/f0d32375-bf8f-47d5-89e3-c165eb3a1d41?expires=1785299400&signature=ec1153cdf83504275da1c5bbdb10bd5c6eaf071b0d31117594b789a6f4cdff0b&req=dSciE8h6lYdaXvMW1HO4zZ9S6jQbfZhvXLLzhWuBjzOq3pWtUuSCbghKi%2FGK%0A44UB%0A) 6. After successful authentication, return to Slack. @@ -142,7 +142,7 @@ To disconnect your Claude account from Slack: 3. Confirm the disconnection. -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1755149744/97a579fedf87deb5e5b6abf48963/4cab9f61-9f98-40c4-969a-f590716dfb38?expires=1785260700&signature=543b29940a89c63645a9172d9c4241cd5cab899cca72deef6e9a45f47c4935e1&req=dSciE8h6lIZbXfMW1HO4zdIAvZBJaLGXQgg7UiXQlE0WrDf1siLuoIH2Bicl%0ADa%2BzzoHfRHejzgzfxco%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1755149744/97a579fedf87deb5e5b6abf48963/4cab9f61-9f98-40c4-969a-f590716dfb38?expires=1785299400&signature=f179fa5a0df4f68a5a864e1749bdc9762fd176572607493bcb24e7236be0c498&req=dSciE8h6lIZbXfMW1HO4zdIAvZBJZ7iUQgg7UiXQlE0HWCEKJ%2Fs%2Bl0WiLkkz%0AmQRm3bLJ1VKnLf8eIww%3D%0A) Disconnecting will: 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 1058bbef5..ef88fdb64 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=1785260700&signature=cf9e2508651c1d8ba3c005b190c3438c9d79b31679ac7ec985c76ae76e61c409&req=dSYmF818n4VcWfMW1HO4zTEDau4cnfOGEv2ojHLMyla6soIOERjJ8RZfyk%2FE%0AUbD5dUWqPSxHaF7IVgw%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1611422430/c8e0875feac1f2c7cb033be74fc9/AD_4nXfLU_bui3EXcCjQ0qm70HD97neqjGayKeDer_t76utlci8gZSUjYRhw6ZSOlDdqSEcwXBzd_shAh7pQEJ-8OoE0O21DM5coOgxmO_WD5hlwiuwtS2iYXcTavhIRyQT5zKFWvfn3NA?expires=1785299400&signature=58dd513f9aedc93cd1d4758d8fe51c03829d82dca4fa11470f9a9fae87ba71a8&req=dSYmF818n4VcWfMW1HO4zTEDau4ckvqFEv2ojHLMylZ5TifTXWqYZa2jNKJe%0AEFAcDZtgiHbBi7ragD0%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 2cc467484..41796ad96 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=1785260700&signature=888da78ea938946f0b2eb9e2db5c6ce22814cdead2e9909cd922165b17bfb1a0&req=diUkFc12n4VcUPMW1HO4zY9IRA9uU9FwYNcz5nFaZkEXaRb3ozBNKlAGIDfA%0ALElzq7ORS3uZYN%2BM96Q%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2533482439/4dee2d7b267f865205feefc8f4f3/cb60c334-d1e2-4828-a01d-dfb36bbaa7eb?expires=1785299400&signature=e1d4014d637aa607f5c37cc69b5cd6f829c00770474c1f7953d1b08e4a4dded7&req=diUkFc12n4VcUPMW1HO4zY9IRA9uXNhzYNcz5nFaZkEOoGaObybDY5miFnsh%0A7MBJ2RJ70cuXIHeeFRs%3D%0A) ## Can I exclude a specific past chat from searches? @@ -80,7 +80,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 > 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=1785260700&signature=69c9f5cf4f6d1755be5b3a57378a635be8fa4d18786518a43ca53b0b497d7eaa&req=diUkFc12n4VbWPMW1HO4zRlYrp5v5FArNshWSMEMw9dfFrwXxW9Lr2lxdFnM%0AlkP8CbdhUJCkAcY7ycY%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2533482441/b5c806a8e3f68bf34c4a70724d38/d30be013-d099-4c93-99d1-23d404792f08?expires=1785299400&signature=6191d385bb39f7d039cf8016b853c04af5007378a85eda9fb52f588af427807e&req=diUkFc12n4VbWPMW1HO4zRlYrp5v61koNshWSMEMw9fcA58MkM4%2BDvN0%2FzlD%0AXro2nrgWJ6xb0nzPXVQ%3D%0A) If you want to disable Claude’s memory, click the toggle and you'll see two options: @@ -184,7 +184,7 @@ When Claude searches your previous chats, you will see this reflected in your cu Yes, navigate to **[Settings > Capabilities](http://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=1785260700&signature=00b1b929d3b6e130781ed0c016f667ef6891c7a1e1020858ad723a3837bfea13&req=dScmH859nYlXUPMW1HO4zRzXH1oyJTHFJG68qZhl783bAjfuvSbj6gZv0VWd%0ALvrM8RVaeM5iU3Qm19U%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1719730889/3fafbf5ecaa0ae31d7d84a66229b/c25536c1-7433-4b94-a5e9-cd5acf97a4fd?expires=1785299400&signature=ed73df8fcd9e3af9d29951632379f2302e681c440f09bd96f1c3fab578219e58&req=dScmH859nYlXUPMW1HO4zRzXH1oyKjjGJG68qZhl783HaLid1ZY9CMWVV8MB%0Ar992Qoe%2BuGoZlMNrqXU%3D%0A) ### Can I exclude a specific past chat from searches? @@ -192,7 +192,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=1785260700&signature=dc001bf4c9b73b32b7cc854dfd40ee068b4e751bd6e601e864e540b45c782387&req=dScmH859nYlWWvMW1HO4za54sKZuOoa8XDpzhlKsgjM5W9kf2vx4ltN7tv19%0AfHlr5uTRIk%2FbNancKb4%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1719730893/9549b21954e0070ceb6b85231fd5/88e59234-6fc2-4229-84fe-733b33efff26?expires=1785299400&signature=ea68b8aba8bd6de82b2acc2492a301cc92cd5eccaf9e3b7f49b35c84b240ff7c&req=dScmH859nYlWWvMW1HO4za54sKZuNY%2B%2FXDpzhlKsgjMREbiPhTjvPtYUnSc2%0ALK7hZDnc8IFr68L%2BRgw%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. @@ -224,7 +224,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](http://claude.ai/settings/capabilities)**: -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1719730892/62f9f2b68d675a8e33393f06024f/89198978-192f-4c52-915d-5294b16f3fe1?expires=1785260700&signature=382b24a5670254ee6e308f7e054a853f1a4c5d9e107cbbb3bb9e72078aabb4aa&req=dScmH859nYlWW%2FMW1HO4zTD5MMTkceRCBq9N9dRTKYdY6%2BW8%2FtHSPfuWUCAO%0ABea222J%2B69wMCgs8kFE%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1719730892/62f9f2b68d675a8e33393f06024f/89198978-192f-4c52-915d-5294b16f3fe1?expires=1785299400&signature=2b8b6e580c13ab30afa7bc732005576c80b08547d5bc7f6992789ff28efd858a&req=dScmH859nYlWW%2FMW1HO4zTD5MMTkfu1BBq9N9dRTKYfO0xkyoe5FwjiVf%2FTv%0Amxk6z3xSkknza23Wzzg%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 6a3d7b286..81554d593 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=1785260700&signature=7b0d4cbab8e70c17cb90cf0fb62af7fd5f69f1226e31c9af992b4c8b027e982f&req=dSYkF81%2FnolZWPMW1HO4zf7%2BjEHs7oD1n6MrEicvimDS1SyVG2se1SmFwo1x%0AnPCVZ1aBGS%2BCOPlX7cs%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1631413861/42c3b13d7fc44a11a88ec2b9cd03/AD_4nXeMx8QXpeZZCkfAnVSwx8KZ9n4Vr2rvPdQddyE6ZNxch__F6ZqFs1G4ZmU52Wvb7gRlwRqquTLdw8IQv-gICDyP-MXqiQK_Oe7gX3SKsCKKt2IEpMx4qDeMeeZufMaJfv16XgOH5g?expires=1785299400&signature=b60e565220eabf0daeab72912198d9b7c15c483ef8fd7ad5234e4c5ff08e8124&req=dSYkF81%2FnolZWPMW1HO4zf7%2BjEHs4Yn2n6MrEicvimBt9r38rKbXiiBsj7ay%0A0lsJXEHCjzlsmHi4Mrk%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 99f7b4ddc..52e889fde 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=1785260700&signature=9f81fcefc13da51dfa13f12df347a7e341904a80dede0afe275daa6447b48e3e&req=dScnEcp7nIdeXfMW1HO4zQe5GlqN3SXzS5x65TIld%2FBPRAVhhqXIYQw6%2F21o%0Ad7Ax2eAXEYucHXj3d9g%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1707351614/ccb910e4b87b1e96ad9a11bbd835/b57b2130-d8d6-4499-89f6-6c12de236fd4?expires=1785299400&signature=f7913dbf3d8ae8731c59e20d22df7edc3911befd40a0d4b6aae06288c9f3e76a&req=dScnEcp7nIdeXfMW1HO4zQe5GlqN0izwS5x65TIld%2FCMJEb2uHOgmA%2FYFNBt%0AMiziwDOzucOlcgU5Nvo%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 748ad73d5..3024ccbbb 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=1785260700&signature=56d345e3290f282b50b2d1f9fb960fd91898dafbae8be46f715732577e3322f5&req=diEjH8p6modfXfMW1HO4zQHwg6TVkC6h6DwhVVpk1mBzlIeRWXZ43mkAO3zB%0AZ7HdVnA7X06mlGbrSBQ%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2149347604/936ac4eb025d3ef1f00c3b8a26b0/image.png?expires=1785299400&signature=a3205afa89f042f0487d8f819226b6564f04a3a93a8cdc58797be0599a6ca86a&req=diEjH8p6modfXfMW1HO4zQHwg6TVnyei6DwhVVpk1mD5t%2FrXqngVO8UANGzJ%0AgK8%2FtbgFB7PLUiT0Yns%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=1785260700&signature=5a77dd607ce3506104a0b052a48686a35dfe45e981d90630494cecfe6dfdd9d9&req=diEjH8p7nIdfWfMW1HO4zYnqMICWJXCO0wfO62ivdG8gcyL6ULPVttmrMlqR%0A2Qi1doeZtcJtvDxFL8I%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2149351600/c5b979c366ac2738f60ea84e85b3/CleanShot+2026-03-10+at+15_37_41%402x.png?expires=1785299400&signature=14f9a1f48db4deb5ef6e48aff70d22e9461fe72d8a871dc1a0520701632b9405&req=diEjH8p7nIdfWfMW1HO4zYnqMICWKnmN0wfO62ivdG%2BPyU0W4BwMm8iv3l1Y%0Ah%2F%2F2fP%2Fn%2FEsAFSl0ciE%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=1785260700&signature=f8e4a1b5b0ba37ba57db4c8f3e48ac2a70106a1613c59a4dde96ed0ae49fcee8&req=diEjH8p4n4FaX%2FMW1HO4zRzvvIAJdk1Bq7nEDCGq9G4cdUZOuf30SURwGEW2%0AXg5JNkm9OELoOFjIB7Q%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2149362056/44993661ca2db771fe924d0346f6/image.png?expires=1785299400&signature=cbacd2c487024062c2575990cc3b954f99727bc8d6a0feb56077dd7b7cd60187&req=diEjH8p4n4FaX%2FMW1HO4zRzvvIAJeURCq7nEDCGq9G6IatFAG%2B7oSBFJbzfg%0ApBcmBoEKkFJOCDJsoPk%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=1785260700&signature=09adbcacbc6796fc35c38611d2243e03d0f06d8aa46a98280c2ed697f35beb84&req=diEjH8p5nYlaWvMW1HO4zaPdGQJVUy9Be9HwvwG7ubgr1TJlS%2FQgS1H5Nlqo%0APxSgKEJ52v33l63NsZI%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2149370853/db66f5cd03683b9cc119d0dcd6b8/image.png?expires=1785299400&signature=a6e93367087242903e9e3f9cfb3eca9cadadacd2138166097c1babc539fbceb8&req=diEjH8p5nYlaWvMW1HO4zaPdGQJVXCZCe9HwvwG7ubjaqFPBOyCYRfuNMckJ%0AI0BbThHqXEs2P1vTHfY%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=1785260700&signature=dfe18fb2318a2b18f51143e77ba5cc3ad5c605ced90eab0687f2e7fcc84ce0a7&req=diEjH8p5mYFdUfMW1HO4zevsAvKINeuNw6z2wGSwkbtRY4C6%2BhHVBfPvbqFW%0Afe%2FO%2BJRhd5wVYc9kG8E%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2149374028/97813fe3b515c2e839d8d92abd79/image.png?expires=1785299400&signature=49ed5d22901f32fa856f92903c17198fb6f3c5b645a67293d2cca027c9fd2a99&req=diEjH8p5mYFdUfMW1HO4zevsAvKIOuKOw6z2wGSwkbuTyyIbdKYPlIcpUsik%0A%2BYPNaRqPDLxY%2BfxeBmM%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 a012d3af9..19195a472 100644 --- a/content/support/12012173-get-started-with-claude-in-chrome.md +++ b/content/support/12012173-get-started-with-claude-in-chrome.md @@ -34,7 +34,7 @@ Follow these steps to enable the Claude in Chrome connector 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/1892696502/a23969725f631e99b9e4c47ec6e9/89803b8f-4f3c-4983-8b4d-63aec687ea1a?expires=1785260700&signature=ea0f56c659d0ddd9a6a66680fed9866774a82d58a3b0e4d9cbc72bb7a1596783&req=dSguFM93m4RfW%2FMW1HO4zdOezI5e7rN%2Bhnw73Y7ib%2Bdp0qTPpLMNxA9kQCF3%0A5X2E3CMF%2B7GU%2BALdrWo%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1892696502/a23969725f631e99b9e4c47ec6e9/89803b8f-4f3c-4983-8b4d-63aec687ea1a?expires=1785299400&signature=2966ff7b5ac4ed602dabae43509a9ffb9f39d2699ab627444ba3c1cf14ed1029&req=dSguFM93m4RfW%2FMW1HO4zdOezI5e4bp9hnw73Y7ib%2BeNbEkZWbj6ucEInsd3%0AdU2QTdgoSOvPFqAGnOs%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 9a1d0bf62..2cf1afbf4 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=1785348000&signature=9f0294d7bb827dfcc35ab429a83f0d8ab03b158519c0c0fbbf3e8afff61a539f&req=dSYuFsp8mIZcXfMW3Hu4gZzas%2FXtvDxWlWrRiVwqPzaa6Nhl1Ov59APQ9gbI%0AGg%3D%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1690325734/d47f714680d78408d6022d06b8d1/image.png?expires=1785402000&signature=549a166cf43ed4fc9d2996d9f189815a4688fcc6639fdbe245e4387a215a5fee&req=dSYuFsp8mIZcXfMW3Hu4gZzas%2FXtvDtSn2rRiVwqPzZWky8Yocz0MqAPRsMU%0AqA%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=1785348000&signature=91eb88e757e64d6019ef21b67b714fafe396e3cfb1f16198b6c0c0aac6e634dc&req=dSYuFsp8m4FcUPMW3Hu4gbNj%2Bk78WQ7lg%2B5vzcg6znUkbXGs0c36r2m7rIQl%0AZA%3D%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1690326039/3a91cdc5fff57d188a18ecc6273f/image.png?expires=1785402000&signature=528481d3cf94bad2dc936c4e7cfd15f766edf6c35cb604ae0079769713e9d722&req=dSYuFsp8m4FcUPMW3Hu4gbNj%2Bk78WQnhie5vzcg6znU2VUm7rqbiRIx7WWlM%0AQA%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 81bd4a9ce..44fe3c372 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=1785260700&signature=9870d2f5223119d01ddf9c678bf38aa9e2c6e2e2e1b09e37e948d2f225cc2125&req=diAiEs55mYFfXPMW1HO4zYFJywhHCpnJPQVowIiib2mYSlaXwKgl2D2YczGY%0A7ArVzkWwCnGnHnfN8rE%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2054774005/25bcfffba6c249cd128d6c3f6d52/CleanShot+2026-02-11+at+16_34_47%402x.png?expires=1785299400&signature=ae14e38ce871a51a8c5b58d0ad2a34750494731784ec2eab61528bf557f04d85&req=diAiEs55mYFfXPMW1HO4zYFJywhHBZDKPQVowIiib2mZuwNeq%2BQzN%2BfnD0PV%0AhUEDa1rZDWiVTDTgl8Q%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=1785260700&signature=4341c5ffa0b047880dab1937796bff7f235ae29074f27bbeef9746db2e7216e1&req=dScvH8B6mIJZW%2FMW1HO4zXJcBmhBkylMpMW6Iph6YZerMPUrufFqqQAcD0oO%0AYZ%2BUhj8wjbJwPRJxi2k%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1789945362/ad72504d5429960f369b8b91b43c/86f06c0e-6eaa-4574-a4cb-2c38b273613a?expires=1785299400&signature=8ebe7c09151514aedfb43f6002109d6f697492a0d7bea6326c243e0fc340b35b&req=dScvH8B6mIJZW%2FMW1HO4zXJcBmhBnCBPpMW6Iph6YZc7lV3OXahpLtuUph4%2B%0A6OgWHU7TAcrYWV5mgOc%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=1785260700&signature=ebc4b9f858e74702e0c4263424713843a919cf270ee8a345a9c86a728bafcbc0&req=dScvH8B6mIJZWPMW1HO4zdnseBGQ6D%2BlqgKIA6CM1tq2UF1wlemSy8p7kAWh%0AUNyDp%2BGNquCzTuCeTzM%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1789945361/e3188cb8edb9ca7c303615da6378/f1c99a7d-5956-48d5-9ec7-b7ae6c8c3d28?expires=1785299400&signature=a5ba30f8aefe78b00f0dafe1b4f50348b069574c5d91288a859393da1e547ec8&req=dScvH8B6mIJZWPMW1HO4zdnseBGQ5zamqgKIA6CM1tpB%2B2vxf7yMwxZ2A3oq%0AYTFrmSIPJc9aTHB5S8c%3D%0A) --- diff --git a/content/support/12157520-claude-code-usage-analytics.md b/content/support/12157520-claude-code-usage-analytics.md index 9770ada41..a9375d7cd 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=1785260700&signature=13257effc8dc48f22f9eef0c9682e2b1723e5fe421f0cab6bdd9c3de5b2d8763&req=dScmEcx5lINYXvMW1HO4zfiEP6NSiXnJCX9h5MbdDjOW3wa%2FhXF2ejlGb5Or%0AbwUslXzrtUujOV%2BX2Gk%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1717579277/46c512f4b3ed05c359cecd78ed5c/e0ce2c19-39e2-411f-9a1f-cb1d46439a42?expires=1785299400&signature=311a03bfcc95e9bd1202e01e57e437712d50529f011ba524f2eebcfd4e080a51&req=dScmEcx5lINYXvMW1HO4zfiEP6NShnDKCX9h5MbdDjPSGUWJF5Elfd%2B7Hyps%0AtQE4u1Y8Zq0Dap9U0Wo%3D%0A) ### User-level metrics diff --git a/content/support/12260368-use-incognito-chats.md b/content/support/12260368-use-incognito-chats.md index cc78d9abb..c649d81b1 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=1785260700&signature=e25776a681a70d94f041c593fd40b6722b18c36c4dcdc48b82a0a11edd2126cf&req=dScmH854lYZbXfMW1HO4zeUcuwe%2FaOWMDCAt3Cx%2FSO1IhdljMd%2Fbs1JG3b9K%0AQ3O9Brl4VDGlh41Q9D0%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1719768744/c7a2fa56cf284e48472f3b9c4dbf/030563f8-9f97-4891-a749-9ae95968a063?expires=1785299400&signature=9d25a54247d907ec50b88f29c2adba7c4f41d00354a6f622f955fc2fd32f2039&req=dScmH854lYZbXfMW1HO4zeUcuwe%2FZ%2ByPDCAt3Cx%2FSO2g2bjeibBBu%2BDc4Oby%0AbIAn27gmKjs1oJ7LSQU%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 d73c7f451..ae3febfc6 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=1785260700&signature=b932b5f823ab80adbfd5fdda3cb9668f21f4c9c18a4585a737a046f3f0df568f&req=dSclEcp5nIRXXPMW1HO4zUAXI8kAVKjTFalhp3bugHK7wOOS0v%2Bd1nHeeD79%0Atp9Ilow9CmPOG8h1Uu4%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1727371585/b18ca03a6357c52d12d10386f28e/dab2dcb2-f670-4173-b77d-38767a34cec1?expires=1785299400&signature=84322302864852b835513527f961b56afbc526b44fb2f1fa1dcf16a99e8e3e10&req=dSclEcp5nIRXXPMW1HO4zUAXI8kAW6HQFalhp3bugHL16IXAXKOR0rTEc9kh%0AuqeA9zD6TKo2VcTz55s%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 fc91962ee..da2c6d537 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=1785260700&signature=90460d78a2970d9297387b7ff49cbbbc4a40898e21cf40f92eedd759b78e3903&req=dSgnE8F%2FlIZXXPMW1HO4zYj2ARebo%2FA%2FopE7m38YdfdnaZzdeS8QkVbrHv4X%0Ahh4v29l4kHyoMIGNBcg%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1805819785/5e203c38e6ba3f76bfd1dab0d5ce/fe062e7c-18cb-48cc-a7e2-754ac6e6c4be?expires=1785299400&signature=61ca75abaf2833aded930dda4997610f6b6bed78bc864fb782cb5256021fcc46&req=dSgnE8F%2FlIZXXPMW1HO4zYj2ARebrPk8opE7m38YdfeT691FRI3Ou5VTVyJH%0AiJXqY%2BMrcWlhttZouS8%3D%0A) **Note:** There is a daily redemption limit of $2000. diff --git a/content/support/12461605-use-claude-in-slack.md b/content/support/12461605-use-claude-in-slack.md index 4b312af9b..3638666ab 100644 --- a/content/support/12461605-use-claude-in-slack.md +++ b/content/support/12461605-use-claude-in-slack.md @@ -28,7 +28,7 @@ Claude in Slack gives you AI assistance right where your team collaborates. This 6. Access previous conversations by clicking the clock icon. -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1755150661/a1a13c73bda421f6ee906650cfc9/22907223-e523-4a93-a6d2-3199a8368991?expires=1785260700&signature=515b84452ce1564bb1a60a7f2e29fd412721ca4a8356cd5130fd9aa2abe0a6c3&req=dSciE8h7nYdZWPMW1HO4zXK26hRM7jEZVfOC%2FRy97LUIURRs6ekSHiTMJ9KV%0AGYtNgCmQo9vPnJ8ub6c%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1755150661/a1a13c73bda421f6ee906650cfc9/22907223-e523-4a93-a6d2-3199a8368991?expires=1785299400&signature=61795f0fe37724bed0abc88428f677e439d0b4dbc79b297ac1768db8af48ce79&req=dSciE8h7nYdZWPMW1HO4zXK26hRM4TgaVfOC%2FRy97LUpHSmU2RDS5OaJwzSM%0AXLT%2B%2BUa99%2BMBkc6Juqc%3D%0A) ## Mention @Claude in a thread or channel diff --git a/content/support/12466728-troubleshoot-claude-error-messages.md b/content/support/12466728-troubleshoot-claude-error-messages.md index b85a47181..1843af204 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=1785260700&signature=584c5ea9d9c00eeda9ef51763e66bbe8ed80daa9beeac3191c9a802376a78dcb&req=dSciFc53m4NbXvMW1HO4za4BXqoh1LLD7y68oYp%2BYg%2FKLwFhlxmcYlJHSFrJ%0AA%2Bx%2BwReyP7jCq7Sl1Gg%3D%0A) \ No newline at end of file +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1753796247/e6a8c6ef8653b229c5758e881242/c2fc6fc0-d163-4119-93e0-394104d86bc9?expires=1785299400&signature=84e926cd921806ae4e5a0be9a45b897b4212627c8f6b262228c48a872b037041&req=dSciFc53m4NbXvMW1HO4za4BXqoh27vA7y68oYp%2BYg%2BXGPJOcwAXYMCZhREs%0AKmK83%2FlRuSpG8G0QTbA%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 bd3ee6b12..c4a3e241f 100644 --- a/content/support/12512180-use-skills-in-claude.md +++ b/content/support/12512180-use-skills-in-claude.md @@ -164,7 +164,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=1785260700&signature=748b7141d1d8c4aa0ba64aa3849da57f16c5ceccafadfa23b4ffc5a8e7c0979d&req=diEnE8p3nINYWvMW1HO4zSOgDy4qxOaqH%2BdCnFXB0uiK9HOvZAAwuAHkma7U%0AQXOC%0A) + ![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2105391273/8359cbf8be20dce0f1cd3fd40e6f/CleanShot-2B2026-02-25-2Bat-2B15_50_16.png?expires=1785299400&signature=f28b5193e823016a355749aa43b29df480fcda3803d02607cb5096556cea09bf&req=diEnE8p3nINYWvMW1HO4zSOgDy4qy%2B%2BpH%2BdCnFXB0uhdHu5%2FzOWMuYBIIi3n%0AKqVG%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 bed74005d..3a6ef4b2f 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=1785260700&signature=4fa79bef27468895ebb9a79ad949fdd111ed77109a7a1ae965539331b3a480cb&req=dScvF857mIBYW%2FMW1HO4zQ9pXU8I%2BXDc0ugSQm1MFW8GJTfQ0rWZpKWvPXSH%0ALlIr%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1781755172/63c92550571842577ad435860ec5/6f5cc4e1-ff7d-48de-863a-c4e6184d4605?expires=1785299400&signature=3165b31abe73f145cdf56bee938a75c9ba804d9c9f2b44a6f51f15e41a360df0&req=dScvF857mIBYW%2FMW1HO4zQ9pXU8I9nnf0ugSQm1MFW%2FWboGbbgF3c3SCVQBk%0AJ7oC%0A) 5. Toggle **Allowlist** on: -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1781755578/a6bafff5f084dc86ae463703fd3d/6cf0ee18-4e71-4129-98e8-cc08174e3c3a?expires=1785260700&signature=b44b88bff65034d09fafa657f8e55ddb42b6914c1d571fcd2e465fe7d71013ce&req=dScvF857mIRYUfMW1HO4zaj0BHQpT6cDTAorLxpdoc%2BD1JwgUT4FWTrgbxal%0AntA0%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1781755578/a6bafff5f084dc86ae463703fd3d/6cf0ee18-4e71-4129-98e8-cc08174e3c3a?expires=1785299400&signature=0c8b5e3774362667dc65017ac1140b22e3b4c612be44ed8b688237e36b8bfd00&req=dScvF857mIRYUfMW1HO4zaj0BHQpQK4ATAorLxpdoc%2FBotA%2FkAT2ije3Sx3m%0Ajy%2Bm%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=1785260700&signature=4aa5ca00e4ab7cd47847693d23d950fcb8a10cc0c8fcfb4e9c3882149b3af822&req=dScvF857m4hZWfMW1HO4zYUJqYaoDDLsCEDZ5AdBjIYwPB94oeU4yBwyrhYB%0AxEmfyF2ZO8ll%2Bw5q8Ig%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1781756960/ad18af50c83d35f2673656c23e00/a7ee450f-0c7d-42d6-a75f-fb1bc088cb52?expires=1785299400&signature=cf749c44c9e235657cc4d7984f1ec9417b50e7a68a20e4578892f9701abd1e35&req=dScvF857m4hZWfMW1HO4zYUJqYaoAzvvCEDZ5AdBjIZg7AJ5Ro2FZYr8AgVV%0AI1%2BaPhysN8BFa7ZcWoc%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=1785260700&signature=0fb2e0c7b475b1dd50817b2866e6d88a70e1bad841fffc84e718245a2e7222a8&req=dScvF857nINaWfMW1HO4zTrxBa0r%2BVeSqXridZhfx1JJvI8K79DtLiUMlcTB%0A3B08BKKLElr%2B2IT5HWg%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1781751250/6558c0f59aea7976bd44b0213d76/e750f02b-cd0d-437e-a83f-9ac362cdf456?expires=1785299400&signature=a30e43c246a1c4cda80f715364be5d2d32bea89aafd05881f31cb6c45b48683d&req=dScvF857nINaWfMW1HO4zTrxBa0r9l6RqXridZhfx1JEo03TBGGhvreatERf%0ARHVenwAvFZ84AqdGklM%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 4c7679962..2aadb26ca 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=1785260700&signature=7b8e31259937adaf04d61ca796bf921228e326b244460e5d68ca6e85ccc90070&req=dScvEM16m4BaXvMW1HO4zR8%2BAFaCRJ1x7XrRA1YwWGshayMtDNDkYz3XDBbp%0AWmyMrYYLKyA4d1wltto%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1786446157/07ec74cd46317f8278083a317841/6448f3ee-c6df-4417-8a13-90d8c2ca3d55?expires=1785299400&signature=ef0b7cea49e762595bd291991f5b093ec1f702dad4cd9e2deaa0dbd211fe6849&req=dScvEM16m4BaXvMW1HO4zR8%2BAFaCS5Ry7XrRA1YwWGs%2Fnewr3tIOUiZgkndV%0AECJspT0DIY09zrH%2FRgs%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=1785260700&signature=f358ba15844869cfbd0f74ee5a430885afc30a99ed17f20239eba575984fd520&req=dScvEM16m4BaUfMW1HO4zcR0rZM2ienH7DtpMiX%2FBYkaEkg3Nmq6ig3fnJ8A%0A1dCLt6jkyrv6aJxoSgg%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1786446158/c092f1383826cb871493f74169d4/97b7cb98-5da2-438e-a920-e170b8b9790e?expires=1785299400&signature=efd018829a76be3ab8b378377faa5ae7ab8b751fc6c141bd35b63de8701f408c&req=dScvEM16m4BaUfMW1HO4zcR0rZM2huDE7DtpMiX%2FBYkrSlJb2tkYOGYk6meK%0ADfoAcedGCHEjFE%2FCwAM%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=1785260700&signature=c72e8ffed3428d7577a413de7c2f0f00d3661ceb7ed0ec7e6ae505d6adc669e1&req=dScvEM16m4BaX%2FMW1HO4zVbcTGaB5cTJUQl3YqgIJdYZmbMBS0Y1d6SBaOc6%0ABkbfTlVISGqnuf38PSY%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1786446156/83ecf0a5b98eddc9ffc9694c50f7/353589ce-b678-441d-8909-71b45fa2d065?expires=1785299400&signature=4ff102397045f0c2a536bbfbfbdadc54fa5b4ece33ff8c1eed0e17d1fb76987a&req=dScvEM16m4BaX%2FMW1HO4zVbcTGaB6s3KUQl3YqgIJdaLJkWCRDz%2FIe1se11I%0AH6gz4WvNf7eBhuxqIds%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 7082d6edf..89ab8a16d 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=1785260700&signature=9d396acdd6f42e382d8328f699251b636a8a53158b564d570007b46234a706a5&req=dSguFcl2lYJZXPMW1HO4zWggD9tToJydRC8c%2FcM5c2J%2FUtXPwQRES0Jp8HSJ%0A0Uj7v6jxrM9r1nj0TZI%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1893088365/2ca4b782dda90abea1fe5f4150af/CleanShot+2025-12-18+at+13_14_30%402x.png?expires=1785299400&signature=2b04d169676ba2f4713efeb7329ed8a194f966e6340c62e6a6b9ff22ec7f28af&req=dSguFcl2lYJZXPMW1HO4zWggD9tTr5WeRC8c%2FcM5c2JW3ml2y1Zs76phey8j%0Al1ZX5%2FlIV6aG%2F3i9yVU%3D%0A) ### Enable the voice shortcut (optional) diff --git a/content/support/12650343-use-claude-for-excel.md b/content/support/12650343-use-claude-for-excel.md index be3c2d6ee..2023b505f 100644 --- a/content/support/12650343-use-claude-for-excel.md +++ b/content/support/12650343-use-claude-for-excel.md @@ -330,7 +330,7 @@ Users can approve all of Claude’s actions via a confirmation pop-up that appea - System information: REGISTER.ID, RTD, INFO -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1849431310/ffc870a5114b4178fcd74b5cccf8/Screenshot+2025-11-25+at+11_30_10%E2%80%AFAM.png?expires=1785260700&signature=a5603d429065caff76a0b280c03aa62ffa8438e468e39603ea353c9d16853679&req=dSgjH819nIJeWfMW1HO4zYWKaOdpJNp1qAsRdssXCyCUFoAM2qA1yFKYSf9W%0Ayi1DvRUB6CTaGUNOdi0%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1849431310/ffc870a5114b4178fcd74b5cccf8/Screenshot+2025-11-25+at+11_30_10%E2%80%AFAM.png?expires=1785299400&signature=9ee4e78b7641625d36b470e0a83233164c19d7f837027d6437ac30f4e33e60ca&req=dSgjH819nIJeWfMW1HO4zYWKaOdpK9N2qAsRdssXCyAatKcN02tqCc%2BsT%2B%2FV%0AUd4rzsWmfmWPocajGtc%3D%0A) While we continue to develop our offerings and improve safety measures to reduce these risks, users should exercise caution when using Claude for Excel and should not use it with spreadsheets from external, untrusted sources. 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 5c396c8a6..3803a3ee4 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=1785260700&signature=fe3a168d89bd9a13b7a5b9df42f9f43444b8cce553298dbb7ea77dbb81ab8d97&req=diUmE8F3mIhZX%2FMW1HO4zZL6waNwnYV2ExEG4dCAGDZa0%2FMFZSLdwJc5yVxz%0AfCwXuwrAnNqAZAAqNu4%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2515895966/9f231a620f47d49e0ee648152189/848c1787-4eaa-4809-8fd2-1dbe2722560f?expires=1785299400&signature=3d4cb6cae045eff5e37013dcdf3c03f69d38a36c43ae8eb08f5becda7c9f1029&req=diUmE8F3mIhZX%2FMW1HO4zZL6waNwkox1ExEG4dCAGDbalrqJ2rURuCxv9KOH%0A6BHNmTFVgAf3t5gyEyA%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=1785260700&signature=36db3997086f4d27ddc975c85bd9dd2096664218bdf19429f36a84a67a9c7d8e&req=diUmE8F3m4JaWPMW1HO4zYEqejKrRJCoYqPRsgaNdTyF9r1iPQD8pFd5rJEL%0ABpU9h8qG0wrdXisDfCM%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2515896351/4d955858e6662c37489cc1470871/457cf159-8c2a-4403-ba22-cb92cb47e459?expires=1785299400&signature=aaea33e875184c8d4e45e375be368abe9531e928aa16e5f7a2bd9327ff55d50b&req=diUmE8F3m4JaWPMW1HO4zYEqejKrS5mrYqPRsgaNdTyNcpS%2FzukvK5VPjFVw%0AUNYoFx%2FLjskVSWFJjss%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/2515896562/51c6c1c2d73f9873b4ba8e64e5d3/762c32a7-e6d6-4ef1-a6b6-33d638f5008c?expires=1785260700&signature=c2d29330e97b91d2162355fee3b37e37d743d47695ce3fe794609f3937afb80e&req=diUmE8F3m4RZW%2FMW1HO4zQmHaEuJ3oSYWdW5GUm%2B9K0ZO8XU5Adme8XY6g05%0AMnKRjz5HwPzJ9xeDKiU%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2515896562/51c6c1c2d73f9873b4ba8e64e5d3/762c32a7-e6d6-4ef1-a6b6-33d638f5008c?expires=1785299400&signature=797762c534926767feeb4800c3da3c14f6ffbdbb81a230e51372f6bb67438cc0&req=diUmE8F3m4RZW%2FMW1HO4zQmHaEuJ0Y2bWdW5GUm%2B9K24sva3xn659YBuqmzZ%0Aw2NPzcb7lEymdIV0h2U%3D%0A) -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2515896563/abf008596ce5501297a609696362/fce5423c-4769-4b73-9a0a-c50f6407ebea?expires=1785260700&signature=f3719f502508488e7a147b89afb2c804194ec342d864b115f43bbc14dbc41f39&req=diUmE8F3m4RZWvMW1HO4zR%2BIDoJsu%2FfwLS3kobW3ZgRD8f7B2FWq2rCycrvm%0A7JfSM1K%2Bp2OFbdwCw%2BY%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2515896563/abf008596ce5501297a609696362/fce5423c-4769-4b73-9a0a-c50f6407ebea?expires=1785299400&signature=b7a046af9657685d7bf478334099797897d6afab0be0d526fca38dccc6b1aa87&req=diUmE8F3m4RZWvMW1HO4zR%2BIDoJstP7zLS3kobW3ZgRD6DPGwuEKMGSuI3IR%0AqShh0CFXjNfpfTDcHCA%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=1785260700&signature=634290cc3f85cb8f71a0967b6055a693d2044bb2c8029510fe158259c0e9cc12&req=diUmE8F3m4hbWvMW1HO4zfJThCE9r9xBiovaLYNN7RkgAHzxDbHhXLSyZWDv%0AO2q1y%2BdtJ1V1JPyN1hM%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2515896943/dd415f03afe56ca38308ef987f86/189e8ebc-5594-4f4b-bd84-e3c11c824d5b?expires=1785299400&signature=837839d71bfbb03a63961e0b1138b8b62d5272c919fec60710eba1ed13be93c4&req=diUmE8F3m4hbWvMW1HO4zfJThCE9oNVCiovaLYNN7Rn%2B7E7TzyDnGonhYQEQ%0A%2BxUEZYdCYLPl8PoVy3Q%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=1785260700&signature=c9a9da323a6bdd992b5342d511d18884ce50eec729490ef624f667038a9082cc&req=diUmE8F3m4hbW%2FMW1HO4zYE%2BQ9sA6jHaWbBLGZ4vBJU1Q0hHjtv2rz4XLAlG%0AYfF1BdmYVbWG86ExGLI%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2515896942/b403f2d216fc40b5195911020b8e/446b99f1-3187-4b79-b2be-9f17b1632ff8?expires=1785299400&signature=c901ac8c3089abe300199534c700d8877641c92941c3c469b3b2bdd352f1641d&req=diUmE8F3m4hbW%2FMW1HO4zYE%2BQ9sA5TjZWbBLGZ4vBJVgBEdxxVkComd3yUO8%0Ac%2FDdIIF%2FnA7p21nSVmk%3D%0A) -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2515896941/2239ce38639df339b24d5af1cb50/f829bc2a-ee52-4135-9b13-09ef1b7d66d6?expires=1785260700&signature=b9b768c5b1bc9d1d30baf935ba10783702a8a7b67385e6e214179b366fc844f9&req=diUmE8F3m4hbWPMW1HO4zTz0Nu8AIclXC%2BtvTPa1I7H03UZUxUdk%2Fq1ckbGk%0AmpumdroNGOjh%2Fm6nw%2BA%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2515896941/2239ce38639df339b24d5af1cb50/f829bc2a-ee52-4135-9b13-09ef1b7d66d6?expires=1785299400&signature=58df4ca02309ea7d271aa608293d48e4bb8abc1a5fc91f02898b4e3bf579f4ab&req=diUmE8F3m4hbWPMW1HO4zTz0Nu8ALsBUC%2BtvTPa1I7F3C%2FhI1KNJmQmAdGJc%0AB6CcITIpiyXngo4dczQ%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=1785260700&signature=b1fa6a9ffb9062ccad61ac0955797beecf81326b87ceb5aa6f26d484d4a7dcee&req=diUmE8F3lYZWWvMW1HO4zbhc8fieZ%2BQmTcfMEUwBBiV5E79ilX%2FqS7zsgO2p%0AP0ghThWi2z1sZNIVEHw%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2515898793/405db0c492da11886c28a2b82731/71a55afc-1cef-4c50-b7e1-86775cb9a168?expires=1785299400&signature=7eaa4ee2d15bba5d870352e8113ba6065ede521658ca26cbffb18f2c3d9b0b5c&req=diUmE8F3lYZWWvMW1HO4zbhc8fieaO0lTcfMEUwBBiUZo2gFXo1y%2BCmZVja%2F%0AvketPKormWzvyRLERyw%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=1785260700&signature=a57ee153f4654119f7855d78e455bb2987efc8cf99923712d504974523b7bd7d&req=diUmE8F3lIdeWfMW1HO4zWhGoTmbnSOlExu5cYiHHN9Kh63CGQHM8GYzviX3%0AF%2FDYPQGpgUKwPEFh838%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2515899610/91d93108f0767e795fb9e488e882/71607d6d-dff1-4a13-a445-aa1d79850eed?expires=1785299400&signature=2a7e103f4dd2f2e4158f2a68e98ae2e92208cede2ef29184280561dff224d968&req=diUmE8F3lIdeWfMW1HO4zWhGoTmbkiqmExu5cYiHHN%2B%2F5ulDHpxEP5jtYmZ7%0ATufCiAor5R357fnE8bk%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=1785260700&signature=9723ae12092d39df7ae046dcc1d87c87176e9d9c5e959ea32631791e3d5d11d7&req=diUmE8F3lIlcUfMW1HO4zcSk4r%2FQeO7HjHDogqK0V%2BxyvZLKblRCPwt8XhFj%0A3SJvaZBZAfY%2FcOxPFUU%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2515899838/33d737f2357d6e485704669962ae/43faadc3-47da-4a93-bbb7-47a7983e7441?expires=1785299400&signature=5091018b396ce4bb03bfefcbd70f4b7e65a7e01c40dcbd671580db39ad58e68a&req=diUmE8F3lIlcUfMW1HO4zcSk4r%2FQd%2BfEjHDogqK0V%2Bx8ile7vzTMQUZ%2BxVmG%0AAmlTn7viQcJbt0oc2eE%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=1785260700&signature=f364cbd486e63b1f66f09d55472526313e4aeecffa06763c2b89e126fdfd9fd1&req=diUmE8B%2BnIVXUPMW1HO4zX7WEo2zW0GvFSi1Z3SzLLs0MwothPB62U4J5cWK%0AgAdDNyTBIQt98Fznng0%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2515901489/8005693d55b7fefbfe9233258d39/106c22a0-3f47-47a6-abbd-4788dd70f218?expires=1785299400&signature=167f8741aeebc1228a5e8bf86b5b9f1d167cb01f2f750fe833065985612bd8ae&req=diUmE8B%2BnIVXUPMW1HO4zX7WEo2zVEisFSi1Z3SzLLtF8vdalorRjOE7oMPa%0ALKsYvQWQDhDW1G1is4M%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)**. @@ -288,7 +288,7 @@ Navigate to **[Analytics > Cowork](https://claude.ai/analytics/cowork)** to view 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=1785260700&signature=fcb7ce75713147c72186aa98eab8e540206928498aa668ddd02f0fa40a15387a&req=diUkFcB%2Bm4JdUfMW1HO4zfveB6rHeuvdWGUKUw6QS49klXoGZt8lzxN1UAgV%0ATx5%2B49OQOvkURXNzxHA%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2533906328/1f5cd0a57def40676410f8f379b4/member-usage-30d-model.png?expires=1785299400&signature=934f7766005b8584d20b8098f021249ae0bf8024ff97d72d07c49509efca8e43&req=diUkFcB%2Bm4JdUfMW1HO4zfveB6rHdeLeWGUKUw6QS4%2BjigUUp1j1I91kvSg%2F%0Awt2LP8AEnfTJthbQrIY%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 c41481d03..fee5f4f10 100644 --- a/content/support/12902446-claude-in-chrome-permissions-guide.md +++ b/content/support/12902446-claude-in-chrome-permissions-guide.md @@ -22,7 +22,7 @@ Claude in Chrome uses a multi-layered permission system to give you control over Choose "Manually approve" to have Claude create a plan from your prompt, which you can approve and allow Claude to execute. The plan will specify 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=1785260700&signature=4194e27a2592ab999e34d93a4df55056989ace291c9110516e9dec25ed79af81&req=dSgjFcp8nYZdXvMW1HO4zYqyZcdP%2BoKwgN0ADj5oqFDrUEn%2FuCPLP%2BWG45U2%0AWLjBf8Wpagv0wfNd87o%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1843320727/8d1c859ae9b8e0cdb536d024bf40/9bc3d239-8eb6-4bae-a032-a236f88ee606?expires=1785299400&signature=23d5616cb93f2ad3168d7c09abeeec6b04491b655b6fcc238d3bd5de89ef590a&req=dSgjFcp8nYZdXvMW1HO4zYqyZcdP9YuzgN0ADj5oqFAOFt3JqBgYJfz1DB0f%0AZulq51gtr4M3ehxxULg%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. @@ -50,7 +50,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 **Permission 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/1847222875/162eb012ebe473ed2b852b97e223/0209db51-6057-4ec4-a9b7-8358287d46a3?expires=1785260700&signature=0f61a69fbb795e65fcb5992e1cbd623fc4be59036da3e18f5efbfc15d38f064c&req=dSgjEct8n4lYXPMW1HO4zeoCY8MppXR4JCxYSFHKWIgmElKOfkOVXHQCAZ5S%0AzKuzQX3BTVI7rdaVy9I%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1847222875/162eb012ebe473ed2b852b97e223/0209db51-6057-4ec4-a9b7-8358287d46a3?expires=1785299400&signature=94c8ea61cf609c581af11fd7bbc049fefb152e98f88101bf307a571351c09a58&req=dSgjEct8n4lYXPMW1HO4zeoCY8Mpqn17JCxYSFHKWIjvGKbFCJG9R0E1I%2B19%0AD%2FEOiLjF1YtO0W67Ewc%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 a81152c2f..1f8b26e6d 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=1785260700&signature=857d5a6803fdef5d65794931c4911bf323919ae695dab680c931e17e495a2d2f&req=dSklFMh6mINaWvMW1HO4zRZTxF%2FDvcvUKAqLF4ERnlWPPdq3tcVuM4N%2BZj0L%0A6WDKCd2g6Y%2B1V%2BTQPA0%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1922145253/f2e3d4e0fe43a2ea07e89244764c/image.png?expires=1785299400&signature=f844797ffe8ae43df9f4ed5710f99d4395681165b73b442c8510f782afd82ab9&req=dSklFMh6mINaWvMW1HO4zRZTxF%2FDssLXKAqLF4ERnlUckczMXJmzVrU1xMh1%0AkOZitaXJawi3LpFB3mQ%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 f09bee984..ca49d3f9d 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=1785260700&signature=b314c8446d6028ff94d0296f1ccc9e2c45764111b29f2b4469d4f6c2ebff90cc&req=diQuHsF6noNXW%2FMW1HO4zSdmHnk7%2FMSLe3H0OpmIzWFa5JY6ZSZCpoDnTkwZ%0AQvIR%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2498843282/561d5ceb1c3a5df75bdfee8bfc3f/d2491145-362d-490b-bdcf-66a0a7656ddc?expires=1785299400&signature=e35323387d8f9a5e9eb505209298b5d2bf2bc0efad9a9fd3525846b66367ab0a&req=diQuHsF6noNXW%2FMW1HO4zSdmHnk7882Ie3H0OpmIzWHZvtn3VrX6dYMYUxGj%0AiHFl%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=1785260700&signature=391a7b2637a7037bbb14e314b4a809abc4310ddc95e52af51b4614ca8f17eede&req=diAjEcl6n4dcWfMW1HO4zWHctRiVkdGtyoyXAW0OlXoNH5kEGVcb67N6NETK%0APq9D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2047042630/0617a562cd28a7ff0e607d66a30b/6bd08e1d-2b65-40ab-bc79-a257153854c1?expires=1785299400&signature=d92055425c4c60806c0e63decf1c81966a134d2e66b0fa00b17c754ad05c700e&req=diAjEcl6n4dcWfMW1HO4zWHctRiVntiuyoyXAW0OlXpUyhm44O0rYz4cFygR%0AnkIJ%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 with **Host/Name** set to `@` (the root of your domain) and **Value** set to the copied string. Add it alongside any existing TXT records; don't replace them. The value is case-sensitive, so paste it exactly. @@ -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=1785260700&signature=bf0e426b3b109ed952de185bc1f17b75f1ebd1c945f3a3c0f430806db5baef15&req=diAjEcl6mYVWX%2FMW1HO4zVjmWSwCaXS%2BPM2D8Zcdgrg3Ez8rEplt%2B8OZphH8%0AZV5s5jQlfurWGUE19xE%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2047044496/b8df54a0331784cc9ae8f00112aa/bf9609c1-dc93-4665-a066-4cae2fe4b002?expires=1785299400&signature=8bb8f45cc24c513d1b64fed963178ecf41a0056b2707f17eb014064b0b801627&req=diAjEcl6mYVWX%2FMW1HO4zVjmWSwCZn29PM2D8ZcdgrhrFlL3lhVJHSMM6T3w%0A8NkEd%2F9a%2FBgGP7DPpCQ%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=1785260700&signature=de11b27a15d3624b4cdef4cd505bdcf00e10f6f1ca7659817e35bfaeed396c91&req=diMmFM93nYNfWfMW1HO4zdAICwqjBHwNItXtKivx6ZHJOPj1%2Fml8bhPzzkA%2F%0AIBIjCdds6pjaHFe%2BhGY%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2312690200/bd2403586d4f6651ccd79e2a45af/b9f8d7ce-0def-49d9-bfb2-3a14352d7214?expires=1785299400&signature=b6a038ac7b042145bcdc0b3c10fd0630dfc8806de2ce2faad2c3ff5b6b54c25e&req=diMmFM93nYNfWfMW1HO4zdAICwqjC3UOItXtKivx6ZFGSUhIbdG5ESzHqLs%2F%0A%2BqhwpKcKkDkXK%2BA5ThM%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 985041b8e..3c519cd00 100644 --- a/content/support/13133195-set-up-jit-or-scim-provisioning.md +++ b/content/support/13133195-set-up-jit-or-scim-provisioning.md @@ -34,7 +34,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=1785260700&signature=90de43f8b3e5aaa62513537313c0ca3e3a7cc728fdc06f6c2cab3ff8f7fa0034&req=diMmFM5%2Bm4FWUPMW1HO4zXBDQ65WC1pxxFMG%2BIEvQSdEvL3LvQrl5id3YOV%2F%0A2HINbn5o9CMc%2Fz%2F3bds%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2312706099/35d5d3ec149880a96bb7acec59f6/a4cfce55-86bf-40b0-b455-c8f412d48e9e?expires=1785299400&signature=9ab1e09081da264caa95c492c5edf9018415b264d5ad8c4abeefc874a5ce8242&req=diMmFM5%2Bm4FWUPMW1HO4zXBDQ65WBFNyxFMG%2BIEvQSfg0M1OXGltotl9r4ry%0Ag61gQRzZAkj9CZH3z70%3D%0A) ### Available roles and seat tiers @@ -118,7 +118,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=1785260700&signature=c32fc0ece311f62fa1a7ed72348466ebfec564f5ee870ec2f06874dc7988d8b6&req=diMmFM5%2FmYdcXPMW1HO4zeBEbsDakfpPyb72rapuHpPGcG7QwxVViXA7%2BUdl%0AR930%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2312714635/b57870b51e6511c8293637bceee2/da1ceabc-b6bc-451b-9cda-24ff6aa90d02?expires=1785299400&signature=1c0a0dad2bdd2c7c88a794ebac5cffe142979685f05435495e96de385ea7e0b6&req=diMmFM5%2FmYdcXPMW1HO4zeBEbsDanvNMyb72rapuHpNLATW6QEHnKkSxuomq%0Alw4q%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. @@ -170,7 +170,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=1785260700&signature=d3187b986b4bd38b80a167fb416abb7d7911cdbf6e349baa1c04ac018f472a11&req=diMmFM5%2FmoVdWPMW1HO4zZ9La1ivH8rF5hujYvMis4feopVz1DpfuqDQcz7R%0AI%2F0Z%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2312717421/c97fce49ad17d4660880a05fbaaf/59fbfa2a-1072-4662-8ca5-102970d5a795?expires=1785299400&signature=dd632c513dd349ea55c7a58bceba48f10bdd7505bda8bfdb7e059671069ac2fe&req=diMmFM5%2FmoVdWPMW1HO4zZ9La1ivEMPG5hujYvMis4cyHkYe3A0rs%2FiE81ZF%0Aq1oc%0A) ### I lost Admin/Owner access after enabling group mappings diff --git a/content/support/13163631-configuring-session-security-settings.md b/content/support/13163631-configuring-session-security-settings.md index 94bba4b3e..b4e039f5d 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=1785260700&signature=e99aa42b97bce4ee37d11c56dc7dfab4d34d7265f05eee64ea9ba83ed4cb8083&req=dSgvHs14lIVcX%2FMW1HO4zQNx6%2BclRVpXg%2F6XaftFnjzD%2F7R%2BNRyemGJG2zPX%0AmniWZq4AL7sR658%2BCt4%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1888469436/1725e63ea1a2615948faecf4ec73/9bd276a1-7329-414d-87a1-d04dac93fff7?expires=1785299400&signature=f25e5a11d4b83e3bac4f0d7683a5d735d2d35b1d60db99b4bd76f9e4372be8e9&req=dSgvHs14lIVcX%2FMW1HO4zQNx6%2BclSlNUg%2F6XaftFnjy5I%2B38oYwSag2NatF%2B%0A3AgGln7zJMW3Uxq46FE%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=1785260700&signature=581524e242c66c7f8081a6512c11ea0d2648fce03a8b3e67c20e4bdab3136459&req=dSgvHs14lIVcXPMW1HO4zWzx2Lw0IX8mXZ5D7eVpMtcdc3C%2Fa31bbUFXwaQa%0AD3y12OCK%2FLZHv%2FWutAc%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1888469435/7a766bbe02e61c7d8f05deb5b8f0/b0bda400-47c6-43dd-9907-131ebe180b36?expires=1785299400&signature=34fdf75763d72dbeacc5d1ba71e66fd5068e2b3006b89687dd465f722449cb64&req=dSgvHs14lIVcXPMW1HO4zWzx2Lw0LnYlXZ5D7eVpMtfejjv1jQMJP0lA3zAk%0APzVz4XaD%2BFjP6jLF1MQ%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=1785260700&signature=a1c36f98c601ca10534f8a50b196aa9ef61f2f031043a6cc37bd514570205567&req=dSgvHs14lIVcXvMW1HO4zZ7mWs2Z4TmkA00cbyPOLDXSIgUHmVDGB%2Fpdeipv%0AaxVvnZvx%2B%2BnAs4lwN%2Bw%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1888469437/46ac5bc55484ca01556d87a5ade7/b01a7651-ad65-4b32-93ff-16dbc9ca97c0?expires=1785299400&signature=1139656e41aab5364ec208c93c7cdcf65a731e65c14ac85bd322dd5fcf2d9158&req=dSgvHs14lIVcXvMW1HO4zZ7mWs2Z7jCnA00cbyPOLDVJ4W%2BYq57bxFnw%2B4Yl%0Ac5Am9erZ5P8Z3cGmS0w%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 8b9d4838f..659d8396a 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=1785260700&signature=8781276e3d6f6f3f3aa6f76c09737068089937f6a126a87bf97b4d176bf08f13&req=dSguFct%2Fm4lfXfMW1HO4zXg5BoeO5RKzzWhrqpWiTMnTwPWDBEMY1cxC0cD0%0Axr6s4e18p0urDQbAwWk%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1893216804/f2209c3ec6cf4fc2e803d13bbc9d/40520c9e-ff82-4a7c-adca-5a064fe18d8c?expires=1785299400&signature=9ed4c1e891bda525515b9b0aab34f4faf50b3f6feb122890247be694b676975a&req=dSguFct%2Fm4lfXfMW1HO4zXg5BoeO6huwzWhrqpWiTMnduVyn2vze7vDSut9j%0A9IHVHVFTv5Gp%2BvDLIdA%3D%0A) ## Continue with Google diff --git a/content/support/13325567-account-management-faqs.md b/content/support/13325567-account-management-faqs.md index b314ec40f..3e70baf26 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=1785260700&signature=1b445c929f3edd937fd393d68bd32bc0762b080f35f4963de4b67284cc13f2e7&req=diAiFcF5nolaW%2FMW1HO4zUrhFu6abwgdkeFUnrkrQZhA2KbU9MsfiBwYzXWU%0AgXXKUeypbn%2FzknQtSm4%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2053873852/1cbccea3b7067e03205f2ff8546b/CleanShot+2026-02-11+at+11_16_07%402x.png?expires=1785299400&signature=b1365c6da4cf9cc2df41a24134aeb4f58f6da3c1c03209e6333b9f42d52cde6b&req=diAiFcF5nolaW%2FMW1HO4zUrhFu6aYAEekeFUnrkrQZi1r282mC%2FCRJJiwO4Y%0A0vq6zwxADYO020nvKvI%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 dfd3d9492..94a681c5e 100644 --- a/content/support/13345190-get-started-with-claude-cowork.md +++ b/content/support/13345190-get-started-with-claude-cowork.md @@ -176,7 +176,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=1785260700&signature=3a4246daea1d639e3154d84697051063d4d7f3b2d851e68fbaeaea39327066b9&req=diUlE8B8m4lYXfMW1HO4zcDl6t3uMFG38iWjaktE942O%2Bv1d05vgmmO46p8P%0AqEETZKA5eJnfst%2Bqv9k%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2525926874/15324ac4155d7802272e8bdef04b/ec66cd09-a4db-4f1d-8f30-226c9d126333?expires=1785299400&signature=719b7981254e7945a5d9f3348af46d5aaa5d13424f107bff4936c0293a146f34&req=diUlE8B8m4lYXfMW1HO4zcDl6t3uP1i08iWjaktE943sl3cA6FzzmK%2BYVutz%0A8AOwD7HvAEb%2BgYTTlBU%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 de882bd3f..00f73e081 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=1785260700&signature=bd578cef397fa0959bbca922184420678714e29640bb661a38248e566524668b&req=dSklFMx5lIBfWPMW1HO4zRpFC80GSxJxO9Kw38RlAYLtvMIaeA0WQlQ2sfJj%0AnPs7BS3Sd1x0Is036iE%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=1785299400&signature=21dc0df50099a1ee43189a0f695a309525807b95d7dc2bd258924c3ba0847eb4&req=dSklFMx5lIBfWPMW1HO4zRpFC80GRBtyO9Kw38RlAYIYeUc58ViCKGzMPtbs%0AiMrIZ7W1AD6oXUKyPRQ%3D%0A) \ No newline at end of file diff --git a/content/support/13371040-logging-in-to-your-console-account.md b/content/support/13371040-logging-in-to-your-console-account.md index bc9c8bb2c..75b383fd9 100644 --- a/content/support/13371040-logging-in-to-your-console-account.md +++ b/content/support/13371040-logging-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=1785260700&signature=fb17fa34fd15e3924452fe489d68b4dd5ad99b37e68a105528a78ee415753dc8&req=dSkkE8l8m4dbX%2FMW1HO4zcrI54zupoAK8vUNcPt4%2B71MIumtPHtMBLcsEkw6%0ALBAZgGo8nQuxVeWimzs%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1935026646/d90d1613a3dbe763fef5abb96e3c/image.png?expires=1785299400&signature=4a5db5b18dfe3a0e458778dd11c24a00a64684b245d190ad510217b4e794cbca&req=dSkkE8l8m4dbX%2FMW1HO4zcrI54zuqYkJ8vUNcPt4%2B73yK%2Fd7C%2FI%2B2%2FnBPjD9%0ABX%2FVZUoIXnX8YIIpqIw%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 b53003a73..d009014f9 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=1785260700&signature=e05aabb445759d3d04b1c7238305902b8e99f699adb01ca2d9a5b9baf75c05f9&req=diAjFsx6mYhdXvMW1HO4zXlB7Tu40xiPdgndksVD5R2J9fN%2BdNkwLq4nTqsd%0AueY4CrC%2FlszbiLds8MY%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2040544927/3a9c695b24df387ecdd766ad308c/8be9f393-dcb0-4ff8-89e8-5fa47bedaa38?expires=1785299400&signature=7b2da901f57f25bea842b2c9040ca658c2f91d866871b7f9a7d53c2a9d62f6d0&req=diAjFsx6mYhdXvMW1HO4zXlB7Tu43BGMdgndksVD5R0kSjwWO5HwqkMQ5pWa%0APXVCKMUJaiNW8%2FTjeew%3D%0A) Weather is powered by Google Maps (<https://policies.google.com/privacy>). @@ -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=1785260700&signature=744920359c60d83bc19fb33ed89d5134d8a0ad5f10e130f989d174b3023e8b64&req=diAjFsx6mYhdUPMW1HO4zUQpe7UX1FSQrIPm%2FImZVg2SLGegFF5P5Tn23JPi%0AKY0fPUoOkjRkEWdRan0%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2040544929/12f4c51eda7779d65d3ea2c7ab16/d0f4a314-cff8-421a-b401-10c2bf50374e?expires=1785299400&signature=a131f247521032c2ef8572d7b363a1aed253bbb37883eb23b6461ee1105feb0b&req=diAjFsx6mYhdUPMW1HO4zUQpe7UX212TrIPm%2FImZVg2o2Gg77wwCZJW5Yq7N%0AWSM0JYmEeko6brwFhvk%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=1785260700&signature=b2550dad86d52aa5919cf1f35723b57cc1beea98671313630d63999b37c5a701&req=diAjFsx6mYhcWfMW1HO4zWmF5%2FC8bx6lx4wz0C7CTAI2QcXy9RrqLQQplmdG%0AVXDmnUG5gygFu824i2Q%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2040544930/9ad066e137d11e4b559b0217e12d/9bf30d2d-1715-42b3-9da5-2a9298f41f08?expires=1785299400&signature=1c7f9c220f3dd4f5126cab09e2d60aec3f101b87946f15c9af8eac2781449f7d&req=diAjFsx6mYhcWfMW1HO4zWmF5%2FC8YBemx4wz0C7CTAIkvEq4VyhqmXmQESWI%0AMjB%2Fk5kXnVgdrD2TBlQ%3D%0A) --- diff --git a/content/support/13756069-public-sector-faqs.md b/content/support/13756069-public-sector-faqs.md index 72055eb18..fd6edcffa 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=1785260700&signature=ed4c1f54edcfb2b968c0c94b692e44418d99364c5d98a05dfe700587f962b053&req=diEuEc5%2FmoBZWPMW1HO4zU94LlwnG9032WxtU42UVC3uDC6y2mZf0drDTvXa%0AxfOpxRlBy%2FNh0JF9N4g%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2197717161/79965a24090029e9e58c727c3c24/pubsec-product-matrix_png+%281%29.jpg?expires=1785299400&signature=21d392ea95c1c8521af8285f7c55d6da188c193a2f43b51b3c598728f8b1a0a4&req=diEuEc5%2FmoBZWPMW1HO4zU94LlwnFNQ02WxtU42UVC1vC0IpMgi6FU9gKXQy%0ASFJ39IQqlu1tcaclkEU%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 c716cdb6c..3f0393180 100644 --- a/content/support/13837433-manage-plugins-for-your-organization.md +++ b/content/support/13837433-manage-plugins-for-your-organization.md @@ -106,7 +106,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=1785260700&signature=e9c993e434546b640b79767a5946c32fc70b88eca3412038ed1ded55b5a2007a&req=diEuFct%2BnYFeXPMW1HO4zUYv5tj7x38TRDH%2FtUo5ov6TWXyWGMhl4tQw8%2FP5%0APyzf9ocIQE%2FMZVTjeHI%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2193200015/a239033a9ab19fbd39f1a0d9edce/CleanShot+2026-03-23+at+11_41_31%402x.png?expires=1785299400&signature=8ff67e467b4523dca60642187def5ca36e40ae036a78907c3485e14e315fdb63&req=diEuFct%2BnYFeXPMW1HO4zUYv5tj7yHYQRDH%2FtUo5ov5z1Jv9BD1nzt%2FXHfvo%0A668CwxVpJQ1RpKmDtTY%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 1736c6b80..c82aa14ca 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 or received one from a colleague. 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=1785260700&signature=30fc961f1359e5131cca6cf77ee8199b587b32d6d671e15c8946a8f0109b9836&req=diEnFs1%2BlINeWPMW1HO4zZF3IhDfNfVSxakFVfq5WwzpqVLDuFBPlMFaeUgx%0AlOUHaKRTGS6lUPfj040%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2100409211/fc01614dde1a616fa31ffaa9cb04/47bacf5b-a810-45b5-a468-9769f1a58ef8?expires=1785299400&signature=0ab126364c4d4dd690b8d1e4a97a0fdf3fb621565172bee4204e98aecdb33019&req=diEnFs1%2BlINeWPMW1HO4zZF3IhDfOvxRxakFVfq5Wwxq3Xxp1H4zqxKnlImX%0AvIoeET0lROXL%2F%2FcimFM%3D%0A) --- @@ -48,7 +48,7 @@ You can also upload a custom plugin file if you built one yourself or received o 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=1785260700&signature=8847b15f2990426f157e065ecba98e886f324f9eba8d87ae5178850e60bfdeba&req=diEiEcp3m4lbXfMW1HO4zf4NBPP%2BhUCTmKUxugP2BQu7dL4NPv6v6vsc0u8I%0AD8Z3s0JZVaLsazNztjA%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2157396844/4a790e10f5b88df770783df1d7e9/image.png?expires=1785299400&signature=a80dedf28b8883b12c52d482b87b8525aa33beab6b283fc1ee95517e8972a240&req=diEiEcp3m4lbXfMW1HO4zf4NBPP%2BikmQmKUxugP2BQtcoloZuFLaALmfWGKi%0AQU34egsqk7edUIS%2FGf0%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 f86f2c46a..ddf40b38b 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=1785260700&signature=d15fe0d610c6b9d731ecd832b79a327463e1f0c47dfdf1a326ee54ca38361dac&req=diEnEsl2mIJWUPMW1HO4zeLJBkDm%2BeqAPx%2FSrZI7l8wwcEx4w50qqqFVN%2FMx%0A5deU%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2104085399/4dda7e6f76026fd827db0b9323a9/f20635bf-15e7-4978-a213-5b9f67e9fb9a?expires=1785299400&signature=a9ce8eb9237bd844607502cce062a88c8b02a38b550edd956cd1c30b2ec8cff3&req=diEnEsl2mIJWUPMW1HO4zeLJBkDm9uODPx%2FSrZI7l8xck9WU8%2FjACA%2BZOOaY%0AtUT9%0A) 7. Claude will create and schedule your task, and it will be added to the **Scheduled tasks** page. diff --git a/content/support/13892150-work-across-microsoft-365-apps.md b/content/support/13892150-work-across-microsoft-365-apps.md index ace2a7771..4400b1690 100644 --- a/content/support/13892150-work-across-microsoft-365-apps.md +++ b/content/support/13892150-work-across-microsoft-365-apps.md @@ -34,13 +34,13 @@ Open each app and activate the add-in at least once before using the cross-app f Go to **Settings** in each of the add-ins and toggle **Let Claude work across files** on: -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2152216540/23e9f22eca1109ec09f2c6138191/2ef697a8-3a60-4193-bbd7-639ed91b20e9?expires=1785260700&signature=f2542cbdde4269047f87e46e0be16b629661bf48fe6a57dbf7b1d98a60e0d545&req=diEiFMt%2Fm4RbWfMW1HO4ze%2BVVHH3Vg5YQEr1GSm7Lk1y2k65QRfXWUNeLhxJ%0AD2jJeNIgQUv29h4roxw%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2152216540/23e9f22eca1109ec09f2c6138191/2ef697a8-3a60-4193-bbd7-639ed91b20e9?expires=1785299400&signature=83722710619b148ba50659448534d4ef5be8dbb07783904fb1ce2a76528c5b76&req=diEiFMt%2Fm4RbWfMW1HO4ze%2BVVHH3WQdbQEr1GSm7Lk20ZRdQTxvLDWIrQ4bP%0AY1yXzsSwLsZR9%2BL8h%2Fs%3D%0A) **Note:** This setting is default on for Pro and Max plans and default off for Team and Enterprise plans. You'll see connected file indicators when Excel, PowerPoint, Word, or Outlook files are linked to your session: -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2152215013/db0cfd2aa4034975480d82218aad/8f11dc16-2173-4b34-a05a-e31a53b58cc2?expires=1785260700&signature=4c9676223c8afc7eeb928840ae950192c802d3a26f55a702338d9dba7a3d3009&req=diEiFMt%2FmIFeWvMW1HO4zZtV3mi03dJmGgi4PNaz7vUSMqDpkGBqQgFL8Asl%0A%2Bw49%2F1vc1aHJBfHL7q0%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2152215013/db0cfd2aa4034975480d82218aad/8f11dc16-2173-4b34-a05a-e31a53b58cc2?expires=1785299400&signature=d816385486ecfe5452b80853d04a1abc15bf0f58516178ab551c32b9ba957937&req=diEiFMt%2FmIFeWvMW1HO4zZtV3mi00ttlGgi4PNaz7vUTipneiQ8gtMRTR61f%0AxvDZ7Yy3y7P9nfNb7Is%3D%0A) --- diff --git a/content/support/13930458-set-up-role-based-permissions-on-enterprise-plans.md b/content/support/13930458-set-up-role-based-permissions-on-enterprise-plans.md index a88cf89e6..b98500e8b 100644 --- a/content/support/13930458-set-up-role-based-permissions-on-enterprise-plans.md +++ b/content/support/13930458-set-up-role-based-permissions-on-enterprise-plans.md @@ -66,7 +66,7 @@ Create roles that delegate parts of administration without granting the Owner ro 4. For each team or department, decide which features they need access to. -![Image of the Organization settings page in Claude, with a box around the People section which contains three options: Members, Groups, and Roles.](https://downloads.intercomcdn.com/i/o/lupk8zyo/2484535492/d17b343f54f754bb3af73fe880a9/Org+settings+-+People.png?expires=1785260700&signature=96267a634f0177792876b1717cb17b603d4f4989455f5ec4dc61d82e9571fb6b&req=diQvEsx9mIVWW%2FMW1HO4zVA%2FMt%2BSKY2tvDbmWeIt%2FcQDs16cPeL6uZ1rzB9t%0AR43eLjsDQLuHejnQNEU%3D%0A) +![Image of the Organization settings page in Claude, with a box around the People section which contains three options: Members, Groups, and Roles.](https://downloads.intercomcdn.com/i/o/lupk8zyo/2484535492/d17b343f54f754bb3af73fe880a9/Org+settings+-+People.png?expires=1785299400&signature=3ebd9d460ddacaae68749091d169b7170b0db8a7bc45696f111e2511e2bbc2ea&req=diQvEsx9mIVWW%2FMW1HO4zVA%2FMt%2BSJoSuvDbmWeIt%2FcTUpSBHstxma2NMuB7m%0A0yVYoGLuovoDtXLjCLw%3D%0A) Remember: any feature you want to control per-group must be **enabled** at the organization level. If a feature is toggled off at the organization level, no custom role can grant access to it. @@ -84,7 +84,7 @@ Create your custom roles before enabling any features or migrating members. This 3. Name the role and toggle the appropriate capabilities on the **Capabilities** tab, or choose "All capabilities" or "All generally available" to grant everything at once: -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2539844315/2e98adc9b24a95bf64b7ef759c94/a0c6bd31-327c-48b8-9ece-1b985eafccec?expires=1785260700&signature=68ca2ce0103a6f362ca53ef2e7f9fc558cd4dd2f6e2b352fdc1dd634cdf2fed0&req=diUkH8F6mYJeXPMW1HO4zfzK2ObY4Nk9Jsssa0E%2FK2YhUN9pbEJRiviHy%2FnW%0AF9V6%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2539844315/2e98adc9b24a95bf64b7ef759c94/a0c6bd31-327c-48b8-9ece-1b985eafccec?expires=1785299400&signature=d54a62b4e8d23e85ea0e6647efb9b325af424cf9afa1f6bcdd3213173d09c2b0&req=diUkH8F6mYJeXPMW1HO4zfzK2ObY79A%2BJsssa0E%2FK2bfxKsHk0kt3x5pYiHR%0A8Yxx%0A) 4. On the **Permissions** tab, set admin permissions for the role. See **Step 3**. @@ -114,7 +114,7 @@ Set admin permissions on each role to delegate access to admin settings, like bi 3. Select the **Permissions** tab, between **Capabilities** and **Connectors**. -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2484538453/66f52673b2d1fc7b0d4b48ed4ff6/fbf992ce-c4a1-402e-80cd-0c8449f916bd?expires=1785260700&signature=fa0ab8dc75994229857c20985595f1b0ef1c9ef4420e52d64a0d70a74ddf8a48&req=diQvEsx9lYVaWvMW1HO4za6MibelWkKAJQR8u%2B9qQFk4inThut0feFMsI%2BMt%0ACWXpnRqGdvw6QoscyCY%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2484538453/66f52673b2d1fc7b0d4b48ed4ff6/fbf992ce-c4a1-402e-80cd-0c8449f916bd?expires=1785299400&signature=d51d2cc4b30448914d9569a5c7b9bf1af3543b6703621450e9fd1e1a84f8efcb&req=diQvEsx9lYVaWvMW1HO4za6MibelVUuDJQR8u%2B9qQFkC4Sopqtj9IpNGBspw%0ARPJ1Wt3F2EvWo7rHAok%3D%0A) ### **Set admin permissions** @@ -154,7 +154,7 @@ Set connector permissions on each role to control which connectors, and which to The default settings for new roles are permissive. When creating or modifying a role, confirm the settings on each tab to avoid granting unintended permissions. -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2484539079/2325428311fffccd6951d5f2dc46/e4326a16-d44b-4e5d-9ecd-5c3dbbc7651a?expires=1785260700&signature=1f0c925d8da62fec15f5fc8f9cb78a76916d315743f0d6675a9c3e077ef65352&req=diQvEsx9lIFYUPMW1HO4zZGDXFyhDvZ1HNJQDqL6ZaB39nKSISWgYU7FmcZ9%0A0oHuGzFwWTZsHwFnjAI%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2484539079/2325428311fffccd6951d5f2dc46/e4326a16-d44b-4e5d-9ecd-5c3dbbc7651a?expires=1785299400&signature=29471cd8b2ca8b23406c2888fadb9a99a7568bd756fd1fe8ce72c44fc1b830fc&req=diQvEsx9lIFYUPMW1HO4zZGDXFyhAf92HNJQDqL6ZaAtGlqkKpPsn8aBNCsh%0A5B%2BAiv6X7B%2BqIE0rzqE%3D%0A) ### Set connector-level permissions @@ -170,7 +170,7 @@ The **Connectors** tab lists an **All connectors** row at the top, followed by e Choosing “Always allow,” “Needs approval,” or “Blocked” applies that level to every tool on the connector. The **All connectors** row works the same way one level up: it sets a baseline for every connector at once, including any connector you add later. Use it to set a role’s default, then override individual connectors. -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2484540660/36fd30e963d7881bbff5b85bdf32/cc91e30c-af8c-4271-bff4-b34393d6122e?expires=1785260700&signature=28d47bcf2568e986690b009e926842c69ac7694578f11d660518615cb0b5f868&req=diQvEsx6nYdZWfMW1HO4za3dLAOF2oYv%2B48W%2BGCIbmca%2BmnOjiRF6TCYoQ%2F4%0AGThC%2BzcWOIaQ5Gnpuog%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2484540660/36fd30e963d7881bbff5b85bdf32/cc91e30c-af8c-4271-bff4-b34393d6122e?expires=1785299400&signature=79898d6df2b9ce58fcaecc8bcd631ab365b9660229f8a5bf6769aa003ad59d38&req=diQvEsx6nYdZWfMW1HO4za3dLAOF1Y8s%2B48W%2BGCIbmfDla1QVNatA2GdaFNT%0A%2FHf4U%2FdP45FLfTnnBzM%3D%0A) ### Set per-tool permissions @@ -178,7 +178,7 @@ Set a connector to **Custom** to reveal its tools as individual rows. Each tool Per-tool permissions let a role reach part of a connector. For example, with Jira set to **Custom**, its `search_issues` tool set to “Needs approval,” and every other Jira tool set to “Blocked,” members with the role can search Jira but nothing else. Claude only sees the tools you’ve granted, so asking it to create a ticket returns “I don’t have a tool for that” rather than an error. -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2484553274/3c0781dc9c7704a7b67d4858b88b/Screenshot+2026-06-17+at+4_28_45%E2%80%AFPM.png?expires=1785260700&signature=db8c036e90d6f03093eac24f372fc69dd63db5ead389bcd178d0c3c12bc716ed&req=diQvEsx7noNYXfMW1HO4zXcI%2BoJCAt9k1VjQ9K3ENRtNTKP58OmMHGqP0ARN%0Ais9azUMimhxtHs0d30g%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2484553274/3c0781dc9c7704a7b67d4858b88b/Screenshot+2026-06-17+at+4_28_45%E2%80%AFPM.png?expires=1785299400&signature=55608cdfa39ecce5bf0aee1be2aaa2487570a8f35cc88c83e3711adb67a1ab52&req=diQvEsx7noNYXfMW1HO4zXcI%2BoJCDdZn1VjQ9K3ENRvS%2FH1Mt5DwxqzDALOL%0AM8Elp5xuds0VywGnDAs%3D%0A) ### Review cross-role conflicts @@ -186,7 +186,7 @@ Because connector permissions are additive across roles, blocking a connector in If you have unsaved edits when you open a linked role, you’re asked to discard them first. -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2484556183/b644bbfba5350ae2a460117f23e3/Screenshot+2026-06-17+at+4_31_03%E2%80%AFPM.png?expires=1785260700&signature=e2619e40d651f6086e0d3aa923f78bcf876db64de23ce0ef8a10f33cda94c7d1&req=diQvEsx7m4BXWvMW1HO4zX8ytugH59TQGc8KkqwXsZ5AgagVEClmV%2FGFqek1%0ACikv1pyteXKsZF3%2BP5w%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2484556183/b644bbfba5350ae2a460117f23e3/Screenshot+2026-06-17+at+4_31_03%E2%80%AFPM.png?expires=1785299400&signature=5c2420d4377a66699769c4cde3a1f6fc6652dbd4b701ad8a9d43ea84ac925a42&req=diQvEsx7m4BXWvMW1HO4zX8ytugH6N3TGc8KkqwXsZ4bl%2BBFZ%2FVEcgY1Qt0T%0AGnSfQrU3ErsDfsOjNcE%3D%0A) ### Verify enforcement @@ -236,13 +236,13 @@ Verify model access after you've migrated members to "Custom" roles. See **Step 4. Assign each group to the custom roles you created in step 2. -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2260371973/b503c99ef71d8a89b7aff606511b/b1afd593-3b23-4fa9-8b9b-ee6beaf74fd7?expires=1785260700&signature=02f4743d3e3cb01330b1c6e8ad558c3b38055f4f9423b995c8bfab476713d704&req=diIhFsp5nIhYWvMW1HO4zdMu8WV0HAltKwlCydrbfL59g4yENTPdClfzzAuV%0AQ%2FyukK8q91dwAvmvSHU%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2260371973/b503c99ef71d8a89b7aff606511b/b1afd593-3b23-4fa9-8b9b-ee6beaf74fd7?expires=1785299400&signature=812219a3733976522fb03c7af6c6fa38e750bc4c091f2042b365370651b628de&req=diIhFsp5nIhYWvMW1HO4zdMu8WV0EwBuKwlCydrbfL4KeMFRGrP%2B3v5fVX0w%0AIRYOgplCe0A3mbSXq3w%3D%0A) -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2260372813/83ccc4784bdfc8600101bc42ec4b/6e7456ac-9887-4e04-b757-3972110fbdce?expires=1785260700&signature=277e480272ed34a7a1deeeae5d764ad92f7ac46ea0f556b4efdc07d8c2d1f6ca&req=diIhFsp5n4leWvMW1HO4zQetnyZVYq%2F%2FczQdKdGFNseRp7wGCIG52Hcz%2BXA2%0AP6hdDBIit6BOpsuZx%2Bc%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2260372813/83ccc4784bdfc8600101bc42ec4b/6e7456ac-9887-4e04-b757-3972110fbdce?expires=1785299400&signature=a3ae26aedd922bf649f7e33d3d0abf9af2073e78711bbb22a7e81577e4839f6a&req=diIhFsp5n4leWvMW1HO4zQetnyZVbab8czQdKdGFNsdg1f%2BCz0hIh6TaB2H3%0A%2B1yk2GLS4ZL8gup%2BYVc%3D%0A) If you use SCIM directory sync, you can sync groups from your identity provider instead of creating them manually. For details on SCIM group sync, see **[Manage groups and group spend limits on Enterprise plans](https://support.claude.com/en/articles/13799932-manage-groups-and-group-spend-limits-on-enterprise-plans)**. -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2260374677/5f9d8febb8ae25153a94d0b827b9/c8314b27-96c1-4743-ae8b-25e511181837?expires=1785260700&signature=913948c045e4f53177fc78bcd01bfe2910f1909920b9ff9315f736f2bab184b9&req=diIhFsp5mYdYXvMW1HO4zXzl64p37judKYkQn0Dd8NW2Oy9JEYXKspzYn6Up%0AXOiaR7lAuTGPbRrEPE0%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2260374677/5f9d8febb8ae25153a94d0b827b9/c8314b27-96c1-4743-ae8b-25e511181837?expires=1785299400&signature=84e00a7217be69c6639a7cb81299ddb38b11ef97c3aac4bdf288d3c102345f87&req=diIhFsp5mYdYXvMW1HO4zXzl64p34TKeKYkQn0Dd8NWomdojGw%2BjQUlxrVMp%0Arxfzk2ee5GJICCxcH3o%3D%0A) **Multiple organizations under the same parent organization:** Groups are managed at the parent organization level and propagate to all child organizations. You may see members from other organizations listed in a group—this doesn't mean they have access to your organization. Custom roles assigned to a group only grant capabilities to members who are part of your specific organization. @@ -284,7 +284,7 @@ Use this path only if your organization already enabled group mappings for role 3. Save your changes. Members in those IdP groups are migrated to "Custom" roles on the next sync. -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2434934020/d154818947d8d84ebf1aec8d5462/image.png?expires=1785260700&signature=0d4ba33fb687b221d91c4c0db4632b89354ab9afc78b3fc4814930048b2a8508&req=diQkEsB9mYFdWfMW1HO4zQyCmErhT0VvSnpHYy0fFQuS%2F9W1nrQlj9NFH%2Fr7%0AWy%2F%2FWonyaq%2B7fGv6DaQ%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2434934020/d154818947d8d84ebf1aec8d5462/image.png?expires=1785299400&signature=1baade9726b4f198d804ecccd7be226355a5fd5af9fe8f377b7cf5cc7627bec8&req=diQkEsB9mYFdWfMW1HO4zQyCmErhQExsSnpHYy0fFQubpnMhTDG%2BsSKAHsGj%0AO6M8F4IuQqIm9FDDKgA%3D%0A) Members in IdP groups mapped to "Custom" roles follow the permissions of the custom roles assigned to their groups in Claude. Members in IdP groups mapped to User follow the organization-level capability settings. If a member is in groups across both mappings, "Custom" roles take precedence. @@ -300,11 +300,11 @@ Use this path if your organization hasn’t enabled group mappings. 3. Use the bulk assignment tool in the Members table to change the selected members' role to "Custom." -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2260377969/ba3b7ba08518f0a50e2a84f82655/bdf1aea3-2fe7-4f3c-868b-cc35ae8b7d1d?expires=1785260700&signature=f2128e4602a333cf2f3f0de101265927229e6a32f4556566dfe9690eecfb73b1&req=diIhFsp5mohZUPMW1HO4zYFuwIQgg8mLlPaXg%2F0URIk7cdW2TQXSmtpMQ%2Fok%0A%2BOeFy6gLZEHCq8fJFdI%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2260377969/ba3b7ba08518f0a50e2a84f82655/bdf1aea3-2fe7-4f3c-868b-cc35ae8b7d1d?expires=1785299400&signature=790b4ac35f4ad2e6bb9b4981832fe7e9b3b2e6167bd26f25bb923e918b40ab20&req=diIhFsp5mohZUPMW1HO4zYFuwIQgjMCIlPaXg%2F0URInVta8nVHvBOSzqAIy4%0AVSpXYuleI7Mn3r81yds%3D%0A) -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2260378309/abe25b6478c721a2f965b35361b7/beff124a-0a44-4f7f-97f8-391ce6e8c55b?expires=1785260700&signature=168257e96642e2cfaeb6e18e28a65094c4d5aa51ac760c612a17ff94918fd79e&req=diIhFsp5lYJfUPMW1HO4zRgyEF3eVenRZ8KPhClFzQkaLZ89MTv77CmSQOXy%0AttIfVipAxoQA9K8CjFw%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2260378309/abe25b6478c721a2f965b35361b7/beff124a-0a44-4f7f-97f8-391ce6e8c55b?expires=1785299400&signature=86cd307591b6b97b9dd837f44a68db252e7cfb0aa70da7536b100cd73b305c8a&req=diIhFsp5lYJfUPMW1HO4zRgyEF3eWuDSZ8KPhClFzQkAye1wSTxfx%2FkUgpyD%0AL5ec3p%2FOpAle6w2njns%3D%0A) -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2484560173/7abf3438fa3d65afa03c4a99d4d4/Screenshot+2026-06-17+at+4_34_49%E2%80%AFPM.png?expires=1785260700&signature=85a20f54309ab8b00a0e496c1457c05961733a7989bc5cec0e9657cdfc687f19&req=diQvEsx4nYBYWvMW1HO4zUXuwkt%2BLYNXiQnXWL6R1K%2BCijcaOM4Rnw74g26K%0A1atmIWqbhVBed6rv8NE%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2484560173/7abf3438fa3d65afa03c4a99d4d4/Screenshot+2026-06-17+at+4_34_49%E2%80%AFPM.png?expires=1785299400&signature=27aed79d890d2e1bf764a95288c8b27a10e0e152d2700eb7b5b63d8421323a1a&req=diQvEsx4nYBYWvMW1HO4zUXuwkt%2BIopUiQnXWL6R1K%2BO3AcEx880OaDtA6cA%0AQmgo8f%2FK6MU8ThOrkIA%3D%0A) We recommend migrating a pilot group first—one team or department—and verifying their access is correct before expanding to the rest of the organization. @@ -340,9 +340,9 @@ Enabling a feature at the organization level doesn't mean everyone gets it—cus Navigate to the “Usage” page to assign a per-user monthly spend limit to any group. -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2260386576/377ac052069ff5a35b3023f50d12/dface609-9d85-4ee1-8ed3-bfe019a2bd0a?expires=1785260700&signature=232c3f25ea16b78e34d8e87fb0662804c0dfb9802cce02daa1a702821a451d47&req=diIhFsp2m4RYX%2FMW1HO4zfvdi5KdQwaNBMkPcsY1DF5Q%2BILXDETBDqNd25BS%0ACbCeejEYQkcCIznpIh8%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2260386576/377ac052069ff5a35b3023f50d12/dface609-9d85-4ee1-8ed3-bfe019a2bd0a?expires=1785299400&signature=5b757cb15862fabafdeb4ab05d87f6202527d8c727a3db9ec497bae48c00b273&req=diIhFsp2m4RYX%2FMW1HO4zfvdi5KdTA%2BOBMkPcsY1DF4qlklqem7iNjESkSGR%0AFUsJhEB%2BF3xB0U4dBME%3D%0A) -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2260386575/b9798bb7a2ab92024fa4d97f2ff4/7b2327e1-ab3f-41e5-8be0-77c0f35a4015?expires=1785260700&signature=ab004ebf5f8fa61f2c27a2440635437a57f13f6b376b13cba8cbf91c62e98f19&req=diIhFsp2m4RYXPMW1HO4zW55wNSbxlE2JuVz%2B3EZKJ5%2FiC1PaxEx0mDndPEV%0AjNPvB998nhdl9nuN7%2F4%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2260386575/b9798bb7a2ab92024fa4d97f2ff4/7b2327e1-ab3f-41e5-8be0-77c0f35a4015?expires=1785299400&signature=f633dbacd9c18f7bb44e1a6f4488f7373265767312644cf3374e0f560e6f8894&req=diIhFsp2m4RYXPMW1HO4zW55wNSbyVg1JuVz%2B3EZKJ6EzLxOxj73KbEP9219%0AQJqzLO35bqWu4bj9vJ0%3D%0A) Note the following precedence rules: 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 e77591747..9abf03b80 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=1785260700&signature=5b0a81db27ce5a1d8b7605972c3774ca5ebdef3d86a41872e19d38c353b0781d&req=diEhH8B7mYFXX%2FMW1HO4zSZP0peJEw74B32drIe5EDmA6sk5ALhjB0QSC9nS%0AUO1W%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2169954086/419674f781edb2977b93cce062b4/93b1893c-d79a-4eb6-b2f1-2fe3e043bd90?expires=1785299400&signature=81984c656a5d2574a74e2f97131fe0dc85e785bb09c6ec6a300ca76c92f9ae73&req=diEhH8B7mYFXX%2FMW1HO4zSZP0peJHAf7B32drIe5EDlFZG%2BaGBNshrFaRaZG%0Am8Fo%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=1785260700&signature=6db50a117e91ba073d7b5fc7878819a8f267cf578e0f7956d8c1990891433a8b&req=diEhH8B7mIFXW%2FMW1HO4zaZWs9%2BaWwEZepuGRb1rD3JzbvP%2BO%2FEZnTXjWPyX%0AhcPt%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2169955082/de4053ee0eab8fcb9263584bb171/d39b77da-1a69-4682-9fdb-7ed488f236b0?expires=1785299400&signature=9552b085f63eb18773cf47a9d3d2a004b63c7cf1e0d784e9c3f25a62210052cf&req=diEhH8B7mIFXW%2FMW1HO4zaZWs9%2BaVAgaepuGRb1rD3L8E68QV2zWjU%2FKco8z%0Aww4x%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 67903c52d..4475ea06d 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=1785260700&signature=b57e7204ec8a469eb8020b524f6c0ecb375e6379da093cf4186faa9a14e02cfa&req=diEvFc58nYNbWfMW1HO4zcOgiwC41yhyZwSvwegvtgz8MkV80R4%2BORehWClA%0ARoAIyRdJFqgu5q9a2TY%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2183720240/6f6ef438913391703598d86d606c/CleanShot+2026-03-20+at+09_11_43.png?expires=1785299400&signature=575bbe929828c82d62a0a657c355dd27d8e6bbbde36b7dab7f049e98eee31622&req=diEvFc58nYNbWfMW1HO4zcOgiwC42CFxZwSvwegvtgxYGtGj7gNdXAHV%2BIPR%0ABZYpkM61t1w50HCyxvA%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=1785260700&signature=dc9a39fe9f0a3d3f488d951efe1366718d43441bfc5f71a04003c95f4bfb5897&req=diEgEcl3nYFeXfMW1HO4zZCoQ4hHSHWRvb0suCMAnj2eNswFxlYXDaM%2FNZS9%0AlTXzfkPVqE96NIOMxpE%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2177090014/07832b50003cf7fd3b4e9c7c448b/3385d9b8-c3e7-42b9-ae3f-4d213baa53a7?expires=1785299400&signature=f68c4d69a43118d1e329e0db0974894266174db1d9b21265da999bf46e8d3d24&req=diEgEcl3nYFeXfMW1HO4zZCoQ4hHR3ySvb0suCMAnj2iQPoklJFc2m9Nprtw%0AhIv90%2BelnAzhOeO2eqs%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=1785260700&signature=44607ddd68c1f3f69074a2a5614f3475668b94010649fe642711f122da1f999e&req=diEvFc5%2FmohZW%2FMW1HO4zQQ7UGZfzJgYjggUT7FIJz%2Fdot97hQO%2ByQVmmvfT%0ACsQYiXbHgLa4ibVd3WY%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2183717962/acdc11bcc825ae76a13f508365bc/CleanShot+2026-03-20+at+09_12_08.png?expires=1785299400&signature=131dec08ac9b8c4d75326caa3768c4a5b0af3df99fde23b97e8856bca97d7b89&req=diEvFc5%2FmohZW%2FMW1HO4zQQ7UGZfw5EbjggUT7FIJz%2FhfDaJBBxkblVOWsNF%0Aw707YjZKKc5fKeQkKps%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=1785260700&signature=849cfef28959ec75b31544eab91ffb95f65706445d4584b2a3118c48a830f2ae&req=diEvFc58mohYWvMW1HO4zU%2FKAiZE%2BiPLI7f%2FdY0VL6j57YYsfkLB4L7QLicL%0Ayb%2BWgSVhkn8rTON2rbg%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2183727973/7a25430123d9e13e7c3cdd411f70/CleanShot+2026-03-20+at+09_13_41.png?expires=1785299400&signature=6572d349c92e89f73c8565d4d36be821fcea43e31402deae3c1471cf0be047de&req=diEvFc58mohYWvMW1HO4zU%2FKAiZE9SrII7f%2FdY0VL6jqidrFiB0EZq2uCEQy%0Agqr6Ygxmq69PK8SsPmw%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=1785260700&signature=126179b60d3eb48795680845a22a9f87ff49e921b2186a1e73eab0f37f208f90&req=diEgEcl2mohcXPMW1HO4zejrnzPUEyNYuv8e2Xj2xOWfRHUd%2FBfGVTk%2FQlFx%0ATvnJH39aLh96CrxnqdQ%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2177087935/2f0052dae601d0b7fecdc029e1c3/2e3ca9e7-23b1-436e-bbdb-edcd31c41f15?expires=1785299400&signature=a113518b02ec8b9b2c8f19c2326ca2c4f7183d86f15a63faecd12f0d7aa41edd&req=diEgEcl2mohcXPMW1HO4zejrnzPUHCpbuv8e2Xj2xOW9eG5Rf8wyPQ4LCQFv%0AaI1Srl%2FIEE51tV7EuBQ%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=1785260700&signature=86d49c696c90f7fe6ce3f80f8980473bae5b62ce6d22d97e7e94890e4181342c&req=diEgEcl2mohcXvMW1HO4zUq4V%2Ba2haI9MfnqHouW6MJmWkynYC7FVsOF338B%0ArNzfSnTCdLYc1EouSxA%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2177087937/f59dbe3fc28448a9597ea097cb4d/96a59acb-4054-4b4b-a208-751f9711f535?expires=1785299400&signature=a13adb2954527b09bbc0f2731bc6019130c90873b157b93605d031b69fdc10b5&req=diEgEcl2mohcXvMW1HO4zUq4V%2Ba2iqs%2BMfnqHouW6MJoKnJUH%2BzCPloBIOTv%0A8kAzAQoqTX4WtTegUfw%3D%0A) --- diff --git a/content/support/14128542-let-claude-use-your-computer-in-cowork.md b/content/support/14128542-let-claude-use-your-computer-in-cowork.md index 542d2a086..3944329df 100644 --- a/content/support/14128542-let-claude-use-your-computer-in-cowork.md +++ b/content/support/14128542-let-claude-use-your-computer-in-cowork.md @@ -40,7 +40,7 @@ If your work involves a physical machine, Claude keeps working while you step aw Claude asks for your permission before accessing each application. You’ll see a prompt and must approve before Claude can interact with that app. Some apps are off-limits by default. -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2193297849/243cf7bd2386d92a253c2cec7d32/46cb6fcb-c0ee-4d1c-9974-9c1c1058c81c?expires=1785260700&signature=5cf7d7e34ddf784b741464a9f0138856fe8d5af618831800bf93ac8be44a8687&req=diEuFct3molbUPMW1HO4za8%2BRnmARSCbOFMEfKzd96qLpxwKb%2FGuec5XbsSt%0AusUX5ijr1cos1lDfy%2Bk%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2193297849/243cf7bd2386d92a253c2cec7d32/46cb6fcb-c0ee-4d1c-9974-9c1c1058c81c?expires=1785299400&signature=4fed0404094924d70ef7302a79aa846a3142911f7f28710833bbe306b64c539b&req=diEuFct3molbUPMW1HO4za8%2BRnmASimYOFMEfKzd96pQluzM1TkUyk3uc9X3%0AUxbPXy%2BwyFj1LghAKbM%3D%0A) Claude is trained to avoid risky operations—like transferring funds, modifying or deleting files, or handling sensitive data—and to flag signs of prompt injection. However, these safeguards aren't perfect, and Claude may occasionally act outside these boundaries. @@ -128,7 +128,7 @@ To start using computer use: 3. Find the **Computer use** toggle and turn it on: -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2193911341/630e6df3b08b27d1c7b4f1ca6a1f/image.png?expires=1785260700&signature=877150331ace788d5c16eed31ab56e1e795bf8a0c0bec81dce5886ecac1f4b55&req=diEuFcB%2FnIJbWPMW1HO4zR8GoUF%2BQ0o3jdPXX%2BaSOrGpRh23AggxdlDf9Fyu%0Ao7ur%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2193911341/630e6df3b08b27d1c7b4f1ca6a1f/image.png?expires=1785299400&signature=a44f888862bed1b0afe1a321bde1868970591055c0dc40d80cf304db13d676d2&req=diEuFcB%2FnIJbWPMW1HO4zR8GoUF%2BTEM0jdPXX%2BaSOrH6RNpzoSiC3VFsoyki%0AWDLR%0A) 4. Open Cowork or Claude Code in the desktop app and start a session. 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 558e595c6..b5d1806ed 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=1785260700&signature=49df5a11f5d17f964f4249045673ac75f9b683fefa6ab5d4bd6cf0b491a6e0f5&req=diMmFM9%2FnoRbUfMW1HO4zW4gbDCvM82zrgfl7PnOiunw%2Bb27ZpVb20w1FsqG%0AcP9I%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2312613548/44cd5970ee3c3b2c7f8dcd592d71/image+%2824%29.png?expires=1785299400&signature=cf78c3fb0f3f9aef0777e0c22552455e1e825327bf55c1c048dccfac1830fcf7&req=diMmFM9%2FnoRbUfMW1HO4zW4gbDCvPMSwrgfl7PnOiul72ZY7FNH8qNp2eIX%2F%0ANlf4%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=1785260700&signature=57bbee192c7b1dd787b7386e8c8418247fb68b5e43178600adefc68792fd3994&req=diMmFM9%2BlYBeUPMW1HO4zX%2F4fr%2FyzTsY43OpyTHzM9RWkcvfzzAZh1itOuez%0Au9ye%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2312608119/e4b0ef4f309f3c4eac8311a6ef47/image.png?expires=1785299400&signature=c44bff4e76451516c40240efe71feeccaf44f8a9d70b4e40eb08fe767f81225f&req=diMmFM9%2BlYBeUPMW1HO4zX%2F4fr%2FywjIb43OpyTHzM9SQfjhTpgsyILLTLzVJ%0AWr2j%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 3bb4169a0..9308a32e5 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=1785260700&signature=84073863ad66c8388649fd0b896a4ba21d9a2462dbfddd2f7ebd719358e8b1ac&req=diIiEMl%2FmIlZW%2FMW1HO4zdpfuC%2BKHFOI006zz1SmF9XAxCk%2F386pCzXZNkf2%0AcYcNeOlrVkEBrwik8uM%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2256015862/476131c3139aec4db01b96127544/10c7a165-8b26-4443-b064-9d659659c65e?expires=1785299400&signature=aef6fc4cc7206d4eb80956a23ebc5610ffdc1ff1c6af07b19502fc10fd939255&req=diIiEMl%2FmIlZW%2FMW1HO4zdpfuC%2BKE1qL006zz1SmF9UliivJ6vwT7d%2BL5Iv2%0A%2B0JSAjDCQfDZ8%2BHWUGM%3D%0A) -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2256025910/a82e2de9382824fa9db7666f67c4/CleanShot%2B2026-04-09%2Bat%2B16_25_20-402x.png?expires=1785260700&signature=ff54906dadb4aeb73e1714c56018cb8e05d412eca6d042fdf2ad35a7d0e507c6&req=diIiEMl8mIheWfMW1HO4zV%2BGnRw9Rb9Ax57dwYq5DdLJSgwgBFpIEkFmlGYG%0APVd%2BwVRAJyRYFQSn%2FaE%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2256025910/a82e2de9382824fa9db7666f67c4/CleanShot%2B2026-04-09%2Bat%2B16_25_20-402x.png?expires=1785299400&signature=04657d60090b4c66393f34a4593e804c519b20a2fa2a962b08647381b292cbfc&req=diIiEMl8mIheWfMW1HO4zV%2BGnRw9SrZDx57dwYq5DdKBqkU1BXv48WSkW7A9%0ABt35gEiQX3DkbuuYf7w%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=1785260700&signature=fe9e76a350fb08881afe286d7919addd69da84eaab96442b4c939802505e4819&req=diIiEMl%2BmYRdW%2FMW1HO4zQE9JrK0%2FBT8bfNHh%2Fvd8OHRP93txb4jio9ggf%2BF%0AgFUi4Br3qS4cAlahSoA%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2256004522/a97b91092b393e93b2d7779f63e6/2db86a6d-1582-419e-925e-cbc914468fa1?expires=1785299400&signature=252228dc857dbaa4c5783339699306402acb8619847681a1b260a8a8e53638f4&req=diIiEMl%2BmYRdW%2FMW1HO4zQE9JrK08x3%2FbfNHh%2Fvd8OEDxubJC%2FhDvgJOLDMZ%0AH3rTUhicoquoqXBQHgQ%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 7bf726618..19d15091f 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=1785260700&signature=81d81c63f387346b50e69be244f406f77cb33ed181e8c7279b864d744e4e3bf5&req=diIiEMl6nYBWX%2FMW1HO4zSrRlakdbzYTyIvvU1hav7N%2FpJF6H98WwVfvgJsG%0A5xHOn3UsylwlbbqLs20%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2256040196/c3b045028c4c2edef9172b6fb424/9a71258e-ae73-41e3-83a2-d24a240ac0ae?expires=1785299400&signature=74ac8ce2c2e96d238c9c826cb4465edbef4bd418c0b2bdf40b03de583dbd9a85&req=diIiEMl6nYBWX%2FMW1HO4zSrRlakdYD8QyIvvU1hav7Mrn0cvC6kmDKGeIZRa%0Aw%2B0oW%2Fp%2BGqkWvl%2FXbeM%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=1785260700&signature=b2bb5a18654279d742620579bac271998592d34798113f233803cc5d2b4b5fd3&req=diIiEMl6nYBWUfMW1HO4zeLvMl1tTEz9oWupW8zJgMpm%2BKjzVLoHScx%2Fm89r%0ABzU1A0s4%2Buv66ZJCAJo%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2256040198/da9188b8b968d5f900cc08e9ceb2/3814ab37-c3fa-4256-8d16-49c1e1b4c654?expires=1785299400&signature=5caf594080d16b98ff3fb5b28d7be9ba4376906141e20514e4ba0aeb107fe56b&req=diIiEMl6nYBWUfMW1HO4zeLvMl1tQ0X%2BoWupW8zJgMpCE0Mr%2F0RNl5KDesYl%0AL%2FGZw0zyt4MyUKW84%2Fw%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=1785260700&signature=b8afdab2c0c99e749a0a2d2feb932260aa7d82de7fce86edfd7dd8545c4e1f64&req=diIiEMl7m4VbWPMW1HO4zaWhsXYgtEcch340B79BYGbj4GkMCm7YPaZ1ZyoH%0A1O9j9tjS4447edfajsY%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2256056441/f7eb09bba549e9861fc81b961cc7/2760fa5b-87bb-491f-9354-ca3cd2bc4475?expires=1785299400&signature=fe4b16e4c82ff2fcba7b573b081260ac1fcd617b9406a461666c2df11cc5c75f&req=diIiEMl7m4VbWPMW1HO4zaWhsXYgu04fh340B79BYGZXCqU13HPXDd6nCB6Q%0AUXRSs1PpArzQ3YZN76o%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 5c3cb3282..9fbc2ef86 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=1785260700&signature=dcc45e3d45ee40a32e8f60da8b0ec6ec3daaf5e03e81c2e53cf0eba91a401d1b&req=diIiEMh8nYZZWvMW1HO4zQvFLLdRi8T%2FM%2Fw5SJgC29FLxHqtafC0pV6Xc%2B7J%0AvFmD0lcT5kOeWeefSDI%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2256120763/7652c6c669446113eae75f3c5977/9c74d57e-aaa2-4f1c-bfe4-2b9b87fd41ab?expires=1785299400&signature=49c2f54ce82e44775f4c798b9b62118cb87963d7a1459777b9951fe4f74a53d1&req=diIiEMh8nYZZWvMW1HO4zQvFLLdRhM38M%2Fw5SJgC29EHdU2AiijG3CBo5j7P%0A3OLgUitd4M8fV1Ql04o%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 62b93e45a..862fddc59 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=1785260700&signature=effe77ba655c621b53d585cf9cb383dbf4b6dbd5f4e844ebefe3b76998dab1d8&req=diIvEcx8moFfXvMW1HO4zWNHF%2FeJCDsQIQKNMXlu0T%2FYs38eq3%2F5SmIGxLkU%0AtxBMaFBro440xFuM4xA%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2287527007/b1c46cb8dba4cd7e8bbea85fb0c3/2819c6cf-9ce1-4df5-84c8-feae0164bf2e?expires=1785299400&signature=26992cba23e4ce9253276b72f2c9718ea6a7050fda93eaaab7a7787e566ba3c9&req=diIvEcx8moFfXvMW1HO4zWNHF%2FeJBzITIQKNMXlu0T%2FbGHWaElCU58fXTymH%0A0XTYK%2FLFWslZOdW8EA4%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 0517450d5..b9fd1d15d 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=1785260700&signature=4fb507cb99ec1c8eb85748c484e2b0ae2bbaedfe0469daf1055e3be4862dc188&req=diIvH8t6nYFdXPMW1HO4zahp3ecKH%2BYiDIPtKBLQ9H%2FUfhhu%2BYzex0Tfi9Z%2F%0AouY1EZ8OUdFsPJtPYm8%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2289240025/8a528b6cccc3ea1001c25953cb14/image.png?expires=1785299400&signature=d04864e100f3ecab24acedfc2cacf71ea42cf27f385f1a15f37385b174a74c61&req=diIvH8t6nYFdXPMW1HO4zahp3ecKEO8hDIPtKBLQ9H8YPI0TE5sbL87UW0NE%0A75GXFHdU1Ux19SrgASs%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 89fe2cc65..c2b7876b5 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=1785260700&signature=4e6863d6669628e5bddc50f413b702001ddb17ed413b45729e4060ff9d059fe1&req=diIvEcx%2FnYhaW%2FMW1HO4zQFD4SlYnW1znfz9ljnuyXRg0PhHMIa8TG5%2BCbue%0AKPew4xuyEWxWF1ue%2B6Y%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2287510952/553a03eec5cea7b9eff53b473552/6dc33363-38b1-444e-96bb-f8218b588173?expires=1785299400&signature=d6a78084e5a91a2a953945cc74228dcdd12426cde0687b4293e38c68c290df3b&req=diIvEcx%2FnYhaW%2FMW1HO4zQFD4SlYkmRwnfz9ljnuyXT4U5XU5rj0G8dvKOfW%0AzDgKQ2obvpL%2FABboq60%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 a6fc9b5ff..dd4fb4a3a 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 @@ -46,7 +46,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=1785260700&signature=7248df6c0f608210f9d1fe5180feb01d6c0fb6d74ae8ae952a0cc3c08c0e050d&req=diUmEs58n4BcUPMW1HO4zelOdzdCK0hAfdGVZ664dGEdkMWild8n6lx5%2B%2FJe%0A07%2BkVxWpsLGEsz0DVuM%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2514722139/d05c94072a41ea9090ecf386c53e/c32ee31d-954a-4551-a2da-91677fbd0b6f?expires=1785299400&signature=61290d798e78de685e3a9712944f1ccc5375220f7aad92b6046f30c60bcc5bd1&req=diUmEs58n4BcUPMW1HO4zelOdzdCJEFDfdGVZ664dGHnZ04OvbUXJNk%2FoiCq%0Azt8XO2YVhhYZsm9pQWE%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 382eb58b3..4b807d7d8 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, so a role can’t grant access to a mod 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=1785260700&signature=dde9a83155b8726ed046acd0b86001cd6c4457952e1019dd98e565d66bacc6a1&req=diUmEs93nohdWPMW1HO4zXlxEuK7UdFQQf5Pb7M2Q0vm4k%2BUCzwjaeqKuAAL%0AYYbx3SoOGY2FdASKweA%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2514693921/02ea72756f5163f14e5d158516dc/69102088-cd86-498e-97aa-c8a6e0004419?expires=1785299400&signature=539305e8c65b517ab8135d87334c700f1d3176cb8b2d953e8a76fc48792c5d0f&req=diUmEs93nohdWPMW1HO4zXlxEuK7XthTQf5Pb7M2Q0ulusF87gM2tB9EHBzN%0A6%2BJVYPxAVXb6eFhddno%3D%0A) -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2514693922/bfc5de6626eb19dca1d7caf818ca/c3cd8bb6-f86c-4d01-92da-6ae4ca966662?expires=1785260700&signature=20e9b56dfec9a9931afb0b5d27b533d02021f05328bb9493b1c230a99737f44d&req=diUmEs93nohdW%2FMW1HO4zTqNsYzHQFhQAod9uc510lw1E9WrtUmWmKtDHOFl%0A8o2Z691pWCHXKHTmIh0%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2514693922/bfc5de6626eb19dca1d7caf818ca/c3cd8bb6-f86c-4d01-92da-6ae4ca966662?expires=1785299400&signature=47dcfe874f03484ef3b19f8487b8368e03de468e08c5ac8c6ca54710b4d32585&req=diUmEs93nohdW%2FMW1HO4zTqNsYzHT1FTAod9uc510lwv5J%2BU6fIccrxlBoo7%0AO%2FsXFkuy9%2FYA3Hkqas0%3D%0A) --- @@ -62,7 +62,7 @@ If any custom role uses the model you’re disabling as its default, you’ll be 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=1785260700&signature=eb3a3ed64bdaa0214d24a88e7c3a4623570fbfd21b135976298e7da1fa53d0eb&req=diUmEs93nohdWvMW1HO4zYj9SfAB64G6XsqpNqvyFRJf2Vbbk8h4Wij63kHl%0ANSX6FD5wWn76x1k55N4%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2514693923/880665a87dbd4776cf19d6063a37/29d30c6d-f9fc-408c-8c72-4320c6d88d14?expires=1785299400&signature=f4d8e474f36b95ba0fcfa8e1fe6bf8c528ed94cb361c54fd9de21765be29ccc3&req=diUmEs93nohdWvMW1HO4zYj9SfAB5Ii5XsqpNqvyFRJJW6dUP83VNs5Und9W%0A5%2FBRw2XoLjC%2BZqaDOec%3D%0A) --- @@ -80,7 +80,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=1785260700&signature=71a40b28fbbbf790f538f922c66f292852cda69b117c6fd5a63c4e8d234ccac3&req=diUmEs93nohdXvMW1HO4ze1xBja%2BdbkeDeA1RkowXUG2dnV0HAjsLAImzosJ%0AKsswZ0TlOwt%2FlOjyNkk%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2514693927/7a25673b3b075d72adb3cdc371e3/d2d7cd8d-a713-4e91-a706-f589ac46a9fe?expires=1785299400&signature=2e7cbb141737b4777b186ae56f0cabd773e9cffd8dedbeb525497952ef7869be&req=diUmEs93nohdXvMW1HO4ze1xBja%2BerAdDeA1RkowXUGIBQUUpCEirrM77hqy%0ASO7M7HHOKVu%2FNMMiHVM%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 257fdc4a4..b73f98664 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=1785260700&signature=094420d25fb4328f90e62cd1ebfb2aaadd7ac1a03d6edab9538b56baa8b747d9&req=diUjEMh8m4RWX%2FMW1HO4zU5lnm5sq8VkGkiu4hEpcPVkLcYVChNqFglTdWdy%0A3zd8elF%2FjM0OoQFuTao%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2546126596/ba71ca47e2df21cec62c243831f8/5b1c67e1-607d-4c73-8f61-d1ceb081082a?expires=1785299400&signature=32275b143f23f70497776715d3a7f2d7d621aa0d733686482be969d9a26d5b1e&req=diUjEMh8m4RWX%2FMW1HO4zU5lnm5spMxnGkiu4hEpcPWIBdpswBIPN%2F19r%2FMR%0AB507IqjQkPdw4A5Dihs%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/8114491-get-started-with-claude.md b/content/support/8114491-get-started-with-claude.md index 20b177dc7..57e7fa518 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=1785260700&signature=c683a9a9a0881a158bbceae877957d819addb3d456c604d5422c1c7b6d092ad2&req=dSkmEMt%2BlYRYUfMW1HO4zV2J7SrIsoeG9crMELaMZPyy89DWF2hie8S8a8%2Bl%0AhiZ5mp2ga9HbauwcrDw%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1916208578/2cf2ea52f1f884084b57983a8805/image.png?expires=1785299400&signature=ccfcdc18a0cb277155be6b6c490450f4f6bbef2a14b058ad696818f172742da3&req=dSkmEMt%2BlYRYUfMW1HO4zV2J7SrIvY6F9crMELaMZPxEo7bBNs6VgZbgy7%2BF%0Ab1eo9y6qr5JwOgwYAxs%3D%0A) --- diff --git a/content/support/8230524-how-can-i-delete-or-rename-a-conversation.md b/content/support/8230524-how-can-i-delete-or-rename-a-conversation.md index f351456ea..4b108f816 100644 --- a/content/support/8230524-how-can-i-delete-or-rename-a-conversation.md +++ b/content/support/8230524-how-can-i-delete-or-rename-a-conversation.md @@ -12,7 +12,7 @@ To delete or rename an individual conversation: 3. Select either "Delete" or "Rename" from the options that appear: -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1621955348/4844057e0f0847b580b95bc01625/Screenshot+2025-07-15+at+11_43_18%E2%80%AFAM.png?expires=1785260700&signature=d0b61c8119bf0a99181eacf3db038e7dbe841d28f311b5941959e2158962948d&req=dSYlF8B7mIJbUfMW1HO4zVBo5Ob1a4Bdt5RK2C3E1TfSxssiag6NI33Z%2BP4t%0AB5%2FqaR2Vjc7foAvubCk%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1621955348/4844057e0f0847b580b95bc01625/Screenshot+2025-07-15+at+11_43_18%E2%80%AFAM.png?expires=1785299400&signature=30b194b95918dee79091e9de2b1da81ce8f87d85992ea6d635a56a00974148ee&req=dSYlF8B7mIJbUfMW1HO4zVBo5Ob1ZIlet5RK2C3E1TcDaOqE3RptdR%2BtxLtc%0AwfIrXyK4ZmoCyWnhmKU%3D%0A) ## Deleting conversations in bulk diff --git a/content/support/8287232-verify-your-phone-number.md b/content/support/8287232-verify-your-phone-number.md index 9ccb14185..c8025681d 100644 --- a/content/support/8287232-verify-your-phone-number.md +++ b/content/support/8287232-verify-your-phone-number.md @@ -2,7 +2,7 @@ When you first create a Claude account, you’ll be asked to enter your phone number from a **[supported location](https://support.claude.com/en/articles/8461763-where-can-i-access-claude)** to receive a verification code via text message: -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1893173143/de034a2e7d9a6ae1f703cf867afd/image.png?expires=1785260700&signature=8fefb621c049ba54512d7ba6ffb577623f3562f7bc717e387893392148a856e4&req=dSguFch5noBbWvMW1HO4zVIf8JVh2ip9oTnI%2BoMZk7d5VLnLUDs8iN8hcQmL%0AVaZgnLaYauhpSjJZO9M%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1893173143/de034a2e7d9a6ae1f703cf867afd/image.png?expires=1785299400&signature=c5782799d4344903d83ccff88362f72a3d596c1dc65c419486f58405de0d98ba&req=dSguFch5noBbWvMW1HO4zVIf8JVh1SN%2BoTnI%2BoMZk7dihQ2OFA8vH2jiT7Vt%0AL45QyCGD1V7uwBgP5CA%3D%0A) Once you receive the text message with the code, type it into the box and click “Verify code.” This will complete the verification and account creation process and allow you to start chatting with Claude. diff --git a/content/support/8325618-paid-plan-billing-faqs.md b/content/support/8325618-paid-plan-billing-faqs.md index 3c97526c0..c84996941 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=1785260700&signature=185fe67e8c2257a2b13ca6f059dd762de2065cb9e43c65783bf7e24343bcc93d&req=dSklFMh6nIZXXPMW1HO4zVXW8GipbTPLQoNvNFTb5ceBHhzN%2BIbMW1MXoquD%0AZvTGfM81IeUdeJr%2FkzA%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1922141785/666191101c11030b05f03a668a74/image.png?expires=1785299400&signature=540e938641963be924bb5a5b622f8e1428b6bdd870e5aa76d1119e6da018ff07&req=dSklFMh6nIZXXPMW1HO4zVXW8GipYjrIQoNvNFTb5ccjImq9e2u0AmxPTaBB%0AgE%2BpVgXi%2FE7aIN49Qjc%3D%0A) ## How can I edit a paid invoice? diff --git a/content/support/8606378-how-do-i-use-the-workbench.md b/content/support/8606378-how-do-i-use-the-workbench.md index 9744a81a6..c8f1e0b60 100644 --- a/content/support/8606378-how-do-i-use-the-workbench.md +++ b/content/support/8606378-how-do-i-use-the-workbench.md @@ -68,15 +68,15 @@ Code examples in our documentation include an "Open in Workbench" option, which Workbench (legacy) allows you to create and test prompts within your Claude Console account. You can enter your prompt into the "Human" dialogue box and click "Run" to test Claude's output. Click on the + icon in the upper left to create a new prompt, or click on the bulleted list icon to see prompts you've tested in the past: -![](https://downloads.intercomcdn.com/i/o/888021849/31a22a0dc4d1fc4b605cc8ee/Screenshot+2023-11-19+at+4.21.51+PM.png?expires=1785260700&signature=c9d54448bf0d441f35227674190ead9bbf1883333823c6c9dfc93a239bb053a1&req=fCgvFst%2FlYVWFb4f3HP0gKWhcTkK0kFbOkmmaOsi7IDjt9OwQnoDGw2KQ%2BAE%0AlC0LispcPtNygzZK8g%3D%3D%0A) +![](https://downloads.intercomcdn.com/i/o/888021849/31a22a0dc4d1fc4b605cc8ee/Screenshot+2023-11-19+at+4.21.51+PM.png?expires=1785299400&signature=af0027a12b2cd097ba523e4e7bc176138d51d94c3d0f8ce508fc8b8312d36907&req=fCgvFst%2FlYVWFb4f3HP0gKWhcTkF20JbOkmmaOsi7IAPJnbMa3V57Jiq%2BP9a%0AgGOG04SQ3n695NNh2g%3D%3D%0A) Workbench (legacy) also allows you to configure several settings when prompting Claude. You can click on the slider icon to review your model settings. This allows you to select the model, temperature, and max tokens to sample: -![](https://downloads.intercomcdn.com/i/o/888023061/61e26396355f6f6cd506d7e4/Screenshot+2023-11-19+at+4.09.28+PM.png?expires=1785260700&signature=fdc0836be699c5932ef8e12bf860c72a56345c1f9175d3e5c8755be48cf1ad1c&req=fCgvFst9nYdeFb4f3HP0gN55XNDWOYO3DUq7%2BRvcmSOafLeR0FQ8C6%2FfjaB6%0AxJwd%2B2VZXDleuzCQ5w%3D%3D%0A) +![](https://downloads.intercomcdn.com/i/o/888023061/61e26396355f6f6cd506d7e4/Screenshot+2023-11-19+at+4.09.28+PM.png?expires=1785299400&signature=c5f524204644b2b456c7d6809d1944e96475fb770a1f6630dc23ab3b14c19eee&req=fCgvFst9nYdeFb4f3HP0gN55XNDZMIC3DUq7%2BRvcmSNWPxlnepJS0KmYDw6q%0Aes3HD9QzGB%2Fa16txrA%3D%3D%0A) After crafting your prompt, click on the "Get code" button to generate a sample using our Python and Typescript SDKs: -![](https://downloads.intercomcdn.com/i/o/888023545/b12afe07f16f079daff7587d/Screenshot+2023-11-19+at+4.28.27+PM.png?expires=1785260700&signature=00fe18cfeb3f4ccee2a71fc5e0e3f8a68534baefa09d71c912b08ee2fcd72da7&req=fCgvFst9mIVaFb4f3HP0gEZTsTqY4uPrRWixPJbjiQfJ9xNbQbHiKRtPhtE5%0ALDkmCIJCNRYUu7moWw%3D%3D%0A) +![](https://downloads.intercomcdn.com/i/o/888023545/b12afe07f16f079daff7587d/Screenshot+2023-11-19+at+4.28.27+PM.png?expires=1785299400&signature=d4c128178ee5d0406e589dbcf8f1b94878cbb69254bfc7186141958033dc38dc&req=fCgvFst9mIVaFb4f3HP0gEZTsTqX6%2BDrRWixPJbjiQeBINTr6OQS3WAxvmyD%0A1T5rbfh3LMi3CITfww%3D%3D%0A) ## How can I access my previous work and prompt history in Workbench (legacy)? @@ -88,7 +88,7 @@ You can access your previous Workbench prompts on your Console account by follow 3. Click the "List prompts" button on the upper left corner of the page, next to the "+" button to create a new prompt: -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1945992985/45a8969fb6cec956bd44fb5c4ba7/CleanShot+2026-01-15+at+12_07_22%402x.png?expires=1785260700&signature=58b59d3e22d79f2739ca683a96e9c9369b44aa31ca6a1b686b094383aeb6e7d0&req=dSkjE8B3n4hXXPMW1HO4zQQ9sFQLMXO%2FTyGSpkcb8MWDxqH0nAxgnK1MJEJ%2F%0AYCT6r0gmOYjgZtwDCAY%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1945992985/45a8969fb6cec956bd44fb5c4ba7/CleanShot+2026-01-15+at+12_07_22%402x.png?expires=1785299400&signature=05cd7f13fce97825da064071c0501558830512d505e309f6c897d13eabba4214&req=dSkjE8B3n4hXXPMW1HO4zQQ9sFQLPnq8TyGSpkcb8MW%2BHKe7EqizIF45wvaO%0AFeqdEe%2BTr6HzZvI8YPE%3D%0A) 4. A list of your previously-saved prompts will appear. diff --git a/content/support/8887527-customizing-your-appearance-settings.md b/content/support/8887527-customizing-your-appearance-settings.md index 90f31ebcd..ee8924113 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=1785260700&signature=da3167bcdfe4477e9ab7ca242b6fc862a6edeb786ba6661080e4c93011206209&req=dSYjHst4nYVeXvMW1HO4zc2jJ6c%2FhovjSBkgeTglJrptOqszGqvC3i1NiELH%0Ap1omfU3TonhF7TimQOw%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1648260417/d478c757c7115ad58a12026d4caf/AD_4nXc__Qop4X9hknWGfGj_y_DCpLutLruhxIclJIfir0ilsgNMg7X8ksIVnqk1Oce5FKlGIOYu9CKbVsu8DqD7iIY2aC0ZfXMyFTeAdNq-Cao2mXcj_WUpNF0kM2HoYR_dEx6N_cuJow?expires=1785299400&signature=cd2061b4f72d8237b55b600142f613b26e78115197cf2eb029a8e16072b06ae9&req=dSYjHst4nYVeXvMW1HO4zc2jJ6c%2FiYLgSBkgeTglJrpAfA%2BS%2FGragyIzjmG5%0AvVPzcTBhc%2Fv04mNGmjA%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=1785260700&signature=c7f164527fa0be43faaea56b4f4260b2cf053b2e81f5e8c979a8169b5a6ad123&req=dSYjHst4nYVeX%2FMW1HO4zc8962XnW3E7QtNFlF5%2FHEcKaKp0XRzJsTA6%2FmAz%0A2edTc%2FdckEAlp70KF8k%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1648260416/7fc0803d44d8de40f8e6636b2eb6/AD_4nXf0UEDa1i2QmqlQtoB5BgpQ-FfZVzss_7wMVQdvkmEDSfoTxixnG0GSxC6qrOs21HdkXH-I2Yn_GHDAf8yjd6FJtoh9FadALozvIErFp9r8LychDGLPb7OpN1CN4PRcgVAYNCre?expires=1785299400&signature=1bd83ff95420346d5d8c9aca5863e9d14b03bb8251a2d297baf86f04daa573ff&req=dSYjHst4nYVeX%2FMW1HO4zc8962XnVHg4QtNFlF5%2FHEeZfEoc7vSuNYTM4pdf%0AHAJ297MHqkVBKP6pOpQ%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=1785260700&signature=556fdeb223bc01180cd16275ff1e9741aa4c1ebb1ceed591b883d8de83cb63dd&req=dSkjF8h%2BlYFfXfMW1HO4zUS%2BB1r0X3voylfYa7uDb9k%2BeMnmV7%2B%2FNo%2BG3jFH%0AZFtJmvc%2BeL%2FpXAVBh7Y%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=1785299400&signature=b608f8898998e5dcbf7e6ef16faff101d01ffbe867053414ef643f3f687876b7&req=dSkjF8h%2BlYFfXfMW1HO4zUS%2BB1r0UHLrylfYa7uDb9kQ5VviCLj%2BsHrNUMYY%0AXNv3OLa9z0U42FWb6Xk%3D%0A) \ No newline at end of file diff --git a/content/support/9028421-how-can-i-delete-my-claude-account.md b/content/support/9028421-how-can-i-delete-my-claude-account.md index cd589e00f..ce7127e99 100644 --- a/content/support/9028421-how-can-i-delete-my-claude-account.md +++ b/content/support/9028421-how-can-i-delete-my-claude-account.md @@ -2,7 +2,7 @@ Once you are logged in, click your initials or name in the lower left corner and select "Settings." Navigate to **[Settings > Account](https://claude.ai/settings/account)** and click the "Delete account" button: -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2274267534/e7064e2657b1bd20031ba40da11c/CleanShot+2026-04-14+at+09_48_08.png?expires=1785260700&signature=b7b634e1678fc59e35ddde8cd91453a4054b948b20b46392e17a73f8ffc18bbb&req=diIgEst4moRcXfMW1HO4zeqzlXkMIIH7oVDupr7i4TERaHYgCAZDtjc8eB82%0ALMnKNBWsrZ33o8qkIzc%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2274267534/e7064e2657b1bd20031ba40da11c/CleanShot+2026-04-14+at+09_48_08.png?expires=1785299400&signature=38790c6dd92d32d2731c086d2f58f5ef592009543481bec1741a9d732fbbb1d6&req=diIgEst4moRcXfMW1HO4zeqzlXkML4j4oVDupr7i4THiliuxi2UpsoYpilzr%0AJIhZtHNnHnG%2FbRUUhM0%3D%0A) ## Considerations for paid Claude accounts @@ -20,4 +20,4 @@ If you have multiple accounts associated with the same email address, you'll nee There are some scenarios where you will need to **[contact our team](https://support.claude.com/en/articles/9015913-how-to-get-support)** to delete your account. If this is the case, it will be noted in your account: -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1584796811/331afc5dc61eec6f72786155b782/Screenshot+2025-06-23+at+1_54_23%E2%80%AFPM.png?expires=1785260700&signature=b22aa6e833af95f5ff6282a615cadb3cb6f8dc9497fc8fa3a610fd16dc8557f1&req=dSUvEs53m4leWPMW1HO4zXW0qxAJHYpcVOsMorzl%2B%2FSMSAkjp5MnUgTFEYg8%0AtTfifqVdPWyWpySCEBE%3D%0A) \ No newline at end of file +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1584796811/331afc5dc61eec6f72786155b782/Screenshot+2025-06-23+at+1_54_23%E2%80%AFPM.png?expires=1785299400&signature=7465667d62ee73d289bcc6859055832965717befeb8ddf458841aec931ae08d9&req=dSUvEs53m4leWPMW1HO4zXW0qxAJEoNfVOsMorzl%2B%2FQcchJvrwdw2dNykCHf%0AEZ5rkovTd8pITtOlJmk%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 17a6cec52..c0bd596b6 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 @@ -120,7 +120,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=1785260700&signature=a0d06fe62d493d825fb5f3988a36b9f9d7984df4054c9bafadf04284670436fb&req=diMmFMh3noJbXvMW1HO4zXhPndU0zh9mufhmlOXMdYbI0xwS%2FuMCKvQwcb48%0AiUXpRv6HD5qI2m%2BUe7o%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2312193347/712f763fc290b2488c103849f20c/0c135a6f-3442-4ee1-9ab7-98673f03ef6e?expires=1785299400&signature=cdbf70c4d57854bb4042ddf1b7fc7e06d22ef85e9ba49b04ee4a954ed00fb299&req=diMmFMh3noJbXvMW1HO4zXhPndU0wRZlufhmlOXMdYYn2zvFnkqpc4nGq62E%0ADoX%2Fcg%2F2id24oXLw67A%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 6055ee2cf..bcdc1f559 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=1785260700&signature=3b371b2dd648ee2ac1d8232387b645249b63fd77beb93bbb006f42fddd1e88b4&req=dScvEsh3nYNbUfMW1HO4zQABaWRuTKASBSXNVFXQ%2FVGs89QZkiJil31E7Eaa%0AiSAKEzEBrTnuuzSUR6k%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1784190248/0f19c8de18b494a27be252fdfaff/d4e7a5c5-25f5-4623-862b-c593d2dc0b39?expires=1785299400&signature=346567931b48524c68a06c890fcd3e1a350be8b3551b97d38b30fc4de361ba34&req=dScvEsh3nYNbUfMW1HO4zQABaWRuQ6kRBSXNVFXQ%2FVHedN9ix8zfBPsVWb3e%0A4iST2x%2FJmILg1Qfbduk%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=1785260700&signature=320fc2bffa3ac97f8ffdeb15fda7eca5c9dafa8403db50ac7cfdfc7aad047562&req=dScvEsh3nYhaWPMW1HO4zSMECiWyzQkGgYbpTjViBxB7jxZR1iJMZrTNlz0S%0ANFietHrMfTH1gtXQWyc%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1784190951/34dc256ccd4c0cf74976f31062e6/55365cf2-059d-41b2-ac95-4b00c4389a76?expires=1785299400&signature=b8c073cac085bcc357fefa5640ba7ac0f528dc630ac6289a6de37e9c42bd3905&req=dScvEsh3nYhaWPMW1HO4zSMECiWywgAFgYbpTjViBxD0Tx0okmqVt1bu3mIr%0AVhCWUsqWM4lpxJEzHgs%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=1785260700&signature=c1bcdc33f615ba4e8834d6cf15215b7d95d311d657c543a5a56f341fe07bdfd3&req=dScvEsh2mIdXW%2FMW1HO4zb6DuPIuCEUNS2r1%2FGRlqOT87U4Sx6yo90gepXZt%0Amn43V0iODqKgXuyiXYg%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1784185682/8625eac15b9fa452f148a6c47250/c53a1bc4-a991-4684-a789-5447ed789d35?expires=1785299400&signature=a89cf089248d96f56abf443af8d5baec4dcb8e256e0d615ab9aa9bdbfcb292be&req=dScvEsh2mIdXW%2FMW1HO4zb6DuPIuB0wOS2r1%2FGRlqORYVpLv7LqN2S9mSfMt%0AN4lbQWacNdi4OZoudnc%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=1785260700&signature=9124b40aa16519199acd008c7f9e36b3791c24565609c05b483f288211552327&req=dScvEsh2mIdXXPMW1HO4zbParUlL7%2FqkuQSB0Ebsw9eTHgpPrEr9c1Ts3UsB%0ARdtmCx09nFf5IR3aRGI%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1784185685/bb960063204592db277a4ba62d8d/ebbf5c69-da79-4e56-9d87-f2a97a22fe67?expires=1785299400&signature=7609f449bfa896df220b5f07e580cda94124811fd4fd4a44784976a17985f1a8&req=dScvEsh2mIdXXPMW1HO4zbParUlL4POnuQSB0Ebsw9curS9V9wy0NGN3y33E%0A8GjsG7DarRtqKZMJM%2Bw%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 0a8efeec4..9ea97d874 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=1785260700&signature=f988d728b5dc1b4b8edd66c131025aa88b5f1e3c3ef12561deaae0be8c20beb7&req=dScjFsp5nYhWWPMW1HO4zd3a2VkmIo6gHK95%2FTFaPyl3TbBl4lNgP5qGru40%0ALXmJYhP5WKqxcMQVfnU%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1740370991/2b6b16e5deff094e073a5b4bb0ea/63197103-24c0-41e5-aebd-9b8f431837bb?expires=1785299400&signature=5d2f91c5ccd2fb018c1c1fe2191b07964d37002d08e0194e89f3a7c459837d44&req=dScjFsp5nYhWWPMW1HO4zd3a2VkmLYejHK95%2FTFaPyntV45neZGRzuJpFuQk%0AK0AIUjsehQAPbORA7%2B0%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=1785260700&signature=c29d7df736ff3aef44842c361a738485d150ede51b449a04ff7114f7b140578b&req=dScjFsp5nYhXXvMW1HO4zUiDoiz1hwYuE8Kp5wh0MSAMiMqLhiTULaOsF61u%0AQuHsFvlN4mtuGktRmAU%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1740370987/5d5db997e6b42e627ffa62fddf75/4823906b-9535-4a19-b89e-a1003f1e6e68?expires=1785299400&signature=9dae7919c52ac09e618ea5f9c27e5cb5f8defcc0a7da1a943036fab8e5061f54&req=dScjFsp5nYhXXvMW1HO4zUiDoiz1iA8tE8Kp5wh0MSBQSYNg%2BqTxiPU%2F2raX%0Ao%2FbfQuEc1MrOaIM5T20%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=1785260700&signature=e37181ca571b0d8f5c6aff2f221843367c4a9ada84c3dc34fae14977bbcaf510&req=dScjFsp5nYhXUfMW1HO4zckCIfdgZCKjl3XeGelDRW1ry%2BooC%2FKqyrdtaJVT%0AtmZLHPkYMV1YIBLYTOM%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1740370988/386407facbf3e73d2f5538623a18/69d8ffcd-e1ca-470f-a219-5b88704e41f2?expires=1785299400&signature=d33453f3de92c3ca0f045dfb42d336a9f32ac52c58a05ecf6d625107cccf1e27&req=dScjFsp5nYhXUfMW1HO4zckCIfdgayugl3XeGelDRW1IDNgpr0hwRSQ5whGI%0ADed3hzJiBip18LosfsY%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=1785260700&signature=4f14ae490c199d4b7e441d767e3dd5647d56f5f460506ab225885c0a82dcb59c&req=dScjFsp5nYhXUPMW1HO4zaSEGlaeTLgK2JrJefVtywkz4uuRtmgGdHOX2Jqy%0ASIVe3mCyPstGiJTqUQQ%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1740370989/f829dcd8bdd88e944322f678323f/9d25eff1-6df3-40be-82eb-ba7fe09187e8?expires=1785299400&signature=82d1bbfb3040561df40ea60213d7abfcc53d09f00db68c8e8c313e0a558a5ed4&req=dScjFsp5nYhXUPMW1HO4zaSEGlaeQ7EJ2JrJefVtywl0ls5oq5bbErcHjT1O%0AVQciI2SaIvdCyzE7rkg%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=1785260700&signature=217ddd270543984c0da7e533181d54c649b7af450671cfd1482edaad2eea0d9e&req=dScjFsp5nYhWWfMW1HO4zT7Q0825uwwRAmYRPrgMBZn6PiUshppN%2Fj3Wr2%2FB%0A5zys%2BZHKtFy4YysWfmw%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1740370990/d173fbc6f030780d30c6d7b8e204/7e47b9d1-89fe-4607-8b5b-f7b06e7ad0d6?expires=1785299400&signature=c53fb2520dd7d68c655c156027df6d0ee5d73e6b3df80c943ddeb0f49158b065&req=dScjFsp5nYhWWfMW1HO4zT7Q0825tAUSAmYRPrgMBZndzHGgxsf3zBb0szu6%0A1dj%2FDRaN4OYZVAvgCbs%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 6007deb27..1ad095a8d 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=1785260700&signature=11415f6a03d3f3cf2999c47d5a14c5cd32a56e2fd57d29828e8a4cdc36673727&req=dSUvEs97mYNeXvMW1HO4zYCWiSEah8aduqqBX2puyxRrv7MxGbEXy79U4o9G%0AOInmHGVEdWJjvyvCeLI%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1584654217/db0a977417e38e43639f060d96e0/image.png?expires=1785299400&signature=ba1249330e697ddf5e339e87a7f32e2ddd67faac8094b051bcbb67fa83b87747&req=dSUvEs97mYNeXvMW1HO4zYCWiSEaiM%2BeuqqBX2puyxT%2BoBXdJfrvq6K9%2FfRd%0AqVwXDeWb%2FblGoU8aBBU%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=1785260700&signature=83efd37e53454f81ea41486271dd1ae1e3f11ba01ad7f089f67b1d73040ef031&req=dSUvEs94mYJdWPMW1HO4zQwER3YoJ49hqMITUZbanFB%2F%2BRZ%2B6egrJG4ALeM6%0Aqwwpa4sH1sYls2xxl58%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1584664321/59b50eba0b61e0789f7055fcf9f4/image+%285%29.png?expires=1785299400&signature=1da37fd1903d7d0b3e1589d2616560468514e9725e5769381ac26d199df3c012&req=dSUvEs94mYJdWPMW1HO4zQwER3YoKIZiqMITUZbanFD%2BkzqE%2FdBJfDm6DpMc%0AoIOYH0rlEQVdeFgGFII%3D%0A) -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1584693386/aed472efe163abcbc14fa32f3699/rate+limited+requests.png?expires=1785260700&signature=79fe1c08ee4f699543dea3a395cac0780ceb395ed3c8a544fcdf54a121bf379f&req=dSUvEs93noJXX%2FMW1HO4zRxEwW5P4FFr21D6pckxWMZb2qHv0OsSQCO5YUA8%0APF9GNKlisAh%2FN5z9faQ%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1584693386/aed472efe163abcbc14fa32f3699/rate+limited+requests.png?expires=1785299400&signature=387e24eb354ccaba1de86ede7c5e45c34ea524e1eb6451c19ca1122d50b5059f&req=dSUvEs93noJXX%2FMW1HO4zRxEwW5P71ho21D6pckxWMY2uvKNEjV1I3y6Gsiv%0AFS%2Fh4CzW%2BodaFnUFjdc%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=1785260700&signature=3b813f47901e6d7b2bc81273555de6c9c2309c186731f7e5732124c4dc834505&req=dSUvEs95lIVfWPMW1HO4zUR%2Bh5nBVdBmCyIF5nuUsbwpvcb7oMmk4aAY2Ffn%0ApXz4fCGrGc58lun2A8s%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1584679401/4d0bc8ed08625e1adee414e77030/CleanShot+2025-06-23+at+08_54_40%402x.png?expires=1785299400&signature=449d8e1a254e9cdb62cef8126d9f045fe0b0d9b898e4e4c1e7393f8afa7c2ecc&req=dSUvEs95lIVfWPMW1HO4zUR%2Bh5nBWtllCyIF5nuUsbwwiPYmy0H7wrIjfmkf%0AMxzeY0NNPRvYXSk6ZYA%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 da1f50d23..deced0441 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=1785260700&signature=55779db8fcd6cd050a8f4544a30fc48125a6c88cb669b65c9ecf42542a526997&req=dSkiF892mYhZWfMW1HO4zdcpD1NQ4wOGR8xgMH3ra8gubYdK6zhnGY9zN61Y%0Axr8PIhPFFBVa2tiphU0%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1951684960/0cd917c4455b31e86b70a97f8234/image.png?expires=1785299400&signature=6f5d5697cfc303e43bf1eb62309f52d96300d602370fa42b6959c5972faecebf&req=dSkiF892mYhZWfMW1HO4zdcpD1NQ7AqFR8xgMH3ra8iaAqHvbI2JMVOl4viX%0AkgShvCFyIbnT2mNUydw%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=1785260700&signature=979a6a5ebcfc034e473a751436ef8721564ca5a92032ce70e1cb286b29b234b4&req=dSkiF892mIlZWfMW1HO4zcqH79yBz4Rqf3CUbx4Ru6Uqa2daKVhdv82a%2BhOR%0AP764Znx2REhLuHc6Ro4%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1951685860/6bf1aa2c57d6ff95804797779e9c/image.png?expires=1785299400&signature=511090b10e1ac284fd1808bedcf2964d8282ec928093e172ce2e1073a262e404&req=dSkiF892mIlZWfMW1HO4zcqH79yBwI1pf3CUbx4Ru6XhuHSfnP4LdNcwTjeT%0A6dzoSNQffu9KXMl7Ax8%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=1785260700&signature=e586d023b997482f0a22f904a0cdf6a003da8e67b0a60ba4d3b96e4f704935ad&req=dSkiF892nYBZWfMW1HO4zbvYOlTnK3mUK6hAzMpXfmNBchdtvZECUocwGCZt%0AtiUMsPP0oeIvjsD0mvg%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1951680160/d5a38784df4c6d0cc55eda339279/Screenshot%2B2025-10-28%2Bat%2B2_00_15-E2-80-AFPM.png?expires=1785299400&signature=7bb563c5c2f663b744fd22b77deee8d8b70682d16d436bb6b6869708a1590dfc&req=dSkiF892nYBZWfMW1HO4zbvYOlTnJHCXK6hAzMpXfmMWCycBaB0XDi3upBAk%0Ac6bkIo55GV4sdoFtlI0%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=1785260700&signature=fc5ae09b270624e4b3ae2d0d6d11e8c9ca2bbad53bea55a4f50c4430f46d22f5&req=dSkiF895m4hdXvMW1HO4zW9Ewgy%2F%2F3S0gj8mTHivCKYovxfVSA%2F%2B1WEi%2BRpr%0Aq5GwVv6KlYzT7LPBWcA%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1951676927/c66153a2c075c6a64404306aefd0/Screenshot%2B2025-10-28%2Bat%2B1_58_24-E2-80-AFPM.png?expires=1785299400&signature=a037fd6c4cf993acb8d26168edefbec7939ddd0cf226f67b7a66d496e3ed9215&req=dSkiF895m4hdXvMW1HO4zW9Ewgy%2F8H23gj8mTHivCKZBH0H3jGAdwleI1F5s%0AE43WmTFP8XJm1XNJE%2Bw%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 508754d9a..1cc6c5eee 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=1785260700&signature=7f10fdf4d850ea492e13c35cabc4925f0a78a2f57b40cf877a48511d2c55c8e2&req=diAiFcB%2Bn4NWWPMW1HO4zfGib2KmbQBYYabJlVJ9VPzEb3T%2FcFUvqL8LZCMd%0AsdRFMEBJB73sCMoV%2BZc%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2053902291/8c39d1a79dedc97411eed54dec5c/CleanShot+2026-02-11+at+11_25_34%402x.png?expires=1785299400&signature=37e8c050fc921035ec3f8d2bb62f2af72591d9d481015d20258bbdb890f844d8&req=diAiFcB%2Bn4NWWPMW1HO4zfGib2KmYglbYabJlVJ9VPxiOof%2Ffnj6azXsjop%2F%0Am%2F8SUzymJi%2BhIycs%2Bwk%3D%0A) ## How does disabling public projects work?