# VS Code WSL Integration Issues
You try to open a folder in WSL, but VS Code shows "WSL connection failed" or the extension won't install inside WSL. Files don't sync correctly between Windows and Linux, or performance is unbearably slow. WSL (Windows Subsystem for Linux) integration is VS Code's bridge to Linux development on Windows, and when it breaks, you're stuck between two worlds.
Understanding WSL Integration
VS Code WSL integration involves:
- 1.WSL 2 installed and running on Windows
- 2.WSL extension (ms-vscode-remote.remote-wsl)
- 3.VS Code server running inside WSL
- 4.File system mapping between Windows and WSL
Any component failing prevents seamless Linux development.
Step 1: Verify WSL Installation
WSL must be properly installed and configured:
Check WSL status:
``powershell
# In PowerShell
wsl --list --verbose
wsl --status
Install WSL if missing:
``powershell
wsl --install
This installs WSL 2 with Ubuntu by default.
Update WSL:
``powershell
wsl --update
Step 2: Check WSL Extension
The VS Code extension bridges Windows VS Code to WSL:
Verify extension:
``bash
code --list-extensions | grep wsl
Should show ms-vscode-remote.remote-wsl.
Install if missing:
``bash
code --install-extension ms-vscode-remote.remote-wsl
Check extension status: Extensions panel → "WSL" → Should be enabled.
Step 3: Fix WSL Connection Failures
"Unable to connect to WSL" errors:
Restart WSL:
``powershell
wsl --shutdown
# Wait a few seconds
wsl
Check WSL distribution:
``powershell
wsl --list --verbose
Should show at least one distribution (e.g., Ubuntu) with state "Running" or "Stopped".
Set default distribution:
``powershell
wsl --set-default Ubuntu
Step 4: Handle VS Code Server Issues
VS Code server runs inside WSL to handle remote editing:
Clear server cache:
``bash
# Inside WSL
rm -rf ~/.vscode-server
rm -rf ~/.vscode-remote
Reinstall server: When you reopen WSL folder, VS Code reinstalls the server.
Check server installation:
``bash
ls ~/.vscode-server/bin/
Step 5: Fix Extension Installation Inside WSL
Extensions need to install separately inside WSL:
- 1.Install extension in WSL:
- 2.In the WSL VS Code window:
- 3.Extensions panel
- 4.Install extensions as usual
- 5.They install inside WSL, not on Windows
Sync extensions:
``json
// In settings.json
{
"remote.WSL.extensions": [
"ms-python.python",
"dbaeumer.vscode-eslint"
]
}
Check extension location: Extensions panel → Show "Install in WSL: Ubuntu" button for extensions that need WSL installation.
Step 6: Fix File Access Issues
WSL filesystem mapping problems:
- 1.Use WSL path for projects:
- 2.Open projects from
\\wsl$\Ubuntu\home\user\project: - 3.File → Open Folder
- 4.Type
\\wsl$\Ubuntuin path - 5.Navigate to project
Don't edit Linux files from Windows:
Editing /home/user/project files through \\wsl$ is slow and can corrupt permissions. Always edit through the WSL VS Code window.
Windows files in WSL:
``bash
# Access Windows files from WSL
ls /mnt/c/Users/YourName/projects/
This is safe but slower than native WSL filesystem.
Step 7: Fix Performance Issues
WSL can be slow for certain operations:
Move project to WSL filesystem:
``bash
# Inside WSL - faster I/O
mkdir ~/projects
cd ~/projects
git clone your-repo
- 1.Disable Windows Defender for WSL:
- 2.Windows Defender scanning WSL files slows operations:
- 3.Windows Security → Virus & threat protection
- 4.Manage settings → Exclusions
- 5.Add exclusion → Folder →
\\wsl$\Ubuntu
Increase WSL memory:
Create %USERPROFILE%\.wslconfig:
``ini
[wsl2]
memory=8GB
processors=4
swap=2GB
Step 8: Fix Terminal Issues
Terminal in WSL window should use Linux shell:
Configure terminal:
``json
// In WSL window settings
{
"terminal.integrated.defaultProfile.linux": "bash"
}
If terminal is Windows PowerShell:
Close WSL window, reopen properly:
Ctrl+Shift+P → "WSL: Reopen Folder in WSL"
Step 9: Handle Git Integration
Git should use WSL's Git, not Windows Git:
Install Git in WSL:
``bash
sudo apt install git
Configure Git:
``bash
git config --global user.name "Your Name"
git config --global user.email "your@email.com"
SSH from WSL:
``bash
ssh-keygen -t ed25519
cat ~/.ssh/id_ed25519.pub # Add to GitHub
Step 10: Debug WSL Connection
Enable WSL extension logging:
{
"remote.WSL.logLevel": "trace"
}Output panel → "WSL" → Check for connection errors.
Verification
Test WSL integration works:
- 1.Open folder in WSL (
Ctrl+Shift+P→ "WSL: Open Folder in WSL") - 2.Status bar shows "WSL: Ubuntu"
- 3.Terminal shows Linux shell (
uname -aprints Linux) - 4.Extensions install properly
- 5.Git commands work from Linux
- 6.Files save correctly
- 7.Performance is acceptable
Quick Reference
| Problem | Cause | Solution |
|---|---|---|
| Connection failed | WSL not running | wsl --shutdown then wsl |
| Extension not installing | Wrong location | Install inside WSL window |
| Slow performance | Windows filesystem | Move project to ~/projects in WSL |
| Terminal is PowerShell | Wrong window | Reopen folder in WSL |
| Git using Windows | Git not installed in WSL | sudo apt install git |
| Files corrupted | Editing from Windows | Use WSL VS Code window only |
WSL integration issues usually stem from WSL not running, extensions installed in wrong place, or using Windows filesystem instead of native WSL filesystem. Start with WSL status, then check extension location.