Note for anyone still repro-ing on 2.3.x: it is not just prompt themes. Anything in $PROFILE that prints — module banners, Write-Host greetings, even a stray echo — kills the JSON handshake. Test with:
powershell -Command "exit" | Measure-Object -LineIf Lines > 0, your profile is the problem.
The scary part of this bug wasn't the breakage, it was the silence. We rolled out guardrail hooks org-wide and our Windows users were unprotected for six weeks without a single error. After this we added a weekly canary check to CI that asserts the hook marker file is fresh on every platform.