Solutionunvalidated
Change `thinking: sanitizeTransportPayloadText(block.thinking)` to `thinking: block.thinking` — thinking block replay path only. Tension: Thinking and redacted_thinking blocks are cryptographically signed and must be passed byte-for-byte unchanged. Outcome: Keep the sanitizer on text-fallback and new outbound text paths where it serves a legitimate purpose.
e5026e9d-49ab-4ca0-8020-c2df546f04fa
Change thinking: sanitizeTransportPayloadText(block.thinking) to thinking: block.thinking — thinking block replay path only. Tension: Thinking and redacted_thinking blocks are cryptographically signed and must be passed byte-for-byte unchanged. Outcome: Keep the sanitizer on text-fallback and new outbound text paths where it serves a legitimate purpose.