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

基本可以秒修。

posted @ 2026-04-03 10:36  logomokona  阅读(6331)  评论(0)    收藏  举报