--thinking-display is not propagated to the Bedrock request (thinking blocks stay empty on Sonnet 5)

Status Closed — duplicate
Reported on v2.1.205
Maintainer reply None cached
Activity 2 comments · opened Jul 19, 2026 · closed Aug 15, 2026

Environment

  • Claude Code 2.1.205 and 2.1.215 (both reproduce)
  • Bedrock (CLAUDE_CODE_USE_BEDROCK=1), model global.anthropic.claude-sonnet-5
  • Headless (-p) and SDK (--input-format stream-json) modes both affected

Summary

On models whose API default for thinking.display is omitted (Sonnet 5, Opus 4.7+), thinking blocks stream with empty text unless the request sets display: "summarized". The CLI exposes --thinking-display summarized (and the Agent SDK maps thinking={"type": "adaptive", "display": "summarized"} to that flag), but the flag never reaches the wire: the outgoing Bedrock request body carries "thinking": {"type": "adaptive"} with no display field, so thinking text stays empty.

Repro

  1. Point the CLI at a local capture server: ANTHROPIC_BEDROCK_BASE_URL=http://127.0.0.1:9999
  2. Run: claude -p "hi" --output-format text --thinking adaptive --thinking-display summarized --max-turns 1
  3. Captured body of POST /model/global.anthropic.claude-sonnet-5/invoke-with-response-stream:

"thinking": {"type": "adaptive"} — no display.

Expected

"thinking": {"type": "adaptive", "display": "summarized"} — Bedrock honors the field when sent directly: a raw invoke_model with display: "omitted" on global.anthropic.claude-sonnet-4-6 returns an empty thinking block, and with display unset returns full text, so the parameter is respected end to end when present.

Impact

Any Bedrock deployment that surfaces streamed reasoning to users renders a blank thinking panel on Sonnet 5 with no way to opt back in from the CLI/SDK surface.

View original on GitHub ↗

This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗