wsl: A localhost proxy configuration was detected but not mirrored into WSL
Windows has a proxy set at 127.0.0.1 or localhost, usually from a corporate VPN client, Fiddler or a tool such as Clash, and WSL 2 tried to copy it into Linux as HTTP_PROXY. In the default NAT networking mode, localhost inside WSL is the Linux VM rather than Windows, so that address would lead nowhere and WSL drops it. Linux tools then go direct and fail on networks that require the proxy, while the same command works fine in PowerShell.
Quick fix
Read the commands before running them. Anything that restarts a service, deletes data or changes permissions should be tried on a non-production system first.
# On Windows: what proxy is configured?
netsh winhttp show proxy
Get-ItemProperty 'HKCU:\Software\Microsoft\Windows\CurrentVersion\Internet Settings' | Select-Object ProxyEnable, ProxyServer, AutoConfigURL
# Fix 1 (Windows 11 22H2+): mirrored networking shares localhost with Windows
# %UserProfile%\.wslconfig
# [wsl2]
# networkingMode=mirrored
# autoProxy=true
wsl --shutdown
# Fix 2, staying on NAT: point Linux at the Windows host instead of localhost.
# The proxy must listen on that interface, not only on 127.0.0.1
export https_proxy="http://$(ip route show default | awk '{print $3}'):8080"
# Check from inside WSL
env | grep -i _proxy
How to diagnose Virtualization errors
Virtualisation errors are usually about hardware virtualisation access: either it is disabled in firmware, or another hypervisor already holds it. On Windows, Hyper-V, WSL 2, Docker Desktop, Credential Guard and memory integrity all claim the virtualisation extensions, and VirtualBox or VMware then fails with a message that mentions VT-x but not the actual conflict.
If the quick fix above does not resolve it, work through these steps. They apply to this whole class of error, not just to this one message, which is usually what saves the time.
- Confirm virtualisation is enabled at the CPU level:
grep -E 'vmx|svm' /proc/cpuinfoon Linux, or the Performance tab of Task Manager on Windows. - On Windows, check what else is using the hypervisor:
bcdedit /enum | findstr hypervisorlaunchtypeand whether Hyper-V, WSL 2 or Core Isolation are enabled. - On Linux, check
/dev/kvmexists and that your user is in thekvmgroup; nested virtualisation must be enabled explicitly on cloud VMs. - Match guest additions and tools versions to the hypervisor version: mismatches cause shared folders, clipboard and display problems that look like guest OS bugs.
- For WSL, run
wsl --statusandwsl --update; most WSL 2 errors are a stale kernel or a disabled Virtual Machine Platform feature.
Tools worth reaching for
grep -E 'vmx|svm' /proc/cpuinfowsl --statusbcdedit /enumls -l /dev/kvmsystemctl status libvirtd
Authoritative references
Primary documentation for this error, worth reading before applying any fix in production.
Related Virtualization errors
- Hyper-V: Virtual switch not foundThe VM references a virtual switch that doesn't exist. The switch may have been deleted or…
- libvirt: Cannot access storage file (as uid:107, gid:107): Permission deniedThe system libvirt daemon starts QEMU as an unprivileged user (qemu or libvirt-qemu, uid 107…
- libvirt: Failed to connect socket to /var/run/libvirt/libvirt-sockvirsh connected to the session daemon rather than the system one, or the user is not in the…
- libvirt: Requested operation is not valid: network 'default' is not activeThe VM is attached to libvirt's NAT network called default, and that network is defined but…
- Proxmox: can't lock file '/var/lock/qemu-server/lock-100.conf' - got timeoutAnother task still holds the lock on that VM's configuration, so the new start, stop or…
- Proxmox: TASK ERROR: KVM virtualisation configured, but not availableThe VM is set to use hardware acceleration (kvm: 1, the default) but the host has no…
- QEMU/KVM: /dev/kvm not availableKVM kernel module is not loaded or the user doesn't have permission to access /dev/kvm…
- Vagrant: Box not foundThe Vagrant box specified in the Vagrantfile has not been downloaded or the name is incorrect.
Browse other categories
- HTTP 494xx client errors, 5xx server errors, redirects, headers and protocol problems.
- JavaScript 42npm resolution, async pitfalls, hydration, memory limits and runtime type…
- Database 41Connections, deadlocks, constraints, replication and memory limits.
- AI 35Rate limits, context windows, GPU memory and model-serving failures.
- Network 35Refused connections, timeouts, resets, MTU problems and port exhaustion.
- Python 35Imports, virtual environments, encoding, concurrency and dependency conflicts.
- Kubernetes 34CrashLoopBackOff, ImagePullBackOff, OOMKilled, RBAC, scheduling and storage.
- Docker 27Daemon connectivity, disk space, image pulls, ports and architecture mismatches.
- System 26Disk space, systemd units, file descriptors, OOM killer and scheduled jobs.
- Cloud 25IAM permissions, quotas, service limits and credential failures.
- Security 25JWT validation, CSRF, OAuth grants, SELinux, SSH host keys and CSP.
- TLS 24Untrusted authorities, expiry, hostname mismatch, chains and cipher negotiation.
Something missing or wrong?
This entry is maintained by hand. If the fix is out of date, incomplete, or you have a better one, email a correction and it will be reviewed.