Skip to content

Epic: server-side context management for preserved-thinking models #5410

Open
1 of 16 issues completed
Open

Description

@jimbrub

Summary

Preserved-thinking Claude models (Opus 5.5, Sonnet 5.5, Haiku 5.5, Fable 5.1) bind each thinking block to the system prompt, tools, and history that came before it. Strands' context manager edits that history on the client, so the next request fails with a 400, or the #5171 drop_block retry throws the reasoning away. Each technique that edits history needs a server-side or append-only form.

Design: team/designs/0022-server-side-compaction-support.md (#5242). Part of #5160.

Part 1: summarization

Each item ships with Python and TypeScript parity, unit tests for every new branch, and integ tests on preserved-thinking models, including a comparison of native and client-side summaries.

Part 2: other history edits

Part 3: other providers

Activity

  1. added
    enhancementNew feature or request
    area-contextSession or context related
    area-modelRelated to models or model providers
    on Oct 22, 2026
  2. self-assigned this
    on Oct 22, 2026
  3. changed the title [-]Epic: server-side context management for preserved-thinking models[/-] [+]EPIC: server-side context management for preserved-thinking models[/+] on Oct 22, 2026
  4. changed the title [-]EPIC: server-side context management for preserved-thinking models[/-] [+]Epic: server-side context management for preserved-thinking models[/+] on Oct 22, 2026
  5. moved this from Intake to We're Working On It in Strands Agents Roadmapon Oct 28, 2026
  6. jimbrub commented on Nov 2, 2026

    @jimbrub
    ContributorAuthor

    Status update on Part 1 after #5470. There are no changes to the checklist above; this comment adds new tickets and one reorder.

    #5464 (#5470). It shipped as an experimental Model.summarize(), not compact(). Treat it as a placeholder: the final API shape is tracked in #5733. The as-built differences are noted on #5464. One of them is a behavior change for base models: message 0 is kept, and some low-preserve_recent passes are skipped.

    Reorder: #5466 before #5401. Model.model_info capabilities landed in #5313, so #5466 doesn't need to wait for #5305. Gating on a capability before the first summarize() override lands avoids the override-detection problems found in #5470's review. Details on #5466.

    New tickets (added as sub-issues):

    Order for Part 1 from here:

    1. [FEATURE] Core: providerData on TextBlock for session restore and model switches #5402 and [FEATURE] Gate server-side compaction through model metadata capabilities #5466, in parallel.
    2. [FEATURE] Summarize through Anthropic native compaction #5401, then [FEATURE] Include compaction calls in token usage #5404.
    3. [FEATURE] Evaluate base summarization strategies across models before fixing defaults #5734, then [FEATURE] Refine the base summarizer system prompt #5735.
    4. [FEATURE] Separate native compaction from base summarization, replacing the placeholder Model.summarize() #5733, informed by the evaluation and by [FEATURE] Summarize through Anthropic native compaction #5401's override.
    5. [FEATURE] Summarize after message 0 when the cut lands on the last message #5736 at any point.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

area-contextSession or context relatedarea-modelRelated to models or model providersdesignenhancementNew feature or request

Type

Fields

Language

None yet

Projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions