diff --git a/content/.metadata.json b/content/.metadata.json
index 2de5b03c0..e035d647c 100644
--- a/content/.metadata.json
+++ b/content/.metadata.json
@@ -1,7 +1,7 @@
{
"metadata": {
"version": "2.0",
- "fetch_date": "2026-08-25T11:15:56.690451Z",
+ "fetch_date": "2026-08-25T16:22:40.242581Z",
"section": "all"
},
"items": [
@@ -51,8 +51,8 @@
"url": "https://platform.claude.com/docs/en/build-with-claude/working-with-messages",
"status": "success",
"path": "en/build-with-claude/working-with-messages.md",
- "sha256": "16e8551f84b42d7a9499707b8071e73aaaadddee7e4bbcf1f6c8edabbc4784ff",
- "size": 32757
+ "sha256": "aea04df5315ba868ec93b696ddde92026e5a641fbdcacd8509323f339b2d6d52",
+ "size": 32751
},
{
"url": "https://platform.claude.com/docs/en/build-with-claude/handling-stop-reasons",
@@ -65,8 +65,8 @@
"url": "https://platform.claude.com/docs/en/build-with-claude/refusals-and-fallback",
"status": "success",
"path": "en/build-with-claude/refusals-and-fallback.md",
- "sha256": "7d4184fc0104e5f301c9343c396ae900f000e00580537c26563abe5a8b22bda5",
- "size": 56241
+ "sha256": "e7608615ed9ac379ec924d292f6fc6d9dae00e261f067781011c38b95b66f747",
+ "size": 56236
},
{
"url": "https://platform.claude.com/docs/en/build-with-claude/fallback-credit",
@@ -93,8 +93,8 @@
"url": "https://platform.claude.com/docs/en/build-with-claude/fast-mode",
"status": "success",
"path": "en/build-with-claude/fast-mode.md",
- "sha256": "6837e1f70674335b653fb94b386ebb565f42141786bff4021831e842a284bba2",
- "size": 27687
+ "sha256": "a2dff12e30355d7f1147cfe0196a93645aa1aa3f927079a841b0f5afb1d35dfb",
+ "size": 27675
},
{
"url": "https://platform.claude.com/docs/en/build-with-claude/structured-outputs",
@@ -1108,8 +1108,8 @@
"url": "https://platform.claude.com/docs/en/build-with-claude/prompt-engineering/claude-prompting-best-practices",
"status": "success",
"path": "en/build-with-claude/prompt-engineering/claude-prompting-best-practices.md",
- "sha256": "ac5db7812ddcb9279d66d3c67e58122f16accba1ded924546932363099023029",
- "size": 60535
+ "sha256": "69374e3e7530d3cdaa53b47b381bbd58ee90552cdffc4e17e0bf097d23b4be94",
+ "size": 60531
},
{
"url": "https://platform.claude.com/docs/en/build-with-claude/prompt-engineering/prompting-claude-fable-5",
@@ -1122,22 +1122,22 @@
"url": "https://platform.claude.com/docs/en/build-with-claude/prompt-engineering/prompting-claude-opus-5",
"status": "success",
"path": "en/build-with-claude/prompt-engineering/prompting-claude-opus-5.md",
- "sha256": "4bbd5faaa767513fd281b8b1e6e10436d4ac3a88958b69aee4c794386891cd35",
- "size": 12477
+ "sha256": "65be3e0b437cbe23cc41bb4f9b7a5031c5a71cd49ab91ec4d19c62738762b086",
+ "size": 12465
},
{
"url": "https://platform.claude.com/docs/en/build-with-claude/prompt-engineering/prompting-claude-opus-4-8",
"status": "success",
"path": "en/build-with-claude/prompt-engineering/prompting-claude-opus-4-8.md",
- "sha256": "aa91b441e21a600365661a791ed5dcb0d8f672da3e9eb64be5bf7e6cf0d1dbf7",
- "size": 16554
+ "sha256": "9e8bec84126acaf2cdf0ecbcf1b39938646ba124a1c61d5773d75658ebe7149d",
+ "size": 16542
},
{
"url": "https://platform.claude.com/docs/en/build-with-claude/prompt-engineering/prompting-claude-sonnet-5",
"status": "success",
"path": "en/build-with-claude/prompt-engineering/prompting-claude-sonnet-5.md",
- "sha256": "f3bf60aa73a31ec099f0745d03db8afe3025c86ea3b448facbe764a112c23061",
- "size": 16430
+ "sha256": "d3ae70e7e04d6d308a3de2abcbeeb437850c76ef4b8e0ef0c44bc303748d96f0",
+ "size": 16426
},
{
"url": "https://platform.claude.com/docs/en/test-and-evaluate/develop-tests",
@@ -1199,106 +1199,134 @@
"url": "https://platform.claude.com/docs/en/models/overview",
"status": "success",
"path": "en/models/overview.md",
- "sha256": "870c4eef82449937820bc95db077bb1c0dacacf80422f745415f066614f1b595",
- "size": 16631
+ "sha256": "a847b59af3579012d33e051eb468670601ba2a4ce1e0f8056e679121d582b8f9",
+ "size": 16625
},
{
"url": "https://platform.claude.com/docs/en/models/fable-5/overview",
"status": "success",
"path": "en/models/fable-5/overview.md",
- "sha256": "2084874fe2dd375921f40d5ce64542c49500ac1e12d91fd74b1ab1d5e1e949de",
- "size": 13228
+ "sha256": "8e936fc8475ba504531ad0f8356171851501cd636f686c14209bc6290d4d9ab8",
+ "size": 13175
},
{
"url": "https://platform.claude.com/docs/en/models/fable-5/introducing-claude-fable-5-and-claude-mythos-5",
"status": "success",
"path": "en/models/fable-5/introducing-claude-fable-5-and-claude-mythos-5.md",
- "sha256": "887e5859e2547faeabf4ba4baf4ba1aab8501a60d4fabf114f1ad579213b9107",
- "size": 10115
+ "sha256": "e058eaf0dcf8fb4153cdf7dad6839bfa8dbd4123ef56f452de9cfa104c533d45",
+ "size": 10100
+ },
+ {
+ "url": "https://platform.claude.com/docs/en/models/fable-5/migration-guide",
+ "status": "success",
+ "path": "en/models/fable-5/migration-guide.md",
+ "sha256": "a7647d13aef3780d9abbbd7dc0d18355f43083acb7aa0ed10cb0347db533c39c",
+ "size": 35811
},
{
"url": "https://platform.claude.com/docs/en/models/opus-5/overview",
"status": "success",
"path": "en/models/opus-5/overview.md",
- "sha256": "d6ce008a979e14c0d043ce93f064eb8ad3a8917b1540fd380dde7f93eef69770",
- "size": 12539
+ "sha256": "50df66917d300a92cdc02d7e4bb7dd61f97b3f79bcb37577afe45de6ac13bf4c",
+ "size": 12506
},
{
"url": "https://platform.claude.com/docs/en/models/opus-5/whats-new-opus-5",
"status": "success",
"path": "en/models/opus-5/whats-new-opus-5.md",
- "sha256": "b9776c5c41a46e1c2e2782455c23ce036251bb5e6654b0a0bf0f02690d7b29ff",
- "size": 17518
+ "sha256": "c9b3e93e186c206597cfadfa39e8ad19e91e4fb0efa8e2e02dbf9f0e71678e00",
+ "size": 17512
+ },
+ {
+ "url": "https://platform.claude.com/docs/en/models/opus-5/migration-guide",
+ "status": "success",
+ "path": "en/models/opus-5/migration-guide.md",
+ "sha256": "daa378f6231b7e899febf15773d526386cfcb9a4b1b920b2a405aa046525068b",
+ "size": 86531
},
{
"url": "https://platform.claude.com/docs/en/models/sonnet-5/overview",
"status": "success",
"path": "en/models/sonnet-5/overview.md",
- "sha256": "f75dc4c918a624e5c631311d1d233253fab00e9937fdc8b50837ac049a8b3d01",
- "size": 13332
+ "sha256": "5e5000898f3021c43eead62987eebdf3d6ac891f376024119b03fc3fa14aaf28",
+ "size": 13299
},
{
"url": "https://platform.claude.com/docs/en/models/sonnet-5/whats-new-sonnet-5",
"status": "success",
"path": "en/models/sonnet-5/whats-new-sonnet-5.md",
- "sha256": "cd2ae94cddbb11fbc24c0c390e78428309568138fbd3ee5c99dfedc79bd4b20c",
- "size": 13181
+ "sha256": "adca866a05f3ca8cd3bf402d9a21941cc67cef992c7d3b637f4c447c47147692",
+ "size": 13178
+ },
+ {
+ "url": "https://platform.claude.com/docs/en/models/sonnet-5/migration-guide",
+ "status": "success",
+ "path": "en/models/sonnet-5/migration-guide.md",
+ "sha256": "fc0572dd8c16d0da642a3c61cdf78a9e8b14ee9675a03c0a479aa0e0345b2a98",
+ "size": 34558
},
{
"url": "https://platform.claude.com/docs/en/models/haiku-4-5/overview",
"status": "success",
"path": "en/models/haiku-4-5/overview.md",
- "sha256": "2d6bb1c81118d9f829c0f5401d730ca1e96eff906f1f7bdb173012f3c8491b75",
- "size": 13569
+ "sha256": "4edeec35df83b5a04ce128eb05eb7bdf446f6aad2a48f906d99cd0602ca4e22f",
+ "size": 13536
+ },
+ {
+ "url": "https://platform.claude.com/docs/en/models/haiku-4-5/migration-guide",
+ "status": "success",
+ "path": "en/models/haiku-4-5/migration-guide.md",
+ "sha256": "1e09b6b5c470143800a4a683315c82fc477a5f1ba006c5efeed917684ddda1c3",
+ "size": 5018
},
{
"url": "https://platform.claude.com/docs/en/models/mythos-5/overview",
"status": "success",
"path": "en/models/mythos-5/overview.md",
- "sha256": "11ca39fe6aefe72c93dbe5b0c788001f5ed6e29984359177ef9b81bd68b8dab0",
- "size": 10780
+ "sha256": "1f8f2e3726235a8f402eecbd2a6af28ec6444c88c847fa25c0f77234a1075abc",
+ "size": 10727
},
{
"url": "https://platform.claude.com/docs/en/models/opus-4-8/overview",
"status": "success",
"path": "en/models/opus-4-8/overview.md",
- "sha256": "171fd0987211a4ca3b6e647a410fe74cd037a36d7de4c429ef02e10f2f1196c9",
- "size": 12031
+ "sha256": "dc3cefb8a1303fafd1f6056ecd3eaa6b0a8fafea1cb011f82d55160a7272f055",
+ "size": 12019
},
{
"url": "https://platform.claude.com/docs/en/models/opus-4-7/overview",
"status": "success",
"path": "en/models/opus-4-7/overview.md",
- "sha256": "cb7435cea81cc46cf3a7850ac3a0d3b70b2eb2ad64ee5ef59abe0d671652e925",
- "size": 11845
+ "sha256": "1fda71c6f8c57145802e544c09aaea230bf01f8dd601c2d60826bb85bcd2631b",
+ "size": 11833
},
{
"url": "https://platform.claude.com/docs/en/models/opus-4-6/overview",
"status": "success",
"path": "en/models/opus-4-6/overview.md",
- "sha256": "4c0247bb2526151cd9e875c9972e888a76f4b5121ae277705ccfedd68c0a479f",
- "size": 12535
+ "sha256": "a717e88c2e6da4bfa9cda23f2633b6c60d8d6cf5b483dbe532d83bc443efc134",
+ "size": 12523
},
{
"url": "https://platform.claude.com/docs/en/models/sonnet-4-6/overview",
"status": "success",
"path": "en/models/sonnet-4-6/overview.md",
- "sha256": "42d6b5ab175e58d70d508788d57c27b5e160526b71090067c4ad2e90f4db5636",
- "size": 12597
+ "sha256": "0201ed807a6124df60bccfa33c639168a1fbaceb51f70427d531a383d500a49e",
+ "size": 12589
},
{
"url": "https://platform.claude.com/docs/en/models/opus-4-5/overview",
"status": "success",
"path": "en/models/opus-4-5/overview.md",
- "sha256": "22339650e0ab4d40a4766b1d575186d9dee23140a29bbffd3636aaf721fc1599",
- "size": 12162
+ "sha256": "4352ebcd24fbd64e582efaca956c833eda9fc7203d4ebf62706f30660424fd4e",
+ "size": 12150
},
{
"url": "https://platform.claude.com/docs/en/models/sonnet-4-5/overview",
"status": "success",
"path": "en/models/sonnet-4-5/overview.md",
- "sha256": "5191ba7354d0caf4782f0c4ba57dbcc9ab1021db7a22ed57b43757a16346b15f",
- "size": 12221
+ "sha256": "c6a462aa7ae95af6a80ca99ebe77428dee490349ae306a75723f46338114b8d0",
+ "size": 12213
},
{
"url": "https://platform.claude.com/docs/en/about-claude/models/choosing-a-model",
@@ -1318,8 +1346,8 @@
"url": "https://platform.claude.com/docs/en/about-claude/models/migration-guide",
"status": "success",
"path": "en/about-claude/models/migration-guide.md",
- "sha256": "87a33b9f5177f0a0a8a90f3dea623e5fd6b4524408670f27631e35265249898b",
- "size": 158141
+ "sha256": "700f4e0be48327c2bf52ce04f4360e2f938c8a63124f7feeb57b5d777ccd019d",
+ "size": 1024
},
{
"url": "https://platform.claude.com/docs/en/about-claude/models/model-ids-and-versions",
@@ -1332,8 +1360,8 @@
"url": "https://platform.claude.com/docs/en/about-claude/model-deprecations",
"status": "success",
"path": "en/about-claude/model-deprecations.md",
- "sha256": "b73d8c62fb2a3907201d9a73fdceda26a0ab1010c253660f9717cf6f89ed7028",
- "size": 13415
+ "sha256": "c72ebb6a2c3ec9e707e107b150dc781ef2bd64d24c35bb0ba67900fea8eaf533",
+ "size": 13410
},
{
"url": "https://platform.claude.com/docs/en/resources/overview",
@@ -1654,15 +1682,15 @@
"url": "https://platform.claude.com/docs/en/agents-and-tools/agent-skills/claude-api-skill",
"status": "success",
"path": "en/agents-and-tools/agent-skills/claude-api-skill.md",
- "sha256": "340085819b244fe4054503c9644ec5eb6f7268da9d1283c90032fe1e7226613f",
- "size": 12169
+ "sha256": "12e46d63483eed13520ca51f584699162ab90a15f28c8d8ae6bdb8e0bf9caf77",
+ "size": 12157
},
{
"url": "https://platform.claude.com/docs/en/release-notes/overview",
"status": "success",
"path": "en/release-notes/overview.md",
- "sha256": "557ee66c3722a844adcaa69fee1d39fe052e3de2a09dad82d1c6f10fd7a0165e",
- "size": 93264
+ "sha256": "60332e0a005c94b7a30dc729176292a896b3183529bb4dd349c5c2d7797f059f",
+ "size": 93253
},
{
"url": "https://platform.claude.com/docs/en/api/completions",
@@ -8101,8 +8129,8 @@
"url": "https://support.claude.com/en/articles/8114491-get-started-with-claude",
"status": "success",
"path": "support/8114491-get-started-with-claude.md",
- "sha256": "2059b380785804cd7d6e61e72693788e800680d351e04cbfd57cd152011933e8",
- "size": 5300
+ "sha256": "a0cbaf762d93f0e391ab4dade13754ec5737092ea4b9fd89ebcf72b93d541314",
+ "size": 5302
},
{
"url": "https://support.claude.com/en/articles/8114494-how-up-to-date-is-claude-s-training-data",
@@ -8178,7 +8206,7 @@
"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": "77893553512b30d27a4d8a7a1f46272dae1f380fa9beaee2060d70fcbe4b3037",
+ "sha256": "eda8d0c16d81b5ef9b021e3b44c644d619e3a3bd5e5104980748ce4bf4d052a1",
"size": 5885
},
{
@@ -8248,8 +8276,8 @@
"url": "https://support.claude.com/en/articles/8325618-paid-plan-billing-faqs",
"status": "success",
"path": "support/8325618-paid-plan-billing-faqs.md",
- "sha256": "706c48802cde8ecff0c51d82ddc5c0b9d4f4705e867922c1cdaf80059e15dd5a",
- "size": 4553
+ "sha256": "5affa9d5209a7f850ff2ac4e7da386ddf113f7178ccfa7ebf9886a4be6cf3762",
+ "size": 4555
},
{
"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",
@@ -8311,8 +8339,8 @@
"url": "https://support.claude.com/en/articles/8887527-customizing-your-appearance-settings",
"status": "success",
"path": "support/8887527-customizing-your-appearance-settings.md",
- "sha256": "b538c5a6350bb3e78f61a1c4946c33b2dec0a6ce28eefe51a6004ea27505c395",
- "size": 1876
+ "sha256": "8b58a3cb4ceb0df79a26d12f00e6efce8178de731dd941201fb91f5632efd98a",
+ "size": 1874
},
{
"url": "https://support.claude.com/en/articles/8896518-does-anthropic-crawl-data-from-the-web-and-how-can-site-owners-block-the-crawler",
@@ -8486,8 +8514,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": "83709b9462495a3065a157d69ab9f65334ece95122bcaf99229cc1af67ef37bb",
- "size": 9380
+ "sha256": "9c7d78de0951ea64934774c9ece7aef90ac26cab2f02999ebf61405bc3043b9e",
+ "size": 9376
},
{
"url": "https://support.claude.com/en/articles/9301722-updates-to-our-acceptable-use-policy-now-usage-policy-consumer-terms-of-service-and-privacy-policy",
@@ -8535,15 +8563,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": "31fe3d34dfd34bfe530514d6c5b9af075dcb1f61b788a51125e08cde952fa863",
- "size": 9278
+ "sha256": "9a49140599e7c917d780ca807023073ee650b3534205fee691edc85b24e7ca11",
+ "size": 9270
},
{
"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": "63894cfbe2c4c62bd798a3766595b343b279ab4978922ea4d1167cfdb105e203",
- "size": 8561
+ "sha256": "d0b21c9fc6386c1336ef15fa50978085c64c5afa073ccc128cb7998d168729c7",
+ "size": 8569
},
{
"url": "https://support.claude.com/en/articles/9519291-what-is-anthropic-s-policy-for-handling-governmental-requests-for-user-information",
@@ -8563,15 +8591,15 @@
"url": "https://support.claude.com/en/articles/9534590-cost-and-usage-reporting-in-the-claude-console",
"status": "success",
"path": "support/9534590-cost-and-usage-reporting-in-the-claude-console.md",
- "sha256": "810c8591d69790b01d5c8bcb2fb6dbfaa281d41a63c5e925600252d56e523e40",
- "size": 5108
+ "sha256": "7cb45b085dfd7338360b48ce8e3a34a82515e96ff02f1c95a97d2d4a443c8e6c",
+ "size": 5104
},
{
"url": "https://support.claude.com/en/articles/9547008-publish-and-share-artifacts",
"status": "success",
"path": "support/9547008-publish-and-share-artifacts.md",
- "sha256": "9671343963b73ce1f6448ed990cd22c14b446768d53bae9b99da7444efe6621f",
- "size": 7328
+ "sha256": "3c856f3d313eb8efbd285a92fcfb120d54d38bdef0d0e4c41aba3dca7a0ce132",
+ "size": 7336
},
{
"url": "https://support.claude.com/en/articles/9612887-install-claude-for-android",
@@ -8647,7 +8675,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": "aa6027a3848f047a99ee27efe112617f0b74d2f524634cee9c8a4cc59e2521db",
+ "sha256": "10cb4f9cb412be68ca4660d5bf9ae4f41534d61891d629fbf2ecd8984b931a80",
"size": 2580
},
{
@@ -8787,15 +8815,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": "19c894d310f1c941e3fc1d1428bec99a340a445bbc1ccbed9cf32dc9211af7b8",
- "size": 2494
+ "sha256": "5ea13c0b0db01837669424b635b2f6a2826b4584053c6b14904041d7dbc52811",
+ "size": 2496
},
{
"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": "66e09ff7690e79f3fd0488ebb7251590a2d8b4d2a2b7b4e6aa2bc038bc95641e",
- "size": 3167
+ "sha256": "1bbabfa471f4a92c7a4f08669a2d65a39a77da95e1bff8301ab50f0782c01c23",
+ "size": 3169
},
{
"url": "https://support.claude.com/en/articles/10366389-how-can-i-get-higher-rate-limits-on-the-claude-api",
@@ -8836,14 +8864,14 @@
"url": "https://support.claude.com/en/articles/10504844-manage-user-feedback-settings-on-team-and-enterprise-plans",
"status": "success",
"path": "support/10504844-manage-user-feedback-settings-on-team-and-enterprise-plans.md",
- "sha256": "6b22808c0d6125476074920f4fe03df889cd582e7f838c9c179b381a6a542bca",
- "size": 1040
+ "sha256": "ccccdfb4f2ff82500e8fb13b891c8b6c0409323e5491d9216c4963d4d88b4e20",
+ "size": 1036
},
{
"url": "https://support.claude.com/en/articles/10504853-manage-user-feedback-settings-on-claude-console",
"status": "success",
"path": "support/10504853-manage-user-feedback-settings-on-claude-console.md",
- "sha256": "d470572689bbc7cced4cbcfb90fd02bbab3e76241fbfdaa58a59444d5316f11e",
+ "sha256": "14a2662ebb90e77a3b37dd3b9061c4ecc962680f003b9e16413d1a204684add1",
"size": 999
},
{
@@ -8857,14 +8885,14 @@
"url": "https://support.claude.com/en/articles/10593882-share-and-unshare-chats",
"status": "success",
"path": "support/10593882-share-and-unshare-chats.md",
- "sha256": "f310f073ec0fc63691011a8a0b75160ddefe850c5831af8ea1141d47f2fb70cb",
- "size": 4020
+ "sha256": "b200d0ebc2754d6fa7b879500e3f0cc2473470a9268788517ff3a3bb1ecba56c",
+ "size": 4028
},
{
"url": "https://support.claude.com/en/articles/10684626-enable-and-use-web-search",
"status": "success",
"path": "support/10684626-enable-and-use-web-search.md",
- "sha256": "1766723b2ecb2dacc02a0e38b8442038a1114664ca644b4bc26e54f5bd55b630",
+ "sha256": "49647b7f95bffbaedf734d5c0a6f452181010c0362c2c03260305a98236f7da7",
"size": 6368
},
{
@@ -8885,7 +8913,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": "6986009deb3ee4a7647fcfa8f5c064cc784da140aae51a6e3d16a72fcb7dbbbf",
+ "sha256": "3bc2a0954b4bc9e53f34a2cef95f916ebd7abf74d88389738455a54c15e35f30",
"size": 8265
},
{
@@ -8927,8 +8955,8 @@
"url": "https://support.claude.com/en/articles/11101966-use-voice-mode",
"status": "success",
"path": "support/11101966-use-voice-mode.md",
- "sha256": "1f83b77d42362dd37e0dd7ffbde75323ee9afdeb7d909c8b7827246f96ded0df",
- "size": 10548
+ "sha256": "6427f89b40f6d2e38078e4f2e6cab29608f5baf3cda9486cb6f964f8ad99c489",
+ "size": 10550
},
{
"url": "https://support.claude.com/en/articles/11107691-why-is-a-coupon-or-promotion-not-available-for-my-account",
@@ -9060,7 +9088,7 @@
"url": "https://support.claude.com/en/articles/11725453-set-up-the-claude-lti-in-canvas-by-instructure",
"status": "success",
"path": "support/11725453-set-up-the-claude-lti-in-canvas-by-instructure.md",
- "sha256": "f2dfe2cd3ed2b8adab1257b5dc250a31105eeebe28cf680e17ed170ff7847682",
+ "sha256": "9f74b9e2c2d2f5df3101a13327caa6837e346ac6830bbf250a4a2b4baaa2427e",
"size": 2748
},
{
@@ -9074,15 +9102,15 @@
"url": "https://support.claude.com/en/articles/11817273-use-claude-s-chat-search-and-memory-to-build-on-previous-context",
"status": "success",
"path": "support/11817273-use-claude-s-chat-search-and-memory-to-build-on-previous-context.md",
- "sha256": "84382001a60dcbd2ddab525fa1a323bddc402fd321f046a3c28af0d9140a8ab2",
- "size": 21514
+ "sha256": "f125e5ff8072761df7eee2d3f45f39f742fe0c9fdc79d43030f458b90fda1a25",
+ "size": 21510
},
{
"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": "0bbdc39398fbad8cbcad31a6f38b72eb180822aa74bf2bd27b183a3b982d80d1",
- "size": 816
+ "sha256": "30fdbb76ac5efc12d4d3f936b7b7e7174074c4ae13993a600aac9e40fa90a154",
+ "size": 814
},
{
"url": "https://support.claude.com/en/articles/11825384-how-to-update-claude-for-ios",
@@ -9116,7 +9144,7 @@
"url": "https://support.claude.com/en/articles/11869629-use-claude-with-android-apps",
"status": "success",
"path": "support/11869629-use-claude-with-android-apps.md",
- "sha256": "5165ac0c337d7be598c10507f2766538cee1ff36bc77598448d2c88bef6d6d09",
+ "sha256": "4af88d976605407c205abbc38f60fe837756b27977b644e8db3336aafeb8f29e",
"size": 13877
},
{
@@ -9151,15 +9179,15 @@
"url": "https://support.claude.com/en/articles/12005970-manage-usage-credits-for-team-and-seat-based-enterprise-plans",
"status": "success",
"path": "support/12005970-manage-usage-credits-for-team-and-seat-based-enterprise-plans.md",
- "sha256": "580307e556bcd9c5ac067582d46370b4cf6ac30402871d7282aeb0cc71e6e824",
- "size": 9630
+ "sha256": "5038d55fbf36aaa6a891afd746338157f6a71f8d9419e3477cefe779e3886371",
+ "size": 9634
},
{
"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": "2bf1c56662dd542f90bfe1c5ac3d04b8e1f48e37af9957190d72a2b851c6be53",
- "size": 14335
+ "sha256": "68e63aac040ddc904e3ed2d9c7be0125219426a1654690bdc5aace70e837b33f",
+ "size": 14333
},
{
"url": "https://support.claude.com/en/articles/12053672-what-happens-to-a-user-s-data-when-they-are-removed-from-a-team-or-enterprise-organization",
@@ -9186,8 +9214,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": "1b6cbc0a3be36455566f999b4afca2a62eb372612c06185bbc1dd10a4dc66876",
- "size": 17962
+ "sha256": "60e9d14e56d9d739cc83f5ab3a7edbed5de498c034568bb43ffd45d53f61a9e7",
+ "size": 17960
},
{
"url": "https://support.claude.com/en/articles/12119250-model-safety-bug-bounty-program",
@@ -9214,21 +9242,21 @@
"url": "https://support.claude.com/en/articles/12157520-claude-code-usage-analytics",
"status": "success",
"path": "support/12157520-claude-code-usage-analytics.md",
- "sha256": "588aadf341ee44431718a06fc27628db933e7af198d47295ad9fbcebdc30cedb",
- "size": 6425
+ "sha256": "8f7c5f1f36d80560a680ed5d651e9a2a4ca13715a12a6b1391e71f54fc6b8ab4",
+ "size": 6427
},
{
"url": "https://support.claude.com/en/articles/12260368-use-incognito-chats",
"status": "success",
"path": "support/12260368-use-incognito-chats.md",
- "sha256": "90dce8593e04d448aea883cd9196ff921c313e64ba41e6d373cbf4e07b3ccd0a",
- "size": 3598
+ "sha256": "453035338421d2685ebe37a99ac6be4916c2877f8bf092f101345654ff683b41",
+ "size": 3596
},
{
"url": "https://support.claude.com/en/articles/12293051-use-claude-in-xcode",
"status": "success",
"path": "support/12293051-use-claude-in-xcode.md",
- "sha256": "bb029b9bca9c0757b4f7ebc72efb7edcfb80011f22f41e2216af37804de71327",
+ "sha256": "50a9a1e26d5c5a6db0c58ff05c623794d1998d2e19f8a4481e99876ceac1159c",
"size": 1907
},
{
@@ -9270,15 +9298,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": "1c33e4587384a414c6a54186bf96b56dcae3f8be84df6c140d7da2ce4cb1416a",
+ "sha256": "b802cba5a783c59878887c826b81035f8f43b2b5a882cd5c8a98c720d878a977",
"size": 6410
},
{
"url": "https://support.claude.com/en/articles/12466728-troubleshoot-claude-error-messages",
"status": "success",
"path": "support/12466728-troubleshoot-claude-error-messages.md",
- "sha256": "1996444a9dbf2e071d79415e1bcc376be7ff167de00f74023917aedad2921f00",
- "size": 4240
+ "sha256": "8a85e3767a5284e0d79ec144e1a05b50642f41298aa1550e1696725feb57bbfe",
+ "size": 4232
},
{
"url": "https://support.claude.com/en/articles/12489464-use-enterprise-search",
@@ -9298,7 +9326,7 @@
"url": "https://support.claude.com/en/articles/12512180-use-skills-in-claude",
"status": "success",
"path": "support/12512180-use-skills-in-claude.md",
- "sha256": "3172313bb961eb2b176a0561e125401ec6b2b7bb29001b472b929b8f3a444c02",
+ "sha256": "8392fd3c94fcb5b0515058c6446cef49534b64fa1e3bb85ad75733ab2bd57354",
"size": 15546
},
{
@@ -9319,7 +9347,7 @@
"url": "https://support.claude.com/en/articles/12592343-enabling-and-using-the-desktop-extension-allowlist",
"status": "success",
"path": "support/12592343-enabling-and-using-the-desktop-extension-allowlist.md",
- "sha256": "bf531b967019d1fa98423b32f215c1c41c7f9d271c2a6a4d02fd4f4f9921264c",
+ "sha256": "d2134f3b5659a2fd9deb7416d7c8db231bf7aa05bc0e8aa2c5dc0f6649341bcb",
"size": 5712
},
{
@@ -9333,7 +9361,7 @@
"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": "6235e7e8801db36791bcedfa9df641f77d6a98cae4f79bbf95b43095a4f1796d",
+ "sha256": "036271e4e3794c0b959c6492127bb4552712f1e5620c2f83418fe14d80cf0cc0",
"size": 10960
},
{
@@ -9354,7 +9382,7 @@
"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": "7c6ac78280fb2aa96a61e145871002ca72c997be9216c1a73f5e235cba9a2ca9",
+ "sha256": "84eb865fe33805bff03394c48361251aba9cd8a2329f372457bbe8f31dcbacf1",
"size": 5974
},
{
@@ -9389,8 +9417,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": "3fd10234dc502d52c187f5917cc548f21df95e95f5feeca0009df2161fbaab66",
- "size": 13169
+ "sha256": "da575ce906ef756e9ca6d590967eb7dde4991455f1bf522dbcabb7536b1d3a25",
+ "size": 13163
},
{
"url": "https://support.claude.com/en/articles/12902405-claude-in-chrome-troubleshooting",
@@ -9410,8 +9438,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": "d0d481f4791cd1e28c9319816cc7e1e8baa5e8d3191ce7acd762930fe81f3952",
- "size": 9565
+ "sha256": "a15d8c1255cdaa8a683d999109797f5274c2643de8770f4afa06779cf83826e3",
+ "size": 9563
},
{
"url": "https://support.claude.com/en/articles/12938627-how-to-gift-a-claude-subscription",
@@ -9438,8 +9466,8 @@
"url": "https://support.claude.com/en/articles/12997503-team-plan-billing-faqs",
"status": "success",
"path": "support/12997503-team-plan-billing-faqs.md",
- "sha256": "f64613bccfc0b5b2794325a97d50cd3893030ed86e0d462998d13c09e2ef0e7a",
- "size": 4004
+ "sha256": "d0598265399c9241270adca23eab35997923e2426b497fac6b3cb0cb56e9b3c5",
+ "size": 4008
},
{
"url": "https://support.claude.com/en/articles/13015708-access-the-compliance-api",
@@ -9487,15 +9515,15 @@
"url": "https://support.claude.com/en/articles/13132885-set-up-single-sign-on-sso",
"status": "success",
"path": "support/13132885-set-up-single-sign-on-sso.md",
- "sha256": "b96aac9af2472525b2de9a5aa1a5ca2f806c00a10289940d2670f57a95db7adb",
+ "sha256": "65ee5cb4a8369d20199604ad5dd19e3d6853b9655d6699f671a6dba1824b7ced",
"size": 12323
},
{
"url": "https://support.claude.com/en/articles/13133195-set-up-jit-or-scim-provisioning",
"status": "success",
"path": "support/13133195-set-up-jit-or-scim-provisioning.md",
- "sha256": "b8e37893d318f8de7c46f731a5ece2638187d0ce028e32b4de99b4eb95dee89a",
- "size": 19493
+ "sha256": "5593dfc95a4402e3cc953e7d3980775cf41399e00d74e6278219de1e933a1afb",
+ "size": 19489
},
{
"url": "https://support.claude.com/en/articles/13133750-manage-members-on-team-and-enterprise-plans",
@@ -9522,8 +9550,8 @@
"url": "https://support.claude.com/en/articles/13163631-configuring-session-security-settings",
"status": "success",
"path": "support/13163631-configuring-session-security-settings.md",
- "sha256": "99aef668529842f7d02cf77b8a2960974a46e85e37d73f6c778424d6e85b33d5",
- "size": 3698
+ "sha256": "78d312c50add579cf640a9233a3a5624fdcb591fabb75ca1965e9ca71f11a7f3",
+ "size": 3704
},
{
"url": "https://support.claude.com/en/articles/13163666-holiday-2025-usage-promotion",
@@ -9543,8 +9571,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": "36cc2e3f77c7ff90b09d6dc0c4a6e1b5fec249de510f08f458a47cdbf6f61d3a",
- "size": 7038
+ "sha256": "8a441f501ceb1a30e433fb5b32d736cfbcb224c42856843607a773e8dceb2861",
+ "size": 7040
},
{
"url": "https://support.claude.com/en/articles/13198485-enforce-network-level-access-control-with-tenant-restrictions",
@@ -9571,22 +9599,22 @@
"url": "https://support.claude.com/en/articles/13325567-account-management-faqs",
"status": "success",
"path": "support/13325567-account-management-faqs.md",
- "sha256": "6f2081ce25693989a561a3bb2babb94e41d34a9f4c150c8c9c1e1d59cdd183e5",
- "size": 2636
+ "sha256": "b8efb559a274f35288fc77128e8ae6b804a6f5a15d6f66b13afd151bd42fe265",
+ "size": 2632
},
{
"url": "https://support.claude.com/en/articles/13345190-get-started-with-claude-cowork",
"status": "success",
"path": "support/13345190-get-started-with-claude-cowork.md",
- "sha256": "eef0c68f2d3e46edaa18469f2b524555ad01957ccbf30b6e92796f64fc7379d6",
- "size": 20710
+ "sha256": "4dc064e687c9190594d00468f2ff3ade4d7a62eaf5781e1608695ff67e272f1f",
+ "size": 20714
},
{
"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": "50b97ed7b8695eaaaeffb266979a07318288ef7d6c7ac38a56a5b59cf2009d53",
- "size": 609
+ "sha256": "e222fc94cb81d70b81718e0e1dd44b688cfe3c4cd0d5c87592d251c06ff6e023",
+ "size": 611
},
{
"url": "https://support.claude.com/en/articles/13346720-export-your-organization-s-data",
@@ -9606,8 +9634,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": "6adb77bf7ba29d674e5ffe2628be20304dd5272b7ebf79c42d09743dee6d269a",
- "size": 4609
+ "sha256": "cd4995ab145a98bbbd0bf55f000836aab7ff70af40382772b11423f1c11d6149",
+ "size": 4611
},
{
"url": "https://support.claude.com/en/articles/13393991-purchase-and-manage-seats-on-enterprise-plans",
@@ -9662,8 +9690,8 @@
"url": "https://support.claude.com/en/articles/13641943-visual-and-interactive-content",
"status": "success",
"path": "support/13641943-visual-and-interactive-content.md",
- "sha256": "fd12e2e299c028be6d7a20e1271e73bc1f2589799630564f70b2473cfecef76f",
- "size": 6511
+ "sha256": "97fbee65d880e641b6e191d99d7714c9112bb77e4afc2ccd9f90271cc29be943",
+ "size": 6513
},
{
"url": "https://support.claude.com/en/articles/13663666-use-visual-and-interactive-content-on-team-and-enterprise-plans",
@@ -9690,8 +9718,8 @@
"url": "https://support.claude.com/en/articles/13756069-public-sector-faqs",
"status": "success",
"path": "support/13756069-public-sector-faqs.md",
- "sha256": "7e4984cd0eaf045f6db6582ac5515df9dd9f55afb9f85750e8000e30c655049c",
- "size": 8378
+ "sha256": "6fb6b38708e6b8316e1ea79bbee86a022d569b79119af0ffea5c2908626107d2",
+ "size": 8380
},
{
"url": "https://support.claude.com/en/articles/13776697-join-an-organization-via-invite-link",
@@ -9718,22 +9746,22 @@
"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": "60fce5728944c73c664a0f7133465419aae5619b41ab28aaa84998879f3d88c4",
- "size": 20825
+ "sha256": "14476a08e7f8b6b7c72cb746a4c8efbceaf7b7574ecf008fd959d1257d6ba3a5",
+ "size": 20823
},
{
"url": "https://support.claude.com/en/articles/13837440-use-plugins-in-claude",
"status": "success",
"path": "support/13837440-use-plugins-in-claude.md",
- "sha256": "b18286d7b5451c7c0df18b2d8ba5a708d75631331cd88b5bfb212289f167d4a9",
- "size": 6716
+ "sha256": "2cd00f20527ea246cc812d86e4fb1ac190f97394f563e07f81f8599b50446536",
+ "size": 6714
},
{
"url": "https://support.claude.com/en/articles/13854387-schedule-recurring-tasks-in-claude-cowork",
"status": "success",
"path": "support/13854387-schedule-recurring-tasks-in-claude-cowork.md",
- "sha256": "a5c75c112777550631721424ab310776d7599eabdbdf559869f8ef850f5f3c62",
- "size": 4745
+ "sha256": "d60495fbe089f1e53a57c4ad16cdd3f0d9653b18e840ba11763473edcaab8a6a",
+ "size": 4747
},
{
"url": "https://support.claude.com/en/articles/13917817-google-workspace-sso-scim-email-mismatch",
@@ -9823,8 +9851,8 @@
"url": "https://support.claude.com/en/articles/13947068-assign-tasks-from-anywhere-in-claude-cowork",
"status": "success",
"path": "support/13947068-assign-tasks-from-anywhere-in-claude-cowork.md",
- "sha256": "287857a2d5d723fbb2ef873ec8f3bf4795d69ed39d4ab0eb9a5817d501d3e4ce",
- "size": 8280
+ "sha256": "5ebe5450378d74d21aa15d35c88cd2d6bd35da3d7413d1326ac75d9020f7c45a",
+ "size": 8276
},
{
"url": "https://support.claude.com/en/articles/13979539-custom-visuals-in-chat-and-cowork",
@@ -9844,14 +9872,14 @@
"url": "https://support.claude.com/en/articles/14116274-organize-your-tasks-with-projects-in-claude-cowork",
"status": "success",
"path": "support/14116274-organize-your-tasks-with-projects-in-claude-cowork.md",
- "sha256": "b3e3a1ef07506cd87c59cfb4dc47183909e1bc80cf5882ce5916a4a0bce4e298",
- "size": 5702
+ "sha256": "9e844b90d08aea63094589d5f75768ce9ecea238b0849b07311792a10bf4fe86",
+ "size": 5706
},
{
"url": "https://support.claude.com/en/articles/14128542-let-claude-use-your-computer-in-cowork",
"status": "success",
"path": "support/14128542-let-claude-use-your-computer-in-cowork.md",
- "sha256": "fce2b40c50745b937a06a81395475d6619b1e34b3ccc035181be3469e425c108",
+ "sha256": "bad239f8a55f7f2aa639a440fa7d41640f0d619a1a42e498c51e60667c5144f4",
"size": 8284
},
{
@@ -9914,7 +9942,7 @@
"url": "https://support.claude.com/en/articles/14499648-how-scim-sync-works-for-enterprise-organizations",
"status": "success",
"path": "support/14499648-how-scim-sync-works-for-enterprise-organizations.md",
- "sha256": "ea5908cc95b53467db928ef0b31e9f4d1739f9f483bfac8d752e03332f86fde1",
+ "sha256": "1e4d4c1e43866f11261ac6ed3eebab7251f1e73aa7b504d83fb287bd322f2483",
"size": 7438
},
{
@@ -9935,15 +9963,15 @@
"url": "https://support.claude.com/en/articles/14503613-sso-login",
"status": "success",
"path": "support/14503613-sso-login.md",
- "sha256": "0d791ee66963aba3f4de378bd644f91d884a7b5583a97f5a6a497b54bc49ad66",
- "size": 6682
+ "sha256": "91da1f45b1dcaa886daf210f4efc1b425e0f5b8cdf5e2fb12746bb2030d937a2",
+ "size": 6690
},
{
"url": "https://support.claude.com/en/articles/14503643-set-up-scim-in-claude-for-government",
"status": "success",
"path": "support/14503643-set-up-scim-in-claude-for-government.md",
- "sha256": "a1c2f6e2d1e2f38b24656706530dacaeb4742ae922a58594f6a2f8737150600b",
- "size": 6423
+ "sha256": "e0de4ae0690c4014089e7396fe7a212b7908756aa1e44520019883f8b89bee30",
+ "size": 6421
},
{
"url": "https://support.claude.com/en/articles/14503675-organization-instructions-in-claude-for-government",
@@ -9970,8 +9998,8 @@
"url": "https://support.claude.com/en/articles/14503775-mcp-web-search",
"status": "success",
"path": "support/14503775-mcp-web-search.md",
- "sha256": "a170cee02c1b74005778d59c89da07651350d8eb9f340241164e32404f67a524",
- "size": 4677
+ "sha256": "00727e01f723e2cb8553e3e4eb460391bff4b13b1c2387ee340449bdd4065b1e",
+ "size": 4675
},
{
"url": "https://support.claude.com/en/articles/14503794-model-availability-in-claude-for-government",
@@ -10068,21 +10096,21 @@
"url": "https://support.claude.com/en/articles/14604397-set-up-your-design-system-in-claude-design",
"status": "success",
"path": "support/14604397-set-up-your-design-system-in-claude-design.md",
- "sha256": "39079dbdd62233914db0b0e8ed1087b693e30c49b9a622e9abeb785658239431",
- "size": 4394
+ "sha256": "e21e8f5583b59f0e0afc5c968801ea754e0b43ead990421e7189f7b0b6eda247",
+ "size": 4398
},
{
"url": "https://support.claude.com/en/articles/14604406-claude-design-admin-guide-for-team-and-enterprise-plans",
"status": "success",
"path": "support/14604406-claude-design-admin-guide-for-team-and-enterprise-plans.md",
- "sha256": "52d1f5c443fc64ee330c65f3faf3ffdc78ffd9b89c0db5f9423bb26ca919cdff",
- "size": 12733
+ "sha256": "cf240ca29e6fd557abb23054c6f2b47efe80f8547595401154fbe98ada8f2460",
+ "size": 12735
},
{
"url": "https://support.claude.com/en/articles/14604416-get-started-with-claude-design",
"status": "success",
"path": "support/14604416-get-started-with-claude-design.md",
- "sha256": "74dddb79a77c3722a5d7b259508ec9cb63e0d4f9d7faf1f82f66a6b29f062af3",
+ "sha256": "0a559305fefd5965bbb725950ddcf152f4f943a19cbd3042372ce66832ea11b4",
"size": 11134
},
{
@@ -10208,8 +10236,8 @@
"url": "https://support.claude.com/en/articles/15330088-set-a-default-model-for-your-organization",
"status": "success",
"path": "support/15330088-set-a-default-model-for-your-organization.md",
- "sha256": "281ff45efb5c002dd1da4150dbaf356b379864d4b1bc429bde91e9cac60d7577",
- "size": 5752
+ "sha256": "84ccfe88581ab6bfff8b0ca100151cf867d27c7ea128c90e6bfa0484e5488576",
+ "size": 5740
},
{
"url": "https://support.claude.com/en/articles/15330651-claude-enterprise-admin-api-reference-guide",
@@ -10320,8 +10348,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": "ff8e4d91682469b2638061251b5d68f2a58697464deaa30d3d530500017d65cb",
- "size": 8503
+ "sha256": "d6108b3b6b46e321a2d6f7e4a9369be2527b0a74fb20b52fed4d587b8d82dabb",
+ "size": 8505
},
{
"url": "https://support.claude.com/en/articles/15707726-using-claude-for-legal-work-privilege-confidentiality-and-how-to-think-about-configuration",
@@ -10355,8 +10383,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": "fffb0426629380ccebcdc540ab242c2b0c02b52bd94095eaeeeb931c85932b96",
- "size": 5060
+ "sha256": "52b5c91f2bbb732d5cf0d441faec4106eee6a6ded3f6d672f87e7334966abcdb",
+ "size": 5056
},
{
"url": "https://support.claude.com/en/articles/16049681-why-claude-switched-models-in-your-conversation-with-opus-5",
@@ -11363,15 +11391,15 @@
"url": "https://claude.com/docs/government/config/settings",
"status": "success",
"path": "claude/government/config/settings.md",
- "sha256": "986d5c9d270bdc81b77adaff5a304769b948c71b1ac15fce1f9776ab978c7a1d",
- "size": 22112
+ "sha256": "e0f7925014112119a607a1e44971b20cc1b4e953d5e91da7817e8bb0e2d2e4e7",
+ "size": 22697
},
{
"url": "https://claude.com/docs/government/connectors/microsoft-365",
"status": "success",
"path": "claude/government/connectors/microsoft-365.md",
- "sha256": "238e10c88408d7fb0abf7158268e551a68526865e2ac772b108b2160905e0aaa",
- "size": 31008
+ "sha256": "d187dd25d75a331342d6f863ffd69ec709df173ef2f7ad0a0da15212ee03ab44",
+ "size": 31118
},
{
"url": "https://claude.com/docs/government/connectors/overview",
@@ -11454,8 +11482,8 @@
"url": "https://claude.com/docs/government/org-admin/overview",
"status": "success",
"path": "claude/government/org-admin/overview.md",
- "sha256": "ec3056aed84528cf2229f8bd5c08fca460be3353908bed90ea937e378ce6fd8a",
- "size": 7675
+ "sha256": "1487f6d1d684af94b1e154c1d18c13ddfce2b7dfde39e5cc5773303264e0cbdd",
+ "size": 7880
},
{
"url": "https://claude.com/docs/government/org-admin/provisioning",
@@ -11510,8 +11538,8 @@
"url": "https://claude.com/docs/government/security/security-and-data-handling",
"status": "success",
"path": "claude/government/security/security-and-data-handling.md",
- "sha256": "b90e1a37d331a657fdd517e895714b808ecaf7ed2e9dd433d0b0e2b8cb1cbf1f",
- "size": 29486
+ "sha256": "7a49adf953b0e32e2763c1298ed568a900090c1154bbc3a6d821317479f66a31",
+ "size": 31699
},
{
"url": "https://claude.com/docs/government/tenant-admin/admins",
@@ -11741,8 +11769,8 @@
"url": "https://claude.com/docs/third-party/claude-desktop/code",
"status": "success",
"path": "claude/third-party/claude-desktop/code.md",
- "sha256": "6e14b2f7b9866cad210ca20f8c253a242025c715e7fc84d07b67ac6221cb5c90",
- "size": 10541
+ "sha256": "d50b386b6aa49c266bbc0e67da4054394b32aac2f399ef53d564df05846c1d59",
+ "size": 10565
},
{
"url": "https://claude.com/docs/third-party/claude-desktop/configuration",
@@ -11881,8 +11909,8 @@
"url": "https://claude.com/docs/third-party/claude-desktop/telemetry",
"status": "success",
"path": "claude/third-party/claude-desktop/telemetry.md",
- "sha256": "5cb24135f015ae8a5f8b7a6091819a97cc1366fa2e5fad174ea7d91d2e60662a",
- "size": 27947
+ "sha256": "d72da5701f7369e2f9e6c06e844fc64c191414e43c87975c4d71b061fe31ecfb",
+ "size": 28551
},
{
"url": "https://claude.com/docs/third-party/claude-desktop/vertex",
@@ -11895,8 +11923,8 @@
"url": "https://claude.com/docs/third-party/claude-desktop/web-tools",
"status": "success",
"path": "claude/third-party/claude-desktop/web-tools.md",
- "sha256": "26d0fada983b1a5cad8f2b4fa72df9ab35f47fd75799a31aadb0991b33df85ab",
- "size": 15371
+ "sha256": "d548f6532ba8733a3e4a2d4d1a45813ee931db5765a7a132684106a72deac5e9",
+ "size": 16844
},
{
"url": "https://platform.claude.com/docs/en/api/csharp/messages",
@@ -25734,8 +25762,8 @@
"url": "https://raw.githubusercontent.com/anthropics/claude-quickstarts/main/managed-agents/chat-sdk/README.md",
"status": "success",
"path": "github/claude-quickstarts/managed-agents/chat-sdk/README.md",
- "sha256": "7102f9f407f17cb9d82eaa983535b20446d97afba80052ee90b1b22d301b84d6",
- "size": 5649
+ "sha256": "e3fb56db632c14f3798da70bb83c095b9479db2da70c0d7210ce9e24eb4b8c34",
+ "size": 7230
},
{
"url": "https://raw.githubusercontent.com/anthropics/claude-quickstarts/main/managed-agents/chat-sdk/skill.md",
@@ -27056,8 +27084,8 @@
}
],
"summary": {
- "total": 3904,
- "downloaded": 3810,
+ "total": 3908,
+ "downloaded": 3814,
"skipped": 0,
"failed": 0,
"dead": 94,
diff --git a/content/claude/government/config/settings.md b/content/claude/government/config/settings.md
index 6619f869c..aca645261 100644
--- a/content/claude/government/config/settings.md
+++ b/content/claude/government/config/settings.md
@@ -114,7 +114,9 @@ Turning a switch off also changes this layout. For example, with **Chat in Claud
### Allowed network hosts
-A list of hostnames that tools in Claude Desktop may reach, for example to install packages or fetch web pages. This covers the tools Claude uses during Cowork tasks, web fetch in Chat, and the sandboxed shell commands of Code sessions on macOS. For how the list applies to Code sessions on each operating system, see [Code in Claude Desktop](/docs/government/security/security-and-data-handling#code-in-claude-desktop). The connection to Claude is always allowed and does not need to be listed. An empty list shows as **Claude connection only**. Use **Add package registries** to add npm, PyPI, GitHub, crates.io, and other common registries so that Claude can install libraries; hosts added this way appear together as a single **Package registries** pill with a count. This list does not cover addresses on your private network, direct IP addresses, or Web search, so do not rely on it alone to restrict network access.
+A list of hostnames that tools in Claude Desktop may reach, for example to install packages or fetch web pages. This covers the tools Claude uses during Cowork tasks, web fetch in Chat, and the sandboxed shell commands of Code sessions on macOS. For how the list applies to Code sessions on each operating system, see [Code in Claude Desktop](/docs/government/security/security-and-data-handling#code-in-claude-desktop). The connection to Claude is always allowed and does not need to be listed. An empty list shows as **Claude connection only**. Use **Add package registries** to add npm, PyPI, GitHub, crates.io, and other common registries so that Claude can install libraries; hosts added this way appear together as a single **Package registries** pill with a count.
+
+Entries are hostnames or wildcard patterns such as `*.example.com`, which matches subdomains at any depth but not `example.com` itself, so list both if you need both. The list does not accept IP addresses or ports, and unless you allow all traffic with a `*` entry, the tools this list covers cannot reach a destination by its IP address. Web search, connectors, and the app's own connections, such as sign-in, updates, and telemetry export, do not use this list. Web fetch refuses localhost and private-network addresses regardless of what the list contains. Because entries match by name, a hostname you list is reachable even when it resolves inside your network, so treat the list as one layer alongside your own network controls.
### Allowed workspace folders
diff --git a/content/claude/government/connectors/microsoft-365.md b/content/claude/government/connectors/microsoft-365.md
index 8ef35147b..bc8769a21 100644
--- a/content/claude/government/connectors/microsoft-365.md
+++ b/content/claude/government/connectors/microsoft-365.md
@@ -109,7 +109,7 @@ On the [Config](/docs/government/org-admin/configuration) page, expand the **Mic
| **Azure cloud** | **Commercial** for most tenants, including Microsoft 365 GCC. Choose **US Government GCC-High** or **US Government DoD** only if your Microsoft tenant is in one of those clouds. |
| **Access** | The Microsoft Graph permissions the connector requests when a member signs in. The standard read-only permissions are already selected; add or remove permissions as needed. See [Choose which Microsoft 365 permissions to allow](#choose-which-microsoft-365-permissions-to-allow). |
-Save the card. The connector is delivered to each member's Claude Desktop the next time it refreshes its configuration, which happens at launch or sign-in. Members who already have Claude Desktop open may need to restart it.
+Save the card. The connector reaches each member's Claude Desktop the next time it starts or the member signs in to Claude for Government. Members who already have Claude Desktop open are prompted to relaunch the next time the app checks for changes, which it does about every 30 minutes, and the connector appears after the relaunch.
## Choose which Microsoft 365 permissions to allow
diff --git a/content/claude/government/org-admin/overview.md b/content/claude/government/org-admin/overview.md
index 78e35aa1d..2b4200f55 100644
--- a/content/claude/government/org-admin/overview.md
+++ b/content/claude/government/org-admin/overview.md
@@ -79,4 +79,6 @@ The navigation groups the pages into three sections.
## How changes take effect
-Most changes you make in this portal take effect immediately. Changing a user's seat tier, updating a spend limit, or resetting a user's rate limits applies to their very next request. Product configuration changes are picked up the next time a user's Claude application refreshes its settings, which happens when the application is launched or when the user signs in. Group mapping changes trigger an immediate re-sync so you do not need to wait for a scheduled cycle.
+Most changes you make in this portal take effect immediately. Changing a user's seat tier, updating a spend limit, or resetting a user's rate limits applies to their very next request. Group mapping changes trigger an immediate re-sync so you do not need to wait for a scheduled cycle.
+
+Settings on the [Config](/docs/government/org-admin/configuration) page that govern the Claude applications themselves, such as the Claude Desktop banner and telemetry, reach each user's application the next time it starts or the user signs in. Claude Desktop also checks for changes about every 30 minutes while it is running and prompts the user to relaunch when something has changed.
diff --git a/content/claude/government/security/security-and-data-handling.md b/content/claude/government/security/security-and-data-handling.md
index 87fb9a826..03abc5bb2 100644
--- a/content/claude/government/security/security-and-data-handling.md
+++ b/content/claude/government/security/security-and-data-handling.md
@@ -42,7 +42,7 @@ Code sessions use Claude Code built into the desktop application and run on the
On macOS, those shell commands run inside an operating-system-level sandbox that the application builds from your organization's **Allowed network hosts** and **Allowed workspace folders** settings on the [Config](/docs/government/config/settings#allowed-network-hosts) page. The sandbox is in place whenever either setting restricts access, which the default configuration does. A user can exempt specific commands from this sandbox in a Claude Code settings file, and an exempted command runs outside the sandbox under the permission mode the user selects for the session.
-The macOS sandbox also blocks connections to local Unix sockets. A command that talks to a local agent through a socket, such as git signing a commit with a key held in an SSH agent or a hardware-backed key manager, cannot reach that agent from inside the sandbox. A user who needs such a command to work can list the agent's socket path under `sandbox.network.allowUnixSockets` in their Claude Code settings file, which keeps the command inside the sandbox. Every sandboxed command in that user's Code sessions can then ask the agent to sign or authenticate, so this is appropriate only for an agent that asks the user to approve each use, for example with Touch ID, and not for an agent that signs without prompting. See [Sandbox settings](https://code.claude.com/docs/en/settings#sandbox-settings) in the Claude Code documentation.
+The macOS sandbox also blocks connections to local Unix sockets. A command that talks to a local agent through a socket, such as git signing a commit with a key held in an SSH agent or a hardware-backed key manager, cannot reach that agent from inside the sandbox. A user who needs such a command to work can list the agent's socket path under `sandbox.network.allowUnixSockets` in their Claude Code settings file, which keeps the command inside the sandbox. Every sandboxed command in that user's Code sessions can then ask the agent to sign or authenticate, so this is appropriate only for an agent that asks the user to approve each use, for example with Touch ID, and not for an agent that signs without prompting. See [Sandbox settings](https://code.claude.com/docs/en/settings-reference#sandbox-settings) in the Claude Code documentation.
Exempting git commands such as `git commit` with `sandbox.excludedCommands` is not a safe way around the socket restriction. A sandboxed command can still change files that git runs during a commit, such as hook scripts kept in the working tree, and an exempted `git commit` would then run that code outside the sandbox. Git also cannot reach remotes over SSH from inside the sandbox, so a user who needs to push can use an HTTPS remote whose host is on the **Allowed network hosts** list, or push from a terminal outside the Code session.
@@ -65,6 +65,10 @@ The desktop application and the sandbox honor the operating system's proxy setti
For configuration and model inference, the application reaches the Claude for Government service hostname provided to your agency during onboarding. Sign-in happens in the user's default browser, which must reach that same hostname, the Claude for Government sign-in service (a separate host that your Anthropic representative provides), and your agency's identity provider; see the network prerequisites in [Connect Claude Desktop to Claude for Government](/docs/government/deploy-desktop/configure#before-you-begin). Anthropic-bound telemetry endpoints are not contacted in Claude for Government. Allow `downloads.claude.ai` for the sandbox virtual machine image and the Claude Code command-line tool, which are fetched at session start (not required if your agency uses the offline installer variant that bundles both), and `www.claudeusercontent.com` for the artifact preview frame. For automatic application updates, the required hosts depend on how your agency distributes the client; see the network-requirements table in [Telemetry and egress](/docs/third-party/claude-desktop/telemetry) and confirm the update hosts for your deployment before finalizing your allowlist.
+
+ Yes. An agency that distributes Claude Desktop updates itself, for example to keep devices on an assessed version until the next one is approved, turns on **Block automatic updates** on the [Config](/docs/government/config/settings#block-automatic-updates) page and also blocks automatic updates in each device's managed configuration, as described under [Automatic updates](/docs/government/deploy-desktop/configure#automatic-updates). With both in place, the application neither downloads nor installs updates on its own. An agency that leaves automatic updates on can use **Restart deadline for updates** on the [Config](/docs/government/config/settings#restart-deadline-for-updates) page to set how long members may postpone the restart that installs a downloaded update.
+
+
The core product does not. Configuration and model inference go through the dedicated Claude for Government service hostname, and sign-in goes through that hostname, the separate Claude for Government sign-in service, and your agency's identity provider, none of which are under either domain. Blocking `*.claude.ai` and `*.anthropic.com` leaves sign-in and inference working. Blocking `*.claude.ai` also blocks `downloads.claude.ai`, which prevents Cowork and Code sessions from starting and Advanced file analysis in Chat from running, unless the offline installer variant was used.
@@ -153,6 +157,10 @@ In Claude for Government, conversation content stays on the user's device. Model
Conversation content lives under the owner-only application data directory (`%LOCALAPPDATA%\Claude-3p` on Windows, `~/Library/Application Support/Claude-3p` on macOS). User-visible outputs such as artifacts are written separately to the user files directory (default `~/Claude`). See [User identity and local data](/docs/third-party/claude-desktop/data-storage) for the full list of what each location holds.
+
+ No. Claude Desktop keeps conversation history in the application data directory of the operating system account in use on the device, and it does not divide that history by the Claude for Government organization or tenant the user signs in to. A user who is moved to another organization, or who signs in to a second tenant from the same operating system account, sees the same conversations and projects as before. Each operating system account's application data directory is written with owner-only permissions, so other accounts on the device cannot read it, and [Removing data](/docs/third-party/claude-desktop/data-storage#removing-data) describes how to clear it. In the folder layout that [User identity and local data](/docs/third-party/claude-desktop/data-storage) describes, Claude for Government uses a single fixed organization ID. The Claude Desktop [configuration reference](/docs/third-party/claude-desktop/configuration#deploymentorganizationuuid) lists a `deploymentOrganizationUuid` key that separates local data by organization in other deployments. That key does not apply to Claude for Government, so leave it out of your [configuration profile](/docs/government/deploy-desktop/configure#deploy-to-your-fleet).
+
+
A project in Claude for Government is stored in the application data directory on the user's own device, together with any instructions, links, and folder references the user adds to it. Files added to a project stay on the user's local disk; there is no service-side project store, and files are not vectorized or indexed. Claude reads them directly from disk on demand with its file tools. Content Claude reads from those files is handled like the rest of the conversation: inference requests pass through the Claude for Government service to the model endpoint but are not retained. See [Desktop and filesystem access](/docs/third-party/claude-desktop/local-access).
diff --git a/content/claude/third-party/claude-desktop/code.md b/content/claude/third-party/claude-desktop/code.md
index bf3541ad3..9d8b7c13c 100644
--- a/content/claude/third-party/claude-desktop/code.md
+++ b/content/claude/third-party/claude-desktop/code.md
@@ -53,7 +53,7 @@ To have Claude Desktop's restrictions apply on top of your Claude Code policy, s
}
```
-With `"merge"`, Claude Desktop's policy values are layered under your Claude Code policy. Your values win any conflict, deny and allow lists are unioned, and Claude Desktop's values are filtered so they can only tighten policy, never loosen it. See [`parentSettingsBehavior`](https://code.claude.com/docs/en/settings#available-settings) in the Claude Code settings reference. Requires Claude Code v2.1.133 or later, which ships with Claude Desktop on 3P.
+With `"merge"`, Claude Desktop's policy values are layered under your Claude Code policy. Your values win any conflict, deny and allow lists are unioned, and Claude Desktop's values are filtered so they can only tighten policy, never loosen it. See [`parentSettingsBehavior`](https://code.claude.com/docs/en/settings-reference#parentsettingsbehavior) in the Claude Code settings reference. Requires Claude Code v2.1.133 or later, which ships with Claude Desktop on 3P.
In a third-party deployment there is no Anthropic authentication, so Claude Code's server-managed settings tier is never present. If you have not separately deployed a Claude Code `managed-settings.json` or OS profile, Claude Desktop's policy applies automatically and you do not need to set `parentSettingsBehavior`.
@@ -61,7 +61,7 @@ With `"merge"`, Claude Desktop's policy values are layered under your Claude Cod
## Further reading
-* [Claude Code settings reference](https://code.claude.com/docs/en/settings)
+* [Claude Code settings reference](https://code.claude.com/docs/en/settings-reference)
* [Claude Code sandboxing](https://code.claude.com/docs/en/sandboxing)
* [Settings precedence](https://code.claude.com/docs/en/settings#settings-precedence)
diff --git a/content/claude/third-party/claude-desktop/telemetry.md b/content/claude/third-party/claude-desktop/telemetry.md
index 48190d8a7..b6ed21cff 100644
--- a/content/claude/third-party/claude-desktop/telemetry.md
+++ b/content/claude/third-party/claude-desktop/telemetry.md
@@ -253,12 +253,13 @@ The `sentry.io` apex is listed alongside the wildcards because some firewalls do
### Optional features
-| Host | Required when |
-| --------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------- |
-| Host of `otlpEndpoint` | OpenTelemetry export is configured |
-| `github.com`, `objects.githubusercontent.com`, `pypi.org`, `files.pythonhosted.org` | Python-based desktop extensions are enabled |
-| Hosts of each entry in `managedMcpServers` (server URL, plus `oauth.authorizationServer` and `login.microsoftonline.com` if configured) | Managed MCP servers are configured |
-| Hosts in `coworkEgressAllowedHosts` | Sandbox web access is configured |
+| Host | Required when |
+| ----------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- |
+| Host of `otlpEndpoint` | OpenTelemetry export is configured |
+| `github.com`, `objects.githubusercontent.com`, `pypi.org`, `files.pythonhosted.org` | Python-based desktop extensions are enabled |
+| Hosts of each entry in `managedMcpServers` (server URL, plus `oauth.authorizationServer` and `login.microsoftonline.com` if configured) | Managed MCP servers are configured |
+| Search provider host of a built-in `websearch` server (`api.search.brave.com`, `api.tavily.com`, `api.exa.ai`, or the host of your `customUrl`) | [Built-in web search](/docs/third-party/claude-desktop/web-tools#built-in-web-search) is configured |
+| Hosts in `coworkEgressAllowedHosts` | Sandbox web access is configured |
## Disabling all Anthropic-bound connections
diff --git a/content/claude/third-party/claude-desktop/web-tools.md b/content/claude/third-party/claude-desktop/web-tools.md
index 2589ee30b..52bc92880 100644
--- a/content/claude/third-party/claude-desktop/web-tools.md
+++ b/content/claude/third-party/claude-desktop/web-tools.md
@@ -25,14 +25,14 @@ Web Search is a **server-side tool** executed by your inference provider, not by
| Anthropic API | Available |
| Gateway | Available if your gateway implements Anthropic's `web_search` server tool, passes it through to a provider that does, or runs the search itself; see [Gateway-side search](#gateway-side-search) |
-On Microsoft Foundry, Web Search availability depends on the [hosting option](https://platform.claude.com/docs/en/build-with-claude/claude-in-microsoft-foundry#hosting-options) you chose when you deployed the model. Deployments hosted on Azure do not support server-side tools, including web search, and return an error for requests that use them. For those deployments, add `"WebSearch"` to [`disabledBuiltinTools`](/docs/third-party/claude-desktop/configuration#disabledbuiltintools) so the app does not offer provider-side search, and configure the [built-in web search](#built-in-web-search) instead. See [features not supported when hosted on Azure](https://platform.claude.com/docs/en/build-with-claude/claude-in-microsoft-foundry#additional-features-not-supported-when-hosted-on-azure) in the Claude in Microsoft Foundry documentation for the full list.
+On Microsoft Foundry, Web Search availability depends on the [hosting option](https://platform.claude.com/docs/en/build-with-claude/claude-in-microsoft-foundry#hosting-options) you chose when you deployed the model. Deployments hosted on Azure do not support server-side tools, including web search, and return an error for requests that use them. See [features not supported when hosted on Azure](https://platform.claude.com/docs/en/build-with-claude/claude-in-microsoft-foundry#additional-features-not-supported-when-hosted-on-azure) in the Claude in Microsoft Foundry documentation for the full list. For those deployments, configure the [built-in web search](#built-in-web-search) instead. Once it is configured, the app stops offering provider-side search and routes the model's search calls to the built-in server. If you want no web search at all, add `"WebSearch"` to [`disabledBuiltinTools`](/docs/third-party/claude-desktop/configuration#disabledbuiltintools) instead. That entry also blocks the built-in web search tool, so do not combine the two.
-The [Claude apps gateway](https://code.claude.com/docs/en/claude-apps-gateway) passes the `web_search` tool through to its upstream provider, so Web Search works in Claude Desktop behind that gateway when the upstream is Google Cloud's Agent Platform, a Microsoft Foundry deployment hosted on Anthropic, or the Anthropic API. Claude Desktop can't see which upstream the gateway routes to and offers the tool regardless, so if the gateway routes any model to Amazon Bedrock or to a Microsoft Foundry deployment hosted on Azure, add `"WebSearch"` to `disabledBuiltinTools` in the gateway's [Claude Desktop overlay](https://code.claude.com/docs/en/claude-apps-gateway-config#claude-desktop-overlay) and use the [built-in web search](#built-in-web-search) instead.
+The [Claude apps gateway](https://code.claude.com/docs/en/claude-apps-gateway) passes the `web_search` tool through to its upstream provider, so Web Search works in Claude Desktop behind that gateway when the upstream is Google Cloud's Agent Platform, a Microsoft Foundry deployment hosted on Anthropic, or the Anthropic API. Claude Desktop can't see which upstream the gateway routes to and offers the tool regardless, so if the gateway routes any model to Amazon Bedrock or to a Microsoft Foundry deployment hosted on Azure, configure the [built-in web search](#built-in-web-search), which replaces provider-side search on every route. To turn web search off instead, add `"WebSearch"` to `disabledBuiltinTools` in the gateway's [Claude Desktop overlay](https://code.claude.com/docs/en/claude-apps-gateway-config#claude-desktop-overlay). That entry also blocks the built-in web search tool if one is configured.
-Because the search runs on the provider's infrastructure, queries and results travel over the same path as model inference and are subject to your provider's data-handling terms. No additional firewall rules are needed beyond the inference endpoint itself.
+Provider-side search runs on the provider's infrastructure, so queries and results travel over the same path as model inference and are subject to your provider's data-handling terms. It needs no additional firewall rules beyond the inference endpoint itself.
- `coworkEgressAllowedHosts` governs client-side egress (Web Fetch and in-sandbox shell network activity). The SDK Web Search tool in the table above executes server-side at your inference provider, so the allowlist does not apply to it. The built-in `websearch` server under [Web search options](#web-search-options) runs in the desktop app and does count as client-side egress. To let the agent fetch pages it finds via search, add the relevant hosts to `coworkEgressAllowedHosts` or set it to `["*"]`. To disable provider-side search, add `"WebSearch"` to `disabledBuiltinTools`.
+ `coworkEgressAllowedHosts` governs client-side egress (Web Fetch and in-sandbox shell network activity). The SDK Web Search tool in the table above executes server-side at your inference provider, so the allowlist does not apply to it. The built-in `websearch` server under [Web search options](#web-search-options) runs in the desktop app itself, outside the sandbox, and `coworkEgressAllowedHosts` does not apply to it either. Its search provider's host (`api.search.brave.com`, `api.tavily.com`, `api.exa.ai`, or the host of your `customUrl`) does need to be reachable through your perimeter firewall and proxy, and the **Egress** section of the in-app configuration window lists that host. To let the agent fetch pages it finds via search, add the relevant hosts to `coworkEgressAllowedHosts` or set it to `["*"]`. Adding `"WebSearch"` to `disabledBuiltinTools` turns web search off entirely, both provider-side search and the built-in `websearch` server's tool.
### Web search options
@@ -124,7 +124,9 @@ Connect a search MCP server as a remote `managedMcpServers` entry: either one yo
#### Data handling
-Search queries go to whichever backend you configure. In every option, the query is also visible to your inference provider as part of the conversation, because the model emits the search call. Anthropic does not receive search queries in any third-party configuration. For audit, the desktop app emits search events to your OTLP collector regardless of which option you choose; add `toolDetails` to [`otlpContentCapture`](/docs/third-party/claude-desktop/telemetry#content-capture) to capture the query text. To keep queries entirely inside your network, use `provider: "custom"` (or a self-hosted MCP) pointed at a search index that itself runs inside your boundary.
+Search queries go to whichever backend you configure. In every option, the query is also visible to your inference provider as part of the conversation, because the model emits the search call. Anthropic does not receive search queries in any third-party configuration. To keep queries entirely inside your network, use `provider: "custom"` (or a self-hosted MCP) pointed at a search index that itself runs inside your boundary.
+
+For audit, each search the model runs is recorded in the Cowork or Code session telemetry sent to your [OTLP collector](/docs/third-party/claude-desktop/telemetry#sending-telemetry-to-your-own-collector) as a `tool_result` event, whichever option you choose (a `WebSearch` event for provider-side or gateway-side search, an MCP tool event for the built-in or a remote search server). Add `toolDetails` to [`otlpContentCapture`](/docs/third-party/claude-desktop/telemetry#content-capture) to include the tool input, which carries the query text (long values are truncated). The built-in `websearch` server also emits a `builtin_websearch_call` event on the desktop application's own stream with the search provider, query length, result count, duration, and status, never the query text. The app exports that event only when [`otlpDesktopLogLevel`](/docs/third-party/claude-desktop/configuration#otlpdesktoploglevel) is `info` or `debug`, not at the default `error` level.
If you previously routed inference through a LiteLLM proxy to add search, the built-in `websearch` server with `provider: "custom"` is an alternative that removes the proxy from the search path; gateway-side interception remains a valid choice if you prefer the search key to stay server-side.
diff --git a/content/en/about-claude/model-deprecations.md b/content/en/about-claude/model-deprecations.md
index 3fb366e90..29d40c707 100644
--- a/content/en/about-claude/model-deprecations.md
+++ b/content/en/about-claude/model-deprecations.md
@@ -65,7 +65,7 @@ At some point, Anthropic hopes to make past models publicly available again. In
## Model status
- [Claude Mythos Preview](https://anthropic.com/glasswing) (`claude-mythos-preview`) is deprecated. To migrate to [Claude Mythos 5](https://anthropic.com/glasswing) (`claude-mythos-5`), see the [migration guide](https://platform.claude.com/docs/en/about-claude/models/migration-guide#migrating-from-claude-mythos-preview).
+ [Claude Mythos Preview](https://anthropic.com/glasswing) (`claude-mythos-preview`) is deprecated. To migrate to [Claude Mythos 5](https://anthropic.com/glasswing) (`claude-mythos-5`), see the [migration guide](https://platform.claude.com/docs/en/models/fable-5/migration-guide#migrating-from-claude-mythos-preview).
Current and recently retired models are listed in the following table with their status:
diff --git a/content/en/about-claude/models/migration-guide.md b/content/en/about-claude/models/migration-guide.md
index dea92fe3d..9a82ca6ab 100644
--- a/content/en/about-claude/models/migration-guide.md
+++ b/content/en/about-claude/models/migration-guide.md
@@ -1,2767 +1,13 @@
---
-title: Migration guide
+title: Migration guides
url: https://platform.claude.com/docs/en/about-claude/models/migration-guide
-description: Guide for migrating to the latest Claude models from previous Claude versions
+description: Guides for migrating to the latest Claude models from previous Claude versions
---
-
- This guide covers migrating [Messages API](https://platform.claude.com/docs/en/build-with-claude/working-with-messages) code. If you use [Claude Managed Agents](https://platform.claude.com/docs/en/managed-agents/overview), no changes beyond updating the model name are required.
-
-
-
- **Automate your migration with the Claude API skill.** In Claude Code, run `/claude-api migrate` to invoke the bundled [Claude API skill](https://platform.claude.com/docs/en/agents-and-tools/agent-skills/claude-api-skill#migrating-to-a-newer-claude-model). It works for any target model on this page:
-
- ```text wrap
- /claude-api migrate this project to claude-opus-5
- ```
-
- The skill applies the model ID swap and, as needed, breaking parameter changes, prefill replacement, and effort calibration for your target model across your code base, then produces a checklist of items to verify manually. It asks you to confirm the migration scope (entire working directory, a subdirectory, or a specific file list) before editing any files. The skill also detects Amazon Bedrock and Claude Platform on AWS clients and adjusts model ID formats and feature changes for those platforms.
-
-
-## Migrating to Claude Mythos 5 and Claude Fable 5
-
-[Claude Fable 5](https://platform.claude.com/docs/en/models/fable-5/introducing-claude-fable-5-and-claude-mythos-5) is Anthropic's most capable widely released model, available on the Claude API, [Amazon Bedrock](https://platform.claude.com/docs/en/build-with-claude/claude-in-amazon-bedrock), [Claude Platform on AWS](https://platform.claude.com/docs/en/build-with-claude/claude-platform-on-aws), [Google Cloud](https://platform.claude.com/docs/en/build-with-claude/claude-on-vertex-ai), and [Microsoft Foundry](https://platform.claude.com/docs/en/build-with-claude/claude-in-microsoft-foundry). [Claude Mythos 5](https://anthropic.com/glasswing) shares the same capabilities and is offered only to approved customers in Project Glasswing.
-
-The baseline settings shared by `claude-fable-5` and `claude-mythos-5`:
-
-* **Thinking:** [Adaptive thinking](https://platform.claude.com/docs/en/build-with-claude/thinking) is always on. The model determines when and how much to think on each request, and no `thinking` configuration is required. Both `thinking: {type: "disabled"}` and manual extended thinking (`thinking: {type: "enabled", budget_tokens: N}`) return a 400 error.
-* **Prefill:** Prefilling the assistant message returns a 400 error. Use system prompt instructions instead.
-* **Context window and output:** A [1M token context window](https://platform.claude.com/docs/en/build-with-claude/context-windows) by default, and up to 128k output tokens per request.
-* **Pricing:** $10 USD per million input tokens and $50 USD per million output tokens. See [Claude pricing](https://platform.claude.com/docs/en/about-claude/pricing).
-* **Data retention:** Both models require 30-day data retention and are not available under zero data retention (ZDR) arrangements; both are designated Covered Models. On the Claude API, a request to Claude Fable 5 from an organization whose data retention configuration does not meet this requirement returns a 400 `invalid_request_error`. Organizations with a ZDR arrangement should contact their Anthropic account team to discuss data retention configuration. Alternatively, you can configure data retention per workspace. See [Model-specific data retention requirements](https://platform.claude.com/docs/en/manage-claude/api-and-data-retention#model-specific-data-retention-requirements) for per-platform details.
-
-Where the two models diverge:
-
-* **Availability:** Claude Fable 5 does not require access approval. Claude Mythos 5 is available only to approved customers in [Project Glasswing](https://anthropic.com/glasswing).
-* **Safety classifiers:** Claude Fable 5 runs safety classifiers that can decline requests with `stop_reason: "refusal"`. Claude Mythos 5 does not include these classifiers. See [Refusals and fallback](https://platform.claude.com/docs/en/build-with-claude/refusals-and-fallback).
-* **Priority Tier:** [Priority Tier](https://platform.claude.com/docs/en/api/service-tiers#supported-models) is supported on Claude Fable 5 but not on Claude Mythos 5.
-
-### Migrating to Claude Mythos 5 and Claude Fable 5 from Claude Mythos Preview
-
-[Claude Mythos 5](https://anthropic.com/glasswing) is the access-gated successor to [Claude Mythos Preview](https://anthropic.com/glasswing), the invitation-only research preview. [Claude Fable 5](https://platform.claude.com/docs/en/models/fable-5/introducing-claude-fable-5-and-claude-mythos-5) offers the same capabilities and does not require access approval. The changes in this section apply equally to both targets.
-
-Migration is mostly drop-in. Claude Mythos 5 and Claude Fable 5 use the same [Messages API](https://platform.claude.com/docs/en/build-with-claude/working-with-messages) and the same [tool use](https://platform.claude.com/docs/en/agents-and-tools/tool-use/overview) patterns as Claude Mythos Preview, and token counts are roughly unchanged because all three models use the same tokenizer. The key changes to check are the features that are no longer available (listed in the next section) and thinking output. If you migrate to Claude Fable 5, also plan for safety classifier refusals, which Claude Mythos Preview and Claude Mythos 5 do not have; see [Refusals and fallback](https://platform.claude.com/docs/en/build-with-claude/refusals-and-fallback).
-
-For the Claude Mythos Preview retirement timeline, see [Model deprecations](https://platform.claude.com/docs/en/about-claude/model-deprecations).
-
-#### Update your model name
-
-```python
-model = "claude-mythos-preview" # Before
-model = "claude-mythos-5" # After
-
-# Or, for the model with the same capabilities and no access approval requirement:
-model = "claude-fable-5" # After
-```
-
-#### Features not available on Claude Mythos 5 and Claude Fable 5
-
-1. **Extended thinking and thinking token budgets:** Manual extended thinking (`thinking: {type: "enabled", budget_tokens: N}`) is not supported on `claude-mythos-5` or `claude-fable-5` and returns a 400 error. [Adaptive thinking](https://platform.claude.com/docs/en/build-with-claude/thinking) is always on: the model determines when and how much to think on each request, and no `thinking` configuration is required. `thinking: {type: "disabled"}` returns an error. `budget_tokens` has no direct replacement: thinking is adaptive, and the [effort parameter](https://platform.claude.com/docs/en/build-with-claude/effort) is a separate output-level control, not a thinking budget.
-
- Before (Claude Mythos Preview):
-
-
- ```bash cURL
- curl https://api.anthropic.com/v1/messages \
- -H "x-api-key: $ANTHROPIC_API_KEY" \
- -H "anthropic-version: 2023-06-01" \
- -H "content-type: application/json" \
- -d '{
- "model": "claude-mythos-preview",
- "max_tokens": 16000,
- "thinking": {
- "type": "enabled",
- "budget_tokens": 10000
- },
- "messages": [
- {
- "role": "user",
- "content": "..."
- }
- ]
- }'
- ```
-
- ```bash CLI
- ant messages create <<'YAML'
- model: claude-mythos-preview
- max_tokens: 16000
- thinking:
- type: enabled
- budget_tokens: 10000
- messages:
- - role: user
- content: "..."
- YAML
- ```
-
- ```python Python
- client.messages.create(
- model="claude-mythos-preview",
- max_tokens=16000,
- thinking={"type": "enabled", "budget_tokens": 10000},
- messages=[{"role": "user", "content": "..."}],
- )
- ```
-
- ```typescript TypeScript
- await client.messages.create({
- model: "claude-mythos-preview",
- max_tokens: 16000,
- thinking: { type: "enabled", budget_tokens: 10000 },
- messages: [{ role: "user", content: "..." }]
- });
- ```
-
- ```csharp C#
- using Anthropic;
- using Anthropic.Models.Messages;
-
- AnthropicClient client = new();
-
- var parameters = new MessageCreateParams
- {
- Model = "claude-mythos-preview",
- MaxTokens = 16000,
- Thinking = new ThinkingConfigEnabled(budgetTokens: 10000),
- Messages = [new() { Role = Role.User, Content = "..." }]
- };
-
- var response = await client.Messages.Create(parameters);
- Console.WriteLine(response);
- ```
-
- ```go Go
- client := anthropic.NewClient()
-
- response, err := client.Messages.New(context.TODO(), anthropic.MessageNewParams{
- Model: "claude-mythos-preview",
- MaxTokens: 16000,
- Thinking: anthropic.ThinkingConfigParamOfEnabled(10000),
- Messages: []anthropic.MessageParam{
- anthropic.NewUserMessage(anthropic.NewTextBlock("...")),
- },
- })
- if err != nil {
- log.Fatal(err)
- }
- fmt.Println(response)
- ```
-
- ```java Java
- AnthropicClient client = AnthropicOkHttpClient.fromEnv();
-
- MessageCreateParams params = MessageCreateParams.builder()
- .model("claude-mythos-preview")
- .maxTokens(16000L)
- .enabledThinking(10000L)
- .addUserMessage("...")
- .build();
-
- Message response = client.messages().create(params);
- IO.println(response);
- ```
-
- ```php PHP
- $client = new Client();
-
- $message = $client->messages->create(
- maxTokens: 16000,
- messages: [['role' => 'user', 'content' => '...']],
- model: 'claude-mythos-preview',
- thinking: ['type' => 'enabled', 'budget_tokens' => 10000],
- );
- ```
-
- ```ruby Ruby
- client = Anthropic::Client.new
-
- message = client.messages.create(
- model: "claude-mythos-preview",
- max_tokens: 16000,
- thinking: {
- type: "enabled",
- budget_tokens: 10000
- },
- messages: [
- { role: "user", content: "..." }
- ]
- )
- ```
-
-
- After (Claude Mythos 5):
-
-
- ```bash cURL
- curl https://api.anthropic.com/v1/messages \
- -H "x-api-key: $ANTHROPIC_API_KEY" \
- -H "anthropic-version: 2023-06-01" \
- -H "content-type: application/json" \
- -d '{
- "model": "claude-mythos-5",
- "max_tokens": 16000,
- "messages": [
- {
- "role": "user",
- "content": "..."
- }
- ]
- }'
- ```
-
- ```bash CLI
- ant messages create <<'YAML'
- model: claude-mythos-5
- max_tokens: 16000
- messages:
- - role: user
- content: "..."
- YAML
- ```
-
- ```python Python
- client.messages.create(
- model="claude-mythos-5",
- max_tokens=16000,
- messages=[{"role": "user", "content": "..."}],
- )
- ```
-
- ```typescript TypeScript
- await client.messages.create({
- model: "claude-mythos-5",
- max_tokens: 16000,
- messages: [{ role: "user", content: "..." }]
- });
- ```
-
- ```csharp C#
- using Anthropic;
- using Anthropic.Models.Messages;
-
- AnthropicClient client = new();
-
- var parameters = new MessageCreateParams
- {
- Model = "claude-mythos-5",
- MaxTokens = 16000,
- Messages = [new() { Role = Role.User, Content = "..." }]
- };
-
- var response = await client.Messages.Create(parameters);
- Console.WriteLine(response);
- ```
-
- ```go Go
- client := anthropic.NewClient()
-
- response, err := client.Messages.New(context.TODO(), anthropic.MessageNewParams{
- Model: "claude-mythos-5",
- MaxTokens: 16000,
- Messages: []anthropic.MessageParam{
- anthropic.NewUserMessage(anthropic.NewTextBlock("...")),
- },
- })
- if err != nil {
- log.Fatal(err)
- }
- fmt.Println(response)
- ```
-
- ```java Java
- AnthropicClient client = AnthropicOkHttpClient.fromEnv();
-
- MessageCreateParams params = MessageCreateParams.builder()
- .model("claude-mythos-5")
- .maxTokens(16000L)
- .addUserMessage("...")
- .build();
-
- Message response = client.messages().create(params);
- IO.println(response);
- ```
-
- ```php PHP
- $client = new Client();
-
- $message = $client->messages->create(
- maxTokens: 16000,
- messages: [['role' => 'user', 'content' => '...']],
- model: 'claude-mythos-5',
- );
- ```
-
- ```ruby Ruby
- client = Anthropic::Client.new
-
- message = client.messages.create(
- model: "claude-mythos-5",
- max_tokens: 16000,
- messages: [
- { role: "user", content: "..." }
- ]
- )
- ```
-
-
- The change for Claude Fable 5 is identical, with `claude-fable-5` as the model name.
-
-2. **Assistant prefill:** Prefilling the assistant message is not supported on `claude-mythos-5` or `claude-fable-5` and returns a 400 error, the same as on Claude Mythos Preview. Use system prompt instructions instead.
-
-3. **Thinking output:** On `claude-mythos-5` and `claude-fable-5`, the raw chain of thought is never returned, but thinking blocks still carry readable summarized text when `thinking.display` is set to `summarized`. Pass thinking blocks back unchanged when continuing a conversation on the same model. See [Thinking output on Claude Fable 5 and Claude Mythos 5](https://platform.claude.com/docs/en/build-with-claude/thinking#thinking-output-on-claude-fable-5-and-claude-mythos-5).
-
-#### Token counting and billing
-
-`claude-mythos-5` and `claude-fable-5` use the same tokenizer as `claude-mythos-preview` (the tokenizer introduced with Claude Opus 4.7). Token counts are roughly unchanged when migrating from `claude-mythos-preview`. Compared with models before Claude Opus 4.7, the same content can tokenize to roughly 30% more tokens, varying by content and workload shape.
-
-[`/v1/messages/count_tokens`](https://platform.claude.com/docs/en/build-with-claude/token-counting) returns roughly unchanged values for `claude-mythos-5` and `claude-fable-5` compared with `claude-mythos-preview`. Re-baseline cost and latency on your own workloads.
-
-#### Migration checklist
-
-* Update the model name from `claude-mythos-preview` to `claude-mythos-5`, or to `claude-fable-5`, which offers the same capabilities and does not require access approval.
-* Remove manual extended thinking configuration (`thinking: {type: "enabled", budget_tokens: N}`). Adaptive thinking is always on, and no `thinking` field is required.
-* Remove any `thinking: {type: "disabled"}` configuration. Disabling thinking returns an error on `claude-mythos-5` and `claude-fable-5`.
-* Remove `budget_tokens`. It has no direct replacement: thinking is adaptive, and the `effort` parameter is a separate output-level control, not a thinking budget.
-* Verify any code that parses the `thinking` field treats it as display text only and passes thinking blocks back unchanged when continuing on the same model. `thinking.display` defaults to `"omitted"` on `claude-mythos-5` and `claude-fable-5`, the same as on Claude Mythos Preview; set `display: "summarized"` to receive readable summaries. See [Thinking output on Claude Fable 5 and Claude Mythos 5](https://platform.claude.com/docs/en/build-with-claude/thinking#thinking-output-on-claude-fable-5-and-claude-mythos-5).
-* If you replay conversation history on another model, strip `thinking` and `redacted_thinking` blocks from prior assistant turns first. Thinking blocks from `claude-mythos-5` and `claude-fable-5` are tied to the model that produced them, and models other than Claude Fable 5 and Claude Mythos 5 silently ignore them. Stripping keeps cross-model requests minimal and uniform.
-* If you migrate to Claude Fable 5, handle `stop_reason: "refusal"` and read the `stop_details.category` field. Claude Fable 5 runs safety classifiers that Claude Mythos Preview and Claude Mythos 5 do not have. See [Refusals and fallback](https://platform.claude.com/docs/en/build-with-claude/refusals-and-fallback).
-* Re-baseline token counts and costs on your own workloads. Token counts are roughly unchanged when migrating from `claude-mythos-preview`.
-
-### Migrating to Claude Mythos 5 and Claude Fable 5 from Claude Opus 5
-
-Claude Fable 5 and Claude Mythos 5 use the same [Messages API](https://platform.claude.com/docs/en/build-with-claude/working-with-messages) and the same [tool use](https://platform.claude.com/docs/en/agents-and-tools/tool-use/overview) patterns as Claude Opus 5, with the same [1M token context window](https://platform.claude.com/docs/en/build-with-claude/context-windows) by default and the same [128k max output tokens](https://platform.claude.com/docs/en/models/overview). The prefill and sampling-parameter restrictions, and the thinking display behavior, carry over from Claude Opus 5 unchanged. The changes to check are always-on thinking, pricing, Priority Tier, and data retention.
-
-#### Update your model name
-
-```python
-model = "claude-opus-5" # Before
-model = "claude-fable-5" # After
-
-# Or, for the Project Glasswing model with the same capabilities:
-model = "claude-mythos-5" # After
-```
-
-#### What changed
-
-1. **Thinking can no longer be disabled:** On Claude Opus 5, thinking is on by default and can be turned off with `thinking: {type: "disabled"}` at an [effort](https://platform.claude.com/docs/en/build-with-claude/effort) level of `high` or below. On `claude-fable-5` and `claude-mythos-5`, [adaptive thinking](https://platform.claude.com/docs/en/build-with-claude/thinking) is always on, and `thinking: {type: "disabled"}` returns a 400 error at any effort level. Remove the `thinking: {type: "disabled"}` configuration and use lower effort levels to control token spend instead.
-
-2. **Pricing:** Claude Fable 5 and Claude Mythos 5 are priced at $10 USD per million input tokens and $50 USD per million output tokens, compared with $5 USD and $25 USD for Claude Opus 5. See [Claude pricing](https://platform.claude.com/docs/en/about-claude/pricing).
-
-3. **Priority Tier:** [Priority Tier](https://platform.claude.com/docs/en/api/service-tiers#supported-models) is not supported on Claude Opus 5, so no existing traffic is affected. If your organization has a Priority Tier commitment, Claude Fable 5 supports it; Claude Mythos 5 does not.
-
-4. **Data retention:** Claude Fable 5 and Claude Mythos 5 require 30-day data retention and are not available under zero data retention (ZDR) arrangements; both are designated Covered Models. See [Model-specific data retention requirements](https://platform.claude.com/docs/en/manage-claude/api-and-data-retention#model-specific-data-retention-requirements).
-
-#### Migration checklist
-
-* Update the model name from `claude-opus-5` to `claude-fable-5` (or `claude-mythos-5`).
-* Remove any `thinking: {type: "disabled"}` configuration; it returns a 400 error on `claude-fable-5` and `claude-mythos-5`. Use lower [effort](https://platform.claude.com/docs/en/build-with-claude/effort) levels to control token spend instead, and revisit `max_tokens` for workloads that ran with thinking disabled on Claude Opus 5.
-* If your organization has a zero data retention (ZDR) arrangement, confirm eligibility before migrating. See [Model-specific data retention requirements](https://platform.claude.com/docs/en/manage-claude/api-and-data-retention#model-specific-data-retention-requirements).
-* Re-baseline cost on your own workloads. Token counts are roughly unchanged; per-token pricing differs.
-
-### Migrating to Claude Mythos 5 and Claude Fable 5 from Claude Opus 4.8
-
-
- If your code is on Claude Opus 4.7 or earlier, first apply the relevant [Migrating to Claude Opus 5](https://platform.claude.com/docs/en/about-claude/models/migration-guide#migrating-to-claude-opus-5) from-section for the API-level changes from your current model, then the remaining delta in this section.
-
-
-Migration is mostly drop-in. Claude Fable 5 and Claude Mythos 5 use the same [Messages API](https://platform.claude.com/docs/en/build-with-claude/working-with-messages) and the same [tool use](https://platform.claude.com/docs/en/agents-and-tools/tool-use/overview) patterns as Claude Opus 4.8, with the same [1M token context window](https://platform.claude.com/docs/en/build-with-claude/context-windows) by default and the same [128k max output tokens](https://platform.claude.com/docs/en/models/overview). Token counts are roughly unchanged because the models use the same tokenizer. The key changes to check are always-on [adaptive thinking](https://platform.claude.com/docs/en/build-with-claude/thinking), thinking output, safety classifier refusals (Claude Fable 5 only), and pricing.
-
-#### Update your model name
-
-```python
-model = "claude-opus-4-8" # Before
-model = "claude-fable-5" # After
-
-# Or, for the Project Glasswing model with the same capabilities:
-model = "claude-mythos-5" # After
-```
-
-#### What changed
-
-The items in this section describe the API and behavior differences worth checking after you swap the model ID. Except where noted, they apply equally to `claude-fable-5` and `claude-mythos-5`.
-
-1. **Adaptive thinking is always on:** [Adaptive thinking](https://platform.claude.com/docs/en/build-with-claude/thinking) is the only thinking mode on `claude-fable-5` and `claude-mythos-5`. The model determines when and how much to think on each request, and no `thinking` configuration is required. `thinking: {type: "disabled"}` returns an error. Use the [effort parameter](https://platform.claude.com/docs/en/build-with-claude/effort) to control thinking depth.
-
- The behavior change to check: on Claude Opus 4.8, requests without a `thinking` field run without thinking; on `claude-fable-5` and `claude-mythos-5`, those same requests run with adaptive thinking. `max_tokens` remains a hard limit on total output, thinking plus response text, so revisit it for workloads that ran without thinking on Claude Opus 4.8. See [Cost control](https://platform.claude.com/docs/en/build-with-claude/thinking-steering-and-cost#cost-control).
-
- Before (Claude Opus 4.8):
-
-
- ```bash cURL
- curl https://api.anthropic.com/v1/messages \
- -H "x-api-key: $ANTHROPIC_API_KEY" \
- -H "anthropic-version: 2023-06-01" \
- -H "content-type: application/json" \
- -d '{
- "model": "claude-opus-4-8",
- "max_tokens": 16000,
- "thinking": {
- "type": "adaptive"
- },
- "output_config": {
- "effort": "high"
- },
- "messages": [
- {
- "role": "user",
- "content": "..."
- }
- ]
- }'
- ```
-
- ```bash CLI
- ant messages create <<'YAML'
- model: claude-opus-4-8
- max_tokens: 16000
- thinking:
- type: adaptive
- output_config:
- effort: high
- messages:
- - role: user
- content: "..."
- YAML
- ```
-
- ```python Python
- client.messages.create(
- model="claude-opus-4-8",
- max_tokens=16000,
- thinking={"type": "adaptive"},
- output_config={"effort": "high"},
- messages=[{"role": "user", "content": "..."}],
- )
- ```
-
- ```typescript TypeScript
- await client.messages.create({
- model: "claude-opus-4-8",
- max_tokens: 16000,
- thinking: { type: "adaptive" },
- output_config: { effort: "high" },
- messages: [{ role: "user", content: "..." }]
- });
- ```
-
- ```csharp C#
- using Anthropic;
- using Anthropic.Models.Messages;
-
- AnthropicClient client = new();
-
- var parameters = new MessageCreateParams
- {
- Model = "claude-opus-4-8",
- MaxTokens = 16000,
- Thinking = new ThinkingConfigAdaptive(),
- OutputConfig = new OutputConfig { Effort = Effort.High },
- Messages = [new() { Role = Role.User, Content = "..." }]
- };
-
- var response = await client.Messages.Create(parameters);
- Console.WriteLine(response);
- ```
-
- ```go Go
- client := anthropic.NewClient()
-
- response, err := client.Messages.New(context.TODO(), anthropic.MessageNewParams{
- Model: "claude-opus-4-8",
- MaxTokens: 16000,
- Thinking: anthropic.ThinkingConfigParamUnion{
- OfAdaptive: &anthropic.ThinkingConfigAdaptiveParam{},
- },
- OutputConfig: anthropic.OutputConfigParam{
- Effort: anthropic.OutputConfigEffortHigh,
- },
- Messages: []anthropic.MessageParam{
- anthropic.NewUserMessage(anthropic.NewTextBlock("...")),
- },
- })
- if err != nil {
- log.Fatal(err)
- }
- fmt.Println(response)
- ```
-
- ```java Java
- AnthropicClient client = AnthropicOkHttpClient.fromEnv();
-
- MessageCreateParams params = MessageCreateParams.builder()
- .model("claude-opus-4-8")
- .maxTokens(16000L)
- .thinking(ThinkingConfigAdaptive.builder().build())
- .outputConfig(OutputConfig.builder()
- .effort(OutputConfig.Effort.HIGH)
- .build())
- .addUserMessage("...")
- .build();
-
- Message response = client.messages().create(params);
- IO.println(response);
- ```
-
- ```php PHP
- $client = new Client();
-
- $message = $client->messages->create(
- maxTokens: 16000,
- messages: [['role' => 'user', 'content' => '...']],
- model: 'claude-opus-4-8',
- thinking: ['type' => 'adaptive'],
- outputConfig: ['effort' => 'high'],
- );
- ```
-
- ```ruby Ruby
- client = Anthropic::Client.new
-
- message = client.messages.create(
- model: "claude-opus-4-8",
- max_tokens: 16000,
- thinking: {
- type: "adaptive"
- },
- output_config: {
- effort: "high"
- },
- messages: [
- { role: "user", content: "..." }
- ]
- )
- ```
-
-
- After (Claude Fable 5):
-
-
- ```bash cURL
- curl https://api.anthropic.com/v1/messages \
- -H "x-api-key: $ANTHROPIC_API_KEY" \
- -H "anthropic-version: 2023-06-01" \
- -H "content-type: application/json" \
- -d '{
- "model": "claude-fable-5",
- "max_tokens": 16000,
- "output_config": {
- "effort": "high"
- },
- "messages": [
- {
- "role": "user",
- "content": "..."
- }
- ]
- }'
- ```
-
- ```bash CLI
- ant messages create <<'YAML'
- model: claude-fable-5
- max_tokens: 16000
- output_config:
- effort: high
- messages:
- - role: user
- content: "..."
- YAML
- ```
-
- ```python Python
- client.messages.create(
- model="claude-fable-5",
- max_tokens=16000,
- output_config={"effort": "high"},
- messages=[{"role": "user", "content": "..."}],
- )
- ```
-
- ```typescript TypeScript
- await client.messages.create({
- model: "claude-fable-5",
- max_tokens: 16000,
- output_config: { effort: "high" },
- messages: [{ role: "user", content: "..." }]
- });
- ```
-
- ```csharp C#
- using Anthropic;
- using Anthropic.Models.Messages;
-
- AnthropicClient client = new();
-
- var parameters = new MessageCreateParams
- {
- Model = "claude-fable-5",
- MaxTokens = 16000,
- OutputConfig = new OutputConfig { Effort = Effort.High },
- Messages = [new() { Role = Role.User, Content = "..." }]
- };
-
- var response = await client.Messages.Create(parameters);
- Console.WriteLine(response);
- ```
-
- ```go Go
- client := anthropic.NewClient()
-
- response, err := client.Messages.New(context.TODO(), anthropic.MessageNewParams{
- Model: "claude-fable-5",
- MaxTokens: 16000,
- OutputConfig: anthropic.OutputConfigParam{
- Effort: anthropic.OutputConfigEffortHigh,
- },
- Messages: []anthropic.MessageParam{
- anthropic.NewUserMessage(anthropic.NewTextBlock("...")),
- },
- })
- if err != nil {
- log.Fatal(err)
- }
- fmt.Println(response)
- ```
-
- ```java Java
- AnthropicClient client = AnthropicOkHttpClient.fromEnv();
-
- MessageCreateParams params = MessageCreateParams.builder()
- .model("claude-fable-5")
- .maxTokens(16000L)
- .outputConfig(OutputConfig.builder()
- .effort(OutputConfig.Effort.HIGH)
- .build())
- .addUserMessage("...")
- .build();
-
- Message response = client.messages().create(params);
- IO.println(response);
- ```
-
- ```php PHP
- $client = new Client();
-
- $message = $client->messages->create(
- maxTokens: 16000,
- messages: [['role' => 'user', 'content' => '...']],
- model: 'claude-fable-5',
- outputConfig: ['effort' => 'high'],
- );
- ```
-
- ```ruby Ruby
- client = Anthropic::Client.new
-
- message = client.messages.create(
- model: "claude-fable-5",
- max_tokens: 16000,
- output_config: {
- effort: "high"
- },
- messages: [
- { role: "user", content: "..." }
- ]
- )
- ```
-
-
- The change for Claude Mythos 5 is identical, with `claude-mythos-5` as the model name.
-
-2. **Extended thinking and thinking budgets (unchanged):** Manual extended thinking (`thinking: {type: "enabled", budget_tokens: N}`) is not supported on `claude-fable-5` or `claude-mythos-5` and returns a 400 error, the same as on Claude Opus 4.8. `budget_tokens` has no direct replacement: thinking is adaptive, and the [effort parameter](https://platform.claude.com/docs/en/build-with-claude/effort) is a separate output-level control, not a thinking budget.
-
-3. **Assistant prefill (unchanged):** Prefilling the assistant message is not supported on `claude-fable-5` or `claude-mythos-5` and returns a 400 error, the same as on Claude Opus 4.8. Use system prompt instructions instead.
-
-4. **Thinking output:** On `claude-fable-5` and `claude-mythos-5`, the raw chain of thought is never returned, but thinking blocks still carry readable summarized text when `thinking.display` is set to `summarized`. Pass thinking blocks back unchanged when continuing a conversation on the same model. See [Thinking output on Claude Fable 5 and Claude Mythos 5](https://platform.claude.com/docs/en/build-with-claude/thinking#thinking-output-on-claude-fable-5-and-claude-mythos-5).
-
-5. **Safety classifiers and the `refusal` stop reason (Claude Fable 5 only):** `claude-fable-5` runs safety classifiers on requests and during response generation. Claude Mythos 5 does not include these classifiers. When a classifier declines a request, the Messages API returns `stop_reason: "refusal"` as a successful HTTP 200 response, not an error. The `stop_details.category` field reports which classifier fired, with categories such as `"cyber"`, `"bio"`, and `"reasoning_extraction"`, or `null` when the refusal maps to no named category. See the [refusal category table](https://platform.claude.com/docs/en/build-with-claude/refusals-and-fallback#refusal-response) for the full set.
-
- You are not billed for the input tokens of a request refused before any output is generated. When a classifier fires mid-stream, the input and already-streamed output are billed; discard the partial output.
-
- To re-run refused requests on another model automatically, pass the opt-in `fallbacks` parameter, which is in beta on the Claude API. The parameter is not available on the Message Batches API or on Amazon Bedrock, Google Cloud, and Microsoft Foundry; on those three platforms, run the retry client-side or use the SDK refusal-fallback middleware. See [Refusals and fallback](https://platform.claude.com/docs/en/build-with-claude/refusals-and-fallback).
-
-6. **Start at `high` effort:** The [effort parameter](https://platform.claude.com/docs/en/build-with-claude/effort) default remains `high`. On Claude Opus 4.8, the recommendation for coding and high-autonomy work is to set `xhigh` explicitly. On `claude-fable-5` and `claude-mythos-5`, use `high` as the default for most tasks and reserve `xhigh` for the most capability-sensitive workloads. Lower effort settings still perform well and often exceed `xhigh` performance on prior models. Reduce effort if a task completes but takes longer than necessary. See [Prompting Claude Fable 5](https://platform.claude.com/docs/en/build-with-claude/prompt-engineering/prompting-claude-fable-5#consider-all-effort-levels).
-
-7. **Lower prompt caching minimum:** The minimum cacheable prompt length on `claude-fable-5` and `claude-mythos-5` is 512 tokens, lower than the 1,024 tokens on Claude Opus 4.8. Prompts that were too short to cache on Claude Opus 4.8 can now create cache entries, with no code changes required. See [Prompt caching](https://platform.claude.com/docs/en/build-with-claude/prompt-caching#cache-limitations) for per-model minimums.
-
-#### Migration checklist
-
-* If your organization has a zero data retention (ZDR) arrangement, confirm eligibility before migrating. `claude-fable-5` and `claude-mythos-5` require 30-day data retention; on the Claude API, requests to `claude-fable-5` that do not meet this requirement return a 400 `invalid_request_error`. Claude Opus 4.8 remains available under ZDR. See [Model-specific data retention requirements](https://platform.claude.com/docs/en/manage-claude/api-and-data-retention#model-specific-data-retention-requirements).
-* Update the model name from `claude-opus-4-8` to `claude-fable-5` (or `claude-mythos-5`).
-* Remove any `thinking: {type: "disabled"}` configuration. Disabling thinking returns an error on `claude-fable-5` and `claude-mythos-5`, and requests without a `thinking` field run with adaptive thinking.
-* If you removed manual extended thinking and assistant prefills during earlier migrations, no action is needed: both remain unsupported on `claude-fable-5` and `claude-mythos-5`.
-* Verify any code that parses the `thinking` field treats it as display text only and passes thinking blocks back unchanged when continuing on the same model. `thinking.display` defaults to `"omitted"` on `claude-fable-5` and `claude-mythos-5`, the same as on Claude Opus 4.8; set `display: "summarized"` to receive readable summaries. See [Thinking output on Claude Fable 5 and Claude Mythos 5](https://platform.claude.com/docs/en/build-with-claude/thinking#thinking-output-on-claude-fable-5-and-claude-mythos-5).
-* If you replay conversation history on another model, strip `thinking` and `redacted_thinking` blocks from prior assistant turns first. Thinking blocks from `claude-fable-5` and `claude-mythos-5` are tied to the model that produced them, and models other than Claude Fable 5 and Claude Mythos 5 silently ignore them. Stripping keeps cross-model requests minimal and uniform. The exception is redeeming a [fallback credit](https://platform.claude.com/docs/en/build-with-claude/fallback-credit), which requires the request body echoed under that feature's exact rules.
-* If you migrate to Claude Fable 5, handle `stop_reason: "refusal"` and read the `stop_details.category` field. To re-run refused requests on another model automatically, consider the opt-in `fallbacks` parameter (beta). See [Refusals and fallback](https://platform.claude.com/docs/en/build-with-claude/refusals-and-fallback).
-* Re-evaluate your `effort` setting. Start at `high` for most tasks, including workloads that ran at `xhigh` on Claude Opus 4.8.
-* Re-baseline cost and latency on your own workloads. Token counts are roughly unchanged when migrating from `claude-opus-4-8`; per-token pricing differs.
-
-## Migrating to Claude Opus 5
-
-Claude Opus 5 is a step-change improvement over Claude Opus 4.8, strong on deep reasoning, agentic and long-horizon tasks, and test-time compute scaling. For behavioral differences and model-specific prompting patterns, see [Prompting Claude Opus 5](https://platform.claude.com/docs/en/build-with-claude/prompt-engineering/prompting-claude-opus-5).
-
-Claude Opus 5 is a drop-in upgrade for Claude Opus 4.8 at the same pricing of $5 per million input tokens and $25 per million output tokens; see [Claude pricing](https://platform.claude.com/docs/en/about-claude/pricing). There are two breaking changes for code already running on Claude Opus 4.8, covered under Breaking changes below. Claude Opus 5 supports the same set of features as Claude Opus 4.8, including the [1M token context window](https://platform.claude.com/docs/en/build-with-claude/context-windows) (the default, with no beta header), [128k max output tokens](https://platform.claude.com/docs/en/models/overview), [adaptive thinking](https://platform.claude.com/docs/en/build-with-claude/thinking), [prompt caching](https://platform.claude.com/docs/en/build-with-claude/prompt-caching), [batch processing](https://platform.claude.com/docs/en/build-with-claude/batch-processing), the [Files API](https://platform.claude.com/docs/en/build-with-claude/files), [PDF support](https://platform.claude.com/docs/en/build-with-claude/pdf-support), [vision](https://platform.claude.com/docs/en/build-with-claude/vision), and server-side and client-side [tools](https://platform.claude.com/docs/en/agents-and-tools/tool-use/overview), with two exceptions: [web fetch](https://platform.claude.com/docs/en/agents-and-tools/tool-use/web-fetch-tool) is not available on Claude Opus 5, and [Priority Tier](https://platform.claude.com/docs/en/api/service-tiers#supported-models) is not supported on Claude Opus 5. See each tool page for model availability.
-
-### Migrating to Claude Opus 5 from Claude Opus 4.8
-
-
- This section covers the delta from Claude Opus 4.8 only. If your code is on Claude Opus 4.7 or earlier, use the sections below instead: [Migrating to Claude Opus 5 from Claude Opus 4.7](https://platform.claude.com/docs/en/about-claude/models/migration-guide#migrating-from-claude-opus-47) or [Migrating to Claude Opus 5 from Claude Opus 4.6 and earlier Opus models](https://platform.claude.com/docs/en/about-claude/models/migration-guide#migrating-from-claude-opus-46). They include this delta plus the breaking changes from earlier models (sampling parameters rejected, manual extended thinking rejected, prefill removed, new tokenizer).
-
-
-#### Update your model name
-
-```python
-# Opus migration
-model = "claude-opus-4-8" # Before
-model = "claude-opus-5" # After
-```
-
-`claude-opus-5` is a fixed model ID with no date suffix, the same scheme as `claude-opus-4-8` and `claude-sonnet-5`.
-
-#### Breaking changes
-
-1. **Thinking on by default:** On Claude Opus 4.8, requests without a `thinking` field run without thinking; on Claude Opus 5, the same requests run with [adaptive thinking](https://platform.claude.com/docs/en/build-with-claude/thinking). `max_tokens` remains a hard limit on total output, thinking plus response text, so revisit it for workloads that ran without thinking on Claude Opus 4.8. To preserve the old behavior, pass `thinking: {type: "disabled"}`, subject to the effort cap in the next item; note that with thinking disabled the model can occasionally emit tool calls as plain text or include internal XML tags in its visible output, so prefer lower effort levels with thinking enabled where you can, and see [Running with thinking disabled](https://platform.claude.com/docs/en/build-with-claude/prompt-engineering/prompting-claude-opus-5#running-with-thinking-disabled) for mitigations where you can't.
-
-2. **Disabling thinking is capped at `high` effort:** You can still turn thinking off with `thinking: {type: "disabled"}`, but only at an [effort](https://platform.claude.com/docs/en/build-with-claude/effort) level of `high` or below. A request that combines `thinking: {type: "disabled"}` with effort `xhigh` or `max` returns a 400 error. Claude Opus 4.8 accepts this combination, so audit requests that disable thinking before you migrate.
-
- The check is enforced on each request: every request's effort and thinking configuration is validated independently, so a request that raises effort to `xhigh` or `max` while thinking is disabled is rejected even if earlier requests in the conversation were accepted.
-
- Before (accepted on Claude Opus 4.8, rejected on Claude Opus 5):
-
- ```python
- client.messages.create(
- model="claude-opus-4-8",
- max_tokens=16000,
- thinking={"type": "disabled"},
- output_config={"effort": "xhigh"},
- messages=[{"role": "user", "content": "..."}],
- )
- ```
-
- After (Claude Opus 5), either remove the `thinking` field to re-enable thinking:
-
- ```python
- client.messages.create(
- model="claude-opus-5",
- max_tokens=16000,
- output_config={"effort": "xhigh"}, # thinking is on by default
- messages=[{"role": "user", "content": "..."}],
- )
- ```
-
- or keep thinking disabled and lower the effort:
-
- ```python
- client.messages.create(
- model="claude-opus-5",
- max_tokens=16000,
- thinking={"type": "disabled"},
- output_config={"effort": "high"}, # or "medium", "low"
- messages=[{"role": "user", "content": "..."}],
- )
- ```
-
-#### Recommended changes
-
-These are not required but will improve your experience:
-
-1. **Test `max` effort for capability-critical work:** Claude Opus 5 supports the full set of [effort levels](https://platform.claude.com/docs/en/build-with-claude/effort) (`low`, `medium`, `high`, `xhigh`, `max`). Where maximum capability matters more than token spend, test `max` effort. It can deliver gains on the most demanding tasks but may show diminishing returns from increased token usage and can be prone to overthinking on simpler ones. If you run at `xhigh` or `max` effort, set a large `max_tokens` so the model has room to think and act; start at 64k tokens and tune from there.
-
-2. **Consider automatic fallbacks:** Claude Opus 5 ships with cybersecurity safety classifiers whose cyber-category refusals can fall back to Claude Opus 4.8. To re-run refused requests on another model automatically, consider the `fallbacks` parameter with the `"default"` mode (`fallbacks: "default"`), which selects a recommended fallback model based on the refusal category instead of a hand-maintained model list. Server-side fallback is in beta; the `"default"` mode requires the `server-side-fallback-2026-07-01` beta header. See [Refusals and fallback](https://platform.claude.com/docs/en/build-with-claude/refusals-and-fallback).
-
-3. **Cache shorter prompts:** The minimum cacheable prompt length on Claude Opus 5 is 512 tokens, down from 1,024 tokens on Claude Opus 4.8. Prompts that were too short to cache on Claude Opus 4.8 can now create cache entries, with no code changes required. See [Prompt caching](https://platform.claude.com/docs/en/build-with-claude/prompt-caching#cache-limitations) for per-model minimums.
-
-4. **Change tools mid-conversation (beta):** You can add or remove tools between turns of a conversation without invalidating [prompt cache](https://platform.claude.com/docs/en/build-with-claude/prompt-caching) hits on earlier turns. Send the beta header `mid-conversation-tool-changes-2026-07-01`. This is useful for agentic workloads that expose tools progressively or retire them as a task advances; without it, a changed tool list invalidates the cached prefix.
-
-5. **Re-tune length and verbosity prompts:** Default visible responses and written deliverables run longer on Claude Opus 5 than on Claude Opus 4.8, and lowering effort reduces thinking volume without reliably shortening the visible response. Prompt explicitly for conciseness or a target length instead. See [Response length and verbosity](https://platform.claude.com/docs/en/build-with-claude/prompt-engineering/prompting-claude-opus-5#response-length-and-verbosity) and [Written deliverable length](https://platform.claude.com/docs/en/build-with-claude/prompt-engineering/prompting-claude-opus-5#written-deliverable-length).
-
-6. **Remove carried-over verification instructions and constrain scope:** Claude Opus 5 verifies its own work without being told to, so remove explicit verification or self-check instructions carried over from prompts tuned for earlier models; leaving them in causes over-verification. For narrow tasks, constrain the task scope explicitly. In multi-agent frameworks, give explicit guidance on which scenarios warrant delegation or cap the number of subagents, because Claude Opus 5 delegates more readily than earlier models. See [Task scope and over-verification](https://platform.claude.com/docs/en/build-with-claude/prompt-engineering/prompting-claude-opus-5#task-scope-and-over-verification) and [Controlling subagent spawning](https://platform.claude.com/docs/en/build-with-claude/prompt-engineering/prompting-claude-opus-5#controlling-subagent-spawning).
-
-#### Migration checklist
-
-* Update the model name from `claude-opus-4-8` to `claude-opus-5`.
-* Review workloads that ran without a `thinking` field: they run with thinking on Claude Opus 5. Revisit `max_tokens`, which remains a hard limit on total output (thinking plus response text), or pass `thinking: {type: "disabled"}` at effort `high` or below to preserve the old behavior. If you disable thinking, review [Running with thinking disabled](https://platform.claude.com/docs/en/build-with-claude/prompt-engineering/prompting-claude-opus-5#running-with-thinking-disabled) for the output artifacts that can appear and their prompting mitigations.
-* Audit requests that disable thinking: `thinking: {type: "disabled"}` with effort `xhigh` or `max` returns a 400 error, enforced on each request. Re-enable thinking or lower the effort to `high` or below.
-* Re-evaluate your `effort` setting: run a fresh [effort](https://platform.claude.com/docs/en/build-with-claude/effort) sweep on your own evals rather than carrying over a setting tuned for an earlier model. `low` and `medium` effort are worth testing as cost and latency controls, and test `max` effort where maximum capability matters more than token spend. If you run at `xhigh` or `max` effort, raise `max_tokens` to at least 64k as a starting point.
-* Review prompts near the caching minimum: prompts of 512 tokens or more can now create cache entries, down from 1,024 tokens on Claude Opus 4.8.
-* Handle `stop_reason: "refusal"`, and consider `fallbacks: "default"` (beta) to re-run refused requests on a recommended fallback model automatically.
-* If your organization has a [Priority Tier](https://platform.claude.com/docs/en/api/service-tiers#supported-models) commitment, plan capacity separately: Priority Tier is not supported on Claude Opus 5, while Claude Opus 4.8 keeps it.
-* For agentic workloads, consider [task budgets](https://platform.claude.com/docs/en/build-with-claude/task-budgets) (beta) and mid-conversation tool changes (beta).
-* Re-tune length and verbosity prompts: default visible responses and written deliverables run longer on Claude Opus 5, and lowering effort reduces thinking volume without reliably shortening the visible response. Prompt explicitly for conciseness or a target length. See [Response length and verbosity](https://platform.claude.com/docs/en/build-with-claude/prompt-engineering/prompting-claude-opus-5#response-length-and-verbosity) and [Written deliverable length](https://platform.claude.com/docs/en/build-with-claude/prompt-engineering/prompting-claude-opus-5#written-deliverable-length).
-* Remove verification and self-check instructions carried over from prompts tuned for earlier models (they cause over-verification on Claude Opus 5), constrain task scope explicitly for narrow tasks, and in multi-agent frameworks steer or cap subagent delegation. See [Task scope and over-verification](https://platform.claude.com/docs/en/build-with-claude/prompt-engineering/prompting-claude-opus-5#task-scope-and-over-verification) and [Controlling subagent spawning](https://platform.claude.com/docs/en/build-with-claude/prompt-engineering/prompting-claude-opus-5#controlling-subagent-spawning).
-* Re-baseline cost and latency on your own workloads.
-
-### Migrating to Claude Opus 5 from Claude Opus 4.7
-
-Claude Opus 5 should have strong out-of-the-box performance on existing Claude Opus 4.7 prompts and evals, at the same pricing of $5 per million input tokens and $25 per million output tokens. It supports the same set of features as Claude Opus 4.7, including the [1M token context window](https://platform.claude.com/docs/en/build-with-claude/context-windows), [128k max output tokens](https://platform.claude.com/docs/en/models/overview), [adaptive thinking](https://platform.claude.com/docs/en/build-with-claude/thinking), [prompt caching](https://platform.claude.com/docs/en/build-with-claude/prompt-caching), [batch processing](https://platform.claude.com/docs/en/build-with-claude/batch-processing), the [Files API](https://platform.claude.com/docs/en/build-with-claude/files), [PDF support](https://platform.claude.com/docs/en/build-with-claude/pdf-support), [vision](https://platform.claude.com/docs/en/build-with-claude/vision), and server-side and client-side [tools](https://platform.claude.com/docs/en/agents-and-tools/tool-use/overview), with two exceptions: [web fetch](https://platform.claude.com/docs/en/agents-and-tools/tool-use/web-fetch-tool) is not available on Claude Opus 5, and [Priority Tier](https://platform.claude.com/docs/en/api/service-tiers#supported-models) is not supported on Claude Opus 5. It also adds [mid-conversation system messages](https://platform.claude.com/docs/en/build-with-claude/mid-conversation-system-messages) and publicly documents [refusal stop details](https://platform.claude.com/docs/en/build-with-claude/refusals-and-fallback#refusal-response). On the Claude API, Claude Opus 5 also supports [computer use](https://platform.claude.com/docs/en/agents-and-tools/tool-use/computer-use-tool) as the stable `computer_toolset_20260801` toolset and the [browser use tool](https://platform.claude.com/docs/en/agents-and-tools/tool-use/browser-use-tool) for tasks inside webpages, neither of which Claude Opus 4.7 supports; existing integrations on the earlier `computer_20251124` version continue to work unchanged on both models. To upgrade an existing integration, see [Migrate from `computer_20251124`](https://platform.claude.com/docs/en/agents-and-tools/tool-use/computer-use-tool#migrate-from-computer-20251124).
-
-
- If your code is on Claude Opus 4.6 or earlier, use [Migrating to Claude Opus 5 from Claude Opus 4.6 and earlier Opus models](https://platform.claude.com/docs/en/about-claude/models/migration-guide#migrating-from-claude-opus-46) instead. That section includes breaking changes (sampling parameters rejected, manual extended thinking rejected, new tokenizer) that the upgrade from Claude Opus 4.7 alone does not cover.
-
-
-#### Update your model name
-
-```python
-# Opus migration
-model = "claude-opus-4-7" # Before
-model = "claude-opus-5" # After
-```
-
-#### Breaking changes
-
-1. **Thinking on by default:** On Claude Opus 4.7, requests without a `thinking` field run without thinking; on Claude Opus 5, the same requests run with [adaptive thinking](https://platform.claude.com/docs/en/build-with-claude/thinking). `max_tokens` remains a hard limit on total output, thinking plus response text, so revisit it for workloads that ran without thinking on Claude Opus 4.7. To preserve the old behavior, pass `thinking: {type: "disabled"}`, subject to the effort cap in the next item; note that with thinking disabled the model can occasionally emit tool calls as plain text or include internal XML tags in its visible output, so prefer lower effort levels with thinking enabled where you can, and see [Running with thinking disabled](https://platform.claude.com/docs/en/build-with-claude/prompt-engineering/prompting-claude-opus-5#running-with-thinking-disabled) for mitigations where you can't.
-
-2. **Disabling thinking is capped at `high` effort:** You can turn thinking off with `thinking: {type: "disabled"}`, but only at an [effort](https://platform.claude.com/docs/en/build-with-claude/effort) level of `high` or below. A request that combines `thinking: {type: "disabled"}` with effort `xhigh` or `max` returns a 400 error. Claude Opus 4.7 accepts this combination, so audit requests that disable thinking before you migrate.
-
- The check is enforced on each request: every request's effort and thinking configuration is validated independently, so a request that raises effort to `xhigh` or `max` while thinking is disabled is rejected even if earlier requests in the conversation were accepted.
-
- Before (accepted on Claude Opus 4.7, rejected on Claude Opus 5):
-
- ```python
- client.messages.create(
- model="claude-opus-4-7",
- max_tokens=16000,
- thinking={"type": "disabled"},
- output_config={"effort": "xhigh"},
- messages=[{"role": "user", "content": "..."}],
- )
- ```
-
- After (Claude Opus 5), either remove the `thinking` field to run with thinking:
-
- ```python
- client.messages.create(
- model="claude-opus-5",
- max_tokens=16000,
- output_config={"effort": "xhigh"}, # thinking is on by default
- messages=[{"role": "user", "content": "..."}],
- )
- ```
-
- or keep thinking disabled and lower the effort:
-
- ```python
- client.messages.create(
- model="claude-opus-5",
- max_tokens=16000,
- thinking={"type": "disabled"},
- output_config={"effort": "high"}, # or "medium", "low"
- messages=[{"role": "user", "content": "..."}],
- )
- ```
-
-#### What changed
-
-The following items are not breaking changes; they describe behavior differences worth checking after you swap the model ID.
-
-1. **Sampling parameters (unchanged):** Setting `temperature`, `top_p`, or `top_k` to a non-default value returns a 400 error on Claude Opus 5, the same as on Claude Opus 4.7. Most SDKs still define these fields for compatibility with earlier models, so code that sets them type-checks even though the API rejects the request. The Python SDK (v1.0 and later) does not define them, and passing them raises a `TypeError`. If you removed these parameters when migrating to Opus 4.7, no further changes are needed.
-
-2. **Effort default is `high`:** The [effort parameter](https://platform.claude.com/docs/en/build-with-claude/effort) default on Claude Opus 5 is `high` on the Claude API and Claude Code. If you already set effort explicitly, your setting is unchanged.
-
-3. **Effort levels recalibrated:** The token allocation behind each effort level changes on Claude Opus 5 compared to Claude Opus 4.7, and Claude Opus 5 supports the full set of effort levels (`low`, `medium`, `high`, `xhigh`, `max`). Run a fresh effort sweep on your own evals rather than carrying over a setting tuned for Claude Opus 4.7. `low` and `medium` effort are worth testing as cost and latency controls, and test `max` effort where maximum capability matters more than token spend. If you run at `xhigh` or `max` effort, set a large `max_tokens` so the model has room to think and act; start at 64k tokens and tune from there. See [Effort](https://platform.claude.com/docs/en/build-with-claude/effort).
-
-4. **1M context window is the default:** Claude Opus 5 serves the full 1M token [context window](https://platform.claude.com/docs/en/build-with-claude/context-windows) by default with no beta header and no long-context premium. If your client passes a context-window beta header for compatibility with older models, you can remove it on Claude Opus 5.
-
-5. **Mid-conversation system messages:** Claude Opus 5 accepts `role: "system"` messages immediately after a user turn in the `messages` array (subject to [placement rules](https://platform.claude.com/docs/en/build-with-claude/mid-conversation-system-messages#limitations)). Use the top-level `system` field for instructions that apply from the start. Claude Opus 4.7 rejects `role: "system"` in `messages` with a 400 error. If you maintain code paths that rebuild the full message history to update instructions, you can simplify them and preserve [prompt cache](https://platform.claude.com/docs/en/build-with-claude/prompt-caching) hits on earlier turns.
-
-6. **Refusal stop details:** The `stop_details` object on refusal responses (available since Claude Opus 4.7) is now publicly documented. When the model declines a request, it identifies the category of refusal, in addition to the existing `refusal` stop reason. No beta header is required, and there is no opt-out. See [Handling stop reasons](https://platform.claude.com/docs/en/build-with-claude/handling-stop-reasons).
-
-7. **Lower prompt caching minimum:** The minimum cacheable prompt length on Claude Opus 5 is 512 tokens, lower than on Claude Opus 4.7. Prompts that were too short to cache on Claude Opus 4.7 can now create cache entries, with no code changes required. See [Prompt caching](https://platform.claude.com/docs/en/build-with-claude/prompt-caching#cache-limitations) for per-model minimums.
-
-8. **Fast mode:** Claude Opus 5 supports [fast mode](https://platform.claude.com/docs/en/build-with-claude/fast-mode) (research preview); fast mode is not available on Claude Opus 4.7, where requests with `speed: "fast"` return an error. The `speed: "fast"` parameter and `fast-mode-2026-02-01` beta header work unchanged on Claude Opus 5.
-
-#### Recommended changes
-
-These are not required but will improve your experience:
-
-1. **Consider automatic fallbacks:** Claude Opus 5 ships with cybersecurity safety classifiers whose cyber-category refusals can fall back to Claude Opus 4.8. To re-run refused requests on another model automatically, consider the `fallbacks` parameter with the `"default"` mode (`fallbacks: "default"`), which selects a recommended fallback model based on the refusal category instead of a hand-maintained model list. Server-side fallback is in beta; the `"default"` mode requires the `server-side-fallback-2026-07-01` beta header. See [Refusals and fallback](https://platform.claude.com/docs/en/build-with-claude/refusals-and-fallback).
-
-2. **Change tools mid-conversation (beta):** You can add or remove tools between turns of a conversation without invalidating [prompt cache](https://platform.claude.com/docs/en/build-with-claude/prompt-caching) hits on earlier turns. Send the beta header `mid-conversation-tool-changes-2026-07-01`. This is useful for agentic workloads that expose tools progressively or retire them as a task advances; without it, a changed tool list invalidates the cached prefix.
-
-3. **Re-tune length and verbosity prompts:** Default visible responses and written deliverables run longer on Claude Opus 5 than on earlier Opus models, and lowering effort reduces thinking volume without reliably shortening the visible response. Prompt explicitly for conciseness or a target length instead. See [Response length and verbosity](https://platform.claude.com/docs/en/build-with-claude/prompt-engineering/prompting-claude-opus-5#response-length-and-verbosity) and [Written deliverable length](https://platform.claude.com/docs/en/build-with-claude/prompt-engineering/prompting-claude-opus-5#written-deliverable-length).
-
-4. **Remove carried-over verification instructions and constrain scope:** Claude Opus 5 verifies its own work without being told to, so remove explicit verification or self-check instructions carried over from prompts tuned for earlier models; leaving them in causes over-verification. For narrow tasks, constrain the task scope explicitly. In multi-agent frameworks, give explicit guidance on which scenarios warrant delegation or cap the number of subagents, because Claude Opus 5 delegates more readily than earlier models. See [Task scope and over-verification](https://platform.claude.com/docs/en/build-with-claude/prompt-engineering/prompting-claude-opus-5#task-scope-and-over-verification) and [Controlling subagent spawning](https://platform.claude.com/docs/en/build-with-claude/prompt-engineering/prompting-claude-opus-5#controlling-subagent-spawning).
-
-#### Migration checklist
-
-* Update model name from `claude-opus-4-7` to `claude-opus-5` (or update aliases).
-* Review workloads that ran without a `thinking` field: they run with thinking on Claude Opus 5. Revisit `max_tokens`, which remains a hard limit on total output (thinking plus response text), or pass `thinking: {type: "disabled"}` at effort `high` or below to preserve the old behavior. If you disable thinking, review [Running with thinking disabled](https://platform.claude.com/docs/en/build-with-claude/prompt-engineering/prompting-claude-opus-5#running-with-thinking-disabled) for the output artifacts that can appear and their prompting mitigations.
-* Audit requests that disable thinking: `thinking: {type: "disabled"}` with effort `xhigh` or `max` returns a 400 error, enforced on each request. Re-enable thinking or lower the effort to `high` or below.
-* If you removed sampling parameters during the Opus 4.7 migration, no action is needed. If you re-added them with a 400-retry path, remove that retry path.
-* Re-evaluate your `effort` setting: run a fresh [effort](https://platform.claude.com/docs/en/build-with-claude/effort) sweep on your own evals rather than carrying over a setting tuned for Claude Opus 4.7. Test `low` and `medium` effort as cost and latency controls, and `max` effort where maximum capability matters more than token spend. If you run at `xhigh` or `max` effort, raise `max_tokens` to at least 64k as a starting point.
-* Remove any context-window beta header. The 1M context window is the default on the Claude API, Amazon Bedrock, Google Cloud, and Microsoft Foundry.
-* If you rebuild conversation history to update instructions, consider switching to a mid-conversation system message to preserve prompt cache hits.
-* Verify your stop-reason handling reads `stop_details` on refusals (available since Claude Opus 4.7; now publicly documented), and consider `fallbacks: "default"` (beta) to re-run refused requests on a recommended fallback model automatically.
-* Review prompts near the caching minimum: prompts of 512 tokens or more can now create cache entries.
-* If you use [web fetch](https://platform.claude.com/docs/en/agents-and-tools/tool-use/web-fetch-tool), plan an alternative: it is not available on Claude Opus 5.
-* If your organization has a [Priority Tier](https://platform.claude.com/docs/en/api/service-tiers#supported-models) commitment, note that Priority Tier is not supported on Claude Opus 5.
-* If you used fast mode on Claude Opus 4.7, no request changes are needed beyond the model ID: `speed: "fast"` and the `fast-mode-2026-02-01` beta header work unchanged on Claude Opus 5.
-* For agentic workloads, consider [task budgets](https://platform.claude.com/docs/en/build-with-claude/task-budgets) (beta) and mid-conversation tool changes (beta).
-* Re-tune length and verbosity prompts, and remove verification and self-check instructions carried over from prompts tuned for earlier models.
-* Re-baseline cost and latency at your chosen effort level.
-
-### Migrating to Claude Opus 5 from Claude Opus 4.6 and earlier Opus models
-
-Claude Opus 5 should have strong out-of-the-box performance on existing Claude Opus 4.6 prompts and evals at the same pricing, but there are a handful of behavioral and API changes worth knowing about as you migrate. Most of these changes took effect in Claude Opus 4.7; two more, thinking on by default and an effort cap on disabling thinking, take effect on Claude Opus 5. All of them are covered below, so this section is complete for code coming straight from Claude Opus 4.6. Claude Opus 5 supports the same set of features as Claude Opus 4.6, including:
-
-* [1M token context window](https://platform.claude.com/docs/en/build-with-claude/context-windows) at standard API pricing with no long-context premium
-* [128k max output tokens](https://platform.claude.com/docs/en/models/overview)
-* [Adaptive thinking](https://platform.claude.com/docs/en/build-with-claude/thinking)
-* [Prompt caching](https://platform.claude.com/docs/en/build-with-claude/prompt-caching)
-* [Batch processing](https://platform.claude.com/docs/en/build-with-claude/batch-processing)
-* [Files API](https://platform.claude.com/docs/en/build-with-claude/files)
-* [PDF support](https://platform.claude.com/docs/en/build-with-claude/pdf-support)
-* [Vision](https://platform.claude.com/docs/en/build-with-claude/vision)
-* Server-side and client-side [tools](https://platform.claude.com/docs/en/agents-and-tools/tool-use/overview) ([bash](https://platform.claude.com/docs/en/agents-and-tools/tool-use/bash-tool), [code execution](https://platform.claude.com/docs/en/agents-and-tools/tool-use/code-execution-tool), [computer use](https://platform.claude.com/docs/en/agents-and-tools/tool-use/computer-use-tool), [text editor](https://platform.claude.com/docs/en/agents-and-tools/tool-use/text-editor-tool), [web search](https://platform.claude.com/docs/en/agents-and-tools/tool-use/web-search-tool), [MCP connector](https://platform.claude.com/docs/en/agents-and-tools/mcp-connector), [memory](https://platform.claude.com/docs/en/agents-and-tools/tool-use/memory-tool))
-
-Two exceptions: [web fetch](https://platform.claude.com/docs/en/agents-and-tools/tool-use/web-fetch-tool) is not available on Claude Opus 5, and [Priority Tier](https://platform.claude.com/docs/en/api/service-tiers#supported-models) is not supported on Claude Opus 5. On the Claude API, Claude Opus 5 also supports [computer use](https://platform.claude.com/docs/en/agents-and-tools/tool-use/computer-use-tool) as the stable `computer_toolset_20260801` toolset and the [browser use tool](https://platform.claude.com/docs/en/agents-and-tools/tool-use/browser-use-tool) for tasks inside webpages, neither of which Claude Opus 4.6 or earlier Opus models support; existing integrations on the earlier `computer_20251124` version continue to work unchanged on Claude Opus 5. To upgrade an existing integration, see [Migrate from `computer_20251124`](https://platform.claude.com/docs/en/agents-and-tools/tool-use/computer-use-tool#migrate-from-computer-20251124).
-
-#### Update your model name
-
-```python
-# Opus migration
-model = "claude-opus-4-6" # Before
-model = "claude-opus-5" # After
-```
-
-#### Breaking changes
-
-1. **Extended thinking removed:** `thinking: {type: "enabled", budget_tokens: N}` is no longer supported on Claude Opus 4.7 or later models and returns a 400 error. Switch to [adaptive thinking](https://platform.claude.com/docs/en/build-with-claude/thinking) (`thinking: {type: "adaptive"}`) and use the [effort parameter](https://platform.claude.com/docs/en/build-with-claude/effort) to control thinking depth. On Claude Opus 5, adaptive thinking is **on by default**: `thinking: {type: "adaptive"}` is valid and equivalent to omitting the `thinking` field entirely (see the next item).
-
- Before (Claude Opus 4.6):
-
-
- ```bash cURL
- curl https://api.anthropic.com/v1/messages \
- -H "x-api-key: $ANTHROPIC_API_KEY" \
- -H "anthropic-version: 2023-06-01" \
- -H "content-type: application/json" \
- -d '{
- "model": "claude-opus-4-6",
- "max_tokens": 16000,
- "thinking": {
- "type": "enabled",
- "budget_tokens": 10000
- },
- "messages": [
- {
- "role": "user",
- "content": "..."
- }
- ]
- }'
- ```
-
- ```bash CLI
- ant messages create <<'YAML'
- model: claude-opus-4-6
- max_tokens: 16000
- thinking:
- type: enabled
- budget_tokens: 10000
- messages:
- - role: user
- content: "..."
- YAML
- ```
-
- ```python Python
- client.messages.create(
- model="claude-opus-4-6",
- max_tokens=16000,
- thinking={"type": "enabled", "budget_tokens": 10000},
- messages=[{"role": "user", "content": "..."}],
- )
- ```
-
- ```typescript TypeScript
- await client.messages.create({
- model: "claude-opus-4-6",
- max_tokens: 16000,
- thinking: { type: "enabled", budget_tokens: 10000 },
- messages: [{ role: "user", content: "..." }]
- });
- ```
-
- ```csharp C#
- using Anthropic;
- using Anthropic.Models.Messages;
-
- AnthropicClient client = new();
-
- var parameters = new MessageCreateParams
- {
- Model = "claude-opus-4-6",
- MaxTokens = 16000,
- Thinking = new ThinkingConfigEnabled(budgetTokens: 10000),
- Messages = [new() { Role = Role.User, Content = "..." }]
- };
-
- var response = await client.Messages.Create(parameters);
- Console.WriteLine(response);
- ```
-
- ```go Go
- client := anthropic.NewClient()
-
- response, err := client.Messages.New(context.TODO(), anthropic.MessageNewParams{
- Model: "claude-opus-4-6",
- MaxTokens: 16000,
- Thinking: anthropic.ThinkingConfigParamOfEnabled(10000),
- Messages: []anthropic.MessageParam{
- anthropic.NewUserMessage(anthropic.NewTextBlock("...")),
- },
- })
- if err != nil {
- log.Fatal(err)
- }
- fmt.Println(response)
- ```
-
- ```java Java
- AnthropicClient client = AnthropicOkHttpClient.fromEnv();
-
- MessageCreateParams params = MessageCreateParams.builder()
- .model("claude-opus-4-6")
- .maxTokens(16000L)
- .enabledThinking(10000L)
- .addUserMessage("...")
- .build();
-
- Message response = client.messages().create(params);
- IO.println(response);
- ```
-
- ```php PHP
- $client = new Client();
-
- $message = $client->messages->create(
- maxTokens: 16000,
- messages: [['role' => 'user', 'content' => '...']],
- model: 'claude-opus-4-6',
- thinking: ['type' => 'enabled', 'budget_tokens' => 10000],
- );
- ```
-
- ```ruby Ruby
- client = Anthropic::Client.new
-
- message = client.messages.create(
- model: "claude-opus-4-6",
- max_tokens: 16000,
- thinking: {
- type: "enabled",
- budget_tokens: 10000
- },
- messages: [
- { role: "user", content: "..." }
- ]
- )
- ```
-
-
- After (Claude Opus 5):
-
-
- ```bash cURL
- curl https://api.anthropic.com/v1/messages \
- -H "x-api-key: $ANTHROPIC_API_KEY" \
- -H "anthropic-version: 2023-06-01" \
- -H "content-type: application/json" \
- -d '{
- "model": "claude-opus-5",
- "max_tokens": 16000,
- "thinking": {
- "type": "adaptive"
- },
- "output_config": {
- "effort": "high"
- },
- "messages": [
- {
- "role": "user",
- "content": "..."
- }
- ]
- }'
- ```
-
- ```bash CLI
- ant messages create <<'YAML'
- model: claude-opus-5
- max_tokens: 16000
- thinking:
- type: adaptive
- output_config:
- effort: high
- messages:
- - role: user
- content: "..."
- YAML
- ```
-
- ```python Python
- client.messages.create(
- model="claude-opus-5",
- max_tokens=16000,
- thinking={"type": "adaptive"},
- output_config={"effort": "high"}, # or "max", "xhigh", "medium", "low"
- messages=[{"role": "user", "content": "..."}],
- )
- ```
-
- ```typescript TypeScript
- await client.messages.create({
- model: "claude-opus-5",
- max_tokens: 16000,
- thinking: { type: "adaptive" },
- output_config: { effort: "high" }, // or "max", "xhigh", "medium", "low"
- messages: [{ role: "user", content: "..." }]
- });
- ```
-
- ```csharp C#
- using Anthropic;
- using Anthropic.Models.Messages;
-
- AnthropicClient client = new();
-
- var parameters = new MessageCreateParams
- {
- Model = "claude-opus-5",
- MaxTokens = 16000,
- Thinking = new ThinkingConfigAdaptive(),
- OutputConfig = new OutputConfig { Effort = Effort.High }, // or Max, Xhigh, Medium, Low
- Messages = [new() { Role = Role.User, Content = "..." }]
- };
-
- var response = await client.Messages.Create(parameters);
- Console.WriteLine(response);
- ```
-
- ```go Go
- client := anthropic.NewClient()
-
- response, err := client.Messages.New(context.TODO(), anthropic.MessageNewParams{
- Model: "claude-opus-5",
- MaxTokens: 16000,
- Thinking: anthropic.ThinkingConfigParamUnion{
- OfAdaptive: &anthropic.ThinkingConfigAdaptiveParam{},
- },
- OutputConfig: anthropic.OutputConfigParam{
- Effort: anthropic.OutputConfigEffortHigh, // or Max, Xhigh, Medium, Low
- },
- Messages: []anthropic.MessageParam{
- anthropic.NewUserMessage(anthropic.NewTextBlock("...")),
- },
- })
- if err != nil {
- log.Fatal(err)
- }
- fmt.Println(response)
- ```
-
- ```java Java
- AnthropicClient client = AnthropicOkHttpClient.fromEnv();
-
- MessageCreateParams params = MessageCreateParams.builder()
- .model("claude-opus-5")
- .maxTokens(16000L)
- .thinking(ThinkingConfigAdaptive.builder().build())
- .outputConfig(OutputConfig.builder()
- .effort(OutputConfig.Effort.HIGH) // or MAX, XHIGH, MEDIUM, LOW
- .build())
- .addUserMessage("...")
- .build();
-
- Message response = client.messages().create(params);
- IO.println(response);
- ```
-
- ```php PHP
- $client = new Client();
-
- $message = $client->messages->create(
- maxTokens: 16000,
- messages: [['role' => 'user', 'content' => '...']],
- model: 'claude-opus-5',
- thinking: ['type' => 'adaptive'],
- outputConfig: ['effort' => 'high'], // or 'max', 'xhigh', 'medium', 'low'
- );
- ```
-
- ```ruby Ruby
- client = Anthropic::Client.new
-
- message = client.messages.create(
- model: "claude-opus-5",
- max_tokens: 16000,
- thinking: {
- type: "adaptive"
- },
- output_config: {
- effort: "high" # or "max", "xhigh", "medium", "low"
- },
- messages: [
- { role: "user", content: "..." }
- ]
- )
- ```
-
-
- Adaptive thinking is steerable through prompting and the [effort parameter](https://platform.claude.com/docs/en/build-with-claude/effort); see [Choosing an effort level](https://platform.claude.com/docs/en/about-claude/models/migration-guide#choosing-an-effort-level).
-
-2. **Thinking on by default:** On Claude Opus 4.6 and Claude Opus 4.7, requests without a `thinking` field run without thinking; on Claude Opus 5, the same requests run with [adaptive thinking](https://platform.claude.com/docs/en/build-with-claude/thinking). `max_tokens` remains a hard limit on total output, thinking plus response text, so revisit it for workloads that ran without thinking. To preserve the old behavior, pass `thinking: {type: "disabled"}`, subject to the effort cap in the next item; note that with thinking disabled the model can occasionally emit tool calls as plain text or include internal XML tags in its visible output, so prefer lower effort levels with thinking enabled where you can, and see [Running with thinking disabled](https://platform.claude.com/docs/en/build-with-claude/prompt-engineering/prompting-claude-opus-5#running-with-thinking-disabled) for mitigations where you can't.
-
-3. **Disabling thinking is capped at `high` effort:** You can turn thinking off with `thinking: {type: "disabled"}`, but only at an [effort](https://platform.claude.com/docs/en/build-with-claude/effort) level of `high` or below. A request that combines `thinking: {type: "disabled"}` with effort `xhigh` or `max` returns a 400 error on Claude Opus 5, enforced on each request. Audit requests that disable thinking before you migrate: re-enable thinking or lower the effort to `high` or below.
-
-4. **Sampling parameters removed:** Setting `temperature`, `top_p`, or `top_k` to any non-default value on Claude Opus 4.7 or later models, including Claude Opus 5, returns a 400 error. The Python SDK (v1.0 and later) does not define them, and passing them raises a `TypeError`. The safest migration path is to omit these parameters entirely from request payloads. Prompting is the recommended way to guide model behavior on Claude Opus 5. If you were using `temperature = 0` for determinism, note that it never guaranteed identical outputs on prior models.
-
-5. **Thinking content omitted by default:** Thinking blocks still appear in the response stream on Claude Opus 4.7 and later models, but their `thinking` field is empty unless you explicitly opt in. This is a silent change from Claude Opus 4.6, where the default was to return summarized thinking text. To restore summarized thinking content, set `thinking.display` to `"summarized"`:
-
-
- ```python Python
- thinking = {
- "type": "adaptive",
- "display": "summarized",
- }
- ```
-
- ```typescript TypeScript
- const thinking = {
- type: "adaptive",
- display: "summarized"
- };
- ```
-
- ```csharp C#
- var thinking = new ThinkingConfigAdaptive { Display = Display.Summarized };
- ```
-
- ```go Go
- thinking := anthropic.ThinkingConfigParamUnion{
- OfAdaptive: &anthropic.ThinkingConfigAdaptiveParam{
- Display: anthropic.ThinkingConfigAdaptiveDisplaySummarized,
- },
- }
- ```
-
- ```java Java
- ThinkingConfigAdaptive thinking = ThinkingConfigAdaptive.builder()
- .display(ThinkingConfigAdaptive.Display.SUMMARIZED)
- .build();
- ```
-
- ```php PHP
- $thinking = ['type' => 'adaptive', 'display' => 'summarized'];
- ```
-
- ```ruby Ruby
- thinking = {
- type: "adaptive",
- display: "summarized"
- }
- ```
-
-
- The default is `"omitted"` on Claude Opus 4.7 and later models. If your product streams reasoning to users, the new default appears as a long pause before output begins; set `display: "summarized"` to restore visible progress during thinking. See [Controlling thinking display](https://platform.claude.com/docs/en/build-with-claude/thinking#controlling-thinking-display) for details.
-
-6. **Updated token counting:** Claude Opus 4.7 introduced a new tokenizer, which later Opus models, including Claude Opus 5, also use. It contributes to improved performance on a wide range of tasks, and it may use roughly 1x to 1.35x as many tokens when processing text compared to models before Claude Opus 4.7 (up to \~35% more, varying by content).
-
- [`/v1/messages/count_tokens`](https://platform.claude.com/docs/en/build-with-claude/token-counting) returns a different number of tokens for Claude Opus 5 than it did for Claude Opus 4.6. Token efficiency can vary by workload shape.
-
- Prompting interventions, `task_budget`, and `effort` can help control costs and ensure appropriate token usage. These controls may trade off model intelligence. Update your `max_tokens` parameters to give additional headroom, including compaction triggers. Claude Opus 5 provides a 1M context window at standard API pricing with no long-context premium.
-
-7. **Prefill removal (carried over from Opus 4.6):** Prefilling assistant messages returns a 400 error on Claude Opus 4.7 and later models, including Claude Opus 5. Use [structured outputs](https://platform.claude.com/docs/en/build-with-claude/structured-outputs), system prompt instructions, or `output_config.format` instead.
-
-#### Choosing an effort level
-
-The [effort parameter](https://platform.claude.com/docs/en/build-with-claude/effort) allows you to tune Claude's intelligence versus token spend, trading off capability for faster speed and lower costs. Claude Opus 5 supports the full set of effort levels and defaults to `high`. Run a fresh effort sweep on your own evals rather than carrying over a setting tuned for an earlier model:
-
-* **`max`:** Can deliver gains on the most demanding tasks but may show diminishing returns from increased token usage and can be prone to overthinking on simpler ones. Test it where maximum capability matters more than token spend.
-* **`xhigh`:** Extended capability for long-running agentic and coding work that needs more depth than the default.
-* **`high`:** The default. Balances token usage and intelligence for most tasks.
-* **`medium`:** Cost-saving step-down from the default, worth testing as a cost and latency control.
-* **`low`:** Most efficient. Reserve for short, scoped tasks and latency-sensitive workloads.
-
-If you run at `xhigh` or `max` effort, set a large `max_tokens` so the model has room to think and act; start at 64k tokens and tune from there. Effort is more important for this model than for any prior Opus. Experiment with it actively when you upgrade.
-
-#### Behavior changes
-
-Claude Opus 4.7 introduced several behavioral differences from Claude Opus 4.6 that are not API breaking changes but may require prompt updates or scaffolding removal. They carry forward to Claude Opus 5, with the adjustments noted below.
-
-1. **Response length varies by use case:** Claude Opus 4.7 calibrates response length to how complex it judges the task to be, rather than defaulting to a fixed verbosity. This usually means shorter answers on simple lookups and much longer ones on open-ended analysis.
-
- If your product depends on a certain style or verbosity of output, you may need to tune your prompts. For example, to decrease verbosity, add: "Provide concise, focused responses. Skip non-essential context, and keep examples minimal." If you see specific kinds of over-explaining, add targeted instructions in your prompt to prevent them.
-
- Positive examples showing how Claude can communicate with the appropriate level of concision tend to be more effective than negative examples or instructions that tell the model what not to do. On Claude Opus 5, default visible responses and written deliverables run longer than on earlier Opus models, and lowering effort reduces thinking volume without reliably shortening the visible response; prompt explicitly for conciseness or a target length. See [Response length and verbosity](https://platform.claude.com/docs/en/build-with-claude/prompt-engineering/prompting-claude-opus-5#response-length-and-verbosity).
-
-2. **More literal instruction following:** Claude Opus 4.7 interprets prompts more literally and explicitly than Claude Opus 4.6, particularly at lower effort levels. It does not silently generalize an instruction from one item to another, and it does not infer requests you didn't make. The upside of this literalism is precision and less thrash. It generally performs better for API use cases with carefully tuned prompts, structured extraction, and pipelines where you want predictable behavior. A prompt and harness review may be especially helpful for migration to Claude Opus 5.
-
-3. **More direct tone:** As with any new model, prose style on long-form writing may shift. Claude Opus 4.7 is more direct and opinionated, with less validation-forward phrasing and fewer emoji than Claude Opus 4.6's warmer style. If your product relies on a specific voice, re-evaluate style prompts against the new baseline.
-
-4. **Built-in progress updates in agentic traces:** Claude Opus 4.7 provides more regular, higher-quality updates to the user throughout long agentic traces. If you've added scaffolding to force interim status messages ("After every 3 tool calls, summarize progress"), try removing it. If you find that the length or contents of Claude Opus 4.7's user-facing updates are not well-calibrated to your use case, explicitly describe what these updates should look like in the prompt and provide examples.
-
-5. **Subagent spawning changed:** Claude Opus 4.7 tends to spawn fewer subagents by default than Claude Opus 4.6, while Claude Opus 5 delegates to subagents more readily than earlier models. The behavior is steerable through prompting in either direction; give explicit guidance around when subagents are desirable, or cap the number of subagents. See [Controlling subagent spawning](https://platform.claude.com/docs/en/build-with-claude/prompt-engineering/prompting-claude-opus-5#controlling-subagent-spawning).
-
-6. **Stricter effort calibration:** Meaningfully changing from Claude Opus 4.6, Claude Opus 4.7 respects [effort levels](https://platform.claude.com/docs/en/build-with-claude/effort) strictly, especially at the low end. At `low` and `medium`, the model scopes its work to what was asked rather than doing more than requested.
-
- This is good for latency and cost, but on moderately complex tasks running at `low` effort there is some risk of under-thinking. If you observe shallow reasoning on complex problems, raise effort to `high` or `xhigh` rather than prompting around it.
-
- If you need to keep effort at `low` for latency, add targeted guidance: "This task involves multistep reasoning. Think carefully through the problem before responding." See [Recommended effort levels for Claude Opus 4.7](https://platform.claude.com/docs/en/build-with-claude/effort#recommended-effort-levels-for-claude-opus-4-7).
-
-7. **Fewer tool calls by default:** Claude Opus 4.7 has a tendency to use tools less often than Claude Opus 4.6 and to use reasoning more. This produces better results in most cases.
-
- To increase tool usage, raise the effort setting. `high` or `xhigh` effort settings show substantially more tool usage in agentic search and coding. You can also adjust your prompt to explicitly instruct the model about when and how to properly use its tools.
-
-8. **Real-time cybersecurity safeguards:** Newly added in Claude Opus 4.7, requests that involve prohibited or high-risk topics may lead to refusals. For legitimate security work such as penetration testing, vulnerability research, or red-teaming, apply to the [Cyber Verification Program](https://support.claude.com/en/articles/14604842-real-time-cyber-safeguards-on-claude-opus-and-sonnet) to request reduced restrictions. The application route depends on how you access Claude.
-
-9. **High-resolution image support:** Claude Opus 4.7 is the first Claude model with high-resolution image support. Maximum image resolution is 2,576 pixels on the long edge, up from 1,568 pixels on prior models. This unlocks gains on vision-heavy workloads and is particularly valuable for computer use, screenshot understanding, and document analysis.
-
- High-resolution support is automatic and requires no beta header or client-side opt-in. Two things to plan for:
-
- * Full-resolution images can use up to approximately 3x more image tokens than on prior models (up to 4,784 tokens per image, compared to the previous cap of roughly 1,600 tokens per image). Re-budget `max_tokens` and cost expectations for image-heavy workloads, or downsample before sending if you do not need the additional fidelity.
- * Pointing and bounding-box coordinates returned by the model are 1:1 with actual image pixels on Claude Opus 4.7, so no scale-factor conversion is required.
-
- See [High-resolution image support on Claude Opus 4.7](https://platform.claude.com/docs/en/build-with-claude/vision#high-resolution-image-support-on-claude-opus-4-7) for details.
-
-#### Recommended changes
-
-These are not required but will improve your experience:
-
-1. **Re-evaluate `max_tokens`:** Because the same text produces a higher token count on Claude Opus 4.7 and later models, update your `max_tokens` parameters to give additional headroom, including compaction triggers. Prompting interventions, [`task_budget`](https://platform.claude.com/docs/en/build-with-claude/task-budgets), and [`effort`](https://platform.claude.com/docs/en/build-with-claude/effort) can help control costs and ensure appropriate token usage.
-
-2. **Audit token-count expectations:** Any code path that estimates tokens client-side or assumes a fixed token-to-character ratio should be re-tested against Claude Opus 5. Use the [Token counting endpoint](https://platform.claude.com/docs/en/build-with-claude/token-counting) to verify.
-
-3. **Adopt [task budgets](https://platform.claude.com/docs/en/build-with-claude/task-budgets) (beta):** Claude Opus 4.7 introduces task budgets. These budgets let you inform Claude how many tokens it has for a full agentic loop, including thinking, tool calls, tool results, and final output. The model sees a running countdown and uses it to prioritize work and finish the task gracefully as the budget is consumed. To use, set the beta header `task-budgets-2026-03-13` and add the following to your output config:
-
-
- ```python Python
- output_config = {
- "effort": "high",
- "task_budget": {"type": "tokens", "total": 128000},
- }
- ```
-
- ```typescript TypeScript
- const output_config = {
- effort: "high",
- task_budget: { type: "tokens", total: 128000 }
- };
- ```
-
- ```csharp C#
- var outputConfig = new BetaOutputConfig
- {
- Effort = Effort.High,
- TaskBudget = new BetaTokenTaskBudget
- {
- Total = 128000,
- },
- };
- ```
-
- ```go Go
- outputConfig := anthropic.BetaOutputConfigParam{
- Effort: anthropic.BetaOutputConfigEffortHigh,
- TaskBudget: anthropic.BetaTokenTaskBudgetParam{
- Total: 128000,
- },
- }
- ```
-
- ```java Java
- BetaOutputConfig outputConfig = BetaOutputConfig.builder()
- .effort(BetaOutputConfig.Effort.HIGH)
- .taskBudget(BetaTokenTaskBudget.builder()
- .total(128000L)
- .build())
- .build();
- ```
-
- ```php PHP
- $outputConfig = [
- 'effort' => 'high',
- 'taskBudget' => [
- 'type' => 'tokens',
- 'total' => 128000,
- ],
- ];
- ```
-
- ```ruby Ruby
- output_config = {
- effort: :high,
- task_budget: {
- type: :tokens,
- total: 128_000
- }
- }
- ```
-
-
- You may need to experiment with different task budgets for your use case. If the model is given a task budget that is too restrictive, it may complete the task less thoroughly, referencing its budget as the constraint.
-
- For open-ended agentic tasks where quality matters more than speed, do not set a task budget. Reserve task budgets for workloads where you need the model to scope its work to a token allowance. The minimum value for a task budget is 20k tokens.
-
- A task budget is not a hard cap; it's a suggestion that the model is aware of. It differs from `max_tokens`:
-
- * **`task_budget`:** an advisory cap across the full agentic loop. The model sees it and uses it to pace itself.
- * **`max_tokens`:** a hard per-request ceiling on generated tokens. It is not passed to the model, so the model is not aware of it.
-
- Use `task_budget` when you want the model to self-moderate, and `max_tokens` as a hard ceiling to cap usage.
-
-4. **Set a large `max_tokens` at `max` or `xhigh` effort:** If you are running Claude Opus 4.7 or a later model at `max` or `xhigh` effort, set a large max output token budget so the model has room to think and act across its subagents and tool calls. Start at 64k tokens and tune from there.
-
-5. **Downsample images if high resolution is unnecessary:** Claude Opus 4.7 and later models support images up to 2576px / 3.75MP. High-res images use more tokens. If the additional image fidelity is unnecessary, downsample images before sending to Claude to avoid token-usage increases. See [Images and vision](https://platform.claude.com/docs/en/build-with-claude/vision).
-
-6. **Consider automatic fallbacks:** Claude Opus 5 ships with cybersecurity safety classifiers whose cyber-category refusals can fall back to Claude Opus 4.8. To re-run refused requests on another model automatically, consider the `fallbacks` parameter with the `"default"` mode (`fallbacks: "default"`), which selects a recommended fallback model based on the refusal category instead of a hand-maintained model list. Server-side fallback is in beta; the `"default"` mode requires the `server-side-fallback-2026-07-01` beta header. See [Refusals and fallback](https://platform.claude.com/docs/en/build-with-claude/refusals-and-fallback).
-
-7. **Cache shorter prompts:** The minimum cacheable prompt length on Claude Opus 5 is 512 tokens, lower than on earlier Opus models. Prompts that were too short to cache can now create cache entries, with no code changes required. See [Prompt caching](https://platform.claude.com/docs/en/build-with-claude/prompt-caching#cache-limitations) for per-model minimums.
-
-8. **Change tools mid-conversation (beta):** You can add or remove tools between turns of a conversation without invalidating [prompt cache](https://platform.claude.com/docs/en/build-with-claude/prompt-caching) hits on earlier turns. Send the beta header `mid-conversation-tool-changes-2026-07-01`. This is useful for agentic workloads that expose tools progressively or retire them as a task advances; without it, a changed tool list invalidates the cached prefix.
-
-9. **Remove carried-over verification instructions and constrain scope:** Claude Opus 5 verifies its own work without being told to, so remove explicit verification or self-check instructions carried over from prompts tuned for earlier models; leaving them in causes over-verification. For narrow tasks, constrain the task scope explicitly. See [Task scope and over-verification](https://platform.claude.com/docs/en/build-with-claude/prompt-engineering/prompting-claude-opus-5#task-scope-and-over-verification).
-
-#### Migration checklist
-
-* Update model name from `claude-opus-4-6` to `claude-opus-5` (or update aliases).
-* Remove `temperature`, `top_p`, and `top_k` from request payloads.
-* Replace `thinking: {type: "enabled", budget_tokens: N}` with `thinking: {type: "adaptive"}` plus the [effort parameter](https://platform.claude.com/docs/en/build-with-claude/effort), or remove the `thinking` field entirely; adaptive thinking is on by default on Claude Opus 5.
-* Review workloads that ran without a `thinking` field: they run with thinking on Claude Opus 5. Revisit `max_tokens`, which remains a hard limit on total output (thinking plus response text), or pass `thinking: {type: "disabled"}` at effort `high` or below to preserve the old behavior.
-* Audit requests that disable thinking: `thinking: {type: "disabled"}` with effort `xhigh` or `max` returns a 400 error, enforced on each request. Re-enable thinking or lower the effort to `high` or below.
-* Remove any assistant-message prefills.
-* If your UI displays thinking content, explicitly opt in to thinking summarization.
-* Re-benchmark end-to-end cost and latency under the updated tokenization.
-* Re-tune `max_tokens` to account for the updated tokenization.
-* Re-test any client-side token-count estimations.
-* If your application sends images, re-budget for [high-resolution image support](https://platform.claude.com/docs/en/build-with-claude/vision#high-resolution-image-support-on-claude-opus-4-7) (up to approximately 3x more image tokens per full-resolution image). Downsample before sending if you do not need the additional fidelity.
-* If you consume pointing or bounding-box coordinates from the model, remove any scale-factor conversion; coordinates are 1:1 with actual image pixels on Claude Opus 4.7 and later models.
-* Review prompts for the behavior changes (response length, literalism, tone, progress updates, subagents, effort calibration, tool triggering, cyber safeguards, high-resolution image handling).
-* Re-baseline response length with existing length-control prompts removed, then tune explicitly.
-* If using `xhigh` or `max` effort, raise `max_tokens` to at least 64k as a starting point.
-* Consider adopting task budgets (beta) and mid-conversation tool changes (beta) for agentic workflows.
-* Handle `stop_reason: "refusal"`, and consider `fallbacks: "default"` (beta) to re-run refused requests on a recommended fallback model automatically.
-* Review prompts near the caching minimum: prompts of 512 tokens or more can now create cache entries on Claude Opus 5.
-* If you use [web fetch](https://platform.claude.com/docs/en/agents-and-tools/tool-use/web-fetch-tool), plan an alternative: it is not available on Claude Opus 5.
-* If your organization has a [Priority Tier](https://platform.claude.com/docs/en/api/service-tiers#supported-models) commitment, note that Priority Tier is not supported on Claude Opus 5.
-* Remove verification and self-check instructions carried over from prompts tuned for earlier models; they cause over-verification on Claude Opus 5.
-* If your product does legitimate security work, apply to the [Cyber Verification Program](https://support.claude.com/en/articles/14604842-real-time-cyber-safeguards-on-claude-opus-and-sonnet) for access to lower restrictions on cyber content.
-
-#### Migrating from Claude Opus 4.5 or earlier
-
-If you are migrating from Claude Opus 4.5, Opus 4.1, or an earlier model directly to Claude Opus 5, apply **all of the changes earlier in this section** plus the following cumulative changes, which took effect between Opus 4.5 and Opus 4.7. If you are migrating from Opus 4.6, the changes earlier in this section are all you need.
-
-##### Update your model name
-
-```python
-# Opus migration
-model = "claude-opus-4-5" # Before
-model = "claude-opus-5" # After
-```
-
-##### Breaking changes
-
-1. **Prefill removal** is covered in the [breaking changes for migrating from Claude Opus 4.6](https://platform.claude.com/docs/en/about-claude/models/migration-guide#opus-46-breaking-changes).
-
-2. **Tool parameter quoting:** Claude Opus 4.6 and later models may produce slightly different JSON string escaping in tool call arguments (for example, different handling of Unicode escapes or forward slash escaping). If you parse tool call `input` as a raw string rather than using a JSON parser, verify your parsing logic. Standard JSON parsers (such as `json.loads()` or `JSON.parse()`) handle these differences automatically.
-
-##### Recommended changes
-
-These changes improve your experience on Claude Opus 4.7 and later models. Items marked **(required on Opus 4.7)** were optional recommendations when Opus 4.6 launched but are now mandatory; the rest remain recommended.
-
-1. **Migrate to adaptive thinking (required on Opus 4.7):** `thinking: {type: "enabled", budget_tokens: N}` returns a 400 error on Claude Opus 4.7 and later models. Switch to `thinking: {type: "adaptive"}` and use the [effort parameter](https://platform.claude.com/docs/en/build-with-claude/effort) to control thinking depth; on Claude Opus 5, `thinking: {type: "adaptive"}` is equivalent to omitting the `thinking` field, which runs with adaptive thinking by default. See [Thinking](https://platform.claude.com/docs/en/build-with-claude/thinking).
-
-
- ```bash cURL
- curl -sS https://api.anthropic.com/v1/messages \
- -H "content-type: application/json" \
- -H "x-api-key: $ANTHROPIC_API_KEY" \
- -H "anthropic-version: 2023-06-01" \
- -d '{
- "model": "claude-opus-5",
- "max_tokens": 16000,
- "thinking": {"type": "adaptive"},
- "output_config": {"effort": "high"},
- "messages": [{"role": "user", "content": "Your prompt here"}]
- }'
- ```
-
- ```python Before
- response = client.beta.messages.create(
- model="claude-opus-4-5",
- max_tokens=16000,
- thinking={"type": "enabled", "budget_tokens": 32000},
- betas=["interleaved-thinking-2025-05-14"],
- messages=[{"role": "user", "content": "Your prompt here"}],
- )
- ```
-
- ```python After
- response = client.messages.create(
- model="claude-opus-5",
- max_tokens=16000,
- thinking={"type": "adaptive"},
- output_config={"effort": "high"},
- messages=[{"role": "user", "content": "Your prompt here"}],
- )
- ```
-
- ```bash CLI
- ant messages create <<'YAML'
- model: claude-opus-5
- max_tokens: 16000
- thinking:
- type: adaptive
- output_config:
- effort: high
- messages:
- - role: user
- content: Your prompt here
- YAML
- ```
-
- ```typescript TypeScript
- const client = new Anthropic();
-
- const response = await client.messages.create({
- model: "claude-opus-5",
- max_tokens: 16000,
- thinking: { type: "adaptive" },
- output_config: { effort: "high" },
- messages: [{ role: "user", content: "Your prompt here" }]
- });
- ```
-
- ```csharp C#
- using Anthropic;
- using Anthropic.Models.Messages;
-
- AnthropicClient client = new();
-
- var parameters = new MessageCreateParams
- {
- Model = Model.ClaudeOpus5,
- MaxTokens = 16000,
- Thinking = new ThinkingConfigAdaptive(),
- OutputConfig = new OutputConfig { Effort = Effort.High },
- Messages = [new() { Role = Role.User, Content = "Your prompt here" }]
- };
-
- var response = await client.Messages.Create(parameters);
- Console.WriteLine(response);
- ```
-
- ```go Go
- client := anthropic.NewClient()
-
- response, err := client.Messages.New(context.TODO(), anthropic.MessageNewParams{
- Model: anthropic.ModelClaudeOpus5,
- MaxTokens: 16000,
- Thinking: anthropic.ThinkingConfigParamUnion{
- OfAdaptive: &anthropic.ThinkingConfigAdaptiveParam{},
- },
- OutputConfig: anthropic.OutputConfigParam{
- Effort: anthropic.OutputConfigEffortHigh,
- },
- Messages: []anthropic.MessageParam{
- anthropic.NewUserMessage(anthropic.NewTextBlock("Your prompt here")),
- },
- })
- if err != nil {
- log.Fatal(err)
- }
- fmt.Println(response)
- ```
-
- ```java Java
- import com.anthropic.models.messages.OutputConfig;
- import com.anthropic.models.messages.ThinkingConfigAdaptive;
- // ...
- public class AdaptiveThinkingExample {
- public static void main(String[] args) {
- AnthropicClient client = AnthropicOkHttpClient.fromEnv();
-
- MessageCreateParams params = MessageCreateParams.builder()
- .model(Model.CLAUDE_OPUS_5)
- .maxTokens(16000L)
- .thinking(ThinkingConfigAdaptive.builder().build())
- .outputConfig(OutputConfig.builder()
- .effort(OutputConfig.Effort.HIGH)
- .build())
- .addUserMessage("Your prompt here")
- .build();
-
- Message response = client.messages().create(params);
- System.out.println(response);
- }
- }
- ```
-
- ```php PHP
- $client = new Client();
-
- $response = $client->messages->create(
- maxTokens: 16000,
- messages: [['role' => 'user', 'content' => 'Your prompt here']],
- model: 'claude-opus-5',
- thinking: ['type' => 'adaptive'],
- outputConfig: ['effort' => 'high'],
- );
- ```
-
- ```ruby Ruby
- client = Anthropic::Client.new
-
- response = client.messages.create(
- model: "claude-opus-5",
- max_tokens: 16000,
- thinking: { type: "adaptive" },
- output_config: { effort: "high" },
- messages: [{ role: "user", content: "Your prompt here" }]
- )
- ```
-
-
- Note that the migration also moves from `client.beta.messages.create` to `client.messages.create`. Adaptive thinking and effort do not require the beta SDK namespace or any beta headers.
-
-2. **Remove effort beta header:** The effort parameter does not require a beta header. Remove `betas=["effort-2025-11-24"]` from your requests.
-
-3. **Remove fine-grained tool streaming beta header:** Fine-grained tool streaming does not require a beta header. Remove `betas=["fine-grained-tool-streaming-2025-05-14"]` from your requests.
-
-4. **Remove interleaved thinking beta header:** Adaptive thinking automatically enables interleaved thinking on Claude Opus 4.7, Opus 4.6, and Sonnet 4.6. Remove `betas=["interleaved-thinking-2025-05-14"]` from your requests. The header is still functional on Sonnet 4.6 with manual extended thinking, but manual mode is deprecated.
-
-5. **Migrate to output\_config.format:** If using structured outputs, update `output_format={...}` to `output_config={"format": {...}}`. The API still accepts the deprecated `output_format` parameter, but it will be removed in a future model release. The Python SDK (v1.0 and later) does not accept `output_format={...}` on `client.beta.messages.create()` or `count_tokens()`. The `output_format=Model` argument of the `parse()` and `stream()` helpers is unchanged.
-
-#### Migrating from Claude 4.1 or earlier
-
-If you're migrating from Opus 4.1 or earlier models directly to Claude Opus 5, apply all of the changes earlier in this section, plus the additional changes in this sub-section.
-
-```python
-# From Opus 4.1
-model = "claude-opus-4-1-20250805" # Before
-model = "claude-opus-5" # After
-
-# From Sonnet 3.7
-model = "claude-3-7-sonnet-20250219" # Before
-model = "claude-opus-5" # After
-```
-
-##### Additional breaking changes
-
-1. **Remove sampling parameters**
-
-
- This is a breaking change when migrating from Claude 3.x models.
-
-
- Starting with Claude Opus 4.7, setting `temperature`, `top_p`, or `top_k` to any non-default value returns a 400 error. The Python SDK (v1.0 and later) does not define them, and passing them raises a `TypeError`. The safest migration path is to omit these parameters entirely from requests, and to use prompting to guide the model's behavior. If you were using `temperature = 0` for determinism, note that it never guaranteed identical outputs.
-
-
- ```python Python
- # Before - This will error in Claude 4+ models
- response = client.messages.create(
- model="claude-3-7-sonnet-20250219",
- temperature=0.7,
- top_p=0.9, # Non-default sampling params return 400 on Opus 4.7
- # ...
- )
-
- # After
- response = client.messages.create(
- model="claude-opus-5",
- # ...
- )
- ```
-
- ```typescript TypeScript
- // Before - This will error in Claude 4+ models
- await client.messages.create({
- model: "claude-3-7-sonnet-20250219",
- temperature: 0.7,
- top_p: 0.9 // Non-default sampling params return 400 on Opus 4.7
- // ...
- });
-
- // After
- await client.messages.create({
- model: "claude-opus-5"
- // ...
- });
- ```
-
- ```csharp C#
- // Before - This will error in Claude 4+ models
- await client.Messages.Create(new MessageCreateParams
- {
- Model = "claude-3-7-sonnet-20250219",
- Temperature = 0.7,
- TopP = 0.9, // Non-default sampling params return 400 on Opus 4.7
- // ...
- });
-
- // After
- await client.Messages.Create(new MessageCreateParams
- {
- Model = "claude-opus-5",
- // ...
- });
- ```
-
- ```go Go
- // Before - This will error in Claude 4+ models
- client.Messages.New(ctx, anthropic.MessageNewParams{
- Model: "claude-3-7-sonnet-20250219",
- Temperature: anthropic.Float(0.7),
- TopP: anthropic.Float(0.9), // Non-default sampling params return 400 on Opus 4.7
- // ...
- })
-
- // After
- client.Messages.New(ctx, anthropic.MessageNewParams{
- Model: "claude-opus-5",
- // ...
- })
- ```
-
- ```java Java
- // Before - This will error in Claude 4+ models
- client.messages().create(MessageCreateParams.builder()
- .model("claude-3-7-sonnet-20250219")
- .temperature(0.7)
- .topP(0.9) // Non-default sampling params return 400 on Opus 4.7
- // ...
- .build());
-
- // After
- client.messages().create(MessageCreateParams.builder()
- .model("claude-opus-5")
- // ...
- .build());
- ```
-
- ```php PHP
- // Before - This will error in Claude 4+ models
- $client->messages->create(
- model: 'claude-3-7-sonnet-20250219',
- temperature: 0.7,
- topP: 0.9, // Non-default sampling params return 400 on Opus 4.7
- // ...
- );
-
- // After
- $client->messages->create(
- model: 'claude-opus-5',
- // ...
- );
- ```
-
- ```ruby Ruby
- # Before - This will error in Claude 4+ models
- client.messages.create(
- model: "claude-3-7-sonnet-20250219",
- temperature: 0.7,
- top_p: 0.9, # Non-default sampling params return 400 on Opus 4.7
- # ...
- )
-
- # After
- client.messages.create(
- model: "claude-opus-5",
- # ...
- )
- ```
-
-
-2. **Update tool versions**
-
-
- This is a breaking change when migrating from Claude 3.x models.
-
-
- Update to the latest tool versions. Remove any code using the `undo_edit` command.
-
-
- ```python Python
- # Before
- tools = [{"type": "text_editor_20250124", "name": "str_replace_editor"}]
-
- # After
- tools = [{"type": "text_editor_20250728", "name": "str_replace_based_edit_tool"}]
- ```
-
- ```typescript TypeScript
- // Before
- const legacyTools = [{ type: "text_editor_20250124", name: "str_replace_editor" }];
-
- // After
- const tools = [{ type: "text_editor_20250728", name: "str_replace_based_edit_tool" }];
- ```
-
- ```csharp C#
- var parameters = new MessageCreateParams
- {
- // Before: {"type": "text_editor_20250124", "name": "str_replace_editor"}
- // After:
- Tools = [new ToolTextEditor20250728()],
- // ...
- };
- ```
-
- ```go Go
- params := anthropic.MessageNewParams{
- // Before: {"type": "text_editor_20250124", "name": "str_replace_editor"}
- // After:
- Tools: []anthropic.ToolUnionParam{
- {OfTextEditor20250728: &anthropic.ToolTextEditor20250728Param{}},
- },
- // ...
- }
- ```
-
- ```java Java
- MessageCreateParams params = MessageCreateParams.builder()
- // Before: {"type": "text_editor_20250124", "name": "str_replace_editor"}
- // After:
- .addTool(ToolTextEditor20250728.builder().build())
- // ...
- .build();
- ```
-
- ```php PHP
- $message = $client->messages->create(
- // Before: ['type' => 'text_editor_20250124', 'name' => 'str_replace_editor']
- // After:
- tools: [new ToolTextEditor20250728()],
- // ...
- );
- ```
-
- ```ruby Ruby
- # Before
- legacy_tools = [{type: "text_editor_20250124", name: "str_replace_editor"}]
-
- # After
- tools = [{type: "text_editor_20250728", name: "str_replace_based_edit_tool"}]
- ```
-
-
- * **Text editor:** Use `text_editor_20250728` and `str_replace_based_edit_tool`. See [Text editor tool](https://platform.claude.com/docs/en/agents-and-tools/tool-use/text-editor-tool) documentation for details.
- * **Code execution:** Upgrade to `code_execution_20260521`. See [Code execution tool](https://platform.claude.com/docs/en/agents-and-tools/tool-use/code-execution-tool#upgrade-to-latest-tool-version) documentation for migration instructions.
-
-3. **Handle the `refusal` stop reason**
-
- Update your application to [handle `refusal` stop reasons](https://platform.claude.com/docs/en/test-and-evaluate/strengthen-guardrails/handle-streaming-refusals):
-
-
- ```python Python
- response = client.messages.create(...)
-
- if response.stop_reason == "refusal":
- # Handle refusal appropriately
- pass
- ```
-
- ```typescript TypeScript
- const response = await client.messages.create(/* ... */);
-
- if (response.stop_reason === "refusal") {
- // Handle refusal appropriately
- }
- ```
-
- ```csharp C#
- var response = await client.Messages.Create(...);
-
- if (response.StopReason?.Value() == StopReason.Refusal)
- {
- // Handle refusal appropriately
- }
- ```
-
- ```go Go
- response, _ := client.Messages.New(ctx, params) // your existing request
-
- if response.StopReason == anthropic.StopReasonRefusal {
- // Handle refusal appropriately
- }
- ```
-
- ```java Java
- Message response = client.messages().create(...);
-
- StopReason reason = response.stopReason().orElse(StopReason.END_TURN);
- if (reason.equals(StopReason.REFUSAL)) {
- // Handle refusal appropriately
- }
- ```
-
- ```php PHP
- $response = $client->messages->create(...);
-
- if ($response->stopReason === 'refusal') {
- // Handle refusal appropriately
- }
- ```
-
- ```ruby Ruby
- response = client.messages.create(...)
-
- if response.stop_reason == :refusal
- # Handle refusal appropriately
- end
- ```
-
-
-4. **Handle the `model_context_window_exceeded` stop reason**
-
- Claude 4.5+ models return a `model_context_window_exceeded` stop reason when generation stops because of hitting the context window limit, rather than the requested `max_tokens` limit. Update your application to handle this new stop reason:
-
-
- ```python Python
- response = client.messages.create(...)
-
- if response.stop_reason == "model_context_window_exceeded":
- # Handle context window limit appropriately
- pass
- ```
-
- ```typescript TypeScript
- const response = await client.messages.create(/* ... */);
-
- if (response.stop_reason === "model_context_window_exceeded") {
- // Handle context window limit appropriately
- }
- ```
-
- ```csharp C#
- var response = await client.Messages.Create(...);
-
- if (response.StopReason?.Raw() == "model_context_window_exceeded")
- {
- // Handle context window limit appropriately
- }
- ```
-
- ```go Go
- response, _ := client.Messages.New(ctx, params) // your existing request
-
- if response.StopReason == "model_context_window_exceeded" {
- // Handle context window limit appropriately
- }
- ```
-
- ```java Java
- Message response = client.messages().create(...);
-
- StopReason reason = response.stopReason().orElse(StopReason.END_TURN);
- if (reason.equals(StopReason.of("model_context_window_exceeded"))) {
- // Handle context window limit appropriately
- }
- ```
-
- ```php PHP
- $response = $client->messages->create(...);
-
- if ($response->stopReason === 'model_context_window_exceeded') {
- // Handle context window limit appropriately
- }
- ```
-
- ```ruby Ruby
- response = client.messages.create(...)
-
- if response.stop_reason == :model_context_window_exceeded
- # Handle context window limit appropriately
- end
- ```
-
-
-5. **Verify tool parameter handling (trailing newlines)**
-
- Claude 4.5+ models preserve trailing newlines in tool call string parameters that were previously stripped. If your tools rely on exact string matching against tool call parameters, verify your logic handles trailing newlines correctly.
-
-6. **Update your prompts for behavioral changes**
-
- Claude 4+ models have a more concise, direct communication style and require explicit direction. Review [prompting best practices](https://platform.claude.com/docs/en/build-with-claude/prompt-engineering/claude-prompting-best-practices) for optimization guidance.
-
-##### Additional recommended changes
-
-* **Remove legacy beta headers:** Remove `token-efficient-tools-2025-02-19` and `output-128k-2025-02-19`. All Claude 4+ models have built-in token-efficient tool use and these headers have no effect.
-
-#### Migration checklist (from Claude Opus 4.5 or earlier)
-
-* Update model ID to `claude-opus-5`
-* Apply all of the [breaking changes for migrating from Claude Opus 4.6](https://platform.claude.com/docs/en/about-claude/models/migration-guide#opus-46-breaking-changes) (extended thinking removed, thinking on by default, effort cap on disabling thinking, sampling parameters removed, thinking display omitted by default, updated tokenization)
-* **BREAKING:** Remove assistant message prefills (returns 400 error); use structured outputs or `output_config.format` instead
-* **BREAKING on Opus 4.7:** Replace `thinking: {type: "enabled", budget_tokens: N}` with `thinking: {type: "adaptive"}` plus the [effort parameter](https://platform.claude.com/docs/en/build-with-claude/effort) (returns 400 on Opus 4.7)
-* Verify tool call JSON parsing uses a standard JSON parser
-* Remove `effort-2025-11-24` beta header (the effort parameter does not require it)
-* Remove `fine-grained-tool-streaming-2025-05-14` beta header
-* Remove `interleaved-thinking-2025-05-14` beta header (adaptive thinking enables interleaved thinking automatically)
-* Migrate `output_format` to `output_config.format` (if applicable)
-* If migrating from Claude 4.1 or earlier: remove `temperature`, `top_p`, and `top_k` (non-default values return 400 on Opus 4.7)
-* If migrating from Claude 4.1 or earlier: update tool versions (`text_editor_20250728`, `code_execution_20260521`)
-* If migrating from Claude 4.1 or earlier: handle `refusal` stop reason
-* If migrating from Claude 4.1 or earlier: handle `model_context_window_exceeded` stop reason
-* If migrating from Claude 4.1 or earlier: verify tool string parameter handling for trailing newlines
-* If migrating from Claude 4.1 or earlier: remove legacy beta headers (`token-efficient-tools-2025-02-19`, `output-128k-2025-02-19`)
-* Review and update prompts following [prompting best practices](https://platform.claude.com/docs/en/build-with-claude/prompt-engineering/claude-prompting-best-practices)
-* Test in development environment before production deployment
-
-### Migrating to Claude Opus 5 from Claude Sonnet 5
-
-Claude Opus 5 and Claude Sonnet 5 share the same API surface: both run with [adaptive thinking](https://platform.claude.com/docs/en/build-with-claude/thinking) on by default, both default the [effort parameter](https://platform.claude.com/docs/en/build-with-claude/effort) to `high` on the Claude API and Claude Code, both serve a [1M token context window](https://platform.claude.com/docs/en/build-with-claude/context-windows) by default with [128k max output tokens](https://platform.claude.com/docs/en/models/overview), and neither supports [Priority Tier](https://platform.claude.com/docs/en/api/service-tiers#supported-models). Manual extended thinking and non-default sampling parameters return a 400 error on both models, as does assistant prefill.
-
-#### Update your model name
-
-```python
-model = "claude-sonnet-5" # Before
-model = "claude-opus-5" # After
-```
-
-#### What changed
-
-1. **Pricing:** Claude Opus 5 is priced at $5 per million input tokens and $25 per million output tokens. Claude Sonnet 5 is priced at $2/$10 per million input/output tokens. See [Claude pricing](https://platform.claude.com/docs/en/about-claude/pricing) for complete pricing.
-
-2. **Disabling thinking is capped at `high` effort:** On Claude Sonnet 5, `thinking: {type: "disabled"}` is accepted at any effort level. On Claude Opus 5, it is accepted only at an [effort](https://platform.claude.com/docs/en/build-with-claude/effort) level of `high` or below; a request that combines `thinking: {type: "disabled"}` with effort `xhigh` or `max` returns a 400 error, enforced on each request. Audit requests that disable thinking before you migrate.
-
-3. **Mid-conversation system messages:** Claude Opus 5 accepts `role: "system"` messages immediately after a user turn in the `messages` array (subject to [placement rules](https://platform.claude.com/docs/en/build-with-claude/mid-conversation-system-messages#limitations)). This feature is not available on Claude Sonnet 5. If you maintain code paths that rebuild the full message history to update instructions, you can simplify them and preserve [prompt cache](https://platform.claude.com/docs/en/build-with-claude/prompt-caching) hits on earlier turns.
-
-4. **Web fetch is not available:** The [web fetch](https://platform.claude.com/docs/en/agents-and-tools/tool-use/web-fetch-tool) tool is available on Claude Sonnet 5 but not on Claude Opus 5.
-
-#### Migration checklist
-
-* Update the model name from `claude-sonnet-5` to `claude-opus-5`.
-* Audit requests that disable thinking: `thinking: {type: "disabled"}` with effort `xhigh` or `max` returns a 400 error on Claude Opus 5. Re-enable thinking or lower the effort to `high` or below.
-* If you use [web fetch](https://platform.claude.com/docs/en/agents-and-tools/tool-use/web-fetch-tool), plan an alternative: it is not available on Claude Opus 5.
-* Re-run [token counting](https://platform.claude.com/docs/en/build-with-claude/token-counting) against Claude Opus 5 rather than reusing counts measured against Claude Sonnet 5, and re-baseline cost and latency on your own workloads; per-token pricing differs.
-
-***
-
-## Migrating to Claude Sonnet 5
-
-Claude Sonnet 5 offers the best combination of speed and intelligence in the Claude model family. It builds on Claude Sonnet 4.6.
-
-Claude Sonnet 5 is a drop-in upgrade for Claude Sonnet 4.6, priced at $2/$10 USD per million input/output tokens; see [Pricing](https://platform.claude.com/docs/en/about-claude/pricing) for details. There are two breaking API changes for code already running on Claude Sonnet 4.6: manual extended thinking (`thinking: {type: "enabled", budget_tokens: N}`) and sampling parameters (`temperature`, `top_p`, `top_k`) set to non-default values are no longer accepted and return a 400 error. Use [adaptive thinking](https://platform.claude.com/docs/en/build-with-claude/thinking) with the [effort parameter](https://platform.claude.com/docs/en/build-with-claude/effort) instead. Claude Sonnet 5 supports the same set of features as Claude Sonnet 4.6, including the [1M token context window](https://platform.claude.com/docs/en/build-with-claude/context-windows), [adaptive thinking](https://platform.claude.com/docs/en/build-with-claude/thinking), [prompt caching](https://platform.claude.com/docs/en/build-with-claude/prompt-caching), [batch processing](https://platform.claude.com/docs/en/build-with-claude/batch-processing), the [Files API](https://platform.claude.com/docs/en/build-with-claude/files), [PDF support](https://platform.claude.com/docs/en/build-with-claude/pdf-support), [vision](https://platform.claude.com/docs/en/build-with-claude/vision), and the full set of server-side and client-side [tools](https://platform.claude.com/docs/en/agents-and-tools/tool-use/overview). On the Claude API, Claude Sonnet 5 also supports [computer use](https://platform.claude.com/docs/en/agents-and-tools/tool-use/computer-use-tool) as the stable `computer_toolset_20260801` toolset and the [browser use tool](https://platform.claude.com/docs/en/agents-and-tools/tool-use/browser-use-tool) for tasks inside webpages, neither of which Claude Sonnet 4.6 supports; existing integrations on the earlier `computer_20251124` version continue to work unchanged on both models. To upgrade an existing integration, see [Migrate from `computer_20251124`](https://platform.claude.com/docs/en/agents-and-tools/tool-use/computer-use-tool#migrate-from-computer-20251124). [Priority Tier](https://platform.claude.com/docs/en/api/service-tiers#supported-models) is not available on Claude Sonnet 5. Claude Sonnet 5 also uses a new tokenizer.
-
-### Migrating to Claude Sonnet 5 from Claude Sonnet 4.6
-
-
- If your code is on Claude Sonnet 4.5 or earlier, also apply [Migrating to Claude Sonnet 5 from Claude Sonnet 4.5 and earlier Sonnet models](https://platform.claude.com/docs/en/about-claude/models/migration-guide#migrating-from-sonnet-45). Those steps include breaking changes (assistant message prefilling rejected, tool parameter JSON escaping differences) that this section alone does not cover.
-
-
-#### Update your model name
-
-```python
-# Sonnet migration
-model = "claude-sonnet-4-6" # Before
-model = "claude-sonnet-5" # After
-```
-
-#### What changed
-
-Items 4 and 5 in the following list are breaking changes. `max_tokens` remains a hard limit on total output (thinking plus response text), so revisit it for workloads that ran without thinking on Claude Sonnet 4.6.
-
-1. **New tokenizer:** Claude Sonnet 5 uses a new tokenizer. The same input text produces approximately 30% more tokens than on Claude Sonnet 4.6. The exact increase depends on the content. Requests, responses, and streaming events keep the same shape, and no code changes are required, but anything you measure or budget in tokens shifts: `usage` fields and [token counting](https://platform.claude.com/docs/en/build-with-claude/token-counting) results for the same text are higher, the 1M token context window holds less text, and a `max_tokens` limit tuned for Claude Sonnet 4.6 may truncate equivalent output. Per-token pricing is lower ($2/$10 versus Claude Sonnet 4.6's $3/$15 per million input/output tokens), but the cost of an equivalent request does not drop in direct proportion. Re-run token counting against Claude Sonnet 5 rather than reusing counts measured against earlier models.
-
-2. **128k max output tokens (unchanged):** Claude Sonnet 5 supports up to 128k output tokens, the same as Claude Sonnet 4.6. Existing `max_tokens` values remain valid. Account for the new tokenizer when sizing them.
-
-3. **Assistant message prefilling (unchanged):** Prefilling the assistant message returns a `400` error on Claude Sonnet 5, the same as on Claude Sonnet 4.6. If you removed prefill when migrating to Claude Sonnet 4.6, no further changes are needed. Use [structured outputs](https://platform.claude.com/docs/en/build-with-claude/structured-outputs), system prompt instructions, or `output_config.format` instead.
-
-4. **Adaptive thinking on by default:** On Claude Sonnet 4.6, requests without a `thinking` field run without thinking; on Claude Sonnet 5, the same requests run with [adaptive thinking](https://platform.claude.com/docs/en/build-with-claude/thinking). To turn thinking off, pass `thinking: {type: "disabled"}`. Manual extended thinking (`thinking: {type: "enabled", budget_tokens: N}`) is not supported and returns a 400 error. Use the [effort parameter](https://platform.claude.com/docs/en/build-with-claude/effort) (default `high`) to control thinking depth.
-
-
-
-
- Adaptive thinking is on by default for Claude Sonnet 5. The `thinking` field is shown explicitly here to set `display: "summarized"`; if you omit `thinking`, Claude Sonnet 5 omits thinking content from the response by default. For per-model defaults, see [Configurations each model rejects](https://platform.claude.com/docs/en/build-with-claude/thinking-troubleshooting#rejected-configurations).
-
-
-
- ```bash cURL
- curl https://api.anthropic.com/v1/messages \
- -H "x-api-key: $ANTHROPIC_API_KEY" \
- -H "anthropic-version: 2023-06-01" \
- -H "content-type: application/json" \
- -d '{
- "model": "claude-sonnet-5",
- "max_tokens": 16000,
- "thinking": {
- "type": "adaptive",
- "display": "summarized"
- },
- "output_config": {
- "effort": "high"
- },
- "messages": [
- {
- "role": "user",
- "content": "Are there an infinite number of prime numbers such that n mod 4 == 3?"
- }
- ]
- }'
- ```
-
- ```bash CLI
- ant messages create --transform content --format yaml <<'YAML'
- model: claude-sonnet-5
- max_tokens: 16000
- thinking:
- type: adaptive
- display: summarized
- output_config:
- effort: high
- messages:
- - role: user
- content: Are there an infinite number of prime numbers such that n mod 4 == 3?
- YAML
- ```
-
- ```python Python
- client = anthropic.Anthropic()
-
- response = client.messages.create(
- model="claude-sonnet-5",
- max_tokens=16000,
- thinking={"type": "adaptive", "display": "summarized"},
- output_config={"effort": "high"},
- messages=[
- {
- "role": "user",
- "content": "Are there an infinite number of prime numbers such that n mod 4 == 3?",
- }
- ],
- )
-
- # The response contains summarized thinking blocks and text blocks
- for block in response.content:
- match block.type:
- case "thinking":
- print(f"\nThinking summary: {block.thinking}")
- case "text":
- print(f"\nResponse: {block.text}")
- ```
-
- ```typescript TypeScript
- const client = new Anthropic();
-
- const response = await client.messages.create({
- model: "claude-sonnet-5",
- max_tokens: 16000,
- thinking: {
- type: "adaptive",
- display: "summarized"
- },
- output_config: {
- effort: "high"
- },
- messages: [
- {
- role: "user",
- content: "Are there an infinite number of prime numbers such that n mod 4 == 3?"
- }
- ]
- });
-
- // 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}`);
- }
- }
- ```
-
- ```csharp C#
- AnthropicClient client = new();
-
- var response = await client.Messages.Create(new()
- {
- Model = Model.ClaudeSonnet5,
- MaxTokens = 16000,
- Thinking = new ThinkingConfigAdaptive { Display = Display.Summarized },
- OutputConfig = new OutputConfig { Effort = Effort.High },
- Messages =
- [
- new()
- {
- Role = Role.User,
- Content = "Are there an infinite number of prime numbers such that n mod 4 == 3?",
- },
- ],
- });
-
- // The response contains summarized thinking blocks and text blocks
- foreach (var block in response.Content)
- {
- if (block.TryPickThinking(out var thinking))
- {
- Console.WriteLine($"\nThinking summary: {thinking.Thinking}");
- }
- else if (block.TryPickText(out var text))
- {
- Console.WriteLine($"\nResponse: {text.Text}");
- }
- }
- ```
-
- ```go Go
- client := anthropic.NewClient()
-
- response, err := client.Messages.New(context.Background(), anthropic.MessageNewParams{
- Model: anthropic.ModelClaudeSonnet5,
- MaxTokens: 16000,
- Thinking: anthropic.ThinkingConfigParamUnion{
- OfAdaptive: &anthropic.ThinkingConfigAdaptiveParam{
- Display: anthropic.ThinkingConfigAdaptiveDisplaySummarized,
- },
- },
- OutputConfig: anthropic.OutputConfigParam{
- Effort: anthropic.OutputConfigEffortHigh,
- },
- Messages: []anthropic.MessageParam{
- anthropic.NewUserMessage(anthropic.NewTextBlock("Are there an infinite number of prime numbers such that n mod 4 == 3?")),
- },
- })
- if err != nil {
- log.Fatal(err)
- }
-
- // The response contains summarized thinking blocks and text blocks
- for _, block := range response.Content {
- switch block := block.AsAny().(type) {
- case anthropic.ThinkingBlock:
- fmt.Printf("\nThinking summary: %s", block.Thinking)
- case anthropic.TextBlock:
- fmt.Printf("\nResponse: %s", block.Text)
- }
- }
- ```
-
- ```java Java
- import com.anthropic.client.okhttp.AnthropicOkHttpClient;
- import com.anthropic.models.messages.MessageCreateParams;
- import com.anthropic.models.messages.Model;
- import com.anthropic.models.messages.OutputConfig;
- import com.anthropic.models.messages.ThinkingConfigAdaptive;
-
- void main() {
- var client = AnthropicOkHttpClient.fromEnv();
-
- var params = MessageCreateParams.builder()
- .model(Model.CLAUDE_SONNET_5)
- .maxTokens(16_000)
- .thinking(ThinkingConfigAdaptive.builder()
- .display(ThinkingConfigAdaptive.Display.SUMMARIZED)
- .build())
- .outputConfig(OutputConfig.builder()
- .effort(OutputConfig.Effort.HIGH)
- .build())
- .addUserMessage("Are there an infinite number of prime numbers such that n mod 4 == 3?")
- .build();
-
- var response = client.messages().create(params);
-
- // The response contains summarized thinking blocks and text blocks
- for (var block : response.content()) {
- block.thinking().ifPresent(thinkingBlock ->
- IO.println("\nThinking summary: " + thinkingBlock.thinking())
- );
- block.text().ifPresent(textBlock ->
- IO.println("\nResponse: " + textBlock.text())
- );
- }
- }
- ```
-
- ```php PHP
- $client = new Client();
-
- $response = $client->messages->create(
- model: 'claude-sonnet-5',
- maxTokens: 16000,
- thinking: ['type' => 'adaptive', 'display' => 'summarized'],
- outputConfig: ['effort' => 'high'],
- messages: [
- [
- 'role' => 'user',
- 'content' => 'Are there an infinite number of prime numbers such that n mod 4 == 3?',
- ],
- ],
- );
-
- // 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}",
- default => '',
- };
- }
- ```
-
- ```ruby Ruby
- client = Anthropic::Client.new
-
- response = client.messages.create(
- model: "claude-sonnet-5",
- max_tokens: 16_000,
- thinking: {type: :adaptive, display: :summarized},
- output_config: {effort: :high},
- messages: [
- {
- role: :user,
- content: "Are there an infinite number of prime numbers such that n mod 4 == 3?"
- }
- ]
- )
-
- # 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
- end
- end
- ```
-
-
-
-
-
- ```bash cURL
- curl https://api.anthropic.com/v1/messages \
- -H "x-api-key: $ANTHROPIC_API_KEY" \
- -H "anthropic-version: 2023-06-01" \
- -H "content-type: application/json" \
- -d '{
- "model": "claude-sonnet-4-6",
- "max_tokens": 16000,
- "thinking": {
- "type": "enabled",
- "budget_tokens": 10000
- },
- "messages": [
- {
- "role": "user",
- "content": "Are there an infinite number of prime numbers such that n mod 4 == 3?"
- }
- ]
- }'
- ```
-
- ```bash CLI
- ant messages create \
- --transform content --format yaml <<'YAML'
- model: claude-sonnet-4-6
- max_tokens: 16000
- thinking:
- type: enabled
- budget_tokens: 10000
- messages:
- - role: user
- content: Are there an infinite number of prime numbers such that n mod 4 == 3?
- YAML
- ```
-
- ```python Python
- client = anthropic.Anthropic()
-
- response = client.messages.create(
- model="claude-sonnet-4-6",
- max_tokens=16000,
- thinking={"type": "enabled", "budget_tokens": 10000},
- messages=[
- {
- "role": "user",
- "content": "Are there an infinite number of prime numbers such that n mod 4 == 3?",
- }
- ],
- )
-
- # The response contains summarized thinking blocks and text blocks
- for block in response.content:
- match block.type:
- case "thinking":
- print(f"\nThinking summary: {block.thinking}")
- case "text":
- print(f"\nResponse: {block.text}")
- ```
-
- ```typescript TypeScript
- const client = new Anthropic();
-
- const response = await client.messages.create({
- model: "claude-sonnet-4-6",
- max_tokens: 16000,
- thinking: {
- type: "enabled",
- budget_tokens: 10000,
- },
- messages: [
- {
- role: "user",
- content: "Are there an infinite number of prime numbers such that n mod 4 == 3?",
- },
- ],
- });
-
- // 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}`);
- }
- }
- ```
-
- ```csharp C#
- AnthropicClient client = new();
-
- var response = await client.Messages.Create(new()
- {
- Model = Model.ClaudeSonnet4_6,
- MaxTokens = 16000,
- Thinking = new ThinkingConfigEnabled(budgetTokens: 10000),
- Messages =
- [
- new()
- {
- Role = Role.User,
- Content = "Are there an infinite number of prime numbers such that n mod 4 == 3?",
- },
- ],
- });
-
- // The response contains summarized thinking blocks and text blocks
- foreach (var block in response.Content)
- {
- if (block.TryPickThinking(out var thinking))
- {
- Console.WriteLine($"\nThinking summary: {thinking.Thinking}");
- }
- else if (block.TryPickText(out var text))
- {
- Console.WriteLine($"\nResponse: {text.Text}");
- }
- }
- ```
-
- ```go Go
- client := anthropic.NewClient()
-
- response, err := client.Messages.New(context.Background(), anthropic.MessageNewParams{
- Model: anthropic.ModelClaudeSonnet4_6,
- MaxTokens: 16000,
- Thinking: anthropic.ThinkingConfigParamOfEnabled(10000),
- Messages: []anthropic.MessageParam{
- anthropic.NewUserMessage(anthropic.NewTextBlock("Are there an infinite number of prime numbers such that n mod 4 == 3?")),
- },
- })
- if err != nil {
- log.Fatal(err)
- }
-
- // The response contains summarized thinking blocks and text blocks
- for _, block := range response.Content {
- switch block := block.AsAny().(type) {
- case anthropic.ThinkingBlock:
- fmt.Printf("\nThinking summary: %s", block.Thinking)
- case anthropic.TextBlock:
- fmt.Printf("\nResponse: %s", block.Text)
- }
- }
- ```
-
- ```java Java
- import com.anthropic.client.okhttp.AnthropicOkHttpClient;
- import com.anthropic.models.messages.MessageCreateParams;
- import com.anthropic.models.messages.Model;
-
- void main() {
- var client = AnthropicOkHttpClient.fromEnv();
-
- var params = MessageCreateParams.builder()
- .model(Model.CLAUDE_SONNET_4_6)
- .maxTokens(16_000)
- .enabledThinking(10_000)
- .addUserMessage("Are there an infinite number of prime numbers such that n mod 4 == 3?")
- .build();
-
- var response = client.messages().create(params);
-
- // The response contains summarized thinking blocks and text blocks
- for (var block : response.content()) {
- block.thinking().ifPresent(thinkingBlock ->
- IO.println("\nThinking summary: " + thinkingBlock.thinking())
- );
- block.text().ifPresent(textBlock ->
- IO.println("\nResponse: " + textBlock.text())
- );
- }
- }
- ```
-
- ```php PHP
- $client = new Client();
-
- $response = $client->messages->create(
- model: 'claude-sonnet-4-6',
- maxTokens: 16000,
- thinking: ['type' => 'enabled', 'budget_tokens' => 10000],
- messages: [
- [
- 'role' => 'user',
- 'content' => 'Are there an infinite number of prime numbers such that n mod 4 == 3?',
- ],
- ],
- );
-
- // 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}",
- default => '',
- };
- }
- ```
-
- ```ruby Ruby
- client = Anthropic::Client.new
-
- response = client.messages.create(
- model: "claude-sonnet-4-6",
- max_tokens: 16_000,
- thinking: {
- type: :enabled,
- budget_tokens: 10_000
- },
- messages: [
- {
- role: :user,
- content: "Are there an infinite number of prime numbers such that n mod 4 == 3?"
- }
- ]
- )
-
- # 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
- end
- end
- ```
-
-
-
-
-5. **Sampling parameters removed:** Sampling parameters (`temperature`, `top_p`, `top_k`) set to a non-default value are not accepted and return a 400 error.
-
-6. **Cybersecurity safeguards:** Claude Sonnet 5 is the first Sonnet-tier model with real-time cybersecurity safeguards. Requests that involve prohibited or high-risk cybersecurity topics may be refused. Refusals return as a successful HTTP 200 response with `stop_reason: "refusal"`, not an error. See [Real-time cyber safeguards on Claude Opus and Sonnet](https://support.claude.com/en/articles/14604842-real-time-cyber-safeguards-on-claude-opus-and-sonnet) for what the safeguards block and how legitimate security work can apply to the Cyber Verification Program.
-
-#### Migration checklist
-
-* Update model name from `claude-sonnet-4-6` to `claude-sonnet-5`.
-* Re-run [token counting](https://platform.claude.com/docs/en/build-with-claude/token-counting) against Claude Sonnet 5. The new tokenizer produces approximately 30% more tokens for the same text, which can change per-request cost even though per-token pricing is lower. The exact increase depends on the content and workload shape.
-* Revisit `max_tokens` limits sized close to your expected output length, and raise them up to the 128k maximum (unchanged from Claude Sonnet 4.6) where useful.
-* Remove `thinking: {type: "enabled", budget_tokens: N}` configuration (returns a 400 error). Adaptive thinking is on by default; pass `{type: "disabled"}` to turn it off, or use the [effort parameter](https://platform.claude.com/docs/en/build-with-claude/effort) to control depth.
-* Remove `temperature`, `top_p`, and `top_k` parameters set to non-default values (they return a 400 error on Claude Sonnet 5).
-* Add handling for `stop_reason: "refusal"` if your workload may touch cybersecurity topics.
-* Re-baseline cost on your typical workload before production deployment.
-* Review `max_tokens` for workloads that previously ran without thinking.
-
-### Migrating to Claude Sonnet 5 from Claude Sonnet 4.5 and earlier Sonnet models
-
-If you are migrating from Claude Sonnet 4.5 or an earlier Sonnet model directly to Claude Sonnet 5, apply the [Migrating to Claude Sonnet 5 from Claude Sonnet 4.6](https://platform.claude.com/docs/en/about-claude/models/migration-guide#migrating-from-claude-sonnet-4-6-to-claude-sonnet-5) changes plus the changes in this section.
-
-
- Claude Sonnet 5 defaults to an effort level of `high`, in contrast to Sonnet 4.5 which had no effort parameter. Consider adjusting the [effort parameter](https://platform.claude.com/docs/en/build-with-claude/effort) as you migrate. If not explicitly set, you may experience higher latency with the default effort level.
-
-
-#### Breaking changes
-
-##### When migrating from Sonnet 4.5
-
-1. **Prefilling assistant messages is no longer supported**
-
-
- This is a breaking change when migrating from Sonnet 4.5 or earlier.
-
-
- Prefilling assistant messages returns a `400` error on Claude Sonnet 4.6 and later models, including Claude Sonnet 5. Use [structured outputs](https://platform.claude.com/docs/en/build-with-claude/structured-outputs), system prompt instructions, or `output_config.format` instead.
-
- **Common prefill use cases and migrations:**
-
- * **Controlling output formatting** (forcing JSON/YAML output): Use [structured outputs](https://platform.claude.com/docs/en/build-with-claude/structured-outputs) or tools with enum fields for classification tasks.
-
- * **Eliminating preambles** (removing "Here is..." phrases): Add direct instructions in the system prompt: "Respond directly without preamble. Do not start with phrases like 'Here is...', 'Based on...', etc."
-
- * **Avoiding bad refusals:** Claude is much better at appropriate refusals now. Clear prompting in the user message without prefill should be sufficient.
-
- * **Continuations** (resuming interrupted responses): Move the continuation to the user message: "Your previous response was interrupted and ended with `[previous_response]`. Continue from where you left off."
-
- * **Context hydration / role consistency** (refreshing context in long conversations): Inject what were previously prefilled-assistant reminders into the user turn instead.
-
-2. **Tool parameter JSON escaping may differ**
-
-
- This is a breaking change when migrating from Sonnet 4.5 or earlier.
-
-
- JSON string escaping in tool parameters may differ from previous models. Standard JSON parsers handle this automatically, but custom string-based parsing may need updates.
-
-**Extended thinking changes:** `budget_tokens` configurations from Claude Sonnet 4.5 (`thinking: {type: "enabled", budget_tokens: N}`) are not supported on Claude Sonnet 5 and return a 400 error. Adaptive thinking is on by default, so most workloads need no `thinking` configuration at all; use the [effort parameter](https://platform.claude.com/docs/en/build-with-claude/effort) to control thinking depth. If you ran Claude Sonnet 4.5 without extended thinking, pass `thinking: {type: "disabled"}` to preserve that behavior.
-
-##### When migrating from Claude 3.x
-
-3. **Remove sampling parameters**
-
-
- This is a breaking change when migrating from Claude 3.x models.
-
-
- Sampling parameters (`temperature`, `top_p`, `top_k`) set to a non-default value return a 400 error on Claude Sonnet 5. Remove them from requests, and use prompting to guide the model's behavior instead.
-
-4. **Update tool versions**
-
-
- This is a breaking change when migrating from Claude 3.x models.
-
-
- Update to the latest tool versions (`text_editor_20250728`, `code_execution_20260521`). Remove any code using the `undo_edit` command.
-
-5. **Handle the `refusal` stop reason**
-
- Update your application to [handle `refusal` stop reasons](https://platform.claude.com/docs/en/test-and-evaluate/strengthen-guardrails/handle-streaming-refusals).
-
-6. **Update your prompts for behavioral changes**
-
- Claude 4 models have a more concise, direct communication style. Review [prompting best practices](https://platform.claude.com/docs/en/build-with-claude/prompt-engineering/claude-prompting-best-practices) for optimization guidance.
-
-### Migrating to Claude Sonnet 5 from Claude Haiku 4.5
-
-Claude Haiku 4.5 and Claude Sonnet 5 differ more at the API level than adjacent models within one class: Claude Haiku 4.5 uses manual [extended thinking](https://platform.claude.com/docs/en/build-with-claude/extended-thinking) (off by default), a 200k token context window, and up to 64k output tokens, while Claude Sonnet 5 runs with [adaptive thinking](https://platform.claude.com/docs/en/build-with-claude/thinking) on by default, serves a [1M token context window](https://platform.claude.com/docs/en/build-with-claude/context-windows) by default, and supports up to [128k output tokens](https://platform.claude.com/docs/en/models/overview).
-
-#### Update your model name
-
-```python
-model = "claude-haiku-4-5-20251001" # Before
-model = "claude-sonnet-5" # After
-```
-
-#### What changed
-
-1. **Thinking configuration:** Claude Haiku 4.5 supports manual extended thinking (`thinking: {type: "enabled", budget_tokens: N}`) and rejects `thinking: {type: "adaptive"}`. On Claude Sonnet 5, the support is reversed: adaptive thinking is on by default, and manual extended thinking returns a 400 error. Remove `thinking: {type: "enabled", budget_tokens: N}` configurations and rely on the default, or pass `thinking: {type: "disabled"}` to turn thinking off. `budget_tokens` has no direct replacement; use the [effort parameter](https://platform.claude.com/docs/en/build-with-claude/effort) to control thinking depth. Effort is not available on Claude Haiku 4.5 and defaults to `high` on Claude Sonnet 5.
-
-2. **Sampling parameters removed:** `temperature` and `top_p` work on Claude Haiku 4.5 (one at a time, not both). On Claude Sonnet 5, setting `temperature`, `top_p`, or `top_k` to a non-default value returns a 400 error. Remove these parameters and use prompting to guide the model's behavior.
-
-3. **Assistant prefill removed:** Prefilling the assistant message works on Claude Haiku 4.5 but returns a 400 error on Claude Sonnet 5. Use [structured outputs](https://platform.claude.com/docs/en/build-with-claude/structured-outputs), system prompt instructions, or `output_config.format` instead.
-
-4. **Larger context window and output:** Claude Sonnet 5 serves a 1M token context window by default, up from 200k tokens on Claude Haiku 4.5, and supports up to 128k output tokens, up from 64k. Claude Sonnet 5 also uses a different tokenizer, so re-run [token counting](https://platform.claude.com/docs/en/build-with-claude/token-counting) rather than reusing counts measured against Claude Haiku 4.5.
-
-5. **Pricing:** Claude Haiku 4.5 is priced at $1/$5 per million input/output tokens. Claude Sonnet 5 is priced at $2/$10 per million input/output tokens. See [Claude pricing](https://platform.claude.com/docs/en/about-claude/pricing).
-
-6. **Cybersecurity safeguards:** Claude Sonnet 5 has real-time cybersecurity safeguards. Requests that involve prohibited or high-risk cybersecurity topics may be refused, returned as a successful HTTP 200 response with `stop_reason: "refusal"`. See [Real-time cyber safeguards on Claude Opus and Sonnet](https://support.claude.com/en/articles/14604842-real-time-cyber-safeguards-on-claude-opus-and-sonnet) for what the safeguards block and how legitimate security work can apply to the Cyber Verification Program.
-
-#### Migration checklist
-
-* Update the model name from `claude-haiku-4-5-20251001` (or the `claude-haiku-4-5` alias) to `claude-sonnet-5`.
-* Remove `thinking: {type: "enabled", budget_tokens: N}` configuration (returns a 400 error). Adaptive thinking is on by default; pass `thinking: {type: "disabled"}` to preserve no-thinking behavior, and revisit `max_tokens` for workloads that ran without thinking.
-* Use the [effort parameter](https://platform.claude.com/docs/en/build-with-claude/effort) (default `high`) to control thinking depth and token spend; it is not available on Claude Haiku 4.5, so no existing setting carries over.
-* Remove `temperature` and `top_p` settings (non-default values return a 400 error on Claude Sonnet 5).
-* Remove any assistant-message prefills (they return a 400 error on Claude Sonnet 5).
-* Re-run [token counting](https://platform.claude.com/docs/en/build-with-claude/token-counting) against Claude Sonnet 5, and revisit `max_tokens` limits, which you can raise up to the 128k maximum.
-* Add handling for `stop_reason: "refusal"` if your workload may touch cybersecurity topics.
-* Re-baseline cost on your typical workload before production deployment; per-token pricing differs.
-
-***
-
-## Migrating to Claude Haiku 4.5
-
-Claude Haiku 4.5 is the fastest and most intelligent Haiku model with near-frontier performance, delivering premium model quality for interactive applications and high-volume processing.
-
-For a complete overview of capabilities, see the [models overview](https://platform.claude.com/docs/en/models/overview).
-
-
- For Claude Haiku 4.5 pricing, see [Claude pricing](https://platform.claude.com/docs/en/about-claude/pricing).
-
-
-
- For significant performance improvements on coding and reasoning tasks, consider enabling extended thinking with `thinking: {type: "enabled", budget_tokens: N}`.
-
-
-
- Extended thinking impacts [prompt caching](https://platform.claude.com/docs/en/build-with-claude/prompt-caching#caching-with-thinking-blocks) efficiency.
-
- Extended thinking is deprecated in Claude 4.6 models and removed in Claude Opus 4.7. If using newer models, use [adaptive thinking](https://platform.claude.com/docs/en/build-with-claude/thinking) instead.
-
-
-### Migrating to Claude Haiku 4.5 from Claude Haiku 3.5 and earlier Haiku models
-
-**Update your model name:**
-
-```python
-# From Haiku 3.5
-model = "claude-3-5-haiku-20241022" # Before
-model = "claude-haiku-4-5-20251001" # After
-```
-
-**Review new rate limits:** Haiku 4.5 has separate rate limits from Haiku 3.5. See [Rate limits](https://platform.claude.com/docs/en/api/rate-limits) documentation for details.
-
-**Explore new capabilities:** See the [models overview](https://platform.claude.com/docs/en/models/overview) for details on context awareness, increased output capacity (64k tokens), higher intelligence, and improved speed.
-
-#### Breaking changes
-
-These breaking changes apply when migrating from Claude 3.x Haiku models.
-
-1. **Update sampling parameters**
-
-
- This is a breaking change when migrating from Claude 3.x models.
-
-
- Use only `temperature` OR `top_p`, not both. Setting both returns a 400 error on Claude Haiku 4.5.
-
-2. **Update tool versions**
-
-
- This is a breaking change when migrating from Claude 3.x models.
-
-
- Update to the latest tool versions (`text_editor_20250728`, `code_execution_20250825`). Remove any code using the `undo_edit` command.
-
-3. **Handle the `refusal` stop reason**
-
- Update your application to [handle `refusal` stop reasons](https://platform.claude.com/docs/en/test-and-evaluate/strengthen-guardrails/handle-streaming-refusals).
-
-4. **Update your prompts for behavioral changes**
-
- Claude 4 models have a more concise, direct communication style. Review [prompting best practices](https://platform.claude.com/docs/en/build-with-claude/prompt-engineering/claude-prompting-best-practices) for optimization guidance.
-
-#### Haiku 4.5 migration checklist
-
-* Update model ID to `claude-haiku-4-5-20251001`
-* **BREAKING:** Update tool versions to latest (`text_editor_20250728`, `code_execution_20250825`); legacy versions are not supported
-* **BREAKING:** Remove any code using the `undo_edit` command (if applicable)
-* **BREAKING:** Update sampling parameters to use only `temperature` OR `top_p`, not both (setting both returns a 400 error)
-* Handle new `refusal` stop reason in your application
-* Review and adjust for new rate limits (separate from Haiku 3.5)
-* Review and update prompts following [prompting best practices](https://platform.claude.com/docs/en/build-with-claude/prompt-engineering/claude-prompting-best-practices)
-* Consider enabling extended thinking for complex reasoning tasks
-* Test in development environment before production deployment
-
-***
+* [Migrating to Claude Mythos 5 and Claude Fable 5](https://platform.claude.com/docs/en/models/fable-5/migration-guide)
+* [Migrating to Claude Opus 5](https://platform.claude.com/docs/en/models/opus-5/migration-guide)
+* [Migrating to Claude Sonnet 5](https://platform.claude.com/docs/en/models/sonnet-5/migration-guide)
+* [Migrating to Claude Haiku 4.5](https://platform.claude.com/docs/en/models/haiku-4-5/migration-guide)
## Get help
diff --git a/content/en/agents-and-tools/agent-skills/claude-api-skill.md b/content/en/agents-and-tools/agent-skills/claude-api-skill.md
index 40f9643db..d50b4cc8e 100644
--- a/content/en/agents-and-tools/agent-skills/claude-api-skill.md
+++ b/content/en/agents-and-tools/agent-skills/claude-api-skill.md
@@ -26,7 +26,7 @@ When triggered, the skill equips Claude with:
* **Streaming patterns:** Implementation details for building chat UIs and handling incremental display
* **Batch processing:** Offline batch processing at 50% cost
* **Prompt caching:** Prefix-stability design, breakpoint placement, and silent-invalidator audit
-* **Model migration:** Step-by-step guidance for migrating to newer Claude models (including the breaking changes and behavior shifts on [Claude Opus 5](https://platform.claude.com/docs/en/about-claude/models/migration-guide#migrating-from-claude-opus-4-8-to-claude-opus-5))
+* **Model migration:** Step-by-step guidance for migrating to newer Claude models (including the breaking changes and behavior shifts on [Claude Opus 5](https://platform.claude.com/docs/en/models/opus-5/migration-guide#migrating-from-claude-opus-4-8-to-claude-opus-5))
* **Current model information:** Model IDs, context window sizes, and pricing
* **Common pitfalls:** Detailed guidance on avoiding frequent mistakes when integrating with the API
@@ -128,7 +128,7 @@ The skill handles:
As it edits, the skill explains each change and its motivation inline. On completion, it produces a checklist of items that require manual verification (typically integration tests, length-control prompt tuning, and cost/rate-limit re-baselining).
-For the full list of model-specific changes the skill applies, see [Migrating to Claude Opus 5 from Claude Opus 4.8](https://platform.claude.com/docs/en/about-claude/models/migration-guide#migrating-from-claude-opus-4-8-to-claude-opus-5).
+For the full list of model-specific changes the skill applies, see [Migrating to Claude Opus 5 from Claude Opus 4.8](https://platform.claude.com/docs/en/models/opus-5/migration-guide#migrating-from-claude-opus-4-8-to-claude-opus-5).
## Setting up a Managed Agent
diff --git a/content/en/build-with-claude/fast-mode.md b/content/en/build-with-claude/fast-mode.md
index d14c18d8a..b53055f9a 100644
--- a/content/en/build-with-claude/fast-mode.md
+++ b/content/en/build-with-claude/fast-mode.md
@@ -26,11 +26,11 @@ Fast mode is supported on the following models:
- Fast mode is not available on Claude Opus 4.7. Requests to `claude-opus-4-7` with `speed: "fast"` return an error; unlike Claude Opus 4.6 (see the following note), requests do not fall back to standard speed. The model itself remains available at standard speed. To continue using fast mode, migrate to [Claude Opus 5](https://platform.claude.com/docs/en/about-claude/models/migration-guide#migrating-from-claude-opus-47) or Claude Opus 4.8.
+ Fast mode is not available on Claude Opus 4.7. Requests to `claude-opus-4-7` with `speed: "fast"` return an error; unlike Claude Opus 4.6 (see the following note), requests do not fall back to standard speed. The model itself remains available at standard speed. To continue using fast mode, migrate to [Claude Opus 5](https://platform.claude.com/docs/en/models/opus-5/migration-guide#migrating-from-claude-opus-47) or Claude Opus 4.8.
- Fast mode is not available on Claude Opus 4.6. Requests to `claude-opus-4-6` with `speed: "fast"` do not return an error: they run at standard speed and are billed at [standard rates](https://platform.claude.com/docs/en/about-claude/pricing) rather than fast mode's premium rates, and the response reports [`usage.speed: "standard"`](https://platform.claude.com/docs/en/build-with-claude/fast-mode#checking-which-speed-was-used). To continue using fast mode, migrate to [Claude Opus 5](https://platform.claude.com/docs/en/about-claude/models/migration-guide#migrating-from-claude-opus-46) or Claude Opus 4.8.
+ Fast mode is not available on Claude Opus 4.6. Requests to `claude-opus-4-6` with `speed: "fast"` do not return an error: they run at standard speed and are billed at [standard rates](https://platform.claude.com/docs/en/about-claude/pricing) rather than fast mode's premium rates, and the response reports [`usage.speed: "standard"`](https://platform.claude.com/docs/en/build-with-claude/fast-mode#checking-which-speed-was-used). To continue using fast mode, migrate to [Claude Opus 5](https://platform.claude.com/docs/en/models/opus-5/migration-guide#migrating-from-claude-opus-46) or Claude Opus 4.8.
## How fast mode works
diff --git a/content/en/build-with-claude/prompt-engineering/claude-prompting-best-practices.md b/content/en/build-with-claude/prompt-engineering/claude-prompting-best-practices.md
index d92315d1d..73f1451a9 100644
--- a/content/en/build-with-claude/prompt-engineering/claude-prompting-best-practices.md
+++ b/content/en/build-with-claude/prompt-engineering/claude-prompting-best-practices.md
@@ -1084,7 +1084,7 @@ For detailed migration steps, see the [Migration guide](https://platform.claude.
### Migrating to Claude Sonnet 5 from Claude Sonnet 4.5 or earlier
-See [Migrating to Claude Sonnet 5 from Claude Sonnet 4.5 or earlier](https://platform.claude.com/docs/en/about-claude/models/migration-guide#migrating-from-sonnet-45) in the migration guide, which covers the effort default change and the removal of manual extended thinking (`budget_tokens`).
+See [Migrating to Claude Sonnet 5 from Claude Sonnet 4.5 or earlier](https://platform.claude.com/docs/en/models/sonnet-5/migration-guide#migrating-from-sonnet-45) in the migration guide, which covers the effort default change and the removal of manual extended thinking (`budget_tokens`).
## Next steps
diff --git a/content/en/build-with-claude/prompt-engineering/prompting-claude-opus-4-8.md b/content/en/build-with-claude/prompt-engineering/prompting-claude-opus-4-8.md
index e64971bf0..afb4c133e 100644
--- a/content/en/build-with-claude/prompt-engineering/prompting-claude-opus-4-8.md
+++ b/content/en/build-with-claude/prompt-engineering/prompting-claude-opus-4-8.md
@@ -4,12 +4,12 @@ url: https://platform.claude.com/docs/en/build-with-claude/prompt-engineering/pr
description: Behavioral differences and prompting patterns for Claude Opus 4.8, covering verbosity, effort calibration, tool use, subagents, and frontend defaults.
---
-This guide covers the prompting patterns specific to Claude Opus 4.8. For the API changes involved in moving from Claude Opus 4.8 to the latest Opus model, see [Migrating to Claude Opus 5 from Claude Opus 4.8](https://platform.claude.com/docs/en/about-claude/models/migration-guide#migrating-from-claude-opus-4-8-to-claude-opus-5). For techniques that apply across all current Claude models, see [Prompting best practices](https://platform.claude.com/docs/en/build-with-claude/prompt-engineering/claude-prompting-best-practices).
+This guide covers the prompting patterns specific to Claude Opus 4.8. For the API changes involved in moving from Claude Opus 4.8 to the latest Opus model, see [Migrating to Claude Opus 5 from Claude Opus 4.8](https://platform.claude.com/docs/en/models/opus-5/migration-guide#migrating-from-claude-opus-4-8-to-claude-opus-5). For techniques that apply across all current Claude models, see [Prompting best practices](https://platform.claude.com/docs/en/build-with-claude/prompt-engineering/claude-prompting-best-practices).
Claude Opus 4.8 has particular strengths in long-horizon agentic work, knowledge work, vision, and memory tasks. It performs well out of the box on existing Claude Opus 4.7 prompts. The following patterns cover the behaviors that most often require tuning.
- For the API parameter changes since Claude Opus 4.7 (sampling parameters, effort default, 1M context window default, mid-conversation system messages, and refusal stop details), see [Migrating to Claude Opus 5 from Claude Opus 4.7](https://platform.claude.com/docs/en/about-claude/models/migration-guide#migrating-from-claude-opus-47), which covers the same changes on the way to the latest Opus model; Claude Opus 4.8 shares these behaviors.
+ For the API parameter changes since Claude Opus 4.7 (sampling parameters, effort default, 1M context window default, mid-conversation system messages, and refusal stop details), see [Migrating to Claude Opus 5 from Claude Opus 4.7](https://platform.claude.com/docs/en/models/opus-5/migration-guide#migrating-from-claude-opus-47), which covers the same changes on the way to the latest Opus model; Claude Opus 4.8 shares these behaviors.
## Response length and verbosity
diff --git a/content/en/build-with-claude/prompt-engineering/prompting-claude-opus-5.md b/content/en/build-with-claude/prompt-engineering/prompting-claude-opus-5.md
index b75d0a36c..1f148e675 100644
--- a/content/en/build-with-claude/prompt-engineering/prompting-claude-opus-5.md
+++ b/content/en/build-with-claude/prompt-engineering/prompting-claude-opus-5.md
@@ -9,7 +9,7 @@ This guide covers the prompting patterns specific to Claude Opus 5. For the mode
Claude Opus 5 is built for complex agentic coding and enterprise work, with particular strengths in long-horizon agentic tasks. It performs well out of the box on existing Claude Opus 4.8 prompts. The following patterns cover the behaviors that most often require tuning.
- For API changes when migrating from Claude Opus 4.8 (thinking on by default, and disabling thinking capped at `high` effort), see the [migration guide](https://platform.claude.com/docs/en/about-claude/models/migration-guide#migrating-from-claude-opus-4-8-to-claude-opus-5).
+ For API changes when migrating from Claude Opus 4.8 (thinking on by default, and disabling thinking capped at `high` effort), see the [migration guide](https://platform.claude.com/docs/en/models/opus-5/migration-guide#migrating-from-claude-opus-4-8-to-claude-opus-5).
## Capability improvements
@@ -92,7 +92,7 @@ Only correct an earlier statement when the error would change the user's code, c
## Running with thinking disabled
-Claude Opus 5 runs with [thinking](https://platform.claude.com/docs/en/build-with-claude/thinking) on by default, and thinking can be disabled only at [effort](https://platform.claude.com/docs/en/build-with-claude/effort) `high` or below; see the [migration guide](https://platform.claude.com/docs/en/about-claude/models/migration-guide#migrating-from-claude-opus-4-8-to-claude-opus-5). With thinking disabled, two artifacts can occasionally appear in the model's visible output. The primary mitigation for both is to keep thinking enabled and control token cost with lower effort levels instead of disabling thinking: for most tasks, thinking enabled at `low` effort performs better than thinking disabled at similar cost.
+Claude Opus 5 runs with [thinking](https://platform.claude.com/docs/en/build-with-claude/thinking) on by default, and thinking can be disabled only at [effort](https://platform.claude.com/docs/en/build-with-claude/effort) `high` or below; see the [migration guide](https://platform.claude.com/docs/en/models/opus-5/migration-guide#migrating-from-claude-opus-4-8-to-claude-opus-5). With thinking disabled, two artifacts can occasionally appear in the model's visible output. The primary mitigation for both is to keep thinking enabled and control token cost with lower effort levels instead of disabling thinking: for most tasks, thinking enabled at `low` effort performs better than thinking disabled at similar cost.
**Tool calls as text.** With thinking disabled, the model occasionally writes a tool call into its user-facing text instead of emitting a structured `tool_use` block. The turn completes normally and the call never runs, and in agentic loops the leaked text stays in the conversation history, so later turns are affected as well. This is most common on tool-heavy workloads such as search.
diff --git a/content/en/build-with-claude/prompt-engineering/prompting-claude-sonnet-5.md b/content/en/build-with-claude/prompt-engineering/prompting-claude-sonnet-5.md
index 724ac4275..7442e48a8 100644
--- a/content/en/build-with-claude/prompt-engineering/prompting-claude-sonnet-5.md
+++ b/content/en/build-with-claude/prompt-engineering/prompting-claude-sonnet-5.md
@@ -9,7 +9,7 @@ This guide covers the prompting patterns specific to Claude Sonnet 5. For the mo
Claude Sonnet 5 has particular strengths in coding and agentic tasks. It performs well out of the box on existing Claude Sonnet 4.6 prompts. The patterns in this guide cover the behaviors that most often require tuning.
- For API parameter changes when migrating from Claude Sonnet 4.6 (adaptive thinking on by default, sampling parameters not accepted, manual extended thinking removed, and the new tokenizer), see the [migration guide](https://platform.claude.com/docs/en/about-claude/models/migration-guide#migrating-from-claude-sonnet-4-6-to-claude-sonnet-5).
+ For API parameter changes when migrating from Claude Sonnet 4.6 (adaptive thinking on by default, sampling parameters not accepted, manual extended thinking removed, and the new tokenizer), see the [migration guide](https://platform.claude.com/docs/en/models/sonnet-5/migration-guide#migrating-from-claude-sonnet-4-6-to-claude-sonnet-5).
## Response length and verbosity
diff --git a/content/en/build-with-claude/refusals-and-fallback.md b/content/en/build-with-claude/refusals-and-fallback.md
index 6eb2ea52f..d3bb2a901 100644
--- a/content/en/build-with-claude/refusals-and-fallback.md
+++ b/content/en/build-with-claude/refusals-and-fallback.md
@@ -1177,7 +1177,7 @@ Server-side fallback is not available for batches (a batch request that includes
How SDK middleware works, including the refusal-fallback helper.
-
+
Move an existing application to Claude Fable 5.
diff --git a/content/en/build-with-claude/working-with-messages.md b/content/en/build-with-claude/working-with-messages.md
index b3932dd9e..aaddc6fab 100644
--- a/content/en/build-with-claude/working-with-messages.md
+++ b/content/en/build-with-claude/working-with-messages.md
@@ -20,7 +20,7 @@ This guide covers common patterns for working with the Messages API, including b
## Basic request and response
- The `temperature`, `top_p`, and `top_k` sampling parameters are not supported on Claude 4.7 and later models and Claude Mythos Preview. Setting them to a non-default value returns a 400 error. Omit them from request payloads and use prompting to guide the model's behavior instead. See the [migration guide](https://platform.claude.com/docs/en/about-claude/models/migration-guide#migrating-from-claude-opus-47).
+ The `temperature`, `top_p`, and `top_k` sampling parameters are not supported on Claude 4.7 and later models and Claude Mythos Preview. Setting them to a non-default value returns a 400 error. Omit them from request payloads and use prompting to guide the model's behavior instead. See the [migration guide](https://platform.claude.com/docs/en/models/opus-5/migration-guide#migrating-from-claude-opus-47).
diff --git a/content/en/models/fable-5/introducing-claude-fable-5-and-claude-mythos-5.md b/content/en/models/fable-5/introducing-claude-fable-5-and-claude-mythos-5.md
index 86485f756..319881e70 100644
--- a/content/en/models/fable-5/introducing-claude-fable-5-and-claude-mythos-5.md
+++ b/content/en/models/fable-5/introducing-claude-fable-5-and-claude-mythos-5.md
@@ -93,13 +93,13 @@ At launch, Claude Fable 5 and Claude Mythos 5 support:
Step-by-step instructions live in the migration guide:
-* From Claude Mythos Preview: see [Migrating from Claude Mythos Preview to Claude Mythos 5](https://platform.claude.com/docs/en/about-claude/models/migration-guide#migrating-from-claude-mythos-preview).
-* From Claude Opus 4.8: see [Migrating from Claude Opus 4.8 to Claude Fable 5](https://platform.claude.com/docs/en/about-claude/models/migration-guide#migrating-from-claude-opus-48).
+* From Claude Mythos Preview: see [Migrating from Claude Mythos Preview to Claude Mythos 5](https://platform.claude.com/docs/en/models/fable-5/migration-guide#migrating-from-claude-mythos-preview).
+* From Claude Opus 4.8: see [Migrating from Claude Opus 4.8 to Claude Fable 5](https://platform.claude.com/docs/en/models/fable-5/migration-guide#migrating-from-claude-opus-48).
## Next steps
-
+
Step-by-step upgrade instructions from Claude Opus 4.8 and Claude Mythos Preview.
diff --git a/content/en/models/fable-5/migration-guide.md b/content/en/models/fable-5/migration-guide.md
new file mode 100644
index 000000000..e812ed1bc
--- /dev/null
+++ b/content/en/models/fable-5/migration-guide.md
@@ -0,0 +1,696 @@
+---
+title: Migrating to Claude Mythos 5 and Claude Fable 5
+url: https://platform.claude.com/docs/en/models/fable-5/migration-guide
+description: "Migrate to Claude Mythos 5 and Claude Fable 5 from Claude Mythos Preview, Claude Opus 5, or Claude Opus 4.8: model IDs, API changes, and migration checklists."
+---
+
+
+ This guide covers migrating [Messages API](https://platform.claude.com/docs/en/build-with-claude/working-with-messages) code. If you use [Claude Managed Agents](https://platform.claude.com/docs/en/managed-agents/overview), no changes beyond updating the model name are required.
+
+
+
+ **Automate your migration with the Claude API skill.** In Claude Code, run `/claude-api migrate` to invoke the bundled [Claude API skill](https://platform.claude.com/docs/en/agents-and-tools/agent-skills/claude-api-skill#migrating-to-a-newer-claude-model). It works for any current Claude model as the target:
+
+ ```text wrap
+ /claude-api migrate this project to claude-opus-5
+ ```
+
+ The skill applies the model ID swap and, as needed, breaking parameter changes, prefill replacement, and effort calibration for your target model across your code base, then produces a checklist of items to verify manually. It asks you to confirm the migration scope (entire working directory, a subdirectory, or a specific file list) before editing any files. The skill also detects Amazon Bedrock and Claude Platform on AWS clients and adjusts model ID formats and feature changes for those platforms.
+
+
+[Claude Fable 5](https://platform.claude.com/docs/en/models/fable-5/introducing-claude-fable-5-and-claude-mythos-5) is Anthropic's most capable widely released model, available on the Claude API, [Amazon Bedrock](https://platform.claude.com/docs/en/build-with-claude/claude-in-amazon-bedrock), [Claude Platform on AWS](https://platform.claude.com/docs/en/build-with-claude/claude-platform-on-aws), [Google Cloud](https://platform.claude.com/docs/en/build-with-claude/claude-on-vertex-ai), and [Microsoft Foundry](https://platform.claude.com/docs/en/build-with-claude/claude-in-microsoft-foundry). [Claude Mythos 5](https://anthropic.com/glasswing) shares the same capabilities and is offered only to approved customers in Project Glasswing.
+
+The baseline settings shared by `claude-fable-5` and `claude-mythos-5`:
+
+* **Thinking:** [Adaptive thinking](https://platform.claude.com/docs/en/build-with-claude/thinking) is always on. The model determines when and how much to think on each request, and no `thinking` configuration is required. Both `thinking: {type: "disabled"}` and manual extended thinking (`thinking: {type: "enabled", budget_tokens: N}`) return a 400 error.
+* **Prefill:** Prefilling the assistant message returns a 400 error. Use system prompt instructions instead.
+* **Context window and output:** A [1M token context window](https://platform.claude.com/docs/en/build-with-claude/context-windows) by default, and up to 128k output tokens per request.
+* **Pricing:** $10 USD per million input tokens and $50 USD per million output tokens. See [Claude pricing](https://platform.claude.com/docs/en/about-claude/pricing).
+* **Data retention:** Both models require 30-day data retention and are not available under zero data retention (ZDR) arrangements; both are designated Covered Models. On the Claude API, a request to Claude Fable 5 from an organization whose data retention configuration does not meet this requirement returns a 400 `invalid_request_error`. Organizations with a ZDR arrangement should contact their Anthropic account team to discuss data retention configuration. Alternatively, you can configure data retention per workspace. See [Model-specific data retention requirements](https://platform.claude.com/docs/en/manage-claude/api-and-data-retention#model-specific-data-retention-requirements) for per-platform details.
+
+Where the two models diverge:
+
+* **Availability:** Claude Fable 5 does not require access approval. Claude Mythos 5 is available only to approved customers in [Project Glasswing](https://anthropic.com/glasswing).
+* **Safety classifiers:** Claude Fable 5 runs safety classifiers that can decline requests with `stop_reason: "refusal"`. Claude Mythos 5 does not include these classifiers. See [Refusals and fallback](https://platform.claude.com/docs/en/build-with-claude/refusals-and-fallback).
+* **Priority Tier:** [Priority Tier](https://platform.claude.com/docs/en/api/service-tiers#supported-models) is supported on Claude Fable 5 but not on Claude Mythos 5.
+
+## Migrating to Claude Mythos 5 and Claude Fable 5 from Claude Mythos Preview
+
+[Claude Mythos 5](https://anthropic.com/glasswing) is the access-gated successor to [Claude Mythos Preview](https://anthropic.com/glasswing), the invitation-only research preview. [Claude Fable 5](https://platform.claude.com/docs/en/models/fable-5/introducing-claude-fable-5-and-claude-mythos-5) offers the same capabilities and does not require access approval. The changes in this section apply equally to both targets.
+
+Migration is mostly drop-in. Claude Mythos 5 and Claude Fable 5 use the same [Messages API](https://platform.claude.com/docs/en/build-with-claude/working-with-messages) and the same [tool use](https://platform.claude.com/docs/en/agents-and-tools/tool-use/overview) patterns as Claude Mythos Preview, and token counts are roughly unchanged because all three models use the same tokenizer. The key changes to check are the features that are no longer available (listed in the next section) and thinking output. If you migrate to Claude Fable 5, also plan for safety classifier refusals, which Claude Mythos Preview and Claude Mythos 5 do not have; see [Refusals and fallback](https://platform.claude.com/docs/en/build-with-claude/refusals-and-fallback).
+
+For the Claude Mythos Preview retirement timeline, see [Model deprecations](https://platform.claude.com/docs/en/about-claude/model-deprecations).
+
+### Update your model name
+
+```python
+model = "claude-mythos-preview" # Before
+model = "claude-mythos-5" # After
+
+# Or, for the model with the same capabilities and no access approval requirement:
+model = "claude-fable-5" # After
+```
+
+### Features not available on Claude Mythos 5 and Claude Fable 5
+
+1. **Extended thinking and thinking token budgets:** Manual extended thinking (`thinking: {type: "enabled", budget_tokens: N}`) is not supported on `claude-mythos-5` or `claude-fable-5` and returns a 400 error. [Adaptive thinking](https://platform.claude.com/docs/en/build-with-claude/thinking) is always on: the model determines when and how much to think on each request, and no `thinking` configuration is required. `thinking: {type: "disabled"}` returns an error. `budget_tokens` has no direct replacement: thinking is adaptive, and the [effort parameter](https://platform.claude.com/docs/en/build-with-claude/effort) is a separate output-level control, not a thinking budget.
+
+ Before (Claude Mythos Preview):
+
+
+ ```bash cURL
+ curl https://api.anthropic.com/v1/messages \
+ -H "x-api-key: $ANTHROPIC_API_KEY" \
+ -H "anthropic-version: 2023-06-01" \
+ -H "content-type: application/json" \
+ -d '{
+ "model": "claude-mythos-preview",
+ "max_tokens": 16000,
+ "thinking": {
+ "type": "enabled",
+ "budget_tokens": 10000
+ },
+ "messages": [
+ {
+ "role": "user",
+ "content": "..."
+ }
+ ]
+ }'
+ ```
+
+ ```bash CLI
+ ant messages create <<'YAML'
+ model: claude-mythos-preview
+ max_tokens: 16000
+ thinking:
+ type: enabled
+ budget_tokens: 10000
+ messages:
+ - role: user
+ content: "..."
+ YAML
+ ```
+
+ ```python Python
+ client.messages.create(
+ model="claude-mythos-preview",
+ max_tokens=16000,
+ thinking={"type": "enabled", "budget_tokens": 10000},
+ messages=[{"role": "user", "content": "..."}],
+ )
+ ```
+
+ ```typescript TypeScript
+ await client.messages.create({
+ model: "claude-mythos-preview",
+ max_tokens: 16000,
+ thinking: { type: "enabled", budget_tokens: 10000 },
+ messages: [{ role: "user", content: "..." }]
+ });
+ ```
+
+ ```csharp C#
+ using Anthropic;
+ using Anthropic.Models.Messages;
+
+ AnthropicClient client = new();
+
+ var parameters = new MessageCreateParams
+ {
+ Model = "claude-mythos-preview",
+ MaxTokens = 16000,
+ Thinking = new ThinkingConfigEnabled(budgetTokens: 10000),
+ Messages = [new() { Role = Role.User, Content = "..." }]
+ };
+
+ var response = await client.Messages.Create(parameters);
+ Console.WriteLine(response);
+ ```
+
+ ```go Go
+ client := anthropic.NewClient()
+
+ response, err := client.Messages.New(context.TODO(), anthropic.MessageNewParams{
+ Model: "claude-mythos-preview",
+ MaxTokens: 16000,
+ Thinking: anthropic.ThinkingConfigParamOfEnabled(10000),
+ Messages: []anthropic.MessageParam{
+ anthropic.NewUserMessage(anthropic.NewTextBlock("...")),
+ },
+ })
+ if err != nil {
+ log.Fatal(err)
+ }
+ fmt.Println(response)
+ ```
+
+ ```java Java
+ AnthropicClient client = AnthropicOkHttpClient.fromEnv();
+
+ MessageCreateParams params = MessageCreateParams.builder()
+ .model("claude-mythos-preview")
+ .maxTokens(16000L)
+ .enabledThinking(10000L)
+ .addUserMessage("...")
+ .build();
+
+ Message response = client.messages().create(params);
+ IO.println(response);
+ ```
+
+ ```php PHP
+ $client = new Client();
+
+ $message = $client->messages->create(
+ maxTokens: 16000,
+ messages: [['role' => 'user', 'content' => '...']],
+ model: 'claude-mythos-preview',
+ thinking: ['type' => 'enabled', 'budget_tokens' => 10000],
+ );
+ ```
+
+ ```ruby Ruby
+ client = Anthropic::Client.new
+
+ message = client.messages.create(
+ model: "claude-mythos-preview",
+ max_tokens: 16000,
+ thinking: {
+ type: "enabled",
+ budget_tokens: 10000
+ },
+ messages: [
+ { role: "user", content: "..." }
+ ]
+ )
+ ```
+
+
+ After (Claude Mythos 5):
+
+
+ ```bash cURL
+ curl https://api.anthropic.com/v1/messages \
+ -H "x-api-key: $ANTHROPIC_API_KEY" \
+ -H "anthropic-version: 2023-06-01" \
+ -H "content-type: application/json" \
+ -d '{
+ "model": "claude-mythos-5",
+ "max_tokens": 16000,
+ "messages": [
+ {
+ "role": "user",
+ "content": "..."
+ }
+ ]
+ }'
+ ```
+
+ ```bash CLI
+ ant messages create <<'YAML'
+ model: claude-mythos-5
+ max_tokens: 16000
+ messages:
+ - role: user
+ content: "..."
+ YAML
+ ```
+
+ ```python Python
+ client.messages.create(
+ model="claude-mythos-5",
+ max_tokens=16000,
+ messages=[{"role": "user", "content": "..."}],
+ )
+ ```
+
+ ```typescript TypeScript
+ await client.messages.create({
+ model: "claude-mythos-5",
+ max_tokens: 16000,
+ messages: [{ role: "user", content: "..." }]
+ });
+ ```
+
+ ```csharp C#
+ using Anthropic;
+ using Anthropic.Models.Messages;
+
+ AnthropicClient client = new();
+
+ var parameters = new MessageCreateParams
+ {
+ Model = "claude-mythos-5",
+ MaxTokens = 16000,
+ Messages = [new() { Role = Role.User, Content = "..." }]
+ };
+
+ var response = await client.Messages.Create(parameters);
+ Console.WriteLine(response);
+ ```
+
+ ```go Go
+ client := anthropic.NewClient()
+
+ response, err := client.Messages.New(context.TODO(), anthropic.MessageNewParams{
+ Model: "claude-mythos-5",
+ MaxTokens: 16000,
+ Messages: []anthropic.MessageParam{
+ anthropic.NewUserMessage(anthropic.NewTextBlock("...")),
+ },
+ })
+ if err != nil {
+ log.Fatal(err)
+ }
+ fmt.Println(response)
+ ```
+
+ ```java Java
+ AnthropicClient client = AnthropicOkHttpClient.fromEnv();
+
+ MessageCreateParams params = MessageCreateParams.builder()
+ .model("claude-mythos-5")
+ .maxTokens(16000L)
+ .addUserMessage("...")
+ .build();
+
+ Message response = client.messages().create(params);
+ IO.println(response);
+ ```
+
+ ```php PHP
+ $client = new Client();
+
+ $message = $client->messages->create(
+ maxTokens: 16000,
+ messages: [['role' => 'user', 'content' => '...']],
+ model: 'claude-mythos-5',
+ );
+ ```
+
+ ```ruby Ruby
+ client = Anthropic::Client.new
+
+ message = client.messages.create(
+ model: "claude-mythos-5",
+ max_tokens: 16000,
+ messages: [
+ { role: "user", content: "..." }
+ ]
+ )
+ ```
+
+
+ The change for Claude Fable 5 is identical, with `claude-fable-5` as the model name.
+
+2. **Assistant prefill:** Prefilling the assistant message is not supported on `claude-mythos-5` or `claude-fable-5` and returns a 400 error, the same as on Claude Mythos Preview. Use system prompt instructions instead.
+
+3. **Thinking output:** On `claude-mythos-5` and `claude-fable-5`, the raw chain of thought is never returned, but thinking blocks still carry readable summarized text when `thinking.display` is set to `summarized`. Pass thinking blocks back unchanged when continuing a conversation on the same model. See [Thinking output on Claude Fable 5 and Claude Mythos 5](https://platform.claude.com/docs/en/build-with-claude/thinking#thinking-output-on-claude-fable-5-and-claude-mythos-5).
+
+### Token counting and billing
+
+`claude-mythos-5` and `claude-fable-5` use the same tokenizer as `claude-mythos-preview` (the tokenizer introduced with Claude Opus 4.7). Token counts are roughly unchanged when migrating from `claude-mythos-preview`. Compared with models before Claude Opus 4.7, the same content can tokenize to roughly 30% more tokens, varying by content and workload shape.
+
+[`/v1/messages/count_tokens`](https://platform.claude.com/docs/en/build-with-claude/token-counting) returns roughly unchanged values for `claude-mythos-5` and `claude-fable-5` compared with `claude-mythos-preview`. Re-baseline cost and latency on your own workloads.
+
+### Migration checklist
+
+* Update the model name from `claude-mythos-preview` to `claude-mythos-5`, or to `claude-fable-5`, which offers the same capabilities and does not require access approval.
+* Remove manual extended thinking configuration (`thinking: {type: "enabled", budget_tokens: N}`). Adaptive thinking is always on, and no `thinking` field is required.
+* Remove any `thinking: {type: "disabled"}` configuration. Disabling thinking returns an error on `claude-mythos-5` and `claude-fable-5`.
+* Remove `budget_tokens`. It has no direct replacement: thinking is adaptive, and the `effort` parameter is a separate output-level control, not a thinking budget.
+* Verify any code that parses the `thinking` field treats it as display text only and passes thinking blocks back unchanged when continuing on the same model. `thinking.display` defaults to `"omitted"` on `claude-mythos-5` and `claude-fable-5`, the same as on Claude Mythos Preview; set `display: "summarized"` to receive readable summaries. See [Thinking output on Claude Fable 5 and Claude Mythos 5](https://platform.claude.com/docs/en/build-with-claude/thinking#thinking-output-on-claude-fable-5-and-claude-mythos-5).
+* If you replay conversation history on another model, strip `thinking` and `redacted_thinking` blocks from prior assistant turns first. Thinking blocks from `claude-mythos-5` and `claude-fable-5` are tied to the model that produced them, and models other than Claude Fable 5 and Claude Mythos 5 silently ignore them. Stripping keeps cross-model requests minimal and uniform.
+* If you migrate to Claude Fable 5, handle `stop_reason: "refusal"` and read the `stop_details.category` field. Claude Fable 5 runs safety classifiers that Claude Mythos Preview and Claude Mythos 5 do not have. See [Refusals and fallback](https://platform.claude.com/docs/en/build-with-claude/refusals-and-fallback).
+* Re-baseline token counts and costs on your own workloads. Token counts are roughly unchanged when migrating from `claude-mythos-preview`.
+
+## Migrating to Claude Mythos 5 and Claude Fable 5 from Claude Opus 5
+
+Claude Fable 5 and Claude Mythos 5 use the same [Messages API](https://platform.claude.com/docs/en/build-with-claude/working-with-messages) and the same [tool use](https://platform.claude.com/docs/en/agents-and-tools/tool-use/overview) patterns as Claude Opus 5, with the same [1M token context window](https://platform.claude.com/docs/en/build-with-claude/context-windows) by default and the same [128k max output tokens](https://platform.claude.com/docs/en/models/overview). The prefill and sampling-parameter restrictions, and the thinking display behavior, carry over from Claude Opus 5 unchanged. The changes to check are always-on thinking, pricing, Priority Tier, and data retention.
+
+### Update your model name
+
+```python
+model = "claude-opus-5" # Before
+model = "claude-fable-5" # After
+
+# Or, for the Project Glasswing model with the same capabilities:
+model = "claude-mythos-5" # After
+```
+
+### What changed
+
+1. **Thinking can no longer be disabled:** On Claude Opus 5, thinking is on by default and can be turned off with `thinking: {type: "disabled"}` at an [effort](https://platform.claude.com/docs/en/build-with-claude/effort) level of `high` or below. On `claude-fable-5` and `claude-mythos-5`, [adaptive thinking](https://platform.claude.com/docs/en/build-with-claude/thinking) is always on, and `thinking: {type: "disabled"}` returns a 400 error at any effort level. Remove the `thinking: {type: "disabled"}` configuration and use lower effort levels to control token spend instead.
+
+2. **Pricing:** Claude Fable 5 and Claude Mythos 5 are priced at $10 USD per million input tokens and $50 USD per million output tokens, compared with $5 USD and $25 USD for Claude Opus 5. See [Claude pricing](https://platform.claude.com/docs/en/about-claude/pricing).
+
+3. **Priority Tier:** [Priority Tier](https://platform.claude.com/docs/en/api/service-tiers#supported-models) is not supported on Claude Opus 5, so no existing traffic is affected. If your organization has a Priority Tier commitment, Claude Fable 5 supports it; Claude Mythos 5 does not.
+
+4. **Data retention:** Claude Fable 5 and Claude Mythos 5 require 30-day data retention and are not available under zero data retention (ZDR) arrangements; both are designated Covered Models. See [Model-specific data retention requirements](https://platform.claude.com/docs/en/manage-claude/api-and-data-retention#model-specific-data-retention-requirements).
+
+### Migration checklist
+
+* Update the model name from `claude-opus-5` to `claude-fable-5` (or `claude-mythos-5`).
+* Remove any `thinking: {type: "disabled"}` configuration; it returns a 400 error on `claude-fable-5` and `claude-mythos-5`. Use lower [effort](https://platform.claude.com/docs/en/build-with-claude/effort) levels to control token spend instead, and revisit `max_tokens` for workloads that ran with thinking disabled on Claude Opus 5.
+* If your organization has a zero data retention (ZDR) arrangement, confirm eligibility before migrating. See [Model-specific data retention requirements](https://platform.claude.com/docs/en/manage-claude/api-and-data-retention#model-specific-data-retention-requirements).
+* Re-baseline cost on your own workloads. Token counts are roughly unchanged; per-token pricing differs.
+
+## Migrating to Claude Mythos 5 and Claude Fable 5 from Claude Opus 4.8
+
+
+ If your code is on Claude Opus 4.7 or earlier, first apply the relevant [Migrating to Claude Opus 5](https://platform.claude.com/docs/en/models/opus-5/migration-guide) from-section for the API-level changes from your current model, then the remaining delta in this section.
+
+
+Migration is mostly drop-in. Claude Fable 5 and Claude Mythos 5 use the same [Messages API](https://platform.claude.com/docs/en/build-with-claude/working-with-messages) and the same [tool use](https://platform.claude.com/docs/en/agents-and-tools/tool-use/overview) patterns as Claude Opus 4.8, with the same [1M token context window](https://platform.claude.com/docs/en/build-with-claude/context-windows) by default and the same [128k max output tokens](https://platform.claude.com/docs/en/models/overview). Token counts are roughly unchanged because the models use the same tokenizer. The key changes to check are always-on [adaptive thinking](https://platform.claude.com/docs/en/build-with-claude/thinking), thinking output, safety classifier refusals (Claude Fable 5 only), and pricing.
+
+### Update your model name
+
+```python
+model = "claude-opus-4-8" # Before
+model = "claude-fable-5" # After
+
+# Or, for the Project Glasswing model with the same capabilities:
+model = "claude-mythos-5" # After
+```
+
+### What changed
+
+The items in this section describe the API and behavior differences worth checking after you swap the model ID. Except where noted, they apply equally to `claude-fable-5` and `claude-mythos-5`.
+
+1. **Adaptive thinking is always on:** [Adaptive thinking](https://platform.claude.com/docs/en/build-with-claude/thinking) is the only thinking mode on `claude-fable-5` and `claude-mythos-5`. The model determines when and how much to think on each request, and no `thinking` configuration is required. `thinking: {type: "disabled"}` returns an error. Use the [effort parameter](https://platform.claude.com/docs/en/build-with-claude/effort) to control thinking depth.
+
+ The behavior change to check: on Claude Opus 4.8, requests without a `thinking` field run without thinking; on `claude-fable-5` and `claude-mythos-5`, those same requests run with adaptive thinking. `max_tokens` remains a hard limit on total output, thinking plus response text, so revisit it for workloads that ran without thinking on Claude Opus 4.8. See [Cost control](https://platform.claude.com/docs/en/build-with-claude/thinking-steering-and-cost#cost-control).
+
+ Before (Claude Opus 4.8):
+
+
+ ```bash cURL
+ curl https://api.anthropic.com/v1/messages \
+ -H "x-api-key: $ANTHROPIC_API_KEY" \
+ -H "anthropic-version: 2023-06-01" \
+ -H "content-type: application/json" \
+ -d '{
+ "model": "claude-opus-4-8",
+ "max_tokens": 16000,
+ "thinking": {
+ "type": "adaptive"
+ },
+ "output_config": {
+ "effort": "high"
+ },
+ "messages": [
+ {
+ "role": "user",
+ "content": "..."
+ }
+ ]
+ }'
+ ```
+
+ ```bash CLI
+ ant messages create <<'YAML'
+ model: claude-opus-4-8
+ max_tokens: 16000
+ thinking:
+ type: adaptive
+ output_config:
+ effort: high
+ messages:
+ - role: user
+ content: "..."
+ YAML
+ ```
+
+ ```python Python
+ client.messages.create(
+ model="claude-opus-4-8",
+ max_tokens=16000,
+ thinking={"type": "adaptive"},
+ output_config={"effort": "high"},
+ messages=[{"role": "user", "content": "..."}],
+ )
+ ```
+
+ ```typescript TypeScript
+ await client.messages.create({
+ model: "claude-opus-4-8",
+ max_tokens: 16000,
+ thinking: { type: "adaptive" },
+ output_config: { effort: "high" },
+ messages: [{ role: "user", content: "..." }]
+ });
+ ```
+
+ ```csharp C#
+ using Anthropic;
+ using Anthropic.Models.Messages;
+
+ AnthropicClient client = new();
+
+ var parameters = new MessageCreateParams
+ {
+ Model = "claude-opus-4-8",
+ MaxTokens = 16000,
+ Thinking = new ThinkingConfigAdaptive(),
+ OutputConfig = new OutputConfig { Effort = Effort.High },
+ Messages = [new() { Role = Role.User, Content = "..." }]
+ };
+
+ var response = await client.Messages.Create(parameters);
+ Console.WriteLine(response);
+ ```
+
+ ```go Go
+ client := anthropic.NewClient()
+
+ response, err := client.Messages.New(context.TODO(), anthropic.MessageNewParams{
+ Model: "claude-opus-4-8",
+ MaxTokens: 16000,
+ Thinking: anthropic.ThinkingConfigParamUnion{
+ OfAdaptive: &anthropic.ThinkingConfigAdaptiveParam{},
+ },
+ OutputConfig: anthropic.OutputConfigParam{
+ Effort: anthropic.OutputConfigEffortHigh,
+ },
+ Messages: []anthropic.MessageParam{
+ anthropic.NewUserMessage(anthropic.NewTextBlock("...")),
+ },
+ })
+ if err != nil {
+ log.Fatal(err)
+ }
+ fmt.Println(response)
+ ```
+
+ ```java Java
+ AnthropicClient client = AnthropicOkHttpClient.fromEnv();
+
+ MessageCreateParams params = MessageCreateParams.builder()
+ .model("claude-opus-4-8")
+ .maxTokens(16000L)
+ .thinking(ThinkingConfigAdaptive.builder().build())
+ .outputConfig(OutputConfig.builder()
+ .effort(OutputConfig.Effort.HIGH)
+ .build())
+ .addUserMessage("...")
+ .build();
+
+ Message response = client.messages().create(params);
+ IO.println(response);
+ ```
+
+ ```php PHP
+ $client = new Client();
+
+ $message = $client->messages->create(
+ maxTokens: 16000,
+ messages: [['role' => 'user', 'content' => '...']],
+ model: 'claude-opus-4-8',
+ thinking: ['type' => 'adaptive'],
+ outputConfig: ['effort' => 'high'],
+ );
+ ```
+
+ ```ruby Ruby
+ client = Anthropic::Client.new
+
+ message = client.messages.create(
+ model: "claude-opus-4-8",
+ max_tokens: 16000,
+ thinking: {
+ type: "adaptive"
+ },
+ output_config: {
+ effort: "high"
+ },
+ messages: [
+ { role: "user", content: "..." }
+ ]
+ )
+ ```
+
+
+ After (Claude Fable 5):
+
+
+ ```bash cURL
+ curl https://api.anthropic.com/v1/messages \
+ -H "x-api-key: $ANTHROPIC_API_KEY" \
+ -H "anthropic-version: 2023-06-01" \
+ -H "content-type: application/json" \
+ -d '{
+ "model": "claude-fable-5",
+ "max_tokens": 16000,
+ "output_config": {
+ "effort": "high"
+ },
+ "messages": [
+ {
+ "role": "user",
+ "content": "..."
+ }
+ ]
+ }'
+ ```
+
+ ```bash CLI
+ ant messages create <<'YAML'
+ model: claude-fable-5
+ max_tokens: 16000
+ output_config:
+ effort: high
+ messages:
+ - role: user
+ content: "..."
+ YAML
+ ```
+
+ ```python Python
+ client.messages.create(
+ model="claude-fable-5",
+ max_tokens=16000,
+ output_config={"effort": "high"},
+ messages=[{"role": "user", "content": "..."}],
+ )
+ ```
+
+ ```typescript TypeScript
+ await client.messages.create({
+ model: "claude-fable-5",
+ max_tokens: 16000,
+ output_config: { effort: "high" },
+ messages: [{ role: "user", content: "..." }]
+ });
+ ```
+
+ ```csharp C#
+ using Anthropic;
+ using Anthropic.Models.Messages;
+
+ AnthropicClient client = new();
+
+ var parameters = new MessageCreateParams
+ {
+ Model = "claude-fable-5",
+ MaxTokens = 16000,
+ OutputConfig = new OutputConfig { Effort = Effort.High },
+ Messages = [new() { Role = Role.User, Content = "..." }]
+ };
+
+ var response = await client.Messages.Create(parameters);
+ Console.WriteLine(response);
+ ```
+
+ ```go Go
+ client := anthropic.NewClient()
+
+ response, err := client.Messages.New(context.TODO(), anthropic.MessageNewParams{
+ Model: "claude-fable-5",
+ MaxTokens: 16000,
+ OutputConfig: anthropic.OutputConfigParam{
+ Effort: anthropic.OutputConfigEffortHigh,
+ },
+ Messages: []anthropic.MessageParam{
+ anthropic.NewUserMessage(anthropic.NewTextBlock("...")),
+ },
+ })
+ if err != nil {
+ log.Fatal(err)
+ }
+ fmt.Println(response)
+ ```
+
+ ```java Java
+ AnthropicClient client = AnthropicOkHttpClient.fromEnv();
+
+ MessageCreateParams params = MessageCreateParams.builder()
+ .model("claude-fable-5")
+ .maxTokens(16000L)
+ .outputConfig(OutputConfig.builder()
+ .effort(OutputConfig.Effort.HIGH)
+ .build())
+ .addUserMessage("...")
+ .build();
+
+ Message response = client.messages().create(params);
+ IO.println(response);
+ ```
+
+ ```php PHP
+ $client = new Client();
+
+ $message = $client->messages->create(
+ maxTokens: 16000,
+ messages: [['role' => 'user', 'content' => '...']],
+ model: 'claude-fable-5',
+ outputConfig: ['effort' => 'high'],
+ );
+ ```
+
+ ```ruby Ruby
+ client = Anthropic::Client.new
+
+ message = client.messages.create(
+ model: "claude-fable-5",
+ max_tokens: 16000,
+ output_config: {
+ effort: "high"
+ },
+ messages: [
+ { role: "user", content: "..." }
+ ]
+ )
+ ```
+
+
+ The change for Claude Mythos 5 is identical, with `claude-mythos-5` as the model name.
+
+2. **Extended thinking and thinking budgets (unchanged):** Manual extended thinking (`thinking: {type: "enabled", budget_tokens: N}`) is not supported on `claude-fable-5` or `claude-mythos-5` and returns a 400 error, the same as on Claude Opus 4.8. `budget_tokens` has no direct replacement: thinking is adaptive, and the [effort parameter](https://platform.claude.com/docs/en/build-with-claude/effort) is a separate output-level control, not a thinking budget.
+
+3. **Assistant prefill (unchanged):** Prefilling the assistant message is not supported on `claude-fable-5` or `claude-mythos-5` and returns a 400 error, the same as on Claude Opus 4.8. Use system prompt instructions instead.
+
+4. **Thinking output:** On `claude-fable-5` and `claude-mythos-5`, the raw chain of thought is never returned, but thinking blocks still carry readable summarized text when `thinking.display` is set to `summarized`. Pass thinking blocks back unchanged when continuing a conversation on the same model. See [Thinking output on Claude Fable 5 and Claude Mythos 5](https://platform.claude.com/docs/en/build-with-claude/thinking#thinking-output-on-claude-fable-5-and-claude-mythos-5).
+
+5. **Safety classifiers and the `refusal` stop reason (Claude Fable 5 only):** `claude-fable-5` runs safety classifiers on requests and during response generation. Claude Mythos 5 does not include these classifiers. When a classifier declines a request, the Messages API returns `stop_reason: "refusal"` as a successful HTTP 200 response, not an error. The `stop_details.category` field reports which classifier fired, with categories such as `"cyber"`, `"bio"`, and `"reasoning_extraction"`, or `null` when the refusal maps to no named category. See the [refusal category table](https://platform.claude.com/docs/en/build-with-claude/refusals-and-fallback#refusal-response) for the full set.
+
+ You are not billed for the input tokens of a request refused before any output is generated. When a classifier fires mid-stream, the input and already-streamed output are billed; discard the partial output.
+
+ To re-run refused requests on another model automatically, pass the opt-in `fallbacks` parameter, which is in beta on the Claude API. The parameter is not available on the Message Batches API or on Amazon Bedrock, Google Cloud, and Microsoft Foundry; on those three platforms, run the retry client-side or use the SDK refusal-fallback middleware. See [Refusals and fallback](https://platform.claude.com/docs/en/build-with-claude/refusals-and-fallback).
+
+6. **Start at `high` effort:** The [effort parameter](https://platform.claude.com/docs/en/build-with-claude/effort) default remains `high`. On Claude Opus 4.8, the recommendation for coding and high-autonomy work is to set `xhigh` explicitly. On `claude-fable-5` and `claude-mythos-5`, use `high` as the default for most tasks and reserve `xhigh` for the most capability-sensitive workloads. Lower effort settings still perform well and often exceed `xhigh` performance on prior models. Reduce effort if a task completes but takes longer than necessary. See [Prompting Claude Fable 5](https://platform.claude.com/docs/en/build-with-claude/prompt-engineering/prompting-claude-fable-5#consider-all-effort-levels).
+
+7. **Lower prompt caching minimum:** The minimum cacheable prompt length on `claude-fable-5` and `claude-mythos-5` is 512 tokens, lower than the 1,024 tokens on Claude Opus 4.8. Prompts that were too short to cache on Claude Opus 4.8 can now create cache entries, with no code changes required. See [Prompt caching](https://platform.claude.com/docs/en/build-with-claude/prompt-caching#cache-limitations) for per-model minimums.
+
+### Migration checklist
+
+* If your organization has a zero data retention (ZDR) arrangement, confirm eligibility before migrating. `claude-fable-5` and `claude-mythos-5` require 30-day data retention; on the Claude API, requests to `claude-fable-5` that do not meet this requirement return a 400 `invalid_request_error`. Claude Opus 4.8 remains available under ZDR. See [Model-specific data retention requirements](https://platform.claude.com/docs/en/manage-claude/api-and-data-retention#model-specific-data-retention-requirements).
+* Update the model name from `claude-opus-4-8` to `claude-fable-5` (or `claude-mythos-5`).
+* Remove any `thinking: {type: "disabled"}` configuration. Disabling thinking returns an error on `claude-fable-5` and `claude-mythos-5`, and requests without a `thinking` field run with adaptive thinking.
+* If you removed manual extended thinking and assistant prefills during earlier migrations, no action is needed: both remain unsupported on `claude-fable-5` and `claude-mythos-5`.
+* Verify any code that parses the `thinking` field treats it as display text only and passes thinking blocks back unchanged when continuing on the same model. `thinking.display` defaults to `"omitted"` on `claude-fable-5` and `claude-mythos-5`, the same as on Claude Opus 4.8; set `display: "summarized"` to receive readable summaries. See [Thinking output on Claude Fable 5 and Claude Mythos 5](https://platform.claude.com/docs/en/build-with-claude/thinking#thinking-output-on-claude-fable-5-and-claude-mythos-5).
+* If you replay conversation history on another model, strip `thinking` and `redacted_thinking` blocks from prior assistant turns first. Thinking blocks from `claude-fable-5` and `claude-mythos-5` are tied to the model that produced them, and models other than Claude Fable 5 and Claude Mythos 5 silently ignore them. Stripping keeps cross-model requests minimal and uniform. The exception is redeeming a [fallback credit](https://platform.claude.com/docs/en/build-with-claude/fallback-credit), which requires the request body echoed under that feature's exact rules.
+* If you migrate to Claude Fable 5, handle `stop_reason: "refusal"` and read the `stop_details.category` field. To re-run refused requests on another model automatically, consider the opt-in `fallbacks` parameter (beta). See [Refusals and fallback](https://platform.claude.com/docs/en/build-with-claude/refusals-and-fallback).
+* Re-evaluate your `effort` setting. Start at `high` for most tasks, including workloads that ran at `xhigh` on Claude Opus 4.8.
+* Re-baseline cost and latency on your own workloads. Token counts are roughly unchanged when migrating from `claude-opus-4-8`; per-token pricing differs.
diff --git a/content/en/models/fable-5/overview.md b/content/en/models/fable-5/overview.md
index befe49c5f..cdb8ad2d5 100644
--- a/content/en/models/fable-5/overview.md
+++ b/content/en/models/fable-5/overview.md
@@ -12,7 +12,7 @@ Model ID: `claude-fable-5`
Context window: 1M tokens · Max output: 128K tokens · Input pricing: $10 / MTok · Output pricing: $50 / MTok
-[Announcement](https://www.anthropic.com/news/claude-fable-5-mythos-5) · [What’s new](https://platform.claude.com/docs/en/models/fable-5/introducing-claude-fable-5-and-claude-mythos-5) · [Migration guide](https://platform.claude.com/docs/en/about-claude/models/migration-guide#migrating-to-claude-mythos-5-and-claude-fable-5)
+[Announcement](https://www.anthropic.com/news/claude-fable-5-mythos-5) · [What’s new](https://platform.claude.com/docs/en/models/fable-5/introducing-claude-fable-5-and-claude-mythos-5) · [Migration guide](https://platform.claude.com/docs/en/models/fable-5/migration-guide)
## Overview
diff --git a/content/en/models/haiku-4-5/migration-guide.md b/content/en/models/haiku-4-5/migration-guide.md
new file mode 100644
index 000000000..ee4e9567e
--- /dev/null
+++ b/content/en/models/haiku-4-5/migration-guide.md
@@ -0,0 +1,91 @@
+---
+title: Migrating to Claude Haiku 4.5
+url: https://platform.claude.com/docs/en/models/haiku-4-5/migration-guide
+description: "Migrate to Claude Haiku 4.5 from earlier Haiku models: model IDs, breaking changes, and a migration checklist."
+---
+
+
+ This guide covers migrating [Messages API](https://platform.claude.com/docs/en/build-with-claude/working-with-messages) code. If you use [Claude Managed Agents](https://platform.claude.com/docs/en/managed-agents/overview), no changes beyond updating the model name are required.
+
+
+
+ **Automate your migration with the Claude API skill.** In Claude Code, run `/claude-api migrate` to invoke the bundled [Claude API skill](https://platform.claude.com/docs/en/agents-and-tools/agent-skills/claude-api-skill#migrating-to-a-newer-claude-model). It works for any current Claude model as the target:
+
+ ```text wrap
+ /claude-api migrate this project to claude-opus-5
+ ```
+
+ The skill applies the model ID swap and, as needed, breaking parameter changes, prefill replacement, and effort calibration for your target model across your code base, then produces a checklist of items to verify manually. It asks you to confirm the migration scope (entire working directory, a subdirectory, or a specific file list) before editing any files. The skill also detects Amazon Bedrock and Claude Platform on AWS clients and adjusts model ID formats and feature changes for those platforms.
+
+
+Claude Haiku 4.5 is the fastest and most intelligent Haiku model with near-frontier performance, delivering premium model quality for interactive applications and high-volume processing.
+
+For a complete overview of capabilities, see the [models overview](https://platform.claude.com/docs/en/models/overview).
+
+
+ For Claude Haiku 4.5 pricing, see [Claude pricing](https://platform.claude.com/docs/en/about-claude/pricing).
+
+
+
+ For significant performance improvements on coding and reasoning tasks, consider enabling extended thinking with `thinking: {type: "enabled", budget_tokens: N}`.
+
+
+
+ Extended thinking impacts [prompt caching](https://platform.claude.com/docs/en/build-with-claude/prompt-caching#caching-with-thinking-blocks) efficiency.
+
+ Extended thinking is deprecated in Claude 4.6 models and removed in Claude Opus 4.7. If using newer models, use [adaptive thinking](https://platform.claude.com/docs/en/build-with-claude/thinking) instead.
+
+
+## Migrating to Claude Haiku 4.5 from Claude Haiku 3.5 and earlier Haiku models
+
+**Update your model name:**
+
+```python
+# From Haiku 3.5
+model = "claude-3-5-haiku-20241022" # Before
+model = "claude-haiku-4-5-20251001" # After
+```
+
+**Review new rate limits:** Haiku 4.5 has separate rate limits from Haiku 3.5. See [Rate limits](https://platform.claude.com/docs/en/api/rate-limits) documentation for details.
+
+**Explore new capabilities:** See the [models overview](https://platform.claude.com/docs/en/models/overview) for details on context awareness, increased output capacity (64k tokens), higher intelligence, and improved speed.
+
+### Breaking changes
+
+These breaking changes apply when migrating from Claude 3.x Haiku models.
+
+1. **Update sampling parameters**
+
+
+ This is a breaking change when migrating from Claude 3.x models.
+
+
+ Use only `temperature` OR `top_p`, not both. Setting both returns a 400 error on Claude Haiku 4.5.
+
+2. **Update tool versions**
+
+
+ This is a breaking change when migrating from Claude 3.x models.
+
+
+ Update to the latest tool versions (`text_editor_20250728`, `code_execution_20250825`). Remove any code using the `undo_edit` command.
+
+3. **Handle the `refusal` stop reason**
+
+ Update your application to [handle `refusal` stop reasons](https://platform.claude.com/docs/en/test-and-evaluate/strengthen-guardrails/handle-streaming-refusals).
+
+4. **Update your prompts for behavioral changes**
+
+ Claude 4 models have a more concise, direct communication style. Review [prompting best practices](https://platform.claude.com/docs/en/build-with-claude/prompt-engineering/claude-prompting-best-practices) for optimization guidance.
+
+### Haiku 4.5 migration checklist
+
+* Update model ID to `claude-haiku-4-5-20251001`
+* **BREAKING:** Update tool versions to latest (`text_editor_20250728`, `code_execution_20250825`); legacy versions are not supported
+* **BREAKING:** Remove any code using the `undo_edit` command (if applicable)
+* **BREAKING:** Update sampling parameters to use only `temperature` OR `top_p`, not both (setting both returns a 400 error)
+* Handle new `refusal` stop reason in your application
+* Review and adjust for new rate limits (separate from Haiku 3.5)
+* Review and update prompts following [prompting best practices](https://platform.claude.com/docs/en/build-with-claude/prompt-engineering/claude-prompting-best-practices)
+* Consider enabling extended thinking for complex reasoning tasks
+* Test in development environment before production deployment
diff --git a/content/en/models/haiku-4-5/overview.md b/content/en/models/haiku-4-5/overview.md
index 863f20924..1367d2ed6 100644
--- a/content/en/models/haiku-4-5/overview.md
+++ b/content/en/models/haiku-4-5/overview.md
@@ -12,7 +12,7 @@ Model ID: `claude-haiku-4-5-20251001`
Context window: 200K tokens · Max output: 64K tokens · Input pricing: $1 / MTok · Output pricing: $5 / MTok
-[Announcement](https://www.anthropic.com/news/claude-haiku-4-5) · [Migration guide](https://platform.claude.com/docs/en/about-claude/models/migration-guide#migrating-to-claude-haiku-4-5)
+[Announcement](https://www.anthropic.com/news/claude-haiku-4-5) · [Migration guide](https://platform.claude.com/docs/en/models/haiku-4-5/migration-guide)
## How it compares
diff --git a/content/en/models/mythos-5/overview.md b/content/en/models/mythos-5/overview.md
index cc015c1ca..9cf2fb616 100644
--- a/content/en/models/mythos-5/overview.md
+++ b/content/en/models/mythos-5/overview.md
@@ -12,7 +12,7 @@ Model ID: `claude-mythos-5`
Context window: 1M tokens · Max output: 128K tokens · Input pricing: $10 / MTok · Output pricing: $50 / MTok
-[Announcement](https://www.anthropic.com/news/claude-fable-5-mythos-5) · [What’s new](https://platform.claude.com/docs/en/models/fable-5/introducing-claude-fable-5-and-claude-mythos-5) · [Migration guide](https://platform.claude.com/docs/en/about-claude/models/migration-guide#migrating-to-claude-mythos-5-and-claude-fable-5)
+[Announcement](https://www.anthropic.com/news/claude-fable-5-mythos-5) · [What’s new](https://platform.claude.com/docs/en/models/fable-5/introducing-claude-fable-5-and-claude-mythos-5) · [Migration guide](https://platform.claude.com/docs/en/models/fable-5/migration-guide)
Claude Mythos 5 is offered separately, by invitation only, for defensive cybersecurity workflows as part of Project Glasswing. It shares Claude Fable 5’s specifications and pricing. Claude Fable 5 includes safety classifiers that can decline requests; Claude Mythos 5 does not include these classifiers. For access, contact your Anthropic, AWS, or Google Cloud account team. [See Claude Fable 5](https://platform.claude.com/docs/en/models/fable-5/overview) · [Project Glasswing](https://anthropic.com/glasswing)
diff --git a/content/en/models/opus-4-5/overview.md b/content/en/models/opus-4-5/overview.md
index 30a7fef99..d075307eb 100644
--- a/content/en/models/opus-4-5/overview.md
+++ b/content/en/models/opus-4-5/overview.md
@@ -6,7 +6,7 @@ description: "Claude Opus 4.5 reference: lifecycle status, model IDs on every pl
**Legacy.** Released November 24, 2025.
-Although Claude Opus 4.5 is still available, you should consider migrating to Claude Opus 5 for improved performance. [See Claude Opus 5](https://platform.claude.com/docs/en/models/opus-5/overview) · [Migrate to Claude Opus 5](https://platform.claude.com/docs/en/about-claude/models/migration-guide#migrating-from-claude-opus-45)
+Although Claude Opus 4.5 is still available, you should consider migrating to Claude Opus 5 for improved performance. [See Claude Opus 5](https://platform.claude.com/docs/en/models/opus-5/overview) · [Migrate to Claude Opus 5](https://platform.claude.com/docs/en/models/opus-5/migration-guide#migrating-from-claude-opus-45)
Model ID: `claude-opus-4-5-20251101`
@@ -80,7 +80,7 @@ Context window: 200K tokens · Max output: 64K tokens · Input pricing: $5 / MTo
## Resources
-
+
What changes when moving from Claude Opus 4.6 and earlier Opus models to Claude Opus 5.
diff --git a/content/en/models/opus-4-6/overview.md b/content/en/models/opus-4-6/overview.md
index 16edf3f03..8e5a465ae 100644
--- a/content/en/models/opus-4-6/overview.md
+++ b/content/en/models/opus-4-6/overview.md
@@ -6,7 +6,7 @@ description: "Claude Opus 4.6 reference: lifecycle status, model IDs on every pl
**Legacy.** Released February 5, 2026.
-Although Claude Opus 4.6 is still available, you should consider migrating to Claude Opus 5 for improved performance. [See Claude Opus 5](https://platform.claude.com/docs/en/models/opus-5/overview) · [Migrate to Claude Opus 5](https://platform.claude.com/docs/en/about-claude/models/migration-guide#migrating-from-claude-opus-46)
+Although Claude Opus 4.6 is still available, you should consider migrating to Claude Opus 5 for improved performance. [See Claude Opus 5](https://platform.claude.com/docs/en/models/opus-5/overview) · [Migrate to Claude Opus 5](https://platform.claude.com/docs/en/models/opus-5/migration-guide#migrating-from-claude-opus-46)
Model ID: `claude-opus-4-6`
@@ -80,7 +80,7 @@ Context window: 1M tokens · Max output: 128K tokens · Input pricing: $5 / MTok
## Resources
-
+
What changes when moving from Claude Opus 4.6 and earlier Opus models to Claude Opus 5.
diff --git a/content/en/models/opus-4-7/overview.md b/content/en/models/opus-4-7/overview.md
index 0c8c904a0..c4d6d4a9f 100644
--- a/content/en/models/opus-4-7/overview.md
+++ b/content/en/models/opus-4-7/overview.md
@@ -6,7 +6,7 @@ description: "Claude Opus 4.7 reference: lifecycle status, model IDs on every pl
**Legacy.** Released April 16, 2026.
-Although Claude Opus 4.7 is still available, you should consider migrating to Claude Opus 5 for improved performance. [See Claude Opus 5](https://platform.claude.com/docs/en/models/opus-5/overview) · [Migrate to Claude Opus 5](https://platform.claude.com/docs/en/about-claude/models/migration-guide#migrating-from-claude-opus-47)
+Although Claude Opus 4.7 is still available, you should consider migrating to Claude Opus 5 for improved performance. [See Claude Opus 5](https://platform.claude.com/docs/en/models/opus-5/overview) · [Migrate to Claude Opus 5](https://platform.claude.com/docs/en/models/opus-5/migration-guide#migrating-from-claude-opus-47)
Model ID: `claude-opus-4-7`
@@ -80,7 +80,7 @@ Context window: 1M tokens · Max output: 128K tokens · Input pricing: $5 / MTok
## Resources
-
+
What changes when moving from Claude Opus 4.7 to Claude Opus 5.
diff --git a/content/en/models/opus-4-8/overview.md b/content/en/models/opus-4-8/overview.md
index 44bf6fb58..177bb70cb 100644
--- a/content/en/models/opus-4-8/overview.md
+++ b/content/en/models/opus-4-8/overview.md
@@ -6,7 +6,7 @@ description: "Claude Opus 4.8 reference: lifecycle status, model IDs on every pl
**Legacy.** Released May 28, 2026.
-Although Claude Opus 4.8 is still available, you should consider migrating to Claude Opus 5 for improved performance. [See Claude Opus 5](https://platform.claude.com/docs/en/models/opus-5/overview) · [Migrate to Claude Opus 5](https://platform.claude.com/docs/en/about-claude/models/migration-guide#migrating-from-claude-opus-4-8-to-claude-opus-5)
+Although Claude Opus 4.8 is still available, you should consider migrating to Claude Opus 5 for improved performance. [See Claude Opus 5](https://platform.claude.com/docs/en/models/opus-5/overview) · [Migrate to Claude Opus 5](https://platform.claude.com/docs/en/models/opus-5/migration-guide#migrating-from-claude-opus-4-8-to-claude-opus-5)
Model ID: `claude-opus-4-8`
@@ -78,7 +78,7 @@ Context window: 1M tokens · Max output: 128K tokens · Input pricing: $5 / MTok
## Resources
-
+
What changes when moving from Claude Opus 4.8 to Claude Opus 5.
diff --git a/content/en/models/opus-5/migration-guide.md b/content/en/models/opus-5/migration-guide.md
new file mode 100644
index 000000000..1c275691a
--- /dev/null
+++ b/content/en/models/opus-5/migration-guide.md
@@ -0,0 +1,1358 @@
+---
+title: Migrating to Claude Opus 5
+url: https://platform.claude.com/docs/en/models/opus-5/migration-guide
+description: "Migrate to Claude Opus 5 from earlier Claude models: model IDs, breaking changes, recommended changes, and migration checklists."
+---
+
+
+ This guide covers migrating [Messages API](https://platform.claude.com/docs/en/build-with-claude/working-with-messages) code. If you use [Claude Managed Agents](https://platform.claude.com/docs/en/managed-agents/overview), no changes beyond updating the model name are required.
+
+
+
+ **Automate your migration with the Claude API skill.** In Claude Code, run `/claude-api migrate` to invoke the bundled [Claude API skill](https://platform.claude.com/docs/en/agents-and-tools/agent-skills/claude-api-skill#migrating-to-a-newer-claude-model). It works for any current Claude model as the target:
+
+ ```text wrap
+ /claude-api migrate this project to claude-opus-5
+ ```
+
+ The skill applies the model ID swap and, as needed, breaking parameter changes, prefill replacement, and effort calibration for your target model across your code base, then produces a checklist of items to verify manually. It asks you to confirm the migration scope (entire working directory, a subdirectory, or a specific file list) before editing any files. The skill also detects Amazon Bedrock and Claude Platform on AWS clients and adjusts model ID formats and feature changes for those platforms.
+
+
+Claude Opus 5 is a step-change improvement over Claude Opus 4.8, strong on deep reasoning, agentic and long-horizon tasks, and test-time compute scaling. For behavioral differences and model-specific prompting patterns, see [Prompting Claude Opus 5](https://platform.claude.com/docs/en/build-with-claude/prompt-engineering/prompting-claude-opus-5).
+
+Claude Opus 5 is a drop-in upgrade for Claude Opus 4.8 at the same pricing of $5 per million input tokens and $25 per million output tokens; see [Claude pricing](https://platform.claude.com/docs/en/about-claude/pricing). There are two breaking changes for code already running on Claude Opus 4.8, covered under Breaking changes below. Claude Opus 5 supports the same set of features as Claude Opus 4.8, including the [1M token context window](https://platform.claude.com/docs/en/build-with-claude/context-windows) (the default, with no beta header), [128k max output tokens](https://platform.claude.com/docs/en/models/overview), [adaptive thinking](https://platform.claude.com/docs/en/build-with-claude/thinking), [prompt caching](https://platform.claude.com/docs/en/build-with-claude/prompt-caching), [batch processing](https://platform.claude.com/docs/en/build-with-claude/batch-processing), the [Files API](https://platform.claude.com/docs/en/build-with-claude/files), [PDF support](https://platform.claude.com/docs/en/build-with-claude/pdf-support), [vision](https://platform.claude.com/docs/en/build-with-claude/vision), and server-side and client-side [tools](https://platform.claude.com/docs/en/agents-and-tools/tool-use/overview), with two exceptions: [web fetch](https://platform.claude.com/docs/en/agents-and-tools/tool-use/web-fetch-tool) is not available on Claude Opus 5, and [Priority Tier](https://platform.claude.com/docs/en/api/service-tiers#supported-models) is not supported on Claude Opus 5. See each tool page for model availability.
+
+## Migrating to Claude Opus 5 from Claude Opus 4.8
+
+
+ This section covers the delta from Claude Opus 4.8 only. If your code is on Claude Opus 4.7 or earlier, use the sections below instead: [Migrating to Claude Opus 5 from Claude Opus 4.7](https://platform.claude.com/docs/en/models/opus-5/migration-guide#migrating-from-claude-opus-47) or [Migrating to Claude Opus 5 from Claude Opus 4.6 and earlier Opus models](https://platform.claude.com/docs/en/models/opus-5/migration-guide#migrating-from-claude-opus-46). They include this delta plus the breaking changes from earlier models (sampling parameters rejected, manual extended thinking rejected, prefill removed, new tokenizer).
+
+
+### Update your model name
+
+```python
+# Opus migration
+model = "claude-opus-4-8" # Before
+model = "claude-opus-5" # After
+```
+
+`claude-opus-5` is a fixed model ID with no date suffix, the same scheme as `claude-opus-4-8` and `claude-sonnet-5`.
+
+### Breaking changes
+
+1. **Thinking on by default:** On Claude Opus 4.8, requests without a `thinking` field run without thinking; on Claude Opus 5, the same requests run with [adaptive thinking](https://platform.claude.com/docs/en/build-with-claude/thinking). `max_tokens` remains a hard limit on total output, thinking plus response text, so revisit it for workloads that ran without thinking on Claude Opus 4.8. To preserve the old behavior, pass `thinking: {type: "disabled"}`, subject to the effort cap in the next item; note that with thinking disabled the model can occasionally emit tool calls as plain text or include internal XML tags in its visible output, so prefer lower effort levels with thinking enabled where you can, and see [Running with thinking disabled](https://platform.claude.com/docs/en/build-with-claude/prompt-engineering/prompting-claude-opus-5#running-with-thinking-disabled) for mitigations where you can't.
+
+2. **Disabling thinking is capped at `high` effort:** You can still turn thinking off with `thinking: {type: "disabled"}`, but only at an [effort](https://platform.claude.com/docs/en/build-with-claude/effort) level of `high` or below. A request that combines `thinking: {type: "disabled"}` with effort `xhigh` or `max` returns a 400 error. Claude Opus 4.8 accepts this combination, so audit requests that disable thinking before you migrate.
+
+ The check is enforced on each request: every request's effort and thinking configuration is validated independently, so a request that raises effort to `xhigh` or `max` while thinking is disabled is rejected even if earlier requests in the conversation were accepted.
+
+ Before (accepted on Claude Opus 4.8, rejected on Claude Opus 5):
+
+ ```python
+ client.messages.create(
+ model="claude-opus-4-8",
+ max_tokens=16000,
+ thinking={"type": "disabled"},
+ output_config={"effort": "xhigh"},
+ messages=[{"role": "user", "content": "..."}],
+ )
+ ```
+
+ After (Claude Opus 5), either remove the `thinking` field to re-enable thinking:
+
+ ```python
+ client.messages.create(
+ model="claude-opus-5",
+ max_tokens=16000,
+ output_config={"effort": "xhigh"}, # thinking is on by default
+ messages=[{"role": "user", "content": "..."}],
+ )
+ ```
+
+ or keep thinking disabled and lower the effort:
+
+ ```python
+ client.messages.create(
+ model="claude-opus-5",
+ max_tokens=16000,
+ thinking={"type": "disabled"},
+ output_config={"effort": "high"}, # or "medium", "low"
+ messages=[{"role": "user", "content": "..."}],
+ )
+ ```
+
+### Recommended changes
+
+These are not required but will improve your experience:
+
+1. **Test `max` effort for capability-critical work:** Claude Opus 5 supports the full set of [effort levels](https://platform.claude.com/docs/en/build-with-claude/effort) (`low`, `medium`, `high`, `xhigh`, `max`). Where maximum capability matters more than token spend, test `max` effort. It can deliver gains on the most demanding tasks but may show diminishing returns from increased token usage and can be prone to overthinking on simpler ones. If you run at `xhigh` or `max` effort, set a large `max_tokens` so the model has room to think and act; start at 64k tokens and tune from there.
+
+2. **Consider automatic fallbacks:** Claude Opus 5 ships with cybersecurity safety classifiers whose cyber-category refusals can fall back to Claude Opus 4.8. To re-run refused requests on another model automatically, consider the `fallbacks` parameter with the `"default"` mode (`fallbacks: "default"`), which selects a recommended fallback model based on the refusal category instead of a hand-maintained model list. Server-side fallback is in beta; the `"default"` mode requires the `server-side-fallback-2026-07-01` beta header. See [Refusals and fallback](https://platform.claude.com/docs/en/build-with-claude/refusals-and-fallback).
+
+3. **Cache shorter prompts:** The minimum cacheable prompt length on Claude Opus 5 is 512 tokens, down from 1,024 tokens on Claude Opus 4.8. Prompts that were too short to cache on Claude Opus 4.8 can now create cache entries, with no code changes required. See [Prompt caching](https://platform.claude.com/docs/en/build-with-claude/prompt-caching#cache-limitations) for per-model minimums.
+
+4. **Change tools mid-conversation (beta):** You can add or remove tools between turns of a conversation without invalidating [prompt cache](https://platform.claude.com/docs/en/build-with-claude/prompt-caching) hits on earlier turns. Send the beta header `mid-conversation-tool-changes-2026-07-01`. This is useful for agentic workloads that expose tools progressively or retire them as a task advances; without it, a changed tool list invalidates the cached prefix.
+
+5. **Re-tune length and verbosity prompts:** Default visible responses and written deliverables run longer on Claude Opus 5 than on Claude Opus 4.8, and lowering effort reduces thinking volume without reliably shortening the visible response. Prompt explicitly for conciseness or a target length instead. See [Response length and verbosity](https://platform.claude.com/docs/en/build-with-claude/prompt-engineering/prompting-claude-opus-5#response-length-and-verbosity) and [Written deliverable length](https://platform.claude.com/docs/en/build-with-claude/prompt-engineering/prompting-claude-opus-5#written-deliverable-length).
+
+6. **Remove carried-over verification instructions and constrain scope:** Claude Opus 5 verifies its own work without being told to, so remove explicit verification or self-check instructions carried over from prompts tuned for earlier models; leaving them in causes over-verification. For narrow tasks, constrain the task scope explicitly. In multi-agent frameworks, give explicit guidance on which scenarios warrant delegation or cap the number of subagents, because Claude Opus 5 delegates more readily than earlier models. See [Task scope and over-verification](https://platform.claude.com/docs/en/build-with-claude/prompt-engineering/prompting-claude-opus-5#task-scope-and-over-verification) and [Controlling subagent spawning](https://platform.claude.com/docs/en/build-with-claude/prompt-engineering/prompting-claude-opus-5#controlling-subagent-spawning).
+
+### Migration checklist
+
+* Update the model name from `claude-opus-4-8` to `claude-opus-5`.
+* Review workloads that ran without a `thinking` field: they run with thinking on Claude Opus 5. Revisit `max_tokens`, which remains a hard limit on total output (thinking plus response text), or pass `thinking: {type: "disabled"}` at effort `high` or below to preserve the old behavior. If you disable thinking, review [Running with thinking disabled](https://platform.claude.com/docs/en/build-with-claude/prompt-engineering/prompting-claude-opus-5#running-with-thinking-disabled) for the output artifacts that can appear and their prompting mitigations.
+* Audit requests that disable thinking: `thinking: {type: "disabled"}` with effort `xhigh` or `max` returns a 400 error, enforced on each request. Re-enable thinking or lower the effort to `high` or below.
+* Re-evaluate your `effort` setting: run a fresh [effort](https://platform.claude.com/docs/en/build-with-claude/effort) sweep on your own evals rather than carrying over a setting tuned for an earlier model. `low` and `medium` effort are worth testing as cost and latency controls, and test `max` effort where maximum capability matters more than token spend. If you run at `xhigh` or `max` effort, raise `max_tokens` to at least 64k as a starting point.
+* Review prompts near the caching minimum: prompts of 512 tokens or more can now create cache entries, down from 1,024 tokens on Claude Opus 4.8.
+* Handle `stop_reason: "refusal"`, and consider `fallbacks: "default"` (beta) to re-run refused requests on a recommended fallback model automatically.
+* If your organization has a [Priority Tier](https://platform.claude.com/docs/en/api/service-tiers#supported-models) commitment, plan capacity separately: Priority Tier is not supported on Claude Opus 5, while Claude Opus 4.8 keeps it.
+* For agentic workloads, consider [task budgets](https://platform.claude.com/docs/en/build-with-claude/task-budgets) (beta) and mid-conversation tool changes (beta).
+* Re-tune length and verbosity prompts: default visible responses and written deliverables run longer on Claude Opus 5, and lowering effort reduces thinking volume without reliably shortening the visible response. Prompt explicitly for conciseness or a target length. See [Response length and verbosity](https://platform.claude.com/docs/en/build-with-claude/prompt-engineering/prompting-claude-opus-5#response-length-and-verbosity) and [Written deliverable length](https://platform.claude.com/docs/en/build-with-claude/prompt-engineering/prompting-claude-opus-5#written-deliverable-length).
+* Remove verification and self-check instructions carried over from prompts tuned for earlier models (they cause over-verification on Claude Opus 5), constrain task scope explicitly for narrow tasks, and in multi-agent frameworks steer or cap subagent delegation. See [Task scope and over-verification](https://platform.claude.com/docs/en/build-with-claude/prompt-engineering/prompting-claude-opus-5#task-scope-and-over-verification) and [Controlling subagent spawning](https://platform.claude.com/docs/en/build-with-claude/prompt-engineering/prompting-claude-opus-5#controlling-subagent-spawning).
+* Re-baseline cost and latency on your own workloads.
+
+## Migrating to Claude Opus 5 from Claude Opus 4.7
+
+Claude Opus 5 should have strong out-of-the-box performance on existing Claude Opus 4.7 prompts and evals, at the same pricing of $5 per million input tokens and $25 per million output tokens. It supports the same set of features as Claude Opus 4.7, including the [1M token context window](https://platform.claude.com/docs/en/build-with-claude/context-windows), [128k max output tokens](https://platform.claude.com/docs/en/models/overview), [adaptive thinking](https://platform.claude.com/docs/en/build-with-claude/thinking), [prompt caching](https://platform.claude.com/docs/en/build-with-claude/prompt-caching), [batch processing](https://platform.claude.com/docs/en/build-with-claude/batch-processing), the [Files API](https://platform.claude.com/docs/en/build-with-claude/files), [PDF support](https://platform.claude.com/docs/en/build-with-claude/pdf-support), [vision](https://platform.claude.com/docs/en/build-with-claude/vision), and server-side and client-side [tools](https://platform.claude.com/docs/en/agents-and-tools/tool-use/overview), with two exceptions: [web fetch](https://platform.claude.com/docs/en/agents-and-tools/tool-use/web-fetch-tool) is not available on Claude Opus 5, and [Priority Tier](https://platform.claude.com/docs/en/api/service-tiers#supported-models) is not supported on Claude Opus 5. It also adds [mid-conversation system messages](https://platform.claude.com/docs/en/build-with-claude/mid-conversation-system-messages) and publicly documents [refusal stop details](https://platform.claude.com/docs/en/build-with-claude/refusals-and-fallback#refusal-response). On the Claude API, Claude Opus 5 also supports [computer use](https://platform.claude.com/docs/en/agents-and-tools/tool-use/computer-use-tool) as the stable `computer_toolset_20260801` toolset and the [browser use tool](https://platform.claude.com/docs/en/agents-and-tools/tool-use/browser-use-tool) for tasks inside webpages, neither of which Claude Opus 4.7 supports; existing integrations on the earlier `computer_20251124` version continue to work unchanged on both models. To upgrade an existing integration, see [Migrate from `computer_20251124`](https://platform.claude.com/docs/en/agents-and-tools/tool-use/computer-use-tool#migrate-from-computer-20251124).
+
+
+ If your code is on Claude Opus 4.6 or earlier, use [Migrating to Claude Opus 5 from Claude Opus 4.6 and earlier Opus models](https://platform.claude.com/docs/en/models/opus-5/migration-guide#migrating-from-claude-opus-46) instead. That section includes breaking changes (sampling parameters rejected, manual extended thinking rejected, new tokenizer) that the upgrade from Claude Opus 4.7 alone does not cover.
+
+
+### Update your model name
+
+```python
+# Opus migration
+model = "claude-opus-4-7" # Before
+model = "claude-opus-5" # After
+```
+
+### Breaking changes
+
+1. **Thinking on by default:** On Claude Opus 4.7, requests without a `thinking` field run without thinking; on Claude Opus 5, the same requests run with [adaptive thinking](https://platform.claude.com/docs/en/build-with-claude/thinking). `max_tokens` remains a hard limit on total output, thinking plus response text, so revisit it for workloads that ran without thinking on Claude Opus 4.7. To preserve the old behavior, pass `thinking: {type: "disabled"}`, subject to the effort cap in the next item; note that with thinking disabled the model can occasionally emit tool calls as plain text or include internal XML tags in its visible output, so prefer lower effort levels with thinking enabled where you can, and see [Running with thinking disabled](https://platform.claude.com/docs/en/build-with-claude/prompt-engineering/prompting-claude-opus-5#running-with-thinking-disabled) for mitigations where you can't.
+
+2. **Disabling thinking is capped at `high` effort:** You can turn thinking off with `thinking: {type: "disabled"}`, but only at an [effort](https://platform.claude.com/docs/en/build-with-claude/effort) level of `high` or below. A request that combines `thinking: {type: "disabled"}` with effort `xhigh` or `max` returns a 400 error. Claude Opus 4.7 accepts this combination, so audit requests that disable thinking before you migrate.
+
+ The check is enforced on each request: every request's effort and thinking configuration is validated independently, so a request that raises effort to `xhigh` or `max` while thinking is disabled is rejected even if earlier requests in the conversation were accepted.
+
+ Before (accepted on Claude Opus 4.7, rejected on Claude Opus 5):
+
+ ```python
+ client.messages.create(
+ model="claude-opus-4-7",
+ max_tokens=16000,
+ thinking={"type": "disabled"},
+ output_config={"effort": "xhigh"},
+ messages=[{"role": "user", "content": "..."}],
+ )
+ ```
+
+ After (Claude Opus 5), either remove the `thinking` field to run with thinking:
+
+ ```python
+ client.messages.create(
+ model="claude-opus-5",
+ max_tokens=16000,
+ output_config={"effort": "xhigh"}, # thinking is on by default
+ messages=[{"role": "user", "content": "..."}],
+ )
+ ```
+
+ or keep thinking disabled and lower the effort:
+
+ ```python
+ client.messages.create(
+ model="claude-opus-5",
+ max_tokens=16000,
+ thinking={"type": "disabled"},
+ output_config={"effort": "high"}, # or "medium", "low"
+ messages=[{"role": "user", "content": "..."}],
+ )
+ ```
+
+### What changed
+
+The following items are not breaking changes; they describe behavior differences worth checking after you swap the model ID.
+
+1. **Sampling parameters (unchanged):** Setting `temperature`, `top_p`, or `top_k` to a non-default value returns a 400 error on Claude Opus 5, the same as on Claude Opus 4.7. Most SDKs still define these fields for compatibility with earlier models, so code that sets them type-checks even though the API rejects the request. The Python SDK (v1.0 and later) does not define them, and passing them raises a `TypeError`. If you removed these parameters when migrating to Opus 4.7, no further changes are needed.
+
+2. **Effort default is `high`:** The [effort parameter](https://platform.claude.com/docs/en/build-with-claude/effort) default on Claude Opus 5 is `high` on the Claude API and Claude Code. If you already set effort explicitly, your setting is unchanged.
+
+3. **Effort levels recalibrated:** The token allocation behind each effort level changes on Claude Opus 5 compared to Claude Opus 4.7, and Claude Opus 5 supports the full set of effort levels (`low`, `medium`, `high`, `xhigh`, `max`). Run a fresh effort sweep on your own evals rather than carrying over a setting tuned for Claude Opus 4.7. `low` and `medium` effort are worth testing as cost and latency controls, and test `max` effort where maximum capability matters more than token spend. If you run at `xhigh` or `max` effort, set a large `max_tokens` so the model has room to think and act; start at 64k tokens and tune from there. See [Effort](https://platform.claude.com/docs/en/build-with-claude/effort).
+
+4. **1M context window is the default:** Claude Opus 5 serves the full 1M token [context window](https://platform.claude.com/docs/en/build-with-claude/context-windows) by default with no beta header and no long-context premium. If your client passes a context-window beta header for compatibility with older models, you can remove it on Claude Opus 5.
+
+5. **Mid-conversation system messages:** Claude Opus 5 accepts `role: "system"` messages immediately after a user turn in the `messages` array (subject to [placement rules](https://platform.claude.com/docs/en/build-with-claude/mid-conversation-system-messages#limitations)). Use the top-level `system` field for instructions that apply from the start. Claude Opus 4.7 rejects `role: "system"` in `messages` with a 400 error. If you maintain code paths that rebuild the full message history to update instructions, you can simplify them and preserve [prompt cache](https://platform.claude.com/docs/en/build-with-claude/prompt-caching) hits on earlier turns.
+
+6. **Refusal stop details:** The `stop_details` object on refusal responses (available since Claude Opus 4.7) is now publicly documented. When the model declines a request, it identifies the category of refusal, in addition to the existing `refusal` stop reason. No beta header is required, and there is no opt-out. See [Handling stop reasons](https://platform.claude.com/docs/en/build-with-claude/handling-stop-reasons).
+
+7. **Lower prompt caching minimum:** The minimum cacheable prompt length on Claude Opus 5 is 512 tokens, lower than on Claude Opus 4.7. Prompts that were too short to cache on Claude Opus 4.7 can now create cache entries, with no code changes required. See [Prompt caching](https://platform.claude.com/docs/en/build-with-claude/prompt-caching#cache-limitations) for per-model minimums.
+
+8. **Fast mode:** Claude Opus 5 supports [fast mode](https://platform.claude.com/docs/en/build-with-claude/fast-mode) (research preview); fast mode is not available on Claude Opus 4.7, where requests with `speed: "fast"` return an error. The `speed: "fast"` parameter and `fast-mode-2026-02-01` beta header work unchanged on Claude Opus 5.
+
+### Recommended changes
+
+These are not required but will improve your experience:
+
+1. **Consider automatic fallbacks:** Claude Opus 5 ships with cybersecurity safety classifiers whose cyber-category refusals can fall back to Claude Opus 4.8. To re-run refused requests on another model automatically, consider the `fallbacks` parameter with the `"default"` mode (`fallbacks: "default"`), which selects a recommended fallback model based on the refusal category instead of a hand-maintained model list. Server-side fallback is in beta; the `"default"` mode requires the `server-side-fallback-2026-07-01` beta header. See [Refusals and fallback](https://platform.claude.com/docs/en/build-with-claude/refusals-and-fallback).
+
+2. **Change tools mid-conversation (beta):** You can add or remove tools between turns of a conversation without invalidating [prompt cache](https://platform.claude.com/docs/en/build-with-claude/prompt-caching) hits on earlier turns. Send the beta header `mid-conversation-tool-changes-2026-07-01`. This is useful for agentic workloads that expose tools progressively or retire them as a task advances; without it, a changed tool list invalidates the cached prefix.
+
+3. **Re-tune length and verbosity prompts:** Default visible responses and written deliverables run longer on Claude Opus 5 than on earlier Opus models, and lowering effort reduces thinking volume without reliably shortening the visible response. Prompt explicitly for conciseness or a target length instead. See [Response length and verbosity](https://platform.claude.com/docs/en/build-with-claude/prompt-engineering/prompting-claude-opus-5#response-length-and-verbosity) and [Written deliverable length](https://platform.claude.com/docs/en/build-with-claude/prompt-engineering/prompting-claude-opus-5#written-deliverable-length).
+
+4. **Remove carried-over verification instructions and constrain scope:** Claude Opus 5 verifies its own work without being told to, so remove explicit verification or self-check instructions carried over from prompts tuned for earlier models; leaving them in causes over-verification. For narrow tasks, constrain the task scope explicitly. In multi-agent frameworks, give explicit guidance on which scenarios warrant delegation or cap the number of subagents, because Claude Opus 5 delegates more readily than earlier models. See [Task scope and over-verification](https://platform.claude.com/docs/en/build-with-claude/prompt-engineering/prompting-claude-opus-5#task-scope-and-over-verification) and [Controlling subagent spawning](https://platform.claude.com/docs/en/build-with-claude/prompt-engineering/prompting-claude-opus-5#controlling-subagent-spawning).
+
+### Migration checklist
+
+* Update model name from `claude-opus-4-7` to `claude-opus-5` (or update aliases).
+* Review workloads that ran without a `thinking` field: they run with thinking on Claude Opus 5. Revisit `max_tokens`, which remains a hard limit on total output (thinking plus response text), or pass `thinking: {type: "disabled"}` at effort `high` or below to preserve the old behavior. If you disable thinking, review [Running with thinking disabled](https://platform.claude.com/docs/en/build-with-claude/prompt-engineering/prompting-claude-opus-5#running-with-thinking-disabled) for the output artifacts that can appear and their prompting mitigations.
+* Audit requests that disable thinking: `thinking: {type: "disabled"}` with effort `xhigh` or `max` returns a 400 error, enforced on each request. Re-enable thinking or lower the effort to `high` or below.
+* If you removed sampling parameters during the Opus 4.7 migration, no action is needed. If you re-added them with a 400-retry path, remove that retry path.
+* Re-evaluate your `effort` setting: run a fresh [effort](https://platform.claude.com/docs/en/build-with-claude/effort) sweep on your own evals rather than carrying over a setting tuned for Claude Opus 4.7. Test `low` and `medium` effort as cost and latency controls, and `max` effort where maximum capability matters more than token spend. If you run at `xhigh` or `max` effort, raise `max_tokens` to at least 64k as a starting point.
+* Remove any context-window beta header. The 1M context window is the default on the Claude API, Amazon Bedrock, Google Cloud, and Microsoft Foundry.
+* If you rebuild conversation history to update instructions, consider switching to a mid-conversation system message to preserve prompt cache hits.
+* Verify your stop-reason handling reads `stop_details` on refusals (available since Claude Opus 4.7; now publicly documented), and consider `fallbacks: "default"` (beta) to re-run refused requests on a recommended fallback model automatically.
+* Review prompts near the caching minimum: prompts of 512 tokens or more can now create cache entries.
+* If you use [web fetch](https://platform.claude.com/docs/en/agents-and-tools/tool-use/web-fetch-tool), plan an alternative: it is not available on Claude Opus 5.
+* If your organization has a [Priority Tier](https://platform.claude.com/docs/en/api/service-tiers#supported-models) commitment, note that Priority Tier is not supported on Claude Opus 5.
+* If you used fast mode on Claude Opus 4.7, no request changes are needed beyond the model ID: `speed: "fast"` and the `fast-mode-2026-02-01` beta header work unchanged on Claude Opus 5.
+* For agentic workloads, consider [task budgets](https://platform.claude.com/docs/en/build-with-claude/task-budgets) (beta) and mid-conversation tool changes (beta).
+* Re-tune length and verbosity prompts, and remove verification and self-check instructions carried over from prompts tuned for earlier models.
+* Re-baseline cost and latency at your chosen effort level.
+
+## Migrating to Claude Opus 5 from Claude Opus 4.6 and earlier Opus models
+
+Claude Opus 5 should have strong out-of-the-box performance on existing Claude Opus 4.6 prompts and evals at the same pricing, but there are a handful of behavioral and API changes worth knowing about as you migrate. Most of these changes took effect in Claude Opus 4.7; two more, thinking on by default and an effort cap on disabling thinking, take effect on Claude Opus 5. All of them are covered below, so this section is complete for code coming straight from Claude Opus 4.6. Claude Opus 5 supports the same set of features as Claude Opus 4.6, including:
+
+* [1M token context window](https://platform.claude.com/docs/en/build-with-claude/context-windows) at standard API pricing with no long-context premium
+* [128k max output tokens](https://platform.claude.com/docs/en/models/overview)
+* [Adaptive thinking](https://platform.claude.com/docs/en/build-with-claude/thinking)
+* [Prompt caching](https://platform.claude.com/docs/en/build-with-claude/prompt-caching)
+* [Batch processing](https://platform.claude.com/docs/en/build-with-claude/batch-processing)
+* [Files API](https://platform.claude.com/docs/en/build-with-claude/files)
+* [PDF support](https://platform.claude.com/docs/en/build-with-claude/pdf-support)
+* [Vision](https://platform.claude.com/docs/en/build-with-claude/vision)
+* Server-side and client-side [tools](https://platform.claude.com/docs/en/agents-and-tools/tool-use/overview) ([bash](https://platform.claude.com/docs/en/agents-and-tools/tool-use/bash-tool), [code execution](https://platform.claude.com/docs/en/agents-and-tools/tool-use/code-execution-tool), [computer use](https://platform.claude.com/docs/en/agents-and-tools/tool-use/computer-use-tool), [text editor](https://platform.claude.com/docs/en/agents-and-tools/tool-use/text-editor-tool), [web search](https://platform.claude.com/docs/en/agents-and-tools/tool-use/web-search-tool), [MCP connector](https://platform.claude.com/docs/en/agents-and-tools/mcp-connector), [memory](https://platform.claude.com/docs/en/agents-and-tools/tool-use/memory-tool))
+
+Two exceptions: [web fetch](https://platform.claude.com/docs/en/agents-and-tools/tool-use/web-fetch-tool) is not available on Claude Opus 5, and [Priority Tier](https://platform.claude.com/docs/en/api/service-tiers#supported-models) is not supported on Claude Opus 5. On the Claude API, Claude Opus 5 also supports [computer use](https://platform.claude.com/docs/en/agents-and-tools/tool-use/computer-use-tool) as the stable `computer_toolset_20260801` toolset and the [browser use tool](https://platform.claude.com/docs/en/agents-and-tools/tool-use/browser-use-tool) for tasks inside webpages, neither of which Claude Opus 4.6 or earlier Opus models support; existing integrations on the earlier `computer_20251124` version continue to work unchanged on Claude Opus 5. To upgrade an existing integration, see [Migrate from `computer_20251124`](https://platform.claude.com/docs/en/agents-and-tools/tool-use/computer-use-tool#migrate-from-computer-20251124).
+
+### Update your model name
+
+```python
+# Opus migration
+model = "claude-opus-4-6" # Before
+model = "claude-opus-5" # After
+```
+
+### Breaking changes
+
+1. **Extended thinking removed:** `thinking: {type: "enabled", budget_tokens: N}` is no longer supported on Claude Opus 4.7 or later models and returns a 400 error. Switch to [adaptive thinking](https://platform.claude.com/docs/en/build-with-claude/thinking) (`thinking: {type: "adaptive"}`) and use the [effort parameter](https://platform.claude.com/docs/en/build-with-claude/effort) to control thinking depth. On Claude Opus 5, adaptive thinking is **on by default**: `thinking: {type: "adaptive"}` is valid and equivalent to omitting the `thinking` field entirely (see the next item).
+
+ Before (Claude Opus 4.6):
+
+
+ ```bash cURL
+ curl https://api.anthropic.com/v1/messages \
+ -H "x-api-key: $ANTHROPIC_API_KEY" \
+ -H "anthropic-version: 2023-06-01" \
+ -H "content-type: application/json" \
+ -d '{
+ "model": "claude-opus-4-6",
+ "max_tokens": 16000,
+ "thinking": {
+ "type": "enabled",
+ "budget_tokens": 10000
+ },
+ "messages": [
+ {
+ "role": "user",
+ "content": "..."
+ }
+ ]
+ }'
+ ```
+
+ ```bash CLI
+ ant messages create <<'YAML'
+ model: claude-opus-4-6
+ max_tokens: 16000
+ thinking:
+ type: enabled
+ budget_tokens: 10000
+ messages:
+ - role: user
+ content: "..."
+ YAML
+ ```
+
+ ```python Python
+ client.messages.create(
+ model="claude-opus-4-6",
+ max_tokens=16000,
+ thinking={"type": "enabled", "budget_tokens": 10000},
+ messages=[{"role": "user", "content": "..."}],
+ )
+ ```
+
+ ```typescript TypeScript
+ await client.messages.create({
+ model: "claude-opus-4-6",
+ max_tokens: 16000,
+ thinking: { type: "enabled", budget_tokens: 10000 },
+ messages: [{ role: "user", content: "..." }]
+ });
+ ```
+
+ ```csharp C#
+ using Anthropic;
+ using Anthropic.Models.Messages;
+
+ AnthropicClient client = new();
+
+ var parameters = new MessageCreateParams
+ {
+ Model = "claude-opus-4-6",
+ MaxTokens = 16000,
+ Thinking = new ThinkingConfigEnabled(budgetTokens: 10000),
+ Messages = [new() { Role = Role.User, Content = "..." }]
+ };
+
+ var response = await client.Messages.Create(parameters);
+ Console.WriteLine(response);
+ ```
+
+ ```go Go
+ client := anthropic.NewClient()
+
+ response, err := client.Messages.New(context.TODO(), anthropic.MessageNewParams{
+ Model: "claude-opus-4-6",
+ MaxTokens: 16000,
+ Thinking: anthropic.ThinkingConfigParamOfEnabled(10000),
+ Messages: []anthropic.MessageParam{
+ anthropic.NewUserMessage(anthropic.NewTextBlock("...")),
+ },
+ })
+ if err != nil {
+ log.Fatal(err)
+ }
+ fmt.Println(response)
+ ```
+
+ ```java Java
+ AnthropicClient client = AnthropicOkHttpClient.fromEnv();
+
+ MessageCreateParams params = MessageCreateParams.builder()
+ .model("claude-opus-4-6")
+ .maxTokens(16000L)
+ .enabledThinking(10000L)
+ .addUserMessage("...")
+ .build();
+
+ Message response = client.messages().create(params);
+ IO.println(response);
+ ```
+
+ ```php PHP
+ $client = new Client();
+
+ $message = $client->messages->create(
+ maxTokens: 16000,
+ messages: [['role' => 'user', 'content' => '...']],
+ model: 'claude-opus-4-6',
+ thinking: ['type' => 'enabled', 'budget_tokens' => 10000],
+ );
+ ```
+
+ ```ruby Ruby
+ client = Anthropic::Client.new
+
+ message = client.messages.create(
+ model: "claude-opus-4-6",
+ max_tokens: 16000,
+ thinking: {
+ type: "enabled",
+ budget_tokens: 10000
+ },
+ messages: [
+ { role: "user", content: "..." }
+ ]
+ )
+ ```
+
+
+ After (Claude Opus 5):
+
+
+ ```bash cURL
+ curl https://api.anthropic.com/v1/messages \
+ -H "x-api-key: $ANTHROPIC_API_KEY" \
+ -H "anthropic-version: 2023-06-01" \
+ -H "content-type: application/json" \
+ -d '{
+ "model": "claude-opus-5",
+ "max_tokens": 16000,
+ "thinking": {
+ "type": "adaptive"
+ },
+ "output_config": {
+ "effort": "high"
+ },
+ "messages": [
+ {
+ "role": "user",
+ "content": "..."
+ }
+ ]
+ }'
+ ```
+
+ ```bash CLI
+ ant messages create <<'YAML'
+ model: claude-opus-5
+ max_tokens: 16000
+ thinking:
+ type: adaptive
+ output_config:
+ effort: high
+ messages:
+ - role: user
+ content: "..."
+ YAML
+ ```
+
+ ```python Python
+ client.messages.create(
+ model="claude-opus-5",
+ max_tokens=16000,
+ thinking={"type": "adaptive"},
+ output_config={"effort": "high"}, # or "max", "xhigh", "medium", "low"
+ messages=[{"role": "user", "content": "..."}],
+ )
+ ```
+
+ ```typescript TypeScript
+ await client.messages.create({
+ model: "claude-opus-5",
+ max_tokens: 16000,
+ thinking: { type: "adaptive" },
+ output_config: { effort: "high" }, // or "max", "xhigh", "medium", "low"
+ messages: [{ role: "user", content: "..." }]
+ });
+ ```
+
+ ```csharp C#
+ using Anthropic;
+ using Anthropic.Models.Messages;
+
+ AnthropicClient client = new();
+
+ var parameters = new MessageCreateParams
+ {
+ Model = "claude-opus-5",
+ MaxTokens = 16000,
+ Thinking = new ThinkingConfigAdaptive(),
+ OutputConfig = new OutputConfig { Effort = Effort.High }, // or Max, Xhigh, Medium, Low
+ Messages = [new() { Role = Role.User, Content = "..." }]
+ };
+
+ var response = await client.Messages.Create(parameters);
+ Console.WriteLine(response);
+ ```
+
+ ```go Go
+ client := anthropic.NewClient()
+
+ response, err := client.Messages.New(context.TODO(), anthropic.MessageNewParams{
+ Model: "claude-opus-5",
+ MaxTokens: 16000,
+ Thinking: anthropic.ThinkingConfigParamUnion{
+ OfAdaptive: &anthropic.ThinkingConfigAdaptiveParam{},
+ },
+ OutputConfig: anthropic.OutputConfigParam{
+ Effort: anthropic.OutputConfigEffortHigh, // or Max, Xhigh, Medium, Low
+ },
+ Messages: []anthropic.MessageParam{
+ anthropic.NewUserMessage(anthropic.NewTextBlock("...")),
+ },
+ })
+ if err != nil {
+ log.Fatal(err)
+ }
+ fmt.Println(response)
+ ```
+
+ ```java Java
+ AnthropicClient client = AnthropicOkHttpClient.fromEnv();
+
+ MessageCreateParams params = MessageCreateParams.builder()
+ .model("claude-opus-5")
+ .maxTokens(16000L)
+ .thinking(ThinkingConfigAdaptive.builder().build())
+ .outputConfig(OutputConfig.builder()
+ .effort(OutputConfig.Effort.HIGH) // or MAX, XHIGH, MEDIUM, LOW
+ .build())
+ .addUserMessage("...")
+ .build();
+
+ Message response = client.messages().create(params);
+ IO.println(response);
+ ```
+
+ ```php PHP
+ $client = new Client();
+
+ $message = $client->messages->create(
+ maxTokens: 16000,
+ messages: [['role' => 'user', 'content' => '...']],
+ model: 'claude-opus-5',
+ thinking: ['type' => 'adaptive'],
+ outputConfig: ['effort' => 'high'], // or 'max', 'xhigh', 'medium', 'low'
+ );
+ ```
+
+ ```ruby Ruby
+ client = Anthropic::Client.new
+
+ message = client.messages.create(
+ model: "claude-opus-5",
+ max_tokens: 16000,
+ thinking: {
+ type: "adaptive"
+ },
+ output_config: {
+ effort: "high" # or "max", "xhigh", "medium", "low"
+ },
+ messages: [
+ { role: "user", content: "..." }
+ ]
+ )
+ ```
+
+
+ Adaptive thinking is steerable through prompting and the [effort parameter](https://platform.claude.com/docs/en/build-with-claude/effort); see [Choosing an effort level](https://platform.claude.com/docs/en/models/opus-5/migration-guide#choosing-an-effort-level).
+
+2. **Thinking on by default:** On Claude Opus 4.6 and Claude Opus 4.7, requests without a `thinking` field run without thinking; on Claude Opus 5, the same requests run with [adaptive thinking](https://platform.claude.com/docs/en/build-with-claude/thinking). `max_tokens` remains a hard limit on total output, thinking plus response text, so revisit it for workloads that ran without thinking. To preserve the old behavior, pass `thinking: {type: "disabled"}`, subject to the effort cap in the next item; note that with thinking disabled the model can occasionally emit tool calls as plain text or include internal XML tags in its visible output, so prefer lower effort levels with thinking enabled where you can, and see [Running with thinking disabled](https://platform.claude.com/docs/en/build-with-claude/prompt-engineering/prompting-claude-opus-5#running-with-thinking-disabled) for mitigations where you can't.
+
+3. **Disabling thinking is capped at `high` effort:** You can turn thinking off with `thinking: {type: "disabled"}`, but only at an [effort](https://platform.claude.com/docs/en/build-with-claude/effort) level of `high` or below. A request that combines `thinking: {type: "disabled"}` with effort `xhigh` or `max` returns a 400 error on Claude Opus 5, enforced on each request. Audit requests that disable thinking before you migrate: re-enable thinking or lower the effort to `high` or below.
+
+4. **Sampling parameters removed:** Setting `temperature`, `top_p`, or `top_k` to any non-default value on Claude Opus 4.7 or later models, including Claude Opus 5, returns a 400 error. The Python SDK (v1.0 and later) does not define them, and passing them raises a `TypeError`. The safest migration path is to omit these parameters entirely from request payloads. Prompting is the recommended way to guide model behavior on Claude Opus 5. If you were using `temperature = 0` for determinism, note that it never guaranteed identical outputs on prior models.
+
+5. **Thinking content omitted by default:** Thinking blocks still appear in the response stream on Claude Opus 4.7 and later models, but their `thinking` field is empty unless you explicitly opt in. This is a silent change from Claude Opus 4.6, where the default was to return summarized thinking text. To restore summarized thinking content, set `thinking.display` to `"summarized"`:
+
+
+ ```python Python
+ thinking = {
+ "type": "adaptive",
+ "display": "summarized",
+ }
+ ```
+
+ ```typescript TypeScript
+ const thinking = {
+ type: "adaptive",
+ display: "summarized"
+ };
+ ```
+
+ ```csharp C#
+ var thinking = new ThinkingConfigAdaptive { Display = Display.Summarized };
+ ```
+
+ ```go Go
+ thinking := anthropic.ThinkingConfigParamUnion{
+ OfAdaptive: &anthropic.ThinkingConfigAdaptiveParam{
+ Display: anthropic.ThinkingConfigAdaptiveDisplaySummarized,
+ },
+ }
+ ```
+
+ ```java Java
+ ThinkingConfigAdaptive thinking = ThinkingConfigAdaptive.builder()
+ .display(ThinkingConfigAdaptive.Display.SUMMARIZED)
+ .build();
+ ```
+
+ ```php PHP
+ $thinking = ['type' => 'adaptive', 'display' => 'summarized'];
+ ```
+
+ ```ruby Ruby
+ thinking = {
+ type: "adaptive",
+ display: "summarized"
+ }
+ ```
+
+
+ The default is `"omitted"` on Claude Opus 4.7 and later models. If your product streams reasoning to users, the new default appears as a long pause before output begins; set `display: "summarized"` to restore visible progress during thinking. See [Controlling thinking display](https://platform.claude.com/docs/en/build-with-claude/thinking#controlling-thinking-display) for details.
+
+6. **Updated token counting:** Claude Opus 4.7 introduced a new tokenizer, which later Opus models, including Claude Opus 5, also use. It contributes to improved performance on a wide range of tasks, and it may use roughly 1x to 1.35x as many tokens when processing text compared to models before Claude Opus 4.7 (up to \~35% more, varying by content).
+
+ [`/v1/messages/count_tokens`](https://platform.claude.com/docs/en/build-with-claude/token-counting) returns a different number of tokens for Claude Opus 5 than it did for Claude Opus 4.6. Token efficiency can vary by workload shape.
+
+ Prompting interventions, `task_budget`, and `effort` can help control costs and ensure appropriate token usage. These controls may trade off model intelligence. Update your `max_tokens` parameters to give additional headroom, including compaction triggers. Claude Opus 5 provides a 1M context window at standard API pricing with no long-context premium.
+
+7. **Prefill removal (carried over from Opus 4.6):** Prefilling assistant messages returns a 400 error on Claude Opus 4.7 and later models, including Claude Opus 5. Use [structured outputs](https://platform.claude.com/docs/en/build-with-claude/structured-outputs), system prompt instructions, or `output_config.format` instead.
+
+### Choosing an effort level
+
+The [effort parameter](https://platform.claude.com/docs/en/build-with-claude/effort) allows you to tune Claude's intelligence versus token spend, trading off capability for faster speed and lower costs. Claude Opus 5 supports the full set of effort levels and defaults to `high`. Run a fresh effort sweep on your own evals rather than carrying over a setting tuned for an earlier model:
+
+* **`max`:** Can deliver gains on the most demanding tasks but may show diminishing returns from increased token usage and can be prone to overthinking on simpler ones. Test it where maximum capability matters more than token spend.
+* **`xhigh`:** Extended capability for long-running agentic and coding work that needs more depth than the default.
+* **`high`:** The default. Balances token usage and intelligence for most tasks.
+* **`medium`:** Cost-saving step-down from the default, worth testing as a cost and latency control.
+* **`low`:** Most efficient. Reserve for short, scoped tasks and latency-sensitive workloads.
+
+If you run at `xhigh` or `max` effort, set a large `max_tokens` so the model has room to think and act; start at 64k tokens and tune from there. Effort is more important for this model than for any prior Opus. Experiment with it actively when you upgrade.
+
+### Behavior changes
+
+Claude Opus 4.7 introduced several behavioral differences from Claude Opus 4.6 that are not API breaking changes but may require prompt updates or scaffolding removal. They carry forward to Claude Opus 5, with the adjustments noted below.
+
+1. **Response length varies by use case:** Claude Opus 4.7 calibrates response length to how complex it judges the task to be, rather than defaulting to a fixed verbosity. This usually means shorter answers on simple lookups and much longer ones on open-ended analysis.
+
+ If your product depends on a certain style or verbosity of output, you may need to tune your prompts. For example, to decrease verbosity, add: "Provide concise, focused responses. Skip non-essential context, and keep examples minimal." If you see specific kinds of over-explaining, add targeted instructions in your prompt to prevent them.
+
+ Positive examples showing how Claude can communicate with the appropriate level of concision tend to be more effective than negative examples or instructions that tell the model what not to do. On Claude Opus 5, default visible responses and written deliverables run longer than on earlier Opus models, and lowering effort reduces thinking volume without reliably shortening the visible response; prompt explicitly for conciseness or a target length. See [Response length and verbosity](https://platform.claude.com/docs/en/build-with-claude/prompt-engineering/prompting-claude-opus-5#response-length-and-verbosity).
+
+2. **More literal instruction following:** Claude Opus 4.7 interprets prompts more literally and explicitly than Claude Opus 4.6, particularly at lower effort levels. It does not silently generalize an instruction from one item to another, and it does not infer requests you didn't make. The upside of this literalism is precision and less thrash. It generally performs better for API use cases with carefully tuned prompts, structured extraction, and pipelines where you want predictable behavior. A prompt and harness review may be especially helpful for migration to Claude Opus 5.
+
+3. **More direct tone:** As with any new model, prose style on long-form writing may shift. Claude Opus 4.7 is more direct and opinionated, with less validation-forward phrasing and fewer emoji than Claude Opus 4.6's warmer style. If your product relies on a specific voice, re-evaluate style prompts against the new baseline.
+
+4. **Built-in progress updates in agentic traces:** Claude Opus 4.7 provides more regular, higher-quality updates to the user throughout long agentic traces. If you've added scaffolding to force interim status messages ("After every 3 tool calls, summarize progress"), try removing it. If you find that the length or contents of Claude Opus 4.7's user-facing updates are not well-calibrated to your use case, explicitly describe what these updates should look like in the prompt and provide examples.
+
+5. **Subagent spawning changed:** Claude Opus 4.7 tends to spawn fewer subagents by default than Claude Opus 4.6, while Claude Opus 5 delegates to subagents more readily than earlier models. The behavior is steerable through prompting in either direction; give explicit guidance around when subagents are desirable, or cap the number of subagents. See [Controlling subagent spawning](https://platform.claude.com/docs/en/build-with-claude/prompt-engineering/prompting-claude-opus-5#controlling-subagent-spawning).
+
+6. **Stricter effort calibration:** Meaningfully changing from Claude Opus 4.6, Claude Opus 4.7 respects [effort levels](https://platform.claude.com/docs/en/build-with-claude/effort) strictly, especially at the low end. At `low` and `medium`, the model scopes its work to what was asked rather than doing more than requested.
+
+ This is good for latency and cost, but on moderately complex tasks running at `low` effort there is some risk of under-thinking. If you observe shallow reasoning on complex problems, raise effort to `high` or `xhigh` rather than prompting around it.
+
+ If you need to keep effort at `low` for latency, add targeted guidance: "This task involves multistep reasoning. Think carefully through the problem before responding." See [Recommended effort levels for Claude Opus 4.7](https://platform.claude.com/docs/en/build-with-claude/effort#recommended-effort-levels-for-claude-opus-4-7).
+
+7. **Fewer tool calls by default:** Claude Opus 4.7 has a tendency to use tools less often than Claude Opus 4.6 and to use reasoning more. This produces better results in most cases.
+
+ To increase tool usage, raise the effort setting. `high` or `xhigh` effort settings show substantially more tool usage in agentic search and coding. You can also adjust your prompt to explicitly instruct the model about when and how to properly use its tools.
+
+8. **Real-time cybersecurity safeguards:** Newly added in Claude Opus 4.7, requests that involve prohibited or high-risk topics may lead to refusals. For legitimate security work such as penetration testing, vulnerability research, or red-teaming, apply to the [Cyber Verification Program](https://support.claude.com/en/articles/14604842-real-time-cyber-safeguards-on-claude-opus-and-sonnet) to request reduced restrictions. The application route depends on how you access Claude.
+
+9. **High-resolution image support:** Claude Opus 4.7 is the first Claude model with high-resolution image support. Maximum image resolution is 2,576 pixels on the long edge, up from 1,568 pixels on prior models. This unlocks gains on vision-heavy workloads and is particularly valuable for computer use, screenshot understanding, and document analysis.
+
+ High-resolution support is automatic and requires no beta header or client-side opt-in. Two things to plan for:
+
+ * Full-resolution images can use up to approximately 3x more image tokens than on prior models (up to 4,784 tokens per image, compared to the previous cap of roughly 1,600 tokens per image). Re-budget `max_tokens` and cost expectations for image-heavy workloads, or downsample before sending if you do not need the additional fidelity.
+ * Pointing and bounding-box coordinates returned by the model are 1:1 with actual image pixels on Claude Opus 4.7, so no scale-factor conversion is required.
+
+ See [High-resolution image support on Claude Opus 4.7](https://platform.claude.com/docs/en/build-with-claude/vision#high-resolution-image-support-on-claude-opus-4-7) for details.
+
+### Recommended changes
+
+These are not required but will improve your experience:
+
+1. **Re-evaluate `max_tokens`:** Because the same text produces a higher token count on Claude Opus 4.7 and later models, update your `max_tokens` parameters to give additional headroom, including compaction triggers. Prompting interventions, [`task_budget`](https://platform.claude.com/docs/en/build-with-claude/task-budgets), and [`effort`](https://platform.claude.com/docs/en/build-with-claude/effort) can help control costs and ensure appropriate token usage.
+
+2. **Audit token-count expectations:** Any code path that estimates tokens client-side or assumes a fixed token-to-character ratio should be re-tested against Claude Opus 5. Use the [Token counting endpoint](https://platform.claude.com/docs/en/build-with-claude/token-counting) to verify.
+
+3. **Adopt [task budgets](https://platform.claude.com/docs/en/build-with-claude/task-budgets) (beta):** Claude Opus 4.7 introduces task budgets. These budgets let you inform Claude how many tokens it has for a full agentic loop, including thinking, tool calls, tool results, and final output. The model sees a running countdown and uses it to prioritize work and finish the task gracefully as the budget is consumed. To use, set the beta header `task-budgets-2026-03-13` and add the following to your output config:
+
+
+ ```python Python
+ output_config = {
+ "effort": "high",
+ "task_budget": {"type": "tokens", "total": 128000},
+ }
+ ```
+
+ ```typescript TypeScript
+ const output_config = {
+ effort: "high",
+ task_budget: { type: "tokens", total: 128000 }
+ };
+ ```
+
+ ```csharp C#
+ var outputConfig = new BetaOutputConfig
+ {
+ Effort = Effort.High,
+ TaskBudget = new BetaTokenTaskBudget
+ {
+ Total = 128000,
+ },
+ };
+ ```
+
+ ```go Go
+ outputConfig := anthropic.BetaOutputConfigParam{
+ Effort: anthropic.BetaOutputConfigEffortHigh,
+ TaskBudget: anthropic.BetaTokenTaskBudgetParam{
+ Total: 128000,
+ },
+ }
+ ```
+
+ ```java Java
+ BetaOutputConfig outputConfig = BetaOutputConfig.builder()
+ .effort(BetaOutputConfig.Effort.HIGH)
+ .taskBudget(BetaTokenTaskBudget.builder()
+ .total(128000L)
+ .build())
+ .build();
+ ```
+
+ ```php PHP
+ $outputConfig = [
+ 'effort' => 'high',
+ 'taskBudget' => [
+ 'type' => 'tokens',
+ 'total' => 128000,
+ ],
+ ];
+ ```
+
+ ```ruby Ruby
+ output_config = {
+ effort: :high,
+ task_budget: {
+ type: :tokens,
+ total: 128_000
+ }
+ }
+ ```
+
+
+ You may need to experiment with different task budgets for your use case. If the model is given a task budget that is too restrictive, it may complete the task less thoroughly, referencing its budget as the constraint.
+
+ For open-ended agentic tasks where quality matters more than speed, do not set a task budget. Reserve task budgets for workloads where you need the model to scope its work to a token allowance. The minimum value for a task budget is 20k tokens.
+
+ A task budget is not a hard cap; it's a suggestion that the model is aware of. It differs from `max_tokens`:
+
+ * **`task_budget`:** an advisory cap across the full agentic loop. The model sees it and uses it to pace itself.
+ * **`max_tokens`:** a hard per-request ceiling on generated tokens. It is not passed to the model, so the model is not aware of it.
+
+ Use `task_budget` when you want the model to self-moderate, and `max_tokens` as a hard ceiling to cap usage.
+
+4. **Set a large `max_tokens` at `max` or `xhigh` effort:** If you are running Claude Opus 4.7 or a later model at `max` or `xhigh` effort, set a large max output token budget so the model has room to think and act across its subagents and tool calls. Start at 64k tokens and tune from there.
+
+5. **Downsample images if high resolution is unnecessary:** Claude Opus 4.7 and later models support images up to 2576px / 3.75MP. High-res images use more tokens. If the additional image fidelity is unnecessary, downsample images before sending to Claude to avoid token-usage increases. See [Images and vision](https://platform.claude.com/docs/en/build-with-claude/vision).
+
+6. **Consider automatic fallbacks:** Claude Opus 5 ships with cybersecurity safety classifiers whose cyber-category refusals can fall back to Claude Opus 4.8. To re-run refused requests on another model automatically, consider the `fallbacks` parameter with the `"default"` mode (`fallbacks: "default"`), which selects a recommended fallback model based on the refusal category instead of a hand-maintained model list. Server-side fallback is in beta; the `"default"` mode requires the `server-side-fallback-2026-07-01` beta header. See [Refusals and fallback](https://platform.claude.com/docs/en/build-with-claude/refusals-and-fallback).
+
+7. **Cache shorter prompts:** The minimum cacheable prompt length on Claude Opus 5 is 512 tokens, lower than on earlier Opus models. Prompts that were too short to cache can now create cache entries, with no code changes required. See [Prompt caching](https://platform.claude.com/docs/en/build-with-claude/prompt-caching#cache-limitations) for per-model minimums.
+
+8. **Change tools mid-conversation (beta):** You can add or remove tools between turns of a conversation without invalidating [prompt cache](https://platform.claude.com/docs/en/build-with-claude/prompt-caching) hits on earlier turns. Send the beta header `mid-conversation-tool-changes-2026-07-01`. This is useful for agentic workloads that expose tools progressively or retire them as a task advances; without it, a changed tool list invalidates the cached prefix.
+
+9. **Remove carried-over verification instructions and constrain scope:** Claude Opus 5 verifies its own work without being told to, so remove explicit verification or self-check instructions carried over from prompts tuned for earlier models; leaving them in causes over-verification. For narrow tasks, constrain the task scope explicitly. See [Task scope and over-verification](https://platform.claude.com/docs/en/build-with-claude/prompt-engineering/prompting-claude-opus-5#task-scope-and-over-verification).
+
+### Migration checklist
+
+* Update model name from `claude-opus-4-6` to `claude-opus-5` (or update aliases).
+* Remove `temperature`, `top_p`, and `top_k` from request payloads.
+* Replace `thinking: {type: "enabled", budget_tokens: N}` with `thinking: {type: "adaptive"}` plus the [effort parameter](https://platform.claude.com/docs/en/build-with-claude/effort), or remove the `thinking` field entirely; adaptive thinking is on by default on Claude Opus 5.
+* Review workloads that ran without a `thinking` field: they run with thinking on Claude Opus 5. Revisit `max_tokens`, which remains a hard limit on total output (thinking plus response text), or pass `thinking: {type: "disabled"}` at effort `high` or below to preserve the old behavior.
+* Audit requests that disable thinking: `thinking: {type: "disabled"}` with effort `xhigh` or `max` returns a 400 error, enforced on each request. Re-enable thinking or lower the effort to `high` or below.
+* Remove any assistant-message prefills.
+* If your UI displays thinking content, explicitly opt in to thinking summarization.
+* Re-benchmark end-to-end cost and latency under the updated tokenization.
+* Re-tune `max_tokens` to account for the updated tokenization.
+* Re-test any client-side token-count estimations.
+* If your application sends images, re-budget for [high-resolution image support](https://platform.claude.com/docs/en/build-with-claude/vision#high-resolution-image-support-on-claude-opus-4-7) (up to approximately 3x more image tokens per full-resolution image). Downsample before sending if you do not need the additional fidelity.
+* If you consume pointing or bounding-box coordinates from the model, remove any scale-factor conversion; coordinates are 1:1 with actual image pixels on Claude Opus 4.7 and later models.
+* Review prompts for the behavior changes (response length, literalism, tone, progress updates, subagents, effort calibration, tool triggering, cyber safeguards, high-resolution image handling).
+* Re-baseline response length with existing length-control prompts removed, then tune explicitly.
+* If using `xhigh` or `max` effort, raise `max_tokens` to at least 64k as a starting point.
+* Consider adopting task budgets (beta) and mid-conversation tool changes (beta) for agentic workflows.
+* Handle `stop_reason: "refusal"`, and consider `fallbacks: "default"` (beta) to re-run refused requests on a recommended fallback model automatically.
+* Review prompts near the caching minimum: prompts of 512 tokens or more can now create cache entries on Claude Opus 5.
+* If you use [web fetch](https://platform.claude.com/docs/en/agents-and-tools/tool-use/web-fetch-tool), plan an alternative: it is not available on Claude Opus 5.
+* If your organization has a [Priority Tier](https://platform.claude.com/docs/en/api/service-tiers#supported-models) commitment, note that Priority Tier is not supported on Claude Opus 5.
+* Remove verification and self-check instructions carried over from prompts tuned for earlier models; they cause over-verification on Claude Opus 5.
+* If your product does legitimate security work, apply to the [Cyber Verification Program](https://support.claude.com/en/articles/14604842-real-time-cyber-safeguards-on-claude-opus-and-sonnet) for access to lower restrictions on cyber content.
+
+### Migrating from Claude Opus 4.5 or earlier
+
+If you are migrating from Claude Opus 4.5, Opus 4.1, or an earlier model directly to Claude Opus 5, apply **all of the changes earlier in this section** plus the following cumulative changes, which took effect between Opus 4.5 and Opus 4.7. If you are migrating from Opus 4.6, the changes earlier in this section are all you need.
+
+#### Update your model name
+
+```python
+# Opus migration
+model = "claude-opus-4-5" # Before
+model = "claude-opus-5" # After
+```
+
+#### Breaking changes
+
+1. **Prefill removal** is covered in the [breaking changes for migrating from Claude Opus 4.6](https://platform.claude.com/docs/en/models/opus-5/migration-guide#opus-46-breaking-changes).
+
+2. **Tool parameter quoting:** Claude Opus 4.6 and later models may produce slightly different JSON string escaping in tool call arguments (for example, different handling of Unicode escapes or forward slash escaping). If you parse tool call `input` as a raw string rather than using a JSON parser, verify your parsing logic. Standard JSON parsers (such as `json.loads()` or `JSON.parse()`) handle these differences automatically.
+
+#### Recommended changes
+
+These changes improve your experience on Claude Opus 4.7 and later models. Items marked **(required on Opus 4.7)** were optional recommendations when Opus 4.6 launched but are now mandatory; the rest remain recommended.
+
+1. **Migrate to adaptive thinking (required on Opus 4.7):** `thinking: {type: "enabled", budget_tokens: N}` returns a 400 error on Claude Opus 4.7 and later models. Switch to `thinking: {type: "adaptive"}` and use the [effort parameter](https://platform.claude.com/docs/en/build-with-claude/effort) to control thinking depth; on Claude Opus 5, `thinking: {type: "adaptive"}` is equivalent to omitting the `thinking` field, which runs with adaptive thinking by default. See [Thinking](https://platform.claude.com/docs/en/build-with-claude/thinking).
+
+
+ ```bash cURL
+ curl -sS https://api.anthropic.com/v1/messages \
+ -H "content-type: application/json" \
+ -H "x-api-key: $ANTHROPIC_API_KEY" \
+ -H "anthropic-version: 2023-06-01" \
+ -d '{
+ "model": "claude-opus-5",
+ "max_tokens": 16000,
+ "thinking": {"type": "adaptive"},
+ "output_config": {"effort": "high"},
+ "messages": [{"role": "user", "content": "Your prompt here"}]
+ }'
+ ```
+
+ ```python Before
+ response = client.beta.messages.create(
+ model="claude-opus-4-5",
+ max_tokens=16000,
+ thinking={"type": "enabled", "budget_tokens": 32000},
+ betas=["interleaved-thinking-2025-05-14"],
+ messages=[{"role": "user", "content": "Your prompt here"}],
+ )
+ ```
+
+ ```python After
+ response = client.messages.create(
+ model="claude-opus-5",
+ max_tokens=16000,
+ thinking={"type": "adaptive"},
+ output_config={"effort": "high"},
+ messages=[{"role": "user", "content": "Your prompt here"}],
+ )
+ ```
+
+ ```bash CLI
+ ant messages create <<'YAML'
+ model: claude-opus-5
+ max_tokens: 16000
+ thinking:
+ type: adaptive
+ output_config:
+ effort: high
+ messages:
+ - role: user
+ content: Your prompt here
+ YAML
+ ```
+
+ ```typescript TypeScript
+ const client = new Anthropic();
+
+ const response = await client.messages.create({
+ model: "claude-opus-5",
+ max_tokens: 16000,
+ thinking: { type: "adaptive" },
+ output_config: { effort: "high" },
+ messages: [{ role: "user", content: "Your prompt here" }]
+ });
+ ```
+
+ ```csharp C#
+ using Anthropic;
+ using Anthropic.Models.Messages;
+
+ AnthropicClient client = new();
+
+ var parameters = new MessageCreateParams
+ {
+ Model = Model.ClaudeOpus5,
+ MaxTokens = 16000,
+ Thinking = new ThinkingConfigAdaptive(),
+ OutputConfig = new OutputConfig { Effort = Effort.High },
+ Messages = [new() { Role = Role.User, Content = "Your prompt here" }]
+ };
+
+ var response = await client.Messages.Create(parameters);
+ Console.WriteLine(response);
+ ```
+
+ ```go Go
+ client := anthropic.NewClient()
+
+ response, err := client.Messages.New(context.TODO(), anthropic.MessageNewParams{
+ Model: anthropic.ModelClaudeOpus5,
+ MaxTokens: 16000,
+ Thinking: anthropic.ThinkingConfigParamUnion{
+ OfAdaptive: &anthropic.ThinkingConfigAdaptiveParam{},
+ },
+ OutputConfig: anthropic.OutputConfigParam{
+ Effort: anthropic.OutputConfigEffortHigh,
+ },
+ Messages: []anthropic.MessageParam{
+ anthropic.NewUserMessage(anthropic.NewTextBlock("Your prompt here")),
+ },
+ })
+ if err != nil {
+ log.Fatal(err)
+ }
+ fmt.Println(response)
+ ```
+
+ ```java Java
+ import com.anthropic.models.messages.OutputConfig;
+ import com.anthropic.models.messages.ThinkingConfigAdaptive;
+ // ...
+ public class AdaptiveThinkingExample {
+ public static void main(String[] args) {
+ AnthropicClient client = AnthropicOkHttpClient.fromEnv();
+
+ MessageCreateParams params = MessageCreateParams.builder()
+ .model(Model.CLAUDE_OPUS_5)
+ .maxTokens(16000L)
+ .thinking(ThinkingConfigAdaptive.builder().build())
+ .outputConfig(OutputConfig.builder()
+ .effort(OutputConfig.Effort.HIGH)
+ .build())
+ .addUserMessage("Your prompt here")
+ .build();
+
+ Message response = client.messages().create(params);
+ System.out.println(response);
+ }
+ }
+ ```
+
+ ```php PHP
+ $client = new Client();
+
+ $response = $client->messages->create(
+ maxTokens: 16000,
+ messages: [['role' => 'user', 'content' => 'Your prompt here']],
+ model: 'claude-opus-5',
+ thinking: ['type' => 'adaptive'],
+ outputConfig: ['effort' => 'high'],
+ );
+ ```
+
+ ```ruby Ruby
+ client = Anthropic::Client.new
+
+ response = client.messages.create(
+ model: "claude-opus-5",
+ max_tokens: 16000,
+ thinking: { type: "adaptive" },
+ output_config: { effort: "high" },
+ messages: [{ role: "user", content: "Your prompt here" }]
+ )
+ ```
+
+
+ Note that the migration also moves from `client.beta.messages.create` to `client.messages.create`. Adaptive thinking and effort do not require the beta SDK namespace or any beta headers.
+
+2. **Remove effort beta header:** The effort parameter does not require a beta header. Remove `betas=["effort-2025-11-24"]` from your requests.
+
+3. **Remove fine-grained tool streaming beta header:** Fine-grained tool streaming does not require a beta header. Remove `betas=["fine-grained-tool-streaming-2025-05-14"]` from your requests.
+
+4. **Remove interleaved thinking beta header:** Adaptive thinking automatically enables interleaved thinking on Claude Opus 4.7, Opus 4.6, and Sonnet 4.6. Remove `betas=["interleaved-thinking-2025-05-14"]` from your requests. The header is still functional on Sonnet 4.6 with manual extended thinking, but manual mode is deprecated.
+
+5. **Migrate to output\_config.format:** If using structured outputs, update `output_format={...}` to `output_config={"format": {...}}`. The API still accepts the deprecated `output_format` parameter, but it will be removed in a future model release. The Python SDK (v1.0 and later) does not accept `output_format={...}` on `client.beta.messages.create()` or `count_tokens()`. The `output_format=Model` argument of the `parse()` and `stream()` helpers is unchanged.
+
+### Migrating from Claude 4.1 or earlier
+
+If you're migrating from Opus 4.1 or earlier models directly to Claude Opus 5, apply all of the changes earlier in this section, plus the additional changes in this sub-section.
+
+```python
+# From Opus 4.1
+model = "claude-opus-4-1-20250805" # Before
+model = "claude-opus-5" # After
+
+# From Sonnet 3.7
+model = "claude-3-7-sonnet-20250219" # Before
+model = "claude-opus-5" # After
+```
+
+#### Additional breaking changes
+
+1. **Remove sampling parameters**
+
+
+ This is a breaking change when migrating from Claude 3.x models.
+
+
+ Starting with Claude Opus 4.7, setting `temperature`, `top_p`, or `top_k` to any non-default value returns a 400 error. The Python SDK (v1.0 and later) does not define them, and passing them raises a `TypeError`. The safest migration path is to omit these parameters entirely from requests, and to use prompting to guide the model's behavior. If you were using `temperature = 0` for determinism, note that it never guaranteed identical outputs.
+
+
+ ```python Python
+ # Before - This will error in Claude 4+ models
+ response = client.messages.create(
+ model="claude-3-7-sonnet-20250219",
+ temperature=0.7,
+ top_p=0.9, # Non-default sampling params return 400 on Opus 4.7
+ # ...
+ )
+
+ # After
+ response = client.messages.create(
+ model="claude-opus-5",
+ # ...
+ )
+ ```
+
+ ```typescript TypeScript
+ // Before - This will error in Claude 4+ models
+ await client.messages.create({
+ model: "claude-3-7-sonnet-20250219",
+ temperature: 0.7,
+ top_p: 0.9 // Non-default sampling params return 400 on Opus 4.7
+ // ...
+ });
+
+ // After
+ await client.messages.create({
+ model: "claude-opus-5"
+ // ...
+ });
+ ```
+
+ ```csharp C#
+ // Before - This will error in Claude 4+ models
+ await client.Messages.Create(new MessageCreateParams
+ {
+ Model = "claude-3-7-sonnet-20250219",
+ Temperature = 0.7,
+ TopP = 0.9, // Non-default sampling params return 400 on Opus 4.7
+ // ...
+ });
+
+ // After
+ await client.Messages.Create(new MessageCreateParams
+ {
+ Model = "claude-opus-5",
+ // ...
+ });
+ ```
+
+ ```go Go
+ // Before - This will error in Claude 4+ models
+ client.Messages.New(ctx, anthropic.MessageNewParams{
+ Model: "claude-3-7-sonnet-20250219",
+ Temperature: anthropic.Float(0.7),
+ TopP: anthropic.Float(0.9), // Non-default sampling params return 400 on Opus 4.7
+ // ...
+ })
+
+ // After
+ client.Messages.New(ctx, anthropic.MessageNewParams{
+ Model: "claude-opus-5",
+ // ...
+ })
+ ```
+
+ ```java Java
+ // Before - This will error in Claude 4+ models
+ client.messages().create(MessageCreateParams.builder()
+ .model("claude-3-7-sonnet-20250219")
+ .temperature(0.7)
+ .topP(0.9) // Non-default sampling params return 400 on Opus 4.7
+ // ...
+ .build());
+
+ // After
+ client.messages().create(MessageCreateParams.builder()
+ .model("claude-opus-5")
+ // ...
+ .build());
+ ```
+
+ ```php PHP
+ // Before - This will error in Claude 4+ models
+ $client->messages->create(
+ model: 'claude-3-7-sonnet-20250219',
+ temperature: 0.7,
+ topP: 0.9, // Non-default sampling params return 400 on Opus 4.7
+ // ...
+ );
+
+ // After
+ $client->messages->create(
+ model: 'claude-opus-5',
+ // ...
+ );
+ ```
+
+ ```ruby Ruby
+ # Before - This will error in Claude 4+ models
+ client.messages.create(
+ model: "claude-3-7-sonnet-20250219",
+ temperature: 0.7,
+ top_p: 0.9, # Non-default sampling params return 400 on Opus 4.7
+ # ...
+ )
+
+ # After
+ client.messages.create(
+ model: "claude-opus-5",
+ # ...
+ )
+ ```
+
+
+2. **Update tool versions**
+
+
+ This is a breaking change when migrating from Claude 3.x models.
+
+
+ Update to the latest tool versions. Remove any code using the `undo_edit` command.
+
+
+ ```python Python
+ # Before
+ tools = [{"type": "text_editor_20250124", "name": "str_replace_editor"}]
+
+ # After
+ tools = [{"type": "text_editor_20250728", "name": "str_replace_based_edit_tool"}]
+ ```
+
+ ```typescript TypeScript
+ // Before
+ const legacyTools = [{ type: "text_editor_20250124", name: "str_replace_editor" }];
+
+ // After
+ const tools = [{ type: "text_editor_20250728", name: "str_replace_based_edit_tool" }];
+ ```
+
+ ```csharp C#
+ var parameters = new MessageCreateParams
+ {
+ // Before: {"type": "text_editor_20250124", "name": "str_replace_editor"}
+ // After:
+ Tools = [new ToolTextEditor20250728()],
+ // ...
+ };
+ ```
+
+ ```go Go
+ params := anthropic.MessageNewParams{
+ // Before: {"type": "text_editor_20250124", "name": "str_replace_editor"}
+ // After:
+ Tools: []anthropic.ToolUnionParam{
+ {OfTextEditor20250728: &anthropic.ToolTextEditor20250728Param{}},
+ },
+ // ...
+ }
+ ```
+
+ ```java Java
+ MessageCreateParams params = MessageCreateParams.builder()
+ // Before: {"type": "text_editor_20250124", "name": "str_replace_editor"}
+ // After:
+ .addTool(ToolTextEditor20250728.builder().build())
+ // ...
+ .build();
+ ```
+
+ ```php PHP
+ $message = $client->messages->create(
+ // Before: ['type' => 'text_editor_20250124', 'name' => 'str_replace_editor']
+ // After:
+ tools: [new ToolTextEditor20250728()],
+ // ...
+ );
+ ```
+
+ ```ruby Ruby
+ # Before
+ legacy_tools = [{type: "text_editor_20250124", name: "str_replace_editor"}]
+
+ # After
+ tools = [{type: "text_editor_20250728", name: "str_replace_based_edit_tool"}]
+ ```
+
+
+ * **Text editor:** Use `text_editor_20250728` and `str_replace_based_edit_tool`. See [Text editor tool](https://platform.claude.com/docs/en/agents-and-tools/tool-use/text-editor-tool) documentation for details.
+ * **Code execution:** Upgrade to `code_execution_20260521`. See [Code execution tool](https://platform.claude.com/docs/en/agents-and-tools/tool-use/code-execution-tool#upgrade-to-latest-tool-version) documentation for migration instructions.
+
+3. **Handle the `refusal` stop reason**
+
+ Update your application to [handle `refusal` stop reasons](https://platform.claude.com/docs/en/test-and-evaluate/strengthen-guardrails/handle-streaming-refusals):
+
+
+ ```python Python
+ response = client.messages.create(...)
+
+ if response.stop_reason == "refusal":
+ # Handle refusal appropriately
+ pass
+ ```
+
+ ```typescript TypeScript
+ const response = await client.messages.create(/* ... */);
+
+ if (response.stop_reason === "refusal") {
+ // Handle refusal appropriately
+ }
+ ```
+
+ ```csharp C#
+ var response = await client.Messages.Create(...);
+
+ if (response.StopReason?.Value() == StopReason.Refusal)
+ {
+ // Handle refusal appropriately
+ }
+ ```
+
+ ```go Go
+ response, _ := client.Messages.New(ctx, params) // your existing request
+
+ if response.StopReason == anthropic.StopReasonRefusal {
+ // Handle refusal appropriately
+ }
+ ```
+
+ ```java Java
+ Message response = client.messages().create(...);
+
+ StopReason reason = response.stopReason().orElse(StopReason.END_TURN);
+ if (reason.equals(StopReason.REFUSAL)) {
+ // Handle refusal appropriately
+ }
+ ```
+
+ ```php PHP
+ $response = $client->messages->create(...);
+
+ if ($response->stopReason === 'refusal') {
+ // Handle refusal appropriately
+ }
+ ```
+
+ ```ruby Ruby
+ response = client.messages.create(...)
+
+ if response.stop_reason == :refusal
+ # Handle refusal appropriately
+ end
+ ```
+
+
+4. **Handle the `model_context_window_exceeded` stop reason**
+
+ Claude 4.5+ models return a `model_context_window_exceeded` stop reason when generation stops because of hitting the context window limit, rather than the requested `max_tokens` limit. Update your application to handle this new stop reason:
+
+
+ ```python Python
+ response = client.messages.create(...)
+
+ if response.stop_reason == "model_context_window_exceeded":
+ # Handle context window limit appropriately
+ pass
+ ```
+
+ ```typescript TypeScript
+ const response = await client.messages.create(/* ... */);
+
+ if (response.stop_reason === "model_context_window_exceeded") {
+ // Handle context window limit appropriately
+ }
+ ```
+
+ ```csharp C#
+ var response = await client.Messages.Create(...);
+
+ if (response.StopReason?.Raw() == "model_context_window_exceeded")
+ {
+ // Handle context window limit appropriately
+ }
+ ```
+
+ ```go Go
+ response, _ := client.Messages.New(ctx, params) // your existing request
+
+ if response.StopReason == "model_context_window_exceeded" {
+ // Handle context window limit appropriately
+ }
+ ```
+
+ ```java Java
+ Message response = client.messages().create(...);
+
+ StopReason reason = response.stopReason().orElse(StopReason.END_TURN);
+ if (reason.equals(StopReason.of("model_context_window_exceeded"))) {
+ // Handle context window limit appropriately
+ }
+ ```
+
+ ```php PHP
+ $response = $client->messages->create(...);
+
+ if ($response->stopReason === 'model_context_window_exceeded') {
+ // Handle context window limit appropriately
+ }
+ ```
+
+ ```ruby Ruby
+ response = client.messages.create(...)
+
+ if response.stop_reason == :model_context_window_exceeded
+ # Handle context window limit appropriately
+ end
+ ```
+
+
+5. **Verify tool parameter handling (trailing newlines)**
+
+ Claude 4.5+ models preserve trailing newlines in tool call string parameters that were previously stripped. If your tools rely on exact string matching against tool call parameters, verify your logic handles trailing newlines correctly.
+
+6. **Update your prompts for behavioral changes**
+
+ Claude 4+ models have a more concise, direct communication style and require explicit direction. Review [prompting best practices](https://platform.claude.com/docs/en/build-with-claude/prompt-engineering/claude-prompting-best-practices) for optimization guidance.
+
+#### Additional recommended changes
+
+* **Remove legacy beta headers:** Remove `token-efficient-tools-2025-02-19` and `output-128k-2025-02-19`. All Claude 4+ models have built-in token-efficient tool use and these headers have no effect.
+
+### Migration checklist (from Claude Opus 4.5 or earlier)
+
+* Update model ID to `claude-opus-5`
+* Apply all of the [breaking changes for migrating from Claude Opus 4.6](https://platform.claude.com/docs/en/models/opus-5/migration-guide#opus-46-breaking-changes) (extended thinking removed, thinking on by default, effort cap on disabling thinking, sampling parameters removed, thinking display omitted by default, updated tokenization)
+* **BREAKING:** Remove assistant message prefills (returns 400 error); use structured outputs or `output_config.format` instead
+* **BREAKING on Opus 4.7:** Replace `thinking: {type: "enabled", budget_tokens: N}` with `thinking: {type: "adaptive"}` plus the [effort parameter](https://platform.claude.com/docs/en/build-with-claude/effort) (returns 400 on Opus 4.7)
+* Verify tool call JSON parsing uses a standard JSON parser
+* Remove `effort-2025-11-24` beta header (the effort parameter does not require it)
+* Remove `fine-grained-tool-streaming-2025-05-14` beta header
+* Remove `interleaved-thinking-2025-05-14` beta header (adaptive thinking enables interleaved thinking automatically)
+* Migrate `output_format` to `output_config.format` (if applicable)
+* If migrating from Claude 4.1 or earlier: remove `temperature`, `top_p`, and `top_k` (non-default values return 400 on Opus 4.7)
+* If migrating from Claude 4.1 or earlier: update tool versions (`text_editor_20250728`, `code_execution_20260521`)
+* If migrating from Claude 4.1 or earlier: handle `refusal` stop reason
+* If migrating from Claude 4.1 or earlier: handle `model_context_window_exceeded` stop reason
+* If migrating from Claude 4.1 or earlier: verify tool string parameter handling for trailing newlines
+* If migrating from Claude 4.1 or earlier: remove legacy beta headers (`token-efficient-tools-2025-02-19`, `output-128k-2025-02-19`)
+* Review and update prompts following [prompting best practices](https://platform.claude.com/docs/en/build-with-claude/prompt-engineering/claude-prompting-best-practices)
+* Test in development environment before production deployment
+
+## Migrating to Claude Opus 5 from Claude Sonnet 5
+
+Claude Opus 5 and Claude Sonnet 5 share the same API surface: both run with [adaptive thinking](https://platform.claude.com/docs/en/build-with-claude/thinking) on by default, both default the [effort parameter](https://platform.claude.com/docs/en/build-with-claude/effort) to `high` on the Claude API and Claude Code, both serve a [1M token context window](https://platform.claude.com/docs/en/build-with-claude/context-windows) by default with [128k max output tokens](https://platform.claude.com/docs/en/models/overview), and neither supports [Priority Tier](https://platform.claude.com/docs/en/api/service-tiers#supported-models). Manual extended thinking and non-default sampling parameters return a 400 error on both models, as does assistant prefill.
+
+### Update your model name
+
+```python
+model = "claude-sonnet-5" # Before
+model = "claude-opus-5" # After
+```
+
+### What changed
+
+1. **Pricing:** Claude Opus 5 is priced at $5 per million input tokens and $25 per million output tokens. Claude Sonnet 5 is priced at $2/$10 per million input/output tokens. See [Claude pricing](https://platform.claude.com/docs/en/about-claude/pricing) for complete pricing.
+
+2. **Disabling thinking is capped at `high` effort:** On Claude Sonnet 5, `thinking: {type: "disabled"}` is accepted at any effort level. On Claude Opus 5, it is accepted only at an [effort](https://platform.claude.com/docs/en/build-with-claude/effort) level of `high` or below; a request that combines `thinking: {type: "disabled"}` with effort `xhigh` or `max` returns a 400 error, enforced on each request. Audit requests that disable thinking before you migrate.
+
+3. **Mid-conversation system messages:** Claude Opus 5 accepts `role: "system"` messages immediately after a user turn in the `messages` array (subject to [placement rules](https://platform.claude.com/docs/en/build-with-claude/mid-conversation-system-messages#limitations)). This feature is not available on Claude Sonnet 5. If you maintain code paths that rebuild the full message history to update instructions, you can simplify them and preserve [prompt cache](https://platform.claude.com/docs/en/build-with-claude/prompt-caching) hits on earlier turns.
+
+4. **Web fetch is not available:** The [web fetch](https://platform.claude.com/docs/en/agents-and-tools/tool-use/web-fetch-tool) tool is available on Claude Sonnet 5 but not on Claude Opus 5.
+
+### Migration checklist
+
+* Update the model name from `claude-sonnet-5` to `claude-opus-5`.
+* Audit requests that disable thinking: `thinking: {type: "disabled"}` with effort `xhigh` or `max` returns a 400 error on Claude Opus 5. Re-enable thinking or lower the effort to `high` or below.
+* If you use [web fetch](https://platform.claude.com/docs/en/agents-and-tools/tool-use/web-fetch-tool), plan an alternative: it is not available on Claude Opus 5.
+* Re-run [token counting](https://platform.claude.com/docs/en/build-with-claude/token-counting) against Claude Opus 5 rather than reusing counts measured against Claude Sonnet 5, and re-baseline cost and latency on your own workloads; per-token pricing differs.
diff --git a/content/en/models/opus-5/overview.md b/content/en/models/opus-5/overview.md
index fc32af055..208aa2369 100644
--- a/content/en/models/opus-5/overview.md
+++ b/content/en/models/opus-5/overview.md
@@ -12,7 +12,7 @@ Model ID: `claude-opus-5`
Context window: 1M tokens · Max output: 128K tokens · Input pricing: $5 / MTok · Output pricing: $25 / MTok
-[Announcement](https://www.anthropic.com/news/claude-opus-5) · [What’s new](https://platform.claude.com/docs/en/models/opus-5/whats-new-opus-5) · [Migration guide](https://platform.claude.com/docs/en/about-claude/models/migration-guide#migrating-to-claude-opus-5)
+[Announcement](https://www.anthropic.com/news/claude-opus-5) · [What’s new](https://platform.claude.com/docs/en/models/opus-5/whats-new-opus-5) · [Migration guide](https://platform.claude.com/docs/en/models/opus-5/migration-guide)
## Overview
diff --git a/content/en/models/opus-5/whats-new-opus-5.md b/content/en/models/opus-5/whats-new-opus-5.md
index 1ec863337..d83aadf12 100644
--- a/content/en/models/opus-5/whats-new-opus-5.md
+++ b/content/en/models/opus-5/whats-new-opus-5.md
@@ -316,7 +316,7 @@ To migrate from Claude Opus 4.8, update your model ID:
```
-Then review the two [behavior changes](https://platform.claude.com/docs/en/models/opus-5/whats-new-opus-5#behavior-changes): thinking is on by default, and disabling thinking with effort `xhigh` or `max` returns a 400 error. See the [migration guide](https://platform.claude.com/docs/en/about-claude/models/migration-guide#migrating-from-claude-opus-4-8-to-claude-opus-5) for step-by-step instructions.
+Then review the two [behavior changes](https://platform.claude.com/docs/en/models/opus-5/whats-new-opus-5#behavior-changes): thinking is on by default, and disabling thinking with effort `xhigh` or `max` returns a 400 error. See the [migration guide](https://platform.claude.com/docs/en/models/opus-5/migration-guide#migrating-from-claude-opus-4-8-to-claude-opus-5) for step-by-step instructions.
## Next steps
diff --git a/content/en/models/overview.md b/content/en/models/overview.md
index 6c206b402..52ed7cd56 100644
--- a/content/en/models/overview.md
+++ b/content/en/models/overview.md
@@ -75,7 +75,7 @@ Current Claude models excel in:
* **Performance:** Top-tier results in reasoning, coding, multilingual tasks, long-context handling, honesty, and image processing. See [Prompting best practices](https://platform.claude.com/docs/en/build-with-claude/prompt-engineering/claude-prompting-best-practices) for general and model-specific prompting guidance.
* **Engaging responses:** Claude models are ideal for applications that require rich, human-like interactions. If you prefer more concise responses, adjust your prompts to guide the model toward the desired output length. Refer to the [prompt engineering guides](https://platform.claude.com/docs/en/build-with-claude/prompt-engineering) for details.
-* **Output quality:** When migrating from a previous model generation, you may notice larger improvements in overall performance. If you're on Claude Opus 4.8 or earlier, see [Migrating to Claude Opus 5](https://platform.claude.com/docs/en/about-claude/models/migration-guide#migrating-from-claude-opus-4-8-to-claude-opus-5).
+* **Output quality:** When migrating from a previous model generation, you may notice larger improvements in overall performance. If you're on Claude Opus 4.8 or earlier, see [Migrating to Claude Opus 5](https://platform.claude.com/docs/en/models/opus-5/migration-guide#migrating-from-claude-opus-4-8-to-claude-opus-5).
## Get started with Claude
diff --git a/content/en/models/sonnet-4-5/overview.md b/content/en/models/sonnet-4-5/overview.md
index 848f35424..8ac8f50ee 100644
--- a/content/en/models/sonnet-4-5/overview.md
+++ b/content/en/models/sonnet-4-5/overview.md
@@ -6,7 +6,7 @@ description: "Claude Sonnet 4.5 reference: lifecycle status, model IDs on every
**Legacy.** Released September 29, 2025.
-Although Claude Sonnet 4.5 is still available, you should consider migrating to Claude Sonnet 5 for improved performance. [See Claude Sonnet 5](https://platform.claude.com/docs/en/models/sonnet-5/overview) · [Migrate to Claude Sonnet 5](https://platform.claude.com/docs/en/about-claude/models/migration-guide#migrating-from-sonnet-45)
+Although Claude Sonnet 4.5 is still available, you should consider migrating to Claude Sonnet 5 for improved performance. [See Claude Sonnet 5](https://platform.claude.com/docs/en/models/sonnet-5/overview) · [Migrate to Claude Sonnet 5](https://platform.claude.com/docs/en/models/sonnet-5/migration-guide#migrating-from-sonnet-45)
Model ID: `claude-sonnet-4-5-20250929`
@@ -80,7 +80,7 @@ Context window: 200K tokens · Max output: 64K tokens · Input pricing: $3 / MTo
## Resources
-
+
What changes when moving from Claude Sonnet 4.5 and earlier Sonnet models to Claude Sonnet 5.
diff --git a/content/en/models/sonnet-4-6/overview.md b/content/en/models/sonnet-4-6/overview.md
index 74fc478cf..6e88841d2 100644
--- a/content/en/models/sonnet-4-6/overview.md
+++ b/content/en/models/sonnet-4-6/overview.md
@@ -6,7 +6,7 @@ description: "Claude Sonnet 4.6 reference: lifecycle status, model IDs on every
**Legacy.** Released February 17, 2026.
-Although Claude Sonnet 4.6 is still available, you should consider migrating to Claude Sonnet 5 for improved performance. [See Claude Sonnet 5](https://platform.claude.com/docs/en/models/sonnet-5/overview) · [Migrate to Claude Sonnet 5](https://platform.claude.com/docs/en/about-claude/models/migration-guide#migrating-from-claude-sonnet-4-6-to-claude-sonnet-5)
+Although Claude Sonnet 4.6 is still available, you should consider migrating to Claude Sonnet 5 for improved performance. [See Claude Sonnet 5](https://platform.claude.com/docs/en/models/sonnet-5/overview) · [Migrate to Claude Sonnet 5](https://platform.claude.com/docs/en/models/sonnet-5/migration-guide#migrating-from-claude-sonnet-4-6-to-claude-sonnet-5)
Model ID: `claude-sonnet-4-6`
@@ -80,7 +80,7 @@ Context window: 1M tokens · Max output: 128K tokens · Input pricing: $3 / MTok
## Resources
-
+
What changes when moving from Claude Sonnet 4.6 to Claude Sonnet 5.
diff --git a/content/en/models/sonnet-5/migration-guide.md b/content/en/models/sonnet-5/migration-guide.md
new file mode 100644
index 000000000..5f3fba779
--- /dev/null
+++ b/content/en/models/sonnet-5/migration-guide.md
@@ -0,0 +1,662 @@
+---
+title: Migrating to Claude Sonnet 5
+url: https://platform.claude.com/docs/en/models/sonnet-5/migration-guide
+description: "Migrate to Claude Sonnet 5 from earlier Claude models: model IDs, breaking changes, and migration checklists."
+---
+
+
+ This guide covers migrating [Messages API](https://platform.claude.com/docs/en/build-with-claude/working-with-messages) code. If you use [Claude Managed Agents](https://platform.claude.com/docs/en/managed-agents/overview), no changes beyond updating the model name are required.
+
+
+
+ **Automate your migration with the Claude API skill.** In Claude Code, run `/claude-api migrate` to invoke the bundled [Claude API skill](https://platform.claude.com/docs/en/agents-and-tools/agent-skills/claude-api-skill#migrating-to-a-newer-claude-model). It works for any current Claude model as the target:
+
+ ```text wrap
+ /claude-api migrate this project to claude-opus-5
+ ```
+
+ The skill applies the model ID swap and, as needed, breaking parameter changes, prefill replacement, and effort calibration for your target model across your code base, then produces a checklist of items to verify manually. It asks you to confirm the migration scope (entire working directory, a subdirectory, or a specific file list) before editing any files. The skill also detects Amazon Bedrock and Claude Platform on AWS clients and adjusts model ID formats and feature changes for those platforms.
+
+
+Claude Sonnet 5 offers the best combination of speed and intelligence in the Claude model family. It builds on Claude Sonnet 4.6.
+
+Claude Sonnet 5 is a drop-in upgrade for Claude Sonnet 4.6, priced at $2/$10 USD per million input/output tokens; see [Pricing](https://platform.claude.com/docs/en/about-claude/pricing) for details. There are two breaking API changes for code already running on Claude Sonnet 4.6: manual extended thinking (`thinking: {type: "enabled", budget_tokens: N}`) and sampling parameters (`temperature`, `top_p`, `top_k`) set to non-default values are no longer accepted and return a 400 error. Use [adaptive thinking](https://platform.claude.com/docs/en/build-with-claude/thinking) with the [effort parameter](https://platform.claude.com/docs/en/build-with-claude/effort) instead. Claude Sonnet 5 supports the same set of features as Claude Sonnet 4.6, including the [1M token context window](https://platform.claude.com/docs/en/build-with-claude/context-windows), [adaptive thinking](https://platform.claude.com/docs/en/build-with-claude/thinking), [prompt caching](https://platform.claude.com/docs/en/build-with-claude/prompt-caching), [batch processing](https://platform.claude.com/docs/en/build-with-claude/batch-processing), the [Files API](https://platform.claude.com/docs/en/build-with-claude/files), [PDF support](https://platform.claude.com/docs/en/build-with-claude/pdf-support), [vision](https://platform.claude.com/docs/en/build-with-claude/vision), and the full set of server-side and client-side [tools](https://platform.claude.com/docs/en/agents-and-tools/tool-use/overview). On the Claude API, Claude Sonnet 5 also supports [computer use](https://platform.claude.com/docs/en/agents-and-tools/tool-use/computer-use-tool) as the stable `computer_toolset_20260801` toolset and the [browser use tool](https://platform.claude.com/docs/en/agents-and-tools/tool-use/browser-use-tool) for tasks inside webpages, neither of which Claude Sonnet 4.6 supports; existing integrations on the earlier `computer_20251124` version continue to work unchanged on both models. To upgrade an existing integration, see [Migrate from `computer_20251124`](https://platform.claude.com/docs/en/agents-and-tools/tool-use/computer-use-tool#migrate-from-computer-20251124). [Priority Tier](https://platform.claude.com/docs/en/api/service-tiers#supported-models) is not available on Claude Sonnet 5. Claude Sonnet 5 also uses a new tokenizer.
+
+## Migrating to Claude Sonnet 5 from Claude Sonnet 4.6
+
+
+ If your code is on Claude Sonnet 4.5 or earlier, also apply [Migrating to Claude Sonnet 5 from Claude Sonnet 4.5 and earlier Sonnet models](https://platform.claude.com/docs/en/models/sonnet-5/migration-guide#migrating-from-sonnet-45). Those steps include breaking changes (assistant message prefilling rejected, tool parameter JSON escaping differences) that this section alone does not cover.
+
+
+### Update your model name
+
+```python
+# Sonnet migration
+model = "claude-sonnet-4-6" # Before
+model = "claude-sonnet-5" # After
+```
+
+### What changed
+
+Items 4 and 5 in the following list are breaking changes. `max_tokens` remains a hard limit on total output (thinking plus response text), so revisit it for workloads that ran without thinking on Claude Sonnet 4.6.
+
+1. **New tokenizer:** Claude Sonnet 5 uses a new tokenizer. The same input text produces approximately 30% more tokens than on Claude Sonnet 4.6. The exact increase depends on the content. Requests, responses, and streaming events keep the same shape, and no code changes are required, but anything you measure or budget in tokens shifts: `usage` fields and [token counting](https://platform.claude.com/docs/en/build-with-claude/token-counting) results for the same text are higher, the 1M token context window holds less text, and a `max_tokens` limit tuned for Claude Sonnet 4.6 may truncate equivalent output. Per-token pricing is lower ($2/$10 versus Claude Sonnet 4.6's $3/$15 per million input/output tokens), but the cost of an equivalent request does not drop in direct proportion. Re-run token counting against Claude Sonnet 5 rather than reusing counts measured against earlier models.
+
+2. **128k max output tokens (unchanged):** Claude Sonnet 5 supports up to 128k output tokens, the same as Claude Sonnet 4.6. Existing `max_tokens` values remain valid. Account for the new tokenizer when sizing them.
+
+3. **Assistant message prefilling (unchanged):** Prefilling the assistant message returns a `400` error on Claude Sonnet 5, the same as on Claude Sonnet 4.6. If you removed prefill when migrating to Claude Sonnet 4.6, no further changes are needed. Use [structured outputs](https://platform.claude.com/docs/en/build-with-claude/structured-outputs), system prompt instructions, or `output_config.format` instead.
+
+4. **Adaptive thinking on by default:** On Claude Sonnet 4.6, requests without a `thinking` field run without thinking; on Claude Sonnet 5, the same requests run with [adaptive thinking](https://platform.claude.com/docs/en/build-with-claude/thinking). To turn thinking off, pass `thinking: {type: "disabled"}`. Manual extended thinking (`thinking: {type: "enabled", budget_tokens: N}`) is not supported and returns a 400 error. Use the [effort parameter](https://platform.claude.com/docs/en/build-with-claude/effort) (default `high`) to control thinking depth.
+
+
+
+
+ Adaptive thinking is on by default for Claude Sonnet 5. The `thinking` field is shown explicitly here to set `display: "summarized"`; if you omit `thinking`, Claude Sonnet 5 omits thinking content from the response by default. For per-model defaults, see [Configurations each model rejects](https://platform.claude.com/docs/en/build-with-claude/thinking-troubleshooting#rejected-configurations).
+
+
+
+ ```bash cURL
+ curl https://api.anthropic.com/v1/messages \
+ -H "x-api-key: $ANTHROPIC_API_KEY" \
+ -H "anthropic-version: 2023-06-01" \
+ -H "content-type: application/json" \
+ -d '{
+ "model": "claude-sonnet-5",
+ "max_tokens": 16000,
+ "thinking": {
+ "type": "adaptive",
+ "display": "summarized"
+ },
+ "output_config": {
+ "effort": "high"
+ },
+ "messages": [
+ {
+ "role": "user",
+ "content": "Are there an infinite number of prime numbers such that n mod 4 == 3?"
+ }
+ ]
+ }'
+ ```
+
+ ```bash CLI
+ ant messages create --transform content --format yaml <<'YAML'
+ model: claude-sonnet-5
+ max_tokens: 16000
+ thinking:
+ type: adaptive
+ display: summarized
+ output_config:
+ effort: high
+ messages:
+ - role: user
+ content: Are there an infinite number of prime numbers such that n mod 4 == 3?
+ YAML
+ ```
+
+ ```python Python
+ client = anthropic.Anthropic()
+
+ response = client.messages.create(
+ model="claude-sonnet-5",
+ max_tokens=16000,
+ thinking={"type": "adaptive", "display": "summarized"},
+ output_config={"effort": "high"},
+ messages=[
+ {
+ "role": "user",
+ "content": "Are there an infinite number of prime numbers such that n mod 4 == 3?",
+ }
+ ],
+ )
+
+ # The response contains summarized thinking blocks and text blocks
+ for block in response.content:
+ match block.type:
+ case "thinking":
+ print(f"\nThinking summary: {block.thinking}")
+ case "text":
+ print(f"\nResponse: {block.text}")
+ ```
+
+ ```typescript TypeScript
+ const client = new Anthropic();
+
+ const response = await client.messages.create({
+ model: "claude-sonnet-5",
+ max_tokens: 16000,
+ thinking: {
+ type: "adaptive",
+ display: "summarized"
+ },
+ output_config: {
+ effort: "high"
+ },
+ messages: [
+ {
+ role: "user",
+ content: "Are there an infinite number of prime numbers such that n mod 4 == 3?"
+ }
+ ]
+ });
+
+ // 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}`);
+ }
+ }
+ ```
+
+ ```csharp C#
+ AnthropicClient client = new();
+
+ var response = await client.Messages.Create(new()
+ {
+ Model = Model.ClaudeSonnet5,
+ MaxTokens = 16000,
+ Thinking = new ThinkingConfigAdaptive { Display = Display.Summarized },
+ OutputConfig = new OutputConfig { Effort = Effort.High },
+ Messages =
+ [
+ new()
+ {
+ Role = Role.User,
+ Content = "Are there an infinite number of prime numbers such that n mod 4 == 3?",
+ },
+ ],
+ });
+
+ // The response contains summarized thinking blocks and text blocks
+ foreach (var block in response.Content)
+ {
+ if (block.TryPickThinking(out var thinking))
+ {
+ Console.WriteLine($"\nThinking summary: {thinking.Thinking}");
+ }
+ else if (block.TryPickText(out var text))
+ {
+ Console.WriteLine($"\nResponse: {text.Text}");
+ }
+ }
+ ```
+
+ ```go Go
+ client := anthropic.NewClient()
+
+ response, err := client.Messages.New(context.Background(), anthropic.MessageNewParams{
+ Model: anthropic.ModelClaudeSonnet5,
+ MaxTokens: 16000,
+ Thinking: anthropic.ThinkingConfigParamUnion{
+ OfAdaptive: &anthropic.ThinkingConfigAdaptiveParam{
+ Display: anthropic.ThinkingConfigAdaptiveDisplaySummarized,
+ },
+ },
+ OutputConfig: anthropic.OutputConfigParam{
+ Effort: anthropic.OutputConfigEffortHigh,
+ },
+ Messages: []anthropic.MessageParam{
+ anthropic.NewUserMessage(anthropic.NewTextBlock("Are there an infinite number of prime numbers such that n mod 4 == 3?")),
+ },
+ })
+ if err != nil {
+ log.Fatal(err)
+ }
+
+ // The response contains summarized thinking blocks and text blocks
+ for _, block := range response.Content {
+ switch block := block.AsAny().(type) {
+ case anthropic.ThinkingBlock:
+ fmt.Printf("\nThinking summary: %s", block.Thinking)
+ case anthropic.TextBlock:
+ fmt.Printf("\nResponse: %s", block.Text)
+ }
+ }
+ ```
+
+ ```java Java
+ import com.anthropic.client.okhttp.AnthropicOkHttpClient;
+ import com.anthropic.models.messages.MessageCreateParams;
+ import com.anthropic.models.messages.Model;
+ import com.anthropic.models.messages.OutputConfig;
+ import com.anthropic.models.messages.ThinkingConfigAdaptive;
+
+ void main() {
+ var client = AnthropicOkHttpClient.fromEnv();
+
+ var params = MessageCreateParams.builder()
+ .model(Model.CLAUDE_SONNET_5)
+ .maxTokens(16_000)
+ .thinking(ThinkingConfigAdaptive.builder()
+ .display(ThinkingConfigAdaptive.Display.SUMMARIZED)
+ .build())
+ .outputConfig(OutputConfig.builder()
+ .effort(OutputConfig.Effort.HIGH)
+ .build())
+ .addUserMessage("Are there an infinite number of prime numbers such that n mod 4 == 3?")
+ .build();
+
+ var response = client.messages().create(params);
+
+ // The response contains summarized thinking blocks and text blocks
+ for (var block : response.content()) {
+ block.thinking().ifPresent(thinkingBlock ->
+ IO.println("\nThinking summary: " + thinkingBlock.thinking())
+ );
+ block.text().ifPresent(textBlock ->
+ IO.println("\nResponse: " + textBlock.text())
+ );
+ }
+ }
+ ```
+
+ ```php PHP
+ $client = new Client();
+
+ $response = $client->messages->create(
+ model: 'claude-sonnet-5',
+ maxTokens: 16000,
+ thinking: ['type' => 'adaptive', 'display' => 'summarized'],
+ outputConfig: ['effort' => 'high'],
+ messages: [
+ [
+ 'role' => 'user',
+ 'content' => 'Are there an infinite number of prime numbers such that n mod 4 == 3?',
+ ],
+ ],
+ );
+
+ // 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}",
+ default => '',
+ };
+ }
+ ```
+
+ ```ruby Ruby
+ client = Anthropic::Client.new
+
+ response = client.messages.create(
+ model: "claude-sonnet-5",
+ max_tokens: 16_000,
+ thinking: {type: :adaptive, display: :summarized},
+ output_config: {effort: :high},
+ messages: [
+ {
+ role: :user,
+ content: "Are there an infinite number of prime numbers such that n mod 4 == 3?"
+ }
+ ]
+ )
+
+ # 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
+ end
+ end
+ ```
+
+
+
+
+
+ ```bash cURL
+ curl https://api.anthropic.com/v1/messages \
+ -H "x-api-key: $ANTHROPIC_API_KEY" \
+ -H "anthropic-version: 2023-06-01" \
+ -H "content-type: application/json" \
+ -d '{
+ "model": "claude-sonnet-4-6",
+ "max_tokens": 16000,
+ "thinking": {
+ "type": "enabled",
+ "budget_tokens": 10000
+ },
+ "messages": [
+ {
+ "role": "user",
+ "content": "Are there an infinite number of prime numbers such that n mod 4 == 3?"
+ }
+ ]
+ }'
+ ```
+
+ ```bash CLI
+ ant messages create \
+ --transform content --format yaml <<'YAML'
+ model: claude-sonnet-4-6
+ max_tokens: 16000
+ thinking:
+ type: enabled
+ budget_tokens: 10000
+ messages:
+ - role: user
+ content: Are there an infinite number of prime numbers such that n mod 4 == 3?
+ YAML
+ ```
+
+ ```python Python
+ client = anthropic.Anthropic()
+
+ response = client.messages.create(
+ model="claude-sonnet-4-6",
+ max_tokens=16000,
+ thinking={"type": "enabled", "budget_tokens": 10000},
+ messages=[
+ {
+ "role": "user",
+ "content": "Are there an infinite number of prime numbers such that n mod 4 == 3?",
+ }
+ ],
+ )
+
+ # The response contains summarized thinking blocks and text blocks
+ for block in response.content:
+ match block.type:
+ case "thinking":
+ print(f"\nThinking summary: {block.thinking}")
+ case "text":
+ print(f"\nResponse: {block.text}")
+ ```
+
+ ```typescript TypeScript
+ const client = new Anthropic();
+
+ const response = await client.messages.create({
+ model: "claude-sonnet-4-6",
+ max_tokens: 16000,
+ thinking: {
+ type: "enabled",
+ budget_tokens: 10000,
+ },
+ messages: [
+ {
+ role: "user",
+ content: "Are there an infinite number of prime numbers such that n mod 4 == 3?",
+ },
+ ],
+ });
+
+ // 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}`);
+ }
+ }
+ ```
+
+ ```csharp C#
+ AnthropicClient client = new();
+
+ var response = await client.Messages.Create(new()
+ {
+ Model = Model.ClaudeSonnet4_6,
+ MaxTokens = 16000,
+ Thinking = new ThinkingConfigEnabled(budgetTokens: 10000),
+ Messages =
+ [
+ new()
+ {
+ Role = Role.User,
+ Content = "Are there an infinite number of prime numbers such that n mod 4 == 3?",
+ },
+ ],
+ });
+
+ // The response contains summarized thinking blocks and text blocks
+ foreach (var block in response.Content)
+ {
+ if (block.TryPickThinking(out var thinking))
+ {
+ Console.WriteLine($"\nThinking summary: {thinking.Thinking}");
+ }
+ else if (block.TryPickText(out var text))
+ {
+ Console.WriteLine($"\nResponse: {text.Text}");
+ }
+ }
+ ```
+
+ ```go Go
+ client := anthropic.NewClient()
+
+ response, err := client.Messages.New(context.Background(), anthropic.MessageNewParams{
+ Model: anthropic.ModelClaudeSonnet4_6,
+ MaxTokens: 16000,
+ Thinking: anthropic.ThinkingConfigParamOfEnabled(10000),
+ Messages: []anthropic.MessageParam{
+ anthropic.NewUserMessage(anthropic.NewTextBlock("Are there an infinite number of prime numbers such that n mod 4 == 3?")),
+ },
+ })
+ if err != nil {
+ log.Fatal(err)
+ }
+
+ // The response contains summarized thinking blocks and text blocks
+ for _, block := range response.Content {
+ switch block := block.AsAny().(type) {
+ case anthropic.ThinkingBlock:
+ fmt.Printf("\nThinking summary: %s", block.Thinking)
+ case anthropic.TextBlock:
+ fmt.Printf("\nResponse: %s", block.Text)
+ }
+ }
+ ```
+
+ ```java Java
+ import com.anthropic.client.okhttp.AnthropicOkHttpClient;
+ import com.anthropic.models.messages.MessageCreateParams;
+ import com.anthropic.models.messages.Model;
+
+ void main() {
+ var client = AnthropicOkHttpClient.fromEnv();
+
+ var params = MessageCreateParams.builder()
+ .model(Model.CLAUDE_SONNET_4_6)
+ .maxTokens(16_000)
+ .enabledThinking(10_000)
+ .addUserMessage("Are there an infinite number of prime numbers such that n mod 4 == 3?")
+ .build();
+
+ var response = client.messages().create(params);
+
+ // The response contains summarized thinking blocks and text blocks
+ for (var block : response.content()) {
+ block.thinking().ifPresent(thinkingBlock ->
+ IO.println("\nThinking summary: " + thinkingBlock.thinking())
+ );
+ block.text().ifPresent(textBlock ->
+ IO.println("\nResponse: " + textBlock.text())
+ );
+ }
+ }
+ ```
+
+ ```php PHP
+ $client = new Client();
+
+ $response = $client->messages->create(
+ model: 'claude-sonnet-4-6',
+ maxTokens: 16000,
+ thinking: ['type' => 'enabled', 'budget_tokens' => 10000],
+ messages: [
+ [
+ 'role' => 'user',
+ 'content' => 'Are there an infinite number of prime numbers such that n mod 4 == 3?',
+ ],
+ ],
+ );
+
+ // 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}",
+ default => '',
+ };
+ }
+ ```
+
+ ```ruby Ruby
+ client = Anthropic::Client.new
+
+ response = client.messages.create(
+ model: "claude-sonnet-4-6",
+ max_tokens: 16_000,
+ thinking: {
+ type: :enabled,
+ budget_tokens: 10_000
+ },
+ messages: [
+ {
+ role: :user,
+ content: "Are there an infinite number of prime numbers such that n mod 4 == 3?"
+ }
+ ]
+ )
+
+ # 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
+ end
+ end
+ ```
+
+
+
+
+5. **Sampling parameters removed:** Sampling parameters (`temperature`, `top_p`, `top_k`) set to a non-default value are not accepted and return a 400 error.
+
+6. **Cybersecurity safeguards:** Claude Sonnet 5 is the first Sonnet-tier model with real-time cybersecurity safeguards. Requests that involve prohibited or high-risk cybersecurity topics may be refused. Refusals return as a successful HTTP 200 response with `stop_reason: "refusal"`, not an error. See [Real-time cyber safeguards on Claude Opus and Sonnet](https://support.claude.com/en/articles/14604842-real-time-cyber-safeguards-on-claude-opus-and-sonnet) for what the safeguards block and how legitimate security work can apply to the Cyber Verification Program.
+
+### Migration checklist
+
+* Update model name from `claude-sonnet-4-6` to `claude-sonnet-5`.
+* Re-run [token counting](https://platform.claude.com/docs/en/build-with-claude/token-counting) against Claude Sonnet 5. The new tokenizer produces approximately 30% more tokens for the same text, which can change per-request cost even though per-token pricing is lower. The exact increase depends on the content and workload shape.
+* Revisit `max_tokens` limits sized close to your expected output length, and raise them up to the 128k maximum (unchanged from Claude Sonnet 4.6) where useful.
+* Remove `thinking: {type: "enabled", budget_tokens: N}` configuration (returns a 400 error). Adaptive thinking is on by default; pass `{type: "disabled"}` to turn it off, or use the [effort parameter](https://platform.claude.com/docs/en/build-with-claude/effort) to control depth.
+* Remove `temperature`, `top_p`, and `top_k` parameters set to non-default values (they return a 400 error on Claude Sonnet 5).
+* Add handling for `stop_reason: "refusal"` if your workload may touch cybersecurity topics.
+* Re-baseline cost on your typical workload before production deployment.
+* Review `max_tokens` for workloads that previously ran without thinking.
+
+## Migrating to Claude Sonnet 5 from Claude Sonnet 4.5 and earlier Sonnet models
+
+If you are migrating from Claude Sonnet 4.5 or an earlier Sonnet model directly to Claude Sonnet 5, apply the [Migrating to Claude Sonnet 5 from Claude Sonnet 4.6](https://platform.claude.com/docs/en/models/sonnet-5/migration-guide#migrating-from-claude-sonnet-4-6-to-claude-sonnet-5) changes plus the changes in this section.
+
+
+ Claude Sonnet 5 defaults to an effort level of `high`, in contrast to Sonnet 4.5 which had no effort parameter. Consider adjusting the [effort parameter](https://platform.claude.com/docs/en/build-with-claude/effort) as you migrate. If not explicitly set, you may experience higher latency with the default effort level.
+
+
+### Breaking changes
+
+#### When migrating from Sonnet 4.5
+
+1. **Prefilling assistant messages is no longer supported**
+
+
+ This is a breaking change when migrating from Sonnet 4.5 or earlier.
+
+
+ Prefilling assistant messages returns a `400` error on Claude Sonnet 4.6 and later models, including Claude Sonnet 5. Use [structured outputs](https://platform.claude.com/docs/en/build-with-claude/structured-outputs), system prompt instructions, or `output_config.format` instead.
+
+ **Common prefill use cases and migrations:**
+
+ * **Controlling output formatting** (forcing JSON/YAML output): Use [structured outputs](https://platform.claude.com/docs/en/build-with-claude/structured-outputs) or tools with enum fields for classification tasks.
+
+ * **Eliminating preambles** (removing "Here is..." phrases): Add direct instructions in the system prompt: "Respond directly without preamble. Do not start with phrases like 'Here is...', 'Based on...', etc."
+
+ * **Avoiding bad refusals:** Claude is much better at appropriate refusals now. Clear prompting in the user message without prefill should be sufficient.
+
+ * **Continuations** (resuming interrupted responses): Move the continuation to the user message: "Your previous response was interrupted and ended with `[previous_response]`. Continue from where you left off."
+
+ * **Context hydration / role consistency** (refreshing context in long conversations): Inject what were previously prefilled-assistant reminders into the user turn instead.
+
+2. **Tool parameter JSON escaping may differ**
+
+
+ This is a breaking change when migrating from Sonnet 4.5 or earlier.
+
+
+ JSON string escaping in tool parameters may differ from previous models. Standard JSON parsers handle this automatically, but custom string-based parsing may need updates.
+
+**Extended thinking changes:** `budget_tokens` configurations from Claude Sonnet 4.5 (`thinking: {type: "enabled", budget_tokens: N}`) are not supported on Claude Sonnet 5 and return a 400 error. Adaptive thinking is on by default, so most workloads need no `thinking` configuration at all; use the [effort parameter](https://platform.claude.com/docs/en/build-with-claude/effort) to control thinking depth. If you ran Claude Sonnet 4.5 without extended thinking, pass `thinking: {type: "disabled"}` to preserve that behavior.
+
+#### When migrating from Claude 3.x
+
+3. **Remove sampling parameters**
+
+
+ This is a breaking change when migrating from Claude 3.x models.
+
+
+ Sampling parameters (`temperature`, `top_p`, `top_k`) set to a non-default value return a 400 error on Claude Sonnet 5. Remove them from requests, and use prompting to guide the model's behavior instead.
+
+4. **Update tool versions**
+
+
+ This is a breaking change when migrating from Claude 3.x models.
+
+
+ Update to the latest tool versions (`text_editor_20250728`, `code_execution_20260521`). Remove any code using the `undo_edit` command.
+
+5. **Handle the `refusal` stop reason**
+
+ Update your application to [handle `refusal` stop reasons](https://platform.claude.com/docs/en/test-and-evaluate/strengthen-guardrails/handle-streaming-refusals).
+
+6. **Update your prompts for behavioral changes**
+
+ Claude 4 models have a more concise, direct communication style. Review [prompting best practices](https://platform.claude.com/docs/en/build-with-claude/prompt-engineering/claude-prompting-best-practices) for optimization guidance.
+
+## Migrating to Claude Sonnet 5 from Claude Haiku 4.5
+
+Claude Haiku 4.5 and Claude Sonnet 5 differ more at the API level than adjacent models within one class: Claude Haiku 4.5 uses manual [extended thinking](https://platform.claude.com/docs/en/build-with-claude/extended-thinking) (off by default), a 200k token context window, and up to 64k output tokens, while Claude Sonnet 5 runs with [adaptive thinking](https://platform.claude.com/docs/en/build-with-claude/thinking) on by default, serves a [1M token context window](https://platform.claude.com/docs/en/build-with-claude/context-windows) by default, and supports up to [128k output tokens](https://platform.claude.com/docs/en/models/overview).
+
+### Update your model name
+
+```python
+model = "claude-haiku-4-5-20251001" # Before
+model = "claude-sonnet-5" # After
+```
+
+### What changed
+
+1. **Thinking configuration:** Claude Haiku 4.5 supports manual extended thinking (`thinking: {type: "enabled", budget_tokens: N}`) and rejects `thinking: {type: "adaptive"}`. On Claude Sonnet 5, the support is reversed: adaptive thinking is on by default, and manual extended thinking returns a 400 error. Remove `thinking: {type: "enabled", budget_tokens: N}` configurations and rely on the default, or pass `thinking: {type: "disabled"}` to turn thinking off. `budget_tokens` has no direct replacement; use the [effort parameter](https://platform.claude.com/docs/en/build-with-claude/effort) to control thinking depth. Effort is not available on Claude Haiku 4.5 and defaults to `high` on Claude Sonnet 5.
+
+2. **Sampling parameters removed:** `temperature` and `top_p` work on Claude Haiku 4.5 (one at a time, not both). On Claude Sonnet 5, setting `temperature`, `top_p`, or `top_k` to a non-default value returns a 400 error. Remove these parameters and use prompting to guide the model's behavior.
+
+3. **Assistant prefill removed:** Prefilling the assistant message works on Claude Haiku 4.5 but returns a 400 error on Claude Sonnet 5. Use [structured outputs](https://platform.claude.com/docs/en/build-with-claude/structured-outputs), system prompt instructions, or `output_config.format` instead.
+
+4. **Larger context window and output:** Claude Sonnet 5 serves a 1M token context window by default, up from 200k tokens on Claude Haiku 4.5, and supports up to 128k output tokens, up from 64k. Claude Sonnet 5 also uses a different tokenizer, so re-run [token counting](https://platform.claude.com/docs/en/build-with-claude/token-counting) rather than reusing counts measured against Claude Haiku 4.5.
+
+5. **Pricing:** Claude Haiku 4.5 is priced at $1/$5 per million input/output tokens. Claude Sonnet 5 is priced at $2/$10 per million input/output tokens. See [Claude pricing](https://platform.claude.com/docs/en/about-claude/pricing).
+
+6. **Cybersecurity safeguards:** Claude Sonnet 5 has real-time cybersecurity safeguards. Requests that involve prohibited or high-risk cybersecurity topics may be refused, returned as a successful HTTP 200 response with `stop_reason: "refusal"`. See [Real-time cyber safeguards on Claude Opus and Sonnet](https://support.claude.com/en/articles/14604842-real-time-cyber-safeguards-on-claude-opus-and-sonnet) for what the safeguards block and how legitimate security work can apply to the Cyber Verification Program.
+
+### Migration checklist
+
+* Update the model name from `claude-haiku-4-5-20251001` (or the `claude-haiku-4-5` alias) to `claude-sonnet-5`.
+* Remove `thinking: {type: "enabled", budget_tokens: N}` configuration (returns a 400 error). Adaptive thinking is on by default; pass `thinking: {type: "disabled"}` to preserve no-thinking behavior, and revisit `max_tokens` for workloads that ran without thinking.
+* Use the [effort parameter](https://platform.claude.com/docs/en/build-with-claude/effort) (default `high`) to control thinking depth and token spend; it is not available on Claude Haiku 4.5, so no existing setting carries over.
+* Remove `temperature` and `top_p` settings (non-default values return a 400 error on Claude Sonnet 5).
+* Remove any assistant-message prefills (they return a 400 error on Claude Sonnet 5).
+* Re-run [token counting](https://platform.claude.com/docs/en/build-with-claude/token-counting) against Claude Sonnet 5, and revisit `max_tokens` limits, which you can raise up to the 128k maximum.
+* Add handling for `stop_reason: "refusal"` if your workload may touch cybersecurity topics.
+* Re-baseline cost on your typical workload before production deployment; per-token pricing differs.
diff --git a/content/en/models/sonnet-5/overview.md b/content/en/models/sonnet-5/overview.md
index 348e516cd..578f1843e 100644
--- a/content/en/models/sonnet-5/overview.md
+++ b/content/en/models/sonnet-5/overview.md
@@ -12,7 +12,7 @@ Model ID: `claude-sonnet-5`
Context window: 1M tokens · Max output: 128K tokens · Input pricing: $2 / MTok · Output pricing: $10 / MTok
-[Announcement](https://www.anthropic.com/news/claude-sonnet-5) · [What’s new](https://platform.claude.com/docs/en/models/sonnet-5/whats-new-sonnet-5) · [Migration guide](https://platform.claude.com/docs/en/about-claude/models/migration-guide#migrating-to-claude-sonnet-5)
+[Announcement](https://www.anthropic.com/news/claude-sonnet-5) · [What’s new](https://platform.claude.com/docs/en/models/sonnet-5/whats-new-sonnet-5) · [Migration guide](https://platform.claude.com/docs/en/models/sonnet-5/migration-guide)
## Overview
diff --git a/content/en/models/sonnet-5/whats-new-sonnet-5.md b/content/en/models/sonnet-5/whats-new-sonnet-5.md
index 458908990..d91067bcf 100644
--- a/content/en/models/sonnet-5/whats-new-sonnet-5.md
+++ b/content/en/models/sonnet-5/whats-new-sonnet-5.md
@@ -189,7 +189,7 @@ Then review the following:
2. **Extended thinking:** if you still set `budget_tokens`, migrate to [adaptive thinking](https://platform.claude.com/docs/en/build-with-claude/thinking). Manual extended thinking (`thinking: {type: "enabled"}`) is not supported and returns a 400 error.
3. **Sampling parameters:** requests that set sampling parameters (`temperature`, `top_p`, `top_k`) to a non-default value return a 400 error; remove them when migrating. Tool definitions and response shapes are unchanged, and assistant message prefilling was already unsupported on Claude Sonnet 4.6.
-See the [Claude Sonnet 5 section of the migration guide](https://platform.claude.com/docs/en/about-claude/models/migration-guide#migrating-from-claude-sonnet-4-6-to-claude-sonnet-5) for details.
+See [Migrating to Claude Sonnet 5 from Claude Sonnet 4.6](https://platform.claude.com/docs/en/models/sonnet-5/migration-guide#migrating-from-claude-sonnet-4-6-to-claude-sonnet-5) for details.
## Next steps
diff --git a/content/en/release-notes/overview.md b/content/en/release-notes/overview.md
index c0bb20730..33ba4268d 100644
--- a/content/en/release-notes/overview.md
+++ b/content/en/release-notes/overview.md
@@ -68,7 +68,7 @@ The Claude Platform release notes list changes to the Claude API, the client SDK
* [Effort](https://platform.claude.com/docs/en/build-with-claude/effort) is the primary control for steering Claude Opus 5: the model supports the full ladder (`low`, `medium`, `high`, `xhigh`, `max`), with `max` for capability-critical work.
* Mid-conversation tool changes are now in beta on Claude Fable 5, Claude Mythos 5, Claude Opus 4.8, and Claude Opus 5: add or remove tools between turns of a conversation while preserving the prompt cache. Include the `mid-conversation-tool-changes-2026-07-01` beta header in your requests.
* The `fallbacks` parameter now supports a `"default"` mode, which applies Anthropic's recommended fallback models by refusal category. Server-side fallback is in beta, and the `"default"` mode requires the `server-side-fallback-2026-07-01` beta header. See [Refusals and fallback](https://platform.claude.com/docs/en/build-with-claude/refusals-and-fallback).
-* We've removed [fast mode](https://platform.claude.com/docs/en/build-with-claude/fast-mode) for Claude Opus 4.7. Requests to `claude-opus-4-7` with `speed: "fast"` now return an error; unlike Claude Opus 4.6, they do not fall back to standard speed. Claude Opus 4.7 itself remains available at standard speed. To continue using fast mode, migrate to [Claude Opus 5](https://platform.claude.com/docs/en/about-claude/models/migration-guide#migrating-from-claude-opus-47) or Claude Opus 4.8. Read more in [Fast mode](https://platform.claude.com/docs/en/build-with-claude/fast-mode#supported-models).
+* We've removed [fast mode](https://platform.claude.com/docs/en/build-with-claude/fast-mode) for Claude Opus 4.7. Requests to `claude-opus-4-7` with `speed: "fast"` now return an error; unlike Claude Opus 4.6, they do not fall back to standard speed. Claude Opus 4.7 itself remains available at standard speed. To continue using fast mode, migrate to [Claude Opus 5](https://platform.claude.com/docs/en/models/opus-5/migration-guide#migrating-from-claude-opus-47) or Claude Opus 4.8. Read more in [Fast mode](https://platform.claude.com/docs/en/build-with-claude/fast-mode#supported-models).
### July 22, 2026
@@ -157,7 +157,7 @@ The Claude Platform release notes list changes to the Claude API, the client SDK
* Claude Fable 5 and Claude Mythos 5 use the tokenizer introduced with Claude Opus 4.7. Compared to models before Claude Opus 4.7, the same text produces roughly 30% more tokens. The exact increase depends on the content and workload shape. Use the [token counting API](https://platform.claude.com/docs/en/build-with-claude/token-counting#token-counts-on-claude-fable-5) with `model: "claude-fable-5"` to measure your prompts under the new tokenizer.
* Claude Fable 5 runs safety classifiers on requests and during response generation. When a classifier declines a request, the Messages API returns `stop_reason: "refusal"`. You are not billed for a request refused before any output is generated. An opt-in `fallbacks` parameter (in beta on the Claude API and Claude Platform on AWS; not supported on the Message Batches API) re-runs refused requests on another model, billed at the fallback model's rates. See [Handling stop reasons](https://platform.claude.com/docs/en/build-with-claude/handling-stop-reasons).
* The [`stop_details.category`](https://platform.claude.com/docs/en/build-with-claude/refusals-and-fallback#refusal-response) field on refusal responses now includes `"reasoning_extraction"` on Claude Fable 5, returned when a request is blocked under Anthropic's Terms of Service restrictions on reverse engineering or duplicating model outputs. The existing `"cyber"` and `"bio"` categories are unchanged. No beta header is required.
-* On Claude Fable 5 and Claude Mythos 5, [adaptive thinking](https://platform.claude.com/docs/en/build-with-claude/thinking) is the only thinking mode: `thinking: {"type": "disabled"}` is not supported, and manual extended thinking budgets and assistant prefill are not supported (both return a 400 error). See [Migrating from Claude Mythos Preview to Claude Mythos 5](https://platform.claude.com/docs/en/about-claude/models/migration-guide#migrating-from-claude-mythos-preview).
+* On Claude Fable 5 and Claude Mythos 5, [adaptive thinking](https://platform.claude.com/docs/en/build-with-claude/thinking) is the only thinking mode: `thinking: {"type": "disabled"}` is not supported, and manual extended thinking budgets and assistant prefill are not supported (both return a 400 error). See [Migrating from Claude Mythos Preview to Claude Mythos 5](https://platform.claude.com/docs/en/models/fable-5/migration-guide#migrating-from-claude-mythos-preview).
* On Claude Fable 5 and Claude Mythos 5, `thinking.display` defaults to `"omitted"`, the same as Claude Opus 4.8, Claude Opus 4.7, and Claude Mythos Preview; set `display: "summarized"` to receive readable thinking summaries. The raw chain of thought is never returned; pass thinking blocks back unchanged in multi-turn conversations on the same model. See [Thinking output on Claude Fable 5 and Claude Mythos 5](https://platform.claude.com/docs/en/build-with-claude/thinking#thinking-output-on-claude-fable-5-and-claude-mythos-5).
* Claude Fable 5 requires 30-day data retention and is not available under zero data retention. See [Model-specific data retention requirements](https://platform.claude.com/docs/en/manage-claude/api-and-data-retention#model-specific-data-retention-requirements).
* Claude Managed Agents now supports [scheduled deployments](https://platform.claude.com/docs/en/managed-agents/scheduled-deployments), letting you run sessions on a cron schedule without managing your own scheduler.
diff --git a/content/github/claude-quickstarts/managed-agents/chat-sdk/README.md b/content/github/claude-quickstarts/managed-agents/chat-sdk/README.md
index 3dae523a2..55b38fb32 100644
--- a/content/github/claude-quickstarts/managed-agents/chat-sdk/README.md
+++ b/content/github/claude-quickstarts/managed-agents/chat-sdk/README.md
@@ -6,7 +6,7 @@ The Chat SDK is a universal chat layer: one type-safe handler, 15+ adapters, fro
The server stores nothing: the `useChat` conversation ID is a Managed Agents session ID. The sidebar is the sessions API. Transcripts replay from the session's event log. Compaction and prompt caching happen inside the session.
-Swapping a few lines in `src/bot.ts` moves the analyst to another surface: set up the platform's app following the [adapter docs](https://chat-sdk.dev/adapters), then see the porting notes (`skill.md`, "Two held streams, no webhooks"). Design notes live in [`CLAUDE.md`](./CLAUDE.md) and [`skill.md`](./skill.md). Vercel's [knowledge base guide](https://vercel.com/kb/guide/claude-managed-agents-chat-sdk) covers the same integration from the Chat SDK side.
+Swapping a few lines in `src/bot.ts` moves the analyst to another surface: set up the platform's app following the [adapter docs](https://chat-sdk.dev/adapters), then see the porting notes (`skill.md`, "Two held streams, no webhooks"). That port is already done for Slack as a deployable template ("The same analyst in Slack", below). Design notes live in [`CLAUDE.md`](./CLAUDE.md) and [`skill.md`](./skill.md).
## Quickstart
@@ -54,7 +54,23 @@ The agent's entire identity (name, model, and system prompt) lives in `setup/age
- The demo `getUser` in `src/bot.ts` trusts every caller, which is why the default bind is loopback. Replace it with your real session lookup before setting `HOST`, and keep platform-level access protection on any deploy that ships before it. See "getUser is the security boundary" in `skill.md`.
- `npm start` with `HOST=0.0.0.0`. One long-lived process, streams held as long as a turn needs.
-- The `/api` routes are one platform-neutral [Hono](https://hono.dev/) app (`src/app.ts`) that drops into any host that can run a fetch handler: mount `deployedApi()` and serve the page statically. Caveats live in `skill.md`, "Deploying off the Node server".
+- The `/api` routes are one platform-neutral [Hono](https://hono.dev/) app (`src/app.ts`), so this runs anywhere that can host a Hono app: mount `deployedApi()` and serve the page statically. The binding constraint is duration rather than runtime, since `/api/chat` stays open for the whole turn and serverless caps are often seconds. The [Vercel Services guide](https://vercel.com/kb/guide/claude-managed-agents-vercel-services) works that through end to end: the page and the API as two [services](https://vercel.com/docs/services) in one project, `vercel.json` rewrites for `/api/*`, the function max duration a held response needs, and the `server.ts` and Vite config this repo does not ship.
+
+## The same analyst in Slack
+
+[`vercel-labs/cma-chat-sdk`](https://github.com/vercel-labs/cma-chat-sdk) is this analyst on Slack.
+
+[](https://vercel.fyi/cma-and-chat-sdk-template)
+
+The deploy flow helps you create a Slack app and Redis store, then asks for `ANTHROPIC_API_KEY`, `CLAUDE_AGENT_ID`, and `CLAUDE_ENVIRONMENT_ID`. Get them from the [Claude Console](https://platform.claude.com/) or run the template's setup script for the last two.
+
+Clone the repository you created from the template, then ask Claude to help you customize it:
+
+```bash
+git clone https://github.com//claude-research-analyst
+cd claude-research-analyst
+claude "retune the analyst's model and system prompt, then publish the new version"
+```
## Files
@@ -73,3 +89,10 @@ The agent's entire identity (name, model, and system prompt) lives in `setup/age
| `src/activity.ts` | In-process fan-out of turn activity to live subscribers |
| `web/` | The chat page: React + `useChat`, the sidebar, the activity feed, bundled by esbuild |
| `skill.md` | Setup walkthrough, gotchas, debugging |
+
+## Resources
+
+- [Build Claude Managed Agents with Vercel Services guide](https://vercel.com/kb/guide/claude-managed-agents-vercel-services)
+- [Build Claude Managed Agents with Chat SDK guide](https://vercel.com/kb/guide/claude-managed-agents-chat-sdk)
+- [Claude Managed Agents documentation](https://platform.claude.com/docs/en/managed-agents/overview)
+- [Chat SDK documentation](https://chat-sdk.dev/docs)
diff --git a/content/support/10310342-how-do-i-log-out-of-all-active-sessions.md b/content/support/10310342-how-do-i-log-out-of-all-active-sessions.md
index cf34b4a5f..58d3d1b61 100644
--- a/content/support/10310342-how-do-i-log-out-of-all-active-sessions.md
+++ b/content/support/10310342-how-do-i-log-out-of-all-active-sessions.md
@@ -38,7 +38,7 @@ To regain access to your account on any device, you'll need to authenticate agai
If you used your Claude account to authenticate into Claude Code, you can manage your authorization tokens by navigating to **[Settings > Claude Code](https://claude.ai/settings/claude-code)**. To remove a token and log out of Claude Code, click the trash can icon.
-
+
## Unable to access your account?
diff --git a/content/support/10366376-how-can-i-delete-my-claude-console-account.md b/content/support/10366376-how-can-i-delete-my-claude-console-account.md
index bb816dd0f..5882c7f08 100644
--- a/content/support/10366376-how-can-i-delete-my-claude-console-account.md
+++ b/content/support/10366376-how-can-i-delete-my-claude-console-account.md
@@ -36,7 +36,7 @@ If you followed the steps above to delete your Console organization but want to
If you have an outstanding balance, you will see a message during the deletion flow that prompts you to pay the balance first by routing you to [Settings > Billing](https://platform.claude.com/settings/billing).
-
+
You must pay this outstanding balance before you’re able to move forward with the deletion process.
@@ -44,6 +44,6 @@ You must pay this outstanding balance before you’re able to move forward with
There are some scenarios where you will need to contact our team to delete your account. If this is the case, it will be noted when you try to delete your organization:
-
+
If you are seeing this message, this indicates that your Console organization cannot be deleted via the self-service pathway.
\ No newline at end of file
diff --git a/content/support/10504844-manage-user-feedback-settings-on-team-and-enterprise-plans.md b/content/support/10504844-manage-user-feedback-settings-on-team-and-enterprise-plans.md
index f27f74407..918044d95 100644
--- a/content/support/10504844-manage-user-feedback-settings-on-team-and-enterprise-plans.md
+++ b/content/support/10504844-manage-user-feedback-settings-on-team-and-enterprise-plans.md
@@ -6,6 +6,6 @@ As a Primary Owner or Owner of a Team or Enterprise plan, you can manage the abi
2. Use the toggle to change the **Rate chats** setting for your organization:
-
+
More information on how Anthropic collects, uses, and stores feedback data can be found in our Privacy Center: **[How long do you store my organization’s data?](https://privacy.claude.com/en/articles/7996866-how-long-do-you-store-my-organization-s-data)**
\ No newline at end of file
diff --git a/content/support/10504853-manage-user-feedback-settings-on-claude-console.md b/content/support/10504853-manage-user-feedback-settings-on-claude-console.md
index 82c7eba96..6e5249a9e 100644
--- a/content/support/10504853-manage-user-feedback-settings-on-claude-console.md
+++ b/content/support/10504853-manage-user-feedback-settings-on-claude-console.md
@@ -8,6 +8,6 @@ To manage feedback for your Console organization:
2. Toggle the feedback switch on or off.
-
+
More information on how Anthropic collects, uses, and stores feedback data can be found in our Privacy Center: [How long do you store my organization’s data?](https://privacy.claude.com/en/articles/7996866-how-long-do-you-store-my-organization-s-data)
\ No newline at end of file
diff --git a/content/support/10593882-share-and-unshare-chats.md b/content/support/10593882-share-and-unshare-chats.md
index 3eb9c1e64..15781c73a 100644
--- a/content/support/10593882-share-and-unshare-chats.md
+++ b/content/support/10593882-share-and-unshare-chats.md
@@ -38,12 +38,12 @@ To unshare a chat:
Users on free, Pro, or Max plans can review a log of shared chats by navigating to **[Settings > Privacy](https://claude.ai/settings/data-privacy-controls)**. Find the **Privacy settings** section and click “Manage” next to **Shared chats:**
-
+
This will open a **Shared chats** modal listing the title, date shared, and link to each chat, allowing you to easily review and access all your previously-shared content. From here, you also have the option to click “Unshare” next to each listed chat to revoke access to the last snapshot you shared:
-
+
If you don’t have any shared chat snapshots, the **Shared chats** modal will show “No shared content found”:
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/content/support/10684626-enable-and-use-web-search.md b/content/support/10684626-enable-and-use-web-search.md
index 5b262d898..d00f9e2c4 100644
--- a/content/support/10684626-enable-and-use-web-search.md
+++ b/content/support/10684626-enable-and-use-web-search.md
@@ -24,7 +24,7 @@ Web search expands Claude's knowledge with real-time data, helping you make bett
An Owner or Primary Owner must first enable web search for the entire workspace. This can be found in **[Admin settings > Capabilities](https://claude.ai/admin-settings/capabilities)**:
-
+
Once this is enabled at the workspace level, any member of the organization can switch it on while starting a chat by clicking the “+” button in the lower left corner of the chat window and selecting “Web search." Users can toggle this off for chats that don’t require web search capabilities.
diff --git a/content/support/10949351-getting-started-with-local-mcp-servers-on-claude-desktop.md b/content/support/10949351-getting-started-with-local-mcp-servers-on-claude-desktop.md
index b4f9026d8..762a96fbb 100644
--- a/content/support/10949351-getting-started-with-local-mcp-servers-on-claude-desktop.md
+++ b/content/support/10949351-getting-started-with-local-mcp-servers-on-claude-desktop.md
@@ -48,7 +48,7 @@ for specific instructions.
Custom desktop extensions uploads allow Team and Enterprise plans to leverage organization-specific workflows that aren’t available in the public directory. After creating a custom desktop extension, Owners and Primary Owners can navigate to Settings > Extensions within Claude Desktop and click “Advanced settings” to access the **Extension Developer** section:
-
+
Click “Install Extension…” and select the .mcpb file. Follow the prompts to install and configure your custom desktop extension. For more in-depth information, please refer to our [desktop extension developer documentation](https://github.com/anthropics/mcpb).
diff --git a/content/support/11101966-use-voice-mode.md b/content/support/11101966-use-voice-mode.md
index b8a73d3f3..43b98bbac 100644
--- a/content/support/11101966-use-voice-mode.md
+++ b/content/support/11101966-use-voice-mode.md
@@ -24,7 +24,7 @@ Voice mode transforms how you interact with Claude by:
2. Tap the sound wave symbol in the lower right corner of the chat window to activate voice mode:
-
+
3. Start talking and see your prompt automatically populate in the chat input.
@@ -32,7 +32,7 @@ Voice mode transforms how you interact with Claude by:
5. Claude will remain in voice mode until you click the “Stop” button in the lower right corner of the chat window:
-
+
### On mobile (iOS and Android)
@@ -40,7 +40,7 @@ Voice mode transforms how you interact with Claude by:
2. Tap the voice mode icon (sound wave symbol next to the microphone icon) in the text input field:
-
+
3. Choose a voice to personalize your experience.
@@ -78,7 +78,7 @@ To change the voice later:
- **On mobile:** Click the settings button in the bottom left corner while chatting with Claude in voice mode, then tap your preferred voice and pace:
-
+
## Choose a model
diff --git a/content/support/11725453-set-up-the-claude-lti-in-canvas-by-instructure.md b/content/support/11725453-set-up-the-claude-lti-in-canvas-by-instructure.md
index 41095270c..29b1e2ee9 100644
--- a/content/support/11725453-set-up-the-claude-lti-in-canvas-by-instructure.md
+++ b/content/support/11725453-set-up-the-claude-lti-in-canvas-by-instructure.md
@@ -44,7 +44,7 @@ This article provides information on how to enable the Claude LTI integration in
5. Click "Install" and refresh the course page.
-
+
## Turn on the Claude LTI Integration in Claude for Education organization settings
diff --git a/content/support/11817273-use-claude-s-chat-search-and-memory-to-build-on-previous-context.md b/content/support/11817273-use-claude-s-chat-search-and-memory-to-build-on-previous-context.md
index 678ba67a7..d0da008a1 100644
--- a/content/support/11817273-use-claude-s-chat-search-and-memory-to-build-on-previous-context.md
+++ b/content/support/11817273-use-claude-s-chat-search-and-memory-to-build-on-previous-context.md
@@ -40,7 +40,7 @@ When Claude searches your previous chats, you will see this reflected in your cu
Yes, navigate to **[Settings > Memory](https://claude.ai/new#settings/customize-memory)** and switch the toggle next to "Search and reference chats" off:
-
+
## Can I exclude a specific past chat from searches?
@@ -80,7 +80,7 @@ Each project has its own separate memory space and dedicated project summary, so
You can toggle Claude’s memory on by navigating to **[Settings > Memory](https://claude.ai/new#settings/customize-memory)** and turning on **Generate memory from chats**:
-
+
If you want to disable Claude’s memory, click the toggle and you'll see two options:
@@ -184,7 +184,7 @@ When Claude searches your previous chats, you will see this reflected in your cu
Yes, navigate to **[Settings > Capabilities](https://claude.ai/settings/capabilities)** and find the **Preferences** section. Switch the toggle next to “Search and reference chats” off:
-
+
### Can I exclude a specific past chat from searches?
@@ -192,7 +192,7 @@ Incognito chats are available to all Claude users (free, Pro, Max, Team, and Ent
When starting a new chat with Claude outside of a project, you'll see a ghost icon in the upper right corner of your screen:
-
+
Clicking the ghost icon will open an incognito chat, creating a temporary conversation that isn’t saved to your chat history. Claude won’t pull information from incognito chats when searching previous conversations.
@@ -224,7 +224,7 @@ Each project has its own separate memory space and dedicated project summary, so
You can toggle Claude’s memory on by navigating to **[Settings > Capabilities](https://claude.ai/settings/capabilities)**:
-
+
If you want to disable Claude’s memory, click the toggle to see two options:
diff --git a/content/support/11818288-why-am-i-being-asked-to-verify-my-payment-method.md b/content/support/11818288-why-am-i-being-asked-to-verify-my-payment-method.md
index 97827186c..e8a659218 100644
--- a/content/support/11818288-why-am-i-being-asked-to-verify-my-payment-method.md
+++ b/content/support/11818288-why-am-i-being-asked-to-verify-my-payment-method.md
@@ -2,7 +2,7 @@
If you see the following pop-up when you log in to your Claude account, you’ll need to click the “Verify now” button to verify your payment method:
-
+
## What happens if I click “Remind me later?”
diff --git a/content/support/11869629-use-claude-with-android-apps.md b/content/support/11869629-use-claude-with-android-apps.md
index 2add0e8b8..9e7add056 100644
--- a/content/support/11869629-use-claude-with-android-apps.md
+++ b/content/support/11869629-use-claude-with-android-apps.md
@@ -222,7 +222,7 @@ Permission requirements vary by feature:
For features requiring permissions (like location or calendar access), Claude will request permission contextually with clear explanations of why the access is needed. You’ll be prompted to approve the action with three options: Allow once, Always allow, or Don't allow.
-
+
These permissions can be managed at any time in your device settings by going to Settings > Apps > Claude > Permissions. Click into each permission listed under **Allowed** and **Not allowed** to make changes. You can toggle between “Allow only while using the app” or “Ask every time” to change Claude’s access, or remove permissions by choosing “Don’t allow.” Claude will only request permissions if needed for specific features, and you can always choose to decline while still using other capabilities.
diff --git a/content/support/12005970-manage-usage-credits-for-team-and-seat-based-enterprise-plans.md b/content/support/12005970-manage-usage-credits-for-team-and-seat-based-enterprise-plans.md
index bbfa5375c..16bd66674 100644
--- a/content/support/12005970-manage-usage-credits-for-team-and-seat-based-enterprise-plans.md
+++ b/content/support/12005970-manage-usage-credits-for-team-and-seat-based-enterprise-plans.md
@@ -70,7 +70,7 @@ After navigating to **[Organization settings > Usage](https://claude.ai/admin-se
The **Usage and spend limits** section will show the current limit (if any) or **Unlimited**. Clicking on "Adjust limit" opens a modal where you can either input an amount and click "Set spend limit," or click "Set to unlimited" to remove the organization-wide monthly spend limit.
-
+
Changes to your organization’s overall spend limit go into effect immediately.
@@ -78,11 +78,11 @@ Changes to your organization’s overall spend limit go into effect immediately.
Owners and Primary Owners on **seat-based Enterprise plans only** can set spend limits that apply to all users within a specific seat tier.
-
+
Select the "By group" tab to see **Standard seats** and **Premium seats** groups. Click the "..." icon next to the current limit, then "Edit limit." This opens a modal where you can either select "Set dollar amount" and input an amount, or click "Unlimited" to remove the limit for that seat type. Click "Set limit" to save your changes.
-
+
---
@@ -90,11 +90,11 @@ Select the "By group" tab to see **Standard seats** and **Premium seats** groups
Owners and Primary Owners can also set individual monthly spend limits for each member by finding **Spend limits by user** and clicking the "..." button next to the user, then "Edit limit."
-
+
Enter the amount and click "Set limit." Alternatively, selecting "Set to unlimited" will remove that member's monthly spend limit (they will still be subject to any organization or seat-level spend limits).
-
+
This allows owners fine control over usage credits, so you can set limits for different members based on their roles or individual needs. Once a user reaches their defined spend limit, this will automatically pause their usage credits until the end of the month. They will need to wait for their usage limits to reset before using Claude again.
diff --git a/content/support/12012173-get-started-with-claude-in-chrome.md b/content/support/12012173-get-started-with-claude-in-chrome.md
index 0e5dbefee..7ca573f71 100644
--- a/content/support/12012173-get-started-with-claude-in-chrome.md
+++ b/content/support/12012173-get-started-with-claude-in-chrome.md
@@ -36,7 +36,7 @@ Follow these steps to enable the Claude in Chrome connector in your desktop app:
4. Toggle the connector on, then download and install the extension if you haven’t already.
-
+
Completing these steps will add Claude in Chrome to the “Connectors” drop-down on your chats with Claude. This is disabled by default, so you’ll need to enable it manually for each conversation.
diff --git a/content/support/12111783-create-and-edit-files-with-claude.md b/content/support/12111783-create-and-edit-files-with-claude.md
index 666c9a729..ba90522d2 100644
--- a/content/support/12111783-create-and-edit-files-with-claude.md
+++ b/content/support/12111783-create-and-edit-files-with-claude.md
@@ -48,7 +48,7 @@ These capabilities make it easy to produce professional documents by simply chat
To give Claude access to external data sources, toggle **Allow network egress** on:
-
+
### Enabling on Claude Mobile
@@ -66,11 +66,11 @@ Team and Enterprise organization owners can control network access settings in *
- **Allow network egress to package managers and specific domains:** Claude can access package managers plus additional domains you specify. Add domains individually to whitelist specific resources your organization needs:
-
+
**All domains:** Claude has full internet access except for domains on Anthropic's legal blocklist. While this provides maximum flexibility for file creation and analysis tasks, it’s also the riskiest option. Please review the **[security considerations below](#h_0ee9d698a1)** before enabling “All domains”:
-
+
---
diff --git a/content/support/12157520-claude-code-usage-analytics.md b/content/support/12157520-claude-code-usage-analytics.md
index 9f7fd95fb..8a0c2c278 100644
--- a/content/support/12157520-claude-code-usage-analytics.md
+++ b/content/support/12157520-claude-code-usage-analytics.md
@@ -50,7 +50,7 @@ The **Usage** tab displays the following metrics for your organization. Data on
- **Top commands**: The Claude Code commands used most often across your organization.
-
+
### User-level metrics
diff --git a/content/support/12260368-use-incognito-chats.md b/content/support/12260368-use-incognito-chats.md
index 39d535868..9e1bd0669 100644
--- a/content/support/12260368-use-incognito-chats.md
+++ b/content/support/12260368-use-incognito-chats.md
@@ -30,7 +30,7 @@ Incognito chats are temporary conversations that aren't saved to your chat histo
When starting a new chat with Claude outside of a project, you'll see a ghost icon in the upper right corner of your screen:
-
+
1. Click the ghost icon to enable incognito mode.
diff --git a/content/support/12293051-use-claude-in-xcode.md b/content/support/12293051-use-claude-in-xcode.md
index f3fe4bda5..505341021 100644
--- a/content/support/12293051-use-claude-in-xcode.md
+++ b/content/support/12293051-use-claude-in-xcode.md
@@ -34,7 +34,7 @@ To start using Claude in Xcode:
3. Log in with your Claude account.
-
+
## Usage limits
diff --git a/content/support/12429409-manage-usage-credits-for-paid-claude-plans.md b/content/support/12429409-manage-usage-credits-for-paid-claude-plans.md
index 19e8db24e..36eaac41e 100644
--- a/content/support/12429409-manage-usage-credits-for-paid-claude-plans.md
+++ b/content/support/12429409-manage-usage-credits-for-paid-claude-plans.md
@@ -46,7 +46,7 @@ To enable usage credits on your paid Claude plan:
8. You can also enable auto-reload to automatically make a purchase when your balance falls below a threshold you set:
-
+
**Note:** There is a daily redemption limit of $2000.
diff --git a/content/support/12466728-troubleshoot-claude-error-messages.md b/content/support/12466728-troubleshoot-claude-error-messages.md
index 38acd2664..ae971058b 100644
--- a/content/support/12466728-troubleshoot-claude-error-messages.md
+++ b/content/support/12466728-troubleshoot-claude-error-messages.md
@@ -58,4 +58,4 @@ Capacity issues will not appear on our status page because they represent normal
Service incidents are disruptions where Claude is unavailable or significantly degraded for all or most users. These represent actual technical problems with our systems. To check for confirmed incidents, visit status.claude.com, where you'll find real-time updates on scope, impact, and resolution progress for any active incidents.
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/content/support/12512180-use-skills-in-claude.md b/content/support/12512180-use-skills-in-claude.md
index 76a6f8525..760bf9f46 100644
--- a/content/support/12512180-use-skills-in-claude.md
+++ b/content/support/12512180-use-skills-in-claude.md
@@ -166,7 +166,7 @@ To remove a custom skill you've uploaded:
4. To delete the custom skill entirely, click the "..." button next to the toggle, then select "Delete":
- 
+ 
5. Click "Delete" in the confirmation prompt.
diff --git a/content/support/12592343-enabling-and-using-the-desktop-extension-allowlist.md b/content/support/12592343-enabling-and-using-the-desktop-extension-allowlist.md
index a4de4a4e1..ce8c2ab47 100644
--- a/content/support/12592343-enabling-and-using-the-desktop-extension-allowlist.md
+++ b/content/support/12592343-enabling-and-using-the-desktop-extension-allowlist.md
@@ -20,11 +20,11 @@ The desktop extension allowlist is disabled by default, so an organization Owner
4. Switch to the "Desktop" tab:
-
+
5. Toggle **Allowlist** on:
-
+
## What happens after enabling the allowlist?
@@ -42,7 +42,7 @@ Consider completing the allowlist setup during off-hours to minimize disruption
**Important:** The allowlist requires Claude Desktop version 0.13.91 or higher, so users should update the desktop app by clicking “Claude”, then either “Check for updates” or “Restart to update to Claude 0.13.91”:
-
+
## Managing allowed extensions
@@ -60,7 +60,7 @@ After enabling the allowlist, you can choose which extensions to allow:
If you want to remove an extension from the allowlist, click the “...” button and “Remove from allowlist.”
-
+
## Uploading custom extensions
diff --git a/content/support/12618689-claude-code-on-the-web.md b/content/support/12618689-claude-code-on-the-web.md
index b961d2c27..4e441699b 100644
--- a/content/support/12618689-claude-code-on-the-web.md
+++ b/content/support/12618689-claude-code-on-the-web.md
@@ -10,7 +10,7 @@ This feature works with repositories you may not have on your local machine. You
Claude Code for web enables asynchronous development workflows. With Claude Code in your terminal or editor, you typically work synchronously: you make a request, wait for Claude to respond, review the changes, then make another request. Synchronous work like this gives you fine-grained control but requires your attention throughout the process. Claude Code on the web handles this differently: you can assign a larger task, let Claude work independently, and return later to review the completed work.
-
+
You can also run multiple tasks in parallel. Since each task runs in its own isolated environment, you can have Claude working on several different issues or repositories simultaneously. Each task proceeds independently and creates its own pull request when complete. More than one task can work on the same repository at the same time.
@@ -18,13 +18,13 @@ You can also run multiple tasks in parallel. Since each task runs in its own iso
When you start a task, Claude Code on the web creates an isolated virtual machine for your work. Your GitHub repository is cloned into this environment, which comes pre-configured with common development tools and language ecosystems.
-
+
Claude prepares the environment by running any setup commands you've defined in your repository's configuration. This includes installing dependencies, setting up databases, or running other initialization steps your project needs. If your task requires network access, maybe to install packages or fetch data, you can configure the level of internet access the environment has.
Once the environment is ready, Claude begins working on your task. Claude reads your code, makes changes, writes tests, and runs commands to verify the work. You can monitor progress and provide guidance through the web interface if needed.
-
+
When Claude completes the task, it pushes the changes to a new branch in your GitHub repository. You receive a notification and can review the changes, then create a pull request directly from the interface. The pull request includes all of Claude's work, ready for your review and any additional changes you want to make.
diff --git a/content/support/12626668-use-quick-entry-with-claude-desktop-on-mac.md b/content/support/12626668-use-quick-entry-with-claude-desktop-on-mac.md
index ba3494aad..2b1606ecc 100644
--- a/content/support/12626668-use-quick-entry-with-claude-desktop-on-mac.md
+++ b/content/support/12626668-use-quick-entry-with-claude-desktop-on-mac.md
@@ -40,7 +40,7 @@ When you first open the updated version of Claude Desktop, you'll see a prompt t
Once enabled, double-tapping Option will open a text box where you can type your message and start a new chat. You can also click "New chat" to see your five most recent conversations.
-
+
### Enable the voice shortcut (optional)
diff --git a/content/support/12883420-view-usage-analytics-for-team-and-enterprise-plans.md b/content/support/12883420-view-usage-analytics-for-team-and-enterprise-plans.md
index cc0228628..92550bc40 100644
--- a/content/support/12883420-view-usage-analytics-for-team-and-enterprise-plans.md
+++ b/content/support/12883420-view-usage-analytics-for-team-and-enterprise-plans.md
@@ -22,7 +22,7 @@ This page includes the following analytics:
- Sessions in Cowork
-
+
### Who’s using Claude?
@@ -34,7 +34,7 @@ This page includes the following analytics:
Use the dropdown on the **Active members and assigned seats** chart to filter by product, including Claude Design.
-
+
### How are they using Claude?
@@ -48,9 +48,9 @@ Use the dropdown on the **Active members and assigned seats** chart to filter by
- How agentic is their work? (beta)
-
+
-
+
### What are the results?
@@ -66,7 +66,7 @@ Use the dropdown on the **Active members and assigned seats** chart to filter by
- Estimated time saved
-
+
### How much is Claude costing?
@@ -82,9 +82,9 @@ This section includes the following analytics:
- Spend by model (month-to-date, quarter-to-date, year-to-date, 1 year)
-
+
-
+
## Export a spend report
@@ -160,7 +160,7 @@ Navigate to **[Analytics > Claude Chat](https://claude.ai/analytics/usage)** to
- Top members by chats
-
+
### Projects
@@ -172,7 +172,7 @@ Navigate to **[Analytics > Claude Chat](https://claude.ai/analytics/usage)** to
- Top members by project usage
-
+
### Artifacts
@@ -182,7 +182,7 @@ Navigate to **[Analytics > Claude Chat](https://claude.ai/analytics/usage)** to
- Top 10 users by artifacts generated (month-to-date, quarter-to-date, year-to-date, 1 year)
-
+
---
@@ -278,7 +278,7 @@ Navigate to **[Analytics > Cowork](https://claude.ai/analytics/cowork)** to view
- Daily, weekly, and monthly active Cowork users
-
+
**Note:** Cowork analytics are available alongside Chat and Claude Code data in the **[Analytics API](https://platform.claude.com/docs/en/manage-claude/analytics-api)**.
@@ -288,7 +288,7 @@ Navigate to **[Analytics > Cowork](https://claude.ai/analytics/cowork)** to view
When your admin turns on individual usage analytics, any member of the organization can see their own usage broken down by product, model, and skill, along with where they stand against any spend limits set for them. Individual usage analytics are available in **[Settings > Usage](https://claude.ai/settings/usage)**.
-
+
---
diff --git a/content/support/12902446-claude-in-chrome-permissions-guide.md b/content/support/12902446-claude-in-chrome-permissions-guide.md
index 1e2bd0ef2..2dcd5e267 100644
--- a/content/support/12902446-claude-in-chrome-permissions-guide.md
+++ b/content/support/12902446-claude-in-chrome-permissions-guide.md
@@ -28,7 +28,7 @@ In "Manually approve," Claude checks with you before it acts. What that looks li
Claude creates a plan from your prompt, which you can approve before Claude starts. The plan specifies which websites you're allowing Claude to access, as well as the approach it will follow:
-
+
Note that Claude will only use the websites listed in the plan, so you’ll need to manually approve any additional access requests.
@@ -62,7 +62,7 @@ When you choose "Skip all approvals," Claude doesn't pause to ask, and nothing c
There are some websites on which Claude requires approval for every action. If you navigate to one of these sites, a **New permissions required** prompt will appear in the extension side panel, Claude Cowork, or Claude Code where Claude will ask for permission before accessing the page or taking any action.
-
+
### Permission options
diff --git a/content/support/12997503-team-plan-billing-faqs.md b/content/support/12997503-team-plan-billing-faqs.md
index 6c70d2780..4b062899b 100644
--- a/content/support/12997503-team-plan-billing-faqs.md
+++ b/content/support/12997503-team-plan-billing-faqs.md
@@ -18,7 +18,7 @@ Your organization's billing address determines where your invoices are sent. You
If you want to use a name other than the one tied to your payment method, an organization Owner should check the "Use a different name on invoices" box when adding or updating your payment method in **[Organization settings > Billing](https://claude.ai/admin-settings/billing)**:
-
+
## When will I be billed?
diff --git a/content/support/13132885-set-up-single-sign-on-sso.md b/content/support/13132885-set-up-single-sign-on-sso.md
index 8d4b71a47..b528f485e 100644
--- a/content/support/13132885-set-up-single-sign-on-sso.md
+++ b/content/support/13132885-set-up-single-sign-on-sso.md
@@ -42,7 +42,7 @@ You can verify multiple domains for a single organization, but all domains must
3. Enter the domain(s) you want to verify in the **Update organization email domains** modal and click the “+” button:
-
+
4. Click “Save” when you’re finished adding domains.
@@ -50,7 +50,7 @@ You can verify multiple domains for a single organization, but all domains must
6. Enter your domain in the text box and click “Continue”:
-
+
7. The setup screen displays a TXT record. **Copy the full Value using the copy button**—it begins with `anthropic-domain-verification-` and is longer than what's visible in the box. In your DNS provider, add a TXT record with **Host/Name** set to `@` (the root of your domain) and **Value** set to the copied string. Add it alongside any existing TXT records; don't replace them. The value is case-sensitive, so paste it exactly.
@@ -76,7 +76,7 @@ Clicking "Refresh" re-checks your DNS; it won't show Verified until the publishe
If the record is correct and propagated but the status still shows Pending, contact Support.
-
+
**Note:** Once your domain is verified, you'll see a **Restrict organization creation** toggle under **Security** on the Organization and access organization settings page. Enable this if you want to prevent users from creating new Claude or Console organizations—including personal accounts—using your verified domains.
@@ -116,7 +116,7 @@ For IdP-specific setup instructions, see:
You can now choose to toggle on **Require SSO for Console** and/or **Require SSO for Claude,** on the **Organization and access** page, under the **Authentication** section:
-
+
When SSO is required, users must use the “Continue with SSO” option to log in to their Claude/Console accounts. When SSO is not required, they will have the option to choose “Continue with SSO” or “Continue with email.”
diff --git a/content/support/13133195-set-up-jit-or-scim-provisioning.md b/content/support/13133195-set-up-jit-or-scim-provisioning.md
index 1f0386145..fd3bbb571 100644
--- a/content/support/13133195-set-up-jit-or-scim-provisioning.md
+++ b/content/support/13133195-set-up-jit-or-scim-provisioning.md
@@ -36,7 +36,7 @@ Use this table to help decide which provisioning mode is right for your organiza
Both JIT and SCIM can be combined with **Enable group mappings** to control role or seat tier assignment based on IdP group membership. If you select either of these options for your provisioning mode, **Enable group mappings** will appear within the **User provisioning** section:
-
+
**Important:** Group mappings set a user’s role type and seat tier only. Users with the Custom role get their permissions from groups in Claude, and those groups sync from your IdP only when your provisioning mode is SCIM directory sync. With JIT, you need to create groups and add users to them manually in **[Organization settings > Groups](https://claude.ai/admin-settings/groups)**. If you map an IdP group to the Custom role under JIT without doing this, those users have no permissions when they log in. Learn more about **[managing groups on Enterprise plans](https://support.claude.com/en/articles/13799932)**.
@@ -122,7 +122,7 @@ Once your IdP is connected, continue to Step 3.
4. Toggle **Enable group mappings** on (if it’s not already):
- 
+ 
5. In the **Enable group mappings** section, click “Add” next to each role and select the corresponding group from your IdP in the dropdown.
@@ -174,7 +174,7 @@ Verify you have enough seats purchased and available to add members to your org.
4. **For SCIM:** Click "Sync" to prompt an immediate sync, or wait for the automatic sync cycle:
- 
+ 
### Users mapped to the Custom role can't access anything after logging in
diff --git a/content/support/13163631-configuring-session-security-settings.md b/content/support/13163631-configuring-session-security-settings.md
index 903e036ae..32d8e8995 100644
--- a/content/support/13163631-configuring-session-security-settings.md
+++ b/content/support/13163631-configuring-session-security-settings.md
@@ -18,7 +18,7 @@ Session duration controls allow Enterprise and Console Admins to set a maximum s
5. Confirm your selection by clicking “Enable.”
-
+
### For Console Admins
@@ -32,7 +32,7 @@ Session duration controls allow Enterprise and Console Admins to set a maximum s
5. Confirm your selection by clicking “Enable.”
-
+
### What happens after enabling shortened session length?
@@ -50,7 +50,7 @@ You can change the session duration at any time by selecting a new value from th
- Sessions scheduled to expire beyond the new duration will have their expiration shortened accordingly.
-
+
## Disabling session length settings
diff --git a/content/support/13189465-log-in-to-your-claude-account.md b/content/support/13189465-log-in-to-your-claude-account.md
index 9a7442b79..ed95293c9 100644
--- a/content/support/13189465-log-in-to-your-claude-account.md
+++ b/content/support/13189465-log-in-to-your-claude-account.md
@@ -2,7 +2,7 @@
When you open Claude on a web browser ([claude.ai](http://claude.ai)), the desktop app, or a mobile app, you will see two different options for logging in to your Claude account.
-
+
## Continue with Google
diff --git a/content/support/13325567-account-management-faqs.md b/content/support/13325567-account-management-faqs.md
index 0774915c7..9b37e99c5 100644
--- a/content/support/13325567-account-management-faqs.md
+++ b/content/support/13325567-account-management-faqs.md
@@ -44,6 +44,6 @@ The email domain that was used to create your Team or Enterprise plan organizati
Owners can remove domains by opening up the same modal and clicking the trash can icon to the right of the domain:
-
+
While the account creator must use a business email address, you can add public domains like @gmail.com, @yahoo.com, and @hotmail.com as allowed domains for other members of your organization.
\ No newline at end of file
diff --git a/content/support/13345190-get-started-with-claude-cowork.md b/content/support/13345190-get-started-with-claude-cowork.md
index f5611aa61..0f18fce34 100644
--- a/content/support/13345190-get-started-with-claude-cowork.md
+++ b/content/support/13345190-get-started-with-claude-cowork.md
@@ -176,7 +176,7 @@ To set global instructions:
3. Type your instructions in the text box and click "Save":
-
+
### Folder instructions
diff --git a/content/support/13346458-customizing-your-console-appearance-settings.md b/content/support/13346458-customizing-your-console-appearance-settings.md
index 5769fb886..afbcae8cf 100644
--- a/content/support/13346458-customizing-your-console-appearance-settings.md
+++ b/content/support/13346458-customizing-your-console-appearance-settings.md
@@ -8,4 +8,4 @@
3. Select from Light, System, or Dark under **Color mode**.
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/content/support/13371040-log-in-to-your-console-account.md b/content/support/13371040-log-in-to-your-console-account.md
index ef90fde29..647ab8abd 100644
--- a/content/support/13371040-log-in-to-your-console-account.md
+++ b/content/support/13371040-log-in-to-your-console-account.md
@@ -2,7 +2,7 @@
When you navigate to the **[Claude Console](https://platform.claude.com)**, you will see two different options for logging in to your Console account.
-
+
## Continue with Google
diff --git a/content/support/13641943-visual-and-interactive-content.md b/content/support/13641943-visual-and-interactive-content.md
index 279546194..aced919bb 100644
--- a/content/support/13641943-visual-and-interactive-content.md
+++ b/content/support/13641943-visual-and-interactive-content.md
@@ -18,7 +18,7 @@ Claude can show current weather conditions and forecasts when you ask about the
Claude automatically displays temperatures in Fahrenheit for US locations and Celsius for everywhere else.
-
+
Weather is powered by Google Maps ().
@@ -28,7 +28,7 @@ When you ask about recipes, Claude can display formatted recipe cards that are e
**Note:** Visual recipe cards are available on web and desktop only. On mobile, Claude provides recipe information as text in the conversation.
-
+
### Custom visuals
@@ -76,7 +76,7 @@ For example, if you ask Claude to help you plan a trip, it might ask you to:
This content appears at the bottom of the chat. You can still type a response if you prefer.
-
+
---
diff --git a/content/support/13756069-public-sector-faqs.md b/content/support/13756069-public-sector-faqs.md
index cfc626b64..678655606 100644
--- a/content/support/13756069-public-sector-faqs.md
+++ b/content/support/13756069-public-sector-faqs.md
@@ -6,7 +6,7 @@
Select your product based on both your technical/functional requirements, and also your compliance/security/deployment environment requirements. Here is a list of options:
-
+
### What is Claude for Government (C4G)?
diff --git a/content/support/13837433-manage-plugins-for-your-organization.md b/content/support/13837433-manage-plugins-for-your-organization.md
index 0fb474941..e3982d8fe 100644
--- a/content/support/13837433-manage-plugins-for-your-organization.md
+++ b/content/support/13837433-manage-plugins-for-your-organization.md
@@ -110,7 +110,7 @@ Your personal GitHub token is verified to confirm you have access, then Cowork u
An initial sync runs automatically when you connect a repository. After that, organization owners can opt-in to continued automatic updates per marketplace by going to **[Organization settings > Plugins](https://claude.ai/admin-settings/plugins)**, clicking the menu button in the upper right corner of the marketplace, then toggling "Sync automatically" on:
-
+
Enabling automatic sync creates a webhook on the connected repository. The person turning the toggle on must have admin-level access to that repository on GitHub. This is checked through their personal GitHub connection, which is separate from the Claude GitHub App installation. Without admin access, the page shows "Cannot access repository. Ensure the repository exists and the Claude GitHub App is installed," even when the App is installed correctly and manual updates work.
diff --git a/content/support/13837440-use-plugins-in-claude.md b/content/support/13837440-use-plugins-in-claude.md
index 02abe5b99..1c63897a3 100644
--- a/content/support/13837440-use-plugins-in-claude.md
+++ b/content/support/13837440-use-plugins-in-claude.md
@@ -40,7 +40,7 @@ In Cowork, open the "Cowork" tab first, then open **Customize**.
You can also upload a custom plugin file if you built one yourself or received one from a colleague. On Claude Desktop and in Cowork, plugins you add yourself are saved locally to your computer.
-
+
If you're on the Enterprise plan and your organization has skill scanning turned on, plugins are checked for malicious content when they're installed or updated. A plugin with malicious content is blocked, and one that may carry risk shows a caution banner. Learn more about **[skill and plugin scanning](https://support.claude.com/en/articles/15927065)**.
@@ -50,7 +50,7 @@ If you're on the Enterprise plan and your organization has skill scanning turned
Each plugin you install adds skills you can use while working with Claude. Type "/" or click the "+" button to see the available skills from your installed plugins, in chat and in Cowork. Click any skill to see its details.
-
+
---
diff --git a/content/support/13854387-schedule-recurring-tasks-in-claude-cowork.md b/content/support/13854387-schedule-recurring-tasks-in-claude-cowork.md
index 0fc2ce38d..03eb6de84 100644
--- a/content/support/13854387-schedule-recurring-tasks-in-claude-cowork.md
+++ b/content/support/13854387-schedule-recurring-tasks-in-claude-cowork.md
@@ -52,7 +52,7 @@ There are two ways to create a scheduled task:
6. You can explicitly confirm you want to schedule the task when prompted by Claude by clicking “Schedule":
-
+
7. Claude will create and schedule your task, and it will be added to the **Scheduled tasks** page.
diff --git a/content/support/13947068-assign-tasks-from-anywhere-in-claude-cowork.md b/content/support/13947068-assign-tasks-from-anywhere-in-claude-cowork.md
index 95e9b9aee..151fdf2e3 100644
--- a/content/support/13947068-assign-tasks-from-anywhere-in-claude-cowork.md
+++ b/content/support/13947068-assign-tasks-from-anywhere-in-claude-cowork.md
@@ -48,11 +48,11 @@ Follow these steps to get started:
5. You’ll land on a page describing the functionality. Click “Get started”:
-
+
6. On the next screen, you can give Claude access to your files and keep your computer awake by toggling those on:
-
+
7. Click “Finish setup.”
diff --git a/content/support/14116274-organize-your-tasks-with-projects-in-claude-cowork.md b/content/support/14116274-organize-your-tasks-with-projects-in-claude-cowork.md
index 8082db156..8380bfaa3 100644
--- a/content/support/14116274-organize-your-tasks-with-projects-in-claude-cowork.md
+++ b/content/support/14116274-organize-your-tasks-with-projects-in-claude-cowork.md
@@ -22,23 +22,23 @@ Cowork is available for paid plans (Pro, Max, Team, Enterprise) on:
Find **Projects** in the left navigation panel and click the “+” button to see the three different ways to create a project:
-
+
### Start from scratch
Selecting “Start from scratch” allows you to set up a new folder with instructions and files:
-
+
### Import from a Claude project
After selecting “Import from project,” you’ll see a “Search projects in Chat…” field:
-
+
Clicking into the field will display a drop-down showing your recent projects, but you can also use it to search all your projects. After you select a chat project (bulk upload is not supported), you can name the new Cowork project and choose where to save it on your computer:
-
+
Clicking “Create” will transfer the files and instructions from your existing Claude project and create a new Cowork project.
@@ -46,11 +46,11 @@ Clicking “Create” will transfer the files and instructions from your existin
If you select “Use an existing folder,” you’ll be prompted to pick a file to use as context for the new Cowork project:
-
+
After selecting a folder, you can name the new Cowork project, choose where to save it on your computer, add instructions, and attach any additional files. Click “Create” to start using your new project:
-
+
---
diff --git a/content/support/14128542-let-claude-use-your-computer-in-cowork.md b/content/support/14128542-let-claude-use-your-computer-in-cowork.md
index c8b82f9a5..6e6583971 100644
--- a/content/support/14128542-let-claude-use-your-computer-in-cowork.md
+++ b/content/support/14128542-let-claude-use-your-computer-in-cowork.md
@@ -40,7 +40,7 @@ If your work involves a physical machine, Claude keeps working while you step aw
Claude asks for your permission before accessing each application. You’ll see a prompt and must approve before Claude can interact with that app. Some apps are off-limits by default.
-
+
Claude is trained to avoid risky operations—like transferring funds, modifying or deleting files, or handling sensitive data—and to flag signs of prompt injection. However, these safeguards aren't perfect, and Claude may occasionally act outside these boundaries.
@@ -128,7 +128,7 @@ To start using computer use:
3. Find the **Computer use** toggle and turn it on:
-
+
4. Open Cowork or Claude Code in the desktop app and start a session.
diff --git a/content/support/14499648-how-scim-sync-works-for-enterprise-organizations.md b/content/support/14499648-how-scim-sync-works-for-enterprise-organizations.md
index aa45f7ee4..4de5cac78 100644
--- a/content/support/14499648-how-scim-sync-works-for-enterprise-organizations.md
+++ b/content/support/14499648-how-scim-sync-works-for-enterprise-organizations.md
@@ -50,7 +50,7 @@ You can trigger a manual sync from two places in your admin settings.
2. Click "Check for updates" under **SCIM sync**:
-
+
3. Select whether to sync members, groups, or both.
@@ -62,7 +62,7 @@ You can trigger a manual sync from two places in your admin settings.
3. Select whether to sync members, groups, or both:
-
+
**Note:** If you trigger a manual sync while background changes are processing, your organization takes the most recent change for each member or group. If multiple changes are queued for the same member or group, you may need to resync again to make sure everything applies correctly.
diff --git a/content/support/14503613-sso-login.md b/content/support/14503613-sso-login.md
index d07f05e20..378d57a06 100644
--- a/content/support/14503613-sso-login.md
+++ b/content/support/14503613-sso-login.md
@@ -47,9 +47,9 @@ Before configuring your Identity Provider (IdP), you must verify ownership of yo
3. Wait for the DNS propagation. Once the platform detects the record, the domain status will update to “**Verified**.”
-
+
-
+
**Important:** Each domain can only have one identity provider. If multiple organizations share a single login domain, IT administrators from both organizations will be able to modify login settings. Contact **[Anthropic Support](https://claude.fedstart.com/support)** for assistance with multi-organization setups. For more details about multi-organization setups, see our **[SCIM provisioning guide](https://support.claude.com/en/articles/14503643-set-up-scim-in-claude-for-government)**.
@@ -77,7 +77,7 @@ Once your SAML application is set up in your IdP, provide Anthropic with the det
- Claims Information — Attribute mappings for user name and email.
-
+
**Tip:** Using a metadata XML file: Most IdPs let you download a metadata.xml file. Upload it on the identity settings page to auto-fill the Signing Certificate, IdP Entity ID, and SSO URL. Some IdPs (like Entra ID) also include claims information in the metadata file; if present, the system will suggest field mappings automatically.
diff --git a/content/support/14503643-set-up-scim-in-claude-for-government.md b/content/support/14503643-set-up-scim-in-claude-for-government.md
index d9484fa2a..b103aba72 100644
--- a/content/support/14503643-set-up-scim-in-claude-for-government.md
+++ b/content/support/14503643-set-up-scim-in-claude-for-government.md
@@ -41,7 +41,7 @@ With SCIM, login and provisioning are separate. Your IdP tells Anthropic who sho
**Important**: Store this key securely. It cannot be retrieved after you leave the page.
-
+
### Step 2: Configure SCIM in your Identity Provider
@@ -67,7 +67,7 @@ After enabling the integration in your IdP:
**Warning**: When you fully enable SCIM provisioning, any users who were **not** synced via SCIM will be removed from the organization. Confirm that all expected users appear in the sync before proceeding.
-
+
### Step 4: Map groups to roles and seat tiers
@@ -83,7 +83,7 @@ SCIM provisioning uses IdP groups to assign roles and seat tiers within Claude f
3. Save your mappings.
-
+
If you manage multiple organizations under a single parent (see below), each organization maintains its own role and seat tier mappings. Switch between organizations using the organization selector in the bottom-left corner of the page.
diff --git a/content/support/14503775-mcp-web-search.md b/content/support/14503775-mcp-web-search.md
index d5b04c84d..848a13e80 100644
--- a/content/support/14503775-mcp-web-search.md
+++ b/content/support/14503775-mcp-web-search.md
@@ -4,7 +4,7 @@ The Web Search connector gives Claude the ability to search the public internet
For questions about web search in commercial Claude, see **[Enabling and using web search](https://support.claude.com/en/articles/10684626-enabling-and-using-web-search)**.
-
+
## How Web Search differs for Claude for Government
diff --git a/content/support/14604397-set-up-your-design-system-in-claude-design.md b/content/support/14604397-set-up-your-design-system-in-claude-design.md
index 1767b8ee8..7b1684079 100644
--- a/content/support/14604397-set-up-your-design-system-in-claude-design.md
+++ b/content/support/14604397-set-up-your-design-system-in-claude-design.md
@@ -72,7 +72,7 @@ To validate your design system, create a test project and see if the output matc
Once you’re satisfied with the design system quality, make sure the “Published” toggle is switched on. After publishing, any projects created from the Claude Design homescreen while in your organization will use your design system instead of the default.
-
+
---
diff --git a/content/support/14604406-claude-design-admin-guide-for-team-and-enterprise-plans.md b/content/support/14604406-claude-design-admin-guide-for-team-and-enterprise-plans.md
index ffdb014ca..42f5151e0 100644
--- a/content/support/14604406-claude-design-admin-guide-for-team-and-enterprise-plans.md
+++ b/content/support/14604406-claude-design-admin-guide-for-team-and-enterprise-plans.md
@@ -18,7 +18,7 @@ Team and Enterprise plan admins can enable this organization-wide by following t
2. Find the **Claude Design** toggle under **Anthropic Labs** and switch it on.
-
+
---
diff --git a/content/support/14604416-get-started-with-claude-design.md b/content/support/14604416-get-started-with-claude-design.md
index 6ede55159..294e9ab3f 100644
--- a/content/support/14604416-get-started-with-claude-design.md
+++ b/content/support/14604416-get-started-with-claude-design.md
@@ -153,7 +153,7 @@ Use the “Export” button in the upper right corner when viewing your project
- Send to Claude Code Web
-
+
You can also share projects within your organization using a shareable link. Sharing options include view-only, comment, and edit access.
diff --git a/content/support/15330088-set-a-default-model-for-your-organization.md b/content/support/15330088-set-a-default-model-for-your-organization.md
index f6a542610..f7e9be012 100644
--- a/content/support/15330088-set-a-default-model-for-your-organization.md
+++ b/content/support/15330088-set-a-default-model-for-your-organization.md
@@ -46,7 +46,7 @@ The organization default applies to every member. To set it:
4. Click “Save changes.”
-
+
---
diff --git a/content/support/15694740-manage-model-access-for-your-organization.md b/content/support/15694740-manage-model-access-for-your-organization.md
index 1faf8bafb..084f08359 100644
--- a/content/support/15694740-manage-model-access-for-your-organization.md
+++ b/content/support/15694740-manage-model-access-for-your-organization.md
@@ -42,9 +42,9 @@ The organization setting is the ceiling, so a role can’t grant access to a mod
If any custom role uses the model you’re disabling as its default, you’ll be prompted to change that role’s default before the change can be saved.
-
+
-
+
---
@@ -62,7 +62,7 @@ If any custom role uses the model you’re disabling as its default, you’ll be
Only models the role grants access to can be selected as that role’s default model.
-
+
---
@@ -80,7 +80,7 @@ Effort limits determine how much computation members on a role can apply per res
5. Click "Save" to save your changes.
-
+
Members on the role see only effort levels at or below the cap in their model menu. Note that available effort levels differ depending on the model, and some models don’t support effort level settings at all. For an explanation of each level, see **[Change the model, effort, and thinking settings](https://support.claude.com/en/articles/8664678)**.
diff --git a/content/support/15936181-get-started-with-1password-for-claude.md b/content/support/15936181-get-started-with-1password-for-claude.md
index e1a6f6f10..99b694c7e 100644
--- a/content/support/15936181-get-started-with-1password-for-claude.md
+++ b/content/support/15936181-get-started-with-1password-for-claude.md
@@ -52,7 +52,7 @@ Once the requirements are in place, you can set up 1Password from a few places i
4. Toggle on **Password managers**:
-
+
Once enabled, eligible users will see the discovery options above. Users still need to install and set up the required apps and extensions themselves.
diff --git a/content/support/8114491-get-started-with-claude.md b/content/support/8114491-get-started-with-claude.md
index 7dfc263bf..ad0d70678 100644
--- a/content/support/8114491-get-started-with-claude.md
+++ b/content/support/8114491-get-started-with-claude.md
@@ -36,7 +36,7 @@ You use **prompts** to communicate with Claude. The best approach is to speak to
Type your prompt into the chat interface and click the submit button to start a conversation with Claude. You can click the "+" button in the lower left or type "/" to view additional options and commands:
-
+
---
diff --git a/content/support/8230524-delete-or-rename-a-conversation.md b/content/support/8230524-delete-or-rename-a-conversation.md
index 3035741cc..dc0fe0854 100644
--- a/content/support/8230524-delete-or-rename-a-conversation.md
+++ b/content/support/8230524-delete-or-rename-a-conversation.md
@@ -44,15 +44,15 @@ These steps apply to Claude for iOS, listed on the App Store as Claude by Anthro
4. If deleting, tap "Delete" again in the confirmation prompt.
-
+
-
+
You can also delete the conversation you have open: tap the "⋯" button in the top right corner, tap "Delete," then confirm.
-
+
-
+
## Delete or rename a conversation on Claude for Android
@@ -66,9 +66,9 @@ These steps apply to the Claude for Android, listed on Google Play as Claude by
3. If deleting, tap "Delete" again in the confirmation prompt.
-
+
-
+
**To delete multiple conversations at once:**
@@ -78,9 +78,9 @@ These steps apply to the Claude for Android, listed on Google Play as Claude by
3. Tap the trash icon, then tap "Delete" in the confirmation prompt.
-
+
-
+
## What happens when you delete a conversation
diff --git a/content/support/8325618-paid-plan-billing-faqs.md b/content/support/8325618-paid-plan-billing-faqs.md
index c16fb0566..6de52bcf7 100644
--- a/content/support/8325618-paid-plan-billing-faqs.md
+++ b/content/support/8325618-paid-plan-billing-faqs.md
@@ -50,7 +50,7 @@ There's no separate option to remove a card, and updating to a new card replaces
If you want to use a name other than the one tied to your payment method, check the "Use a different name on invoices" box when adding or updating your payment method in **[Settings > Billing](https://claude.ai/settings/billing)**.
-
+
## How can I edit a paid invoice?
diff --git a/content/support/8887527-customizing-your-appearance-settings.md b/content/support/8887527-customizing-your-appearance-settings.md
index 6340b37c1..c01543f7a 100644
--- a/content/support/8887527-customizing-your-appearance-settings.md
+++ b/content/support/8887527-customizing-your-appearance-settings.md
@@ -8,7 +8,7 @@
3. Select from Light, Match System, and Dark under **Color mode**.
-
+
## How to change your font
@@ -16,10 +16,10 @@
2. Select from Default, Match System, and Dyslexic Friendly.
-
+
## Can I disable the sidebar?
It's not currently possible to completely disable the sidebar. You can click the button on the top right of the sidebar to open or close it.
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/content/support/9267400-move-your-personal-claude-account-to-a-team-or-enterprise-organization.md b/content/support/9267400-move-your-personal-claude-account-to-a-team-or-enterprise-organization.md
index ee6b2f8b4..77c8b35c4 100644
--- a/content/support/9267400-move-your-personal-claude-account-to-a-team-or-enterprise-organization.md
+++ b/content/support/9267400-move-your-personal-claude-account-to-a-team-or-enterprise-organization.md
@@ -124,7 +124,7 @@ For the full walkthrough of your options, deadlines, and what happens to your su
You may have both a personal account and an organization account tied to the same email address. You can switch between them by clicking your initials or name in the lower left corner of the screen.
-
+
A blue checkmark shows which account you're currently using. Click the other account to switch to it and access its separate conversations and projects.
diff --git a/content/support/9519177-how-can-i-create-and-manage-projects.md b/content/support/9519177-how-can-i-create-and-manage-projects.md
index 2106b277a..3927cc8c2 100644
--- a/content/support/9519177-how-can-i-create-and-manage-projects.md
+++ b/content/support/9519177-how-can-i-create-and-manage-projects.md
@@ -104,19 +104,19 @@ Starring a project allows for quick access from your projects and chats list, vi
You can move a standalone chat into a project by clicking on the dropdown arrow next to the chat name, then “Add to project”:
-
+
Browse or search for the correct project in the **Move chat** modal that appears, then click on it to move the chat.
-
+
You can also remove chats from projects, or move them between projects, using the same dropdown menu within the chat:
-
+
You can move chats into projects in bulk from **[Your chat history page](https://claude.ai/recents)**:
-
+
Select the chats you want to move, then click the icon next to the number of selected chats to move them into your project.
diff --git a/content/support/9519189-manage-project-visibility-and-sharing.md b/content/support/9519189-manage-project-visibility-and-sharing.md
index 6bb045d40..7c8dad47a 100644
--- a/content/support/9519189-manage-project-visibility-and-sharing.md
+++ b/content/support/9519189-manage-project-visibility-and-sharing.md
@@ -12,7 +12,7 @@ When creating a project on a Team or Enterprise plan, you can choose between two
- **Private:** Only invited members can view and use the project.
-
+
## What are public projects?
@@ -22,11 +22,11 @@ If you choose to share a project with the rest of your organization upon creatio
Yes, you can switch the visibility of a project you created as public to private at any time by opening the project and clicking the “Share” button to the right of the project name:
-
+
Click “Everyone at [your organization]” under **General access** and select “Only people invited” to change the project from public to private:
-
+
## What are private projects?
@@ -36,11 +36,11 @@ Choosing “Only people invited” keeps your project private so that you are th
Yes, you can switch the visibility of a project you created as private to public at any time by opening the project and clicking the “Share” button to the right of the project name:
-
+
Click “Only people invited” under General access and select “Everyone at [your organization]” to change the project from private to public:
-
+
## Add and remove access to private projects
diff --git a/content/support/9534590-cost-and-usage-reporting-in-the-claude-console.md b/content/support/9534590-cost-and-usage-reporting-in-the-claude-console.md
index fe9ae708b..6cbbac711 100644
--- a/content/support/9534590-cost-and-usage-reporting-in-the-claude-console.md
+++ b/content/support/9534590-cost-and-usage-reporting-in-the-claude-console.md
@@ -8,7 +8,7 @@ The Claude Console provides detailed cost and usage reporting to help you effect
Users with access to these reports can click into them on the left navigation menu on the Console:
-
+
---
@@ -46,9 +46,9 @@ The [Usage page](https://platform.claude.com/usage) offers a detailed breakdown
6. Use the export button to download a CSV of the displayed data.
-
+
-
+
### Rate Limit Use
@@ -88,6 +88,6 @@ The [Cost page](https://platform.claude.com/cost) helps you understand your spen
5. Use the export button to download a CSV of the cost data.
-
+
**Note**: Currently, it's not possible to break down usage or cost by individual users.
\ No newline at end of file
diff --git a/content/support/9547008-publish-and-share-artifacts.md b/content/support/9547008-publish-and-share-artifacts.md
index b31a480af..2f7c01113 100644
--- a/content/support/9547008-publish-and-share-artifacts.md
+++ b/content/support/9547008-publish-and-share-artifacts.md
@@ -56,11 +56,11 @@ Publishing also adds the artifact to the **[Artifacts](https://claude.ai/artifac
After publishing, you'll see a “Get embed code” button.
-
+
Click it to open a modal with automatically generated code you can copy and paste to embed your artifact on another website.
-
+
You must specify which websites can embed your artifact by entering URLs in the **Allowed domains** field, separated by commas.
@@ -116,7 +116,7 @@ Artifacts created on Team or Enterprise accounts can only be shared within your
4. Click “Share & copy link” to make this version shareable.
-
+
### Who can access shared artifacts
@@ -138,7 +138,7 @@ When you share an artifact, viewers also gain access to any attachments and file
2. In the **Artifact shared** modal, click “Unshare.”
-
+
---
diff --git a/content/support/9927533-disable-public-projects-for-your-organization.md b/content/support/9927533-disable-public-projects-for-your-organization.md
index 55e91e926..cb292e7af 100644
--- a/content/support/9927533-disable-public-projects-for-your-organization.md
+++ b/content/support/9927533-disable-public-projects-for-your-organization.md
@@ -10,7 +10,7 @@ Follow these steps:
2. Find **Public projects** and toggle it off
-
+
## How does disabling public projects work?