VS Code Codex 插件登录失败:`os error 10013` 的真实原因与修复
最近在 Windows 上重新登录 VS Code 的 Codex 插件时,遇到一个非常隐蔽的问题:
failed to start login server: 以一种访问权限不允许的方式做了一个访问套接字的尝试。 (os error 10013)
直觉上很容易怀疑是:
- 防火墙
- 杀毒软件
- 端口被占用
- 权限不足
- 本地代理 / VPN
但这次真正的根因,其实是 Windows 系统主动排除了插件要使用的本地回调端口。
这篇文章记录完整定位过程和最终修复方案。
一、问题现象
Codex 插件在使用账户 OAuth 登录时,需要在本机启动一个临时 HTTP Login Server。
通常监听:
localhost:1455
浏览器登录完成后,认证结果会通过本地回调返回给插件。
但插件启动本地监听时直接失败,报错:
failed to start login server
os error 10013
Windows 对应语义是:
访问套接字的方式被系统拒绝
二、第一步排查:查看系统排除端口
管理员 PowerShell 执行:
netsh interface ipv4 show excludedportrange protocol=tcp
输出如下:
Protocol tcp Port Exclusion Ranges
Start Port End Port
---------- --------
1059 1158
1159 1258
1359 1458
关键问题就在这里:
1359 - 1458
Codex 登录回调端口 1455,刚好落在这个范围内。
所以插件尝试绑定:
127.0.0.1:1455
时,即使没有任何程序占用,也会被 Windows 直接拒绝。
这就是 os error 10013 的根因。
三、为什么会出现这个问题
高概率是以下组件触发了 WinNAT 自动端口预留:
- WSL2
- Hyper-V
- Docker Desktop
- VPN
- 虚拟网卡
- Tailscale
- Android 模拟器
- 本地代理软件
这些组件可能会让 Windows 自动创建:
excluded port range
导致部分低位端口禁止普通应用绑定。
1455 正好被命中。
四、最终修复方案(已验证有效)
管理员 PowerShell 直接执行:
net stop winnat
net start winnat
然后重新登录 Codex。
问题立刻恢复。
这是因为 重启 WinNAT 服务后,系统会重新分配排除端口范围,1455 被释放。
五、推荐排障顺序
如果以后再遇到类似问题,建议按这个顺序排查:
1)先查排除端口
netsh interface ipv4 show excludedportrange protocol=tcp
2)确认目标端口是否落入范围
例如 Codex 的 1455。
3)直接重启 WinNAT
net stop winnat
net start winnat
4)重新登录插件
六、一条命令快速修复
如果你只想先恢复使用(具有管理员权限的cmd):
net stop winnat && net start winnat
基本可以秒修。
浙公网安备 33010602011771号