--thinking-display is not propagated to the Bedrock request (thinking blocks stay empty on Sonnet 5)
Environment
- Claude Code 2.1.205 and 2.1.215 (both reproduce)
- Bedrock (
CLAUDE_CODE_USE_BEDROCK=1), modelglobal.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
- Point the CLI at a local capture server:
ANTHROPIC_BEDROCK_BASE_URL=http://127.0.0.1:9999 - Run:
claude -p "hi" --output-format text --thinking adaptive --thinking-display summarized --max-turns 1 - 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.
This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗