Sweep 22 Sep 2026 · 17:19Z Build v2.1.280 501 read Stable v2.1.267 Latest v2.1.280 Next v2.1.280 Feeds RSS JSON llms.txt Unofficial
One change · api

compaction-threshold changed

build-with-claude/compaction-threshold

Nearest release: v2.1.280, published under an hour before this site recorded the change. Shown because the two are within 24 hours of each other. Nothing here says the release caused the edit.

Recorded here
Lines+122added
Lines−121removed
From line 14 where the diff opens
First seen 21 Sep 2026 this site's first read of the page
Recorded edits3to this page, all time

The whole hunk

from line 14, old and new numbered
/
lines
from line 14
1414 - claude-fable-5
1515 - claude-mythos-5
1616 - claude-mythos-preview
17 - claude-opus-5-5
1718 - claude-opus-5
1819 - claude-opus-4-8
1920 - claude-opus-4-7
from line 67
6667 -H "anthropic-beta: compact-2026-01-12" \
6768 -H "content-type: application/json" \
6869 -d '{
69 "model": "claude-opus-5",
70 "model": "claude-opus-5-5",
7071 "max_tokens": 4096,
7172 "messages": [
7273 {
from line 87
8687 
8788 ```bash CLI
8889 ant beta:messages create --beta compact-2026-01-12 <<'YAML'
89 model: claude-opus-5
90 model: claude-opus-5-5
9091 max_tokens: 4096
9192 messages:
9293 - role: user
from line 105
104105 
105106 response = client.beta.messages.create(
106107 betas=["compact-2026-01-12"],
107 model="claude-opus-5",
108 model="claude-opus-5-5",
108109 max_tokens=4096,
109110 messages=messages,
110111 context_management={"edits": [{"type": "compact_20260112"}]},
from line 124
123124 
124125 const response = await client.beta.messages.create({
125126 betas: ["compact-2026-01-12"],
126 model: "claude-opus-5",
127 model: "claude-opus-5-5",
127128 max_tokens: 4096,
128129 messages,
129130 context_management: {
from line 154
153154 var parameters = new MessageCreateParams
154155 {
155156 Betas = ["compact-2026-01-12"],
156 Model = "claude-opus-5",
157 Model = "claude-opus-5-5",
157158 MaxTokens = 4096,
158159 Messages = messages,
159160 ContextManagement = new BetaContextManagementConfig
from line 183
182183 }
183184 
184185 response, err := client.Beta.Messages.New(context.TODO(), anthropic.BetaMessageNewParams{
185 Model: anthropic.ModelClaudeOpus5,
186 Model: anthropic.ModelClaudeOpus5_5,
186187 MaxTokens: 4096,
187188 Messages: messages,
188189 ContextManagement: anthropic.BetaContextManagementConfigParam{
from line 211
210211 
211212 MessageCreateParams params = MessageCreateParams.builder()
212213 .addBeta("compact-2026-01-12")
213 .model("claude-opus-5")
214 .model("claude-opus-5-5")
214215 .maxTokens(4096L)
215216 .addUserMessage("Help me build a website")
216217 .contextManagement(BetaContextManagementConfig.builder()
from line 236
235236 $response = $client->beta->messages->create(
236237 maxTokens: 4096,
237238 messages: $messages,
238 model: 'claude-opus-5',
239 model: 'claude-opus-5-5',
239240 betas: ['compact-2026-01-12'],
240241 contextManagement: [
241242 'edits' => [
from line 260
259260 
260261 response = client.beta.messages.create(
261262 betas: ["compact-2026-01-12"],
262 model: "claude-opus-5",
263 model: "claude-opus-5-5",
263264 max_tokens: 4096,
264265 messages: messages,
265266 context_management: {
from line 296
295296 -H "anthropic-beta: compact-2026-01-12" \
296297 -H "content-type: application/json" \
297298 -d '{
298 "model": "claude-opus-5",
299 "model": "claude-opus-5-5",
299300 "max_tokens": 4096,
300301 "messages": [
301302 {
from line 320
319320 
320321 ```bash CLI
321322 ant beta:messages create --beta compact-2026-01-12 <<'YAML'
322 model: claude-opus-5
323 model: claude-opus-5-5
323324 max_tokens: 4096
324325 messages:
325326 - role: user
from line 339
338339 messages = [{"role": "user", "content": "Hello, Claude"}]
339340 response = client.beta.messages.create(
340341 betas=["compact-2026-01-12"],
341 model="claude-opus-5",
342 model="claude-opus-5-5",
342343 max_tokens=4096,
343344 messages=messages,
344345 context_management={
from line 361
360361 
361362 const response = await client.beta.messages.create({
362363 betas: ["compact-2026-01-12"],
363 model: "claude-opus-5",
364 model: "claude-opus-5-5",
364365 max_tokens: 4096,
365366 messages,
366367 context_management: {
from line 384
383384 
384385 var parameters = new MessageCreateParams
385386 {
386 Model = "claude-opus-5",
387 Model = "claude-opus-5-5",
387388 MaxTokens = 4096,
388389 Betas = ["compact-2026-01-12"],
389390 Messages = messages,
from line 406
405406 messages := []anthropic.BetaMessageParam{anthropic.NewBetaUserMessage(anthropic.NewBetaTextBlock("Hello, Claude"))}
406407 
407408 response, err := client.Beta.Messages.New(context.TODO(), anthropic.BetaMessageNewParams{
408 Model: anthropic.ModelClaudeOpus5,
409 Model: anthropic.ModelClaudeOpus5_5,
409410 MaxTokens: 4096,
410411 Messages: messages,
411412 ContextManagement: anthropic.BetaContextManagementConfigParam{
from line 432
431432 AnthropicClient client = AnthropicOkHttpClient.fromEnv();
432433 
433434 MessageCreateParams params = MessageCreateParams.builder()
434 .model("claude-opus-5")
435 .model("claude-opus-5-5")
435436 .maxTokens(4096L)
436437 .addBeta("compact-2026-01-12")
437438 .addUserMessage("Hello, Claude")
from line 456
455456 $message = $client->beta->messages->create(
456457 maxTokens: 4096,
457458 messages: $messages,
458 model: 'claude-opus-5',
459 model: 'claude-opus-5-5',
459460 betas: ['compact-2026-01-12'],
460461 contextManagement: [
461462 'edits' => [
from line 480
479480 
480481 response = client.beta.messages.create(
481482 betas: ["compact-2026-01-12"],
482 model: "claude-opus-5",
483 model: "claude-opus-5-5",
483484 max_tokens: 4096,
484485 messages: messages,
485486 context_management: {
from line 517
516517 -H "anthropic-beta: compact-2026-01-12" \
517518 -H "content-type: application/json" \
518519 -d '{
519 "model": "claude-opus-5",
520 "model": "claude-opus-5-5",
520521 "max_tokens": 4096,
521522 "messages": [
522523 {
from line 538
537538 
538539 ```bash CLI
539540 ant beta:messages create --beta compact-2026-01-12 <<'YAML'
540 model: claude-opus-5
541 model: claude-opus-5-5
541542 max_tokens: 4096
542543 messages:
543544 - role: user
from line 557
556557 messages = [{"role": "user", "content": "Hello, Claude"}]
557558 response = client.beta.messages.create(
558559 betas=["compact-2026-01-12"],
559 model="claude-opus-5",
560 model="claude-opus-5-5",
560561 max_tokens=4096,
561562 messages=messages,
562563 context_management={
from line 579
578579 
579580 const response = await client.beta.messages.create({
580581 betas: ["compact-2026-01-12"],
581 model: "claude-opus-5",
582 model: "claude-opus-5-5",
582583 max_tokens: 4096,
583584 messages,
584585 context_management: {
from line 600
599600 var parameters = new MessageCreateParams
600601 {
601602 Betas = ["compact-2026-01-12"],
602 Model = "claude-opus-5",
603 Model = "claude-opus-5-5",
603604 MaxTokens = 4096,
604605 Messages =
605606 [
from line 625
624625 client := anthropic.NewClient()
625626 
626627 response, err := client.Beta.Messages.New(context.TODO(), anthropic.BetaMessageNewParams{
627 Model: anthropic.ModelClaudeOpus5,
628 Model: anthropic.ModelClaudeOpus5_5,
628629 MaxTokens: 4096,
629630 Messages: []anthropic.BetaMessageParam{
630631 anthropic.NewBetaUserMessage(anthropic.NewBetaTextBlock("Help me build a Python web scraper")),
from line 655
654655 
655656 MessageCreateParams params = MessageCreateParams.builder()
656657 .addBeta("compact-2026-01-12")
657 .model("claude-opus-5")
658 .model("claude-opus-5-5")
658659 .maxTokens(4096L)
659660 .addUserMessage("Help me build a Python web scraper")
660661 .addAssistantMessage("I'll help you build a web scraper...")
from line 681
680681 ['role' => 'assistant', 'content' => "I'll help you build a web scraper..."],
681682 ['role' => 'user', 'content' => 'Add support for JavaScript-rendered pages']
682683 ],
683 model: 'claude-opus-5',
684 model: 'claude-opus-5-5',
684685 betas: ['compact-2026-01-12'],
685686 contextManagement: [
686687 'edits' => [
from line 701
700701 
701702 response = client.beta.messages.create(
702703 betas: ["compact-2026-01-12"],
703 model: "claude-opus-5",
704 model: "claude-opus-5-5",
704705 max_tokens: 4096,
705706 messages: [
706707 { role: "user", content: "Help me build a Python web scraper" },
from line 743
742743 -H "anthropic-beta: compact-2026-01-12" \
743744 -H "content-type: application/json" \
744745 -d '{
745 "model": "claude-opus-5",
746 "model": "claude-opus-5-5",
746747 "max_tokens": 4096,
747748 "messages": [
748749 {
from line 768
767768 # step doesn't translate well to a one-off CLI command; see the SDK tabs
768769 # for the full pause-and-continue flow. Single paused request:
769770 ant beta:messages create --beta compact-2026-01-12 --format jsonl <<'YAML'
770 model: claude-opus-5
771 model: claude-opus-5-5
771772 max_tokens: 4096
772773 messages:
773774 - role: user
from line 785
784785 messages = [{"role": "user", "content": "Hello, Claude"}]
785786 response = client.beta.messages.create(
786787 betas=["compact-2026-01-12"],
787 model="claude-opus-5",
788 model="claude-opus-5-5",
788789 max_tokens=4096,
789790 messages=messages,
790791 context_management={
from line 801
800801 # Continue the request
801802 response = client.beta.messages.create(
802803 betas=["compact-2026-01-12"],
803 model="claude-opus-5",
804 model="claude-opus-5-5",
804805 max_tokens=4096,
805806 messages=messages,
806807 context_management={"edits": [{"type": "compact_20260112"}]},
from line 816
815816 
816817 let response = await client.beta.messages.create({
817818 betas: ["compact-2026-01-12"],
818 model: "claude-opus-5",
819 model: "claude-opus-5-5",
819820 max_tokens: 4096,
820821 messages,
821822 context_management: {
from line 840
839840 // Continue the request
840841 response = await client.beta.messages.create({
841842 betas: ["compact-2026-01-12"],
842 model: "claude-opus-5",
843 model: "claude-opus-5-5",
843844 max_tokens: 4096,
844845 messages,
845846 context_management: {
from line 859
858859 
859860 var parameters = new MessageCreateParams
860861 {
861 Model = "claude-opus-5",
862 Model = "claude-opus-5-5",
862863 MaxTokens = 4096,
863864 Betas = ["compact-2026-01-12"],
864865 Messages = messages,
from line 884
883884 
884885 parameters = new()
885886 {
886 Model = "claude-opus-5",
887 Model = "claude-opus-5-5",
887888 MaxTokens = 4096,
888889 Betas = ["compact-2026-01-12"],
889890 Messages = messages,
from line 913
912913 }
913914 
914915 response, err := client.Beta.Messages.New(context.TODO(), anthropic.BetaMessageNewParams{
915 Model: anthropic.ModelClaudeOpus5,
916 Model: anthropic.ModelClaudeOpus5_5,
916917 MaxTokens: 4096,
917918 Messages: messages,
918919 ContextManagement: compactEdit,
from line 927
926927 messages = append(messages, response.ToParam())
927928 
928929 response, err = client.Beta.Messages.New(context.TODO(), anthropic.BetaMessageNewParams{
929 Model: anthropic.ModelClaudeOpus5,
930 Model: anthropic.ModelClaudeOpus5_5,
930931 MaxTokens: 4096,
931932 Messages: messages,
932933 ContextManagement: anthropic.BetaContextManagementConfigParam{
from line 953
952953 AnthropicClient client = AnthropicOkHttpClient.fromEnv();
953954 
954955 MessageCreateParams params = MessageCreateParams.builder()
955 .model("claude-opus-5")
956 .model("claude-opus-5-5")
956957 .maxTokens(4096L)
957958 .addBeta("compact-2026-01-12")
958959 .addUserMessage("Help me build a website")
from line 972
971972 // Append the compaction block and continue the request
972973 // by building a new request with the compacted context
973974 MessageCreateParams continueParams = MessageCreateParams.builder()
974 .model("claude-opus-5")
975 .model("claude-opus-5-5")
975976 .maxTokens(4096L)
976977 .addBeta("compact-2026-01-12")
977978 .addUserMessage("Help me build a website")
from line 995
994995 $response = $client->beta->messages->create(
995996 maxTokens: 4096,
996997 messages: $messages,
997 model: 'claude-opus-5',
998 model: 'claude-opus-5-5',
998999 betas: ['compact-2026-01-12'],
9991000 contextManagement: [
10001001 'edits' => [
from line 1016
10151016 $response = $client->beta->messages->create(
10161017 maxTokens: 4096,
10171018 messages: $messages,
1018 model: 'claude-opus-5',
1019 model: 'claude-opus-5-5',
10191020 betas: ['compact-2026-01-12'],
10201021 contextManagement: [
10211022 'edits' => [
from line 1035
10341035 
10351036 response = client.beta.messages.create(
10361037 betas: ["compact-2026-01-12"],
1037 model: "claude-opus-5",
1038 model: "claude-opus-5-5",
10381039 max_tokens: 4096,
10391040 messages: messages,
10401041 context_management: {
from line 1053
10521053 
10531054 response = client.beta.messages.create(
10541055 betas: ["compact-2026-01-12"],
1055 model: "claude-opus-5",
1056 model: "claude-opus-5-5",
10561057 max_tokens: 4096,
10571058 messages: messages,
10581059 context_management: {
from line 1082
10811082 
10821083 response = client.beta.messages.create(
10831084 betas=["compact-2026-01-12"],
1084 model="claude-opus-5",
1085 model="claude-opus-5-5",
10851086 max_tokens=4096,
10861087 messages=messages,
10871088 context_management={
from line 1121
11201121 
11211122 const response = await client.beta.messages.create({
11221123 betas: ["compact-2026-01-12"],
1123 model: "claude-opus-5",
1124 model: "claude-opus-5-5",
11241125 max_tokens: 4096,
11251126 messages,
11261127 context_management: {
from line 1160
11591160 var response = await client.Beta.Messages.Create(new()
11601161 {
11611162 Betas = ["compact-2026-01-12"],
1162 Model = "claude-opus-5",
1163 Model = "claude-opus-5-5",
11631164 MaxTokens = 4096,
11641165 Messages = messages,
11651166 ContextManagement = new BetaContextManagementConfig
from line 1205
12041205 compactionCount := 0
12051206 
12061207 response, err := client.Beta.Messages.New(context.TODO(), anthropic.BetaMessageNewParams{
1207 Model: anthropic.ModelClaudeOpus5,
1208 Model: anthropic.ModelClaudeOpus5_5,
12081209 MaxTokens: 4096,
12091210 Messages: messages,
12101211 ContextManagement: anthropic.BetaContextManagementConfigParam{
from line 1255
12541255 
12551256 MessageCreateParams params = MessageCreateParams.builder()
12561257 .addBeta("compact-2026-01-12")
1257 .model("claude-opus-5")
1258 .model("claude-opus-5-5")
12581259 .maxTokens(4096L)
12591260 .messages(messages)
12601261 .contextManagement(BetaContextManagementConfig.builder()
from line 1299
12981299 $response = $client->beta->messages->create(
12991300 maxTokens: 4096,
13001301 messages: $messages,
1301 model: 'claude-opus-5',
1302 model: 'claude-opus-5-5',
13021303 betas: ['compact-2026-01-12'],
13031304 contextManagement: [
13041305 'edits' => [
from line 1335
13341335 
13351336 response = client.beta.messages.create(
13361337 betas: ["compact-2026-01-12"],
1337 model: "claude-opus-5",
1338 model: "claude-opus-5-5",
13381339 max_tokens: 4096,
13391340 messages: messages,
13401341 context_management: {
from line 1401
14001401 -H "anthropic-beta: compact-2026-01-12" \
14011402 -H "content-type: application/json" \
14021403 -d '{
1403 "model": "claude-opus-5",
1404 "model": "claude-opus-5-5",
14041405 "max_tokens": 4096,
14051406 "messages": [
14061407 {
from line 1424
14231424 --beta compact-2026-01-12 \
14241425 --transform content \
14251426 --format jsonl <<'YAML' > content.json
1426 model: claude-opus-5
1427 model: claude-opus-5-5
14271428 max_tokens: 4096
14281429 messages:
14291430 - role: user
from line 1437
14361437 # After receiving a response with a compaction block, append it as the
14371438 # assistant turn and continue the conversation
14381439 ant beta:messages create --beta compact-2026-01-12 <<YAML
1439 model: claude-opus-5
1440 model: claude-opus-5-5
14401441 max_tokens: 4096
14411442 messages:
14421443 - role: user
from line 1457
14561457 messages = [{"role": "user", "content": "Hello, Claude"}]
14571458 response = client.beta.messages.create(
14581459 betas=["compact-2026-01-12"],
1459 model="claude-opus-5",
1460 model="claude-opus-5-5",
14601461 max_tokens=4096,
14611462 messages=messages,
14621463 context_management={"edits": [{"type": "compact_20260112"}]},
from line 1470
14691470 
14701471 response = client.beta.messages.create(
14711472 betas=["compact-2026-01-12"],
1472 model="claude-opus-5",
1473 model="claude-opus-5-5",
14731474 max_tokens=4096,
14741475 messages=messages,
14751476 context_management={"edits": [{"type": "compact_20260112"}]},
from line 1485
14841485 
14851486 const response = await client.beta.messages.create({
14861487 betas: ["compact-2026-01-12"],
1487 model: "claude-opus-5",
1488 model: "claude-opus-5-5",
14881489 max_tokens: 4096,
14891490 messages,
14901491 context_management: {
from line 1504
15031504 
15041505 const nextResponse = await client.beta.messages.create({
15051506 betas: ["compact-2026-01-12"],
1506 model: "claude-opus-5",
1507 model: "claude-opus-5-5",
15071508 max_tokens: 4096,
15081509 messages,
15091510 context_management: {
from line 1524
15231524 var response = await client.Beta.Messages.Create(new()
15241525 {
15251526 Betas = ["compact-2026-01-12"],
1526 Model = "claude-opus-5",
1527 Model = "claude-opus-5-5",
15271528 MaxTokens = 4096,
15281529 Messages = messages,
15291530 ContextManagement = new BetaContextManagementConfig
from line 1544
15431544 var nextResponse = await client.Beta.Messages.Create(new()
15441545 {
15451546 Betas = ["compact-2026-01-12"],
1546 Model = "claude-opus-5",
1547 Model = "claude-opus-5-5",
15471548 MaxTokens = 4096,
15481549 Messages = messages,
15491550 ContextManagement = new BetaContextManagementConfig
from line 1570
15691570 }
15701571 
15711572 response, err := client.Beta.Messages.New(context.TODO(), anthropic.BetaMessageNewParams{
1572 Model: anthropic.ModelClaudeOpus5,
1573 Model: anthropic.ModelClaudeOpus5_5,
15731574 MaxTokens: 4096,
15741575 Messages: messages,
15751576 ContextManagement: compactEdit,
from line 1585
15841585 messages = append(messages, anthropic.NewBetaUserMessage(anthropic.NewBetaTextBlock("Now add error handling")))
15851586 
15861587 nextResponse, err := client.Beta.Messages.New(context.TODO(), anthropic.BetaMessageNewParams{
1587 Model: anthropic.ModelClaudeOpus5,
1588 Model: anthropic.ModelClaudeOpus5_5,
15881589 MaxTokens: 4096,
15891590 Messages: messages,
15901591 ContextManagement: compactEdit,
from line 1608
16071608 BetaMessage response = client.beta().messages().create(
16081609 MessageCreateParams.builder()
16091610 .addBeta("compact-2026-01-12")
1610 .model("claude-opus-5")
1611 .model("claude-opus-5-5")
16111612 .maxTokens(4096L)
16121613 .addUserMessage("Help me build a web scraper")
16131614 .contextManagement(BetaContextManagementConfig.builder()
from line 1621
16201621 BetaMessage nextResponse = client.beta().messages().create(
16211622 MessageCreateParams.builder()
16221623 .addBeta("compact-2026-01-12")
1623 .model("claude-opus-5")
1624 .model("claude-opus-5-5")
16241625 .maxTokens(4096L)
16251626 .addUserMessage("Help me build a web scraper")
16261627 .addMessage(response)
from line 1644
16431644 $response = $client->beta->messages->create(
16441645 maxTokens: 4096,
16451646 messages: $messages,
1646 model: 'claude-opus-5',
1647 model: 'claude-opus-5-5',
16471648 betas: ['compact-2026-01-12'],
16481649 contextManagement: [
16491650 'edits' => [['type' => 'compact_20260112']]
from line 1658
16571658 $nextResponse = $client->beta->messages->create(
16581659 maxTokens: 4096,
16591660 messages: $messages,
1660 model: 'claude-opus-5',
1661 model: 'claude-opus-5-5',
16611662 betas: ['compact-2026-01-12'],
16621663 contextManagement: [
16631664 'edits' => [['type' => 'compact_20260112']]
from line 1677
16761677 
16771678 response = client.beta.messages.create(
16781679 betas: ["compact-2026-01-12"],
1679 model: "claude-opus-5",
1680 model: "claude-opus-5-5",
16801681 max_tokens: 4096,
16811682 messages: messages,
16821683 context_management: {
from line 1691
16901691 
16911692 next_response = client.beta.messages.create(
16921693 betas: ["compact-2026-01-12"],
1693 model: "claude-opus-5",
1694 model: "claude-opus-5-5",
16941695 max_tokens: 4096,
16951696 messages: messages,
16961697 context_management: {
from line 1710
17091710* Keep the original messages in your list and let the API handle removing the compacted content
17101711* Manually drop the compacted messages and only include the compaction block onwards
17111712 
1712On Claude Fable 5.1 and Claude Mythos 5.1, thinking blocks from before a `compaction` block aren't carried forward, so the summary is all the model has of that earlier work. If you write your own `instructions`, tell the model what the summary must retain; see [Tell the model what to preserve in compaction summaries](https://platform.claude.com/docs/en/build-with-claude/prompt-engineering/prompting-claude-fable-5-1#tell-the-model-what-to-preserve-in-compaction-summaries).
1713On Claude Fable 5.1, Claude Mythos 5.1, and Claude Opus 5.5, thinking blocks from before a `compaction` block aren't carried forward, so the summary is all the model has of that earlier work. If you write your own `instructions`, tell the model what the summary must retain; see [Tell the model what to preserve in compaction summaries](https://platform.claude.com/docs/en/build-with-claude/prompt-engineering/prompting-claude-fable-5-1#tell-the-model-what-to-preserve-in-compaction-summaries).
17131714 
17141715### Streaming
17151716 
from line 1724
17231724 -H "anthropic-beta: compact-2026-01-12" \
17241725 -H "content-type: application/json" \
17251726 -d '{
1726 "model": "claude-opus-5",
1727 "model": "claude-opus-5-5",
17271728 "max_tokens": 4096,
17281729 "stream": true,
17291730 "messages": [
from line 1748
17471748 --stream \
17481749 --beta compact-2026-01-12 \
17491750 --format jsonl <<'YAML'
1750 model: claude-opus-5
1751 model: claude-opus-5-5
17511752 max_tokens: 4096
17521753 messages:
17531754 - role: user
from line 1765
17641765 
17651766 with client.beta.messages.stream(
17661767 betas=["compact-2026-01-12"],
1767 model="claude-opus-5",
1768 model="claude-opus-5-5",
17681769 max_tokens=4096,
17691770 messages=messages,
17701771 context_management={"edits": [{"type": "compact_20260112"}]},
from line 1801
18001801 
18011802 const stream = await client.beta.messages.stream({
18021803 betas: ["compact-2026-01-12"],
1803 model: "claude-opus-5",
1804 model: "claude-opus-5-5",
18041805 max_tokens: 4096,
18051806 messages,
18061807 context_management: {
from line 1849
18481849 var parameters = new MessageCreateParams
18491850 {
18501851 Betas = ["compact-2026-01-12"],
1851 Model = "claude-opus-5",
1852 Model = "claude-opus-5-5",
18521853 MaxTokens = 4096,
18531854 Messages = messages,
18541855 ContextManagement = new BetaContextManagementConfig
from line 1890
18891890 messages := []anthropic.BetaMessageParam{anthropic.NewBetaUserMessage(anthropic.NewBetaTextBlock("Hello, Claude"))}
18901891 
18911892 stream := client.Beta.Messages.NewStreaming(context.TODO(), anthropic.BetaMessageNewParams{
1892 Model: anthropic.ModelClaudeOpus5,
1893 Model: anthropic.ModelClaudeOpus5_5,
18931894 MaxTokens: 4096,
18941895 Messages: messages,
18951896 ContextManagement: anthropic.BetaContextManagementConfigParam{
from line 1932
19311932 AnthropicClient client = AnthropicOkHttpClient.fromEnv();
19321933 
19331934 MessageCreateParams params = MessageCreateParams.builder()
1934 .model("claude-opus-5")
1935 .model("claude-opus-5-5")
19351936 .maxTokens(4096L)
19361937 .addBeta("compact-2026-01-12")
19371938 .addUserMessage("Hello, Claude")
from line 1978
19771978 $stream = $client->beta->messages->createStream(
19781979 maxTokens: 4096,
19791980 messages: $messages,
1980 model: 'claude-opus-5',
1981 model: 'claude-opus-5-5',
19811982 betas: ['compact-2026-01-12'],
19821983 contextManagement: [
19831984 'edits' => [
from line 2019
20182019 
20192020 stream = client.beta.messages.stream(
20202021 betas: ["compact-2026-01-12"],
2021 model: "claude-opus-5",
2022 model: "claude-opus-5-5",
20222023 max_tokens: 4096,
20232024 messages: messages,
20242025 context_management: {
from line 2087
20862087 -H "anthropic-beta: compact-2026-01-12" \
20872088 -H "content-type: application/json" \
20882089 -d '{
2089 "model": "claude-opus-5",
2090 "model": "claude-opus-5-5",
20902091 "max_tokens": 4096,
20912092 "system": [
20922093 {
from line 2116
21152116 
21162117 ```bash CLI
21172118 ant beta:messages create --beta compact-2026-01-12 <<'YAML'
2118 model: claude-opus-5
2119 model: claude-opus-5-5
21192120 max_tokens: 4096
21202121 system:
21212122 - type: text
from line 2137
21362137 messages = [{"role": "user", "content": "Hello, Claude"}]
21372138 response = client.beta.messages.create(
21382139 betas=["compact-2026-01-12"],
2139 model="claude-opus-5",
2140 model="claude-opus-5-5",
21402141 max_tokens=4096,
21412142 system=[
21422143 {
from line 2161
21602161 
21612162 const response = await client.beta.messages.create({
21622163 betas: ["compact-2026-01-12"],
2163 model: "claude-opus-5",
2164 model: "claude-opus-5-5",
21642165 max_tokens: 4096,
21652166 system: [
21662167 {
from line 2183
21822183 var parameters = new MessageCreateParams
21832184 {
21842185 Betas = ["compact-2026-01-12"],
2185 Model = "claude-opus-5",
2186 Model = "claude-opus-5-5",
21862187 MaxTokens = 4096,
21872188 System = new List<BetaTextBlockParam>
21882189 {
from line 2208
22072208 client := anthropic.NewClient()
22082209 
22092210 response, err := client.Beta.Messages.New(context.TODO(), anthropic.BetaMessageNewParams{
2210 Model: anthropic.ModelClaudeOpus5,
2211 Model: anthropic.ModelClaudeOpus5_5,
22112212 MaxTokens: 4096,
22122213 System: []anthropic.BetaTextBlockParam{
22132214 {
from line 2238
22372238 AnthropicClient client = AnthropicOkHttpClient.fromEnv();
22382239 
22392240 MessageCreateParams params = MessageCreateParams.builder()
2240 .model("claude-opus-5")
2241 .model("claude-opus-5-5")
22412242 .maxTokens(4096L)
22422243 .addBeta("compact-2026-01-12")
22432244 .systemOfBetaTextBlockParams(List.of(
from line 2263
22622263 $response = $client->beta->messages->create(
22632264 maxTokens: 4096,
22642265 messages: [['role' => 'user', 'content' => 'Hello, Claude']],
2265 model: 'claude-opus-5',
2266 model: 'claude-opus-5-5',
22662267 betas: ['compact-2026-01-12'],
22672268 system: [
22682269 [
from line 2289
22882289 
22892290 response = client.beta.messages.create(
22902291 betas: ["compact-2026-01-12"],
2291 model: "claude-opus-5",
2292 model: "claude-opus-5-5",
22922293 max_tokens: 4096,
22932294 system: [
22942295 {
from line 2362
23612362 -H "anthropic-beta: compact-2026-01-12" \
23622363 -H "content-type: application/json" \
23632364 -d '{
2364 "model": "claude-opus-5",
2365 "model": "claude-opus-5-5",
23652366 "messages": [
23662367 {
23672368 "role": "user",
from line 2381
23802381 
23812382 ```bash CLI
23822383 cat > request.yaml <<'YAML'
2383 model: claude-opus-5
2384 model: claude-opus-5-5
23842385 messages:
23852386 - role: user
23862387 content: Hello, Claude
from line 2409
24082409 messages = [{"role": "user", "content": "Hello, Claude"}]
24092410 count_response = client.beta.messages.count_tokens(
24102411 betas=["compact-2026-01-12"],
2411 model="claude-opus-5",
2412 model="claude-opus-5-5",
24122413 messages=messages,
24132414 context_management={"edits": [{"type": "compact_20260112"}]},
24142415 )
from line 2426
24252426 
24262427 const countResponse = await client.beta.messages.countTokens({
24272428 betas: ["compact-2026-01-12"],
2428 model: "claude-opus-5",
2429 model: "claude-opus-5-5",
24292430 messages,
24302431 context_management: {
24312432 edits: [{ type: "compact_20260112" }]
from line 2443
24422443 
24432444 var countParams = new MessageCountTokensParams
24442445 {
2445 Model = "claude-opus-5",
2446 Model = "claude-opus-5-5",
24462447 Messages = messages,
24472448 ContextManagement = new BetaContextManagementConfig
24482449 {
from line 2462
24612462 messages := []anthropic.BetaMessageParam{anthropic.NewBetaUserMessage(anthropic.NewBetaTextBlock("Hello, Claude"))}
24622463 
24632464 countResponse, err := client.Beta.Messages.CountTokens(context.TODO(), anthropic.BetaMessageCountTokensParams{
2464 Model: anthropic.ModelClaudeOpus5,
2465 Model: anthropic.ModelClaudeOpus5_5,
24652466 Messages: messages,
24662467 ContextManagement: anthropic.BetaContextManagementConfigParam{
24672468 Edits: []anthropic.BetaContextManagementConfigEditUnionParam{
from line 2488
24872488 AnthropicClient client = AnthropicOkHttpClient.fromEnv();
24882489 
24892490 MessageCountTokensParams params = MessageCountTokensParams.builder()
2490 .model("claude-opus-5")
2491 .model("claude-opus-5-5")
24912492 .addUserMessage("Hello, Claude")
24922493 .contextManagement(BetaContextManagementConfig.builder()
24932494 .addEdit(BetaCompact20260112Edit.builder().build())
from line 2507
25062507 
25072508 $countResponse = $client->beta->messages->countTokens(
25082509 messages: $messages,
2509 model: 'claude-opus-5',
2510 model: 'claude-opus-5-5',
25102511 betas: ['compact-2026-01-12'],
25112512 contextManagement: [
25122513 'edits' => [
from line 2526
25252526 
25262527 count_response = client.beta.messages.count_tokens(
25272528 betas: ["compact-2026-01-12"],
2528 model: "claude-opus-5",
2529 model: "claude-opus-5-5",
25292530 messages: messages,
25302531 context_management: {
25312532 edits: [{ type: "compact_20260112" }]
from line 2553
25522553 -H "anthropic-beta: compact-2026-01-12" \
25532554 -H "content-type: application/json" \
25542555 -d '{
2555 "model": "claude-opus-5",
2556 "model": "claude-opus-5-5",
25562557 "max_tokens": 4096,
25572558 "messages": [
25582559 {
from line 2583
25822583 --beta compact-2026-01-12 \
25832584 --transform 'content.#(type=="text").text' \
25842585 --raw-output <<'YAML'
2585 model: claude-opus-5
2586 model: claude-opus-5-5
25862587 max_tokens: 4096
25872588 messages:
25882589 - role: user
from line 2608
26072608 
26082609 response = client.beta.messages.create(
26092610 betas=["compact-2026-01-12"],
2610 model="claude-opus-5",
2611 model="claude-opus-5-5",
26112612 max_tokens=4096,
26122613 messages=messages,
26132614 context_management={
from line 2645
26442645 
26452646 const response = await client.beta.messages.create({
26462647 betas: ["compact-2026-01-12"],
2647 model: "claude-opus-5",
2648 model: "claude-opus-5-5",
26482649 max_tokens: 4096,
26492650 messages,
26502651 context_management: {
from line 2688
26872688 var parameters = new MessageCreateParams
26882689 {
26892690 Betas = ["compact-2026-01-12"],
2690 Model = "claude-opus-5",
2691 Model = "claude-opus-5-5",
26912692 MaxTokens = 4096,
26922693 Messages = messages,
26932694 ContextManagement = new BetaContextManagementConfig
from line 2736
27352736 messages = append(messages, anthropic.NewBetaUserMessage(anthropic.NewBetaTextBlock(userMessage)))
27362737 
27372738 response, err := client.Beta.Messages.New(context.TODO(), anthropic.BetaMessageNewParams{
2738 Model: anthropic.ModelClaudeOpus5,
2739 Model: anthropic.ModelClaudeOpus5_5,
27392740 MaxTokens: 4096,
27402741 Messages: messages,
27412742 ContextManagement: anthropic.BetaContextManagementConfigParam{
from line 2791
27902791 
27912792 MessageCreateParams params = MessageCreateParams.builder()
27922793 .addBeta("compact-2026-01-12")
2793 .model("claude-opus-5")
2794 .model("claude-opus-5-5")
27942795 .maxTokens(4096L)
27952796 .messages(messages)
27962797 .contextManagement(BetaContextManagementConfig.builder()
from line 2826
28252826 $response = $client->beta->messages->create(
28262827 maxTokens: 4096,
28272828 messages: $messages,
2828 model: 'claude-opus-5',
2829 model: 'claude-opus-5-5',
28292830 betas: ['compact-2026-01-12'],
28302831 contextManagement: [
28312832 'edits' => [
from line 2862
28612862 
28622863 response = client.beta.messages.create(
28632864 betas: ["compact-2026-01-12"],
2864 model: "claude-opus-5",
2865 model: "claude-opus-5-5",
28652866 max_tokens: 4096,
28662867 messages: messages,
28672868 context_management: {
from line 2886
28852886 ```
28862887</CodeGroup>
28872888 
2888On Claude Fable 5.1, remove the `thinking` and `redacted_thinking` blocks from any assistant turn you re-insert after the compaction block, or send `thinking.block_binding.prefix_mismatch_behavior: "drop_block"` with the `thinking-binding-controls-2026-08-01` [beta header](https://platform.claude.com/docs/en/api/beta-headers). Those blocks were produced when the full history was present, so they no longer pass the [conversation check](https://platform.claude.com/docs/en/build-with-claude/thinking#preserved-in-conversation). Where the check is enforced, the continuation request is rejected with a 400 error. The preserved text and tool blocks can stay as they are. Letting the API summarize everything, without re-inserting earlier turns, avoids this.
2889On Claude Fable 5.1 and Claude Opus 5.5, remove the `thinking` and `redacted_thinking` blocks from any assistant turn you re-insert after the compaction block, or send `thinking.block_binding.prefix_mismatch_behavior: "drop_block"` with the `thinking-binding-controls-2026-08-01` [beta header](https://platform.claude.com/docs/en/api/beta-headers). Those blocks were produced when the full history was present, so they no longer pass the [conversation check](https://platform.claude.com/docs/en/build-with-claude/thinking#preserved-in-conversation). Where the check is enforced, the continuation request is rejected with a 400 error. The preserved text and tool blocks can stay as they are. Letting the API summarize everything, without re-inserting earlier turns, avoids this.
28892890 
28902891Here's an example that uses `pause_after_compaction` to preserve the prior exchange and the current user message (three messages total) verbatim instead of summarizing them:
28912892 
from line 2901
29002901 -H "anthropic-beta: compact-2026-01-12" \
29012902 -H "content-type: application/json" \
29022903 -d '{
2903 "model": "claude-opus-5",
2904 "model": "claude-opus-5-5",
29042905 "max_tokens": 4096,
29052906 "messages": [
29062907 {
from line 2932
29312932 --beta compact-2026-01-12 \
29322933 --transform 'content.#(type=="text").text' \
29332934 --raw-output <<'YAML'
2934 model: claude-opus-5
2935 model: claude-opus-5-5
29352936 max_tokens: 4096
29362937 messages:
29372938 - role: user
from line 2960
29592960 
29602961 response = client.beta.messages.create(
29612962 betas=["compact-2026-01-12"],
2962 model="claude-opus-5",
2963 model="claude-opus-5-5",
29632964 max_tokens=4096,
29642965 messages=messages,
29652966 context_management={
from line 2992
29912992 # Continue the request with the compacted context + preserved messages
29922993 response = client.beta.messages.create(
29932994 betas=["compact-2026-01-12"],
2994 model="claude-opus-5",
2995 model="claude-opus-5-5",
29952996 max_tokens=4096,
29962997 messages=messages_after_compaction,
29972998 context_management={"edits": [{"type": "compact_20260112"}]},
from line 3026
30253026 
30263027 let response = await client.beta.messages.create({
30273028 betas: ["compact-2026-01-12"],
3028 model: "claude-opus-5",
3029 model: "claude-opus-5-5",
30293030 max_tokens: 4096,
30303031 messages,
30313032 context_management: {
from line 3058
30573058 // Continue the request with the compacted context + preserved messages
30583059 response = await client.beta.messages.create({
30593060 betas: ["compact-2026-01-12"],
3060 model: "claude-opus-5",
3061 model: "claude-opus-5-5",
30613062 max_tokens: 4096,
30623063 messages: messagesAfterCompaction,
30633064 context_management: {
from line 3100
30993100 var response = await client.Beta.Messages.Create(new()
31003101 {
31013102 Betas = ["compact-2026-01-12"],
3102 Model = "claude-opus-5",
3103 Model = "claude-opus-5-5",
31033104 MaxTokens = 4096,
31043105 Messages = messages,
31053106 ContextManagement = new BetaContextManagementConfig
from line 3135
31343135 response = await client.Beta.Messages.Create(new()
31353136 {
31363137 Betas = ["compact-2026-01-12"],
3137 Model = "claude-opus-5",
3138 Model = "claude-opus-5-5",
31383139 MaxTokens = 4096,
31393140 Messages = messagesAfterCompaction,
31403141 ContextManagement = new BetaContextManagementConfig
from line 3190
31893190 }
31903191 
31913192 response, err := client.Beta.Messages.New(context.TODO(), anthropic.BetaMessageNewParams{
3192 Model: anthropic.ModelClaudeOpus5,
3193 Model: anthropic.ModelClaudeOpus5_5,
31933194 MaxTokens: 4096,
31943195 Messages: messages,
31953196 ContextManagement: compactEdit,
from line 3216
32153216 messagesAfterCompaction = append(messagesAfterCompaction, preserved...)
32163217 
32173218 response, err = client.Beta.Messages.New(context.TODO(), anthropic.BetaMessageNewParams{
3218 Model: anthropic.ModelClaudeOpus5,
3219 Model: anthropic.ModelClaudeOpus5_5,
32193220 MaxTokens: 4096,
32203221 Messages: messagesAfterCompaction,
32213222 ContextManagement: anthropic.BetaContextManagementConfigParam{
from line 3267
32663267 
32673268 MessageCreateParams params = MessageCreateParams.builder()
32683269 .addBeta("compact-2026-01-12")
3269 .model("claude-opus-5")
3270 .model("claude-opus-5-5")
32703271 .maxTokens(4096L)
32713272 .messages(messages)
32723273 .contextManagement(BetaContextManagementConfig.builder()
from line 3298
32973298 // Continue the request with the compacted context + preserved messages
32983299 MessageCreateParams continueParams = MessageCreateParams.builder()
32993300 .addBeta("compact-2026-01-12")
3300 .model("claude-opus-5")
3301 .model("claude-opus-5-5")
33013302 .maxTokens(4096L)
33023303 .messages(messagesAfterCompaction)
33033304 .contextManagement(BetaContextManagementConfig.builder()
from line 3340
33393340 $response = $client->beta->messages->create(
33403341 maxTokens: 4096,
33413342 messages: $messages,
3342 model: 'claude-opus-5',
3343 model: 'claude-opus-5-5',
33433344 betas: ['compact-2026-01-12'],
33443345 contextManagement: [
33453346 'edits' => [
from line 3368
33673368 $response = $client->beta->messages->create(
33683369 maxTokens: 4096,
33693370 messages: $messagesAfterCompaction,
3370 model: 'claude-opus-5',
3371 model: 'claude-opus-5-5',
33713372 betas: ['compact-2026-01-12'],
33723373 contextManagement: [
33733374 'edits' => [['type' => 'compact_20260112']]
from line 3402
34013402 
34023403 response = client.beta.messages.create(
34033404 betas: ["compact-2026-01-12"],
3404 model: "claude-opus-5",
3405 model: "claude-opus-5-5",
34053406 max_tokens: 4096,
34063407 messages: messages,
34073408 context_management: {
from line 3427
34263427 
34273428 response = client.beta.messages.create(
34283429 betas: ["compact-2026-01-12"],
3429 model: "claude-opus-5",
3430 model: "claude-opus-5-5",
34303431 max_tokens: 4096,
34313432 messages: messages_after_compaction,
34323433 context_management: {