fix(anthropic): default adaptive thinking display to summarized#3415
Merged
Conversation
Newer Claude models (Opus 4.7+, Fable 5) omit thinking content server-side by default, so effort levels set via /effort or the Shift+Tab cycle silently hid all reasoning in the TUI. Request summarized thinking whenever adaptive thinking is used without an explicit thinking_display; "omitted" remains the opt-out.
dgageot
approved these changes
Jul 2, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Effort levels set via
/effortor the Shift+Tab thinking cycle showed no reasoning in the TUI on newer Claude models (Opus 4.7+, Fable 5). Those models omit thinking content server-side by default, and docker-agent only sent the adaptivedisplayfield whenprovider_opts.thinking_displaywas configured.Fix
Request
summarizedthinking whenever adaptive/effort-based thinking is used without an explicitthinking_display, on both the GA and Beta request paths.thinking_display: omittedremains the explicit opt-out.thinking_display, Opus 4.7+/Fable 5displaysent, API defaults toomitted, reasoning hiddendisplay=summarized, reasoning visiblethinking_display, Opus 4.6/Sonnet 4.6displaysent, API defaults tosummarizeddisplay=summarized, unchanged behaviorthinking_displaydisplaysentsummarized)Changes
pkg/model/provider/anthropic/thinking.go:defaultAdaptiveDisplayapplied inapplyThinkingConfigandapplyBetaThinkingConfigpkg/model/provider/anthropic/thinking_test.go: adaptive cases now expectsummarized; new Fable 5 cases (default summarized, explicitomittedpreserved)docs/guides/thinking,docs/providers/anthropic,docs/configuration/models)Validation
go build ./...,go test ./pkg/model/... ./pkg/modelinfo/... ./pkg/runtime/... ./pkg/effort/...: passgolangci-lint runandgo run ./lint .: 0 issuesTestDocYAMLSnippetsAreValidNotes
thinking.type=adaptivewithout adisplayfield; if the same gap applies there, it can be addressed in a follow-up.modelinfo.HidesThinkingByDefaultpredicate) was considered; the unconditional default was preferred because it is a no-op for models whose server default is alreadysummarizedand automatically covers future models that hide thinking by default.