mid-conversation-system-messages changedbuild-with-claude/mid-conversation-system-messages
Recorded here
Lines+96added
Lines−63removed
From line
14
where the diff opens
First seen
14 Aug 2026
this site's first read of the page
Recorded edits39to this page, all time
The whole hunk
from line 14, old and new numbered
/
from line 14
1414 - claude-mythos-5-1
1515 - claude-fable-5
1616 - claude-mythos-5
17 - claude-mythos-preview
1817 - claude-opus-5-5
1918 - claude-opus-5
2019 - claude-sonnet-5-5
from line 28
2928 Claude Platform on AWS: stable
3029 Claude Models on Google Cloud (Anthropic managed): stable
3130 Claude Models on Google Cloud (Google managed): stable
31 Microsoft Foundry: stable
3232---
3333
3434**API support**: Usage differs by product.
from line 43
4343<Note>
4444 Mid-conversation system messages are available on Claude Fable 5.2, [Claude Mythos 5.2](https://platform.claude.com/docs/en/models/mythos-5-2/overview), Claude Fable 5.1, [Claude Mythos 5.1](https://platform.claude.com/docs/en/models/mythos-5-1/overview), Claude Fable 5, [Claude Mythos 5](https://platform.claude.com/docs/en/models/mythos-5/overview), Claude Opus 5.5, Claude Opus 5, Claude Opus 4.8, Claude Sonnet 5.5, and Claude Haiku 5.5. This feature is not available on Claude Sonnet 5. Use the top-level `system` field there instead.
4545
46 [Mid-conversation tool changes](https://platform.claude.com/docs/en/build-with-claude/mid-conversation-system-messages#mid-conversation-tool-changes) are in beta on the same models. On the Claude API, Claude Platform on AWS, and Claude Models on Google Cloud (Anthropic managed), send the `inline-tools-2026-09-15` beta header, which also covers [defining a tool inside a `tool_addition` block](https://platform.claude.com/docs/en/build-with-claude/mid-conversation-system-messages#define-tools-in-a-message-beta). [Adding an MCP server that way](https://platform.claude.com/docs/en/build-with-claude/mid-conversation-system-messages#add-an-mcp-server-mid-conversation-beta) needs a second beta header, `mcp-client-2026-09-15`, which is available on the Claude API. The `mid-conversation-tool-changes-2026-07-01` header works for changes that name a tool by reference, on the Claude API, Amazon Bedrock, Claude Platform on AWS, Claude Models on Google Cloud (Anthropic managed), and Claude Models on Google Cloud (Google managed).
46 [Mid-conversation tool changes](https://platform.claude.com/docs/en/build-with-claude/mid-conversation-system-messages#mid-conversation-tool-changes) are in beta on the same models. Two beta headers enable these changes. Where both work on your platform, send `inline-tools-2026-09-15`:
4747
48 [Turn-scoped system messages](https://platform.claude.com/docs/en/build-with-claude/mid-conversation-system-messages#turn-scoped-system-messages) (`clear_at`) are in beta and require the `mid-conversation-system-clear-at-2026-08-21` beta header, on the same models and platforms as mid-conversation system messages.
48 * `inline-tools-2026-09-15` works on the Claude API, Claude Platform on AWS, Claude Models on Google Cloud (Anthropic managed), and Microsoft Foundry. It also covers [defining a tool inside a `tool_addition` block](https://platform.claude.com/docs/en/build-with-claude/mid-conversation-system-messages#define-tools-in-a-message-beta). [Adding an MCP server that way](https://platform.claude.com/docs/en/build-with-claude/mid-conversation-system-messages#add-an-mcp-server-mid-conversation-beta) also needs the `mcp-client-2026-09-15` beta header, which is available on the Claude API.
49 * `mid-conversation-tool-changes-2026-07-01` works on Claude Models on Google Cloud (Google managed) and Amazon Bedrock, and on the four platforms listed for `inline-tools-2026-09-15`. It doesn’t cover defining a tool inside a `tool_addition` block.
50
51 [Turn-scoped system messages](https://platform.claude.com/docs/en/build-with-claude/mid-conversation-system-messages#turn-scoped-system-messages) (`clear_at`) are in beta and require the `mid-conversation-system-clear-at-2026-08-21` beta header, on the [same models and platforms](https://platform.claude.com/docs/en/build-with-claude/mid-conversation-system-messages#feature-availability) as mid-conversation system messages.
4952</Note>
5053
5154## Mid-conversation tool changes
5255
53The `tools` array sits even earlier in the hashed request prefix than the top-level `system` field, so editing it invalidates the [prompt cache](https://platform.claude.com/docs/en/build-with-claude/prompt-caching) for the entire conversation. Mid-conversation tool changes are the tools counterpart to mid-conversation system messages. Instead of fixing the tool list for the lifetime of the conversation, you change which tools are offered to the model between turns: declare the full tool set in `tools` up front, then use `tool_addition` and `tool_removal` blocks to offer a tool to the model, or withdraw it, from a specific point in the conversation onward. The `tools` array itself never changes, so the cached prefix stays intact. Mid-conversation tool changes are in beta and use the `inline-tools-2026-09-15` beta header on the Claude API, Claude Platform on AWS, and Claude Models on Google Cloud (Anthropic managed).
56The `tools` array sits even earlier in the hashed request prefix than the top-level `system` field, so editing it invalidates the [prompt cache](https://platform.claude.com/docs/en/build-with-claude/prompt-caching) for the entire conversation. Mid-conversation tool changes are the tools counterpart to mid-conversation system messages. Instead of fixing the tool list for the lifetime of the conversation, you change which tools are offered to the model between turns. Declare the full tool set in `tools` up front, then use `tool_addition` and `tool_removal` blocks to offer a tool to the model, or withdraw it, from a specific point in the conversation onward. The `tools` array itself never changes, so the cached prefix stays intact. Mid-conversation tool changes are in beta and use the beta headers named earlier on this page.
5457
5558`tool_addition` and `tool_removal` are content blocks in the `content` array of a `role: "system"` message, and they can be mixed with `text` blocks in the same message. The message follows the placement rules for any mid-conversation system message, with one extra restriction after a paused turn (see [Limitations](https://platform.claude.com/docs/en/build-with-claude/mid-conversation-system-messages#limitations)), and the change applies from that point in the conversation onward. Each block’s `tool` field references a tool rather than defining one: `{"type": "tool_reference", "name": "..."}` names a tool declared in the request’s `tools` array, and [MCP connector](https://platform.claude.com/docs/en/agents-and-tools/mcp-connector) tools can be referenced individually with `mcp_tool_reference` (`server_name` and `name`) or as a whole toolset with `mcp_toolset_reference` (`server_name`). Referencing a name that is not declared in `tools` returns a 400 error (on the Claude API, with `error.details.error_code` set to `tool_reference_unresolved`). A `tool_addition` block can instead [carry the tool’s full definition](https://platform.claude.com/docs/en/build-with-claude/mid-conversation-system-messages#define-tools-in-a-message-beta), which the `mid-conversation-tool-changes-2026-07-01` header doesn’t support.
5659
from line 342
339342 import com.anthropic.models.beta.messages.BetaTool;
340343 import com.anthropic.models.beta.messages.MessageCreateParams;
341344 // ...
345
346 void main() {
342347 AnthropicClient client = AnthropicOkHttpClient.fromEnv();
343348
344349 // The full tool set is declared up front and never changes, so the
from line 380
375380 response.content().stream()
376381 .flatMap(block -> block.text().stream())
377382 .forEach(textBlock -> IO.println(textBlock.text()));
383 }
378384 ```
379385
380386 ```php PHP
from line 429
423429 );
424430
425431 foreach ($response->content as $block) {
426 if ($block->type === 'text') {
432 if ($block instanceof \Anthropic\Beta\Messages\BetaTextBlock) {
427433 echo $block->text, PHP_EOL;
428434 }
429435 }
from line 1041
10351041A few rules follow from where the definition renders:
10361042
10371043* **Declare what you know up front.** A tool you know about at the first request belongs in `tools`, with `defer_loading: true` and a later `tool_addition` reference if you don’t want to offer it to the model yet. Define by value only what is unknown at the first request or changes later.
1038* **Keep at least one non-deferred tool in `tools`.** A conversation whose `tools` array has no non-deferred tool is accepted, but the first tool it defines by value changes the start of the rendered prompt, which costs one full cache miss on that request. A [tool search tool](https://platform.claude.com/docs/en/agents-and-tools/tool-use/tool-search-tool) counts as non-deferred.
1044* **Keep at least one non-deferred tool in `tools`.** If every tool is deferred, the request gets a 400 error, unless it sends the `inline-tools-2026-09-15` header and `messages` holds a `tool_addition` block. Then the first tool defined by value costs one full cache miss. A [tool search tool](https://platform.claude.com/docs/en/agents-and-tools/tool-use/tool-search-tool) counts as non-deferred.
10391045* **Dated tool types keep their own beta headers.** If a server tool you define by value requires its own beta header, send that header on every later request in the conversation.
10401046* **`cache_control` goes on the block or in the definition, not both,** and counts toward the request’s breakpoint limit. A deferred definition can’t carry `cache_control`.
10411047
from line 1109
11031109 "messages": [
11041110 {
11051111 "role": "user",
1106 "content": "What'\''s on my calendar tomorrow?"
1112 "content": "What is on my calendar tomorrow?"
11071113 },
11081114 {
11091115 "role": "system",
from line 1153
11471153 - location
11481154 messages:
11491155 - role: user
1150 content: What's on my calendar tomorrow?
1156 content: What is on my calendar tomorrow?
11511157 # Make the calendar server's tools available from this point onward.
11521158 # The block names the server; it never holds a URL or token.
11531159 - role: system
from line 1196
11901196 },
11911197 ],
11921198 messages=[
1193 {"role": "user", "content": "What's on my calendar tomorrow?"},
1199 {"role": "user", "content": "What is on my calendar tomorrow?"},
11941200 # Make the calendar server's tools available from this point onward.
11951201 # The block names the server; it never holds a URL or token.
11961202 {
from line 1256
12501256 }
12511257 ],
12521258 messages: [
1253 { role: "user", content: "What's on my calendar tomorrow?" },
1259 { role: "user", content: "What is on my calendar tomorrow?" },
12541260 // Make the calendar server's tools available from this point onward.
12551261 // The block names the server; it never holds a URL or token.
12561262 {
from line 1330
13241330 ],
13251331 Messages =
13261332 [
1327 new BetaUserMessageParam { Content = "What's on my calendar tomorrow?" },
1333 new BetaUserMessageParam { Content = "What is on my calendar tomorrow?" },
13281334 // Make the calendar server's tools available from this point onward.
13291335 // The block names the server; it never holds a URL or token.
13301336 new BetaSystemMessageParam
from line 1397
13911397 }},
13921398 },
13931399 Messages: []anthropic.BetaMessageParam{
1394 anthropic.NewBetaUserMessage(anthropic.NewBetaTextBlock("What's on my calendar tomorrow?")),
1400 anthropic.NewBetaUserMessage(anthropic.NewBetaTextBlock("What is on my calendar tomorrow?")),
13951401 // Make the calendar server's tools available from this point onward.
13961402 // The block names the server; it never holds a URL or token.
13971403 anthropic.NewBetaSystemMessage(anthropic.BetaSystemMessageOutputConfigParam{}, anthropic.BetaSystemMessageParamContentUnion{
from line 1472
14661472 .authorizationToken("YOUR_TOKEN")
14671473 .build())
14681474 .addTool(weatherTool)
1469 .addUserMessage("What's on my calendar tomorrow?")
1475 .addUserMessage("What is on my calendar tomorrow?")
14701476 // Make the calendar server's tools available from this point onward.
14711477 // The block names the server; it never holds a URL or token.
14721478 .addSystemMessageOfBlocks(List.of(
from line 1541
15351541 ],
15361542 ],
15371543 messages: [
1538 ['role' => 'user', 'content' => "What's on my calendar tomorrow?"],
1544 ['role' => 'user', 'content' => 'What is on my calendar tomorrow?'],
15391545 // Make the calendar server's tools available from this point onward.
15401546 // The block names the server; it never holds a URL or token.
15411547 [
from line 1609
16031609 }
16041610 ],
16051611 messages: [
1606 { role: "user", content: "What's on my calendar tomorrow?" },
1612 { role: "user", content: "What is on my calendar tomorrow?" },
16071613 # Make the calendar server's tools available from this point onward.
16081614 # The block names the server; it never holds a URL or token.
16091615 {
from line 1654
16481654
16491655A few situations where this matters:
16501656
1651* **Mid-session policy or persona changes.** A long agentic session needs a new constraint (“from now on, write all SQL as parameterized queries”) after dozens of cached turns. Adding it to the top-level `system` field would re-process the entire history.
1657* **Mid-session policy or persona changes.** A long agentic session needs a new constraint (“from now on, write all SQL as parameterized queries”) after dozens of cached turns. Adding it to the top-level `system` field would reprocess the entire history.
16521658* **Per-turn context that must be authoritative.** You want to inject a freshness note, a session deadline, or a tool-availability change with system-level weight, and it changes too often to live in the cached prefix.
16531659* **Per-turn reminders that shouldn’t pile up.** A harness nudges the model after each batch of tool results (“request independent reads together,” “the user hasn’t heard from you in a while”) and needs the model to receive only the newest copy. A [turn-scoped system message](https://platform.claude.com/docs/en/build-with-claude/mid-conversation-system-messages#turn-scoped-system-messages) renders for one turn and then costs nothing, without deleting anything from the history.
16541660* **State changes your application observes.** Your application detects something Claude should treat as an operator-level fact: files changed on disk, the user toggled an auto-approve setting, available tools changed, or the remaining token budget dropped below a threshold.
from line 1833
18271833 };
18281834
18291835 var response = await client.Messages.Create(parameters);
1830 Console.WriteLine(response);
1836 foreach (var block in response.Content)
1837 {
1838 if (block.TryPickText(out var textBlock))
1839 {
1840 Console.WriteLine(textBlock.Text);
1841 }
1842 }
18311843 ```
18321844
18331845 ```go Go
from line 1882
18701882 ```java Java
18711883 import com.anthropic.models.messages.CacheControlEphemeral;
18721884 // ...
1885
1886 void main() {
18731887 AnthropicClient client = AnthropicOkHttpClient.fromEnv();
18741888
18751889 MessageCreateParams params = MessageCreateParams.builder()
from line 1907
18931907 response.content().stream()
18941908 .flatMap(block -> block.text().stream())
18951909 .forEach(textBlock -> IO.println(textBlock.text()));
1910 }
18961911 ```
18971912
18981913 ```php PHP
from line 1927
19121927 // request is still read from cache.
19131928 ['role' => 'system', 'content' => 'From now on, every suggestion must include explicit type annotations.']
19141929 ],
1915 model: 'claude-opus-5-5',
1930 model: Model::CLAUDE_OPUS_5_5,
19161931 // Automatic prompt caching: each request caches the conversation so far,
19171932 // and the next request reads the unchanged prefix from cache.
19181933 cacheControl: CacheControlEphemeral::with(),
from line 1935
19201935 );
19211936
19221937 foreach ($response->content as $block) {
1923 if ($block->type === 'text') {
1938 if ($block instanceof \Anthropic\Messages\TextBlock) {
19241939 echo $block->text, PHP_EOL;
19251940 }
19261941 }
from line 1971
19561971
19571972This example enables [automatic caching](https://platform.claude.com/docs/en/build-with-claude/prompt-caching#automatic-caching) with the top-level `cache_control` field. Prompt caching is opt-in: if a request has no `cache_control` field (automatic or an [explicit breakpoint](https://platform.claude.com/docs/en/build-with-claude/prompt-caching#explicit-cache-breakpoints)), nothing is cached and every request pays the regular input token price for the full conversation. With caching enabled, appending the system message leaves the already-cached turns unchanged, so the request that carries the new instruction still reads them from cache instead of processing them again. Caching also requires the conversation to meet the [minimum cacheable prompt length](https://platform.claude.com/docs/en/build-with-claude/prompt-caching#cache-limitations); an example as short as this one falls below it, so `cache_creation_input_tokens` and `cache_read_input_tokens` stay at 0 until the conversation grows.
19581973
1959A mid-conversation system message that carries content (`text`, `tool_addition`, or `tool_removal` blocks) must immediately follow a `user` turn (or an `assistant` turn ending in a server tool result), and must either be the last entry in `messages` or be immediately followed by an `assistant` turn. A `user` message that carries `tool_result` blocks counts: in an agentic loop you can place the system message right after the tool results, before Claude’s next turn. Any other position for a message that carries content, including between an `assistant` `tool_use` block and the `tool_result` that answers it, returns a 400 error. A message with empty `content` that only sets [`output_config.effort`](https://platform.claude.com/docs/en/build-with-claude/effort-per-message) is accepted anywhere in `messages`. Consecutive `system` messages are judged together, so an effort-only message next to one that carries content follows the rule for content.
1974A mid-conversation system message that carries content (`text`, `tool_addition`, or `tool_removal` blocks) must immediately follow a `user` turn (or an `assistant` turn ending in a server tool result). It must then end `messages` or be immediately followed by an `assistant` turn. A `user` message that carries `tool_result` blocks counts: in an agentic loop you can place the system message right after the tool results, before Claude’s next turn.
19601975
1976Any other position for a message that carries content, including between an `assistant` `tool_use` block and the `tool_result` that answers it, returns a 400 error. A message with empty `content` that only sets [`output_config.effort`](https://platform.claude.com/docs/en/build-with-claude/effort-per-message) can follow any turn, but goes after everything already sent. Consecutive `system` messages are judged together, so an effort-only message next to one that carries content follows the rule for content.
1977
19611978### Placement after tool results
19621979
19631980In an [agentic loop](https://platform.claude.com/docs/en/agents-and-tools/tool-use/overview), the system message goes after the `user` message that delivers the tool results. On most models, this is also where your application can relay input that the user typed while Claude was working, so the new context is absorbed without restarting the turn (for Claude Sonnet 5.5 and Claude Haiku 5.5, see the end of this section):
from line 2028
20112028
20122029To scope a `role: "system"` message to the current turn, set its `clear_at` field. It takes one of two values:
20132030
2014* `"never"` (the default): the message renders at its position on every request that includes it. Omitting the field is identical.
2031* `"never"` (the default): the message renders at its position on every request that includes it. Omitting the field has the same effect.
20152032* `"next_user_message"`: the message is **turn-scoped**. Its text renders only while no `role: "user"` message comes after it in `messages`. A user message that carries only `tool_result` blocks counts as a user message here. Once a later user message exists, the message is **cleared**: it stays in the array but renders nothing and costs no input tokens, on that request and every later one.
20162033
20172034Turn-scoped system messages are in beta. Include the [beta header](https://platform.claude.com/docs/en/api/beta-headers) `mid-conversation-system-clear-at-2026-08-21`. Without it, `clear_at` is rejected as an unknown field.
from line 2043
20262043
20272044The main use is a per-turn reminder in a tool loop. Each time you want the model to see the reminder, append it after the `tool_result` message. Leave every earlier copy where it is. The model sees only the copies that come after the last user message, so the reminder never piles up. Nothing earlier in `messages` changes, so the [prompt cache](https://platform.claude.com/docs/en/build-with-claude/prompt-caching) keeps matching. On Claude Fable 5.2, Claude Mythos 5.2, Claude Fable 5.1, Claude Mythos 5.1, Claude Opus 5.5, Claude Sonnet 5.5, and Claude Haiku 5.5, this also keeps later [thinking blocks valid](https://platform.claude.com/docs/en/build-with-claude/thinking#preserved-in-conversation). Deleting an earlier reminder would change the conversation before those blocks, so they would fail the prefix check. A cleared message stays in the array and leaves the conversation before those blocks unchanged.
20282045
2029The following request is a later step of an agent loop. `messages[3]` rendered on the earlier request, when it was the last message in the array. Once `messages[5]` (a later user message) exists, `messages[3]` is cleared: the cleared message stays in the array, so the conversation before the thinking block in `messages[4]` is unchanged, but the model no longer receives its text. `messages[6]` and `messages[7]` both render, in order.
2046The following request is a later step of an agent loop:
20302047
2048* `messages[3]` rendered on the earlier request, as the last message in the array.
2049* `messages[5]` is a later user message, so `messages[3]` is cleared. The cleared message stays in the array, so the conversation before the thinking block in `messages[4]` is unchanged, but the model no longer receives its text.
2050* `messages[6]` and `messages[7]` both render, in order.
2051
20312052```json
20322053{
2033 "model": "claude-fable-5-1",
2054 "model": "claude-opus-5-5",
20342055 "max_tokens": 16000,
20352056 "messages": [
20362057 { "role": "user", "content": "Fix the failing test." },
from line 2123
21022123Rules for turn-scoped messages:
21032124
21042125* **Resend cleared messages verbatim.** A cleared message is still part of the conversation history. Rebuilding it from current state (a fresh token count, a timestamp), dropping it as redundant, or changing its `clear_at` value is an edit to an earlier message. On Claude Fable 5.2, Claude Mythos 5.2, Claude Fable 5.1, Claude Mythos 5.1, Claude Opus 5.5, Claude Sonnet 5.5, and Claude Haiku 5.5, every thinking block produced after it fails the [prefix check](https://platform.claude.com/docs/en/build-with-claude/thinking#preserved-in-conversation).
2126
21052127* **Text only.** `content` is one or more `text` blocks (or a string). `tool_addition` and `tool_removal` blocks return a 400 error on a turn-scoped message, and so does `output_config`. Use a separate `role: "system"` message without `clear_at` for those.
2106* **No `cache_control` on its blocks.** A cleared message is never part of a cache key, so a breakpoint on it could never match. Put the breakpoint on the last block of the preceding user turn instead, as the example does. The top-level [automatic caching](https://platform.claude.com/docs/en/build-with-claude/prompt-caching#automatic-caching) field skips turn-scoped messages when it picks a breakpoint. On the request that clears a message, the reusable cached prefix ends at the user turn before it, so only the one assistant turn between that message and the new user message is reprocessed.
2107* **Placement rules still apply**, cleared or not. A turn-scoped message must follow a `user` turn (or an `assistant` turn ending in a server tool result) and precede an `assistant` turn or end the array, like any mid-conversation system message. One that ends the array always renders. One followed directly by another `user` message is a 400 error, not a cleared message: put all of a tool round’s results in one user message and the reminders after it.
2108* **Assistant turns don’t clear it.** A prefilled or [paused](https://platform.claude.com/docs/en/build-with-claude/handling-stop-reasons#pause-turn) assistant turn after the message, or a server-side tool loop, adds no user message, so the message still renders on that continuation. To keep a reminder in view through a client-side tool loop, append it again after each `tool_result` message.
2128
2129* **No `cache_control` on its blocks.** A cleared message is never part of a cache key, so a breakpoint on it could never match. Put the breakpoint on the last block of the preceding user turn instead, as the example does. The top-level [automatic caching](https://platform.claude.com/docs/en/build-with-claude/prompt-caching#automatic-caching) field skips turn-scoped messages when it picks a breakpoint. On the request that appends the next user message, a cache breakpoint on the turn that the cleared message followed, or anywhere earlier, still matches. With the breakpoint on that turn, only the one assistant turn between the cleared message and the new user message is reprocessed.
2130
2131* **Placement rules still apply**, cleared or not. As with any mid-conversation system message that carries content, a turn-scoped message:
2132
2133 * Must follow a `user` turn, or an `assistant` turn ending in a server tool result.
2134 * Must precede an `assistant` turn or end the array. If it ends the array, it always renders.
2135 * Can’t have a `user` message directly after it: the request returns a 400 error. A later user message clears it only when an `assistant` turn comes between them. In a tool loop, put all of a round’s tool results in one user message, with the reminders after that message.
2136 * Is judged together with any `system` message directly before or after it. These placement rules apply to the group as a whole.
2137
2138* **Assistant turns don’t clear it.** An assistant turn [paused with `pause_turn`](https://platform.claude.com/docs/en/build-with-claude/handling-stop-reasons#pause-turn) after the message, or a server-side tool loop, adds no user message, so the message still renders on that continuation. To keep a reminder in view through a client-side tool loop, append it again after each `tool_result` message.
2139
21092140* **Token counting follows what renders.** A cleared message adds nothing to `usage.input_tokens` or to a [token count](https://platform.claude.com/docs/en/build-with-claude/token-counting).
2110* **Imported history.** In a transcript you construct in one step (few-shot examples, a migrated conversation), a turn-scoped message that already has an assistant turn and a user message after it is cleared from the first request and never renders. That is the right state for a per-turn reminder you are carrying over. Leave `clear_at` unset only on a message that should render on every request.
21112141
2142* **History you write yourself.** In few-shot examples or a transcript from another system, a turn-scoped message with an assistant turn and a user message after it never renders. If the model should see that text, leave `clear_at` unset, and the message renders on every request. If not, leave the message out. This applies only to history you write yourself: when you resend a conversation with the thinking blocks Claude returned, keep each message exactly as it was, `clear_at` included. See **Resend cleared messages verbatim**.
2143
21122144The validation errors are:
21132145
21142146```text wrap
from line 2152
21202152messages.3.content.0: cache_control is not permitted on a turn-scoped system message (clear_at: 'next_user_message')
21212153```
21222154
2123The first is the error returned without the beta header. On [Claude in Amazon Bedrock](https://platform.claude.com/docs/en/build-with-claude/claude-in-amazon-bedrock), Claude Platform on AWS, Claude Models on Google Cloud (Anthropic managed), and Claude Models on Google Cloud (Google managed), send the beta value in the `anthropic-beta` header, as on the Claude API (see [Beta headers](https://platform.claude.com/docs/en/api/beta-headers)). With the Amazon Bedrock [InvokeModel API](https://platform.claude.com/docs/en/build-with-claude/claude-on-amazon-bedrock-legacy), put it in the `anthropic_beta` array of the request body instead.
2155The first is the error returned without the beta header. Send `mid-conversation-system-clear-at-2026-08-21` in the `anthropic-beta` header (see [Beta headers](https://platform.claude.com/docs/en/api/beta-headers)). With the InvokeModel API on [Amazon Bedrock (`bedrock-runtime`)](https://platform.claude.com/docs/en/build-with-claude/claude-on-amazon-bedrock-legacy), put it in the `anthropic_beta` array of the request body instead.
21242156
2125Through the SDK, set `clear_at` (csharp, go: `ClearAt`; java: `.clearAt()`; php: `clearAt`) on the `role: "system"` entry in `messages` and send the beta header. The following example appends a turn-scoped reminder after the user turn; on the next request, once a later user message exists, the reminder stays in the array but no longer renders:
2157Set `clear_at` on the `role: "system"` entry in `messages` and send the beta header. The following example appends a turn-scoped reminder after the user turn. On the next request, once a later user message exists, the reminder stays in the array but no longer renders:
21262158
21272159<CodeGroup>
21282160 ```bash cURL
from line 2164
21322164 -H "anthropic-beta: mid-conversation-system-clear-at-2026-08-21" \
21332165 -H "content-type: application/json" \
21342166 -d '{
2135 "model": "claude-fable-5-1",
2167 "model": "claude-opus-5-5",
21362168 "max_tokens": 4096,
21372169 "messages": [
21382170 {"role": "user", "content": "Draft a short status update on the database migration for the team channel."},
from line 2176
21442176 ```bash CLI
21452177 ant beta:messages create \
21462178 --beta mid-conversation-system-clear-at-2026-08-21 <<'YAML'
2147 model: claude-fable-5-1
2179 model: claude-opus-5-5
21482180 max_tokens: 4096
21492181 messages:
21502182 - role: user
21512183 content: Draft a short status update on the database migration for the team channel.
2152 # Turn-scoped reminder: renders for this turn, then clears once a later user message exists.
2184 # Turn-scoped reminder: renders for this turn, then stops rendering once a later user message exists.
21532185 - role: system
21542186 clear_at: next_user_message
21552187 content: "The reader is on call: keep this reply under 50 words."
from line 2192
21602192 client = anthropic.Anthropic()
21612193
21622194 response = client.beta.messages.create(
2163 model="claude-fable-5-1",
2195 model="claude-opus-5-5",
21642196 max_tokens=4096,
21652197 messages=[
21662198 {
from line 2199
21672199 "role": "user",
21682200 "content": "Draft a short status update on the database migration for the team channel.",
21692201 },
2170 # Turn-scoped reminder: renders for this turn, then clears once a later user message exists.
2202 # Turn-scoped reminder: renders for this turn, then stops rendering once a later user message exists.
21712203 {
21722204 "role": "system",
21732205 "clear_at": "next_user_message",
from line 2218
21862218 const client = new Anthropic();
21872219
21882220 const response = await client.beta.messages.create({
2189 model: "claude-fable-5-1",
2221 model: "claude-opus-5-5",
21902222 max_tokens: 4096,
21912223 messages: [
21922224 {
from line 2225
21932225 role: "user",
21942226 content: "Draft a short status update on the database migration for the team channel."
21952227 },
2196 // Turn-scoped reminder: renders for this turn, then clears once a later user message exists.
2228 // Turn-scoped reminder: renders for this turn, then stops rendering once a later user message exists.
21972229 {
21982230 role: "system",
21992231 clear_at: "next_user_message",
from line 2251
22192251
22202252 var response = await client.Beta.Messages.Create(new MessageCreateParams
22212253 {
2222 Model = Messages::Model.ClaudeFable5_1,
2254 Model = Messages::Model.ClaudeOpus5_5,
22232255 MaxTokens = 4096,
22242256 Messages =
22252257 [
22262258 new BetaUserMessageParam { Content = "Draft a short status update on the database migration for the team channel." },
2227 // Turn-scoped reminder: renders for this turn, then clears once a later user message exists.
2259 // Turn-scoped reminder: renders for this turn, then stops rendering once a later user message exists.
22282260 new BetaSystemMessageParam
22292261 {
22302262 ClearAt = ClearAt.NextUserMessage,
from line 2279
22472279 client := anthropic.NewClient()
22482280
22492281 response, err := client.Beta.Messages.New(context.Background(), anthropic.BetaMessageNewParams{
2250 Model: anthropic.ModelClaudeFable5_1,
2282 Model: anthropic.ModelClaudeOpus5_5,
22512283 MaxTokens: 4096,
22522284 Messages: []anthropic.BetaMessageParam{
22532285 anthropic.NewBetaUserMessage(anthropic.NewBetaTextBlock("Draft a short status update on the database migration for the team channel.")),
2254 // Turn-scoped reminder: renders for this turn, then clears once a later user message exists.
2286 // Turn-scoped reminder: renders for this turn, then stops rendering once a later user message exists.
22552287 {OfSystem: &anthropic.BetaSystemMessageParam{
22562288 ClearAt: anthropic.BetaSystemMessageParamClearAtNextUserMessage,
22572289 Content: []anthropic.BetaSystemMessageParamContentUnion{{OfText: &anthropic.BetaTextBlockParam{Text: "The reader is on call: keep this reply under 50 words."}}},
from line 2307
22752307 import com.anthropic.models.beta.messages.BetaMessage;
22762308 import com.anthropic.models.beta.messages.BetaSystemMessageParam;
22772309 import com.anthropic.models.beta.messages.MessageCreateParams;
2278 import com.anthropic.models.messages.Model;
2310 // ...
22792311
22802312 void main() {
22812313 AnthropicClient client = AnthropicOkHttpClient.fromEnv();
22822314
22832315 MessageCreateParams params = MessageCreateParams.builder()
2284 .model(Model.CLAUDE_FABLE_5_1)
2316 .model(Model.CLAUDE_OPUS_5_5)
22852317 .maxTokens(4096L)
22862318 .addBeta(AnthropicBeta.MID_CONVERSATION_SYSTEM_CLEAR_AT_2026_08_21)
22872319 .addUserMessage("Draft a short status update on the database migration for the team channel.")
2288 // Turn-scoped reminder: renders for this turn, then clears once a later user message exists.
2320 // Turn-scoped reminder: renders for this turn, then stops rendering once a later user message exists.
22892321 .addMessage(BetaSystemMessageParam.builder()
22902322 .clearAt(BetaSystemMessageParam.ClearAt.NEXT_USER_MESSAGE)
22912323 .content("The reader is on call: keep this reply under 50 words.")
from line 2334
23022334 ```php PHP
23032335 use Anthropic\Beta\AnthropicBeta;
23042336 use Anthropic\Beta\Messages\BetaMessageParam;
2305 use Anthropic\Client;
2337 use Anthropic\Beta\Messages\BetaTextBlock;
2338 // ...
23062339
23072340 $client = new Client();
23082341
23092342 $response = $client->beta->messages->create(
2310 model: 'claude-fable-5-1',
2343 model: Model::CLAUDE_OPUS_5_5,
23112344 maxTokens: 4096,
23122345 messages: [
23132346 BetaMessageParam::with(role: 'user', content: 'Draft a short status update on the database migration for the team channel.'),
2314 // Turn-scoped reminder: renders for this turn, then clears once a later user message exists.
2347 // Turn-scoped reminder: renders for this turn, then stops rendering once a later user message exists.
23152348 BetaMessageParam::with(
23162349 role: 'system',
23172350 clearAt: 'next_user_message',
from line 2355
23222355 );
23232356
23242357 foreach ($response->content as $block) {
2325 if ($block->type === 'text') {
2358 if ($block instanceof BetaTextBlock) {
23262359 echo $block->text, PHP_EOL;
23272360 }
23282361 }
from line 2365
23322365 client = Anthropic::Client.new
23332366
23342367 response = client.beta.messages.create(
2335 model: Anthropic::Model::CLAUDE_FABLE_5_1,
2368 model: Anthropic::Model::CLAUDE_OPUS_5_5,
23362369 max_tokens: 4096,
23372370 messages: [
2338 {role: "user", content: "Draft a short status update on the database migration for the team channel."},
2339 # Turn-scoped reminder: renders for this turn, then clears once a later user message exists.
2340 {role: "system", clear_at: :next_user_message, content: "The reader is on call: keep this reply under 50 words."}
2371 { role: "user", content: "Draft a short status update on the database migration for the team channel." },
2372 # Turn-scoped reminder: renders for this turn, then stops rendering once a later user message exists.
2373 { role: "system", clear_at: :next_user_message, content: "The reader is on call: keep this reply under 50 words." }
23412374 ],
23422375 betas: [Anthropic::AnthropicBeta::MID_CONVERSATION_SYSTEM_CLEAR_AT_2026_08_21]
23432376 )
from line 2395
23622395## Limitations
23632396
23642397* **Not for the first message.** A `system` message that carries content cannot be the first entry in `messages`. Use the top-level `system` field for instructions that apply from the very start.
2365* **Placement is constrained.** A `system` message that carries content (`text`, `tool_addition`, or `tool_removal` blocks) must immediately follow a `user` turn (including a `user` turn that carries `tool_result` blocks) or an `assistant` turn ending in a server tool result, and must precede an `assistant` turn or end the array. It cannot sit between a `tool_use` block and its `tool_result`. Placing it elsewhere returns a 400 error. One exception: `tool_addition` and `tool_removal` blocks are not accepted immediately after a [paused](https://platform.claude.com/docs/en/build-with-claude/handling-stop-reasons#pause-turn) `assistant` turn (one ending in a server tool result), though `text` blocks are; resume the paused turn first, then send the tool change in the next `system` message. A message with empty `content` that only sets [`output_config.effort`](https://platform.claude.com/docs/en/build-with-claude/effort-per-message) renders nothing at its position and is accepted anywhere in `messages`, including first or between an `assistant` turn and a `user` turn. Consecutive `system` messages are judged together, so adding a text-carrying message next to an effort-only one makes the whole group follow the content rule.
2398* **Placement is constrained.** A `system` message that carries content (`text`, `tool_addition`, or `tool_removal` blocks) must immediately follow a `user` turn or an `assistant` turn ending in a server tool result. A `user` turn that carries `tool_result` blocks counts. The message must precede an `assistant` turn or end the array. It cannot sit between a `tool_use` block and its `tool_result`. Placing it elsewhere returns a 400 error. One exception: `tool_addition` and `tool_removal` blocks are not accepted immediately after a [paused](https://platform.claude.com/docs/en/build-with-claude/handling-stop-reasons#pause-turn) `assistant` turn (one ending in a server tool result), though `text` blocks are. Resume the paused turn first, then send the tool change in the next `system` message. A message with empty `content` that only sets [`output_config.effort`](https://platform.claude.com/docs/en/build-with-claude/effort-per-message) renders nothing at its position. It can follow any turn, or come first, but goes after everything already sent. Consecutive `system` messages are judged together, so adding a text-carrying message next to an effort-only one makes the whole group follow the content rule.
23662399* **Turn-scoped messages are text-only and re-sent verbatim.** A `clear_at: "next_user_message"` message carries no `tool_addition`, `tool_removal`, `output_config`, or `cache_control`, and once cleared it must stay in `messages` byte-for-byte on later requests. See [Turn-scoped system messages](https://platform.claude.com/docs/en/build-with-claude/mid-conversation-system-messages#turn-scoped-system-messages).
23672400* **Not a place for untrusted content.** Claude treats system content as operator instructions and follows it. Do not place text from outside the conversation, such as raw tool output, retrieved documents, or web content, directly in a system message; doing so gives that text operator-level authority. Keep that data in `tool_result` blocks and continue to follow [Mitigate jailbreaks and prompt injections](https://platform.claude.com/docs/en/test-and-evaluate/strengthen-guardrails/mitigate-jailbreaks).
23682401
from line 2407
23742407 </Card>
23752408
23762409 <Card title="Cache diagnostics" icon="magnifying-glass" href="https://platform.claude.com/docs/en/build-with-claude/cache-diagnostics">
2377 Find out exactly where two requests diverged when a cache hit you expected does not occur.
2410 Find out what changed between two requests when a cache hit you expected does not occur.
23782411 </Card>
23792412
23802413 <Card title="Using the Messages API" icon="message" href="https://platform.claude.com/docs/en/build-with-claude/working-with-messages">
from line 2434
24012434* Availability: Available
24022435* Usage: Append a message with `role` `"system"` to `messages` at the point where the instruction starts to apply.
24032436
2404| Status | Cloud platforms | Models |
2405| --------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
2406| Available | Claude API, [Claude Platform on AWS](https://platform.claude.com/docs/en/build-with-claude/claude-platform-on-aws), [Claude Models on Google Cloud (Anthropic managed)](https://platform.claude.com/docs/en/build-with-claude/claude-models-on-google-cloud/anthropic-managed), [Claude Models on Google Cloud (Google managed)](https://platform.claude.com/docs/en/build-with-claude/claude-models-on-google-cloud/google-managed) | [Claude Fable 5.2](https://platform.claude.com/docs/en/models/fable-5-2/overview), [Claude Mythos 5.2](https://platform.claude.com/docs/en/models/mythos-5-2/overview), [Claude Fable 5.1](https://platform.claude.com/docs/en/models/fable-5-1/overview), [Claude Mythos 5.1](https://platform.claude.com/docs/en/models/mythos-5-1/overview), [Claude Fable 5](https://platform.claude.com/docs/en/models/fable-5/overview), [Claude Mythos 5](https://platform.claude.com/docs/en/models/mythos-5/overview), Claude Mythos Preview, [Claude Opus 5.5](https://platform.claude.com/docs/en/models/opus-5-5/overview), [Claude Opus 5](https://platform.claude.com/docs/en/models/opus-5/overview), [Claude Sonnet 5.5](https://platform.claude.com/docs/en/models/sonnet-5-5/overview), [Claude Haiku 5.5](https://platform.claude.com/docs/en/models/haiku-5-5/overview), [Claude Opus 4.8](https://platform.claude.com/docs/en/models/opus-4-8/overview) |
2407| Available<sup>1</sup> | [Amazon Bedrock (bedrock-runtime)](https://platform.claude.com/docs/en/build-with-claude/claude-on-amazon-bedrock-legacy) | [Claude Fable 5.2](https://platform.claude.com/docs/en/models/fable-5-2/overview), [Claude Mythos 5.2](https://platform.claude.com/docs/en/models/mythos-5-2/overview), [Claude Fable 5.1](https://platform.claude.com/docs/en/models/fable-5-1/overview), [Claude Fable 5](https://platform.claude.com/docs/en/models/fable-5/overview), [Claude Opus 5.5](https://platform.claude.com/docs/en/models/opus-5-5/overview), [Claude Opus 5](https://platform.claude.com/docs/en/models/opus-5/overview), [Claude Sonnet 5.5](https://platform.claude.com/docs/en/models/sonnet-5-5/overview), [Claude Haiku 5.5](https://platform.claude.com/docs/en/models/haiku-5-5/overview), [Claude Opus 4.8](https://platform.claude.com/docs/en/models/opus-4-8/overview) |
2408| Available | [Amazon Bedrock](https://platform.claude.com/docs/en/build-with-claude/claude-in-amazon-bedrock) | [Claude Fable 5.1](https://platform.claude.com/docs/en/models/fable-5-1/overview), [Claude Mythos 5.1](https://platform.claude.com/docs/en/models/mythos-5-1/overview), [Claude Fable 5](https://platform.claude.com/docs/en/models/fable-5/overview), [Claude Mythos 5](https://platform.claude.com/docs/en/models/mythos-5/overview), [Claude Opus 5.5](https://platform.claude.com/docs/en/models/opus-5-5/overview), [Claude Opus 5](https://platform.claude.com/docs/en/models/opus-5/overview), [Claude Sonnet 5.5](https://platform.claude.com/docs/en/models/sonnet-5-5/overview), [Claude Haiku 5.5](https://platform.claude.com/docs/en/models/haiku-5-5/overview), [Claude Opus 4.8](https://platform.claude.com/docs/en/models/opus-4-8/overview) |
2437| Status | Cloud platforms | Models |
2438| --------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
2439| Available | Claude API, [Claude Platform on AWS](https://platform.claude.com/docs/en/build-with-claude/claude-platform-on-aws), [Claude Models on Google Cloud (Anthropic managed)](https://platform.claude.com/docs/en/build-with-claude/claude-models-on-google-cloud/anthropic-managed), [Claude Models on Google Cloud (Google managed)](https://platform.claude.com/docs/en/build-with-claude/claude-models-on-google-cloud/google-managed), [Microsoft Foundry](https://platform.claude.com/docs/en/build-with-claude/claude-in-microsoft-foundry) | [Claude Fable 5.2](https://platform.claude.com/docs/en/models/fable-5-2/overview), [Claude Mythos 5.2](https://platform.claude.com/docs/en/models/mythos-5-2/overview), [Claude Fable 5.1](https://platform.claude.com/docs/en/models/fable-5-1/overview), [Claude Mythos 5.1](https://platform.claude.com/docs/en/models/mythos-5-1/overview), [Claude Fable 5](https://platform.claude.com/docs/en/models/fable-5/overview), [Claude Mythos 5](https://platform.claude.com/docs/en/models/mythos-5/overview), [Claude Opus 5.5](https://platform.claude.com/docs/en/models/opus-5-5/overview), [Claude Opus 5](https://platform.claude.com/docs/en/models/opus-5/overview), [Claude Sonnet 5.5](https://platform.claude.com/docs/en/models/sonnet-5-5/overview), [Claude Haiku 5.5](https://platform.claude.com/docs/en/models/haiku-5-5/overview), [Claude Opus 4.8](https://platform.claude.com/docs/en/models/opus-4-8/overview) |
2440| Available<sup>1</sup> | [Amazon Bedrock (bedrock-runtime)](https://platform.claude.com/docs/en/build-with-claude/claude-on-amazon-bedrock-legacy) | [Claude Fable 5.2](https://platform.claude.com/docs/en/models/fable-5-2/overview), [Claude Mythos 5.2](https://platform.claude.com/docs/en/models/mythos-5-2/overview), [Claude Fable 5.1](https://platform.claude.com/docs/en/models/fable-5-1/overview), [Claude Fable 5](https://platform.claude.com/docs/en/models/fable-5/overview), [Claude Opus 5.5](https://platform.claude.com/docs/en/models/opus-5-5/overview), [Claude Opus 5](https://platform.claude.com/docs/en/models/opus-5/overview), [Claude Sonnet 5.5](https://platform.claude.com/docs/en/models/sonnet-5-5/overview), [Claude Haiku 5.5](https://platform.claude.com/docs/en/models/haiku-5-5/overview), [Claude Opus 4.8](https://platform.claude.com/docs/en/models/opus-4-8/overview) |
2441| Available | [Amazon Bedrock](https://platform.claude.com/docs/en/build-with-claude/claude-in-amazon-bedrock) | [Claude Fable 5.1](https://platform.claude.com/docs/en/models/fable-5-1/overview), [Claude Mythos 5.1](https://platform.claude.com/docs/en/models/mythos-5-1/overview), [Claude Fable 5](https://platform.claude.com/docs/en/models/fable-5/overview), [Claude Mythos 5](https://platform.claude.com/docs/en/models/mythos-5/overview), [Claude Opus 5.5](https://platform.claude.com/docs/en/models/opus-5-5/overview), [Claude Opus 5](https://platform.claude.com/docs/en/models/opus-5/overview), [Claude Sonnet 5.5](https://platform.claude.com/docs/en/models/sonnet-5-5/overview), [Claude Haiku 5.5](https://platform.claude.com/docs/en/models/haiku-5-5/overview), [Claude Opus 4.8](https://platform.claude.com/docs/en/models/opus-4-8/overview) |
24092442
241024431. Through InvokeModel only (not Converse).
24112444
from line 2447
24142447* Availability: Available
24152448* Usage: Send a `system.message` event. It applies to that turn and all later turns; the agent’s own `system` field cannot change during a session.
24162449
2417| Status | Cloud platforms | Models |
2418| --------- | ----------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
2419| Available | All supported platforms | [Claude Fable 5.2](https://platform.claude.com/docs/en/models/fable-5-2/overview), [Claude Mythos 5.2](https://platform.claude.com/docs/en/models/mythos-5-2/overview), [Claude Fable 5.1](https://platform.claude.com/docs/en/models/fable-5-1/overview), [Claude Mythos 5.1](https://platform.claude.com/docs/en/models/mythos-5-1/overview), [Claude Fable 5](https://platform.claude.com/docs/en/models/fable-5/overview), [Claude Mythos 5](https://platform.claude.com/docs/en/models/mythos-5/overview), Claude Mythos Preview, [Claude Opus 5.5](https://platform.claude.com/docs/en/models/opus-5-5/overview), [Claude Opus 5](https://platform.claude.com/docs/en/models/opus-5/overview), [Claude Sonnet 5.5](https://platform.claude.com/docs/en/models/sonnet-5-5/overview), [Claude Haiku 5.5](https://platform.claude.com/docs/en/models/haiku-5-5/overview), [Claude Opus 4.8](https://platform.claude.com/docs/en/models/opus-4-8/overview) |
2450| Status | Cloud platforms | Models |
2451| --------- | ----------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
2452| Available | All supported platforms | [Claude Fable 5.2](https://platform.claude.com/docs/en/models/fable-5-2/overview), [Claude Mythos 5.2](https://platform.claude.com/docs/en/models/mythos-5-2/overview), [Claude Fable 5.1](https://platform.claude.com/docs/en/models/fable-5-1/overview), [Claude Mythos 5.1](https://platform.claude.com/docs/en/models/mythos-5-1/overview), [Claude Fable 5](https://platform.claude.com/docs/en/models/fable-5/overview), [Claude Mythos 5](https://platform.claude.com/docs/en/models/mythos-5/overview), [Claude Opus 5.5](https://platform.claude.com/docs/en/models/opus-5-5/overview), [Claude Opus 5](https://platform.claude.com/docs/en/models/opus-5/overview), [Claude Sonnet 5.5](https://platform.claude.com/docs/en/models/sonnet-5-5/overview), [Claude Haiku 5.5](https://platform.claude.com/docs/en/models/haiku-5-5/overview), [Claude Opus 4.8](https://platform.claude.com/docs/en/models/opus-4-8/overview) |
24202453
24212454### Data handling
24222455
No line in this hunk matches that.