Windows Version
Microsoft Windows [Version 10.0.26200.8655]
WSL Version
2.7.10.0 (pre-release)
WSL version: 2.7.10.0
Kernel version: 6.18.33.2-2
WSLg version: 1.0.73.2
MSRDC version: 1.2.6676
Direct3D version: 1.611.1-81528511
DXCore version: 10.0.26100.1-240331-1435.ge-release
Windows version: 10.0.26200.8655
Are you using WSL 1 or WSL 2?
Kernel Version
6.18.33.2-2 (6.18.33.2-microsoft-standard-WSL2)
Distro Version
Debian GNU/Linux 13 (trixie)
Other Software
- OpenSSH_10.0p2 Debian-7+deb13u4 (client inside WSL)
.wslconfig uses mirrored networking:
[wsl2]
networkingMode=mirrored
firewall=false
dnsTunneling=false
autoProxy=false
- Active NIC at time of repro: Intel Wi-Fi 6 AX201 (also reproduced to LAN host)
- No HP “LiveQoS” NDIS filter present; Microsoft QoS Packet Scheduler (
ms_pacer) is enabled
Repro Steps
- Install WSL pre-release 2.7.10.0 with
networkingMode=mirrored.
- From WSL, use stock OpenSSH defaults (
ssh -G <host> reports ipqos ef cs1).
- Interactive login works:
- Any non-interactive remote command hangs after authentication:
ssh <host> true
ssh <host> 'echo ok'
ssh -T <host> true
- Same hang occurs to LAN hosts and to hosts reached via public DNS/WAN.
- Workaround restores remote commands:
ssh -o IPQoS=none <host> true
# or in ~/.ssh/config:
# Host *
# IPQoS none
- Does not reproduce in either of these controls (same hosts / same style of non-interactive command):
- Non-WSL (native Windows / non-WSL SSH):
ssh <host> <command> works.
- Non-pre-release / stable WSL (same distro/OpenSSH settings/hosts):
ssh <host> <command> works.
Failure is specific to WSL pre-release 2.7.10.0 in this environment.
Expected Behavior
ssh <host> <command> should complete normally (auth, exec, exit), same as interactive ssh <host>.
Actual Behavior
- Interactive
ssh <host> succeeds.
- Non-interactive
ssh <host> <command> authenticates, then hangs indefinitely (no command output, no exit).
ssh -vvv shows the session stalls after sending the exec request with channel receive window stuck at 0, e.g. open confirm rwindow 0, and never receives a window adjust / exit-status.
- Immediately after the command channel is set up, the client switches QoS (
set_sock_tos / non-interactive path). OpenSSH default is interactive EF, bulk/non-interactive CS1 (IP_TOS 0x20), with a mid-session retag when the session becomes non-interactive (OpenSSH/Debian IPQoS updates in 1:10.0p1-7+deb13u3+).
Diagnostic Logs
Theory: WSL pre-release mirrored networking mishandles OpenSSH’s mid-connection DSCP/TOS change (EF → CS1). Interactive sessions never take the bulk retag path, so they keep working. Stable WSL does not show this failure.
Workaround: IPQoS none (or a single fixed class such as IPQoS ef / IPQoS af21) so OpenSSH does not retag mid-session.
Happy to gather Feedback Hub / networking logs if useful.
Windows Version
Microsoft Windows [Version 10.0.26200.8655]
WSL Version
2.7.10.0 (pre-release)
Are you using WSL 1 or WSL 2?
Kernel Version
6.18.33.2-2 (
6.18.33.2-microsoft-standard-WSL2)Distro Version
Debian GNU/Linux 13 (trixie)
Other Software
.wslconfiguses mirrored networking:ms_pacer) is enabledRepro Steps
networkingMode=mirrored.ssh -G <host>reportsipqos ef cs1).ssh <host> <command>works.ssh <host> <command>works.Failure is specific to WSL pre-release 2.7.10.0 in this environment.
Expected Behavior
ssh <host> <command>should complete normally (auth, exec, exit), same as interactivessh <host>.Actual Behavior
ssh <host>succeeds.ssh <host> <command>authenticates, then hangs indefinitely (no command output, no exit).ssh -vvvshows the session stalls after sending the exec request with channel receive window stuck at 0, e.g.open confirm rwindow 0, and never receives a window adjust / exit-status.set_sock_tos/ non-interactive path). OpenSSH default is interactive EF, bulk/non-interactive CS1 (IP_TOS 0x20), with a mid-session retag when the session becomes non-interactive (OpenSSH/Debian IPQoS updates in 1:10.0p1-7+deb13u3+).Diagnostic Logs
Theory: WSL pre-release mirrored networking mishandles OpenSSH’s mid-connection DSCP/TOS change (EF → CS1). Interactive sessions never take the bulk retag path, so they keep working. Stable WSL does not show this failure.
Workaround:
IPQoS none(or a single fixed class such asIPQoS ef/IPQoS af21) so OpenSSH does not retag mid-session.Happy to gather Feedback Hub / networking logs if useful.