{"version":"2.1.269","anchor":"windows-only-powershell-shell-launcher-on-by-a-resolver-def","canonical_anchor":"windows-only-powershell-shell-launcher-on-by-a-resolver-def","heading":"New Windows shell launcher for PowerShell\/cmd, switchable via env var","tier":"use","area":"Windows Shell","scope":null,"heads_up":null,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.269\/e\/windows-only-powershell-shell-launcher-on-by-a-resolver-def","release_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.269","markdown":"### New Windows shell launcher for PowerShell\/cmd, switchable via env var\n\nBash commands on Windows can now run through a dedicated PowerShell\/cmd launcher, on by default but switchable off\n\n**What**\n\n- Bash tool subprocess spawning on Windows can now route through a dedicated PowerShell\/cmd launcher, using fixed stdio and `windowsVerbatimArguments` settings, instead of the normal stdio setup. When the launcher's process id is resolved, a `shell_windows_launcher` telemetry event is recorded.\n\n- The launcher spawns PowerShell commands through a `cmd.exe` wrapper script that writes output to a temp file and sets the console codepage to UTF-8 (`chcp 65001`), instead of spawning PowerShell directly.\n\n- It is on by default via a feature-flag resolver but can be disabled with an environment variable (`CLAUDE_CODE_DISABLE_WINDOWS_SHELL_LAUNCHER`). If it fails, Claude Code falls back to spawning directly, with telemetry reasons such as flag_off, env_opt_out, cmd_unavailable, cmd_probe_timeout, and unsafe_shell_path.\n\n**Why** This changes how Bash commands are executed on Windows to work around PowerShell spawning quirks, while keeping an escape hatch and fallback path for cases where the new launcher doesn't work.\n\n- Area: Windows Shell\n- Tier: Use it now\n- Useful: 3\/5\n- Signal: 2\/5"}