{"version":"2.1.269","anchor":"windows-shell-launcher-now-wired-into-bash-subprocess-spawni","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":"Bash Tool","scope":null,"heads_up":null,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.269\/e\/windows-shell-launcher-now-wired-into-bash-subprocess-spawni","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**Unclear.** Whether this launcher path is enabled for any user is unknown, since the tengu_parallel_trinket gate is unread for this release.\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: Bash Tool\n- Tier: Use it now\n- Useful: 3\/5\n- Signal: 2\/5"}