diff --git a/content/.metadata.json b/content/.metadata.json index f46b217462..fcddcd0c4e 100644 --- a/content/.metadata.json +++ b/content/.metadata.json @@ -1,7 +1,7 @@ { "metadata": { "version": "2.0", - "fetch_date": "2026-09-17T19:22:25.515409Z", + "fetch_date": "2026-09-18T05:21:48.494263Z", "section": "all" }, "items": [ @@ -30,7 +30,7 @@ "url": "https://platform.claude.com/docs/en/get-started", "status": "success", "path": "en/get-started.md", - "sha256": "8f089710465a9c627f3a33dfaec33dcd3352a81c80013967206187b81245422c", + "sha256": "736a3b24909164c5ad6e2f972645368b444970aa9d5e393b589b6715006284a9", "size": 19464 }, { @@ -58,8 +58,8 @@ "url": "https://platform.claude.com/docs/en/build-with-claude/handling-stop-reasons", "status": "success", "path": "en/build-with-claude/handling-stop-reasons.md", - "sha256": "efd90d3307adede99c65ae6faf26c590849b8ab2bf63e365825480e91855cdfd", - "size": 121102 + "sha256": "687d8372b3f8a04cdfc101cb6a753a14c3a374518a0002f427b9271f71bc45cf", + "size": 121288 }, { "url": "https://platform.claude.com/docs/en/build-with-claude/refusals-and-fallback", @@ -100,8 +100,8 @@ "url": "https://platform.claude.com/docs/en/build-with-claude/structured-outputs", "status": "success", "path": "en/build-with-claude/structured-outputs.md", - "sha256": "4e500fed30c759764ba06bcd96b9df7160ecb8e5e7611aae9bc229086e0b9204", - "size": 110492 + "sha256": "d5ffcb2a35df0070fa77e003d0f2faa92045abb1f93bf7fd5f67b9bfc60d34de", + "size": 110517 }, { "url": "https://platform.claude.com/docs/en/build-with-claude/citations", @@ -114,15 +114,15 @@ "url": "https://platform.claude.com/docs/en/build-with-claude/streaming", "status": "success", "path": "en/build-with-claude/streaming.md", - "sha256": "b0fefc9a3d98b06f5f18736c833527ccbad28ab5c01cd0270a8b1dffe243787a", - "size": 50872 + "sha256": "2cde13ddd3550a97ed019bc89fb1d1af36926c899f11d423227980aab48cd1ff", + "size": 50978 }, { "url": "https://platform.claude.com/docs/en/build-with-claude/batch-processing", "status": "success", "path": "en/build-with-claude/batch-processing.md", - "sha256": "16e64554cda0e626e61dd9614de4fdb60aebdfcf7b04654786f8c92307a1dab0", - "size": 73682 + "sha256": "fc513a279f548b2b6cb497db87681de9365ede2ca331673c8f9a9b11a0b72949", + "size": 74137 }, { "url": "https://platform.claude.com/docs/en/build-with-claude/search-results", @@ -156,8 +156,8 @@ "url": "https://platform.claude.com/docs/en/build-with-claude/thinking", "status": "success", "path": "en/build-with-claude/thinking.md", - "sha256": "0d92b54b019d206dd03d60d7d7e4bcdb8e4c2f9f9b6b8a91f5bab810c77c0ed2", - "size": 72055 + "sha256": "20e28393b937d8436091423bf2afbeabeccd2c97b5d9db72aef2da7858752f00", + "size": 72899 }, { "url": "https://platform.claude.com/docs/en/build-with-claude/thinking-steering-and-cost", @@ -191,8 +191,8 @@ "url": "https://platform.claude.com/docs/en/build-with-claude/extended-thinking", "status": "success", "path": "en/build-with-claude/extended-thinking.md", - "sha256": "f36ffca7bb81f3a718ac63d4feddc5d0579349aa60e328285bea1b996afc466b", - "size": 22064 + "sha256": "cb6d05be6b84ca90b2f36c1993ef56655d4a47959e190d3ed26437e9bd7aadc6", + "size": 22182 }, { "url": "https://platform.claude.com/docs/en/agents-and-tools/tool-use/overview", @@ -240,8 +240,8 @@ "url": "https://platform.claude.com/docs/en/agents-and-tools/tool-use/tool-runner", "status": "success", "path": "en/agents-and-tools/tool-use/tool-runner.md", - "sha256": "db04c59098955d6f262f3c64053a341690a96faba7b419527d86c750bca4b45f", - "size": 63739 + "sha256": "20005bb5e9611aba08ec8436c5b25d7575318acbff8338abdba67ffb3c601818", + "size": 63966 }, { "url": "https://platform.claude.com/docs/en/agents-and-tools/tool-use/strict-tool-use", @@ -282,8 +282,8 @@ "url": "https://platform.claude.com/docs/en/agents-and-tools/tool-use/advisor-tool", "status": "success", "path": "en/agents-and-tools/tool-use/advisor-tool.md", - "sha256": "e798608a5dfa622e88c58c702ea92d194e53b19d6d35af59857ed01dddea26ab", - "size": 97089 + "sha256": "d022531041a070a4d8ffa8208db88cb31bef9f3b5de335b045d82c0d21151f8a", + "size": 95968 }, { "url": "https://platform.claude.com/docs/en/agents-and-tools/tool-use/tool-search-tool", @@ -310,22 +310,22 @@ "url": "https://platform.claude.com/docs/en/agents-and-tools/tool-use/text-editor-tool", "status": "success", "path": "en/agents-and-tools/tool-use/text-editor-tool.md", - "sha256": "177d2635fdb6362ac4880d096f3046f73bf79cc947c8abb6d8e5036e64835759", - "size": 81068 + "sha256": "5895976bb3f2058da30462d17515307377f68b3a629c5294bb877cb15f5ae015", + "size": 81145 }, { "url": "https://platform.claude.com/docs/en/agents-and-tools/tool-use/computer-use-tool", "status": "success", "path": "en/agents-and-tools/tool-use/computer-use-tool.md", - "sha256": "23aa6bf74b1040e9628082f6e64adaa89d9e448e9af03e78594c73deffd452b3", - "size": 115654 + "sha256": "9c36950db9e5d900d715eb233e807b71574e3c7cc77c0ae56f3efd060e631193", + "size": 115751 }, { "url": "https://platform.claude.com/docs/en/agents-and-tools/tool-use/browser-use-tool", "status": "success", "path": "en/agents-and-tools/tool-use/browser-use-tool.md", - "sha256": "8119432f8aaee579c2a63b50183e20e46f9ccc6347ac780651ca55150497b558", - "size": 107323 + "sha256": "cab42ac0c7ade7c3a8a6edbd41b1c15361a0e4b645d3ff32892c61be5126ff01", + "size": 107358 }, { "url": "https://platform.claude.com/docs/en/agents-and-tools/tool-use/troubleshooting-tool-use", @@ -373,8 +373,8 @@ "url": "https://platform.claude.com/docs/en/agents-and-tools/tool-use/fine-grained-tool-streaming", "status": "success", "path": "en/agents-and-tools/tool-use/fine-grained-tool-streaming.md", - "sha256": "59b4014da614f1c40b7540d793a7a3d81f7a73b745ec02120d11817314b6befc", - "size": 35555 + "sha256": "47de62c46c5fe04e104d5573207782d153659b654dfdd370b626c95b67bd4e51", + "size": 36125 }, { "url": "https://platform.claude.com/docs/en/build-with-claude/context-windows", @@ -387,8 +387,8 @@ "url": "https://platform.claude.com/docs/en/build-with-claude/compaction", "status": "success", "path": "en/build-with-claude/compaction.md", - "sha256": "a9a1090a14a88c683044df4db409ce306d9af87cc9e82c373be2def3e2a66430", - "size": 127557 + "sha256": "562043fd4fdca1b2491501207f61205f56215d43ea9362fb4905b4df9541dbed", + "size": 136181 }, { "url": "https://platform.claude.com/docs/en/build-with-claude/context-editing", @@ -415,15 +415,15 @@ "url": "https://platform.claude.com/docs/en/build-with-claude/mid-conversation-effort-example", "status": "success", "path": "en/build-with-claude/mid-conversation-effort-example.md", - "sha256": "88a2fa6d07b354b90d37bbab7c6c1f65502776a31e4be76eaefe73d788798fbd", - "size": 165002 + "sha256": "76362f33e12381f9c8740881713af9343d05913b259eaa5f139f86d9be785ed6", + "size": 165337 }, { "url": "https://platform.claude.com/docs/en/build-with-claude/cache-diagnostics", "status": "success", "path": "en/build-with-claude/cache-diagnostics.md", - "sha256": "6c70c63566162d11cbe51abb10c94225e0c090b1f2efd1c0589dc9ff16159dd2", - "size": 48968 + "sha256": "d3e28ffed4926bb94eb4007a6592f53357e9a9d28a87e0822fb2db536118da17", + "size": 49157 }, { "url": "https://platform.claude.com/docs/en/build-with-claude/token-counting", @@ -506,8 +506,8 @@ "url": "https://platform.claude.com/docs/en/agents-and-tools/mcp-connector", "status": "success", "path": "en/agents-and-tools/mcp-connector.md", - "sha256": "eed74bbeb6a246b30e9a1ae2d00abf5599d291f16bda75f3c1cb045b7648a0a6", - "size": 49439 + "sha256": "773fcff1c17504f467db332367447a21aa74fe72ff82ce6679b0fcd9f33cb97e", + "size": 49734 }, { "url": "https://platform.claude.com/docs/en/agents-and-tools/mcp-tunnels/overview", @@ -576,36 +576,36 @@ "url": "https://platform.claude.com/docs/en/build-with-claude/claude-in-amazon-bedrock", "status": "success", "path": "en/build-with-claude/claude-in-amazon-bedrock.md", - "sha256": "4e91cdf822bf5b478532fdfde35f67b52f70dbb5474178081f8108f24be51c62", - "size": 20397 + "sha256": "aba0c1a2b2f55118b1ed051acfdde95354b4e41d43e3baba5ac8d79f0665be79", + "size": 20637 }, { "url": "https://platform.claude.com/docs/en/build-with-claude/claude-on-amazon-bedrock-legacy", "status": "success", "path": "en/build-with-claude/claude-on-amazon-bedrock-legacy.md", - "sha256": "ad53967a84bb65c81279f4cf3c367f96a1c551cbfb1e4449474b539f6684a834", - "size": 40298 + "sha256": "214583274e1592a08573f02994efe03d395b5509866371d33309e41ae8d9dac2", + "size": 40526 }, { "url": "https://platform.claude.com/docs/en/build-with-claude/claude-platform-on-aws", "status": "success", "path": "en/build-with-claude/claude-platform-on-aws.md", - "sha256": "0ff935251ef5bee607ae9d604d1c665269af87e8eda7c66c98362c1d5906779c", - "size": 86337 + "sha256": "95d6892924e5e6dde77da6b2f7fcb1fd38f67985fbe437c7e0efb47f67c2a4ba", + "size": 87248 }, { "url": "https://platform.claude.com/docs/en/build-with-claude/claude-on-vertex-ai", "status": "success", "path": "en/build-with-claude/claude-on-vertex-ai.md", - "sha256": "8157c52a75bb1ba88529a7c3e02e0456ec1d3b8b68401c398033b178290cd331", + "sha256": "4025f2c904a8be00a4525269430287ddf3edb151993df0d71e6f9794e5c7c420", "size": 32635 }, { "url": "https://platform.claude.com/docs/en/build-with-claude/claude-in-microsoft-foundry", "status": "success", "path": "en/build-with-claude/claude-in-microsoft-foundry.md", - "sha256": "f8e3dda0d43c9cd7976aab818d1b0d9f06f7d425812ee4a5e9aa5cb49c99ed60", - "size": 37242 + "sha256": "6988971f491ba5e1ea14f954454b532d0e9b156f4818f69045e368b222744b5d", + "size": 37482 }, { "url": "https://platform.claude.com/docs/en/managed-agents/overview", @@ -618,8 +618,8 @@ "url": "https://platform.claude.com/docs/en/managed-agents/quickstart", "status": "success", "path": "en/managed-agents/quickstart.md", - "sha256": "df09544732f9a161b67a2c9db33f28ab05a5e5df2a32e19e9fd8d34513728729", - "size": 30735 + "sha256": "789dbec9dc5cf387f23ce55acd669557ceab40aeda5129d24afad264a661fd97", + "size": 31226 }, { "url": "https://platform.claude.com/docs/en/managed-agents/onboarding", @@ -632,8 +632,8 @@ "url": "https://platform.claude.com/docs/en/managed-agents/migration", "status": "success", "path": "en/managed-agents/migration.md", - "sha256": "4624fa13705f3c0b9f32aafbf59692450c4b75ee582934b71b77c5609198790a", - "size": 53080 + "sha256": "49e179c6a278e247ffce713f2f6a9cc4053809edee440ae91019ac65264f73a4", + "size": 54269 }, { "url": "https://platform.claude.com/docs/en/managed-agents/agent-setup", @@ -667,8 +667,8 @@ "url": "https://platform.claude.com/docs/en/managed-agents/skills", "status": "success", "path": "en/managed-agents/skills.md", - "sha256": "35d65d57b1acdd09241ff5b13fd74545d182d690e6b065569479c606d76687f2", - "size": 22504 + "sha256": "9103ef787e4627af1795423fb40622414e5ecc81bfbb79eb135803e5f9689976", + "size": 23273 }, { "url": "https://platform.claude.com/docs/en/managed-agents/environments", @@ -716,8 +716,8 @@ "url": "https://platform.claude.com/docs/en/managed-agents/events-and-streaming", "status": "success", "path": "en/managed-agents/events-and-streaming.md", - "sha256": "6864fe7b305b5aa36895c016a598473288803df55de2b59529c8c096127904db", - "size": 117860 + "sha256": "57357dafc3134675f7d29492382d17a50757b7d94106f931b4c495733f6e5600", + "size": 120194 }, { "url": "https://platform.claude.com/docs/en/managed-agents/budgets", @@ -744,8 +744,8 @@ "url": "https://platform.claude.com/docs/en/managed-agents/vaults", "status": "success", "path": "en/managed-agents/vaults.md", - "sha256": "7f19f26fa99c2fcfe55b0bcaed09798c68ba363a0e2bd709fe6133c333cb8ad0", - "size": 46505 + "sha256": "50cdf58be928566dd357a92e960eade32c61bf813966b050500a0d59c9e9ee79", + "size": 46540 }, { "url": "https://platform.claude.com/docs/en/managed-agents/github", @@ -758,8 +758,8 @@ "url": "https://platform.claude.com/docs/en/managed-agents/files", "status": "success", "path": "en/managed-agents/files.md", - "sha256": "8908d422a446ed5606901247f5c710eb8b95c327755d84dd6c8b601030357351", - "size": 21873 + "sha256": "6e8298ee92853581cdbbbad3c25c122c6a145f842c3930162d6ee9ffbe547da7", + "size": 21939 }, { "url": "https://platform.claude.com/docs/en/managed-agents/memory", @@ -779,8 +779,8 @@ "url": "https://platform.claude.com/docs/en/managed-agents/multiagent-orchestration", "status": "success", "path": "en/managed-agents/multiagent-orchestration.md", - "sha256": "7f8e329e71df454f4cb6df44123e1f3aff8dfa5e99e5edff9bbc6b377be499de", - "size": 61081 + "sha256": "9a4afa7cd93b30333d3b858e1d17b0bea21362530a0d8e77739be422f488b21f", + "size": 61582 }, { "url": "https://platform.claude.com/docs/en/managed-agents/scheduled-deployments", @@ -1038,8 +1038,8 @@ "url": "https://platform.claude.com/docs/en/manage-claude/compliance-sessions", "status": "success", "path": "en/manage-claude/compliance-sessions.md", - "sha256": "ac6365e4d14477f4ee487ab8480215fff26e028cb6896fe6ac30f4009d360f89", - "size": 49934 + "sha256": "f833a369be5b47db1620b58deec5a528ea48f34a63e319ab9ede51f9981859a3", + "size": 50049 }, { "url": "https://platform.claude.com/docs/en/manage-claude/compliance-org-data", @@ -1052,8 +1052,8 @@ "url": "https://platform.claude.com/docs/en/manage-claude/compliance-integration-patterns", "status": "success", "path": "en/manage-claude/compliance-integration-patterns.md", - "sha256": "e754883edc9c4825cdebb5e43b00f9112e77899d0d66bf8d2a5be518523237a2", - "size": 17534 + "sha256": "eed8ca349247004d27e826c36e031e90fb750a1d577ea98f127c5d863569b8ee", + "size": 17663 }, { "url": "https://platform.claude.com/docs/en/manage-claude/compliance-errors", @@ -1066,8 +1066,8 @@ "url": "https://platform.claude.com/docs/en/manage-claude/compliance-faq", "status": "success", "path": "en/manage-claude/compliance-faq.md", - "sha256": "e38364c9ee038e90ece00bd7e1302f1f59612f2f0a0ccb6229b89b5c5d89e1e4", - "size": 25395 + "sha256": "98050b39a2f34f8d98ab71bdb66fd963586d62e0f1c7cb66d803f05124754601", + "size": 25619 }, { "url": "https://platform.claude.com/docs/en/about-claude/use-case-guides/overview", @@ -1094,8 +1094,8 @@ "url": "https://platform.claude.com/docs/en/about-claude/use-case-guides/content-moderation", "status": "success", "path": "en/about-claude/use-case-guides/content-moderation.md", - "sha256": "a2fd9611424fe82c707a5826fc9ab42556ce700bee805fffd94759551df95cd3", - "size": 115096 + "sha256": "3dce0826e8f5602e48fc0da0d2e8bbead3b2b03e98db0b49e5db02d0f1e32c55", + "size": 115176 }, { "url": "https://platform.claude.com/docs/en/about-claude/use-case-guides/legal-summarization", @@ -1164,8 +1164,8 @@ "url": "https://platform.claude.com/docs/en/test-and-evaluate/develop-tests", "status": "success", "path": "en/test-and-evaluate/develop-tests.md", - "sha256": "df88c8c7e4b3990cbb558d16fcf6e02c4a542e576079e96b377ecaf24e525138", - "size": 137666 + "sha256": "007bdee68b71817910e7a5ceefca77dcc6d36768a4fafd6de5f89dcc9c215c21", + "size": 137786 }, { "url": "https://platform.claude.com/docs/en/test-and-evaluate/strengthen-guardrails/reduce-latency", @@ -1220,8 +1220,8 @@ "url": "https://platform.claude.com/docs/en/models/overview", "status": "success", "path": "en/models/overview.md", - "sha256": "b2ae292320b5d068b20c426e6e4e0333d1a11e25c8457748ca39de25de283c27", - "size": 16851 + "sha256": "24cee96a02abd68ca1bae07a6791fc1a9f4ba66fbbc3f6385369d7f9d4ebd7e1", + "size": 16849 }, { "url": "https://platform.claude.com/docs/en/models/fable-5-1/overview", @@ -1248,8 +1248,8 @@ "url": "https://platform.claude.com/docs/en/models/opus-5/overview", "status": "success", "path": "en/models/opus-5/overview.md", - "sha256": "00f5422160fe2e84f50394b06d01f6e412bbe2553a28f6ddbd56bf6379455593", - "size": 12624 + "sha256": "6e6ea214138685300cefa55ede9ed8393f76d7b2ab527449164c4df863a301f7", + "size": 13383 }, { "url": "https://platform.claude.com/docs/en/models/opus-5/whats-new-opus-5", @@ -1262,8 +1262,8 @@ "url": "https://platform.claude.com/docs/en/models/opus-5/migration-guide", "status": "success", "path": "en/models/opus-5/migration-guide.md", - "sha256": "2c90776b634505f2d6035e2f08ffac4bf934f8e5be4f77391f159416c7bd5cc5", - "size": 94684 + "sha256": "e6494704d2743676c6408165baa96bdcca155282392f8dde918c73896cc70d24", + "size": 94708 }, { "url": "https://platform.claude.com/docs/en/models/sonnet-5/overview", @@ -1283,8 +1283,8 @@ "url": "https://platform.claude.com/docs/en/models/sonnet-5/migration-guide", "status": "success", "path": "en/models/sonnet-5/migration-guide.md", - "sha256": "ffbb0da772db9854827013343a9461030ab0b5a885813b965b97a830dcd0c55f", - "size": 38352 + "sha256": "756681842fe2d97a4873e4abbab03a2e6e8c9668682f1d2573206261bf089b68", + "size": 38667 }, { "url": "https://platform.claude.com/docs/en/models/haiku-4-5/overview", @@ -1409,7 +1409,7 @@ "url": "https://platform.claude.com/docs/en/about-claude/pricing", "status": "success", "path": "en/about-claude/pricing.md", - "sha256": "a24307b29df318ab8dae2878df958421527716fda65de9c178969e8d946b20f2", + "sha256": "52ec9ccca111bc1635c300684c893fcedff8b146e5f6bed3c1c8c0fdf29a8d84", "size": 45062 }, { @@ -1633,8 +1633,8 @@ "url": "https://platform.claude.com/docs/en/cli-sdks-libraries/sdks/java", "status": "success", "path": "en/cli-sdks-libraries/sdks/java.md", - "sha256": "213fc898515dcf613957d158d4b4bd97abce90b4aa28ab5a81af6fdea5b2b09e", - "size": 47701 + "sha256": "3e39dc1049863b01000a29cc177c5ad91d2c4a73ba49b0db057912eef712b2c7", + "size": 47848 }, { "url": "https://platform.claude.com/docs/en/cli-sdks-libraries/sdks/php", @@ -1675,8 +1675,8 @@ "url": "https://platform.claude.com/docs/en/api/beta-headers", "status": "success", "path": "en/api/beta-headers.md", - "sha256": "cfa06bd20fb1c32ccac5e24a128b8bdb494b31167ea675156a16a5cba4ce5502", - "size": 7800 + "sha256": "0bbcb58acf1b62e0237f75213f1f79011c8dd6a37fecc0865f809ee4dedb2c67", + "size": 8080 }, { "url": "https://platform.claude.com/docs/en/api/errors", @@ -1689,8 +1689,8 @@ "url": "https://platform.claude.com/docs/en/api/rate-limits", "status": "success", "path": "en/api/rate-limits.md", - "sha256": "6bd36bc714a3b2ce3fda8099f990f5257b3abc2fe3ed6a001ace9aa31bc0ded4", - "size": 33086 + "sha256": "573eafeaf45350bba94b3ddb275c8bf60cc5ad685d914971e2098e200f397429", + "size": 33137 }, { "url": "https://platform.claude.com/docs/en/api/service-tiers", @@ -3957,29 +3957,29 @@ "url": "https://platform.claude.com/docs/en/api/compliance", "status": "success", "path": "en/api/compliance.md", - "sha256": "a7d546bd52fe02ed3b1bdd614483d5b267e3c9bbe100eaebb6d444ac24ef85b2", - "size": 3326515 + "sha256": "1cc5e548a6a5d7e3e8ecc34205df917ad2a6c8ad04f29ad0ee7eb4ca91238d96", + "size": 3339310 }, { "url": "https://platform.claude.com/docs/en/api/compliance/activities", "status": "success", "path": "en/api/compliance/activities.md", - "sha256": "ecb04b0dd7683084f89f5073f2289953d7ba6aa94e1204f57496d03d6a831c94", - "size": 6286160 + "sha256": "4a9db70ea3ae44d6eac1e3ba01a9c0343e3c5f937afe3f374e67db0a2729e997", + "size": 6309584 }, { "url": "https://platform.claude.com/docs/en/api/compliance/activities/list", "status": "success", "path": "en/api/compliance/activities/list.md", - "sha256": "9d39eff7fcc30a40dd4c303a021ccc77c21688012a080823b2fc97953cd65405", - "size": 3203883 + "sha256": "c56a060996b9cf329a186203be5977e2ea95fc767ae0c183af21ac60e2290b0a", + "size": 3215999 }, { "url": "https://platform.claude.com/docs/en/api/compliance/organizations", "status": "success", "path": "en/api/compliance/organizations.md", - "sha256": "135ea4deaf1ecf15cd63d9df1bcaa271a8ea76287824aff2ea4440febef42c3f", - "size": 17751 + "sha256": "28801f86dc19316e098751f5295cd6217af2ef6fe4eb97787b7f16b82d249707", + "size": 18430 }, { "url": "https://platform.claude.com/docs/en/api/compliance/organizations/list", @@ -4041,15 +4041,15 @@ "url": "https://platform.claude.com/docs/en/api/compliance/organizations/settings", "status": "success", "path": "en/api/compliance/organizations/settings.md", - "sha256": "f8c536730c17e7d30bb288f1630c0d7871c34d322aa85791a3e8058a6fcce19f", - "size": 16043 + "sha256": "2468abff596ee60650c946f70b0558ca99f078404c97c4f287ae4e23d7a6f172", + "size": 17424 }, { "url": "https://platform.claude.com/docs/en/api/compliance/organizations/settings/retrieve", "status": "success", "path": "en/api/compliance/organizations/settings/retrieve.md", - "sha256": "ea0a306b214615856a3e2776a4e80f005b74612372d8a6f90de2e6229935a774", - "size": 8512 + "sha256": "d5dfb74b2b057c16bcb7e9aa1d870f468915d208e6de7aab8be737dd1bc727c3", + "size": 9191 }, { "url": "https://platform.claude.com/docs/en/api/compliance/groups", @@ -4391,8 +4391,8 @@ "url": "https://platform.claude.com/docs/en/claude_api_primer", "status": "success", "path": "en/claude_api_primer.md", - "sha256": "606cd1bee7353e93f3a3d244d6561bd708a3e49ae6d0d9cf5cc9d60eba9b6317", - "size": 28147 + "sha256": "5ab0f687bb1d81286fc5628bbfbc1ff774e6e00d92db215d0499d21a853591a8", + "size": 28169 }, { "url": "https://platform.claude.com/docs/en/models/fable-5/introducing-claude-fable-5-and-claude-mythos-5", @@ -4426,8 +4426,8 @@ "url": "https://code.claude.com/docs/en/changelog", "status": "success", "path": "en/docs/claude-code/changelog.md", - "sha256": "00911181ed9205015a66350a2877efb3c9e139eb1e024183e878dc3eedec4f8a", - "size": 753228 + "sha256": "91154c90ef0f2959a50159a5f76238255d87034bd33fbf4b9423df03d3ebf53c", + "size": 767853 }, { "url": "https://code.claude.com/docs/en/how-claude-code-works", @@ -4447,8 +4447,8 @@ "url": "https://code.claude.com/docs/en/claude-directory", "status": "success", "path": "en/docs/claude-code/claude-directory.md", - "sha256": "af8d8473fea0aceb8eb6c2173a9cf092c2160afbb0da19a6e96de41f75427079", - "size": 100642 + "sha256": "808b6a06b86abe4a20cc21002785210b89a08280b47e98f21cf76ffcf3fef626", + "size": 102185 }, { "url": "https://code.claude.com/docs/en/context-window", @@ -4461,15 +4461,15 @@ "url": "https://code.claude.com/docs/en/prompt-caching", "status": "success", "path": "en/docs/claude-code/prompt-caching.md", - "sha256": "718e4cff0c3081f44897cb2b51c999f069e617eabb2334dfa81220f6fa1efbd5", - "size": 41232 + "sha256": "b020c8ef85293f3bf8691aee40422e2a599cd8e5628a7a24b3f8560548c00bf2", + "size": 41301 }, { "url": "https://code.claude.com/docs/en/memory", "status": "success", "path": "en/docs/claude-code/memory.md", - "sha256": "f212449ea6fbdb88bea34ad85c967ae3681470bdbd376ac84bda7f535029e677", - "size": 38070 + "sha256": "98c6d06ea754d557011393608849dfbe23eed8634edb3db318f77178b6ce0f1b", + "size": 38430 }, { "url": "https://code.claude.com/docs/en/sessions", @@ -4510,22 +4510,22 @@ "url": "https://code.claude.com/docs/en/remote-control", "status": "success", "path": "en/docs/claude-code/remote-control.md", - "sha256": "33d123c723a01390e89649a6af83ba9201931fe07bb9735cfd7d9a2f5657c35b", - "size": 62308 + "sha256": "50a895893e7dd87323bc8f55f37fb13ef21b42737521ebdca8d22ee514c3b05d", + "size": 62676 }, { "url": "https://code.claude.com/docs/en/claude-projects", "status": "success", "path": "en/docs/claude-code/claude-projects.md", - "sha256": "7548889590cd0a89710f6028e4dd95e4f6ca1d743be1a5041d2ca73527a664f8", - "size": 59836 + "sha256": "868bb79b66c9f22d0d8789db963ec8994133471e57835f00d91d24dd7a16bce7", + "size": 60423 }, { "url": "https://code.claude.com/docs/en/mobile", "status": "success", "path": "en/docs/claude-code/mobile.md", - "sha256": "88ad021221b456e6b5ad66d91c0d72e3be90e3a5a9748d6ca0f7f672a89521d1", - "size": 8901 + "sha256": "c319542dff99bb04203997d68befd85dc6d9958a92efe3c8044475d498e01070", + "size": 9307 }, { "url": "https://code.claude.com/docs/en/chrome", @@ -4545,8 +4545,8 @@ "url": "https://code.claude.com/docs/en/vs-code", "status": "success", "path": "en/docs/claude-code/vs-code.md", - "sha256": "f7b8726be7b8218e43f8dc53e1edcd637c3e7ebfa37f995354c2be904fabc6ce", - "size": 72978 + "sha256": "75284fcd4e6e8b146f00854fa9872b8a82b54d0ca8b4d9cfc1f4f64f72372173", + "size": 73249 }, { "url": "https://code.claude.com/docs/en/jetbrains", @@ -4573,29 +4573,29 @@ "url": "https://code.claude.com/docs/en/web-quickstart", "status": "success", "path": "en/docs/claude-code/web-quickstart.md", - "sha256": "d4c25d82e3f5b6767da60974de78e8eb795d6cbdf91203ff98f81ea6367a9955", - "size": 26254 + "sha256": "3e1276fde82eb25e52e8813c6efa212378d3db6b0ee669ecc44a0fa072a41ae7", + "size": 26065 }, { "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": "fa0f0c6e6745d09c3405342d6913e4bb97fe2463d842a4fad07f0ef9ab203ba6", - "size": 41668 + "sha256": "167c5456e0649ced062e5fe06757ebf69ae6499e50fd5970db137b90427eec27", + "size": 41992 }, { "url": "https://code.claude.com/docs/en/routines", "status": "success", "path": "en/docs/claude-code/routines.md", - "sha256": "ae7ae570e21efa1e83b046415f8613439882577f3731740e6c08109c9c75a4b8", - "size": 33659 + "sha256": "d76aa5af0d53c71ec2496c591db62a2774baf98e4455e5876adc328eaf1e5d2d", + "size": 33670 }, { "url": "https://code.claude.com/docs/en/ultrareview", "status": "success", "path": "en/docs/claude-code/ultrareview.md", - "sha256": "5c67a641eb48ad9e74871876d4fc36613f3c4cd772f5c181e94e232a3aff71e0", - "size": 18563 + "sha256": "2b253058f3be32f575821fdd4ee217a4abc3c30e2b679e72ee28bcaeb74ebcd5", + "size": 18765 }, { "url": "https://code.claude.com/docs/en/desktop-quickstart", @@ -4713,8 +4713,8 @@ "url": "https://code.claude.com/docs/en/agent-teams", "status": "success", "path": "en/docs/claude-code/agent-teams.md", - "sha256": "953216d8650c039c20ef1bc507a5a6280407a7958ee1d90786869bc987d1ba4a", - "size": 41115 + "sha256": "277e67df91e054c113b91fc4a42fe324d55da0f3da9df16cde5caf3276c6dbc1", + "size": 42029 }, { "url": "https://code.claude.com/docs/en/cross-session-messaging", @@ -4727,15 +4727,15 @@ "url": "https://code.claude.com/docs/en/workflows", "status": "success", "path": "en/docs/claude-code/workflows.md", - "sha256": "48bb1efa5cf8f1d0277d8f281606f006a9c021c7748d261c073a52e77f303e7e", - "size": 41889 + "sha256": "4ce35dc5460d6230fe3338c60a4e160ab2a24baf47b07ebcf2e8d1c4085a5e07", + "size": 43505 }, { "url": "https://code.claude.com/docs/en/worktrees", "status": "success", "path": "en/docs/claude-code/worktrees.md", - "sha256": "69cbc30b83b71144bc9f98e200fc12f679765cab9ce6f01e5292b9646d926f17", - "size": 37222 + "sha256": "ebbf49c2d8d0edf248b5b609f2ecc8316364696e6ffb185a46d20a172873a964", + "size": 37648 }, { "url": "https://code.claude.com/docs/en/mcp-quickstart", @@ -4748,22 +4748,22 @@ "url": "https://code.claude.com/docs/en/mcp", "status": "success", "path": "en/docs/claude-code/mcp.md", - "sha256": "67dccd0f48a35655d560f921f3974ed2a8c50fb999a9859439d3748dd8a48221", - "size": 117143 + "sha256": "d872a8aded51160476e935bad371f10a06e31d244f23f3f4f28f057c0f0ca36e", + "size": 117610 }, { "url": "https://code.claude.com/docs/en/skills", "status": "success", "path": "en/docs/claude-code/skills.md", - "sha256": "94f93f724453ef8bd9cb94af5fe9cb73aa77b3573019f6f06e7a7844bbb49af1", - "size": 114929 + "sha256": "5a2e0e2ee821fb7b79bff173358f48c036a2c9406a0446bc8292aa0221eee4af", + "size": 115336 }, { "url": "https://code.claude.com/docs/en/discover-plugins", "status": "success", "path": "en/docs/claude-code/discover-plugins.md", - "sha256": "b5235a7b83b95192aeadfc078fcbd424ecdeb949fa88bc5bfd82513d6e633b11", - "size": 35829 + "sha256": "2600fca633e0c31edd0ac5a0f8816e1fedee1f554c4c3ed6acc393966b2a1784", + "size": 38564 }, { "url": "https://code.claude.com/docs/en/plugins", @@ -4804,8 +4804,8 @@ "url": "https://code.claude.com/docs/en/scheduled-tasks", "status": "success", "path": "en/docs/claude-code/scheduled-tasks.md", - "sha256": "5f59637b18745f0e55bab0e7881e27a633b41dce78fd14ef0f95318b609b213a", - "size": 17717 + "sha256": "11a74cf0d77d8c0cd9576d760b4c6d5b4c55e0d5a5ea566816513078ebabb33c", + "size": 17963 }, { "url": "https://code.claude.com/docs/en/goal", @@ -4818,8 +4818,8 @@ "url": "https://code.claude.com/docs/en/headless", "status": "success", "path": "en/docs/claude-code/headless.md", - "sha256": "72521df6ef71d978d8c8298e518db15a4362b4fbf97f32a36626e31d088675a1", - "size": 36247 + "sha256": "a17fc295554efd8ec6860edf3ea0b45ba60edfe431bb888ff5bc1d86530c759c", + "size": 36448 }, { "url": "https://code.claude.com/docs/en/deep-links", @@ -4860,8 +4860,8 @@ "url": "https://code.claude.com/docs/en/errors", "status": "success", "path": "en/docs/claude-code/errors.md", - "sha256": "760c0cc89c957c478ff48868c48b800af7ff509c67c6c60a9ffa077b76dfbb6c", - "size": 440885 + "sha256": "6a0195a164b013439616064a80b4fcc3296c8475f10fc208742b9571c27cb319", + "size": 463543 }, { "url": "https://code.claude.com/docs/en/admin-setup", @@ -4888,22 +4888,22 @@ "url": "https://code.claude.com/docs/en/managed-settings", "status": "success", "path": "en/docs/claude-code/managed-settings.md", - "sha256": "da3cf2184feaba41349980bac68ce19f7df6fe7e01d11d9569c6f5bb05a8591d", - "size": 65533 + "sha256": "a9b2c960078379e71cff11d742d632dc072312ae86f9c445ab882c9633efeab5", + "size": 66967 }, { "url": "https://code.claude.com/docs/en/server-managed-settings", "status": "success", "path": "en/docs/claude-code/server-managed-settings.md", - "sha256": "adff1ad2888ed0f9ddd282ff2ad702e627765a1ed4c8851cc2d904f30726b9e2", - "size": 47102 + "sha256": "5dbc2de84da3fdb50184d5496bf8a8007c7e103d9394a9754d768f9f2c3b9af8", + "size": 47105 }, { "url": "https://code.claude.com/docs/en/managed-mcp", "status": "success", "path": "en/docs/claude-code/managed-mcp.md", - "sha256": "5faa9995aee3a12a718568f28c89c41ae5ffcd352115a6dba15993a1ec17bde5", - "size": 51029 + "sha256": "537dd650bfe3537d8274ce381a6602c8a4f07390c454c066626420ce3b1657e1", + "size": 50436 }, { "url": "https://code.claude.com/docs/en/auto-mode-config", @@ -4930,8 +4930,8 @@ "url": "https://code.claude.com/docs/en/amazon-bedrock", "status": "success", "path": "en/docs/claude-code/amazon-bedrock.md", - "sha256": "4fd46c0244951439e66a99df21f6692da049b1c53ef8d21d6abd23a7fb8417ef", - "size": 42647 + "sha256": "ef4f6b5dec0bc8ad1fe6c4df969030cd2c91d0842f810f56886af7d966410d78", + "size": 42619 }, { "url": "https://code.claude.com/docs/en/claude-platform-on-aws", @@ -4986,8 +4986,8 @@ "url": "https://code.claude.com/docs/en/claude-apps-gateway", "status": "success", "path": "en/docs/claude-code/claude-apps-gateway.md", - "sha256": "4c39400632d5d10eef18295266d0779287d927b4653b1e560132157d3193be92", - "size": 66252 + "sha256": "671e69a51f9bc544d2f651f8728e0b310d202501590a11bd915f9a7beaf4995a", + "size": 66568 }, { "url": "https://code.claude.com/docs/en/claude-apps-gateway-config", @@ -5007,8 +5007,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": "0546c29586a024835752a08c4447e0019fa3004871eff7065971ec4732b1551c", - "size": 75869 + "sha256": "3474b661a72413e9040f79e25a8e5906b2c2e78e1b33393840de95409862cba1", + "size": 77164 }, { "url": "https://code.claude.com/docs/en/claude-apps-gateway-on-aws", @@ -5049,8 +5049,8 @@ "url": "https://code.claude.com/docs/en/llm-gateway-protocol", "status": "success", "path": "en/docs/claude-code/llm-gateway-protocol.md", - "sha256": "8e2d29d0db638a5d3ddd5523b12300206127f9a952e2e7540fbfb1df0847a385", - "size": 35528 + "sha256": "19c52d46285264754c3e271d8234e98767b5d6fd25201f92ed883ab5a00c2e0e", + "size": 35740 }, { "url": "https://code.claude.com/docs/en/monitoring-usage", @@ -5077,15 +5077,15 @@ "url": "https://code.claude.com/docs/en/plugin-marketplaces", "status": "success", "path": "en/docs/claude-code/plugin-marketplaces.md", - "sha256": "31e8773f0cff90d72c6ef8530ba3a6c52438c47c95cb419be4fff315d7ec47f5", - "size": 124668 + "sha256": "6564466c4d9d9e93a67ddbcd1781fe4cf73ec1aa06a41383eeb47f6637b0a689", + "size": 127235 }, { "url": "https://code.claude.com/docs/en/plugin-dependencies", "status": "success", "path": "en/docs/claude-code/plugin-dependencies.md", - "sha256": "00a0c4ecf579422dcf1e8cced5d41ef0cbc0f9f49875495f08db3bee04237cfd", - "size": 24404 + "sha256": "51a35b04e9dca54f568fcd70351f8db009aa75a40cdb87a34e5a4b309c93d434", + "size": 24428 }, { "url": "https://code.claude.com/docs/en/plugin-hints", @@ -5098,8 +5098,8 @@ "url": "https://code.claude.com/docs/en/plugin-relevance", "status": "success", "path": "en/docs/claude-code/plugin-relevance.md", - "sha256": "1dd6dcbd13adf115d9728d92bf152976b1e65d955ea5f933e5d5b1724b2c03c1", - "size": 15665 + "sha256": "0f54c213e843fb758ef4c5131cc9a34beb094bbb014ad66d70402a27c7b42a05", + "size": 15811 }, { "url": "https://code.claude.com/docs/en/security", @@ -5147,8 +5147,8 @@ "url": "https://code.claude.com/docs/en/settings-reference", "status": "success", "path": "en/docs/claude-code/settings-reference.md", - "sha256": "8fdd564085ed6e40e0f4e1ba962c9cdc483b85c33fd2ef59806cfed4f081fc66", - "size": 443329 + "sha256": "912a26a5f027e0495aa9ddf1ffc41723c6275efaf083eb6e3c20dfaabdee5219", + "size": 443586 }, { "url": "https://code.claude.com/docs/en/settings-example", @@ -5168,15 +5168,15 @@ "url": "https://code.claude.com/docs/en/permission-modes", "status": "success", "path": "en/docs/claude-code/permission-modes.md", - "sha256": "77bbe7bccf66d50594d1c2209b209ee652d01c99580705917a88f24976d7eab2", - "size": 82080 + "sha256": "6f3718d5a765fe18e3b8f916dd149ea6fb0a892d3ccbc723c23cc5f898f2fd58", + "size": 82151 }, { "url": "https://code.claude.com/docs/en/sandboxing", "status": "success", "path": "en/docs/claude-code/sandboxing.md", - "sha256": "f4aea577087c100af55310a11beb32fc079684124c00d34d487bd7c9be9419b6", - "size": 77876 + "sha256": "c1b48d15ec7181a1839b6c519757fd51d499ec72c6718a6296d7a8629baa18d0", + "size": 77859 }, { "url": "https://code.claude.com/docs/en/sandbox-environments", @@ -5189,8 +5189,8 @@ "url": "https://code.claude.com/docs/en/cloud-environments", "status": "success", "path": "en/docs/claude-code/cloud-environments.md", - "sha256": "c3b33dadfb56e294adcdbbdb0dbc89659e42b925c29de64d20ce23bdf8d4936c", - "size": 65629 + "sha256": "4ce623ebfa9a19052925c248803d90533076f71ea78eb04346cc64d6ea35f4a4", + "size": 65760 }, { "url": "https://code.claude.com/docs/en/self-hosted-environments", @@ -5266,8 +5266,8 @@ "url": "https://code.claude.com/docs/en/output-styles", "status": "success", "path": "en/docs/claude-code/output-styles.md", - "sha256": "ee687cf4fca32cf584f711e0e53a2dc161e9874d61bdd0e9d21fff9696edf71e", - "size": 11621 + "sha256": "0ac762eddac12fd76edf7837f39b471c9fecb834f511319c89fa216f053b2512", + "size": 12105 }, { "url": "https://code.claude.com/docs/en/terminal-config", @@ -5287,8 +5287,8 @@ "url": "https://code.claude.com/docs/en/accessibility", "status": "success", "path": "en/docs/claude-code/accessibility.md", - "sha256": "62728ac7ccaa16f72f2c53bc2dcd418ac3b56331bab27bd0c067b906b6da1cd9", - "size": 14604 + "sha256": "3321cce3168345b521b48ff3dae4bdea041c7f2002362f6b03a64d893e2fd5fa", + "size": 14439 }, { "url": "https://code.claude.com/docs/en/voice-dictation", @@ -5322,29 +5322,29 @@ "url": "https://code.claude.com/docs/en/commands", "status": "success", "path": "en/docs/claude-code/commands.md", - "sha256": "46f7b66b9b35b2a2eb9ee8f0a3006cfa8ef2bab0b88045ac2aad92fc868c5c18", - "size": 175118 + "sha256": "1ba21dd2fbe7151da4dbc0a7d78ad82673eda45eea33857763d911e094e1c952", + "size": 176593 }, { "url": "https://code.claude.com/docs/en/env-vars", "status": "success", "path": "en/docs/claude-code/env-vars.md", - "sha256": "3b2476ef129a40f7ea055bae089c5ee17031f1d872a7cd8518be258bb98de749", - "size": 488155 + "sha256": "4c12354ed5b3015794d2c8868c40f7ccd9dd67a04371e838f93d733a25098509", + "size": 496121 }, { "url": "https://code.claude.com/docs/en/tools-reference", "status": "success", "path": "en/docs/claude-code/tools-reference.md", - "sha256": "b04a5e501761d932a73ab0a4edb03e8ca945d9314fb09d090fe7bb664d0128e3", - "size": 109682 + "sha256": "db05442248b85c9bd4302e70b86a0ad14ea9d82ee567956694922e323bd85d82", + "size": 109948 }, { "url": "https://code.claude.com/docs/en/interactive-mode", "status": "success", "path": "en/docs/claude-code/interactive-mode.md", - "sha256": "6ea4606207c9a740c076d141f5601f9bb55d41704807fd3aa50c40b3b502535d", - "size": 90046 + "sha256": "fb1e00c168c9640c979ed302a18726443246049b9a7d82684a0684871db65c4d", + "size": 90149 }, { "url": "https://code.claude.com/docs/en/checkpointing", @@ -5357,22 +5357,22 @@ "url": "https://code.claude.com/docs/en/hooks", "status": "success", "path": "en/docs/claude-code/hooks.md", - "sha256": "745bd4fd4d198c6919f6f282d26f4b19ecbeaf5a89934174afc4eaa47a8e2e6a", - "size": 327786 + "sha256": "84dee417bb2ee0b6a858f5f874ebd9a1690c0ddcfef479abdb49f625cf19a4c1", + "size": 328716 }, { "url": "https://code.claude.com/docs/en/plugins-reference", "status": "success", "path": "en/docs/claude-code/plugins-reference.md", - "sha256": "d5de53e3435750235e0cd4549b51f1bf19ad8b622a5ff945901d8484f0cedba2", - "size": 141087 + "sha256": "5c1824cd1851c35e079c72db49e383bac26cd376fddb6b96ca6df2ecf980e544", + "size": 141869 }, { "url": "https://code.claude.com/docs/en/channels-reference", "status": "success", "path": "en/docs/claude-code/channels-reference.md", - "sha256": "9ea1a92e784f8960727f463f3c9040bd3f665d28ff91a95257d5d516e04e2c09", - "size": 50423 + "sha256": "ff07eaca09f2fe7a89b148682eccc8a9fdadd915c05dd950ae60f9ac5e87e826", + "size": 50377 }, { "url": "https://code.claude.com/docs/en/glossary", @@ -5490,8 +5490,8 @@ "url": "https://code.claude.com/docs/en/agent-sdk/mcp", "status": "success", "path": "en/docs/claude-code/agent-sdk/mcp.md", - "sha256": "c6c92f6d55a03b8c0dd198833b29885a7827441d834db438b83b0e33b37c38a8", - "size": 35899 + "sha256": "c05c0471ff3869ccac89e2b43ed37fe5335d32f18d6f5a00add64e0a6bd91b11", + "size": 37615 }, { "url": "https://code.claude.com/docs/en/agent-sdk/tool-search", @@ -5511,15 +5511,15 @@ "url": "https://code.claude.com/docs/en/agent-sdk/modifying-system-prompts", "status": "success", "path": "en/docs/claude-code/agent-sdk/modifying-system-prompts.md", - "sha256": "1c1bb26b5c85e93062a9f1f222e31744f451ddaf2d741f6997bf481929f67c9a", - "size": 28820 + "sha256": "4d57e2b00ed1c5537269d85fe4560d0c1f6974c59101a549ce03e6402f98aa0f", + "size": 28946 }, { "url": "https://code.claude.com/docs/en/agent-sdk/skills", "status": "success", "path": "en/docs/claude-code/agent-sdk/skills.md", - "sha256": "367d6194fc6145c1ff77c583c7bd375f7830f42655350628df6b60fd9c32c482", - "size": 26863 + "sha256": "c490d4f3e1724845171ad2c8ee7dba2d354f4b969500e0e26fc9891729063041", + "size": 27470 }, { "url": "https://code.claude.com/docs/en/agent-sdk/plugins", @@ -5588,8 +5588,8 @@ "url": "https://code.claude.com/docs/en/agent-sdk/typescript", "status": "success", "path": "en/docs/claude-code/agent-sdk/typescript.md", - "sha256": "c9966da9e3d62c6795df0233a7b1cfa940b057c21e0663b8dfeba9def1217591", - "size": 359847 + "sha256": "664acfb9aaa0d7129a9bef6a74988c937589710d51e1f5e48e3c863f9ab88091", + "size": 369962 }, { "url": "https://code.claude.com/docs/en/agent-sdk/typescript-v2-preview", @@ -8374,8 +8374,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": "a975e76216742cd6b91b4a39a0ba8c4650d0ef667fade90ed2992ec40fb389a2", - "size": 5885 + "sha256": "64fd7341ce78e02d4d4444897b29ea72f12d438e281de2d87d3cfb798a7223bd", + "size": 5879 }, { "url": "https://support.claude.com/en/articles/8241126-upload-files-to-claude", @@ -8444,8 +8444,8 @@ "url": "https://support.claude.com/en/articles/8325618-paid-plan-billing-faqs", "status": "success", "path": "support/8325618-paid-plan-billing-faqs.md", - "sha256": "bc5af25ba119262ff87074cf550cbd62b173f25409f313e4196ca849aa28f67e", - "size": 4555 + "sha256": "a92eba2d2789e648d6e2c893fc2a6a88f0841f1977e547f3f779585347129ed7", + "size": 4553 }, { "url": "https://support.claude.com/en/articles/8325621-i-would-like-to-input-sensitive-data-into-my-chats-with-claude-who-can-view-my-conversations", @@ -8507,8 +8507,8 @@ "url": "https://support.claude.com/en/articles/8887527-customizing-your-appearance-settings", "status": "success", "path": "support/8887527-customizing-your-appearance-settings.md", - "sha256": "9b2327d44e829793c3a604e71d60b2534d86b20399799765352c7681994cf5ec", - "size": 1874 + "sha256": "d44674034817e04b225d43c5051609ad1aea852c526e81b8a8cd2daf76e871f7", + "size": 1866 }, { "url": "https://support.claude.com/en/articles/8896518-does-anthropic-crawl-data-from-the-web-and-how-can-site-owners-block-the-crawler", @@ -8682,8 +8682,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": "b0610b6e8328c57afae7da6badf073902c2431fc4cac095839174747e0c8ab05", - "size": 9725 + "sha256": "016d65414369cff13969fafe8bec4eaa925ce288d535ab457b310ec8eac8b8f9", + "size": 9727 }, { "url": "https://support.claude.com/en/articles/9301722-updates-to-our-acceptable-use-policy-now-usage-policy-consumer-terms-of-service-and-privacy-policy", @@ -8731,15 +8731,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": "b2f889752f40d6f64c69fb6b0c68ccdc35b6ecb6165b83a388b6e80117f4c565", - "size": 8855 + "sha256": "b30304dc3c43174575e7aef4ee3e068f8b60ba75ff0a2a30816c128244463118", + "size": 8853 }, { "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": "b60e1d1ac6ad980e1084f65f468ee05c6f83a61693a536523f76d19f9304154f", - "size": 8557 + "sha256": "4738c436a985ae73f775a63cb8deaf7519c122583d747f8a389a3392a7a646ff", + "size": 8563 }, { "url": "https://support.claude.com/en/articles/9519291-what-is-anthropic-s-policy-for-handling-governmental-requests-for-user-information", @@ -8759,8 +8759,8 @@ "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": "c80e178ec78b7fab790ba8a103e7ef2a2da1039090b947a41a293a8b2a7badf7", - "size": 5096 + "sha256": "ae04c95a206845b18a3270642c5c289eadde43f71f74e75272b33e6bb4f6de2e", + "size": 5102 }, { "url": "https://support.claude.com/en/articles/9547008-publish-and-share-artifacts", @@ -8843,7 +8843,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": "46f18639fcad51f21b7ee2f1bd15cecf40553b68e73aa534b6323152e3242c1e", + "sha256": "0fa020ec0483cbc97580676609bbe76c399311c6638a90c924da36c78b71acd9", "size": 2578 }, { @@ -8983,15 +8983,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": "318e6ca62a857fc3c25bd5c2ea7edbdd43956690a23363898a3ce78c3dd930aa", - "size": 2494 + "sha256": "8ad5a5e71a0cbefa4cd96543f481ba89aeedd6aad7e4add3db372b32d54e3e44", + "size": 2492 }, { "url": "https://support.claude.com/en/articles/10366376-how-can-i-delete-my-claude-console-account", "status": "success", "path": "support/10366376-how-can-i-delete-my-claude-console-account.md", - "sha256": "e911688b158751053b93dd111529f47a75a655a305e55c8ff77011d95cc6d13f", - "size": 3171 + "sha256": "5515c193110f39e9bc5ac4c451708d2e43471dff198c1c90ab9231bb723678a6", + "size": 3167 }, { "url": "https://support.claude.com/en/articles/10366389-how-can-i-get-higher-rate-limits-on-the-claude-api", @@ -9032,15 +9032,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": "d7e4c4209a4ca441bd47b19a51e6bfd445cf4bc4903e0ff7c153768fd3dc72e3", + "sha256": "74077c9c710a75b2ba92e84275510acfbeb689fe76a12d13b2b3d18f1744446d", "size": 1038 }, { "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": "cc2ada8110642ec72aefecae7590aa658fb0b62de6b7f9bfea8387b6f8b692c5", - "size": 999 + "sha256": "2c27b842d43d2e3979964aeb0cff9d166c848dc1a27c3e1b846923e1052b327a", + "size": 997 }, { "url": "https://support.claude.com/en/articles/10534883-use-the-claude-widget-on-android", @@ -9053,8 +9053,8 @@ "url": "https://support.claude.com/en/articles/10593882-share-and-unshare-chats", "status": "success", "path": "support/10593882-share-and-unshare-chats.md", - "sha256": "06883b8b8f134bd6891042b0dcb9671b3fcf707c2685b5b75554b4175244a1f1", - "size": 4016 + "sha256": "dffa67904b9d22dd393d20722e66bc7628a56ea78b1d3ff1f0eb8c7a4e3f3f12", + "size": 4014 }, { "url": "https://support.claude.com/en/articles/10684626-enable-and-use-web-search", @@ -9081,7 +9081,7 @@ "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": "cc350c4f928e6056efff90cbac1b0481ad4a764d005c4fd0d212da76af0493ab", + "sha256": "68a5f80581f8ce9dc9fb8774f8748ec221d04f7d3a9fd662cad8b23c3e8b3077", "size": 8269 }, { @@ -9249,8 +9249,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": "6f96fff6bde82c42cb79a239aa09408963d9f108bac2ecde422c979f4d8b4d64", - "size": 2750 + "sha256": "7104b8c9617984ba832413740e1aa19138f702232f4c640c7fa06889fe91dcc8", + "size": 2748 }, { "url": "https://support.claude.com/en/articles/11732894-who-owns-and-manages-the-data-of-my-claude-for-education-account", @@ -9263,14 +9263,14 @@ "url": "https://support.claude.com/en/articles/11817273-use-claude-s-chat-search-and-memory-to-build-on-previous-context", "status": "success", "path": "support/11817273-use-claude-s-chat-search-and-memory-to-build-on-previous-context.md", - "sha256": "97338fc9afc6ae91537f84fe7c94d53e65094c28f01b33e280dfd8f54c6a068d", - "size": 25856 + "sha256": "f26e598f7a0cca61936cc7c04d77330ed870e87189d7b43e7c77382abcf1da76", + "size": 25860 }, { "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": "2f9f8e0fe8d10076f8e58fd46cca51d4c1625fe2fcc99fc6017d4f0e44217dc7", + "sha256": "cf967d650a55b7b39af8913d270b87b46de1282f4e2e041728504ebc4af105e0", "size": 818 }, { @@ -9305,8 +9305,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": "8c99d44376c1861feba7d382326c5c287858bb80a325342b76a983a8edb44992", - "size": 13991 + "sha256": "4cb8d346603e8dc4b7ef3a221fba726b7a388964390829d8defb0b8d172e49bc", + "size": 13993 }, { "url": "https://support.claude.com/en/articles/11932705-automated-security-reviews-in-claude-code", @@ -9340,14 +9340,14 @@ "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": "4a07135eed26dff2dbf8c7b6e9a3b7a66ad63fee0c79f148c5daffb17ed7177b", - "size": 9709 + "sha256": "bc756046ed2a7626361e5f9667229888cd5dec4e516340aadfd333e7b25b6f42", + "size": 9707 }, { "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": "b69da6ce77086d31be8a80222cadb974c1b2ae23832ed9aaf056615fdd8a4780", + "sha256": "3381ba4dcda09b44d89ad0d4c2611ffc834f1856cf351e5cd5667db046270539", "size": 14857 }, { @@ -9361,8 +9361,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": "912c3b4e4b2e4c656885ac3e094b3ab12439ea68785fc52a67942ad6c1f6f549", - "size": 1394 + "sha256": "f574c0bcc9474311ed216ca5662452faedae04d6189ab20edf0ba50660a05f73", + "size": 1398 }, { "url": "https://support.claude.com/en/articles/12109679-creating-a-new-account-after-deletion", @@ -9375,8 +9375,8 @@ "url": "https://support.claude.com/en/articles/12111783-create-and-edit-files-with-claude", "status": "success", "path": "support/12111783-create-and-edit-files-with-claude.md", - "sha256": "71e722df26e5d6b9ea1eec4d228eaa367ffa030d2a22f0212b7d0abe2240b4b3", - "size": 17964 + "sha256": "899357b3db8a1d3bfcc1c67b01c631f136b2e27e045082d279a71a1b31785e8c", + "size": 17966 }, { "url": "https://support.claude.com/en/articles/12119250-model-safety-bug-bounty-program", @@ -9403,7 +9403,7 @@ "url": "https://support.claude.com/en/articles/12157520-claude-code-usage-analytics", "status": "success", "path": "support/12157520-claude-code-usage-analytics.md", - "sha256": "d3fd9a3f0a94778c65ae781741c428ea5b9fb6798a3d8fb89c269a601f9b6e4d", + "sha256": "b5167f5aad0cc244a04b029ce2a234233b17ba9db6eead9b73c892a99f8db56d", "size": 6427 }, { @@ -9417,8 +9417,8 @@ "url": "https://support.claude.com/en/articles/12293051-use-claude-in-xcode", "status": "success", "path": "support/12293051-use-claude-in-xcode.md", - "sha256": "e8f7a523f1d83933eae20f00726f1d2dfa32e4ed03d82b07b2260ad28333a0f0", - "size": 1909 + "sha256": "a575784861552ea60e1b3e383beb1304f52959bf63f06ed7374b1e7b28cedbab", + "size": 1905 }, { "url": "https://support.claude.com/en/articles/12304248-manage-api-key-environment-variables-in-claude-code", @@ -9459,15 +9459,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": "235b875bdb7da48a54d43a6f0a8496951195c49ebe74af8321f781d86a9bb09d", - "size": 6412 + "sha256": "c246a3d36e1435d5745199607266dbf0ed3bc757c52ff50374bdd9d195fa2570", + "size": 6414 }, { "url": "https://support.claude.com/en/articles/12466728-troubleshoot-claude-error-messages", "status": "success", "path": "support/12466728-troubleshoot-claude-error-messages.md", - "sha256": "a28f47234053d39fc08200cacfa24cd35e3ebeed72660d9d1988283ec52cad04", - "size": 4232 + "sha256": "89c56e98fc36019428aaeb5f5e2ed5b7deaa1feb8d7f67d371a0bafe8ab67bdc", + "size": 4234 }, { "url": "https://support.claude.com/en/articles/12489464-use-enterprise-search", @@ -9487,8 +9487,8 @@ "url": "https://support.claude.com/en/articles/12512180-use-skills-in-claude", "status": "success", "path": "support/12512180-use-skills-in-claude.md", - "sha256": "dfda2220a683bbf3ab23abd76f3cab71674ca5bdbe6508d91b88d7031abbe7f3", - "size": 15916 + "sha256": "52c934bc628d9382d4f1ab7ad42e0bf5e314b7aaf96bce5a2640a975b1a91355", + "size": 15918 }, { "url": "https://support.claude.com/en/articles/12512198-how-to-create-custom-skills", @@ -9508,8 +9508,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": "7fb2ef90205a94118af841ef41f136e9fd83473e5fbdee6b41b2c5dd48d20b39", - "size": 5718 + "sha256": "70a806f94c2808c312a9ed0774a236ba1972b6b68756cf6809f27ddd71378dde", + "size": 5716 }, { "url": "https://support.claude.com/en/articles/12611117-deploy-claude-desktop-for-macos", @@ -9522,8 +9522,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": "ffe3cb21fb6da728503e7a759cdf794122a3b7875c73ac07e286326bf7e67dc3", - "size": 10964 + "sha256": "c9a616b283830897eb42841f1f24bffc2a5eda35ff1cd2abe90e4770152434b1", + "size": 10962 }, { "url": "https://support.claude.com/en/articles/12622667-enterprise-configuration-for-claude-desktop", @@ -9543,8 +9543,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": "c0f2dbb509efa66028fbee9f0bf7bc5a413fd92bdf2a92a156cd86bd370f3734", - "size": 5972 + "sha256": "3c1c2af08a1911c8a82cbca679b9cf9811ebd0b39f7e45d8344bb8af4532e45c", + "size": 5970 }, { "url": "https://support.claude.com/en/articles/12684923-microsoft-365-connector-security-guide", @@ -9578,8 +9578,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": "439dee3c27aab12894182ef1a5e5670bad3f3b9d2f12725d10ec0162994d4a50", - "size": 14509 + "sha256": "25ce5e4d48104acbcec3d07978089d12dae4e295c2858363521bfb60111ffbbf", + "size": 14513 }, { "url": "https://support.claude.com/en/articles/12902405-claude-in-chrome-troubleshooting", @@ -9599,8 +9599,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": "885b4a3f58ae39ff3ac4fb4d6ae9dfb9f0eb616b8b4912538616cfd84a8b47ba", - "size": 9563 + "sha256": "7cf1c29f838023a0169203bb78fcd4f955b0c67a6f80d21bf00ff3c8a4557f14", + "size": 9565 }, { "url": "https://support.claude.com/en/articles/12938627-how-to-gift-a-claude-subscription", @@ -9627,8 +9627,8 @@ "url": "https://support.claude.com/en/articles/12997503-team-plan-billing-faqs", "status": "success", "path": "support/12997503-team-plan-billing-faqs.md", - "sha256": "027fd6b7c7437257cf82a035028badea5b2ac44107c37084daf0bafaa2a06253", - "size": 4855 + "sha256": "52f2b5091f464fb1317ddbd0aa1ac6c6012ea19e588f679f6a126185af0aa29a", + "size": 4851 }, { "url": "https://support.claude.com/en/articles/13015708-access-the-compliance-api", @@ -9662,8 +9662,8 @@ "url": "https://support.claude.com/en/articles/13119606-provision-and-manage-skills-for-your-organization", "status": "success", "path": "support/13119606-provision-and-manage-skills-for-your-organization.md", - "sha256": "d8cbce3f40b8371a53ab188d7f4de43f368bb71f15b35e35548709a274001040", - "size": 11688 + "sha256": "d30714ed95a3a5150e08f0f72eac2655bd7b7b87fc0b016812c3d52655ac44df", + "size": 15650 }, { "url": "https://support.claude.com/en/articles/13124001-managing-your-active-sessions", @@ -9676,8 +9676,8 @@ "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": "f6711c25c0ac976e252bcc0669978175aa473cc17b17acfc70b575a4e5758bc6", - "size": 13323 + "sha256": "9cf7025b66c505a00eb4b34e11d679ce5533480445bee1c8d916cf17d222c08d", + "size": 13335 }, { "url": "https://support.claude.com/en/articles/13133195-set-up-jit-or-scim-provisioning", @@ -9711,8 +9711,8 @@ "url": "https://support.claude.com/en/articles/13163631-configuring-session-security-settings", "status": "success", "path": "support/13163631-configuring-session-security-settings.md", - "sha256": "7f196e1d3dedfd68569271be9068b9fb5d6cbd8f2c56ba435e3d7b6c7a28f7f0", - "size": 3694 + "sha256": "5576cc818d66be19bdf75ac8428cfc3b3c78f58fa66d23ae08195b3a1deb7555", + "size": 3700 }, { "url": "https://support.claude.com/en/articles/13171706-crisis-helpline-support-in-claude", @@ -9725,8 +9725,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": "97597f7e61f863d67d9619d2e46d5eae6f1e4bc0ce08e6044ae38212e91f7d6f", - "size": 7040 + "sha256": "be5decd8b02e4f79107c87d7b395741f17ac103bdd638e0849303ab8dabd797a", + "size": 7036 }, { "url": "https://support.claude.com/en/articles/13198485-enforce-network-level-access-control-with-tenant-restrictions", @@ -9753,8 +9753,8 @@ "url": "https://support.claude.com/en/articles/13325567-account-management-faqs", "status": "success", "path": "support/13325567-account-management-faqs.md", - "sha256": "a2dc6582e3514326b89d61f0ecf75ba3f6829c55104fe059f415fa97353cf0db", - "size": 2634 + "sha256": "592f5158a618939eaeadf7c6c1e8e86fa44c1fe2bccb6ff5f0c568934349d8ea", + "size": 2636 }, { "url": "https://support.claude.com/en/articles/13345190-get-started-with-claude-cowork", @@ -9767,8 +9767,8 @@ "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": "8a1ae44aae5a368e7b9dbad8612f64dd4f481e65eb4c0378524f408fd7297455", - "size": 605 + "sha256": "d7823b5fd3ab65d4ad1e5514bbf9eeb2d86108374e5b2b49ff1eb952ebff146a", + "size": 609 }, { "url": "https://support.claude.com/en/articles/13346720-export-your-organization-s-data", @@ -9788,8 +9788,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": "6c76fd046b478aa88e07f171b1e6d722241050a0f7dba583e6bbdbd015e2e938", - "size": 4609 + "sha256": "f76d2b2269b0880da7ae0b118e3a8e413222e8150fd0bb83bc814d2b9908a1b1", + "size": 4611 }, { "url": "https://support.claude.com/en/articles/13393991-purchase-and-manage-seats-on-enterprise-plans", @@ -9844,8 +9844,8 @@ "url": "https://support.claude.com/en/articles/13641943-visual-and-interactive-content", "status": "success", "path": "support/13641943-visual-and-interactive-content.md", - "sha256": "43f2b4d90305cce8be856ebbcf47539f7e938232e7c922d92f29d11675724071", - "size": 6517 + "sha256": "ad1e4150704d2224a4f99b2ccac459d440de05f96b8032fd7f36b69b75e572b1", + "size": 6505 }, { "url": "https://support.claude.com/en/articles/13663666-use-visual-and-interactive-content-on-team-and-enterprise-plans", @@ -9872,8 +9872,8 @@ "url": "https://support.claude.com/en/articles/13756069-public-sector-faqs", "status": "success", "path": "support/13756069-public-sector-faqs.md", - "sha256": "2300097a5ed16561840c35227ab05b67c2ba282cee7c596f15d4ffd313746b6a", - "size": 8378 + "sha256": "372d6111507e8fa428d545d262f5bf73125b31913e90f6af7e9e48221073ac75", + "size": 8382 }, { "url": "https://support.claude.com/en/articles/13776697-join-an-organization-via-invite-link", @@ -9900,15 +9900,15 @@ "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": "e2a3902fedfb304de0edadf6046df2bb7270195084eab50bca5944c37915cec5", - "size": 21285 + "sha256": "e572c0330c1003b32fe4ad056e64857513ba60b71477bbd9a5550cb427eb7b6f", + "size": 21291 }, { "url": "https://support.claude.com/en/articles/13837440-use-plugins-in-claude", "status": "success", "path": "support/13837440-use-plugins-in-claude.md", - "sha256": "42a05b457cec4764e110facbda71e61c3971fda8152fef9d216e8b398ba6a20f", - "size": 10869 + "sha256": "fa75317bf1a0510e184d8f68ccd0510bb2a86a7a9da1b0e7c4cc2e67a8900074", + "size": 10871 }, { "url": "https://support.claude.com/en/articles/13854387-schedule-recurring-tasks-in-claude-cowork", @@ -10096,8 +10096,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": "800291566cb554ce259c34d383d45d523b13ef1aaece0762d9c2b3a8a6552c85", - "size": 7672 + "sha256": "0fd74943b9c8095e74fcb6f7b562d8ff94c0a8299dbb9fa051557ecabb0a8737", + "size": 7670 }, { "url": "https://support.claude.com/en/articles/14503520-available-beta-and-research-preview-features", @@ -10117,15 +10117,15 @@ "url": "https://support.claude.com/en/articles/14503613-sso-login", "status": "success", "path": "support/14503613-sso-login.md", - "sha256": "508795170e384c0d1adcb6b2c189c308e89d9757a8d35e91db5de37d7e2f2b6f", - "size": 6686 + "sha256": "05b6a6f477baed3fe48fb8f50046458ba0a8c14f13762259d71ebad6ced7c142", + "size": 6692 }, { "url": "https://support.claude.com/en/articles/14503643-set-up-scim-in-claude-for-government", "status": "success", "path": "support/14503643-set-up-scim-in-claude-for-government.md", - "sha256": "e6667eda958c6e79914a0b397611a81e9ca771433960968265fa7f6adff51c71", - "size": 6421 + "sha256": "a663460470c31d702edb4abccd7a45337f92c3f93b695a6d104f4d49fb63cae3", + "size": 6417 }, { "url": "https://support.claude.com/en/articles/14503675-organization-instructions-in-claude-for-government", @@ -10152,8 +10152,8 @@ "url": "https://support.claude.com/en/articles/14503775-mcp-web-search", "status": "success", "path": "support/14503775-mcp-web-search.md", - "sha256": "b560a42733ea1478e1135ef5b560e8f4dbba8a2c6a18ad5e0032ab85bae15d27", - "size": 4675 + "sha256": "c1df7e6e2905dad16ba967ff10f640d260065342af36eac83982388b6ee56207", + "size": 4677 }, { "url": "https://support.claude.com/en/articles/14503794-model-availability-in-claude-for-government", @@ -10502,8 +10502,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": "0cf9af9acf29d3efcfc02287309e042c5f290755129768de21b6ac7ebe1ae926", - "size": 10147 + "sha256": "5db3174b4b214f84df99847563f2af1790ffcd6df84a74fc5ecbdc3b78976d03", + "size": 10145 }, { "url": "https://support.claude.com/en/articles/15707726-using-claude-for-legal-work-privilege-confidentiality-and-how-to-think-about-configuration", @@ -10537,8 +10537,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": "8692182358980f59448254d621d73bd67c4cfda64a5bd8ac27dc666417f45a7e", - "size": 5056 + "sha256": "3821f5cf4bd05b4eb8f64b78f5be2f105bd52b58c70c7d82990e78c3363542ee", + "size": 5058 }, { "url": "https://support.claude.com/en/articles/16049681-why-claude-switched-models-in-your-conversation-with-opus-5", @@ -10586,8 +10586,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": "bea0c6dd8b956ed9ab13d8db9c7de7d3a53ca6bb188f4e06646db3b83141a88f", - "size": 5435 + "sha256": "9117ad9d3081518d4402a3b94be5be955ddc98df3c89e93a03026452a8ae416d", + "size": 5439 }, { "url": "https://support.claude.com/en/articles/16607668-understanding-your-team-plan-invoices", @@ -10656,8 +10656,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": "ce13a1bba66e9df1326ba2e8526f996cd366fd5cbbd07953d78db9c614e683c5", - "size": 5107 + "sha256": "b11b1e72dbfc04b25da296ae6f3f8e405fc863ddc8e043b2e085fea9f9f5a555", + "size": 5099 }, { "url": "https://support.claude.com/en/articles/16824617-turn-on-data-retention-for-a-workspace-in-a-zero-data-retention-organization", @@ -10670,8 +10670,8 @@ "url": "https://support.claude.com/en/articles/16893491-get-started-with-smart-reports", "status": "success", "path": "support/16893491-get-started-with-smart-reports.md", - "sha256": "23b58a0735433308d14ea5cb5f734c4075ef096100c22709aefc0e9b3adcd358", - "size": 14108 + "sha256": "482560e05e947d8eb532d8b42c20ba44c1147d51446997374aa68a2d9cead938", + "size": 14098 }, { "url": "https://support.claude.com/en/articles/16923645-get-started-with-claude-docs", @@ -11685,8 +11685,8 @@ "url": "https://claude.com/docs/cowork/changelog", "status": "success", "path": "claude/cowork/changelog.md", - "sha256": "2399856eee7096bd70c95d1120b12185b49a16f6f412ffa025d44a651ad09690", - "size": 154920 + "sha256": "41f057e52e1c84a008fb9caa27f7d8ac270760ebf44940dea43429dcf4198482", + "size": 155342 }, { "url": "https://claude.com/docs/cowork/guide/dispatch", @@ -12119,8 +12119,8 @@ "url": "https://claude.com/docs/third-party/claude-desktop/admin-console", "status": "success", "path": "claude/third-party/claude-desktop/admin-console.md", - "sha256": "ecbc0b5ca3bb36fdf5d7b3c1c7deddadeee22d9e4c7c01916b89297990a06c65", - "size": 64085 + "sha256": "751d9b96b5579dd44632f2367614f423a27f7353bc71d47e0bd2be1bfcbfef50", + "size": 64208 }, { "url": "https://claude.com/docs/third-party/claude-desktop/bedrock", @@ -12182,8 +12182,8 @@ "url": "https://claude.com/docs/third-party/claude-desktop/configuration-changelog", "status": "success", "path": "claude/third-party/claude-desktop/configuration-changelog.md", - "sha256": "d16c90f9624fb3a905fcbe48665b53326aa9f92186ab324eee554cea2124582c", - "size": 67567 + "sha256": "ea62fbee4e5bada3f9d247a29d74361c7a71aba87dcbc3d5f0fe73d3216145a8", + "size": 67674 }, { "url": "https://claude.com/docs/third-party/claude-desktop/connectors-box", @@ -12213,6 +12213,13 @@ "sha256": "1f374849489818f483567522cb8ea1bda9a22780c00d85b321ebb802cdbd8368", "size": 51944 }, + { + "url": "https://claude.com/docs/third-party/claude-desktop/connectors-salesforce", + "status": "success", + "path": "claude/third-party/claude-desktop/connectors-salesforce.md", + "sha256": "8bab8a58c8f40ab3b23818792a274b7a42cb4ad0cc4dd7d0430290d0f6136e5a", + "size": 6168 + }, { "url": "https://claude.com/docs/third-party/claude-desktop/credential-helper", "status": "success", @@ -12238,8 +12245,8 @@ "url": "https://claude.com/docs/third-party/claude-desktop/extensions", "status": "success", "path": "claude/third-party/claude-desktop/extensions.md", - "sha256": "d8984bfedda493a620cd833fb8349fa0199237c69446d9c27795ca2ccd94fbb7", - "size": 58661 + "sha256": "2776494d623a432c5e7564752b8796dcb7d796b91de2fbf66dde7a0c9719c488", + "size": 58675 }, { "url": "https://claude.com/docs/third-party/claude-desktop/feature-matrix", @@ -12308,8 +12315,8 @@ "url": "https://claude.com/docs/third-party/claude-desktop/mcp-sign-in", "status": "success", "path": "claude/third-party/claude-desktop/mcp-sign-in.md", - "sha256": "14364422efb477be81556988e80c8e28678e7d3db81391c217fc2a22da2983a6", - "size": 15626 + "sha256": "08f23e7e71d389b9d789050fe8cf3ef0b9694945b10ab80ac1913aaa9d225f6a", + "size": 15732 }, { "url": "https://claude.com/docs/third-party/claude-desktop/mdm", @@ -12378,15 +12385,15 @@ "url": "https://code.claude.com/docs/en/slash-commands", "status": "success", "path": "en/docs/claude-code/slash-commands.md", - "sha256": "94f93f724453ef8bd9cb94af5fe9cb73aa77b3573019f6f06e7a7844bbb49af1", - "size": 114929 + "sha256": "5a2e0e2ee821fb7b79bff173358f48c036a2c9406a0446bc8292aa0221eee4af", + "size": 115336 }, { "url": "https://code.claude.com/docs/en/web-scheduled-tasks", "status": "success", "path": "en/docs/claude-code/web-scheduled-tasks.md", - "sha256": "ae7ae570e21efa1e83b046415f8613439882577f3731740e6c08109c9c75a4b8", - "size": 33659 + "sha256": "d76aa5af0d53c71ec2496c591db62a2774baf98e4455e5876adc328eaf1e5d2d", + "size": 33670 }, { "url": "https://code.claude.com/docs/en/ultraplan", @@ -12406,8 +12413,8 @@ "url": "https://code.claude.com/docs/en/agent-sdk/slash-commands", "status": "success", "path": "en/docs/claude-code/agent-sdk/slash-commands.md", - "sha256": "367d6194fc6145c1ff77c583c7bd375f7830f42655350628df6b60fd9c32c482", - "size": 26863 + "sha256": "c490d4f3e1724845171ad2c8ee7dba2d354f4b969500e0e26fc9891729063041", + "size": 27470 }, { "url": "https://platform.claude.com/docs/en/api/java/completions", @@ -28123,8 +28130,8 @@ } ], "summary": { - "total": 4119, - "downloaded": 3879, + "total": 4120, + "downloaded": 3880, "skipped": 0, "failed": 0, "dead": 240, diff --git a/content/CHANGELOG.md b/content/CHANGELOG.md index 4dd31b57e4..73440d356f 100644 --- a/content/CHANGELOG.md +++ b/content/CHANGELOG.md @@ -1,5 +1,108 @@ # Changelog +## 2.1.276 + +- Fixed every request failing with `400 … Input tag 'advisor_20260301'` when `ANTHROPIC_BASE_URL` points at a proxy or gateway (2.1.275 regression) + +## 2.1.275 + +- Added the signed-in account to Claude apps gateway sign-in: when the gateway names it, you confirm it before the credential is saved, and `/status` shows it +- Added a send-now key (ctrl+enter, or ctrl+x ctrl+s) that interrupts the current turn and sends all queued messages at once; sent and queued messages show in gray until the model receives them +- Added a startup warning when a configured `otelHeadersHelper` fails, so sessions that silently export no telemetry are noticed +- Added syncing of the skills and plugins enabled on your claude.ai account to terminal sessions signed in with it; opt out with `syncClaudeAiSkills: false` or `syncClaudeAiPlugins: false` +- Added `/plugin install --marketplace `, which offers to add the marketplace before installing the plugin +- Fixed a restored memory file's age note changing between requests after a compaction or resume, which caused prompt cache misses +- Fixed `--forward-subagent-text` stream-json and SDK output dropping the messages of subagents spawned by a `context: fork` skill, and of forked skills invoked by a subagent or another forked skill +- Fixed @-mention file suggestions being buried below MCP resources when using a custom `fileSuggestion` command or typing `@.`/`@./` +- Fixed fullscreen mode placing background-task completion notices beneath a long turn's collapsed tool row instead of where they arrived; each notice now closes the open row +- Fixed `claude plugin marketplace update` deleting a GitHub marketplace's local copy when the fetch failed and the marketplace was named after its repository +- Fixed plugin and marketplace messages, logs and `claude plugin marketplace list` showing a password or token stored in a git, ssh or marketplace URL +- Fixed a resumed cloud session leaving an unanswered question open in the transcript after a queued message superseded it +- Fixed vim mode placing the cursor one character right after a dot-repeated "!" or a fast-typed "i!" switched a non-empty prompt into shell mode +- Fixed fullscreen mode freezing or blanking for several seconds when scrolling up past a large file diff +- Fixed a stray ``-style closing tag occasionally appearing in responses +- Fixed plugin messages, logs and the VS Code plugin dialog showing the wrong server for some git addresses +- Fixed a terminal `API Error: 400` on every turn for users behind a network gateway that rewrites API error responses when a beta request header is rejected +- Fixed sandboxed Bash commands on Linux reporting exit code 0 for failed commands when the shell is zsh +- Fixed the Read tool hanging instead of reporting an error when part of a large file could not be decoded under memory pressure +- Fixed `--resume`, the resume picker preview, resumed background agents and the transcript view failing on a session whose saved history contains a malformed task-reminder or @-file attachment entry +- Fixed a crash when resuming a conversation whose transcript contains a malformed message entry, and a fullscreen crash when such a conversation received new messages while scrolled up +- Fixed sessions failing to resume or start when their saved transcript contains a malformed message content block +- Fixed Grep, Glob and @-file suggestions hanging or running out of memory on searches over the 20MB output cap, and system ripgrep reporting "no matches" instead of an error after a flood of warnings +- Fixed `/rewind` in a forked or background session restoring a zero-filled or truncated file when the session's file-history backups could not be fully copied +- Fixed fullscreen sessions sometimes exiting with "Claude Code exited after an unrecoverable interface error" when typing fast or holding a key with the slash-command dropdown open +- Fixed background sessions crashing and restarting their worker when a command fed through stdin ran on a machine that had run out of file descriptors +- Fixed a crash at launch when `~/.claude.json` holds a malformed `mcpNeedsAuthNoticed` value +- Fixed `--resume` and `--continue` dropping a conversation's earlier thinking when a built-in tool it started with has since been switched off by a server-side flag +- Fixed text selected with the mouse in the fullscreen `claude --resume` session picker never reaching the clipboard +- Fixed plugin reload previews replacing a running session's extracted plugin files when the plugin was loaded from a `--plugin-dir` or `--plugin-url` archive +- Fixed self-hosted runners with `--drain-wait-sec` losing the final result of a turn that finished during a SIGTERM drain; the runner now waits briefly for the turn to be reported +- Fixed `SubagentStop` hooks with a specific `matcher` firing for every stopping subagent whose agent type was empty +- Fixed sandboxed Bash commands being unable to write to project directories named `hooks/` or `config/` +- Fixed Artifact updates failing with "File not found" after a session resumes on another machine or its scratchpad is cleared: the page's last published version is restored +- Fixed `/update-config` writing `Write(path)` permission rules, which file permission checks don't match, instead of `Edit(path)` rules +- Fixed four dead documentation URLs (Pricing, Computer Use, Skills, CLI) in the bundled claude-api skill's live-sources table +- Improved prompt caching for a `--system-prompt` that contains a `__SYSTEM_PROMPT_DYNAMIC_BOUNDARY__` line: the text above it is now cached globally, as the SDK's array form already is +- Improved the `/desktop` error when Claude Desktop does not open: it now says why and what to do next +- Improved the Artifact tool's publish and read results: they now say who can open the page and what the owner's Share menu offers +- Improved artifact publish results: they name the tab icon sent, warn when the page contains a NUL byte, and retry a flaky fetch of the newer page to merge after a stale publish +- Improved pasted and attached images: they are now saved where Claude can open them as files without a permission prompt, including in Desktop and VS Code +- Improved the Artifact tool's guidance so Claude updates a shared artifact in place when you were given edit access to it, instead of publishing a separate copy +- Improved plan-usage reads: editor windows and non-interactive sessions on one machine now share a read made in the last minute instead of each calling the usage endpoint +- Improved the `ListPlugins` tool description so Claude knows it lists plugins enabled on your claude.ai account, not plugins installed locally with `/plugin` +- Improved responsiveness when the terminal is slow or paused: output no longer falls further behind while the terminal catches up +- Improved Write and Edit results for files in the synced account-skills folder: they now say the change is not saved to your account and how to save it +- Updated `/logout` for Claude apps gateway sign-ins to also end the session on gateways that advertise token revocation +- Changed hosted sessions to keep an unanswered permission prompt up after a container restart, instead of asking again +- Changed the Artifact tool to ask for a one-word tab icon on a first publish instead of an emoji favicon +- Changed Claude in Chrome in auto mode to skip the extension's per-site check for classifier-approved calls, as bypass mode does, fixing `browser_batch` "Permission denied" after a redirect +- Changed plugins installed from an npm source to be fetched with `npm pack --ignore-scripts` and integrity-verified, so a package's install scripts no longer run +- Changed scheduled and Run now routine runs to save data to, and republish the page of, an artifact you can edit without asking; public artifacts, first publishes and deletes still ask +- Removed the startup notice that told you a one-off scheduled routine had run since your last session +- [VSCode] Added viewing, editing and deleting a saved memory inside the Memory dialog +- [VSCode] Added sending an attached image without typing any text +- [VSCode] Added a Retry link to the MCP servers dialog when the server list fails to load +- [VSCode] Added accept and reject buttons under each change in the proposed-change diff tab, so an edit can be reviewed change by change +- [VSCode] Fixed the transcript creeping toward the bottom in small steps while a permission card waits and content keeps arriving +- [VSCode] Fixed rewound and forked conversations not keeping the permission mode you had picked for the original conversation +- [VSCode] Fixed an empty `CLAUDE_CONFIG_DIR` entry in the `environmentVariables` setting making Claude Code keep its files in the workspace +- [VSCode] Fixed plugin install links opening the Manage plugins dialog for plugin names and marketplace addresses that can't be used in a link +- [VSCode] Fixed Remote Control staying shown as connected after a turn-off that Claude Code reported as failed; it now shows as off +- [VSCode] Fixed the scroll to the bottom on send stopping short of the reply when the reply starts arriving during the scroll +- [VSCode] Fixed the agent map showing agents a crash left unfinished as stopped instead of failed once the session is reopened +- [VSCode] Fixed the "Continuing the step" notice not appearing, and the continue limit resetting, after a reload that follows a crash with background tasks still running +- [VSCode] Fixed the session list showing when a session was last reopened, such as after a window reload, instead of when its last message was sent +- [VSCode] Fixed "Fork conversation from here" failing on the message right after one sent while Claude was working +- [VSCode] Fixed the prompt cache clock showing too few minutes after reopening a session with a message sent while Claude was working +- [VSCode] Fixed a background agent that finished while Claude was running a tool losing its completion notice, and its result on the agent map, after a window reload +- [VSCode] Fixed a rare case where text selected in a git-ignored file could be sent to Claude after the extension was unresponsive for several seconds +- [VSCode] Fixed renaming a running session reverting to the generated name (regression in 2.1.269) +- [VSCode] Fixed some claude.ai/code sessions opening in VS Code as an empty conversation with no messages +- [VSCode] Fixed slash commands typed while Claude is responding being sent to the model as text instead of running once the response finishes +- [VSCode] Fixed unreadable code in the plan preview and the Hooks and Permission rules dialogs with the High Contrast Light theme +- [VSCode] Fixed `/remote-control` being ignored while Remote Control is still connecting: running it again now turns Remote Control off immediately +- [VSCode] Fixed the conversation pulling you back to the bottom while a reply streams after you scroll up, and added a `claudeCode.scrollToBottomOnSend` setting to turn off the jump on send +- [VSCode] Fixed the Manage plugins dialog showing a password or token that was typed into a marketplace URL +- [VSCode] Improved the agent map: the pill counts running agents and turns red after a failure, the main agent stays in view while the map scrolls, and agents sort by state then end time +- [VSCode] Changed New session in a Claude editor tab to open in the sidebar when Preferred Location is set to Sidebar, instead of always opening another tab +- [VSCode] Changed a message sent while Claude is working to wait at the bottom of the conversation until Claude starts on it +- [Claude Code on the web] Added a "New routine" button to the page shown when a routine link no longer resolves, next to the link back to your routines list +- [Claude Code on the web] Fixed routine "paused" and "on hold" notifications being cut off mid-sentence; the paused-subscription notice now says to turn the routine back on yourself +- [Claude Code on the web] Fixed cloud environments with a very long allowed-domains list saving fine and then failing every session start; saving now fails up front and says how much to trim +- [Claude Code on the web] Fixed Claude's guidance when a cloud session on a personal account is denied GitHub access: it now links to claude.ai/connect-github instead of an admin settings page +- [Claude Code on the web] Improved what Claude tells you when asked to edit, delete or run a routine it didn't create: it now links to the routine's page so you can do it yourself +- [Claude Tag] Added attach conditions for access bundles in Claude Tag settings: an Owner can let a bundle also apply in channels with guests or Slack Connect channels, not just member-only +- [Claude Tag] Added Amazon CloudWatch, CloudWatch Logs, Amazon SNS, Google Cloud Monitoring and Cloud Logging presets to an access bundle's Credentials tab in Claude Tag admin settings +- [Claude Tag] Added Datadog presets for the US3, AP1, AP2 and US1-FED sites; new Datadog connections are now limited to Datadog's read and query API routes +- [Claude Tag] Fixed S3 uploads from recent AWS CLI and SDK versions failing with a 502 error when sent through an AWS connection +- [Claude Tag] Fixed Claude treating a channel as inactive, and skipping untagged messages there, while it was still posting in that channel from a routine or a thread +- [Claude Tag] Fixed a thread's "Claude [task]" display name reverting to plain "Claude" after the session behind that thread was refreshed or restarted +- [Claude Tag] Fixed the model you switched to in a Slack thread silently reverting to the channel's default after that thread's session was restarted or refreshed +- [Claude Tag] Fixed Claude sometimes replying twice when another app or bot @mentioned it in a top-level channel message +- [Claude Tag] Improved Claude's notices in Enterprise Grid channels shared across workspaces: they now say when no workspace is set up yet, or why only organization defaults apply +- [Code Review] Fixed reviews occasionally dropping part of their analysis when one of the reviewing agents returned its findings in an unexpected format +- [Code Review] Fixed pull requests with more than 100 Claude reviews getting a full re-review on every clean merge from the base branch instead of the lighter merge-focused review + ## 2.1.274 - Added a visible warning when memory usage is critical, with steps to free memory or restart safely diff --git a/content/claude-code-manifest.json b/content/claude-code-manifest.json index e15d4a0225..fb44f0aaf7 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": "9fe3efc2385bd3c528d5b0c15c5cdc5d59994654", - "tarball": "https://registry.npmjs.org/@anthropic-ai/claude-code/-/claude-code-2.1.274.tgz", + "shasum": "e79ef89036ba8ed956dd96caefd3d7c33c0d6b2e", + "tarball": "https://registry.npmjs.org/@anthropic-ai/claude-code/-/claude-code-2.1.276.tgz", "fileCount": 7, - "integrity": "sha512-UI8TGoOO0fYT38VSoAjtu9C0EQkOwgwA4+ETFCgQhTO9NZvpgCERANL0UzioEW89b2zbcoL1B3z+7W37QdBxOA==", + "integrity": "sha512-xgVXCbFdqOhSAcMTSC61gjL1jCQuoAA4TNU1I7Dmf/yuYcDxHf796r6LaB3Jswm1floKnP1V+/zfphtDlPdlkg==", "signatures": [ { - "sig": "MEQCIFATAp0Ar6mIkqqiORV77Xudx3H6Pld/ekz4NOWmRq86AiAPeq18xT8t0wExq9mhHLLuAhRLv+X5xEp2v5MTG/aqfA==", + "sig": "MEQCIHpQecH4nUAWz2gdptLi7Hkijv8qqo6w4SpaMQFb8/r4AiB9SAdWawkJ8tZQJcLGtLmcfKgiKJqb/QNWy3VRSKhFPw==", "keyid": "SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U" }, { - "sig": "MEUCIQC6g6bJC4OEaVsVincyexVfEvQggxc3dWASMVRDmYDkJQIgEpuMa546fs6/duNclLgp1yiQp/0vFNdFkuAABQbFpyk=", + "sig": "MEYCIQDpDrFKX+GwAUKAaVUiw28rCktGotEsu5n1A+Y118S4fwIhAJumek2Xs69jPwQAgCvNUL16e+XFW0wGNRS59+UlVUBE", "keyid": "SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U" } ], - "unpackedSize": 184602 + "unpackedSize": 186461 }, "name": "@anthropic-ai/claude-code", "type": "module", - "_from": "file:staged-npm/anthropic-ai-claude-code-2.1.274.tgz", + "_from": "file:staged-npm/anthropic-ai-claude-code-2.1.276.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.274.tgz", - "_integrity": "sha512-UI8TGoOO0fYT38VSoAjtu9C0EQkOwgwA4+ETFCgQhTO9NZvpgCERANL0UzioEW89b2zbcoL1B3z+7W37QdBxOA==", + "_resolved": "/home/runner/work/claude-cli-internal/claude-cli-internal/staged-npm/anthropic-ai-claude-code-2.1.276.tgz", + "_integrity": "sha512-xgVXCbFdqOhSAcMTSC61gjL1jCQuoAA4TNU1I7Dmf/yuYcDxHf796r6LaB3Jswm1floKnP1V+/zfphtDlPdlkg==", "_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": {}, @@ -106,19 +106,19 @@ "_hasShrinkwrap": false, "readmeFilename": "README.md", "optionalDependencies": { - "@anthropic-ai/claude-code-linux-x64": "2.1.274", - "@anthropic-ai/claude-code-win32-x64": "2.1.274", - "@anthropic-ai/claude-code-darwin-x64": "2.1.274", - "@anthropic-ai/claude-code-linux-arm64": "2.1.274", - "@anthropic-ai/claude-code-win32-arm64": "2.1.274", - "@anthropic-ai/claude-code-darwin-arm64": "2.1.274", - "@anthropic-ai/claude-code-linux-x64-musl": "2.1.274", - "@anthropic-ai/claude-code-linux-arm64-musl": "2.1.274" + "@anthropic-ai/claude-code-linux-x64": "2.1.276", + "@anthropic-ai/claude-code-win32-x64": "2.1.276", + "@anthropic-ai/claude-code-darwin-x64": "2.1.276", + "@anthropic-ai/claude-code-linux-arm64": "2.1.276", + "@anthropic-ai/claude-code-win32-arm64": "2.1.276", + "@anthropic-ai/claude-code-darwin-arm64": "2.1.276", + "@anthropic-ai/claude-code-linux-x64-musl": "2.1.276", + "@anthropic-ai/claude-code-linux-arm64-musl": "2.1.276" }, "_npmOperationalInternal": { - "tmp": "tmp/claude-code_2.1.274_1789598169796_0.914194267676016", + "tmp": "tmp/claude-code_2.1.276_1789695571884_0.43057377569820776", "host": "s3://npm-registry-packages-npm-production" }, - "_id": "@anthropic-ai/claude-code@2.1.274", - "version": "2.1.274" + "_id": "@anthropic-ai/claude-code@2.1.276", + "version": "2.1.276" } \ No newline at end of file diff --git a/content/claude/cowork/changelog.md b/content/claude/cowork/changelog.md index 47825690c8..e0dff5df31 100644 --- a/content/claude/cowork/changelog.md +++ b/content/claude/cowork/changelog.md @@ -6,6 +6,26 @@ > Release notes for Claude Desktop + + Bundled Claude Code version: 2.1.275. + + **General** + + * Fixed sessions failing to start or resume when their saved transcript contained a malformed entry. + + **Code** + + * Fixed rewinding in forked and background sessions sometimes restoring a corrupted or truncated file. + + **Cowork** + + * No user-facing changes. + + **3P** + + * No user-facing changes. + + Bundled Claude Code version: 2.1.274. diff --git a/content/claude/third-party/claude-desktop/admin-console.md b/content/claude/third-party/claude-desktop/admin-console.md index ec19163e9c..b23380556b 100644 --- a/content/claude/third-party/claude-desktop/admin-console.md +++ b/content/claude/third-party/claude-desktop/admin-console.md @@ -152,7 +152,7 @@ For example, if the Traders policy (ranked first) turns Code off and selects the ### Plugin marketplaces -On the **Plugins** page under Desktop 3P, list the [plugin marketplaces](/docs/third-party/claude-desktop/extensions#plugin-marketplaces-admin) that users' apps should fetch. The marketplaces you add are git repositories, or a `marketplace.json` file and plugin archives on an HTTPS origin you control. The **Add marketplace** menu also offers Anthropic's public plugin marketplaces under **Curated by Anthropic**. The app does not add the Anthropic marketplaces on its own in third-party mode. +On the **Plugins** page under Desktop 3P, list the [plugin marketplaces](/docs/third-party/claude-desktop/extensions#plugin-marketplaces-admin) that users' apps should fetch. The marketplaces you add are git repositories, or a `marketplace.json` file and plugin archives on an HTTPS origin you control. The **Add** menu also offers Anthropic's public plugin marketplaces under **Curated by Anthropic**, and Salesforce's under **From partners**, which [Connect to Salesforce](/docs/third-party/claude-desktop/connectors-salesforce) walks through. The app does not add these marketplaces on its own in third-party mode. ### Telemetry defaults diff --git a/content/claude/third-party/claude-desktop/configuration-changelog.md b/content/claude/third-party/claude-desktop/configuration-changelog.md index 53430caebe..18f24db8cb 100644 --- a/content/claude/third-party/claude-desktop/configuration-changelog.md +++ b/content/claude/third-party/claude-desktop/configuration-changelog.md @@ -8,6 +8,10 @@ Configuration keys by Claude Desktop release. Each section lists keys added in that release, with the MDM key name (for plist/registry deployment) and the equivalent JSON shape (for local-file or bootstrap remote configuration). + + No configuration changes in this release. + +
| MDM key | Type | Description | diff --git a/content/claude/third-party/claude-desktop/connectors-salesforce.md b/content/claude/third-party/claude-desktop/connectors-salesforce.md new file mode 100644 index 0000000000..5ca9121e18 --- /dev/null +++ b/content/claude/third-party/claude-desktop/connectors-salesforce.md @@ -0,0 +1,80 @@ +> ## Documentation Index +> Fetch the complete documentation index at: https://claude.com/docs/llms.txt +> Use this file to discover all available pages before exploring further. + +# Connect to Salesforce + +> Give Claude access to your Salesforce org through Salesforce's plugin and hosted MCP server, set up in the Enterprise Admin Console or your managed configuration with an OAuth client that a Salesforce admin creates. + +The Salesforce plugin and Salesforce's hosted MCP server let Claude work with your organization's Salesforce records. The plugin's marketplace is one of the preconfigured [plugin marketplaces](/docs/third-party/claude-desktop/extensions#plugin-marketplaces-admin) Claude Desktop offers. + +## Set up Salesforce + + + + In Salesforce Setup, turn on **Enable MCP Service**, then create an External Client App for Claude Desktop with these OAuth settings: + + * The callback URL `http://127.0.0.1:53280/callback` + * The OAuth scopes `mcp_api` and `refresh_token` + * Proof Key for Code Exchange (PKCE) required + * Access tokens issued as JSON Web Tokens (JWTs) + * An OAuth policy that lets users self-authorize + + Copy the app's **Consumer Key**, which is its client ID. With PKCE, Claude Desktop needs no client secret. + + + + **In the Enterprise Admin Console.** Go to [claude.ai](https://claude.ai) → **Organization settings** and open the **Plugins** page under **Desktop 3P**. Under **Plugin marketplaces**, click **Add** and choose **Salesforce** under **From partners**. The new entry has **Source** set to **GitHub**, **Repository** set to `salesforce/salesforce-skills`, and **Ref** set to `claude-prod`, the branch Salesforce publishes its releases to. Leave **Installation** empty and click **Save changes**. + + **With MDM or a bootstrap server.** Add this entry to the [`allowedPluginMarketplaces`](/docs/third-party/claude-desktop/configuration#allowedpluginmarketplaces) key of your managed configuration or bootstrap response: + + ```json theme={null} + { + "source": "github", + "repo": "salesforce/salesforce-skills", + "ref": "claude-prod" + } + ``` + + Either way the marketplace stays **available**, and each user installs the plugin once, as described in step 4. To install the plugin on every device without user action instead, set the ref to a full 40-character commit SHA and the installation preference to `auto_install`. [Marketplace installation preferences](/docs/third-party/claude-desktop/extensions#marketplace-installation-preferences) explains why the SHA is required, and [Roll out marketplace updates](/docs/third-party/claude-desktop/extensions#roll-out-marketplace-updates) explains how to move to a newer release. + + + + **In the Enterprise Admin Console.** Go to [claude.ai](https://claude.ai) → **Organization settings** and open the **Connectors** page under **Desktop 3P**. Under **Managed MCP servers**, click **Add → Blank**, fill in the entry as below, and click **Save changes**. [Set up sign-in for managed MCP servers](/docs/third-party/claude-desktop/mcp-sign-in) explains each **OAuth** field, and users' apps pick up console changes as described under [Configuration updates](/docs/third-party/claude-desktop/admin-console#configuration-updates). + + | Field | Value | + | ------------------------ | ------------------------------------------------------------------ | + | **Name** | `salesforce-h360` | + | **Transport** | **Streamable HTTP** | + | **URL** | `https://api.salesforce.com/platform/mcp/v1/platform/headless-360` | + | **OAuth** | **Bring your own client** | + | **Client ID** | The Consumer Key from step 1 | + | **Authorization server** | `["https://login.salesforce.com"]` | + + **With MDM or a bootstrap server.** Add this entry to the [`managedMcpServers`](/docs/third-party/claude-desktop/configuration#managedmcpservers) key of your managed configuration or bootstrap response: + + ```json theme={null} + { + "name": "salesforce-h360", + "transport": "http", + "url": "https://api.salesforce.com/platform/mcp/v1/platform/headless-360", + "oauth": { + "clientId": "YOUR_CONSUMER_KEY", + "authorizationServer": ["https://login.salesforce.com"] + } + } + ``` + + Keep the name exactly as shown. The Salesforce plugin defines an MCP server with this name, and Claude Desktop matches your entry to it by name and connects it with your client ID. Without the entry, users get the plugin's skills but not its Salesforce tools. + + Enter exactly one URL as the authorization server. To send users to your org's My Domain login page instead of the shared Salesforce login page, enter that URL, for example `["https://yourorg.my.salesforce.com"]`. + + For a Salesforce sandbox org, create the External Client App in the sandbox and enter the sandbox's login URL as the authorization server, for example `["https://test.salesforce.com"]`. Set the URL to `https://api.salesforce.com/platform/mcp/v1/sandbox/platform/headless-360`. + + Devices need git installed to fetch the marketplace, and outbound HTTPS access to `github.com`, `api.salesforce.com`, and your Salesforce login host. + + + + Each user opens **Customize → Plugins** in Claude Desktop and clicks **Discover**, which opens the **Directory**. On its **Organization** tab the user selects your marketplace's tab and clicks the **+** button on the Salesforce plugin to install it. The user then opens **Customize → Connectors**, clicks **Connect** next to **salesforce-h360**, and signs in to Salesforce in the browser. + + diff --git a/content/claude/third-party/claude-desktop/extensions.md b/content/claude/third-party/claude-desktop/extensions.md index 58fa529529..41ce520f80 100644 --- a/content/claude/third-party/claude-desktop/extensions.md +++ b/content/claude/third-party/claude-desktop/extensions.md @@ -137,7 +137,7 @@ Google Workspace and Microsoft 365 each have a dedicated setup path: ## Plugin marketplaces (admin) -A **plugin marketplace** is a catalog file (`marketplace.json`) that lists one or more Claude plugins. You host it either as a git repository or as a plain file over HTTPS. Claude Desktop fetches it on each device, shows the plugins under **Settings → Plugins → Organization** in both **Cowork** and [**Code**](/docs/third-party/claude-desktop/code), and keeps them in sync with the revision you pin. You control which plugins are available, which install automatically, and which are required. +A **plugin marketplace** is a catalog file (`marketplace.json`) that lists one or more Claude plugins. You host it either as a git repository or as a plain file over HTTPS. Claude Desktop fetches it on each device, lists its plugins under **Customize → Plugins → Discover → Organization** in both **Cowork** and [**Code**](/docs/third-party/claude-desktop/code), and keeps them in sync with the revision you pin. You control which plugins are available, which install automatically, and which are required. This is the recommended way to distribute organization plugins. For a git-hosted marketplace, Claude Desktop clones with the git already installed on each device, so include git in your device baseline (Git for Windows on Windows; the Xcode Command Line Tools provide it on macOS); devices without git can use a [marketplace hosted over HTTPS](#host-the-marketplace-over-https-instead-of-git) instead. Use the [system-wide directory](#organization-plugins-admin) path when end-user devices cannot reach a git server or an HTTPS file host. @@ -231,7 +231,7 @@ On Windows, write the same string to the `allowedPluginMarketplaces` value in th | `credentialHelper` | Path to an executable that prints an access token on stdout. Required, and only valid, when `credentialKind` is `"credentialHelper"`. | | `installationPreference` | `"available"` (default), `"auto_install"`, or `"required"`. See [Marketplace installation preferences](#marketplace-installation-preferences). | -You can configure multiple marketplaces; each appears as its own sub-tab under **Settings → Plugins → Organization**. If an admin-configured marketplace has the same `repo`, `url`, or manifest `name` as one the user added themselves, the admin entry replaces the user's. +You can configure multiple marketplaces, and each appears as its own sub-tab under **Organization** in the **Directory**. If an admin-configured marketplace has the same `repo`, `url`, or manifest `name` as one the user added themselves, the admin entry replaces the user's. ### Marketplace installation preferences diff --git a/content/claude/third-party/claude-desktop/mcp-sign-in.md b/content/claude/third-party/claude-desktop/mcp-sign-in.md index 7ca096ac67..aeade0924e 100644 --- a/content/claude/third-party/claude-desktop/mcp-sign-in.md +++ b/content/claude/third-party/claude-desktop/mcp-sign-in.md @@ -73,4 +73,4 @@ These messages appear in Claude Desktop, or in `main.log` in the [logs directory ## Related connector guides -[Connect to Google Cloud](/docs/third-party/claude-desktop/connectors-google-cloud) and [Connect to Box](/docs/third-party/claude-desktop/connectors-box) walk through two servers that need a client you register and its secret. [Connect to GitHub](/docs/third-party/claude-desktop/connectors-github) and [Connect to Microsoft 365](/docs/third-party/claude-desktop/connectors-m365) cover those connectors end to end, including the [built-in servers](/docs/third-party/claude-desktop/built-in-connectors) that run inside the app. Some partners publish a plugin marketplace rather than an MCP server; add those on the **Plugins** page, as described under [Plugin marketplaces](/docs/third-party/claude-desktop/admin-console#plugin-marketplaces). +[Connect to Google Cloud](/docs/third-party/claude-desktop/connectors-google-cloud) and [Connect to Box](/docs/third-party/claude-desktop/connectors-box) walk through two servers that need a client you register and its secret. [Connect to GitHub](/docs/third-party/claude-desktop/connectors-github) and [Connect to Microsoft 365](/docs/third-party/claude-desktop/connectors-m365) cover those connectors end to end, including the [built-in servers](/docs/third-party/claude-desktop/built-in-connectors) that run inside the app. [Connect to Salesforce](/docs/third-party/claude-desktop/connectors-salesforce) covers Salesforce's plugin marketplace and its hosted MCP server. Add other partners' plugin marketplaces on the **Plugins** page, as described under [Plugin marketplaces](/docs/third-party/claude-desktop/admin-console#plugin-marketplaces). diff --git a/content/en/about-claude/pricing.md b/content/en/about-claude/pricing.md index a681ddc8b9..05793231be 100644 --- a/content/en/about-claude/pricing.md +++ b/content/en/about-claude/pricing.md @@ -186,7 +186,7 @@ For more information, see [Fast mode](https://platform.claude.com/docs/en/build- The Batch API allows asynchronous processing of large volumes of requests with a 50% discount on both input and output tokens. | Model | Batch input | Batch output | -| ------------------------------------------------------------------------------------------------------------------------------------- | ------------ | ------------- | +| :------------------------------------------------------------------------------------------------------------------------------------ | :----------- | :------------ | | Claude Fable 5.1 | $5 / MTok | $25 / MTok | | Claude Mythos 5.1 ([limited availability](https://anthropic.com/glasswing)) | $5 / MTok | $25 / MTok | | Claude Fable 5 | $5 / MTok | $25 / MTok | diff --git a/content/en/about-claude/use-case-guides/content-moderation.md b/content/en/about-claude/use-case-guides/content-moderation.md index 02beddf2ca..6432f0d51b 100644 --- a/content/en/about-claude/use-case-guides/content-moderation.md +++ b/content/en/about-claude/use-case-guides/content-moderation.md @@ -780,7 +780,7 @@ To use Claude for content moderation, Claude must understand the moderation requ // Parse the JSON response from Claude. The SDK decodes each content block // into its concrete class, so find the TextBlock before reading the text. - $textBlock = array_find($response->content, fn ($block) => $block instanceof TextBlock) + $textBlock = array_find($response->content, fn ($block) => $block instanceof \Anthropic\Messages\TextBlock) ?? throw new RuntimeException('Expected a text block in the response.'); $assessment = json_decode($textBlock->text, associative: true, flags: JSON_THROW_ON_ERROR); @@ -1333,7 +1333,7 @@ One additional consideration is that instead of treating content moderation as a // Parse the JSON response from Claude. The SDK decodes each content block // into its concrete class, so find the TextBlock before reading the text. - $textBlock = array_find($response->content, fn ($block) => $block instanceof TextBlock) + $textBlock = array_find($response->content, fn ($block) => $block instanceof \Anthropic\Messages\TextBlock) ?? throw new RuntimeException('Expected a text block in the response.'); $assessment = json_decode($textBlock->text, associative: true, flags: JSON_THROW_ON_ERROR); @@ -2073,7 +2073,7 @@ In addition to listing the unsafe categories in the prompt, further improvements // Parse the JSON response from Claude. The SDK decodes each content block // into its concrete class, so find the TextBlock before reading the text. - $textBlock = array_find($response->content, fn ($block) => $block instanceof TextBlock) + $textBlock = array_find($response->content, fn ($block) => $block instanceof \Anthropic\Messages\TextBlock) ?? throw new RuntimeException('Expected a text block in the response.'); $assessment = json_decode($textBlock->text, associative: true, flags: JSON_THROW_ON_ERROR); @@ -2648,7 +2648,7 @@ To reduce costs in situations where real-time moderation isn't necessary, consid // Parse the JSON response from Claude. The SDK decodes each content block // into its concrete class, so find the TextBlock before reading the text. - $textBlock = array_find($response->content, fn ($block) => $block instanceof TextBlock) + $textBlock = array_find($response->content, fn ($block) => $block instanceof \Anthropic\Messages\TextBlock) ?? throw new RuntimeException('Expected a text block in the response.'); return json_decode($textBlock->text, associative: true, flags: JSON_THROW_ON_ERROR); diff --git a/content/en/agents-and-tools/mcp-connector.md b/content/en/agents-and-tools/mcp-connector.md index c10002e1e9..321605bbe5 100644 --- a/content/en/agents-and-tools/mcp-connector.md +++ b/content/en/agents-and-tools/mcp-connector.md @@ -658,21 +658,27 @@ Install both the Anthropic SDK and the MCP SDK: - The helpers live in the separate `anthropic-java-mcp` artifact, which requires Java 17 or later (the core SDK supports Java 8): + The helpers live in the separate `anthropic-java-mcp` artifact, which requires Java 17 or later (the base SDK supports Java 8). Add it alongside the base `anthropic-java` dependency: ```kotlin - implementation("com.anthropic:anthropic-java-mcp:2.60.0") + implementation("com.anthropic:anthropic-java:2.63.0") + implementation("com.anthropic:anthropic-java-mcp:2.63.0") ``` ```xml + + com.anthropic + anthropic-java + 2.63.0 + com.anthropic anthropic-java-mcp - 2.60.0 + 2.63.0 ``` diff --git a/content/en/agents-and-tools/tool-use/advisor-tool.md b/content/en/agents-and-tools/tool-use/advisor-tool.md index 31b09688c6..05dc105cd3 100644 --- a/content/en/agents-and-tools/tool-use/advisor-tool.md +++ b/content/en/agents-and-tools/tool-use/advisor-tool.md @@ -566,18 +566,7 @@ Pass the full assistant content, including `advisor_tool_result` blocks, back to } // Append the full response content, including any advisor_tool_result blocks. - // BetaMessage.ToParam drops advisor result content as of anthropic-sdk-go - // v1.61.0, so re-parse each response block's raw JSON into a param block instead. - assistantContent := make([]anthropic.BetaContentBlockParamUnion, len(response.Content)) - for i, block := range response.Content { - if err := json.Unmarshal([]byte(block.RawJSON()), &assistantContent[i]); err != nil { - log.Fatal(err) - } - } - messages = append(messages, anthropic.BetaMessageParam{ - Role: anthropic.BetaMessageParamRoleAssistant, - Content: assistantContent, - }) + messages = append(messages, response.ToParam()) // Continue the conversation messages = append(messages, anthropic.NewBetaUserMessage(anthropic.NewBetaTextBlock("Now add a max-in-flight limit of 10."))) @@ -1003,19 +992,7 @@ With the default `NUDGE_TURN` of 2, the reminder typically arrives after the mod log.Fatal(err) } - // Append the full response content, including any advisor_tool_result blocks. - // BetaMessage.ToParam drops advisor result content as of anthropic-sdk-go - // v1.61.0, so re-parse each response block's raw JSON into a param block instead. - assistantContent := make([]anthropic.BetaContentBlockParamUnion, len(response.Content)) - for i, block := range response.Content { - if err := json.Unmarshal([]byte(block.RawJSON()), &assistantContent[i]); err != nil { - log.Fatal(err) - } - } - messages = append(messages, anthropic.BetaMessageParam{ - Role: anthropic.BetaMessageParamRoleAssistant, - Content: assistantContent, - }) + messages = append(messages, response.ToParam()) for _, block := range response.Content { if block.Type == "server_tool_use" && block.Name == "advisor" { diff --git a/content/en/agents-and-tools/tool-use/browser-use-tool.md b/content/en/agents-and-tools/tool-use/browser-use-tool.md index 295b790a78..36bc49cb76 100644 --- a/content/en/agents-and-tools/tool-use/browser-use-tool.md +++ b/content/en/agents-and-tools/tool-use/browser-use-tool.md @@ -978,7 +978,7 @@ The second part runs a batch in order, dispatches each block to those handlers, $failed = false; foreach ($response->content as $block) { // This example declares only the browser toolset; route other tools here if you add them. - if (!($block instanceof ToolUseBlock) || $block->toolsetName !== 'browser') { + if (!($block instanceof \Anthropic\Messages\ToolUseBlock) || $block->toolsetName !== 'browser') { continue; } $result = ['type' => 'tool_result', 'tool_use_id' => $block->id, 'toolset_name' => 'browser']; @@ -1120,7 +1120,7 @@ Browser use carries risks that standard API features don't, because Claude reads 1. Run the browser and your executor in a dedicated container or virtual machine with minimal privileges, a fresh profile that holds no credentials, and no access to sensitive filesystems or internal networks; isolate any tool you run alongside it the same way. 2. Restrict the hosts the browser can reach to a domain allowlist enforced at the network layer and re-checked in your `navigate` handler after redirects, and block loopback, link-local, and private ranges unless the task needs them. 3. Treat everything a page supplies as untrusted input, including the tab titles and URLs, and each download's `url`, `path`, and `error`, that you report in a [`browser_state`](https://platform.claude.com/docs/en/agents-and-tools/tool-use/browser-use-tool#track-tabs-and-page-state) block, and build page reads from what the page renders (the accessibility tree or visible text), not raw DOM source, so hidden text doesn't reach Claude. - 4. In your `navigate` handler, accept the history keywords `"back"`, `"forward"`, and `"reload"`, treat a URL without a scheme as `https://`, then parse the URL and refuse any scheme other than `http` or `https` (`javascript:`, `file:`, `data:`, `chrome:`, and so on) with an [error result](https://platform.claude.com/docs/en/agents-and-tools/tool-use/browser-use-tool#return-errors-from-your-executor). Check the scheme with a URL parser rather than a string prefix; the API never sees the navigation and can't reject it for you. + 4. In your `navigate` handler, accept the history keywords `"back"`, `"forward"`, and `"reload"`, treat a URL without a scheme as `https://`, then parse the URL and refuse any scheme other than `http` or `https` (`javascript:`, `file:`, `data:`, `chrome:`, and so on) with an [error result](https://platform.claude.com/docs/en/agents-and-tools/tool-use/browser-use-tool#return-errors-from-your-executor). Check the scheme with a URL parser rather than a string prefix; the API doesn't filter the URLs Claude opens, so it can't reject one for you. 5. Leave `javascript_exec` and `file_upload` disabled unless you need them, and read [Enable optional members](https://platform.claude.com/docs/en/agents-and-tools/tool-use/browser-use-tool#enable-optional-member-tools) before turning either on. 6. Have a human confirm consequential actions and anything that requires affirmative consent (purchasing, modifying accounts, messaging, and accepting terms), and make that check in your executor before each call, because one turn can carry several. diff --git a/content/en/agents-and-tools/tool-use/computer-use-tool.md b/content/en/agents-and-tools/tool-use/computer-use-tool.md index 8d4991dfe8..972692b220 100644 --- a/content/en/agents-and-tools/tool-use/computer-use-tool.md +++ b/content/en/agents-and-tools/tool-use/computer-use-tool.md @@ -929,13 +929,14 @@ The computer use tool is implemented as a schema-less tool. When using this tool def handle_computer_action(name, tool_input): - if name == "screenshot": - return capture_screenshot() - elif name == "left_click": - # coordinate is optional; without it, click where the cursor already is - return click(tool_input.get("coordinate")) - elif name == "type": - return type_text(tool_input["text"]) + match name: + case "screenshot": + return capture_screenshot() + case "left_click": + # coordinate is optional; without it, click where the cursor already is + return click(tool_input.get("coordinate")) + case "type": + return type_text(tool_input["text"]) # Handle other actions as needed raise ValueError(f"Unknown or unimplemented member: {name}") ``` @@ -976,17 +977,21 @@ The computer use tool is implemented as a schema-less tool. When using this tool ): string | Anthropic.ImageBlockParam[] { const params: object = typeof input === "object" && input !== null ? input : {}; - if (action === "screenshot") { - return captureScreenshot(); - } else if (action === "left_click") { - // coordinate is optional on the toolset; without one, click at the cursor - if ("coordinate" in params && Array.isArray(params.coordinate)) { - const [x, y] = params.coordinate; - return clickAt(x, y); - } - return clickAtCursor(); - } else if (action === "type" && "text" in params) { - return typeText(String(params.text)); + switch (action) { + case "screenshot": + return captureScreenshot(); + case "left_click": + // coordinate is optional on the toolset; without one, click at the cursor + if ("coordinate" in params && Array.isArray(params.coordinate)) { + const [x, y] = params.coordinate; + return clickAt(x, y); + } + return clickAtCursor(); + case "type": + if ("text" in params) { + return typeText(String(params.text)); + } + break; } // Handle other actions as needed throw new Error(`Unknown or unimplemented member: ${action}`); @@ -1495,7 +1500,7 @@ The computer use tool is implemented as a schema-less tool. When using this tool $failed = false; foreach ($response->content as $block) { // This example declares only the computer toolset; route other tools here if you add them. - if (!($block instanceof ToolUseBlock) || $block->toolsetName !== 'computer') { + if (!($block instanceof \Anthropic\Messages\ToolUseBlock) || $block->toolsetName !== 'computer') { continue; } $result = ['type' => 'tool_result', 'tool_use_id' => $block->id, 'toolset_name' => 'computer']; diff --git a/content/en/agents-and-tools/tool-use/fine-grained-tool-streaming.md b/content/en/agents-and-tools/tool-use/fine-grained-tool-streaming.md index 55b20cd0d9..5120f5d33a 100644 --- a/content/en/agents-and-tools/tool-use/fine-grained-tool-streaming.md +++ b/content/en/agents-and-tools/tool-use/fine-grained-tool-streaming.md @@ -402,17 +402,18 @@ The following example turns on fine-grained streaming for a `make_file` tool and $toolInputs = []; foreach ($stream as $event) { - if ( - $event instanceof RawContentBlockStartEvent - && $event->contentBlock instanceof ToolUseBlock - ) { - $toolInputs[$event->index] = ''; - } elseif ( - $event instanceof RawContentBlockDeltaEvent - && $event->delta instanceof InputJSONDelta - ) { - echo $event->delta->partialJSON; - $toolInputs[$event->index] .= $event->delta->partialJSON; + switch (true) { + case $event instanceof RawContentBlockStartEvent: + if ($event->contentBlock instanceof ToolUseBlock) { + $toolInputs[$event->index] = ''; + } + break; + case $event instanceof RawContentBlockDeltaEvent: + if ($event->delta instanceof InputJSONDelta) { + echo $event->delta->partialJSON; + $toolInputs[$event->index] .= $event->delta->partialJSON; + } + break; } } @@ -570,22 +571,32 @@ The type mismatch between the initial `input: {}` (object) and `partial_json` (s }); for await (const event of stream) { - if (event.type === "content_block_start" && event.content_block.type === "tool_use") { - toolInputs.set(event.index, ""); - } else if (event.type === "content_block_delta" && event.delta.type === "input_json_delta") { - toolInputs.set( - event.index, - (toolInputs.get(event.index) ?? "") + event.delta.partial_json - ); - } else if (event.type === "content_block_stop" && toolInputs.has(event.index)) { - const rawInput = toolInputs.get(event.index)!; - try { - console.log("Tool input:", JSON.parse(rawInput)); - } catch { - // The accumulated string is not guaranteed to be valid JSON. - // See "Handling invalid JSON in tool responses" on this page. - console.log("Invalid tool input:", rawInput); - } + switch (event.type) { + case "content_block_start": + if (event.content_block.type === "tool_use") { + toolInputs.set(event.index, ""); + } + break; + case "content_block_delta": + if (event.delta.type === "input_json_delta") { + toolInputs.set( + event.index, + (toolInputs.get(event.index) ?? "") + event.delta.partial_json + ); + } + break; + case "content_block_stop": + if (toolInputs.has(event.index)) { + const rawInput = toolInputs.get(event.index)!; + try { + console.log("Tool input:", JSON.parse(rawInput)); + } catch { + // The accumulated string is not guaranteed to be valid JSON. + // See "Handling invalid JSON in tool responses" on this page. + console.log("Invalid tool input:", rawInput); + } + } + break; } } ``` @@ -742,26 +753,30 @@ The type mismatch between the initial `input: {}` (object) and `partial_json` (s var eventIterator = streamResponse.stream().iterator(); while (eventIterator.hasNext()) { RawMessageStreamEvent event = eventIterator.next(); - if (event.isContentBlockStart()) { - var blockStart = event.asContentBlockStart(); - if (blockStart.contentBlock().isToolUse()) { - toolInputs.put(blockStart.index(), new StringBuilder()); + switch (event.type().value()) { + case CONTENT_BLOCK_START -> { + var blockStart = event.asContentBlockStart(); + if (blockStart.contentBlock().isToolUse()) { + toolInputs.put(blockStart.index(), new StringBuilder()); + } } - } else if (event.isContentBlockDelta()) { - var blockDelta = event.asContentBlockDelta(); - if (blockDelta.delta().isInputJson() && toolInputs.containsKey(blockDelta.index())) { - toolInputs.get(blockDelta.index()).append(blockDelta.delta().asInputJson().partialJson()); + case CONTENT_BLOCK_DELTA -> { + var blockDelta = event.asContentBlockDelta(); + if (blockDelta.delta().isInputJson() && toolInputs.containsKey(blockDelta.index())) { + toolInputs.get(blockDelta.index()).append(blockDelta.delta().asInputJson().partialJson()); + } } - } else if (event.isContentBlockStop()) { - var blockStop = event.asContentBlockStop(); - if (toolInputs.containsKey(blockStop.index())) { - String accumulated = toolInputs.get(blockStop.index()).toString(); - try { - IO.println("Tool input: " + objectMapper.readTree(accumulated)); - } catch (JsonProcessingException e) { - // The accumulated string is not guaranteed to be valid JSON. - // See "Handling invalid JSON in tool responses" on this page. - IO.println("Invalid tool input: " + accumulated); + case CONTENT_BLOCK_STOP -> { + var blockStop = event.asContentBlockStop(); + if (toolInputs.containsKey(blockStop.index())) { + String accumulated = toolInputs.get(blockStop.index()).toString(); + try { + IO.println("Tool input: " + objectMapper.readTree(accumulated)); + } catch (JsonProcessingException e) { + // The accumulated string is not guaranteed to be valid JSON. + // See "Handling invalid JSON in tool responses" on this page. + IO.println("Invalid tool input: " + accumulated); + } } } } @@ -803,29 +818,30 @@ The type mismatch between the initial `input: {}` (object) and `partial_json` (s ); foreach ($stream as $event) { - if ( - $event instanceof RawContentBlockStartEvent - && $event->contentBlock instanceof ToolUseBlock - ) { - $toolInputs[$event->index] = ''; - } elseif ( - $event instanceof RawContentBlockDeltaEvent - && $event->delta instanceof InputJSONDelta - ) { - $toolInputs[$event->index] .= $event->delta->partialJSON; - } elseif ( - $event instanceof RawContentBlockStopEvent - && isset($toolInputs[$event->index]) - ) { - $accumulated = $toolInputs[$event->index]; - try { - $parsed = json_decode($accumulated, associative: true, flags: JSON_THROW_ON_ERROR); - echo "Tool input: " . json_encode($parsed) . "\n"; - } catch (JsonException $e) { - // The accumulated string is not guaranteed to be valid JSON. - // See "Handling invalid JSON in tool responses" on this page. - echo "Invalid tool input: {$accumulated}\n"; - } + switch (true) { + case $event instanceof RawContentBlockStartEvent: + if ($event->contentBlock instanceof ToolUseBlock) { + $toolInputs[$event->index] = ''; + } + break; + case $event instanceof RawContentBlockDeltaEvent: + if ($event->delta instanceof InputJSONDelta) { + $toolInputs[$event->index] .= $event->delta->partialJSON; + } + break; + case $event instanceof RawContentBlockStopEvent: + if (isset($toolInputs[$event->index])) { + $accumulated = $toolInputs[$event->index]; + try { + $parsed = json_decode($accumulated, associative: true, flags: JSON_THROW_ON_ERROR); + echo "Tool input: " . json_encode($parsed) . "\n"; + } catch (JsonException $e) { + // The accumulated string is not guaranteed to be valid JSON. + // See "Handling invalid JSON in tool responses" on this page. + echo "Invalid tool input: {$accumulated}\n"; + } + } + break; } } ``` diff --git a/content/en/agents-and-tools/tool-use/text-editor-tool.md b/content/en/agents-and-tools/tool-use/text-editor-tool.md index 7b267cf518..2c3f8c61f0 100644 --- a/content/en/agents-and-tools/tool-use/text-editor-tool.md +++ b/content/en/agents-and-tools/tool-use/text-editor-tool.md @@ -1504,18 +1504,19 @@ The tool type is `type: "text_editor_20250728"` for Claude 4 and later models. command = input_params.get("command", "") file_path = input_params.get("path", "") - if command == "view": - # Read and return file contents - pass - elif command == "str_replace": - # Replace text in file - pass - elif command == "create": - # Create new file - pass - elif command == "insert": - # Insert text at location - pass + match command: + case "view": + # Read and return file contents + pass + case "str_replace": + # Replace text in file + pass + case "create": + # Create new file + pass + case "insert": + # Insert text at location + pass ``` ```typescript TypeScript @@ -1524,14 +1525,19 @@ The tool type is `type: "text_editor_20250728"` for Claude 4 and later models. const command = inputParams.command ?? ""; const filePath = inputParams.path ?? ""; - if (command === "view") { - // Read and return file contents - } else if (command === "str_replace") { - // Replace text in file - } else if (command === "create") { - // Create new file - } else if (command === "insert") { - // Insert text at location + switch (command) { + case "view": + // Read and return file contents + break; + case "str_replace": + // Replace text in file + break; + case "create": + // Create new file + break; + case "insert": + // Insert text at location + break; } } ``` diff --git a/content/en/agents-and-tools/tool-use/tool-runner.md b/content/en/agents-and-tools/tool-use/tool-runner.md index b9f154a4ec..a2f47786cf 100644 --- a/content/en/agents-and-tools/tool-use/tool-runner.md +++ b/content/en/agents-and-tools/tool-use/tool-runner.md @@ -438,6 +438,8 @@ Depending on the SDK's tool signature, a tool returns its result as a string or content as $block) { - if ($block->type === 'text') { - echo $block->text, "\n"; - } elseif ($block->type === 'tool_use') { - echo "[Tool call: {$block->name}]\n"; + switch (true) { + case $block instanceof BetaTextBlock: + echo $block->text, "\n"; + break; + case $block instanceof BetaToolUseBlock: + echo "[Tool call: {$block->name}]\n"; + break; } } } @@ -1451,7 +1456,7 @@ In the Python and TypeScript SDKs, use the tool response method to get the tool foreach ($runner as $message) { $toolResults = []; foreach ($message->content as $block) { - if ($block instanceof BetaToolUseBlock) { + if ($block instanceof \Anthropic\Beta\Messages\BetaToolUseBlock) { $toolResults[] = [ 'type' => 'tool_result', 'tool_use_id' => $block->id, diff --git a/content/en/api/beta-headers.md b/content/en/api/beta-headers.md index e827cbd1b1..343ffe4c8d 100644 --- a/content/en/api/beta-headers.md +++ b/content/en/api/beta-headers.md @@ -168,7 +168,15 @@ To use multiple beta features in a single request, include all feature names in anthropic-beta: feature1,feature2,feature3 ``` -When using an SDK, list each feature in the `betas` parameter (for example, `betas=["feature1", "feature2"]`). With the CLI, pass a single `--beta` flag with the feature names separated by commas (for example, `--beta feature1,feature2`). Avoid repeating the flag: currently only the first flag's value takes effect. +You can also send the `anthropic-beta` header more than once in the same request. The Claude API reads every `anthropic-beta` header, so the following is equivalent to the previous example: + +```http +anthropic-beta: feature1 +anthropic-beta: feature2 +anthropic-beta: feature3 +``` + +When using an SDK, list each feature in the `betas` parameter (for example, `betas=["feature1", "feature2"]`). With the CLI, pass a single `--beta` flag with the feature names separated by commas (for example, `--beta feature1,feature2`). You can also repeat the flag (for example, `--beta feature1 --beta feature2`). ### Endpoint-specific headers diff --git a/content/en/api/compliance.md b/content/en/api/compliance.md index 552fcd6a27..a6c18ee4e9 100644 --- a/content/en/api/compliance.md +++ b/content/en/api/compliance.md @@ -19,7 +19,7 @@ compliance activities that can be filtered by various criteria. #### Query parameters -- `activity_types: optional array of "abuse_decision_received" or "account_deleted" or "admin_api_key_created" or 499 more` +- `activity_types: optional array of "abuse_decision_received" or "account_deleted" or "admin_api_key_created" or 501 more` Filter activities by type. See the response `data` schema for the additional fields each type returns. Cannot be combined with `exclude_activity_types[]`. @@ -1063,6 +1063,14 @@ compliance activities that can be filtered by various criteria. The "Auto" permission mode in Cowork was enabled for the organization, allowing members to let Claude approve its own actions after a safety check. + - `"org_cowork_browser_pane_disabled"` + + The in-app browser in Cowork was disabled for the organization, so Claude can no longer open or use websites in a browser pane during members' Cowork sessions. + + - `"org_cowork_browser_pane_enabled"` + + The in-app browser in Cowork was enabled for the organization, letting Claude open and use websites in a browser pane during members' Cowork sessions. + - `"org_cowork_disabled"` Organization cowork was disabled. @@ -2086,7 +2094,7 @@ compliance activities that can be filtered by various criteria. format: date-time -- `exclude_activity_types: optional array of "abuse_decision_received" or "account_deleted" or "admin_api_key_created" or 499 more` +- `exclude_activity_types: optional array of "abuse_decision_received" or "account_deleted" or "admin_api_key_created" or 501 more` Exclude activities of these types. Cannot be combined with `activity_types[]`. @@ -3130,6 +3138,14 @@ compliance activities that can be filtered by various criteria. The "Auto" permission mode in Cowork was enabled for the organization, allowing members to let Claude approve its own actions after a safety check. + - `"org_cowork_browser_pane_disabled"` + + The in-app browser in Cowork was disabled for the organization, so Claude can no longer open or use websites in a browser pane during members' Cowork sessions. + + - `"org_cowork_browser_pane_enabled"` + + The in-app browser in Cowork was enabled for the organization, letting Claude open and use websites in a browser pane during members' Cowork sessions. + - `"org_cowork_disabled"` Organization cowork was disabled. @@ -4145,7 +4161,7 @@ compliance activities that can be filtered by various criteria. #### Returns -- `data: optional array of AbuseDecisionReceived or AccountDeleted or AdminAPIKeyCreated or 499 more` +- `data: optional array of AbuseDecisionReceived or AccountDeleted or AdminAPIKeyCreated or 501 more` List of activity records. Each element's `type` field identifies which activity it is and which additional fields are present. @@ -8729,11 +8745,11 @@ compliance activities that can be filtered by various criteria. - `user_agent: optional string or null` - - `audience: array of ArtifactSharingAudienceOrganization or ArtifactSharingAudienceUsers or ArtifactSharingAudienceAnyoneWithLink` + - `audience: array of Organization or Users or AnyoneWithLink` The artifact's sharing audience after the change. If empty, the artifact is visible only to its owner. - - `ArtifactSharingAudienceOrganization object` + - `Organization object` Sharing audience: visible to the owning organization. @@ -8741,7 +8757,7 @@ compliance activities that can be filtered by various criteria. default: organization - - `ArtifactSharingAudienceUsers object` + - `Users object` Sharing audience: visible to an explicit allowlist of users. @@ -8749,10 +8765,9 @@ compliance activities that can be filtered by various criteria. default: users - - `ArtifactSharingAudienceAnyoneWithLink object` + - `AnyoneWithLink object` - Sharing audience: anyone with the link, including anonymous viewers - (an artifact shared to the open internet). + Sharing audience: anyone with the link, including anonymous viewers (an artifact shared to the open internet). - `type: optional "anyone_with_link"` @@ -59796,6 +59811,470 @@ compliance activities that can be filtered by various criteria. Organization UUID where the activity occurred. Null when the activity is not tied to an organization (for example, login and logout events or calls to the Compliance API). + - `OrgCoworkBrowserPaneDisabled object` + + The in-app browser in Cowork was disabled for the organization, so Claude can no longer open or use websites in a browser pane during members' Cowork sessions. + + - `type: optional "org_cowork_browser_pane_disabled"` + + default: org_cowork_browser_pane_disabled + + - `actor: APIActor or UserActor or UnauthenticatedUserActor or 8 more` + + - `APIActor object` + + - `type: optional "api_actor"` + + default: api_actor + + - `api_key_id: string` + + - `ip_address: string` + + - `user_agent: string` + + - `UserActor object` + + - `type: optional "user_actor"` + + default: user_actor + + - `email_address: string` + + format: email + + - `ip_address: string` + + - `user_agent: string` + + - `user_id: string` + + - `UnauthenticatedUserActor object` + + - `type: optional "unauthenticated_user_actor"` + + default: unauthenticated_user_actor + + - `ip_address: string` + + - `user_agent: string` + + - `unauthenticated_email_address: optional string or null` + + format: email + + - `AnthropicActor object` + + - `type: optional "anthropic_actor"` + + default: anthropic_actor + + - `email_address: optional string or null` + + format: email + + - `SystemActor object` + + Automated background processing performed by Anthropic systems, acting + without a user or customer credential. + + - `type: optional "system_actor"` + + default: system_actor + + - `service: optional string or null` + + Name of the automated process that performed the action, when known. + + - `AdminAPIKeyActor object` + + - `type: optional "admin_api_key_actor"` + + default: admin_api_key_actor + + - `admin_api_key_id: string` + + - `ip_address: string` + + - `user_agent: string` + + - `ServiceAccountActor object` + + - `type: optional "service_account_actor"` + + default: service_account_actor + + - `ip_address: string` + + - `service_account_id: string` + + - `user_agent: string` + + - `ScimDirectorySyncActor object` + + - `type: optional "scim_directory_sync_actor"` + + default: scim_directory_sync_actor + + - `directory_id: string` + + - `workos_event_id: string` + + - `idp_connection_type: optional string or null` + + - `FederatedIdentityActor object` + + A federated external workload authenticated via a verified OIDC token. + + Carries the verified issuer, subject, and audience claims from the + presented JWT. + + - `type: optional "federated_identity_actor"` + + default: federated_identity_actor + + - `issuer: string` + + - `subject: string` + + - `audience: optional array of string` + + - `ip_address: optional string or null` + + - `user_agent: optional string or null` + + - `FederatedActor object` + + An external identity asserted by a trusted provider — a cloud-provider + gateway or a customer-registered federation issuer — acting without an + Anthropic-provisioned account or service account. + + - `type: optional "federated_actor"` + + default: federated_actor + + - `provider: FederatedActorAwsProvider or FederatedActorAzureProvider or FederatedActorGcpProvider or FederatedActorOidcProvider` + + - `FederatedActorAwsProvider object` + + Asserting party: the AWS account the organization is bound to. + + - `type: optional "aws"` + + default: aws + + - `account_id: string` + + - `signed_principal: string` + + The AWS-signed ARN of the IAM principal that requested the token. + + - `FederatedActorAzureProvider object` + + Asserting party: the Azure subscription the organization is bound to. + + - `type: optional "azure"` + + default: azure + + - `subscription_id: string` + + - `FederatedActorGcpProvider object` + + Asserting party: the GCP project the organization is bound to. + + - `type: optional "gcp"` + + default: gcp + + - `project_number: string` + + - `FederatedActorOidcProvider object` + + Asserting party: a customer-registered OIDC federation issuer. + + - `type: optional "oidc"` + + default: oidc + + - `issuer: optional string or null` + + The federation issuer's URL. Null when the presented credential failed verification. + + - `ip_address: optional string or null` + + - `subject: optional string or null` + + The provider's verified identifier for the caller; its form depends on the provider. + + - `user_agent: optional string or null` + + - `AttestedDeviceActor object` + + An attested mobile device authenticated via Apple App Attest. + + - `type: optional "attested_device_actor"` + + default: attested_device_actor + + - `external_client_id: string` + + - `kid_hash: string` + + - `ip_address: optional string or null` + + - `user_agent: optional string or null` + + - `id: optional string` + + Unique identifier for the activity e.g. 'activity_abcd1234' + + - `created_at: optional string` + + When this activity occurred. + + format: date-time + + - `organization_id: optional string or null` + + Organization ID this activity is associated with + + - `organization_uuid: optional string or null` + + Organization UUID where the activity occurred. Null when the activity is not tied to an organization (for example, login and logout events or calls to the Compliance API). + + - `OrgCoworkBrowserPaneEnabled object` + + The in-app browser in Cowork was enabled for the organization, letting Claude open and use websites in a browser pane during members' Cowork sessions. + + - `type: optional "org_cowork_browser_pane_enabled"` + + default: org_cowork_browser_pane_enabled + + - `actor: APIActor or UserActor or UnauthenticatedUserActor or 8 more` + + - `APIActor object` + + - `type: optional "api_actor"` + + default: api_actor + + - `api_key_id: string` + + - `ip_address: string` + + - `user_agent: string` + + - `UserActor object` + + - `type: optional "user_actor"` + + default: user_actor + + - `email_address: string` + + format: email + + - `ip_address: string` + + - `user_agent: string` + + - `user_id: string` + + - `UnauthenticatedUserActor object` + + - `type: optional "unauthenticated_user_actor"` + + default: unauthenticated_user_actor + + - `ip_address: string` + + - `user_agent: string` + + - `unauthenticated_email_address: optional string or null` + + format: email + + - `AnthropicActor object` + + - `type: optional "anthropic_actor"` + + default: anthropic_actor + + - `email_address: optional string or null` + + format: email + + - `SystemActor object` + + Automated background processing performed by Anthropic systems, acting + without a user or customer credential. + + - `type: optional "system_actor"` + + default: system_actor + + - `service: optional string or null` + + Name of the automated process that performed the action, when known. + + - `AdminAPIKeyActor object` + + - `type: optional "admin_api_key_actor"` + + default: admin_api_key_actor + + - `admin_api_key_id: string` + + - `ip_address: string` + + - `user_agent: string` + + - `ServiceAccountActor object` + + - `type: optional "service_account_actor"` + + default: service_account_actor + + - `ip_address: string` + + - `service_account_id: string` + + - `user_agent: string` + + - `ScimDirectorySyncActor object` + + - `type: optional "scim_directory_sync_actor"` + + default: scim_directory_sync_actor + + - `directory_id: string` + + - `workos_event_id: string` + + - `idp_connection_type: optional string or null` + + - `FederatedIdentityActor object` + + A federated external workload authenticated via a verified OIDC token. + + Carries the verified issuer, subject, and audience claims from the + presented JWT. + + - `type: optional "federated_identity_actor"` + + default: federated_identity_actor + + - `issuer: string` + + - `subject: string` + + - `audience: optional array of string` + + - `ip_address: optional string or null` + + - `user_agent: optional string or null` + + - `FederatedActor object` + + An external identity asserted by a trusted provider — a cloud-provider + gateway or a customer-registered federation issuer — acting without an + Anthropic-provisioned account or service account. + + - `type: optional "federated_actor"` + + default: federated_actor + + - `provider: FederatedActorAwsProvider or FederatedActorAzureProvider or FederatedActorGcpProvider or FederatedActorOidcProvider` + + - `FederatedActorAwsProvider object` + + Asserting party: the AWS account the organization is bound to. + + - `type: optional "aws"` + + default: aws + + - `account_id: string` + + - `signed_principal: string` + + The AWS-signed ARN of the IAM principal that requested the token. + + - `FederatedActorAzureProvider object` + + Asserting party: the Azure subscription the organization is bound to. + + - `type: optional "azure"` + + default: azure + + - `subscription_id: string` + + - `FederatedActorGcpProvider object` + + Asserting party: the GCP project the organization is bound to. + + - `type: optional "gcp"` + + default: gcp + + - `project_number: string` + + - `FederatedActorOidcProvider object` + + Asserting party: a customer-registered OIDC federation issuer. + + - `type: optional "oidc"` + + default: oidc + + - `issuer: optional string or null` + + The federation issuer's URL. Null when the presented credential failed verification. + + - `ip_address: optional string or null` + + - `subject: optional string or null` + + The provider's verified identifier for the caller; its form depends on the provider. + + - `user_agent: optional string or null` + + - `AttestedDeviceActor object` + + An attested mobile device authenticated via Apple App Attest. + + - `type: optional "attested_device_actor"` + + default: attested_device_actor + + - `external_client_id: string` + + - `kid_hash: string` + + - `ip_address: optional string or null` + + - `user_agent: optional string or null` + + - `id: optional string` + + Unique identifier for the activity e.g. 'activity_abcd1234' + + - `created_at: optional string` + + When this activity occurred. + + format: date-time + + - `organization_id: optional string or null` + + Organization ID this activity is associated with + + - `organization_uuid: optional string or null` + + Organization UUID where the activity occurred. Null when the activity is not tied to an organization (for example, login and logout events or calls to the Compliance API). + - `OrgCoworkDisabled object` Organization cowork was disabled. @@ -129266,6 +129745,13 @@ enforced state after all policies are applied, which may differ from what is configured in the admin console. Settings an organization's administrators cannot change (for example, ones controlled by Anthropic policy or not available to the organization) are omitted from the list. +Settings that report a compliance arrangement with Anthropic are the +exception: the HIPAA and Access Transparency settings are always included; +the API zero data retention setting is reported for Claude Console +organizations, and the Claude Code zero data retention and customer-managed +encryption keys (CMEK) settings for Claude Enterprise organizations. Each +reports whether the arrangement is in place at the organization level; a +retention setting on an individual workspace is not reflected. The organization must belong to the API key's organization hierarchy; unknown organizations and organizations outside the hierarchy return 404. @@ -129338,12 +129824,16 @@ unknown organizations and organizations outside the hierarchy return 404. default: boolean - - `name: "ai_powered_artifacts_enabled" or "api_workbench_feedback_collection_enabled" or "artifact_connectors_enabled" or 53 more` + - `name: "access_transparency_enabled" or "ai_powered_artifacts_enabled" or "api_workbench_feedback_collection_enabled" or 57 more` + + - `"access_transparency_enabled"` - `"ai_powered_artifacts_enabled"` - `"api_workbench_feedback_collection_enabled"` + - `"api_zero_data_retention_enabled"` + - `"artifact_connectors_enabled"` - `"ask_your_org_enabled"` @@ -129382,6 +129872,8 @@ unknown organizations and organizations outside the hierarchy return 404. - `"claude_design_enabled"` + - `"claude_enterprise_claude_code_zero_data_retention_enabled"` + - `"claude_in_slack_enabled"` - `"claude_science_custom_connectors_enabled"` @@ -129400,6 +129892,8 @@ unknown organizations and organizations outside the hierarchy return 404. - `"claude_science_ssh_hosts_enabled"` + - `"cmek_enabled"` + - `"code_execution_enabled"` - `"code_execution_network_egress_enabled"` @@ -129606,7 +130100,7 @@ curl https://api.anthropic.com/v1/compliance/organizations/$ORGANIZATION_ID/sett "organization_id": "organization_id", "settings": [ { - "name": "ai_powered_artifacts_enabled", + "name": "access_transparency_enabled", "value": true, "type": "boolean" } diff --git a/content/en/api/compliance/activities.md b/content/en/api/compliance/activities.md index 81546766fd..ff912bb86c 100644 --- a/content/en/api/compliance/activities.md +++ b/content/en/api/compliance/activities.md @@ -17,7 +17,7 @@ compliance activities that can be filtered by various criteria. ### Query parameters -- `activity_types: optional array of "abuse_decision_received" or "account_deleted" or "admin_api_key_created" or 499 more` +- `activity_types: optional array of "abuse_decision_received" or "account_deleted" or "admin_api_key_created" or 501 more` Filter activities by type. See the response `data` schema for the additional fields each type returns. Cannot be combined with `exclude_activity_types[]`. @@ -1061,6 +1061,14 @@ compliance activities that can be filtered by various criteria. The "Auto" permission mode in Cowork was enabled for the organization, allowing members to let Claude approve its own actions after a safety check. + - `"org_cowork_browser_pane_disabled"` + + The in-app browser in Cowork was disabled for the organization, so Claude can no longer open or use websites in a browser pane during members' Cowork sessions. + + - `"org_cowork_browser_pane_enabled"` + + The in-app browser in Cowork was enabled for the organization, letting Claude open and use websites in a browser pane during members' Cowork sessions. + - `"org_cowork_disabled"` Organization cowork was disabled. @@ -2084,7 +2092,7 @@ compliance activities that can be filtered by various criteria. format: date-time -- `exclude_activity_types: optional array of "abuse_decision_received" or "account_deleted" or "admin_api_key_created" or 499 more` +- `exclude_activity_types: optional array of "abuse_decision_received" or "account_deleted" or "admin_api_key_created" or 501 more` Exclude activities of these types. Cannot be combined with `activity_types[]`. @@ -3128,6 +3136,14 @@ compliance activities that can be filtered by various criteria. The "Auto" permission mode in Cowork was enabled for the organization, allowing members to let Claude approve its own actions after a safety check. + - `"org_cowork_browser_pane_disabled"` + + The in-app browser in Cowork was disabled for the organization, so Claude can no longer open or use websites in a browser pane during members' Cowork sessions. + + - `"org_cowork_browser_pane_enabled"` + + The in-app browser in Cowork was enabled for the organization, letting Claude open and use websites in a browser pane during members' Cowork sessions. + - `"org_cowork_disabled"` Organization cowork was disabled. @@ -4143,7 +4159,7 @@ compliance activities that can be filtered by various criteria. ### Returns -- `data: optional array of AbuseDecisionReceived or AccountDeleted or AdminAPIKeyCreated or 499 more` +- `data: optional array of AbuseDecisionReceived or AccountDeleted or AdminAPIKeyCreated or 501 more` List of activity records. Each element's `type` field identifies which activity it is and which additional fields are present. @@ -8727,11 +8743,11 @@ compliance activities that can be filtered by various criteria. - `user_agent: optional string or null` - - `audience: array of ArtifactSharingAudienceOrganization or ArtifactSharingAudienceUsers or ArtifactSharingAudienceAnyoneWithLink` + - `audience: array of Organization or Users or AnyoneWithLink` The artifact's sharing audience after the change. If empty, the artifact is visible only to its owner. - - `ArtifactSharingAudienceOrganization object` + - `Organization object` Sharing audience: visible to the owning organization. @@ -8739,7 +8755,7 @@ compliance activities that can be filtered by various criteria. default: organization - - `ArtifactSharingAudienceUsers object` + - `Users object` Sharing audience: visible to an explicit allowlist of users. @@ -8747,10 +8763,9 @@ compliance activities that can be filtered by various criteria. default: users - - `ArtifactSharingAudienceAnyoneWithLink object` + - `AnyoneWithLink object` - Sharing audience: anyone with the link, including anonymous viewers - (an artifact shared to the open internet). + Sharing audience: anyone with the link, including anonymous viewers (an artifact shared to the open internet). - `type: optional "anyone_with_link"` @@ -59794,13 +59809,13 @@ compliance activities that can be filtered by various criteria. Organization UUID where the activity occurred. Null when the activity is not tied to an organization (for example, login and logout events or calls to the Compliance API). - - `OrgCoworkDisabled object` + - `OrgCoworkBrowserPaneDisabled object` - Organization cowork was disabled. + The in-app browser in Cowork was disabled for the organization, so Claude can no longer open or use websites in a browser pane during members' Cowork sessions. - - `type: optional "org_cowork_disabled"` + - `type: optional "org_cowork_browser_pane_disabled"` - default: org_cowork_disabled + default: org_cowork_browser_pane_disabled - `actor: APIActor or UserActor or UnauthenticatedUserActor or 8 more` @@ -60018,10 +60033,6 @@ compliance activities that can be filtered by various criteria. format: date-time - - `current_value: optional boolean or null` - - Setting value immediately after this change - - `organization_id: optional string or null` Organization ID this activity is associated with @@ -60030,17 +60041,245 @@ compliance activities that can be filtered by various criteria. Organization UUID where the activity occurred. Null when the activity is not tied to an organization (for example, login and logout events or calls to the Compliance API). - - `previous_value: optional boolean or null` + - `OrgCoworkBrowserPaneEnabled object` - Setting value immediately before this change + The in-app browser in Cowork was enabled for the organization, letting Claude open and use websites in a browser pane during members' Cowork sessions. - - `OrgCoworkEnabled object` + - `type: optional "org_cowork_browser_pane_enabled"` - Organization cowork was enabled. + default: org_cowork_browser_pane_enabled - - `type: optional "org_cowork_enabled"` + - `actor: APIActor or UserActor or UnauthenticatedUserActor or 8 more` - default: org_cowork_enabled + - `APIActor object` + + - `type: optional "api_actor"` + + default: api_actor + + - `api_key_id: string` + + - `ip_address: string` + + - `user_agent: string` + + - `UserActor object` + + - `type: optional "user_actor"` + + default: user_actor + + - `email_address: string` + + format: email + + - `ip_address: string` + + - `user_agent: string` + + - `user_id: string` + + - `UnauthenticatedUserActor object` + + - `type: optional "unauthenticated_user_actor"` + + default: unauthenticated_user_actor + + - `ip_address: string` + + - `user_agent: string` + + - `unauthenticated_email_address: optional string or null` + + format: email + + - `AnthropicActor object` + + - `type: optional "anthropic_actor"` + + default: anthropic_actor + + - `email_address: optional string or null` + + format: email + + - `SystemActor object` + + Automated background processing performed by Anthropic systems, acting + without a user or customer credential. + + - `type: optional "system_actor"` + + default: system_actor + + - `service: optional string or null` + + Name of the automated process that performed the action, when known. + + - `AdminAPIKeyActor object` + + - `type: optional "admin_api_key_actor"` + + default: admin_api_key_actor + + - `admin_api_key_id: string` + + - `ip_address: string` + + - `user_agent: string` + + - `ServiceAccountActor object` + + - `type: optional "service_account_actor"` + + default: service_account_actor + + - `ip_address: string` + + - `service_account_id: string` + + - `user_agent: string` + + - `ScimDirectorySyncActor object` + + - `type: optional "scim_directory_sync_actor"` + + default: scim_directory_sync_actor + + - `directory_id: string` + + - `workos_event_id: string` + + - `idp_connection_type: optional string or null` + + - `FederatedIdentityActor object` + + A federated external workload authenticated via a verified OIDC token. + + Carries the verified issuer, subject, and audience claims from the + presented JWT. + + - `type: optional "federated_identity_actor"` + + default: federated_identity_actor + + - `issuer: string` + + - `subject: string` + + - `audience: optional array of string` + + - `ip_address: optional string or null` + + - `user_agent: optional string or null` + + - `FederatedActor object` + + An external identity asserted by a trusted provider — a cloud-provider + gateway or a customer-registered federation issuer — acting without an + Anthropic-provisioned account or service account. + + - `type: optional "federated_actor"` + + default: federated_actor + + - `provider: FederatedActorAwsProvider or FederatedActorAzureProvider or FederatedActorGcpProvider or FederatedActorOidcProvider` + + - `FederatedActorAwsProvider object` + + Asserting party: the AWS account the organization is bound to. + + - `type: optional "aws"` + + default: aws + + - `account_id: string` + + - `signed_principal: string` + + The AWS-signed ARN of the IAM principal that requested the token. + + - `FederatedActorAzureProvider object` + + Asserting party: the Azure subscription the organization is bound to. + + - `type: optional "azure"` + + default: azure + + - `subscription_id: string` + + - `FederatedActorGcpProvider object` + + Asserting party: the GCP project the organization is bound to. + + - `type: optional "gcp"` + + default: gcp + + - `project_number: string` + + - `FederatedActorOidcProvider object` + + Asserting party: a customer-registered OIDC federation issuer. + + - `type: optional "oidc"` + + default: oidc + + - `issuer: optional string or null` + + The federation issuer's URL. Null when the presented credential failed verification. + + - `ip_address: optional string or null` + + - `subject: optional string or null` + + The provider's verified identifier for the caller; its form depends on the provider. + + - `user_agent: optional string or null` + + - `AttestedDeviceActor object` + + An attested mobile device authenticated via Apple App Attest. + + - `type: optional "attested_device_actor"` + + default: attested_device_actor + + - `external_client_id: string` + + - `kid_hash: string` + + - `ip_address: optional string or null` + + - `user_agent: optional string or null` + + - `id: optional string` + + Unique identifier for the activity e.g. 'activity_abcd1234' + + - `created_at: optional string` + + When this activity occurred. + + format: date-time + + - `organization_id: optional string or null` + + Organization ID this activity is associated with + + - `organization_uuid: optional string or null` + + Organization UUID where the activity occurred. Null when the activity is not tied to an organization (for example, login and logout events or calls to the Compliance API). + + - `OrgCoworkDisabled object` + + Organization cowork was disabled. + + - `type: optional "org_cowork_disabled"` + + default: org_cowork_disabled - `actor: APIActor or UserActor or UnauthenticatedUserActor or 8 more` @@ -60274,13 +60513,13 @@ compliance activities that can be filtered by various criteria. Setting value immediately before this change - - `OrgCoworkMcpAlwaysAllowDisabled object` + - `OrgCoworkEnabled object` - The "Always allow" option for connector tools in Cowork was disabled for the organization, so each use of a connector tool that can make changes requires approval. Read-only connector tools are not affected by this setting. + Organization cowork was enabled. - - `type: optional "org_cowork_mcp_always_allow_disabled"` + - `type: optional "org_cowork_enabled"` - default: org_cowork_mcp_always_allow_disabled + default: org_cowork_enabled - `actor: APIActor or UserActor or UnauthenticatedUserActor or 8 more` @@ -60498,6 +60737,10 @@ compliance activities that can be filtered by various criteria. format: date-time + - `current_value: optional boolean or null` + + Setting value immediately after this change + - `organization_id: optional string or null` Organization ID this activity is associated with @@ -60506,13 +60749,17 @@ compliance activities that can be filtered by various criteria. Organization UUID where the activity occurred. Null when the activity is not tied to an organization (for example, login and logout events or calls to the Compliance API). - - `OrgCoworkMcpAlwaysAllowEnabled object` + - `previous_value: optional boolean or null` - The "Always allow" option for connector tools in Cowork was enabled for the organization, letting members approve a connector tool that can make changes once and allow its later uses automatically. Read-only connector tools are not affected by this setting. + Setting value immediately before this change - - `type: optional "org_cowork_mcp_always_allow_enabled"` + - `OrgCoworkMcpAlwaysAllowDisabled object` - default: org_cowork_mcp_always_allow_enabled + The "Always allow" option for connector tools in Cowork was disabled for the organization, so each use of a connector tool that can make changes requires approval. Read-only connector tools are not affected by this setting. + + - `type: optional "org_cowork_mcp_always_allow_disabled"` + + default: org_cowork_mcp_always_allow_disabled - `actor: APIActor or UserActor or UnauthenticatedUserActor or 8 more` @@ -60738,13 +60985,13 @@ compliance activities that can be filtered by various criteria. Organization UUID where the activity occurred. Null when the activity is not tied to an organization (for example, login and logout events or calls to the Compliance API). - - `OrgCoworkOtlpSettingsUpdated object` + - `OrgCoworkMcpAlwaysAllowEnabled object` - The organization's Cowork OpenTelemetry monitoring export settings were updated. + The "Always allow" option for connector tools in Cowork was enabled for the organization, letting members approve a connector tool that can make changes once and allow its later uses automatically. Read-only connector tools are not affected by this setting. - - `type: optional "org_cowork_otlp_settings_updated"` + - `type: optional "org_cowork_mcp_always_allow_enabled"` - default: org_cowork_otlp_settings_updated + default: org_cowork_mcp_always_allow_enabled - `actor: APIActor or UserActor or UnauthenticatedUserActor or 8 more` @@ -60962,22 +61209,6 @@ compliance activities that can be filtered by various criteria. format: date-time - - `new_otlp_content_capture: optional array of string or null` - - The organization's content-capture settings after the change, as a sorted list of category names. An empty list means content capture is explicitly turned off. Null if the settings are not set or were not modified by this update. - - - `new_otlp_endpoint: optional string or null` - - The OpenTelemetry export endpoint after the change. Credentials in the URL userinfo or query string are removed; path segments are retained. Null if the endpoint is unset or was not itself modified by this update. - - - `new_otlp_protocol: optional string or null` - - The OpenTelemetry export protocol after the change. Null if the protocol is unset or was not itself modified by this update. - - - `new_otlp_resource_attributes: optional string or null` - - The OpenTelemetry resource attributes after the change. Null if the attributes are unset or were not themselves modified by this update. - - `organization_id: optional string or null` Organization ID this activity is associated with @@ -60986,39 +61217,13 @@ compliance activities that can be filtered by various criteria. Organization UUID where the activity occurred. Null when the activity is not tied to an organization (for example, login and logout events or calls to the Compliance API). - - `otlp_headers_change: optional "cleared" or "set" or "unspecified" or null` - - Whether the OpenTelemetry export headers were set or cleared. 'set' is recorded for any non-empty submission, including resubmission of an unchanged value. Header values are never included. - - - `"cleared"` - - - `"set"` - - - `"unspecified"` - - - `previous_otlp_content_capture: optional array of string or null` - - The organization's content-capture settings before the change, as a sorted list of category names. An empty list means content capture is explicitly turned off. Null if the settings were not previously set or were not modified by this update. - - - `previous_otlp_endpoint: optional string or null` - - The OpenTelemetry export endpoint before the change. Credentials in the URL userinfo or query string are removed; path segments are retained. Null if the endpoint was previously unset or was not itself modified by this update. - - - `previous_otlp_protocol: optional string or null` - - The OpenTelemetry export protocol before the change. Null if the protocol was previously unset or was not itself modified by this update. - - - `previous_otlp_resource_attributes: optional string or null` - - The OpenTelemetry resource attributes before the change. Null if the attributes were previously unset or were not themselves modified by this update. - - - `OrgCoworkRemoteDisabled object` + - `OrgCoworkOtlpSettingsUpdated object` - Running Cowork in the cloud was disabled for the organization, so members can no longer run Cowork sessions in Anthropic-hosted remote environments. + The organization's Cowork OpenTelemetry monitoring export settings were updated. - - `type: optional "org_cowork_remote_disabled"` + - `type: optional "org_cowork_otlp_settings_updated"` - default: org_cowork_remote_disabled + default: org_cowork_otlp_settings_updated - `actor: APIActor or UserActor or UnauthenticatedUserActor or 8 more` @@ -61236,6 +61441,22 @@ compliance activities that can be filtered by various criteria. format: date-time + - `new_otlp_content_capture: optional array of string or null` + + The organization's content-capture settings after the change, as a sorted list of category names. An empty list means content capture is explicitly turned off. Null if the settings are not set or were not modified by this update. + + - `new_otlp_endpoint: optional string or null` + + The OpenTelemetry export endpoint after the change. Credentials in the URL userinfo or query string are removed; path segments are retained. Null if the endpoint is unset or was not itself modified by this update. + + - `new_otlp_protocol: optional string or null` + + The OpenTelemetry export protocol after the change. Null if the protocol is unset or was not itself modified by this update. + + - `new_otlp_resource_attributes: optional string or null` + + The OpenTelemetry resource attributes after the change. Null if the attributes are unset or were not themselves modified by this update. + - `organization_id: optional string or null` Organization ID this activity is associated with @@ -61244,13 +61465,39 @@ compliance activities that can be filtered by various criteria. Organization UUID where the activity occurred. Null when the activity is not tied to an organization (for example, login and logout events or calls to the Compliance API). - - `OrgCoworkRemoteEnabled object` + - `otlp_headers_change: optional "cleared" or "set" or "unspecified" or null` - Running Cowork in the cloud was enabled for the organization, allowing members to run Cowork sessions in Anthropic-hosted remote environments. + Whether the OpenTelemetry export headers were set or cleared. 'set' is recorded for any non-empty submission, including resubmission of an unchanged value. Header values are never included. - - `type: optional "org_cowork_remote_enabled"` + - `"cleared"` - default: org_cowork_remote_enabled + - `"set"` + + - `"unspecified"` + + - `previous_otlp_content_capture: optional array of string or null` + + The organization's content-capture settings before the change, as a sorted list of category names. An empty list means content capture is explicitly turned off. Null if the settings were not previously set or were not modified by this update. + + - `previous_otlp_endpoint: optional string or null` + + The OpenTelemetry export endpoint before the change. Credentials in the URL userinfo or query string are removed; path segments are retained. Null if the endpoint was previously unset or was not itself modified by this update. + + - `previous_otlp_protocol: optional string or null` + + The OpenTelemetry export protocol before the change. Null if the protocol was previously unset or was not itself modified by this update. + + - `previous_otlp_resource_attributes: optional string or null` + + The OpenTelemetry resource attributes before the change. Null if the attributes were previously unset or were not themselves modified by this update. + + - `OrgCoworkRemoteDisabled object` + + Running Cowork in the cloud was disabled for the organization, so members can no longer run Cowork sessions in Anthropic-hosted remote environments. + + - `type: optional "org_cowork_remote_disabled"` + + default: org_cowork_remote_disabled - `actor: APIActor or UserActor or UnauthenticatedUserActor or 8 more` @@ -61476,13 +61723,13 @@ compliance activities that can be filtered by various criteria. Organization UUID where the activity occurred. Null when the activity is not tied to an organization (for example, login and logout events or calls to the Compliance API). - - `OrgCreationBlocked object` + - `OrgCoworkRemoteEnabled object` - Organization creation was blocked. + Running Cowork in the cloud was enabled for the organization, allowing members to run Cowork sessions in Anthropic-hosted remote environments. - - `type: optional "org_creation_blocked"` + - `type: optional "org_cowork_remote_enabled"` - default: org_creation_blocked + default: org_cowork_remote_enabled - `actor: APIActor or UserActor or UnauthenticatedUserActor or 8 more` @@ -61708,17 +61955,13 @@ compliance activities that can be filtered by various criteria. Organization UUID where the activity occurred. Null when the activity is not tied to an organization (for example, login and logout events or calls to the Compliance API). - - `reason: optional string or null` - - "blocked" when the organization started preventing users with an email address at one of its verified domains from creating new organizations, "unblocked" when it stopped. - - - `OrgDataExportAccessed object` + - `OrgCreationBlocked object` - Organization data export file was accessed/downloaded via signed URL. + Organization creation was blocked. - - `type: optional "org_data_export_accessed"` + - `type: optional "org_creation_blocked"` - default: org_data_export_accessed + default: org_creation_blocked - `actor: APIActor or UserActor or UnauthenticatedUserActor or 8 more` @@ -61936,16 +62179,6 @@ compliance activities that can be filtered by various criteria. format: date-time - - `export_type: optional "conversations" or "unspecified" or "workbench" or null` - - Which data set was downloaded. Absent on records written before this field was introduced. - - - `"conversations"` - - - `"unspecified"` - - - `"workbench"` - - `organization_id: optional string or null` Organization ID this activity is associated with @@ -61954,13 +62187,17 @@ compliance activities that can be filtered by various criteria. Organization UUID where the activity occurred. Null when the activity is not tied to an organization (for example, login and logout events or calls to the Compliance API). - - `OrgDataExportCompleted object` + - `reason: optional string or null` - Organization data export was completed. + "blocked" when the organization started preventing users with an email address at one of its verified domains from creating new organizations, "unblocked" when it stopped. - - `type: optional "org_data_export_completed"` + - `OrgDataExportAccessed object` - default: org_data_export_completed + Organization data export file was accessed/downloaded via signed URL. + + - `type: optional "org_data_export_accessed"` + + default: org_data_export_accessed - `actor: APIActor or UserActor or UnauthenticatedUserActor or 8 more` @@ -62180,7 +62417,7 @@ compliance activities that can be filtered by various criteria. - `export_type: optional "conversations" or "unspecified" or "workbench" or null` - Which data set was exported. Absent on records written before this field was introduced. + Which data set was downloaded. Absent on records written before this field was introduced. - `"conversations"` @@ -62196,13 +62433,13 @@ compliance activities that can be filtered by various criteria. Organization UUID where the activity occurred. Null when the activity is not tied to an organization (for example, login and logout events or calls to the Compliance API). - - `OrgDataExportStarted object` + - `OrgDataExportCompleted object` - Organization data export was started. + Organization data export was completed. - - `type: optional "org_data_export_started"` + - `type: optional "org_data_export_completed"` - default: org_data_export_started + default: org_data_export_completed - `actor: APIActor or UserActor or UnauthenticatedUserActor or 8 more` @@ -62438,23 +62675,13 @@ compliance activities that can be filtered by various criteria. Organization UUID where the activity occurred. Null when the activity is not tied to an organization (for example, login and logout events or calls to the Compliance API). - - `scope: optional "member_own_data" or "organization" or "unspecified" or null` - - Breadth of the export — the whole organization, or only the requesting member's own data. Absent on records written before this field was introduced. - - - `"member_own_data"` - - - `"organization"` - - - `"unspecified"` - - - `OrgDataResidencyUpdated object` + - `OrgDataExportStarted object` - The organization's inference data residency settings were updated. + Organization data export was started. - - `type: optional "org_data_residency_updated"` + - `type: optional "org_data_export_started"` - default: org_data_residency_updated + default: org_data_export_started - `actor: APIActor or UserActor or UnauthenticatedUserActor or 8 more` @@ -62672,43 +62899,41 @@ compliance activities that can be filtered by various criteria. format: date-time - - `organization_id: optional string or null` - - Organization ID this activity is associated with + - `export_type: optional "conversations" or "unspecified" or "workbench" or null` - - `organization_uuid: optional string or null` + Which data set was exported. Absent on records written before this field was introduced. - Organization UUID where the activity occurred. Null when the activity is not tied to an organization (for example, login and logout events or calls to the Compliance API). + - `"conversations"` - - `updates: optional array of object` + - `"unspecified"` - The field-level changes applied in this update + - `"workbench"` - - `type: "allowed_inference_geos" or "default_inference_geo" or "unspecified"` + - `organization_id: optional string or null` - The data residency setting that changed + Organization ID this activity is associated with - - `"allowed_inference_geos"` + - `organization_uuid: optional string or null` - - `"default_inference_geo"` + Organization UUID where the activity occurred. Null when the activity is not tied to an organization (for example, login and logout events or calls to the Compliance API). - - `"unspecified"` + - `scope: optional "member_own_data" or "organization" or "unspecified" or null` - - `current_value: optional string or null` + Breadth of the export — the whole organization, or only the requesting member's own data. Absent on records written before this field was introduced. - Setting value immediately after this change. For allowed_inference_geos: a comma-separated list of geo codes (e.g. 'global,us'), or the literal 'unrestricted'. For default_inference_geo: a single geo code. + - `"member_own_data"` - - `previous_value: optional string or null` + - `"organization"` - Setting value immediately before this change. For allowed_inference_geos: a comma-separated list of geo codes (e.g. 'global,us'), or the literal 'unrestricted'. For default_inference_geo: a single geo code. + - `"unspecified"` - - `OrgDeletedViaBulk object` + - `OrgDataResidencyUpdated object` - Organization was deleted via bulk operation. + The organization's inference data residency settings were updated. - - `type: optional "org_deleted_via_bulk"` + - `type: optional "org_data_residency_updated"` - default: org_deleted_via_bulk + default: org_data_residency_updated - `actor: APIActor or UserActor or UnauthenticatedUserActor or 8 more` @@ -62934,13 +63159,35 @@ compliance activities that can be filtered by various criteria. Organization UUID where the activity occurred. Null when the activity is not tied to an organization (for example, login and logout events or calls to the Compliance API). - - `OrgDeletionRequested object` + - `updates: optional array of object` - Organization deletion was requested. + The field-level changes applied in this update - - `type: optional "org_deletion_requested"` + - `type: "allowed_inference_geos" or "default_inference_geo" or "unspecified"` - default: org_deletion_requested + The data residency setting that changed + + - `"allowed_inference_geos"` + + - `"default_inference_geo"` + + - `"unspecified"` + + - `current_value: optional string or null` + + Setting value immediately after this change. For allowed_inference_geos: a comma-separated list of geo codes (e.g. 'global,us'), or the literal 'unrestricted'. For default_inference_geo: a single geo code. + + - `previous_value: optional string or null` + + Setting value immediately before this change. For allowed_inference_geos: a comma-separated list of geo codes (e.g. 'global,us'), or the literal 'unrestricted'. For default_inference_geo: a single geo code. + + - `OrgDeletedViaBulk object` + + Organization was deleted via bulk operation. + + - `type: optional "org_deleted_via_bulk"` + + default: org_deleted_via_bulk - `actor: APIActor or UserActor or UnauthenticatedUserActor or 8 more` @@ -63166,13 +63413,13 @@ compliance activities that can be filtered by various criteria. Organization UUID where the activity occurred. Null when the activity is not tied to an organization (for example, login and logout events or calls to the Compliance API). - - `OrgDirectoryResyncCompleted object` + - `OrgDeletionRequested object` - Organization directory resync completed successfully. + Organization deletion was requested. - - `type: optional "org_directory_resync_completed"` + - `type: optional "org_deletion_requested"` - default: org_directory_resync_completed + default: org_deletion_requested - `actor: APIActor or UserActor or UnauthenticatedUserActor or 8 more` @@ -63380,10 +63627,6 @@ compliance activities that can be filtered by various criteria. - `user_agent: optional string or null` - - `resync_uuid: string` - - UUID identifying the directory resync run that completed. - - `id: optional string` Unique identifier for the activity e.g. 'activity_abcd1234' @@ -63402,13 +63645,13 @@ compliance activities that can be filtered by various criteria. Organization UUID where the activity occurred. Null when the activity is not tied to an organization (for example, login and logout events or calls to the Compliance API). - - `OrgDirectoryResyncFailed object` + - `OrgDirectoryResyncCompleted object` - Organization directory resync failed. + Organization directory resync completed successfully. - - `type: optional "org_directory_resync_failed"` + - `type: optional "org_directory_resync_completed"` - default: org_directory_resync_failed + default: org_directory_resync_completed - `actor: APIActor or UserActor or UnauthenticatedUserActor or 8 more` @@ -63618,7 +63861,7 @@ compliance activities that can be filtered by various criteria. - `resync_uuid: string` - UUID identifying the directory resync run that failed. + UUID identifying the directory resync run that completed. - `id: optional string` @@ -63638,13 +63881,13 @@ compliance activities that can be filtered by various criteria. Organization UUID where the activity occurred. Null when the activity is not tied to an organization (for example, login and logout events or calls to the Compliance API). - - `OrgDirectoryResyncStarted object` + - `OrgDirectoryResyncFailed object` - Organization directory resync was started asynchronously. + Organization directory resync failed. - - `type: optional "org_directory_resync_started"` + - `type: optional "org_directory_resync_failed"` - default: org_directory_resync_started + default: org_directory_resync_failed - `actor: APIActor or UserActor or UnauthenticatedUserActor or 8 more` @@ -63854,7 +64097,7 @@ compliance activities that can be filtered by various criteria. - `resync_uuid: string` - UUID identifying this directory resync run + UUID identifying the directory resync run that failed. - `id: optional string` @@ -63874,17 +64117,13 @@ compliance activities that can be filtered by various criteria. Organization UUID where the activity occurred. Null when the activity is not tied to an organization (for example, login and logout events or calls to the Compliance API). - - `sync_destinations: optional array of string` - - Sync destinations the resync targets (for example, accounts and rbac) - - - `OrgDirectorySyncActivated object` + - `OrgDirectoryResyncStarted object` - Organization directory sync was activated. + Organization directory resync was started asynchronously. - - `type: optional "org_directory_sync_activated"` + - `type: optional "org_directory_resync_started"` - default: org_directory_sync_activated + default: org_directory_resync_started - `actor: APIActor or UserActor or UnauthenticatedUserActor or 8 more` @@ -64092,6 +64331,10 @@ compliance activities that can be filtered by various criteria. - `user_agent: optional string or null` + - `resync_uuid: string` + + UUID identifying this directory resync run + - `id: optional string` Unique identifier for the activity e.g. 'activity_abcd1234' @@ -64110,13 +64353,17 @@ compliance activities that can be filtered by various criteria. Organization UUID where the activity occurred. Null when the activity is not tied to an organization (for example, login and logout events or calls to the Compliance API). - - `OrgDirectorySyncAddInitiated object` + - `sync_destinations: optional array of string` - Organization directory sync setup was initiated. + Sync destinations the resync targets (for example, accounts and rbac) - - `type: optional "org_directory_sync_add_initiated"` + - `OrgDirectorySyncActivated object` - default: org_directory_sync_add_initiated + Organization directory sync was activated. + + - `type: optional "org_directory_sync_activated"` + + default: org_directory_sync_activated - `actor: APIActor or UserActor or UnauthenticatedUserActor or 8 more` @@ -64342,13 +64589,13 @@ compliance activities that can be filtered by various criteria. Organization UUID where the activity occurred. Null when the activity is not tied to an organization (for example, login and logout events or calls to the Compliance API). - - `OrgDirectorySyncDeleted object` + - `OrgDirectorySyncAddInitiated object` - Organization directory sync was deleted. + Organization directory sync setup was initiated. - - `type: optional "org_directory_sync_deleted"` + - `type: optional "org_directory_sync_add_initiated"` - default: org_directory_sync_deleted + default: org_directory_sync_add_initiated - `actor: APIActor or UserActor or UnauthenticatedUserActor or 8 more` @@ -64574,13 +64821,13 @@ compliance activities that can be filtered by various criteria. Organization UUID where the activity occurred. Null when the activity is not tied to an organization (for example, login and logout events or calls to the Compliance API). - - `OrgDiscoverabilityDisabled object` + - `OrgDirectorySyncDeleted object` - Admin disabled organization discoverability. + Organization directory sync was deleted. - - `type: optional "org_discoverability_disabled"` + - `type: optional "org_directory_sync_deleted"` - default: org_discoverability_disabled + default: org_directory_sync_deleted - `actor: APIActor or UserActor or UnauthenticatedUserActor or 8 more` @@ -64806,13 +65053,13 @@ compliance activities that can be filtered by various criteria. Organization UUID where the activity occurred. Null when the activity is not tied to an organization (for example, login and logout events or calls to the Compliance API). - - `OrgDiscoverabilityEnabled object` + - `OrgDiscoverabilityDisabled object` - Admin enabled organization discoverability. + Admin disabled organization discoverability. - - `type: optional "org_discoverability_enabled"` + - `type: optional "org_discoverability_disabled"` - default: org_discoverability_enabled + default: org_discoverability_disabled - `actor: APIActor or UserActor or UnauthenticatedUserActor or 8 more` @@ -65038,13 +65285,13 @@ compliance activities that can be filtered by various criteria. Organization UUID where the activity occurred. Null when the activity is not tied to an organization (for example, login and logout events or calls to the Compliance API). - - `OrgDiscoverabilitySettingsUpdated object` + - `OrgDiscoverabilityEnabled object` - Admin updated organization discoverability settings. + Admin enabled organization discoverability. - - `type: optional "org_discoverability_settings_updated"` + - `type: optional "org_discoverability_enabled"` - default: org_discoverability_settings_updated + default: org_discoverability_enabled - `actor: APIActor or UserActor or UnauthenticatedUserActor or 8 more` @@ -65270,13 +65517,13 @@ compliance activities that can be filtered by various criteria. Organization UUID where the activity occurred. Null when the activity is not tied to an organization (for example, login and logout events or calls to the Compliance API). - - `OrgDomainAddInitiated object` + - `OrgDiscoverabilitySettingsUpdated object` - Organization domain verification was initiated. + Admin updated organization discoverability settings. - - `type: optional "org_domain_add_initiated"` + - `type: optional "org_discoverability_settings_updated"` - default: org_domain_add_initiated + default: org_discoverability_settings_updated - `actor: APIActor or UserActor or UnauthenticatedUserActor or 8 more` @@ -65502,13 +65749,13 @@ compliance activities that can be filtered by various criteria. Organization UUID where the activity occurred. Null when the activity is not tied to an organization (for example, login and logout events or calls to the Compliance API). - - `OrgDomainRemoved object` + - `OrgDomainAddInitiated object` - Organization domain was removed. + Organization domain verification was initiated. - - `type: optional "org_domain_removed"` + - `type: optional "org_domain_add_initiated"` - default: org_domain_removed + default: org_domain_add_initiated - `actor: APIActor or UserActor or UnauthenticatedUserActor or 8 more` @@ -65726,10 +65973,6 @@ compliance activities that can be filtered by various criteria. format: date-time - - `domain: optional string or null` - - The email domain that was removed from the organization, e.g. "example.com". - - `organization_id: optional string or null` Organization ID this activity is associated with @@ -65738,13 +65981,13 @@ compliance activities that can be filtered by various criteria. Organization UUID where the activity occurred. Null when the activity is not tied to an organization (for example, login and logout events or calls to the Compliance API). - - `OrgDomainVerified object` + - `OrgDomainRemoved object` - Organization domain was verified. + Organization domain was removed. - - `type: optional "org_domain_verified"` + - `type: optional "org_domain_removed"` - default: org_domain_verified + default: org_domain_removed - `actor: APIActor or UserActor or UnauthenticatedUserActor or 8 more` @@ -65964,7 +66207,7 @@ compliance activities that can be filtered by various criteria. - `domain: optional string or null` - The email domain that was verified for the organization, e.g. "example.com". + The email domain that was removed from the organization, e.g. "example.com". - `organization_id: optional string or null` @@ -65974,13 +66217,13 @@ compliance activities that can be filtered by various criteria. Organization UUID where the activity occurred. Null when the activity is not tied to an organization (for example, login and logout events or calls to the Compliance API). - - `OrgExternalKeyCreated object` + - `OrgDomainVerified object` - A CMEK external key config was created. + Organization domain was verified. - - `type: optional "org_external_key_created"` + - `type: optional "org_domain_verified"` - default: org_external_key_created + default: org_domain_verified - `actor: APIActor or UserActor or UnauthenticatedUserActor or 8 more` @@ -66188,22 +66431,6 @@ compliance activities that can be filtered by various criteria. - `user_agent: optional string or null` - - `external_key_id: string` - - Tagged ID of the created external key config - - - `provider: "aws" or "azure" or "gcp" or "unspecified"` - - KMS provider backing the key - - - `"aws"` - - - `"azure"` - - - `"gcp"` - - - `"unspecified"` - - `id: optional string` Unique identifier for the activity e.g. 'activity_abcd1234' @@ -66214,6 +66441,10 @@ compliance activities that can be filtered by various criteria. format: date-time + - `domain: optional string or null` + + The email domain that was verified for the organization, e.g. "example.com". + - `organization_id: optional string or null` Organization ID this activity is associated with @@ -66222,13 +66453,13 @@ compliance activities that can be filtered by various criteria. Organization UUID where the activity occurred. Null when the activity is not tied to an organization (for example, login and logout events or calls to the Compliance API). - - `OrgExternalKeyDeleted object` + - `OrgExternalKeyCreated object` - A CMEK external key config was deleted. + A CMEK external key config was created. - - `type: optional "org_external_key_deleted"` + - `type: optional "org_external_key_created"` - default: org_external_key_deleted + default: org_external_key_created - `actor: APIActor or UserActor or UnauthenticatedUserActor or 8 more` @@ -66438,7 +66669,19 @@ compliance activities that can be filtered by various criteria. - `external_key_id: string` - Tagged ID of the deleted external key config + Tagged ID of the created external key config + + - `provider: "aws" or "azure" or "gcp" or "unspecified"` + + KMS provider backing the key + + - `"aws"` + + - `"azure"` + + - `"gcp"` + + - `"unspecified"` - `id: optional string` @@ -66458,13 +66701,13 @@ compliance activities that can be filtered by various criteria. Organization UUID where the activity occurred. Null when the activity is not tied to an organization (for example, login and logout events or calls to the Compliance API). - - `OrgExternalKeyUpdated object` + - `OrgExternalKeyDeleted object` - A CMEK external key config was updated. + A CMEK external key config was deleted. - - `type: optional "org_external_key_updated"` + - `type: optional "org_external_key_deleted"` - default: org_external_key_updated + default: org_external_key_deleted - `actor: APIActor or UserActor or UnauthenticatedUserActor or 8 more` @@ -66674,7 +66917,7 @@ compliance activities that can be filtered by various criteria. - `external_key_id: string` - Tagged ID of the updated external key config + Tagged ID of the deleted external key config - `id: optional string` @@ -66694,37 +66937,13 @@ compliance activities that can be filtered by various criteria. Organization UUID where the activity occurred. Null when the activity is not tied to an organization (for example, login and logout events or calls to the Compliance API). - - `updates: optional array of object` - - The field-level changes applied in this update - - - `type: "display_name" or "geo" or "provider_config" or "unspecified"` - - The external key config field that changed - - - `"display_name"` - - - `"geo"` - - - `"provider_config"` - - - `"unspecified"` - - - `current_value: string` - - Field value immediately after this change - - - `previous_value: string` - - Field value immediately before this change - - - `OrgExternalKeyValidated object` + - `OrgExternalKeyUpdated object` - A CMEK external key config was validated against the customer's KMS. + A CMEK external key config was updated. - - `type: optional "org_external_key_validated"` + - `type: optional "org_external_key_updated"` - default: org_external_key_validated + default: org_external_key_updated - `actor: APIActor or UserActor or UnauthenticatedUserActor or 8 more` @@ -66934,17 +67153,7 @@ compliance activities that can be filtered by various criteria. - `external_key_id: string` - Tagged ID of the validated external key config - - - `validation_result: "failure" or "success" or "unspecified"` - - Outcome of the encrypt/decrypt roundtrip - - - `"failure"` - - - `"success"` - - - `"unspecified"` + Tagged ID of the updated external key config - `id: optional string` @@ -66964,13 +67173,37 @@ compliance activities that can be filtered by various criteria. Organization UUID where the activity occurred. Null when the activity is not tied to an organization (for example, login and logout events or calls to the Compliance API). - - `OrgHipaaSelfServeEnabled object` + - `updates: optional array of object` - A primary owner click-accepted the BAA and enabled HIPAA protections for the organization via the self-serve flow. + The field-level changes applied in this update - - `type: optional "org_hipaa_self_serve_enabled"` + - `type: "display_name" or "geo" or "provider_config" or "unspecified"` - default: org_hipaa_self_serve_enabled + The external key config field that changed + + - `"display_name"` + + - `"geo"` + + - `"provider_config"` + + - `"unspecified"` + + - `current_value: string` + + Field value immediately after this change + + - `previous_value: string` + + Field value immediately before this change + + - `OrgExternalKeyValidated object` + + A CMEK external key config was validated against the customer's KMS. + + - `type: optional "org_external_key_validated"` + + default: org_external_key_validated - `actor: APIActor or UserActor or UnauthenticatedUserActor or 8 more` @@ -67178,17 +67411,19 @@ compliance activities that can be filtered by various criteria. - `user_agent: optional string or null` - - `baa_content_hash: string` + - `external_key_id: string` - SHA-256 digest (hex) of the Business Associate Agreement that was accepted. + Tagged ID of the validated external key config - - `baa_version_label: string` + - `validation_result: "failure" or "success" or "unspecified"` - Version label of the Business Associate Agreement that was accepted, e.g. "2026-05-06". + Outcome of the encrypt/decrypt roundtrip - - `setup_guide_content_hash: string` + - `"failure"` - SHA-256 digest (hex) of the HIPAA setup guide that was current when HIPAA protections were enabled. + - `"success"` + + - `"unspecified"` - `id: optional string` @@ -67208,13 +67443,13 @@ compliance activities that can be filtered by various criteria. Organization UUID where the activity occurred. Null when the activity is not tied to an organization (for example, login and logout events or calls to the Compliance API). - - `OrgIPRestrictionCreated object` + - `OrgHipaaSelfServeEnabled object` - Organization IP restriction was created. + A primary owner click-accepted the BAA and enabled HIPAA protections for the organization via the self-serve flow. - - `type: optional "org_ip_restriction_created"` + - `type: optional "org_hipaa_self_serve_enabled"` - default: org_ip_restriction_created + default: org_hipaa_self_serve_enabled - `actor: APIActor or UserActor or UnauthenticatedUserActor or 8 more` @@ -67422,6 +67657,18 @@ compliance activities that can be filtered by various criteria. - `user_agent: optional string or null` + - `baa_content_hash: string` + + SHA-256 digest (hex) of the Business Associate Agreement that was accepted. + + - `baa_version_label: string` + + Version label of the Business Associate Agreement that was accepted, e.g. "2026-05-06". + + - `setup_guide_content_hash: string` + + SHA-256 digest (hex) of the HIPAA setup guide that was current when HIPAA protections were enabled. + - `id: optional string` Unique identifier for the activity e.g. 'activity_abcd1234' @@ -67440,13 +67687,13 @@ compliance activities that can be filtered by various criteria. Organization UUID where the activity occurred. Null when the activity is not tied to an organization (for example, login and logout events or calls to the Compliance API). - - `OrgIPRestrictionDeleted object` + - `OrgIPRestrictionCreated object` - Organization IP restriction was deleted. + Organization IP restriction was created. - - `type: optional "org_ip_restriction_deleted"` + - `type: optional "org_ip_restriction_created"` - default: org_ip_restriction_deleted + default: org_ip_restriction_created - `actor: APIActor or UserActor or UnauthenticatedUserActor or 8 more` @@ -67672,13 +67919,13 @@ compliance activities that can be filtered by various criteria. Organization UUID where the activity occurred. Null when the activity is not tied to an organization (for example, login and logout events or calls to the Compliance API). - - `OrgIPRestrictionUpdated object` + - `OrgIPRestrictionDeleted object` - Organization IP restriction was updated. + Organization IP restriction was deleted. - - `type: optional "org_ip_restriction_updated"` + - `type: optional "org_ip_restriction_deleted"` - default: org_ip_restriction_updated + default: org_ip_restriction_deleted - `actor: APIActor or UserActor or UnauthenticatedUserActor or 8 more` @@ -67904,13 +68151,13 @@ compliance activities that can be filtered by various criteria. Organization UUID where the activity occurred. Null when the activity is not tied to an organization (for example, login and logout events or calls to the Compliance API). - - `OrgInviteLinkDisabled object` + - `OrgIPRestrictionUpdated object` - Organization invite link was disabled. + Organization IP restriction was updated. - - `type: optional "org_invite_link_disabled"` + - `type: optional "org_ip_restriction_updated"` - default: org_invite_link_disabled + default: org_ip_restriction_updated - `actor: APIActor or UserActor or UnauthenticatedUserActor or 8 more` @@ -68136,13 +68383,13 @@ compliance activities that can be filtered by various criteria. Organization UUID where the activity occurred. Null when the activity is not tied to an organization (for example, login and logout events or calls to the Compliance API). - - `OrgInviteLinkGenerated object` + - `OrgInviteLinkDisabled object` - Organization invite link was generated. + Organization invite link was disabled. - - `type: optional "org_invite_link_generated"` + - `type: optional "org_invite_link_disabled"` - default: org_invite_link_generated + default: org_invite_link_disabled - `actor: APIActor or UserActor or UnauthenticatedUserActor or 8 more` @@ -68368,13 +68615,13 @@ compliance activities that can be filtered by various criteria. Organization UUID where the activity occurred. Null when the activity is not tied to an organization (for example, login and logout events or calls to the Compliance API). - - `OrgInviteLinkRegenerated object` + - `OrgInviteLinkGenerated object` - Organization invite link was regenerated (previous link invalidated). + Organization invite link was generated. - - `type: optional "org_invite_link_regenerated"` + - `type: optional "org_invite_link_generated"` - default: org_invite_link_regenerated + default: org_invite_link_generated - `actor: APIActor or UserActor or UnauthenticatedUserActor or 8 more` @@ -68600,13 +68847,13 @@ compliance activities that can be filtered by various criteria. Organization UUID where the activity occurred. Null when the activity is not tied to an organization (for example, login and logout events or calls to the Compliance API). - - `OrgInviteViewed object` + - `OrgInviteLinkRegenerated object` - An organization invite was viewed. + Organization invite link was regenerated (previous link invalidated). - - `type: optional "org_invite_viewed"` + - `type: optional "org_invite_link_regenerated"` - default: org_invite_viewed + default: org_invite_link_regenerated - `actor: APIActor or UserActor or UnauthenticatedUserActor or 8 more` @@ -68814,10 +69061,6 @@ compliance activities that can be filtered by various criteria. - `user_agent: optional string or null` - - `invite_id: string` - - Tagged ID of the viewed invite - - `id: optional string` Unique identifier for the activity e.g. 'activity_abcd1234' @@ -68836,13 +69079,13 @@ compliance activities that can be filtered by various criteria. Organization UUID where the activity occurred. Null when the activity is not tied to an organization (for example, login and logout events or calls to the Compliance API). - - `OrgInvitesListed object` + - `OrgInviteViewed object` - Organization invites were listed. + An organization invite was viewed. - - `type: optional "org_invites_listed"` + - `type: optional "org_invite_viewed"` - default: org_invites_listed + default: org_invite_viewed - `actor: APIActor or UserActor or UnauthenticatedUserActor or 8 more` @@ -69050,6 +69293,10 @@ compliance activities that can be filtered by various criteria. - `user_agent: optional string or null` + - `invite_id: string` + + Tagged ID of the viewed invite + - `id: optional string` Unique identifier for the activity e.g. 'activity_abcd1234' @@ -69068,13 +69315,13 @@ compliance activities that can be filtered by various criteria. Organization UUID where the activity occurred. Null when the activity is not tied to an organization (for example, login and logout events or calls to the Compliance API). - - `OrgJoinProposalDecided object` + - `OrgInvitesListed object` - Approve or reject decision on a parent-org join proposal. + Organization invites were listed. - - `type: optional "org_join_proposal_decided"` + - `type: optional "org_invites_listed"` - default: org_join_proposal_decided + default: org_invites_listed - `actor: APIActor or UserActor or UnauthenticatedUserActor or 8 more` @@ -69282,8 +69529,6 @@ compliance activities that can be filtered by various criteria. - `user_agent: optional string or null` - - `approved: boolean` - - `id: optional string` Unique identifier for the activity e.g. 'activity_abcd1234' @@ -69302,13 +69547,13 @@ compliance activities that can be filtered by various criteria. Organization UUID where the activity occurred. Null when the activity is not tied to an organization (for example, login and logout events or calls to the Compliance API). - - `OrgJoinRequestApproved object` + - `OrgJoinProposalDecided object` - Admin approved a join request. + Approve or reject decision on a parent-org join proposal. - - `type: optional "org_join_request_approved"` + - `type: optional "org_join_proposal_decided"` - default: org_join_request_approved + default: org_join_proposal_decided - `actor: APIActor or UserActor or UnauthenticatedUserActor or 8 more` @@ -69516,6 +69761,8 @@ compliance activities that can be filtered by various criteria. - `user_agent: optional string or null` + - `approved: boolean` + - `id: optional string` Unique identifier for the activity e.g. 'activity_abcd1234' @@ -69534,13 +69781,13 @@ compliance activities that can be filtered by various criteria. Organization UUID where the activity occurred. Null when the activity is not tied to an organization (for example, login and logout events or calls to the Compliance API). - - `OrgJoinRequestCreated object` + - `OrgJoinRequestApproved object` - User requested to join an organization. + Admin approved a join request. - - `type: optional "org_join_request_created"` + - `type: optional "org_join_request_approved"` - default: org_join_request_created + default: org_join_request_approved - `actor: APIActor or UserActor or UnauthenticatedUserActor or 8 more` @@ -69766,13 +70013,13 @@ compliance activities that can be filtered by various criteria. Organization UUID where the activity occurred. Null when the activity is not tied to an organization (for example, login and logout events or calls to the Compliance API). - - `OrgJoinRequestDismissed object` + - `OrgJoinRequestCreated object` - Admin dismissed a join request. + User requested to join an organization. - - `type: optional "org_join_request_dismissed"` + - `type: optional "org_join_request_created"` - default: org_join_request_dismissed + default: org_join_request_created - `actor: APIActor or UserActor or UnauthenticatedUserActor or 8 more` @@ -69998,13 +70245,13 @@ compliance activities that can be filtered by various criteria. Organization UUID where the activity occurred. Null when the activity is not tied to an organization (for example, login and logout events or calls to the Compliance API). - - `OrgJoinRequestInstantApproved object` + - `OrgJoinRequestDismissed object` - Join request was instantly approved. + Admin dismissed a join request. - - `type: optional "org_join_request_instant_approved"` + - `type: optional "org_join_request_dismissed"` - default: org_join_request_instant_approved + default: org_join_request_dismissed - `actor: APIActor or UserActor or UnauthenticatedUserActor or 8 more` @@ -70230,13 +70477,13 @@ compliance activities that can be filtered by various criteria. Organization UUID where the activity occurred. Null when the activity is not tied to an organization (for example, login and logout events or calls to the Compliance API). - - `OrgJoinRequestsBulkDismissed object` + - `OrgJoinRequestInstantApproved object` - Admin bulk-dismissed join requests. + Join request was instantly approved. - - `type: optional "org_join_requests_bulk_dismissed"` + - `type: optional "org_join_request_instant_approved"` - default: org_join_requests_bulk_dismissed + default: org_join_request_instant_approved - `actor: APIActor or UserActor or UnauthenticatedUserActor or 8 more` @@ -70462,13 +70709,13 @@ compliance activities that can be filtered by various criteria. Organization UUID where the activity occurred. Null when the activity is not tied to an organization (for example, login and logout events or calls to the Compliance API). - - `OrgMagicLinkSecondFactorToggled object` + - `OrgJoinRequestsBulkDismissed object` - Organization magic link second factor was toggled. + Admin bulk-dismissed join requests. - - `type: optional "org_magic_link_second_factor_toggled"` + - `type: optional "org_join_requests_bulk_dismissed"` - default: org_magic_link_second_factor_toggled + default: org_join_requests_bulk_dismissed - `actor: APIActor or UserActor or UnauthenticatedUserActor or 8 more` @@ -70676,10 +70923,6 @@ compliance activities that can be filtered by various criteria. - `user_agent: optional string or null` - - `enabled: boolean` - - Whether members signing in with SSO must also complete a magic link as a second factor, after this change. - - `id: optional string` Unique identifier for the activity e.g. 'activity_abcd1234' @@ -70698,13 +70941,13 @@ compliance activities that can be filtered by various criteria. Organization UUID where the activity occurred. Null when the activity is not tied to an organization (for example, login and logout events or calls to the Compliance API). - - `OrgMemberInvitesDisabled object` + - `OrgMagicLinkSecondFactorToggled object` - Admin disabled member invites for the organization. + Organization magic link second factor was toggled. - - `type: optional "org_member_invites_disabled"` + - `type: optional "org_magic_link_second_factor_toggled"` - default: org_member_invites_disabled + default: org_magic_link_second_factor_toggled - `actor: APIActor or UserActor or UnauthenticatedUserActor or 8 more` @@ -70912,6 +71155,10 @@ compliance activities that can be filtered by various criteria. - `user_agent: optional string or null` + - `enabled: boolean` + + Whether members signing in with SSO must also complete a magic link as a second factor, after this change. + - `id: optional string` Unique identifier for the activity e.g. 'activity_abcd1234' @@ -70930,13 +71177,13 @@ compliance activities that can be filtered by various criteria. Organization UUID where the activity occurred. Null when the activity is not tied to an organization (for example, login and logout events or calls to the Compliance API). - - `OrgMemberInvitesEnabled object` + - `OrgMemberInvitesDisabled object` - Admin enabled member invites for the organization. + Admin disabled member invites for the organization. - - `type: optional "org_member_invites_enabled"` + - `type: optional "org_member_invites_disabled"` - default: org_member_invites_enabled + default: org_member_invites_disabled - `actor: APIActor or UserActor or UnauthenticatedUserActor or 8 more` @@ -71162,13 +71409,13 @@ compliance activities that can be filtered by various criteria. Organization UUID where the activity occurred. Null when the activity is not tied to an organization (for example, login and logout events or calls to the Compliance API). - - `OrgMembersExported object` + - `OrgMemberInvitesEnabled object` - Organization members list was exported as CSV. + Admin enabled member invites for the organization. - - `type: optional "org_members_exported"` + - `type: optional "org_member_invites_enabled"` - default: org_members_exported + default: org_member_invites_enabled - `actor: APIActor or UserActor or UnauthenticatedUserActor or 8 more` @@ -71394,23 +71641,13 @@ compliance activities that can be filtered by various criteria. Organization UUID where the activity occurred. Null when the activity is not tied to an organization (for example, login and logout events or calls to the Compliance API). - - `OrgModelDefaultUpdated object` - - An organization or role default model setting was changed by an administrator. - - - `type: optional "org_model_default_updated"` - - default: org_model_default_updated - - - `action: "cleared" or "set" or "unspecified"` - - Whether the default model was set or cleared + - `OrgMembersExported object` - - `"cleared"` + Organization members list was exported as CSV. - - `"set"` + - `type: optional "org_members_exported"` - - `"unspecified"` + default: org_members_exported - `actor: APIActor or UserActor or UnauthenticatedUserActor or 8 more` @@ -71618,24 +71855,6 @@ compliance activities that can be filtered by various criteria. - `user_agent: optional string or null` - - `override_user_selection: boolean` - - Whether the default is enforced as a fixed default, resetting members' own model selections at the start of each new conversation - - - `principal_id: string` - - Tagged ID of the organization or role the default applies to - - - `principal_type: "org" or "rbac_role" or "unspecified"` - - Whether the default applies to the whole organization or to a single role - - - `"org"` - - - `"rbac_role"` - - - `"unspecified"` - - `id: optional string` Unique identifier for the activity e.g. 'activity_abcd1234' @@ -71646,41 +71865,301 @@ compliance activities that can be filtered by various criteria. format: date-time - - `default_model: optional string or null` - - The model set as the default, when the action is set - - - `model_access: optional array of object` - - The per-model access overrides set for this principal; absent when no overrides are configured - - - `api_name: string` - - The model the decision applies to + - `organization_id: optional string or null` - - `enabled: boolean` + Organization ID this activity is associated with - Whether members with this principal may select the model + - `organization_uuid: optional string or null` - - `max_effort_level: optional string or null` + Organization UUID where the activity occurred. Null when the activity is not tied to an organization (for example, login and logout events or calls to the Compliance API). - The highest effort level members may select for this model, when capped + - `OrgModelDefaultUpdated object` - - `organization_id: optional string or null` + An organization or role default model setting was changed by an administrator. - Organization ID this activity is associated with + - `type: optional "org_model_default_updated"` - - `organization_uuid: optional string or null` + default: org_model_default_updated - Organization UUID where the activity occurred. Null when the activity is not tied to an organization (for example, login and logout events or calls to the Compliance API). + - `action: "cleared" or "set" or "unspecified"` - - `OrgParentJoinProposalCreated object` + Whether the default model was set or cleared - Organization parent join proposal was created. + - `"cleared"` - - `type: optional "org_parent_join_proposal_created"` + - `"set"` - default: org_parent_join_proposal_created + - `"unspecified"` + + - `actor: APIActor or UserActor or UnauthenticatedUserActor or 8 more` + + - `APIActor object` + + - `type: optional "api_actor"` + + default: api_actor + + - `api_key_id: string` + + - `ip_address: string` + + - `user_agent: string` + + - `UserActor object` + + - `type: optional "user_actor"` + + default: user_actor + + - `email_address: string` + + format: email + + - `ip_address: string` + + - `user_agent: string` + + - `user_id: string` + + - `UnauthenticatedUserActor object` + + - `type: optional "unauthenticated_user_actor"` + + default: unauthenticated_user_actor + + - `ip_address: string` + + - `user_agent: string` + + - `unauthenticated_email_address: optional string or null` + + format: email + + - `AnthropicActor object` + + - `type: optional "anthropic_actor"` + + default: anthropic_actor + + - `email_address: optional string or null` + + format: email + + - `SystemActor object` + + Automated background processing performed by Anthropic systems, acting + without a user or customer credential. + + - `type: optional "system_actor"` + + default: system_actor + + - `service: optional string or null` + + Name of the automated process that performed the action, when known. + + - `AdminAPIKeyActor object` + + - `type: optional "admin_api_key_actor"` + + default: admin_api_key_actor + + - `admin_api_key_id: string` + + - `ip_address: string` + + - `user_agent: string` + + - `ServiceAccountActor object` + + - `type: optional "service_account_actor"` + + default: service_account_actor + + - `ip_address: string` + + - `service_account_id: string` + + - `user_agent: string` + + - `ScimDirectorySyncActor object` + + - `type: optional "scim_directory_sync_actor"` + + default: scim_directory_sync_actor + + - `directory_id: string` + + - `workos_event_id: string` + + - `idp_connection_type: optional string or null` + + - `FederatedIdentityActor object` + + A federated external workload authenticated via a verified OIDC token. + + Carries the verified issuer, subject, and audience claims from the + presented JWT. + + - `type: optional "federated_identity_actor"` + + default: federated_identity_actor + + - `issuer: string` + + - `subject: string` + + - `audience: optional array of string` + + - `ip_address: optional string or null` + + - `user_agent: optional string or null` + + - `FederatedActor object` + + An external identity asserted by a trusted provider — a cloud-provider + gateway or a customer-registered federation issuer — acting without an + Anthropic-provisioned account or service account. + + - `type: optional "federated_actor"` + + default: federated_actor + + - `provider: FederatedActorAwsProvider or FederatedActorAzureProvider or FederatedActorGcpProvider or FederatedActorOidcProvider` + + - `FederatedActorAwsProvider object` + + Asserting party: the AWS account the organization is bound to. + + - `type: optional "aws"` + + default: aws + + - `account_id: string` + + - `signed_principal: string` + + The AWS-signed ARN of the IAM principal that requested the token. + + - `FederatedActorAzureProvider object` + + Asserting party: the Azure subscription the organization is bound to. + + - `type: optional "azure"` + + default: azure + + - `subscription_id: string` + + - `FederatedActorGcpProvider object` + + Asserting party: the GCP project the organization is bound to. + + - `type: optional "gcp"` + + default: gcp + + - `project_number: string` + + - `FederatedActorOidcProvider object` + + Asserting party: a customer-registered OIDC federation issuer. + + - `type: optional "oidc"` + + default: oidc + + - `issuer: optional string or null` + + The federation issuer's URL. Null when the presented credential failed verification. + + - `ip_address: optional string or null` + + - `subject: optional string or null` + + The provider's verified identifier for the caller; its form depends on the provider. + + - `user_agent: optional string or null` + + - `AttestedDeviceActor object` + + An attested mobile device authenticated via Apple App Attest. + + - `type: optional "attested_device_actor"` + + default: attested_device_actor + + - `external_client_id: string` + + - `kid_hash: string` + + - `ip_address: optional string or null` + + - `user_agent: optional string or null` + + - `override_user_selection: boolean` + + Whether the default is enforced as a fixed default, resetting members' own model selections at the start of each new conversation + + - `principal_id: string` + + Tagged ID of the organization or role the default applies to + + - `principal_type: "org" or "rbac_role" or "unspecified"` + + Whether the default applies to the whole organization or to a single role + + - `"org"` + + - `"rbac_role"` + + - `"unspecified"` + + - `id: optional string` + + Unique identifier for the activity e.g. 'activity_abcd1234' + + - `created_at: optional string` + + When this activity occurred. + + format: date-time + + - `default_model: optional string or null` + + The model set as the default, when the action is set + + - `model_access: optional array of object` + + The per-model access overrides set for this principal; absent when no overrides are configured + + - `api_name: string` + + The model the decision applies to + + - `enabled: boolean` + + Whether members with this principal may select the model + + - `max_effort_level: optional string or null` + + The highest effort level members may select for this model, when capped + + - `organization_id: optional string or null` + + Organization ID this activity is associated with + + - `organization_uuid: optional string or null` + + Organization UUID where the activity occurred. Null when the activity is not tied to an organization (for example, login and logout events or calls to the Compliance API). + + - `OrgParentJoinProposalCreated object` + + Organization parent join proposal was created. + + - `type: optional "org_parent_join_proposal_created"` + + default: org_parent_join_proposal_created - `actor: APIActor or UserActor or UnauthenticatedUserActor or 8 more` @@ -128819,7 +129298,7 @@ curl https://api.anthropic.com/v1/compliance/activities \ ### Activity List Response -- `ActivityListResponse = AbuseDecisionReceived or AccountDeleted or AdminAPIKeyCreated or 499 more` +- `ActivityListResponse = AbuseDecisionReceived or AccountDeleted or AdminAPIKeyCreated or 501 more` - `AbuseDecisionReceived object` @@ -133401,11 +133880,11 @@ curl https://api.anthropic.com/v1/compliance/activities \ - `user_agent: optional string or null` - - `audience: array of ArtifactSharingAudienceOrganization or ArtifactSharingAudienceUsers or ArtifactSharingAudienceAnyoneWithLink` + - `audience: array of Organization or Users or AnyoneWithLink` The artifact's sharing audience after the change. If empty, the artifact is visible only to its owner. - - `ArtifactSharingAudienceOrganization object` + - `Organization object` Sharing audience: visible to the owning organization. @@ -133413,7 +133892,7 @@ curl https://api.anthropic.com/v1/compliance/activities \ default: organization - - `ArtifactSharingAudienceUsers object` + - `Users object` Sharing audience: visible to an explicit allowlist of users. @@ -133421,10 +133900,9 @@ curl https://api.anthropic.com/v1/compliance/activities \ default: users - - `ArtifactSharingAudienceAnyoneWithLink object` + - `AnyoneWithLink object` - Sharing audience: anyone with the link, including anonymous viewers - (an artifact shared to the open internet). + Sharing audience: anyone with the link, including anonymous viewers (an artifact shared to the open internet). - `type: optional "anyone_with_link"` @@ -183524,13 +184002,253 @@ curl https://api.anthropic.com/v1/compliance/activities \ Organization UUID where the activity occurred. Null when the activity is not tied to an organization (for example, login and logout events or calls to the Compliance API). - - `OrgCoworkAgentDisabled object` + - `OrgCoworkAgentDisabled object` + + Organization Cowork Agent was disabled. + + - `type: optional "org_cowork_agent_disabled"` + + default: org_cowork_agent_disabled + + - `actor: APIActor or UserActor or UnauthenticatedUserActor or 8 more` + + - `APIActor object` + + - `type: optional "api_actor"` + + default: api_actor + + - `api_key_id: string` + + - `ip_address: string` + + - `user_agent: string` + + - `UserActor object` + + - `type: optional "user_actor"` + + default: user_actor + + - `email_address: string` + + format: email + + - `ip_address: string` + + - `user_agent: string` + + - `user_id: string` + + - `UnauthenticatedUserActor object` + + - `type: optional "unauthenticated_user_actor"` + + default: unauthenticated_user_actor + + - `ip_address: string` + + - `user_agent: string` + + - `unauthenticated_email_address: optional string or null` + + format: email + + - `AnthropicActor object` + + - `type: optional "anthropic_actor"` + + default: anthropic_actor + + - `email_address: optional string or null` + + format: email + + - `SystemActor object` + + Automated background processing performed by Anthropic systems, acting + without a user or customer credential. + + - `type: optional "system_actor"` + + default: system_actor + + - `service: optional string or null` + + Name of the automated process that performed the action, when known. + + - `AdminAPIKeyActor object` + + - `type: optional "admin_api_key_actor"` + + default: admin_api_key_actor + + - `admin_api_key_id: string` + + - `ip_address: string` + + - `user_agent: string` + + - `ServiceAccountActor object` + + - `type: optional "service_account_actor"` + + default: service_account_actor + + - `ip_address: string` + + - `service_account_id: string` + + - `user_agent: string` + + - `ScimDirectorySyncActor object` + + - `type: optional "scim_directory_sync_actor"` + + default: scim_directory_sync_actor + + - `directory_id: string` + + - `workos_event_id: string` + + - `idp_connection_type: optional string or null` + + - `FederatedIdentityActor object` + + A federated external workload authenticated via a verified OIDC token. + + Carries the verified issuer, subject, and audience claims from the + presented JWT. + + - `type: optional "federated_identity_actor"` + + default: federated_identity_actor + + - `issuer: string` + + - `subject: string` + + - `audience: optional array of string` + + - `ip_address: optional string or null` + + - `user_agent: optional string or null` + + - `FederatedActor object` + + An external identity asserted by a trusted provider — a cloud-provider + gateway or a customer-registered federation issuer — acting without an + Anthropic-provisioned account or service account. + + - `type: optional "federated_actor"` + + default: federated_actor + + - `provider: FederatedActorAwsProvider or FederatedActorAzureProvider or FederatedActorGcpProvider or FederatedActorOidcProvider` + + - `FederatedActorAwsProvider object` + + Asserting party: the AWS account the organization is bound to. + + - `type: optional "aws"` + + default: aws + + - `account_id: string` + + - `signed_principal: string` + + The AWS-signed ARN of the IAM principal that requested the token. + + - `FederatedActorAzureProvider object` + + Asserting party: the Azure subscription the organization is bound to. + + - `type: optional "azure"` + + default: azure + + - `subscription_id: string` + + - `FederatedActorGcpProvider object` + + Asserting party: the GCP project the organization is bound to. + + - `type: optional "gcp"` + + default: gcp + + - `project_number: string` + + - `FederatedActorOidcProvider object` + + Asserting party: a customer-registered OIDC federation issuer. + + - `type: optional "oidc"` + + default: oidc + + - `issuer: optional string or null` + + The federation issuer's URL. Null when the presented credential failed verification. + + - `ip_address: optional string or null` + + - `subject: optional string or null` + + The provider's verified identifier for the caller; its form depends on the provider. + + - `user_agent: optional string or null` + + - `AttestedDeviceActor object` + + An attested mobile device authenticated via Apple App Attest. + + - `type: optional "attested_device_actor"` + + default: attested_device_actor + + - `external_client_id: string` + + - `kid_hash: string` + + - `ip_address: optional string or null` + + - `user_agent: optional string or null` + + - `id: optional string` + + Unique identifier for the activity e.g. 'activity_abcd1234' + + - `created_at: optional string` + + When this activity occurred. + + format: date-time + + - `current_value: optional boolean or null` + + Setting value immediately after this change + + - `organization_id: optional string or null` + + Organization ID this activity is associated with + + - `organization_uuid: optional string or null` + + Organization UUID where the activity occurred. Null when the activity is not tied to an organization (for example, login and logout events or calls to the Compliance API). + + - `previous_value: optional boolean or null` - Organization Cowork Agent was disabled. + Setting value immediately before this change - - `type: optional "org_cowork_agent_disabled"` + - `OrgCoworkAgentEnabled object` - default: org_cowork_agent_disabled + Organization Cowork Agent was enabled. + + - `type: optional "org_cowork_agent_enabled"` + + default: org_cowork_agent_enabled - `actor: APIActor or UserActor or UnauthenticatedUserActor or 8 more` @@ -183764,13 +184482,13 @@ curl https://api.anthropic.com/v1/compliance/activities \ Setting value immediately before this change - - `OrgCoworkAgentEnabled object` + - `OrgCoworkAutoModeDisabled object` - Organization Cowork Agent was enabled. + The "Auto" permission mode in Cowork was disabled for the organization, so members can no longer let Claude approve its own actions after a safety check. - - `type: optional "org_cowork_agent_enabled"` + - `type: optional "org_cowork_auto_mode_disabled"` - default: org_cowork_agent_enabled + default: org_cowork_auto_mode_disabled - `actor: APIActor or UserActor or UnauthenticatedUserActor or 8 more` @@ -183988,10 +184706,6 @@ curl https://api.anthropic.com/v1/compliance/activities \ format: date-time - - `current_value: optional boolean or null` - - Setting value immediately after this change - - `organization_id: optional string or null` Organization ID this activity is associated with @@ -184000,17 +184714,245 @@ curl https://api.anthropic.com/v1/compliance/activities \ Organization UUID where the activity occurred. Null when the activity is not tied to an organization (for example, login and logout events or calls to the Compliance API). - - `previous_value: optional boolean or null` + - `OrgCoworkAutoModeEnabled object` - Setting value immediately before this change + The "Auto" permission mode in Cowork was enabled for the organization, allowing members to let Claude approve its own actions after a safety check. - - `OrgCoworkAutoModeDisabled object` + - `type: optional "org_cowork_auto_mode_enabled"` - The "Auto" permission mode in Cowork was disabled for the organization, so members can no longer let Claude approve its own actions after a safety check. + default: org_cowork_auto_mode_enabled - - `type: optional "org_cowork_auto_mode_disabled"` + - `actor: APIActor or UserActor or UnauthenticatedUserActor or 8 more` - default: org_cowork_auto_mode_disabled + - `APIActor object` + + - `type: optional "api_actor"` + + default: api_actor + + - `api_key_id: string` + + - `ip_address: string` + + - `user_agent: string` + + - `UserActor object` + + - `type: optional "user_actor"` + + default: user_actor + + - `email_address: string` + + format: email + + - `ip_address: string` + + - `user_agent: string` + + - `user_id: string` + + - `UnauthenticatedUserActor object` + + - `type: optional "unauthenticated_user_actor"` + + default: unauthenticated_user_actor + + - `ip_address: string` + + - `user_agent: string` + + - `unauthenticated_email_address: optional string or null` + + format: email + + - `AnthropicActor object` + + - `type: optional "anthropic_actor"` + + default: anthropic_actor + + - `email_address: optional string or null` + + format: email + + - `SystemActor object` + + Automated background processing performed by Anthropic systems, acting + without a user or customer credential. + + - `type: optional "system_actor"` + + default: system_actor + + - `service: optional string or null` + + Name of the automated process that performed the action, when known. + + - `AdminAPIKeyActor object` + + - `type: optional "admin_api_key_actor"` + + default: admin_api_key_actor + + - `admin_api_key_id: string` + + - `ip_address: string` + + - `user_agent: string` + + - `ServiceAccountActor object` + + - `type: optional "service_account_actor"` + + default: service_account_actor + + - `ip_address: string` + + - `service_account_id: string` + + - `user_agent: string` + + - `ScimDirectorySyncActor object` + + - `type: optional "scim_directory_sync_actor"` + + default: scim_directory_sync_actor + + - `directory_id: string` + + - `workos_event_id: string` + + - `idp_connection_type: optional string or null` + + - `FederatedIdentityActor object` + + A federated external workload authenticated via a verified OIDC token. + + Carries the verified issuer, subject, and audience claims from the + presented JWT. + + - `type: optional "federated_identity_actor"` + + default: federated_identity_actor + + - `issuer: string` + + - `subject: string` + + - `audience: optional array of string` + + - `ip_address: optional string or null` + + - `user_agent: optional string or null` + + - `FederatedActor object` + + An external identity asserted by a trusted provider — a cloud-provider + gateway or a customer-registered federation issuer — acting without an + Anthropic-provisioned account or service account. + + - `type: optional "federated_actor"` + + default: federated_actor + + - `provider: FederatedActorAwsProvider or FederatedActorAzureProvider or FederatedActorGcpProvider or FederatedActorOidcProvider` + + - `FederatedActorAwsProvider object` + + Asserting party: the AWS account the organization is bound to. + + - `type: optional "aws"` + + default: aws + + - `account_id: string` + + - `signed_principal: string` + + The AWS-signed ARN of the IAM principal that requested the token. + + - `FederatedActorAzureProvider object` + + Asserting party: the Azure subscription the organization is bound to. + + - `type: optional "azure"` + + default: azure + + - `subscription_id: string` + + - `FederatedActorGcpProvider object` + + Asserting party: the GCP project the organization is bound to. + + - `type: optional "gcp"` + + default: gcp + + - `project_number: string` + + - `FederatedActorOidcProvider object` + + Asserting party: a customer-registered OIDC federation issuer. + + - `type: optional "oidc"` + + default: oidc + + - `issuer: optional string or null` + + The federation issuer's URL. Null when the presented credential failed verification. + + - `ip_address: optional string or null` + + - `subject: optional string or null` + + The provider's verified identifier for the caller; its form depends on the provider. + + - `user_agent: optional string or null` + + - `AttestedDeviceActor object` + + An attested mobile device authenticated via Apple App Attest. + + - `type: optional "attested_device_actor"` + + default: attested_device_actor + + - `external_client_id: string` + + - `kid_hash: string` + + - `ip_address: optional string or null` + + - `user_agent: optional string or null` + + - `id: optional string` + + Unique identifier for the activity e.g. 'activity_abcd1234' + + - `created_at: optional string` + + When this activity occurred. + + format: date-time + + - `organization_id: optional string or null` + + Organization ID this activity is associated with + + - `organization_uuid: optional string or null` + + Organization UUID where the activity occurred. Null when the activity is not tied to an organization (for example, login and logout events or calls to the Compliance API). + + - `OrgCoworkBrowserPaneDisabled object` + + The in-app browser in Cowork was disabled for the organization, so Claude can no longer open or use websites in a browser pane during members' Cowork sessions. + + - `type: optional "org_cowork_browser_pane_disabled"` + + default: org_cowork_browser_pane_disabled - `actor: APIActor or UserActor or UnauthenticatedUserActor or 8 more` @@ -184236,13 +185178,13 @@ curl https://api.anthropic.com/v1/compliance/activities \ Organization UUID where the activity occurred. Null when the activity is not tied to an organization (for example, login and logout events or calls to the Compliance API). - - `OrgCoworkAutoModeEnabled object` + - `OrgCoworkBrowserPaneEnabled object` - The "Auto" permission mode in Cowork was enabled for the organization, allowing members to let Claude approve its own actions after a safety check. + The in-app browser in Cowork was enabled for the organization, letting Claude open and use websites in a browser pane during members' Cowork sessions. - - `type: optional "org_cowork_auto_mode_enabled"` + - `type: optional "org_cowork_browser_pane_enabled"` - default: org_cowork_auto_mode_enabled + default: org_cowork_browser_pane_enabled - `actor: APIActor or UserActor or UnauthenticatedUserActor or 8 more` diff --git a/content/en/api/compliance/activities/list.md b/content/en/api/compliance/activities/list.md index 351609855b..22d9f332b3 100644 --- a/content/en/api/compliance/activities/list.md +++ b/content/en/api/compliance/activities/list.md @@ -15,7 +15,7 @@ compliance activities that can be filtered by various criteria. ## Query parameters -- `activity_types: optional array of "abuse_decision_received" or "account_deleted" or "admin_api_key_created" or 499 more` +- `activity_types: optional array of "abuse_decision_received" or "account_deleted" or "admin_api_key_created" or 501 more` Filter activities by type. See the response `data` schema for the additional fields each type returns. Cannot be combined with `exclude_activity_types[]`. @@ -1059,6 +1059,14 @@ compliance activities that can be filtered by various criteria. The "Auto" permission mode in Cowork was enabled for the organization, allowing members to let Claude approve its own actions after a safety check. + - `"org_cowork_browser_pane_disabled"` + + The in-app browser in Cowork was disabled for the organization, so Claude can no longer open or use websites in a browser pane during members' Cowork sessions. + + - `"org_cowork_browser_pane_enabled"` + + The in-app browser in Cowork was enabled for the organization, letting Claude open and use websites in a browser pane during members' Cowork sessions. + - `"org_cowork_disabled"` Organization cowork was disabled. @@ -2082,7 +2090,7 @@ compliance activities that can be filtered by various criteria. format: date-time -- `exclude_activity_types: optional array of "abuse_decision_received" or "account_deleted" or "admin_api_key_created" or 499 more` +- `exclude_activity_types: optional array of "abuse_decision_received" or "account_deleted" or "admin_api_key_created" or 501 more` Exclude activities of these types. Cannot be combined with `activity_types[]`. @@ -3126,6 +3134,14 @@ compliance activities that can be filtered by various criteria. The "Auto" permission mode in Cowork was enabled for the organization, allowing members to let Claude approve its own actions after a safety check. + - `"org_cowork_browser_pane_disabled"` + + The in-app browser in Cowork was disabled for the organization, so Claude can no longer open or use websites in a browser pane during members' Cowork sessions. + + - `"org_cowork_browser_pane_enabled"` + + The in-app browser in Cowork was enabled for the organization, letting Claude open and use websites in a browser pane during members' Cowork sessions. + - `"org_cowork_disabled"` Organization cowork was disabled. @@ -4141,7 +4157,7 @@ compliance activities that can be filtered by various criteria. ## Returns -- `data: optional array of AbuseDecisionReceived or AccountDeleted or AdminAPIKeyCreated or 499 more` +- `data: optional array of AbuseDecisionReceived or AccountDeleted or AdminAPIKeyCreated or 501 more` List of activity records. Each element's `type` field identifies which activity it is and which additional fields are present. @@ -8725,11 +8741,11 @@ compliance activities that can be filtered by various criteria. - `user_agent: optional string or null` - - `audience: array of ArtifactSharingAudienceOrganization or ArtifactSharingAudienceUsers or ArtifactSharingAudienceAnyoneWithLink` + - `audience: array of Organization or Users or AnyoneWithLink` The artifact's sharing audience after the change. If empty, the artifact is visible only to its owner. - - `ArtifactSharingAudienceOrganization object` + - `Organization object` Sharing audience: visible to the owning organization. @@ -8737,7 +8753,7 @@ compliance activities that can be filtered by various criteria. default: organization - - `ArtifactSharingAudienceUsers object` + - `Users object` Sharing audience: visible to an explicit allowlist of users. @@ -8745,10 +8761,9 @@ compliance activities that can be filtered by various criteria. default: users - - `ArtifactSharingAudienceAnyoneWithLink object` + - `AnyoneWithLink object` - Sharing audience: anyone with the link, including anonymous viewers - (an artifact shared to the open internet). + Sharing audience: anyone with the link, including anonymous viewers (an artifact shared to the open internet). - `type: optional "anyone_with_link"` @@ -59792,6 +59807,470 @@ compliance activities that can be filtered by various criteria. Organization UUID where the activity occurred. Null when the activity is not tied to an organization (for example, login and logout events or calls to the Compliance API). + - `OrgCoworkBrowserPaneDisabled object` + + The in-app browser in Cowork was disabled for the organization, so Claude can no longer open or use websites in a browser pane during members' Cowork sessions. + + - `type: optional "org_cowork_browser_pane_disabled"` + + default: org_cowork_browser_pane_disabled + + - `actor: APIActor or UserActor or UnauthenticatedUserActor or 8 more` + + - `APIActor object` + + - `type: optional "api_actor"` + + default: api_actor + + - `api_key_id: string` + + - `ip_address: string` + + - `user_agent: string` + + - `UserActor object` + + - `type: optional "user_actor"` + + default: user_actor + + - `email_address: string` + + format: email + + - `ip_address: string` + + - `user_agent: string` + + - `user_id: string` + + - `UnauthenticatedUserActor object` + + - `type: optional "unauthenticated_user_actor"` + + default: unauthenticated_user_actor + + - `ip_address: string` + + - `user_agent: string` + + - `unauthenticated_email_address: optional string or null` + + format: email + + - `AnthropicActor object` + + - `type: optional "anthropic_actor"` + + default: anthropic_actor + + - `email_address: optional string or null` + + format: email + + - `SystemActor object` + + Automated background processing performed by Anthropic systems, acting + without a user or customer credential. + + - `type: optional "system_actor"` + + default: system_actor + + - `service: optional string or null` + + Name of the automated process that performed the action, when known. + + - `AdminAPIKeyActor object` + + - `type: optional "admin_api_key_actor"` + + default: admin_api_key_actor + + - `admin_api_key_id: string` + + - `ip_address: string` + + - `user_agent: string` + + - `ServiceAccountActor object` + + - `type: optional "service_account_actor"` + + default: service_account_actor + + - `ip_address: string` + + - `service_account_id: string` + + - `user_agent: string` + + - `ScimDirectorySyncActor object` + + - `type: optional "scim_directory_sync_actor"` + + default: scim_directory_sync_actor + + - `directory_id: string` + + - `workos_event_id: string` + + - `idp_connection_type: optional string or null` + + - `FederatedIdentityActor object` + + A federated external workload authenticated via a verified OIDC token. + + Carries the verified issuer, subject, and audience claims from the + presented JWT. + + - `type: optional "federated_identity_actor"` + + default: federated_identity_actor + + - `issuer: string` + + - `subject: string` + + - `audience: optional array of string` + + - `ip_address: optional string or null` + + - `user_agent: optional string or null` + + - `FederatedActor object` + + An external identity asserted by a trusted provider — a cloud-provider + gateway or a customer-registered federation issuer — acting without an + Anthropic-provisioned account or service account. + + - `type: optional "federated_actor"` + + default: federated_actor + + - `provider: FederatedActorAwsProvider or FederatedActorAzureProvider or FederatedActorGcpProvider or FederatedActorOidcProvider` + + - `FederatedActorAwsProvider object` + + Asserting party: the AWS account the organization is bound to. + + - `type: optional "aws"` + + default: aws + + - `account_id: string` + + - `signed_principal: string` + + The AWS-signed ARN of the IAM principal that requested the token. + + - `FederatedActorAzureProvider object` + + Asserting party: the Azure subscription the organization is bound to. + + - `type: optional "azure"` + + default: azure + + - `subscription_id: string` + + - `FederatedActorGcpProvider object` + + Asserting party: the GCP project the organization is bound to. + + - `type: optional "gcp"` + + default: gcp + + - `project_number: string` + + - `FederatedActorOidcProvider object` + + Asserting party: a customer-registered OIDC federation issuer. + + - `type: optional "oidc"` + + default: oidc + + - `issuer: optional string or null` + + The federation issuer's URL. Null when the presented credential failed verification. + + - `ip_address: optional string or null` + + - `subject: optional string or null` + + The provider's verified identifier for the caller; its form depends on the provider. + + - `user_agent: optional string or null` + + - `AttestedDeviceActor object` + + An attested mobile device authenticated via Apple App Attest. + + - `type: optional "attested_device_actor"` + + default: attested_device_actor + + - `external_client_id: string` + + - `kid_hash: string` + + - `ip_address: optional string or null` + + - `user_agent: optional string or null` + + - `id: optional string` + + Unique identifier for the activity e.g. 'activity_abcd1234' + + - `created_at: optional string` + + When this activity occurred. + + format: date-time + + - `organization_id: optional string or null` + + Organization ID this activity is associated with + + - `organization_uuid: optional string or null` + + Organization UUID where the activity occurred. Null when the activity is not tied to an organization (for example, login and logout events or calls to the Compliance API). + + - `OrgCoworkBrowserPaneEnabled object` + + The in-app browser in Cowork was enabled for the organization, letting Claude open and use websites in a browser pane during members' Cowork sessions. + + - `type: optional "org_cowork_browser_pane_enabled"` + + default: org_cowork_browser_pane_enabled + + - `actor: APIActor or UserActor or UnauthenticatedUserActor or 8 more` + + - `APIActor object` + + - `type: optional "api_actor"` + + default: api_actor + + - `api_key_id: string` + + - `ip_address: string` + + - `user_agent: string` + + - `UserActor object` + + - `type: optional "user_actor"` + + default: user_actor + + - `email_address: string` + + format: email + + - `ip_address: string` + + - `user_agent: string` + + - `user_id: string` + + - `UnauthenticatedUserActor object` + + - `type: optional "unauthenticated_user_actor"` + + default: unauthenticated_user_actor + + - `ip_address: string` + + - `user_agent: string` + + - `unauthenticated_email_address: optional string or null` + + format: email + + - `AnthropicActor object` + + - `type: optional "anthropic_actor"` + + default: anthropic_actor + + - `email_address: optional string or null` + + format: email + + - `SystemActor object` + + Automated background processing performed by Anthropic systems, acting + without a user or customer credential. + + - `type: optional "system_actor"` + + default: system_actor + + - `service: optional string or null` + + Name of the automated process that performed the action, when known. + + - `AdminAPIKeyActor object` + + - `type: optional "admin_api_key_actor"` + + default: admin_api_key_actor + + - `admin_api_key_id: string` + + - `ip_address: string` + + - `user_agent: string` + + - `ServiceAccountActor object` + + - `type: optional "service_account_actor"` + + default: service_account_actor + + - `ip_address: string` + + - `service_account_id: string` + + - `user_agent: string` + + - `ScimDirectorySyncActor object` + + - `type: optional "scim_directory_sync_actor"` + + default: scim_directory_sync_actor + + - `directory_id: string` + + - `workos_event_id: string` + + - `idp_connection_type: optional string or null` + + - `FederatedIdentityActor object` + + A federated external workload authenticated via a verified OIDC token. + + Carries the verified issuer, subject, and audience claims from the + presented JWT. + + - `type: optional "federated_identity_actor"` + + default: federated_identity_actor + + - `issuer: string` + + - `subject: string` + + - `audience: optional array of string` + + - `ip_address: optional string or null` + + - `user_agent: optional string or null` + + - `FederatedActor object` + + An external identity asserted by a trusted provider — a cloud-provider + gateway or a customer-registered federation issuer — acting without an + Anthropic-provisioned account or service account. + + - `type: optional "federated_actor"` + + default: federated_actor + + - `provider: FederatedActorAwsProvider or FederatedActorAzureProvider or FederatedActorGcpProvider or FederatedActorOidcProvider` + + - `FederatedActorAwsProvider object` + + Asserting party: the AWS account the organization is bound to. + + - `type: optional "aws"` + + default: aws + + - `account_id: string` + + - `signed_principal: string` + + The AWS-signed ARN of the IAM principal that requested the token. + + - `FederatedActorAzureProvider object` + + Asserting party: the Azure subscription the organization is bound to. + + - `type: optional "azure"` + + default: azure + + - `subscription_id: string` + + - `FederatedActorGcpProvider object` + + Asserting party: the GCP project the organization is bound to. + + - `type: optional "gcp"` + + default: gcp + + - `project_number: string` + + - `FederatedActorOidcProvider object` + + Asserting party: a customer-registered OIDC federation issuer. + + - `type: optional "oidc"` + + default: oidc + + - `issuer: optional string or null` + + The federation issuer's URL. Null when the presented credential failed verification. + + - `ip_address: optional string or null` + + - `subject: optional string or null` + + The provider's verified identifier for the caller; its form depends on the provider. + + - `user_agent: optional string or null` + + - `AttestedDeviceActor object` + + An attested mobile device authenticated via Apple App Attest. + + - `type: optional "attested_device_actor"` + + default: attested_device_actor + + - `external_client_id: string` + + - `kid_hash: string` + + - `ip_address: optional string or null` + + - `user_agent: optional string or null` + + - `id: optional string` + + Unique identifier for the activity e.g. 'activity_abcd1234' + + - `created_at: optional string` + + When this activity occurred. + + format: date-time + + - `organization_id: optional string or null` + + Organization ID this activity is associated with + + - `organization_uuid: optional string or null` + + Organization UUID where the activity occurred. Null when the activity is not tied to an organization (for example, login and logout events or calls to the Compliance API). + - `OrgCoworkDisabled object` Organization cowork was disabled. diff --git a/content/en/api/compliance/organizations.md b/content/en/api/compliance/organizations.md index 20986c6371..4424ac184e 100644 --- a/content/en/api/compliance/organizations.md +++ b/content/en/api/compliance/organizations.md @@ -472,6 +472,13 @@ enforced state after all policies are applied, which may differ from what is configured in the admin console. Settings an organization's administrators cannot change (for example, ones controlled by Anthropic policy or not available to the organization) are omitted from the list. +Settings that report a compliance arrangement with Anthropic are the +exception: the HIPAA and Access Transparency settings are always included; +the API zero data retention setting is reported for Claude Console +organizations, and the Claude Code zero data retention and customer-managed +encryption keys (CMEK) settings for Claude Enterprise organizations. Each +reports whether the arrangement is in place at the organization level; a +retention setting on an individual workspace is not reflected. The organization must belong to the API key's organization hierarchy; unknown organizations and organizations outside the hierarchy return 404. @@ -544,12 +551,16 @@ unknown organizations and organizations outside the hierarchy return 404. default: boolean - - `name: "ai_powered_artifacts_enabled" or "api_workbench_feedback_collection_enabled" or "artifact_connectors_enabled" or 53 more` + - `name: "access_transparency_enabled" or "ai_powered_artifacts_enabled" or "api_workbench_feedback_collection_enabled" or 57 more` + + - `"access_transparency_enabled"` - `"ai_powered_artifacts_enabled"` - `"api_workbench_feedback_collection_enabled"` + - `"api_zero_data_retention_enabled"` + - `"artifact_connectors_enabled"` - `"ask_your_org_enabled"` @@ -588,6 +599,8 @@ unknown organizations and organizations outside the hierarchy return 404. - `"claude_design_enabled"` + - `"claude_enterprise_claude_code_zero_data_retention_enabled"` + - `"claude_in_slack_enabled"` - `"claude_science_custom_connectors_enabled"` @@ -606,6 +619,8 @@ unknown organizations and organizations outside the hierarchy return 404. - `"claude_science_ssh_hosts_enabled"` + - `"cmek_enabled"` + - `"code_execution_enabled"` - `"code_execution_network_egress_enabled"` @@ -812,7 +827,7 @@ curl https://api.anthropic.com/v1/compliance/organizations/$ORGANIZATION_ID/sett "organization_id": "organization_id", "settings": [ { - "name": "ai_powered_artifacts_enabled", + "name": "access_transparency_enabled", "value": true, "type": "boolean" } diff --git a/content/en/api/compliance/organizations/settings.md b/content/en/api/compliance/organizations/settings.md index 22a6910645..6f6bd922a0 100644 --- a/content/en/api/compliance/organizations/settings.md +++ b/content/en/api/compliance/organizations/settings.md @@ -16,6 +16,13 @@ enforced state after all policies are applied, which may differ from what is configured in the admin console. Settings an organization's administrators cannot change (for example, ones controlled by Anthropic policy or not available to the organization) are omitted from the list. +Settings that report a compliance arrangement with Anthropic are the +exception: the HIPAA and Access Transparency settings are always included; +the API zero data retention setting is reported for Claude Console +organizations, and the Claude Code zero data retention and customer-managed +encryption keys (CMEK) settings for Claude Enterprise organizations. Each +reports whether the arrangement is in place at the organization level; a +retention setting on an individual workspace is not reflected. The organization must belong to the API key's organization hierarchy; unknown organizations and organizations outside the hierarchy return 404. @@ -88,12 +95,16 @@ unknown organizations and organizations outside the hierarchy return 404. default: boolean - - `name: "ai_powered_artifacts_enabled" or "api_workbench_feedback_collection_enabled" or "artifact_connectors_enabled" or 53 more` + - `name: "access_transparency_enabled" or "ai_powered_artifacts_enabled" or "api_workbench_feedback_collection_enabled" or 57 more` + + - `"access_transparency_enabled"` - `"ai_powered_artifacts_enabled"` - `"api_workbench_feedback_collection_enabled"` + - `"api_zero_data_retention_enabled"` + - `"artifact_connectors_enabled"` - `"ask_your_org_enabled"` @@ -132,6 +143,8 @@ unknown organizations and organizations outside the hierarchy return 404. - `"claude_design_enabled"` + - `"claude_enterprise_claude_code_zero_data_retention_enabled"` + - `"claude_in_slack_enabled"` - `"claude_science_custom_connectors_enabled"` @@ -150,6 +163,8 @@ unknown organizations and organizations outside the hierarchy return 404. - `"claude_science_ssh_hosts_enabled"` + - `"cmek_enabled"` + - `"code_execution_enabled"` - `"code_execution_network_egress_enabled"` @@ -356,7 +371,7 @@ curl https://api.anthropic.com/v1/compliance/organizations/$ORGANIZATION_ID/sett "organization_id": "organization_id", "settings": [ { - "name": "ai_powered_artifacts_enabled", + "name": "access_transparency_enabled", "value": true, "type": "boolean" } @@ -376,7 +391,14 @@ curl https://api.anthropic.com/v1/compliance/organizations/$ORGANIZATION_ID/sett Settings appear at most once each, in a fixed relative order, and values reflect the enforced state. A setting the organization's administrators cannot change — for example, one controlled by Anthropic policy or not - available to the organization — is omitted from the list. + available to the organization — is omitted from the list. Settings that + report a compliance arrangement with Anthropic are the exception: the + HIPAA and Access Transparency settings are always included; the API zero + data retention setting is reported for Claude Console organizations, and + the Claude Code zero data retention and customer-managed encryption keys + (CMEK) settings for Claude Enterprise organizations. Each reports whether + the arrangement is in place at the organization level; a retention setting + on an individual workspace is not reflected. - `type: optional "effective_organization_settings"` @@ -434,12 +456,16 @@ curl https://api.anthropic.com/v1/compliance/organizations/$ORGANIZATION_ID/sett default: boolean - - `name: "ai_powered_artifacts_enabled" or "api_workbench_feedback_collection_enabled" or "artifact_connectors_enabled" or 53 more` + - `name: "access_transparency_enabled" or "ai_powered_artifacts_enabled" or "api_workbench_feedback_collection_enabled" or 57 more` + + - `"access_transparency_enabled"` - `"ai_powered_artifacts_enabled"` - `"api_workbench_feedback_collection_enabled"` + - `"api_zero_data_retention_enabled"` + - `"artifact_connectors_enabled"` - `"ask_your_org_enabled"` @@ -478,6 +504,8 @@ curl https://api.anthropic.com/v1/compliance/organizations/$ORGANIZATION_ID/sett - `"claude_design_enabled"` + - `"claude_enterprise_claude_code_zero_data_retention_enabled"` + - `"claude_in_slack_enabled"` - `"claude_science_custom_connectors_enabled"` @@ -496,6 +524,8 @@ curl https://api.anthropic.com/v1/compliance/organizations/$ORGANIZATION_ID/sett - `"claude_science_ssh_hosts_enabled"` + - `"cmek_enabled"` + - `"code_execution_enabled"` - `"code_execution_network_egress_enabled"` diff --git a/content/en/api/compliance/organizations/settings/retrieve.md b/content/en/api/compliance/organizations/settings/retrieve.md index 819c19a1eb..d3ad29cd18 100644 --- a/content/en/api/compliance/organizations/settings/retrieve.md +++ b/content/en/api/compliance/organizations/settings/retrieve.md @@ -14,6 +14,13 @@ enforced state after all policies are applied, which may differ from what is configured in the admin console. Settings an organization's administrators cannot change (for example, ones controlled by Anthropic policy or not available to the organization) are omitted from the list. +Settings that report a compliance arrangement with Anthropic are the +exception: the HIPAA and Access Transparency settings are always included; +the API zero data retention setting is reported for Claude Console +organizations, and the Claude Code zero data retention and customer-managed +encryption keys (CMEK) settings for Claude Enterprise organizations. Each +reports whether the arrangement is in place at the organization level; a +retention setting on an individual workspace is not reflected. The organization must belong to the API key's organization hierarchy; unknown organizations and organizations outside the hierarchy return 404. @@ -86,12 +93,16 @@ unknown organizations and organizations outside the hierarchy return 404. default: boolean - - `name: "ai_powered_artifacts_enabled" or "api_workbench_feedback_collection_enabled" or "artifact_connectors_enabled" or 53 more` + - `name: "access_transparency_enabled" or "ai_powered_artifacts_enabled" or "api_workbench_feedback_collection_enabled" or 57 more` + + - `"access_transparency_enabled"` - `"ai_powered_artifacts_enabled"` - `"api_workbench_feedback_collection_enabled"` + - `"api_zero_data_retention_enabled"` + - `"artifact_connectors_enabled"` - `"ask_your_org_enabled"` @@ -130,6 +141,8 @@ unknown organizations and organizations outside the hierarchy return 404. - `"claude_design_enabled"` + - `"claude_enterprise_claude_code_zero_data_retention_enabled"` + - `"claude_in_slack_enabled"` - `"claude_science_custom_connectors_enabled"` @@ -148,6 +161,8 @@ unknown organizations and organizations outside the hierarchy return 404. - `"claude_science_ssh_hosts_enabled"` + - `"cmek_enabled"` + - `"code_execution_enabled"` - `"code_execution_network_egress_enabled"` @@ -354,7 +369,7 @@ curl https://api.anthropic.com/v1/compliance/organizations/$ORGANIZATION_ID/sett "organization_id": "organization_id", "settings": [ { - "name": "ai_powered_artifacts_enabled", + "name": "access_transparency_enabled", "value": true, "type": "boolean" } diff --git a/content/en/api/rate-limits.md b/content/en/api/rate-limits.md index 7d0377d8df..58da8b9d0c 100644 --- a/content/en/api/rate-limits.md +++ b/content/en/api/rate-limits.md @@ -5,7 +5,7 @@ description: To mitigate misuse and manage capacity on the API, limits are in pl --- - **[Claude Platform on AWS](https://platform.claude.com/docs/en/build-with-claude/claude-platform-on-aws):** The rate limits on this page apply to Claude Platform on AWS, but billing and limit management differ. Billing is through AWS Marketplace (not Anthropic credit purchases). Organizations on Claude Platform on AWS are placed on the Start tier and do not move between usage tiers automatically. To request higher limits, contact your Anthropic account representative or [Anthropic support](https://support.claude.com); the **Request rate limit increase** flow is not available. Per-workspace rate limit configuration and [fast mode](https://platform.claude.com/docs/en/build-with-claude/fast-mode) are not available on Claude Platform on AWS. For details, see [Rate limits and quotas on Claude Platform on AWS](https://platform.claude.com/docs/en/build-with-claude/claude-platform-on-aws#rate-limits-and-quotas). + **[Claude Platform on AWS](https://platform.claude.com/docs/en/build-with-claude/claude-platform-on-aws):** The rate limits on this page apply to Claude Platform on AWS, but billing and limit management differ. Billing is through AWS Marketplace (not Anthropic credit purchases). Organizations on Claude Platform on AWS are placed on the Start tier and can move to a higher tier automatically as they build a history of paid AWS Marketplace invoices. To request higher limits, contact your Anthropic account representative or [Anthropic support](https://support.claude.com); the **Request rate limit increase** flow is not available. Per-workspace rate limit configuration and [fast mode](https://platform.claude.com/docs/en/build-with-claude/fast-mode) are not available on Claude Platform on AWS. For details, see [Rate limits and quotas on Claude Platform on AWS](https://platform.claude.com/docs/en/build-with-claude/claude-platform-on-aws#rate-limits-and-quotas). There are two types of limits: diff --git a/content/en/build-with-claude/batch-processing.md b/content/en/build-with-claude/batch-processing.md index 5b8a800da5..4654b7cffe 100644 --- a/content/en/build-with-claude/batch-processing.md +++ b/content/en/build-with-claude/batch-processing.md @@ -82,7 +82,7 @@ A small number of Messages API parameters are **not** supported in batch request The Batches API offers significant cost savings. All usage is charged at 50% of the standard API prices. | Model | Batch input | Batch output | -| ------------------------------------------------------------------------------------------------------------------------------------- | ------------ | ------------- | +| :------------------------------------------------------------------------------------------------------------------------------------ | :----------- | :------------ | | Claude Fable 5.1 | $5 / MTok | $25 / MTok | | Claude Mythos 5.1 ([limited availability](https://anthropic.com/glasswing)) | $5 / MTok | $25 / MTok | | Claude Fable 5 | $5 / MTok | $25 / MTok | @@ -751,11 +751,12 @@ Results of the batch are available for download at the `results_url` property on for result in client.messages.batches.results( "msgbatch_01HkcTjaV5uDC8jWR4ZsDV8d", ): - match result.result.type: + outcome = result.result + match outcome.type: case "succeeded": print(f"Success! {result.custom_id}") case "errored": - if result.result.error.error.type == "invalid_request_error": + if outcome.error.error.type == "invalid_request_error": # Request body must be fixed before re-sending request print(f"Validation error {result.custom_id}") else: @@ -863,39 +864,43 @@ Results of the batch are available for download at the `results_url` property on streamResponse .stream() .forEach(result -> { - if (result.result().isSucceeded()) { - System.out.println("Success! " + result.customId()); - } else if (result.result().isErrored()) { - if (result.result().asErrored().error().error().isInvalidRequestError()) { - // Request body must be fixed before re-sending request - System.out.println("Validation error: " + result.customId()); - } else { - // Request can be retried directly - System.out.println("Server error: " + result.customId()); + switch (result.result().type().value()) { + case SUCCEEDED -> System.out.println("Success! " + result.customId()); + case ERRORED -> { + if (result.result().asErrored().error().error().isInvalidRequestError()) { + // Request body must be fixed before re-sending request + System.out.println("Validation error: " + result.customId()); + } else { + // Request can be retried directly + System.out.println("Server error: " + result.customId()); + } } - } else if (result.result().isExpired()) { - System.out.println("Request expired: " + result.customId()); + case EXPIRED -> System.out.println("Request expired: " + result.customId()); } }); } ``` ```php PHP + use Anthropic\Messages\Batches\MessageBatchErroredResult; + use Anthropic\Messages\Batches\MessageBatchExpiredResult; + use Anthropic\Messages\Batches\MessageBatchSucceededResult; + $client = new Client(); foreach ($client->messages->batches->resultsStream(messageBatchID: 'msgbatch_01HkcTjaV5uDC8jWR4ZsDV8d') as $result) { - switch ($result->result->type) { - case "succeeded": + switch (true) { + case $result->result instanceof MessageBatchSucceededResult: echo "Success! {$result->customID}\n"; break; - case "errored": + case $result->result instanceof MessageBatchErroredResult: if ($result->result->error->error->type === "invalid_request_error") { echo "Validation error: {$result->customID}\n"; } else { echo "Server error: {$result->customID}\n"; } break; - case "expired": + case $result->result instanceof MessageBatchExpiredResult: echo "Request expired: {$result->customID}\n"; break; } @@ -906,16 +911,17 @@ Results of the batch are available for download at the `results_url` property on client = Anthropic::Client.new client.messages.batches.results_streaming("msgbatch_01HkcTjaV5uDC8jWR4ZsDV8d").each do |result| - case result.result.type - when :succeeded + outcome = result.result + case outcome + when Anthropic::Models::Messages::MessageBatchSucceededResult puts "Success! #{result.custom_id}" - when :errored - if result.result.error.type == :invalid_request + when Anthropic::Models::Messages::MessageBatchErroredResult + if outcome.error.type == :invalid_request puts "Validation error: #{result.custom_id}" else puts "Server error: #{result.custom_id}" end - when :expired + when Anthropic::Models::Messages::MessageBatchExpiredResult puts "Request expired: #{result.custom_id}" end end diff --git a/content/en/build-with-claude/cache-diagnostics.md b/content/en/build-with-claude/cache-diagnostics.md index 79d9ab6e56..55a3430afc 100644 --- a/content/en/build-with-claude/cache-diagnostics.md +++ b/content/en/build-with-claude/cache-diagnostics.md @@ -680,11 +680,16 @@ In streaming responses, `diagnostics` appears on the `message_start` event. $diagnostics = null; foreach ($stream as $event) { - if ($event instanceof BetaRawMessageStartEvent) { - // diagnostics arrives on the message_start event's embedded BetaMessage - $diagnostics = $event->message->diagnostics; - } elseif ($event instanceof BetaRawContentBlockDeltaEvent && $event->delta instanceof BetaTextDelta) { - echo $event->delta->text; + switch (true) { + case $event instanceof \Anthropic\Beta\Messages\BetaRawMessageStartEvent: + // diagnostics arrives on the message_start event's embedded BetaMessage + $diagnostics = $event->message->diagnostics; + break; + case $event instanceof \Anthropic\Beta\Messages\BetaRawContentBlockDeltaEvent: + if ($event->delta instanceof \Anthropic\Beta\Messages\BetaTextDelta) { + echo $event->delta->text; + } + break; } } echo PHP_EOL; diff --git a/content/en/build-with-claude/claude-in-amazon-bedrock.md b/content/en/build-with-claude/claude-in-amazon-bedrock.md index 7f97b67152..04741a1fcb 100644 --- a/content/en/build-with-claude/claude-in-amazon-bedrock.md +++ b/content/en/build-with-claude/claude-in-amazon-bedrock.md @@ -102,16 +102,22 @@ Anthropic's [client SDKs](https://platform.claude.com/docs/en/cli-sdks-libraries ```kotlin - implementation("com.anthropic:anthropic-java-bedrock:2.60.0") + implementation("com.anthropic:anthropic-java:2.63.0") + implementation("com.anthropic:anthropic-java-bedrock:2.63.0") ``` ```xml + + com.anthropic + anthropic-java + 2.63.0 + com.anthropic anthropic-java-bedrock - 2.60.0 + 2.63.0 ``` diff --git a/content/en/build-with-claude/claude-in-microsoft-foundry.md b/content/en/build-with-claude/claude-in-microsoft-foundry.md index 05e074db3b..db289cb8e6 100644 --- a/content/en/build-with-claude/claude-in-microsoft-foundry.md +++ b/content/en/build-with-claude/claude-in-microsoft-foundry.md @@ -77,7 +77,8 @@ Anthropic's [client SDKs](https://platform.claude.com/docs/en/cli-sdks-libraries ```kotlin - implementation("com.anthropic:anthropic-java-foundry:2.60.0") + implementation("com.anthropic:anthropic-java:2.63.0") + implementation("com.anthropic:anthropic-java-foundry:2.63.0") // For Entra ID authentication, also add the Azure Identity library implementation("com.azure:azure-identity:1.18.3") @@ -86,10 +87,15 @@ Anthropic's [client SDKs](https://platform.claude.com/docs/en/cli-sdks-libraries ```xml + + com.anthropic + anthropic-java + 2.63.0 + com.anthropic anthropic-java-foundry - 2.60.0 + 2.63.0 diff --git a/content/en/build-with-claude/claude-on-amazon-bedrock-legacy.md b/content/en/build-with-claude/claude-on-amazon-bedrock-legacy.md index f172041256..aa8449dcb2 100644 --- a/content/en/build-with-claude/claude-on-amazon-bedrock-legacy.md +++ b/content/en/build-with-claude/claude-on-amazon-bedrock-legacy.md @@ -54,14 +54,20 @@ Anthropic's [client SDKs](https://platform.claude.com/docs/en/cli-sdks-libraries ```groovy Gradle - implementation("com.anthropic:anthropic-java-bedrock:2.60.0") + implementation("com.anthropic:anthropic-java:2.63.0") + implementation("com.anthropic:anthropic-java-bedrock:2.63.0") ``` ```xml Maven + + com.anthropic + anthropic-java + 2.63.0 + com.anthropic anthropic-java-bedrock - 2.60.0 + 2.63.0 ``` diff --git a/content/en/build-with-claude/claude-on-vertex-ai.md b/content/en/build-with-claude/claude-on-vertex-ai.md index ac1e7e5bc7..3315823b7b 100644 --- a/content/en/build-with-claude/claude-on-vertex-ai.md +++ b/content/en/build-with-claude/claude-on-vertex-ai.md @@ -45,20 +45,20 @@ First, install Anthropic's [client SDK](https://platform.claude.com/docs/en/cli- ```groovy Gradle - implementation("com.anthropic:anthropic-java:2.60.0") - implementation("com.anthropic:anthropic-java-vertex:2.60.0") + implementation("com.anthropic:anthropic-java:2.63.0") + implementation("com.anthropic:anthropic-java-vertex:2.63.0") ``` ```xml Maven com.anthropic anthropic-java - 2.60.0 + 2.63.0 com.anthropic anthropic-java-vertex - 2.60.0 + 2.63.0 ``` diff --git a/content/en/build-with-claude/claude-platform-on-aws.md b/content/en/build-with-claude/claude-platform-on-aws.md index 1678693c64..a926d63690 100644 --- a/content/en/build-with-claude/claude-platform-on-aws.md +++ b/content/en/build-with-claude/claude-platform-on-aws.md @@ -14,7 +14,7 @@ Claude Platform on AWS gives you the full Anthropic platform experience, includi Claude models run on Anthropic-managed infrastructure. This is a commercial integration for billing and access through AWS. Anthropic is the data processor for inference inputs and outputs. AWS processes billing and identity metadata under the marketplace model. Customers using Claude through Claude Platform on AWS are subject to Anthropic's [data use terms](https://www.anthropic.com/legal). -Claude Platform on AWS has the following operational characteristics: data might not reside in AWS, inference might route to Anthropic's primary cloud, and subservices might change without notice. Set the [`inference_geo`](https://platform.claude.com/docs/en/build-with-claude/claude-platform-on-aws#data-residency) parameter per request to pin inference to a specific geography. +Anthropic uses AWS infrastructure to process your API requests, run model inference, and store your workspace content (such as prompts, outputs, files, Skills, and batches). For workspaces created before September 18, 2026, 00:00 UTC, Anthropic might process requests, store data, and run inference outside AWS. In either case, subservices might change without notice. Set the [`inference_geo`](https://platform.claude.com/docs/en/build-with-claude/claude-platform-on-aws#data-residency) parameter per request to pin inference to a specific geography. Claude Platform on AWS follows the same data retention policy as the first-party Claude API. Zero Data Retention (ZDR) is available on request. Contact your Anthropic account representative to enable it for your organization. @@ -72,7 +72,7 @@ Setting up Claude Platform on AWS happens in four phases: sign up on the AWS Con If your organization has a private offer from Anthropic, the Console looks it up and prompts you to accept it in AWS Marketplace. See [Private offers](https://platform.claude.com/docs/en/about-claude/pricing#private-offers) for details. - If you use Claude Platform on AWS, your content (such as prompts and completions) is processed by Anthropic outside of AWS. See Anthropic's [data use policies](https://www.anthropic.com/legal) for details on how content and metadata are processed and stored. + When you use Claude Platform on AWS, Anthropic processes and stores your content (such as prompts and outputs) on AWS infrastructure. For workspaces created before September 18, 2026, 00:00 UTC, Anthropic might process and store that content outside AWS. Anthropic's [data use policies](https://www.anthropic.com/legal) describe how content and metadata are processed and stored. @@ -111,7 +111,7 @@ Plan a move from an existing organization as a cutover to a new one: * **Create the new organization first.** Sign up through the AWS Console (see [Set up your account](https://platform.claude.com/docs/en/build-with-claude/claude-platform-on-aws#set-up-your-account)). If your move involves a private offer, complete sign-up before the offer is accepted: discounts apply from acceptance, not retroactively. See [Private offers](https://platform.claude.com/docs/en/about-claude/pricing#private-offers). * **Recreate access and configuration.** API keys, workspaces, and Claude Console settings don't carry over from an existing organization. Create workspaces in the new organization and switch your applications to [Claude Platform on AWS authentication](https://platform.claude.com/docs/en/build-with-claude/claude-platform-on-aws#authentication). -* **Update your integration.** Claude Platform on AWS serves the Claude API (`/v1/{endpoint}`), so request and response shapes are unchanged from the first-party Claude API. What changes is the base URL, the authentication method, and the required `anthropic-workspace-id` header; see [Making requests](https://platform.claude.com/docs/en/build-with-claude/claude-platform-on-aws#making-requests). Some platform features differ; see [Features not supported](https://platform.claude.com/docs/en/build-with-claude/claude-platform-on-aws#features-not-supported). +* **Update your integration.** Claude Platform on AWS serves the Claude API (`/v1/{endpoint}`), so request and response shapes are unchanged from the first-party Claude API. What changes is the base URL, the authentication method, and the `anthropic-workspace-id` header on inference and resource requests; see [Making requests](https://platform.claude.com/docs/en/build-with-claude/claude-platform-on-aws#making-requests). Some platform features differ; see [Features not supported](https://platform.claude.com/docs/en/build-with-claude/claude-platform-on-aws#features-not-supported). * **Cut over on your own schedule.** The new organization is independent of your existing one, and both can serve traffic in parallel. There's no need for a hard cutover: shift workloads gradually until all of your traffic is on the new organization. Once the new organization is running, the differences are concentrated in billing and authentication, which are handled through AWS: @@ -305,14 +305,20 @@ Anthropic's [client SDKs](https://platform.claude.com/docs/en/cli-sdks-libraries ```kotlin Gradle - implementation("com.anthropic:anthropic-java-aws:2.60.0") + implementation("com.anthropic:anthropic-java:2.63.0") + implementation("com.anthropic:anthropic-java-aws:2.63.0") ``` ```xml Maven + + com.anthropic + anthropic-java + 2.63.0 + com.anthropic anthropic-java-aws - 2.60.0 + 2.63.0 ``` @@ -339,16 +345,16 @@ Anthropic's [client SDKs](https://platform.claude.com/docs/en/cli-sdks-libraries The following models are available on Claude Platform on AWS: | Model | Model ID | -| ----------------- | ----------------- | +| :---------------- | :---------------- | | Claude Fable 5.1 | claude-fable-5-1 | | Claude Fable 5 | claude-fable-5 | | Claude Opus 5 | claude-opus-5 | | Claude Opus 4.8 | claude-opus-4-8 | | Claude Opus 4.7 | claude-opus-4-7 | | Claude Opus 4.6 | claude-opus-4-6 | +| Claude Opus 4.5 | claude-opus-4-5 | | Claude Sonnet 5 | claude-sonnet-5 | | Claude Sonnet 4.6 | claude-sonnet-4-6 | -| Claude Opus 4.5 | claude-opus-4-5 | | Claude Sonnet 4.5 | claude-sonnet-4-5 | | Claude Haiku 4.5 | claude-haiku-4-5 | @@ -362,7 +368,7 @@ New models typically launch on Claude Platform on AWS the same day as the first- ## Making requests -Claude Platform on AWS uses the same API endpoints as the first-party Claude API. The differences are the base URL, the authentication method, and a required `anthropic-workspace-id` header that identifies which [workspace](https://platform.claude.com/docs/en/build-with-claude/claude-platform-on-aws#workspaces) the request targets. +Claude Platform on AWS uses the same API endpoints as the first-party Claude API. The differences are the base URL, the authentication method, and the `anthropic-workspace-id` header, which identifies the [workspace](https://platform.claude.com/docs/en/build-with-claude/claude-platform-on-aws#workspaces) a request targets. The header is required on inference and resource requests, such as calls to the Messages API, Models API, Files API, and Claude Managed Agents endpoints. Requests to the [Admin API](https://platform.claude.com/docs/en/manage-claude/admin-api) workspace and external key endpoints don't require it. Before running these examples, complete the steps in [Before making API calls](https://platform.claude.com/docs/en/build-with-claude/claude-platform-on-aws#before-making-api-calls). @@ -774,7 +780,7 @@ See [IAM policies](https://platform.claude.com/docs/en/build-with-claude/claude- ### Managing workspaces -Create additional workspaces, rename a workspace, or archive a workspace from the AWS Console **Workspaces** page or with the [Admin API](https://platform.claude.com/docs/en/manage-claude/admin-api) workspace endpoints. A new workspace is bound to the AWS region of the endpoint you call to create it (see [Workspace scoping](https://platform.claude.com/docs/en/build-with-claude/claude-platform-on-aws#workspace-scoping)). With the Admin role, you can also create, rename, and archive workspaces from the Claude Console **Workspaces** page. +Create additional workspaces, rename a workspace, or archive a workspace from the AWS Console **Workspaces** page or with the [Admin API](https://platform.claude.com/docs/en/manage-claude/admin-api) workspace endpoints. These endpoints don't require the `anthropic-workspace-id` header. Create and list act on the organization; get, update, and archive take the workspace ID in the URL path. A new workspace is bound to the AWS region of the endpoint you call to create it (see [Workspace scoping](https://platform.claude.com/docs/en/build-with-claude/claude-platform-on-aws#workspace-scoping)). With the Admin role, you can also create, rename, and archive workspaces from the Claude Console **Workspaces** page. ## Using the Claude Console @@ -824,7 +830,7 @@ The Claude Console does not support organization switching for Claude Platform o Organizations on Claude Platform on AWS are placed on the Start tier. Anthropic manages rate limits directly, not through AWS quota systems. -Organizations on Claude Platform on AWS do not move between usage tiers automatically. Usage-based tier advancement applies to first-party Claude API organizations, not to organizations billed through AWS Marketplace. The self-service **Request rate limit increase** flow in the Claude Console is also not available: the Rate limits page directs you to your Anthropic account representative instead. +Organizations on Claude Platform on AWS can move to a higher usage tier automatically as they build a history of paid AWS Marketplace invoices. The self-service **Request rate limit increase** flow in the Claude Console is not available: the Rate limits page directs you to your Anthropic account representative instead. To request higher limits, contact your Anthropic account representative or [Anthropic support](https://support.claude.com). Include the following in your request: @@ -1044,7 +1050,7 @@ The migration delta depends on which Bedrock integration you're coming from. The | **SDK package** | `anthropic[bedrock]`, `@anthropic-ai/bedrock-sdk`, and others | `anthropic[bedrock]`, `@anthropic-ai/bedrock-sdk`, or AWS SDK | `anthropic[aws]`, `@anthropic-ai/aws-sdk`, and others (see [Install an SDK](https://platform.claude.com/docs/en/build-with-claude/claude-platform-on-aws#install-an-sdk)) | | **SigV4 service name** | `bedrock-mantle` | `bedrock` | `aws-external-anthropic` | | **Streaming format** | SSE | AWS EventStream | SSE (same as Claude API) | -| **Workspace header** | Not applicable | Not applicable | `anthropic-workspace-id` required | +| **Workspace header** | Not applicable | Not applicable | `anthropic-workspace-id`, required on inference and resource requests | | **Region availability** | See [Amazon Bedrock regions](https://docs.aws.amazon.com/bedrock/latest/userguide/bedrock-regions.html) | See [Amazon Bedrock regions](https://docs.aws.amazon.com/bedrock/latest/userguide/bedrock-regions.html) | All AWS commercial regions | | **Anthropic organization** | None required | None required | New organization created at sign-up. Existing organizations can't be converted (see [Moving from an existing Anthropic organization](https://platform.claude.com/docs/en/build-with-claude/claude-platform-on-aws#moving-from-an-existing-anthropic-organization)) | diff --git a/content/en/build-with-claude/compaction.md b/content/en/build-with-claude/compaction.md index 9047839093..4495dc56c6 100644 --- a/content/en/build-with-claude/compaction.md +++ b/content/en/build-with-claude/compaction.md @@ -1755,17 +1755,22 @@ The compaction block streams differently from text blocks. You receive a `conten context_management={"edits": [{"type": "compact_20260112"}]}, ) as stream: for event in stream: - if event.type == "content_block_start": - if event.content_block.type == "compaction": - print("Compaction started...") - elif event.content_block.type == "text": - print("Text response started...") - - elif event.type == "content_block_delta": - if event.delta.type == "compaction_delta": - print(f"Compaction complete: {len(event.delta.content or '')} chars") - elif event.delta.type == "text_delta": - print(event.delta.text, end="", flush=True) + match event.type: + case "content_block_start": + block = event.content_block + match block.type: + case "compaction": + print("Compaction started...") + case "text": + print("Text response started...") + + case "content_block_delta": + delta = event.delta + match delta.type: + case "compaction_delta": + print(f"Compaction complete: {len(delta.content or '')} chars") + case "text_delta": + print(delta.text, end="", flush=True) # Get the final accumulated message message = stream.get_final_message() @@ -1789,18 +1794,27 @@ The compaction block streams differently from text blocks. You receive a `conten }); for await (const event of stream) { - if (event.type === "content_block_start") { - if (event.content_block.type === "compaction") { - console.log("Compaction started..."); - } else if (event.content_block.type === "text") { - console.log("Text response started..."); - } - } else if (event.type === "content_block_delta") { - if (event.delta.type === "compaction_delta") { - console.log(`Compaction complete: ${event.delta.content?.length ?? 0} chars`); - } else if (event.delta.type === "text_delta") { - process.stdout.write(event.delta.text); - } + switch (event.type) { + case "content_block_start": + switch (event.content_block.type) { + case "compaction": + console.log("Compaction started..."); + break; + case "text": + console.log("Text response started..."); + break; + } + break; + case "content_block_delta": + switch (event.delta.type) { + case "compaction_delta": + console.log(`Compaction complete: ${event.delta.content?.length ?? 0} chars`); + break; + case "text_delta": + process.stdout.write(event.delta.text); + break; + } + break; } } @@ -1935,6 +1949,13 @@ The compaction block streams differently from text blocks. You receive a `conten ``` ```php PHP + use Anthropic\Beta\Messages\BetaCompactionBlock; + use Anthropic\Beta\Messages\BetaCompactionContentBlockDelta; + use Anthropic\Beta\Messages\BetaRawContentBlockDeltaEvent; + use Anthropic\Beta\Messages\BetaRawContentBlockStartEvent; + use Anthropic\Beta\Messages\BetaTextBlock; + use Anthropic\Beta\Messages\BetaTextDelta; + $client = new Client(); $messages = [['role' => 'user', 'content' => 'Hello, Claude']]; @@ -1951,18 +1972,27 @@ The compaction block streams differently from text blocks. You receive a `conten ); foreach ($stream as $event) { - if ($event->type === 'content_block_start') { - if ($event->contentBlock->type === 'compaction') { - echo "Compaction started...\n"; - } elseif ($event->contentBlock->type === 'text') { - echo "Text response started...\n"; - } - } elseif ($event->type === 'content_block_delta') { - if ($event->delta->type === 'compaction_delta') { - echo "Compaction complete: " . strlen($event->delta->content ?? '') . " chars\n"; - } elseif ($event->delta->type === 'text_delta') { - echo $event->delta->text; - } + switch (true) { + case $event instanceof BetaRawContentBlockStartEvent: + switch (true) { + case $event->contentBlock instanceof BetaCompactionBlock: + echo "Compaction started...\n"; + break; + case $event->contentBlock instanceof BetaTextBlock: + echo "Text response started...\n"; + break; + } + break; + case $event instanceof BetaRawContentBlockDeltaEvent: + switch (true) { + case $event->delta instanceof BetaCompactionContentBlockDelta: + echo "Compaction complete: " . strlen($event->delta->content ?? '') . " chars\n"; + break; + case $event->delta instanceof BetaTextDelta: + echo $event->delta->text; + break; + } + break; } } ``` @@ -1982,18 +2012,21 @@ The compaction block streams differently from text blocks. You receive a `conten ) stream.each do |event| - case event.type - when :content_block_start - if event.content_block.type == :compaction + case event + when Anthropic::Models::BetaRawContentBlockStartEvent + case event.content_block + when Anthropic::Models::BetaCompactionBlock puts "Compaction started..." - elsif event.content_block.type == :text + when Anthropic::Models::BetaTextBlock puts "Text response started..." end - when :content_block_delta - if event.delta.type == :compaction_delta - puts "Compaction complete: #{(event.delta.content || "").length} chars" - elsif event.delta.type == :text_delta - print event.delta.text + when Anthropic::Models::BetaRawContentBlockDeltaEvent + delta = event.delta + case delta + when Anthropic::Models::BetaCompactionContentBlockDelta + puts "Compaction complete: #{(delta.content || "").length} chars" + when Anthropic::Models::BetaTextDelta + print delta.text end end end @@ -3421,10 +3454,11 @@ Send the `compact-2026-09-04` beta header on the request that asks for the summa ### Request a summary -Send the conversation as it stands with `"compaction": {"type": "summarize"}`. The API summarizes every message in the request once, generates no reply after it, and returns the block alone with `stop_reason` `"compaction"`. Send the same `system` prompt and `tools` that you use for the rest of the conversation. The summarizer reads them, and on models with preserved thinking, the turns you keep stay valid only if they match: +Send the conversation as it stands with `"compaction": {"type": "summarize"}`. The API summarizes every message in the request once, generates no reply after it, and returns the block alone with `stop_reason` `"compaction"`. Send the same `system` prompt and `tools` that you use for the rest of the conversation. The summarizer reads them, and on models with preserved thinking, the turns you keep stay valid only if they match. The conversation in this example has no `system` prompt or tools, so the request sends neither: - + ```bash cURL + # max_tokens caps the whole call, including any thinking, so allow several thousand tokens. curl https://api.anthropic.com/v1/messages \ -H "x-api-key: $ANTHROPIC_API_KEY" \ -H "anthropic-version: 2023-06-01" \ @@ -3450,6 +3484,7 @@ Send the conversation as it stands with `"compaction": {"type": "summarize"}`. T ```yaml model: claude-opus-5 + # max_tokens caps the whole call, including any thinking, so allow several thousand tokens. max_tokens: 4096 messages: - role: user @@ -3463,6 +3498,206 @@ Send the conversation as it stands with `"compaction": {"type": "summarize"}`. T ``` + + ```python Python + from anthropic.types.beta import BetaMessageParam + + client = anthropic.Anthropic() + + history: list[BetaMessageParam] = [ + { + "role": "user", + "content": "I am building a recipe app. Help me name the main entities in the data model.", + }, + { + "role": "assistant", + "content": "Start with Recipe, Ingredient, and Step. Add a RecipeIngredient entry that holds the quantity and unit for each ingredient in a recipe.", + }, + {"role": "user", "content": "Good. Now suggest field names for Recipe."}, + ] + + response = client.beta.messages.create( + model="claude-opus-5", + # max_tokens caps the whole call, including any thinking, so allow several thousand tokens. + max_tokens=4096, + betas=["compact-2026-09-04"], + messages=history, + compaction={"type": "summarize"}, + ) + print(f"Stop reason: {response.stop_reason}") + ``` + + ```typescript TypeScript + const client = new Anthropic(); + + const history: Anthropic.Beta.Messages.BetaMessageParam[] = [ + { + role: "user", + content: "I am building a recipe app. Help me name the main entities in the data model." + }, + { + role: "assistant", + content: + "Start with Recipe, Ingredient, and Step. Add a RecipeIngredient entry that holds the quantity and unit for each ingredient in a recipe." + }, + { role: "user", content: "Good. Now suggest field names for Recipe." } + ]; + + const response = await client.beta.messages.create({ + model: "claude-opus-5", + // max_tokens caps the whole call, including any thinking, so allow several thousand tokens. + max_tokens: 4096, + betas: ["compact-2026-09-04"], + messages: history, + compaction: { type: "summarize" } + }); + console.log(`Stop reason: ${response.stop_reason}`); + ``` + + ```csharp C# + using Anthropic.Models.Beta; + using Anthropic.Models.Beta.Messages; + using Model = Anthropic.Models.Messages.Model; + + AnthropicClient client = new(); + + List history = + [ + new() + { + Role = Role.User, + Content = "I am building a recipe app. Help me name the main entities in the data model.", + }, + new() + { + Role = Role.Assistant, + Content = "Start with Recipe, Ingredient, and Step. Add a RecipeIngredient entry that holds the quantity and unit for each ingredient in a recipe.", + }, + new() { Role = Role.User, Content = "Good. Now suggest field names for Recipe." }, + ]; + + var response = await client.Beta.Messages.Create(new MessageCreateParams + { + Model = Model.ClaudeOpus5, + // max_tokens caps the whole call, including any thinking, so allow several thousand tokens. + MaxTokens = 4096, + Betas = [AnthropicBeta.Compact2026_09_04], + Messages = history, + Compaction = new BetaCompactionConfig(), // type defaults to "summarize" + }); + + Console.WriteLine($"Stop reason: {response.StopReason?.Raw()}"); + ``` + + ```go Go + client := anthropic.NewClient() + + history := []anthropic.BetaMessageParam{ + anthropic.NewBetaUserMessage(anthropic.NewBetaTextBlock("I am building a recipe app. Help me name the main entities in the data model.")), + { + Role: anthropic.BetaMessageParamRoleAssistant, + Content: []anthropic.BetaContentBlockParamUnion{anthropic.NewBetaTextBlock("Start with Recipe, Ingredient, and Step. Add a RecipeIngredient entry that holds the quantity and unit for each ingredient in a recipe.")}, + }, + anthropic.NewBetaUserMessage(anthropic.NewBetaTextBlock("Good. Now suggest field names for Recipe.")), + } + + response, err := client.Beta.Messages.New(context.TODO(), anthropic.BetaMessageNewParams{ + Model: anthropic.ModelClaudeOpus5, + // max_tokens caps the whole call, including any thinking, so allow several thousand tokens. + MaxTokens: 4096, + Betas: []anthropic.AnthropicBeta{anthropic.AnthropicBetaCompact2026_09_04}, + Messages: history, + Compaction: anthropic.BetaCompactionConfigUnionParam{ + OfSummarize: &anthropic.BetaSummarizeCompactionParam{}, + }, + }) + if err != nil { + log.Fatal(err) + } + fmt.Println("Stop reason:", response.StopReason) + ``` + + ```java Java + import com.anthropic.models.beta.AnthropicBeta; + import com.anthropic.models.beta.messages.BetaCompactionConfig; + import com.anthropic.models.beta.messages.MessageCreateParams; + + void main() { + var client = AnthropicOkHttpClient.fromEnv(); + + var params = MessageCreateParams.builder() + .model(Model.CLAUDE_OPUS_5) + // max_tokens caps the whole call, including any thinking, so allow several thousand tokens. + .maxTokens(4096) + .addBeta(AnthropicBeta.COMPACT_2026_09_04) + .addUserMessage("I am building a recipe app. Help me name the main entities in the data model.") + .addAssistantMessage("Start with Recipe, Ingredient, and Step. Add a RecipeIngredient entry that holds the quantity and unit for each ingredient in a recipe.") + .addUserMessage("Good. Now suggest field names for Recipe.") + .compaction(BetaCompactionConfig.builder().build()) // type defaults to "summarize" + .build(); + + var response = client.beta().messages().create(params); + response.stopReason().ifPresent(reason -> IO.println("Stop reason: " + reason)); + } + ``` + + ```php PHP + use Anthropic\Beta\AnthropicBeta; + use Anthropic\Beta\Messages\BetaCompactionConfig; + use Anthropic\Beta\Messages\BetaMessageParam; + use Anthropic\Beta\Messages\BetaMessageParam\Role; + + $client = new Client(); + + $history = [ + BetaMessageParam::with( + role: Role::USER, + content: 'I am building a recipe app. Help me name the main entities in the data model.', + ), + BetaMessageParam::with( + role: Role::ASSISTANT, + content: 'Start with Recipe, Ingredient, and Step. Add a RecipeIngredient entry that holds the quantity and unit for each ingredient in a recipe.', + ), + BetaMessageParam::with(role: Role::USER, content: 'Good. Now suggest field names for Recipe.'), + ]; + + $response = $client->beta->messages->create( + model: Model::CLAUDE_OPUS_5, + // max_tokens caps the whole call, including any thinking, so allow several thousand tokens. + maxTokens: 4096, + betas: [AnthropicBeta::COMPACT_2026_09_04], + messages: $history, + compaction: BetaCompactionConfig::with(), // type defaults to 'summarize' + ); + + echo "Stop reason: {$response->stopReason}", PHP_EOL; + ``` + + ```ruby Ruby + client = Anthropic::Client.new + + history = [ + { + role: "user", + content: "I am building a recipe app. Help me name the main entities in the data model." + }, + { + role: "assistant", + content: "Start with Recipe, Ingredient, and Step. Add a RecipeIngredient entry that holds the quantity and unit for each ingredient in a recipe." + }, + { role: "user", content: "Good. Now suggest field names for Recipe." } + ] + + response = client.beta.messages.create( + model: Anthropic::Model::CLAUDE_OPUS_5, + # max_tokens caps the whole call, including any thinking, so allow several thousand tokens. + max_tokens: 4096, + betas: [Anthropic::AnthropicBeta::COMPACT_2026_09_04], + messages: history, + compaction: { type: "summarize" } + ) + puts "Stop reason: #{response.stop_reason}" + ``` ```json Response diff --git a/content/en/build-with-claude/extended-thinking.md b/content/en/build-with-claude/extended-thinking.md index 0aa874fd7b..141b7da919 100644 --- a/content/en/build-with-claude/extended-thinking.md +++ b/content/en/build-with-claude/extended-thinking.md @@ -110,10 +110,13 @@ Here is an example of using extended thinking in the Messages API: // The response contains summarized thinking blocks and text blocks for (const block of response.content) { - if (block.type === "thinking") { - console.log(`\nThinking summary: ${block.thinking}`); - } else if (block.type === "text") { - console.log(`\nResponse: ${block.text}`); + switch (block.type) { + case "thinking": + console.log(`\nThinking summary: ${block.thinking}`); + break; + case "text": + console.log(`\nResponse: ${block.text}`); + break; } } ``` @@ -222,9 +225,9 @@ Here is an example of using extended thinking in the Messages API: // The response contains summarized thinking blocks and text blocks foreach ($response->content as $block) { - echo match ($block->type) { - 'thinking' => "\nThinking summary: {$block->thinking}", - 'text' => "\nResponse: {$block->text}", + echo match (true) { + $block instanceof \Anthropic\Messages\ThinkingBlock => "\nThinking summary: {$block->thinking}", + $block instanceof \Anthropic\Messages\TextBlock => "\nResponse: {$block->text}", default => '', }; } @@ -251,11 +254,10 @@ Here is an example of using extended thinking in the Messages API: # The response contains summarized thinking blocks and text blocks response.content.each do |block| case block - in {type: :thinking, thinking:} - puts "\nThinking summary: #{thinking}" - in {type: :text, text:} - puts "\nResponse: #{text}" - else + when Anthropic::Models::ThinkingBlock + puts "\nThinking summary: #{block.thinking}" + when Anthropic::Models::TextBlock + puts "\nResponse: #{block.text}" end end ``` diff --git a/content/en/build-with-claude/handling-stop-reasons.md b/content/en/build-with-claude/handling-stop-reasons.md index de15f26749..f11473635c 100644 --- a/content/en/build-with-claude/handling-stop-reasons.md +++ b/content/en/build-with-claude/handling-stop-reasons.md @@ -2078,21 +2078,23 @@ Make it a habit to check the `stop_reason` in your response handling logic: ```python Python def handle_response(response): - if response.stop_reason == "tool_use": - return handle_tool_use(response) - elif response.stop_reason == "max_tokens": - return handle_truncation(response) - elif response.stop_reason == "model_context_window_exceeded": - return handle_context_limit(response) - elif response.stop_reason == "pause_turn": - return handle_pause(response) - elif response.stop_reason == "refusal": - return handle_refusal(response) - else: - # Handle end_turn and other cases - return next( - (block.text for block in response.content if block.type == "text"), "" - ) + match response.stop_reason: + case "tool_use": + return handle_tool_use(response) + case "max_tokens": + return handle_truncation(response) + case "model_context_window_exceeded": + return handle_context_limit(response) + case "pause_turn": + return handle_pause(response) + case "refusal": + return handle_refusal(response) + case _: + # Handle end_turn and other cases + return next( + (block.text for block in response.content if block.type == "text"), + "", + ) ``` ```typescript TypeScript @@ -2653,10 +2655,11 @@ It's important to distinguish between `stop_reason` values and actual errors: except anthropic.APIStatusError as e: # Handle actual errors - if e.status_code == 429: - print("Rate limit exceeded") - elif e.status_code == 500: - print("Server error") + match e.status_code: + case 429: + print("Rate limit exceeded") + case 500: + print("Server error") ``` ```typescript TypeScript @@ -2676,10 +2679,13 @@ It's important to distinguish between `stop_reason` values and actual errors: } catch (err) { // Handle actual errors if (err instanceof Anthropic.APIError) { - if (err.status === 429) { - console.log("Rate limit exceeded"); - } else if (err.status === 500) { - console.log("Server error"); + switch (err.status) { + case 429: + console.log("Rate limit exceeded"); + break; + case 500: + console.log("Server error"); + break; } } else { throw err; @@ -2959,7 +2965,7 @@ When using streaming, `stop_reason` is: ); foreach ($stream as $event) { - if ($event instanceof RawMessageDeltaEvent && $event->delta->stopReason !== null) { + if ($event instanceof \Anthropic\Messages\RawMessageDeltaEvent && $event->delta->stopReason !== null) { echo "Stream ended with: {$event->delta->stopReason}", PHP_EOL; } } @@ -3458,17 +3464,22 @@ With the `model_context_window_exceeded` stop reason, you can request the maximu max_tokens=20000, # Python SDK requires streaming for max_tokens above ~21k ) - if response.stop_reason == "model_context_window_exceeded": - # Got the maximum possible tokens given input size - print( - f"Generated {response.usage.output_tokens} tokens (context limit reached)" - ) - elif response.stop_reason == "max_tokens": - # Got exactly the requested tokens - print(f"Generated {response.usage.output_tokens} tokens (max_tokens reached)") - else: - # Natural completion - print(f"Generated {response.usage.output_tokens} tokens (natural completion)") + match response.stop_reason: + case "model_context_window_exceeded": + # Got the maximum possible tokens given input size + print( + f"Generated {response.usage.output_tokens} tokens (context limit reached)" + ) + case "max_tokens": + # Got exactly the requested tokens + print( + f"Generated {response.usage.output_tokens} tokens (max_tokens reached)" + ) + case _: + # Natural completion + print( + f"Generated {response.usage.output_tokens} tokens (natural completion)" + ) return next((block.text for block in response.content if block.type == "text"), "") ``` @@ -3482,15 +3493,18 @@ With the `model_context_window_exceeded` stop reason, you can request the maximu }); const tokens = response.usage.output_tokens; - if (response.stop_reason === "model_context_window_exceeded") { - // Got the maximum possible tokens given input size - console.log(`Generated ${tokens} tokens (context limit reached)`); - } else if (response.stop_reason === "max_tokens") { - // Got exactly the requested tokens - console.log(`Generated ${tokens} tokens (max_tokens reached)`); - } else { - // Natural completion - console.log(`Generated ${tokens} tokens (natural completion)`); + switch (response.stop_reason) { + case "model_context_window_exceeded": + // Got the maximum possible tokens given input size + console.log(`Generated ${tokens} tokens (context limit reached)`); + break; + case "max_tokens": + // Got exactly the requested tokens + console.log(`Generated ${tokens} tokens (max_tokens reached)`); + break; + default: + // Natural completion + console.log(`Generated ${tokens} tokens (natural completion)`); } const textBlock = response.content.find( diff --git a/content/en/build-with-claude/mid-conversation-effort-example.md b/content/en/build-with-claude/mid-conversation-effort-example.md index 6b5029b7d5..e38199746b 100644 --- a/content/en/build-with-claude/mid-conversation-effort-example.md +++ b/content/en/build-with-claude/mid-conversation-effort-example.md @@ -247,7 +247,6 @@ The example is a single file. The constants control the effort level, the fan-ou ```php PHP use Anthropic\Client; - use Anthropic\Messages\TextBlock; use Anthropic\Messages\ToolUseBlock; $client = new Client(); @@ -1413,15 +1412,15 @@ The bash handler runs the requested command with a timeout, captures combined st # so reshape each block to the request schema before echoing it back. def assistant_content_param(content) content.map do |block| - case block.type - when :tool_use + case block + when Anthropic::Models::ToolUseBlock input = parse_tool_input(block.input) {type: "tool_use", id: block.id, name: block.name, input: input} - when :text + when Anthropic::Models::TextBlock {type: "text", text: block.text} - when :thinking + when Anthropic::Models::ThinkingBlock {type: "thinking", thinking: block.thinking, signature: block.signature} - when :redacted_thinking then {type: "redacted_thinking", data: block.data} + when Anthropic::Models::RedactedThinkingBlock then {type: "redacted_thinking", data: block.data} else block.to_h end @@ -1469,13 +1468,14 @@ Each workflow subtask becomes its own small agent loop with the bash tool, runni for block in response.content: if block.type != "tool_use": continue - if block.name == "report_findings": - report = json.dumps(block.input, indent=2) - output, is_error = "Findings recorded.", False - elif block.name == "bash": - output, is_error = handle_bash_block(block) - else: - output, is_error = f"unknown tool: {block.name}", True + match block.name: + case "report_findings": + report = json.dumps(block.input, indent=2) + output, is_error = "Findings recorded.", False + case "bash": + output, is_error = handle_bash_block(block) + case _: + output, is_error = f"unknown tool: {block.name}", True tool_results.append( { "type": "tool_result", @@ -1535,15 +1535,18 @@ Each workflow subtask becomes its own small agent loop with the bash tool, runni } let output: string; let isError: boolean; - if (block.name === "report_findings") { - report = JSON.stringify(block.input, null, 2); - output = "Findings recorded."; - isError = false; - } else if (block.name === "bash") { - ({ output, isError } = await handleBashBlock(block)); - } else { - output = `unknown tool: ${block.name}`; - isError = true; + switch (block.name) { + case "report_findings": + report = JSON.stringify(block.input, null, 2); + output = "Findings recorded."; + isError = false; + break; + case "bash": + ({ output, isError } = await handleBashBlock(block)); + break; + default: + output = `unknown tool: ${block.name}`; + isError = true; } toolResults.push({ type: "tool_result", @@ -1832,7 +1835,7 @@ Each workflow subtask becomes its own small agent loop with the bash tool, runni } } foreach ($jsonBuffers as $index => $buffer) { - if ($buffer !== '' && $blocks[$index] instanceof ToolUseBlock) { + if ($buffer !== '' && $blocks[$index] instanceof \Anthropic\Messages\ToolUseBlock) { $decoded = json_decode($buffer, true); $blocks[$index] = $blocks[$index]->withInput(is_array($decoded) ? $decoded : []); } @@ -1869,7 +1872,7 @@ Each workflow subtask becomes its own small agent loop with the bash tool, runni if ($stopReason !== 'tool_use') { $text = ''; foreach ($content as $block) { - if ($block instanceof TextBlock) { + if ($block instanceof \Anthropic\Messages\TextBlock) { $text .= $block->text; } } @@ -1881,7 +1884,7 @@ Each workflow subtask becomes its own small agent loop with the bash tool, runni $report = null; $toolResults = []; foreach ($content as $block) { - if (!$block instanceof ToolUseBlock) { + if (!$block instanceof \Anthropic\Messages\ToolUseBlock) { continue; } if ($block->name === 'report_findings') { @@ -3024,12 +3027,13 @@ The agent appends the user's message first, then any system messages that are du for block in response.content: if block.type != "tool_use": continue - if block.name == "Workflow": - output, is_error = run_workflow(self.model, block.input.get("subtasks", [])) - elif block.name == "bash": - output, is_error = handle_bash_block(block) - else: - output, is_error = f"unknown tool: {block.name}", True + match block.name: + case "Workflow": + output, is_error = run_workflow(self.model, block.input.get("subtasks", [])) + case "bash": + output, is_error = handle_bash_block(block) + case _: + output, is_error = f"unknown tool: {block.name}", True tool_results.append( { "type": "tool_result", @@ -3142,14 +3146,18 @@ The agent appends the user's message first, then any system messages that are du } let output: string; let isError: boolean; - if (block.name === "Workflow") { - const input = block.input as { subtasks?: unknown }; - ({ output, isError } = await runWorkflow(this.model, input.subtasks ?? [])); - } else if (block.name === "bash") { - ({ output, isError } = await handleBashBlock(block)); - } else { - output = `unknown tool: ${block.name}`; - isError = true; + switch (block.name) { + case "Workflow": { + const input = block.input as { subtasks?: unknown }; + ({ output, isError } = await runWorkflow(this.model, input.subtasks ?? [])); + break; + } + case "bash": + ({ output, isError } = await handleBashBlock(block)); + break; + default: + output = `unknown tool: ${block.name}`; + isError = true; } toolResults.push({ type: "tool_result", @@ -3642,7 +3650,7 @@ The agent appends the user's message first, then any system messages that are du if ($stopReason !== 'tool_use') { $text = ''; foreach ($content as $block) { - if ($block instanceof TextBlock) { + if ($block instanceof \Anthropic\Messages\TextBlock) { $text .= $block->text; } } @@ -3656,7 +3664,7 @@ The agent appends the user's message first, then any system messages that are du $toolResults = []; foreach ($content as $block) { - if (!$block instanceof ToolUseBlock) { + if (!$block instanceof \Anthropic\Messages\ToolUseBlock) { continue; } if ($block->name === 'Workflow') { diff --git a/content/en/build-with-claude/streaming.md b/content/en/build-with-claude/streaming.md index 1bebd5bbb2..1af90e4aeb 100644 --- a/content/en/build-with-claude/streaming.md +++ b/content/en/build-with-claude/streaming.md @@ -1013,10 +1013,12 @@ This request enables thinking with streaming. The `display: "summarized"` settin ) as stream: for event in stream: if event.type == "content_block_delta": - if event.delta.type == "thinking_delta": - print(event.delta.thinking, end="", flush=True) - elif event.delta.type == "text_delta": - print(event.delta.text, end="", flush=True) + delta = event.delta + match delta.type: + case "thinking_delta": + print(delta.thinking, end="", flush=True) + case "text_delta": + print(delta.text, end="", flush=True) ``` ```typescript TypeScript @@ -1036,10 +1038,13 @@ This request enables thinking with streaming. The `display: "summarized"` settin for await (const event of stream) { if (event.type === "content_block_delta") { - if (event.delta.type === "thinking_delta") { - process.stdout.write(event.delta.thinking); - } else if (event.delta.type === "text_delta") { - process.stdout.write(event.delta.text); + switch (event.delta.type) { + case "thinking_delta": + process.stdout.write(event.delta.thinking); + break; + case "text_delta": + process.stdout.write(event.delta.text); + break; } } } @@ -1154,11 +1159,13 @@ This request enables thinking with streaming. The `display: "summarized"` settin ) stream.each do |event| - if event.type == :content_block_delta - if event.delta.type == :thinking_delta - print(event.delta.thinking) - elsif event.delta.type == :text_delta - print(event.delta.text) + if event.is_a?(Anthropic::Models::RawContentBlockDeltaEvent) + delta = event.delta + case delta + when Anthropic::Models::ThinkingDelta + print(delta.thinking) + when Anthropic::Models::TextDelta + print(delta.text) end end end diff --git a/content/en/build-with-claude/structured-outputs.md b/content/en/build-with-claude/structured-outputs.md index fafa2311aa..9fcbb8b428 100644 --- a/content/en/build-with-claude/structured-outputs.md +++ b/content/en/build-with-claude/structured-outputs.md @@ -2546,10 +2546,13 @@ When combined, Claude can call tools with guaranteed-valid parameters AND return // Claude may call the tool first (tool_use) or respond with JSON (text) console.log("Stop reason:", response.stop_reason); for (const block of response.content) { - if (block.type === "tool_use") { - console.log(`Tool call: ${block.name}(${JSON.stringify(block.input)})`); - } else if (block.type === "text") { - console.log("Response:", block.text); + switch (block.type) { + case "tool_use": + console.log(`Tool call: ${block.name}(${JSON.stringify(block.input)})`); + break; + case "text": + console.log("Response:", block.text); + break; } } ``` diff --git a/content/en/build-with-claude/thinking.md b/content/en/build-with-claude/thinking.md index 6973efb322..05b5c12253 100644 --- a/content/en/build-with-claude/thinking.md +++ b/content/en/build-with-claude/thinking.md @@ -98,10 +98,11 @@ On Claude Opus 4.8, Claude Opus 4.7, Claude Opus 4.6, and Claude Sonnet 4.6, thi ) for block in response.content: - if block.type == "thinking": - print(f"\nThinking: {block.thinking}") - elif block.type == "text": - print(f"\nResponse: {block.text}") + match block.type: + case "thinking": + print(f"\nThinking: {block.thinking}") + case "text": + print(f"\nResponse: {block.text}") ``` ```typescript TypeScript @@ -123,10 +124,13 @@ On Claude Opus 4.8, Claude Opus 4.7, Claude Opus 4.6, and Claude Sonnet 4.6, thi }); for (const block of response.content) { - if (block.type === "thinking") { - console.log(`\nThinking: ${block.thinking}`); - } else if (block.type === "text") { - console.log(`\nResponse: ${block.text}`); + switch (block.type) { + case "thinking": + console.log(`\nThinking: ${block.thinking}`); + break; + case "text": + console.log(`\nResponse: ${block.text}`); + break; } } ``` @@ -220,6 +224,9 @@ On Claude Opus 4.8, Claude Opus 4.7, Claude Opus 4.6, and Claude Sonnet 4.6, thi ``` ```php PHP + use Anthropic\Messages\TextBlock; + use Anthropic\Messages\ThinkingBlock; + $client = new Client(); $message = $client->messages->create( @@ -235,10 +242,13 @@ On Claude Opus 4.8, Claude Opus 4.7, Claude Opus 4.6, and Claude Sonnet 4.6, thi ); foreach ($message->content as $block) { - if ($block->type === 'thinking') { - echo "\nThinking: " . $block->thinking; - } elseif ($block->type === 'text') { - echo "\nResponse: " . $block->text; + switch (true) { + case $block instanceof ThinkingBlock: + echo "\nThinking: " . $block->thinking; + break; + case $block instanceof TextBlock: + echo "\nResponse: " . $block->text; + break; } } ``` @@ -262,10 +272,10 @@ On Claude Opus 4.8, Claude Opus 4.7, Claude Opus 4.6, and Claude Sonnet 4.6, thi ) message.content.each do |block| - case block.type - when :thinking + case block + when Anthropic::Models::ThinkingBlock puts "\nThinking: #{block.thinking}" - when :text + when Anthropic::Models::TextBlock puts "\nResponse: #{block.text}" end end @@ -552,13 +562,16 @@ The following examples stream a response with adaptive thinking, printing thinki ], ) as stream: for event in stream: - if event.type == "content_block_start": - print(f"\nStarting {event.content_block.type} block...") - elif event.type == "content_block_delta": - if event.delta.type == "thinking_delta": - print(event.delta.thinking, end="", flush=True) - elif event.delta.type == "text_delta": - print(event.delta.text, end="", flush=True) + match event.type: + case "content_block_start": + print(f"\nStarting {event.content_block.type} block...") + case "content_block_delta": + delta = event.delta + match delta.type: + case "thinking_delta": + print(delta.thinking, end="", flush=True) + case "text_delta": + print(delta.text, end="", flush=True) ``` ```typescript TypeScript @@ -572,14 +585,20 @@ The following examples stream a response with adaptive thinking, printing thinki }); for await (const event of stream) { - if (event.type === "content_block_start") { - console.log(`\nStarting ${event.content_block.type} block...`); - } else if (event.type === "content_block_delta") { - if (event.delta.type === "thinking_delta") { - process.stdout.write(event.delta.thinking); - } else if (event.delta.type === "text_delta") { - process.stdout.write(event.delta.text); - } + switch (event.type) { + case "content_block_start": + console.log(`\nStarting ${event.content_block.type} block...`); + break; + case "content_block_delta": + switch (event.delta.type) { + case "thinking_delta": + process.stdout.write(event.delta.thinking); + break; + case "text_delta": + process.stdout.write(event.delta.text); + break; + } + break; } } ``` @@ -667,22 +686,24 @@ The following examples stream a response with adaptive thinking, printing thinki try (var streamResponse = client.messages().createStreaming(params)) { streamResponse.stream().forEach(event -> { - if (event.contentBlockStart().isPresent()) { - var startEvent = event.contentBlockStart().get(); - var block = startEvent.contentBlock(); - if (block.isThinking()) { - IO.println("\nStarting thinking block..."); - } else if (block.isText()) { - IO.println("\nStarting text block..."); + switch (event.type().value()) { + case CONTENT_BLOCK_START -> { + var startEvent = event.asContentBlockStart(); + var block = startEvent.contentBlock(); + switch (block.type().value()) { + case THINKING -> IO.println("\nStarting thinking block..."); + case TEXT -> IO.println("\nStarting text block..."); + } + } + case CONTENT_BLOCK_DELTA -> { + var deltaEvent = event.asContentBlockDelta(); + deltaEvent.delta().thinking().ifPresent(td -> + IO.print(td.thinking()) + ); + deltaEvent.delta().text().ifPresent(td -> + IO.print(td.text()) + ); } - } else if (event.contentBlockDelta().isPresent()) { - var deltaEvent = event.contentBlockDelta().get(); - deltaEvent.delta().thinking().ifPresent(td -> - IO.print(td.thinking()) - ); - deltaEvent.delta().text().ifPresent(td -> - IO.print(td.text()) - ); } }); } @@ -690,6 +711,11 @@ The following examples stream a response with adaptive thinking, printing thinki ``` ```php PHP + use Anthropic\Messages\RawContentBlockDeltaEvent; + use Anthropic\Messages\RawContentBlockStartEvent; + use Anthropic\Messages\TextDelta; + use Anthropic\Messages\ThinkingDelta; + $client = new Client(); $stream = $client->messages->createStream( @@ -702,14 +728,20 @@ The following examples stream a response with adaptive thinking, printing thinki ); foreach ($stream as $event) { - if ($event->type === 'content_block_start') { - echo "\nStarting {$event->contentBlock->type} block...\n"; - } elseif ($event->type === 'content_block_delta') { - if ($event->delta->type === 'thinking_delta') { - echo $event->delta->thinking; - } elseif ($event->delta->type === 'text_delta') { - echo $event->delta->text; - } + switch (true) { + case $event instanceof RawContentBlockStartEvent: + echo "\nStarting {$event->contentBlock->type} block...\n"; + break; + case $event instanceof RawContentBlockDeltaEvent: + switch (true) { + case $event->delta instanceof ThinkingDelta: + echo $event->delta->thinking; + break; + case $event->delta instanceof TextDelta: + echo $event->delta->text; + break; + } + break; } } ``` @@ -1131,22 +1163,23 @@ You can't prefill the assistant response while thinking is on. Forced tool use ( Each model accepts `max_tokens` up to the ceiling listed here. On the [Message Batches API](https://platform.claude.com/docs/en/build-with-claude/batch-processing#extended-output-beta), the `output-300k-2026-03-24` [beta header](https://platform.claude.com/docs/en/api/beta-headers) raises that ceiling for the models with a batches ceiling listed. -| Model | Max output tokens | Batches beta ceiling | -| --------------------- | ----------------- | -------------------- | -| Claude Fable 5.1 | 128k | — | -| Claude Mythos 5.1 | 128k | — | -| Claude Fable 5 | 128k | — | -| Claude Mythos 5 | 128k | — | -| Claude Mythos Preview | 128k | Not available | -| Claude Opus 5 | 128k | 300k | -| Claude Opus 4.8 | 128k | 300k | -| Claude Opus 4.7 | 128k | 300k | -| Claude Sonnet 5 | 128k | 300k | -| Claude Opus 4.6 | 128k | 300k | -| Claude Sonnet 4.6 | 128k | 300k | -| Claude Haiku 4.5 | 64k | Not available | -| Claude Sonnet 4.5 | 64k | Not available | -| Claude Opus 4.5 | 64k | Not available | +| Model | Max output tokens | Batches beta ceiling | +| :---------------- | :---------------- | :------------------- | +| Claude Fable 5.1 | 128K | — | +| Claude Mythos 5.1 | 128K | — | +| Claude Fable 5 | 128K | — | +| Claude Mythos 5 | 128K | — | +| Claude Opus 5 | 128K | 300K | +| Claude Opus 4.8 | 128K | 300K | +| Claude Opus 4.7 | 128K | 300K | +| Claude Opus 4.6 | 128K | 300K | +| Claude Opus 4.5 | 64K | Not available | +| Claude Sonnet 5 | 128K | 300K | +| Claude Sonnet 4.6 | 128K | 300K | +| Claude Sonnet 4.5 | 64K | Not available | +| Claude Haiku 4.5 | 64K | Not available | + +[Claude Mythos Preview](https://anthropic.com/glasswing) accepts `max_tokens` up to 128K; the Batches beta ceiling is not available for it. See the [models overview](https://platform.claude.com/docs/en/models/overview) for limits on legacy models. diff --git a/content/en/claude_api_primer.md b/content/en/claude_api_primer.md index 09814b96bf..a14ff66199 100644 --- a/content/en/claude_api_primer.md +++ b/content/en/claude_api_primer.md @@ -294,10 +294,11 @@ When thinking is on, Claude creates `thinking` content blocks where it outputs i # The response contains summarized thinking blocks and text blocks for block in response.content: - if block.type == "thinking": - print(f"\nThinking summary: {block.thinking}") - elif block.type == "text": - print(f"\nResponse: {block.text}") + match block.type: + case "thinking": + print(f"\nThinking summary: {block.thinking}") + case "text": + print(f"\nResponse: {block.text}") ``` @@ -530,12 +531,13 @@ On older models that use manual extended thinking (Claude 4, 4.5, and Sonnet 4.6 ) for block in response.content: - if block.type == "thinking": - print(f"Thinking: {block.thinking}") - elif block.type == "tool_use": - print(f"Tool call: {block.name}({block.input})") - elif block.type == "text": - print(f"Response: {block.text}") + match block.type: + case "thinking": + print(f"Thinking: {block.thinking}") + case "tool_use": + print(f"Tool call: {block.name}({block.input})") + case "text": + print(f"Response: {block.text}") ``` diff --git a/content/en/cli-sdks-libraries/sdks/java.md b/content/en/cli-sdks-libraries/sdks/java.md index 409a2eb73d..8d01049211 100644 --- a/content/en/cli-sdks-libraries/sdks/java.md +++ b/content/en/cli-sdks-libraries/sdks/java.md @@ -15,7 +15,7 @@ The Anthropic Java SDK provides convenient access to the Claude API from applica ```kotlin - implementation("com.anthropic:anthropic-java:2.60.0") + implementation("com.anthropic:anthropic-java:2.63.0") ``` @@ -24,7 +24,7 @@ The Anthropic Java SDK provides convenient access to the Claude API from applica com.anthropic anthropic-java - 2.60.0 + 2.63.0 ``` @@ -1084,7 +1084,7 @@ The Java SDK supports the following platforms through separate dependencies that Use `BedrockMantleBackend` for new projects; `BedrockBackend` remains for existing applications using the Bedrock `InvokeModel` API. -Each `Backend` implementation is passed to the client with `.backend()` on `AnthropicOkHttpClient.builder()`. Each cloud backend pulls in its respective cloud-platform SDK classes as transitive dependencies. +The platform artifacts are add-ons to the base `com.anthropic:anthropic-java` dependency, which provides `AnthropicOkHttpClient`, so install both. Each `Backend` implementation is passed to the client with `.backend()` on `AnthropicOkHttpClient.builder()`. Each cloud backend pulls in its respective cloud-platform SDK classes as transitive dependencies. ## Advanced usage diff --git a/content/en/docs/claude-code/accessibility.md b/content/en/docs/claude-code/accessibility.md index a8c2dabf54..1c025c8027 100644 --- a/content/en/docs/claude-code/accessibility.md +++ b/content/en/docs/claude-code/accessibility.md @@ -10,8 +10,6 @@ Claude Code has a screen reader mode that replaces its visual terminal interface Screen reader mode is opt-in. If you use a screen magnifier, reduced motion, or a colorblind-friendly theme instead of a screen reader, set `CLAUDE_CODE_ACCESSIBILITY`, `prefersReducedMotion`, or `theme` from the [Accessibility settings](#accessibility-settings) table. Screen reader mode adapts the terminal interface only, so you don't need it in the VS Code extension's chat panel. On Claude Code v2.1.236 or later, the extension [announces conversation activity to your screen reader](/docs/en/vs-code#use-a-screen-reader) there without any setting. -Screen reader mode requires Claude Code v2.1.181 or later. Earlier versions reject the `--ax-screen-reader` flag with `error: unknown option '--ax-screen-reader'`. - ## Turn on screen reader mode Pick the method that matches how often you use a screen reader: diff --git a/content/en/docs/claude-code/agent-sdk/mcp.md b/content/en/docs/claude-code/agent-sdk/mcp.md index e29f3e05c0..b592bfcc84 100644 --- a/content/en/docs/claude-code/agent-sdk/mcp.md +++ b/content/en/docs/claude-code/agent-sdk/mcp.md @@ -146,7 +146,7 @@ Create a `.mcp.json` file at your project root. The file is picked up when the ` ## Connection timing -Claude Code registers the servers you pass in `options.mcpServers` at startup and emits the [init message](#error-handling) once the first-turn wait, if any, resolves. Without `options.mcpServers`, Claude Code waits 2 seconds for pending servers before the first turn, so servers loaded from [settings files](#from-a-config-file) such as `.mcp.json` commonly show `pending` at init. When each `options.mcpServers` server connects, and whether it delays the first turn, depends on its type: +Claude Code registers the servers you pass in `options.mcpServers` at startup and emits the [init message](#error-handling) once the first-turn wait, if any, resolves. Whether each `options.mcpServers` server delays the first turn, and when it connects, depends on its type: | Server type | Delays the first turn? | First-turn wait timeout | | :------------------------------------------------------------------------------------- | :----------------------------------------------------- | :------------------------------------------------------------------------------------------ | @@ -154,6 +154,17 @@ Claude Code registers the servers you pass in `options.mcpServers` at startup an | Remote server with a cached tool list, saved by Claude Code from a previous connection | No; the cached tools are available from the first turn | None; connects on its first tool call, and that deferred connect has its own timeout | | In-process [SDK server](#sdk-mcp-servers) | Yes, until it connects and lists its tools | None; the connect and tool listing requests each have their own timeout | +Servers loaded from [settings files](#from-a-config-file) such as `.mcp.json` or from plugins commonly show `pending` in the init message. When `options.mcpServers` holds a stdio, HTTP, or SSE server, the first turn waits for these pending servers too, up to `MCP_TIMEOUT`. When `options.mcpServers` is empty or holds only SDK servers, the first turn waits up to 2 seconds instead: + +* **With [tool search](/docs/en/agent-sdk/tool-search), the default**: the wait covers still-pending servers configured with [`alwaysLoad: true`](/docs/en/mcp#exempt-a-server-from-deferral) and not the rest. The rest keep connecting in the background. [Tool availability](/docs/en/mcp#tool-availability) describes how Claude reaches their tools once they connect. +* **Without tool search**: the wait covers every pending server. [Configure tool search](/docs/en/agent-sdk/tool-search#configure-tool-search) covers what turns tool search off. If you exclude the `ToolSearch` tool from the session, for example through `disallowedTools`, the session also runs without tool search. + +If you set `permissionPromptToolName`, the first turn also waits for that tool's server in every case, up to `MCP_TIMEOUT`. + +To set the first-turn wait yourself, add `CLAUDE_CODE_MCP_STARTUP_WAIT_MS` to the [`env` option](/docs/en/agent-sdk/configuration#set-environment-variables), for example `CLAUDE_CODE_MCP_STARTUP_WAIT_MS: "5000"`. The first turn then waits up to that many milliseconds for every pending server, whether or not tool search is available. This deadline also replaces the `MCP_TIMEOUT` first-turn wait for stdio, HTTP, and SSE servers in `options.mcpServers`. `CLAUDE_CODE_MCP_STARTUP_WAIT_MS` requires Claude Code v2.1.274 or later. + +Servers still pending when the wait ends keep connecting in the background. Set the variable to `0` to skip the wait. A `permissionPromptToolName` server keeps its own `MCP_TIMEOUT` wait regardless of the value. + To block startup itself at a separate, earlier phase than the first-turn wait, before the init message is sent: * Set [`MCP_CONNECTION_NONBLOCKING`](/docs/en/env-vars) to `0` to block on the whole connection batch. Claude Code caps that wait at 5 seconds by default. Adjust the cap with the [`MCP_CONNECT_TIMEOUT_MS`](/docs/en/env-vars) environment variable, in milliseconds. Servers still pending at that deadline keep connecting in the background. diff --git a/content/en/docs/claude-code/agent-sdk/modifying-system-prompts.md b/content/en/docs/claude-code/agent-sdk/modifying-system-prompts.md index e08617c6bb..f45575dc3d 100644 --- a/content/en/docs/claude-code/agent-sdk/modifying-system-prompts.md +++ b/content/en/docs/claude-code/agent-sdk/modifying-system-prompts.md @@ -136,7 +136,7 @@ For every code submission: Once created, activate output styles via: -* **CLI**: run `/config` and select an output style +* **CLI**: run `/output-style