Bug type
Behavior bug / Documentation gap
Summary
Chrome 147+ binds --remote-debugging-port to IPv6 [::1] only, not IPv4 127.0.0.1. The existing WSL2 troubleshooting docs recommend v4tov4 portproxy which forwards to IPv4 — this no longer works with Chrome 147.
Steps to reproduce
- Run Chrome 147 on Windows with
--remote-debugging-port=9222
- Configure
v4tov4 portproxy per docs: netsh interface portproxy add v4tov4 listenport=9222 listenaddress=0.0.0.0 connectport=9222 connectaddress=127.0.0.1
- From WSL2:
curl http://<windows-ip>:9222/json/version → Empty reply (exit code 52)
- From Windows:
curl http://127.0.0.1:9222/json/version → Empty reply
- From Windows:
curl http://[::1]:9222/json/version → 200 OK, returns JSON
Expected behavior
curl http://127.0.0.1:9222/json/version should return Chrome DevTools JSON, as it did in Chrome 146 and earlier.
Actual behavior
Chrome 147 only responds on [::1]:9222 (IPv6 loopback). IPv4 connections are accepted (TCP handshake completes) but Chrome returns empty responses.
Fix
Use v4tov6 portproxy instead of v4tov4:
netsh interface portproxy delete v4tov4 listenport=9222 listenaddress=0.0.0.0
netsh interface portproxy add v4tov6 listenport=9222 listenaddress=0.0.0.0 connectport=9222 connectaddress=::1
Additionally, Chrome 147 requires --user-data-dir to be a non-default directory for CDP HTTP endpoints to respond:
chrome.exe --remote-debugging-port=9222 --remote-debugging-address=0.0.0.0 --user-data-dir="C:\ChromeDebug" --no-first-run --remote-allow-origins="*"
Without --user-data-dir, Chrome shows LISTENING on port 9222 but returns empty replies to all HTTP requests.
Diagnosis tips
- If
netstat shows LISTENING on 9222 but curl http://127.0.0.1:9222/json/version returns empty → test IPv6: curl http://[::1]:9222/json/version
- If IPv6 works but IPv4 doesn't → Chrome 147 IPv6-only binding, use
v4tov6 portproxy
- If neither works → Chrome needs
--user-data-dir pointing to a non-default directory
Suggested doc update
The WSL2 troubleshooting page (https://docs.openclaw.ai/tools/browser-wsl2-windows-remote-cdp-troubleshooting) should be updated to:
- Note Chrome 147+ IPv6-only CDP binding
- Recommend
v4tov6 portproxy instead of v4tov4
- Note the
--user-data-dir requirement for CDP to respond
OpenClaw version
2026.4.15
Operating system
Windows 11 + WSL2 (Ubuntu)
Install method
Gateway in WSL2 + Chrome 147 on Windows via remote CDP
Bug type
Behavior bug / Documentation gap
Summary
Chrome 147+ binds
--remote-debugging-portto IPv6[::1]only, not IPv4127.0.0.1. The existing WSL2 troubleshooting docs recommendv4tov4portproxy which forwards to IPv4 — this no longer works with Chrome 147.Steps to reproduce
--remote-debugging-port=9222v4tov4portproxy per docs:netsh interface portproxy add v4tov4 listenport=9222 listenaddress=0.0.0.0 connectport=9222 connectaddress=127.0.0.1curl http://<windows-ip>:9222/json/version→ Empty reply (exit code 52)curl http://127.0.0.1:9222/json/version→ Empty replycurl http://[::1]:9222/json/version→ 200 OK, returns JSONExpected behavior
curl http://127.0.0.1:9222/json/versionshould return Chrome DevTools JSON, as it did in Chrome 146 and earlier.Actual behavior
Chrome 147 only responds on
[::1]:9222(IPv6 loopback). IPv4 connections are accepted (TCP handshake completes) but Chrome returns empty responses.Fix
Use
v4tov6portproxy instead ofv4tov4:Additionally, Chrome 147 requires
--user-data-dirto be a non-default directory for CDP HTTP endpoints to respond:Without
--user-data-dir, Chrome showsLISTENINGon port 9222 but returns empty replies to all HTTP requests.Diagnosis tips
netstatshows LISTENING on 9222 butcurl http://127.0.0.1:9222/json/versionreturns empty → test IPv6:curl http://[::1]:9222/json/versionv4tov6portproxy--user-data-dirpointing to a non-default directorySuggested doc update
The WSL2 troubleshooting page (https://docs.openclaw.ai/tools/browser-wsl2-windows-remote-cdp-troubleshooting) should be updated to:
v4tov6portproxy instead ofv4tov4--user-data-dirrequirement for CDP to respondOpenClaw version
2026.4.15
Operating system
Windows 11 + WSL2 (Ubuntu)
Install method
Gateway in WSL2 + Chrome 147 on Windows via remote CDP