# 400 on thinking blocks: pass them back untouched

## Symptom
400 `invalid_request_error`, message starts with a block position like `messages.1.content.0` and complains about thinking blocks.

## Confirm the cause
The most recent assistant message's `thinking` or `redacted_thinking` blocks were edited, reordered, filtered out, or reconstructed before being sent back. Common trigger: application code that filters content blocks by type (keeping text and tool_use) and silently drops the thinking blocks.

## Fix
1. Pass every `thinking` and `redacted_thinking` block back exactly as received, in order, including blocks whose thinking field is empty.
2. If you filter content blocks by type anywhere, add both thinking types to the allowlist.
3. Do not regenerate or "clean up" thinking content; the signature check rejects anything but the original bytes.

## Verify
Resend the identical conversation with the blocks preserved and the 400 is gone. The error names the exact position, so the fix is confirmed at the named block.