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: {