GitHub Copilot企业报错“WebSocket connection failed”本质是防火墙拦截实时补全通道,需先通过VS Code日志确认WebSocket层阻断,再依序采用禁用WebSocket回退、hosts直连IP或隔离远程代理三种方法解决。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

GitHub Copilot在企业网络中频繁报错“WebSocket connection failed”,本质是公司防火墙或中间设备主动拦截了Copilot的实时补全通道,而非单纯网络不通。
确认是否被实时拦截
打开 VS Code 输出面板(Ctrl+Shift+U),切换到 GitHub Copilot 日志通道,查找含 WebSocket 或 ECONNRESET 的错误行;若同时存在 fetch failed 但 curl -I https://api.github.com 返回 200/403,则基本可排除 DNS 和基础 HTTPS 连通性问题,锁定为 WebSocket 层被阻断。
这一步必须做,否则后续所有配置都是徒劳——因为普通 HTTP 请求能通,不代表长连接能建。
绕过WebSocket拦截的三种实操路径
方法一:强制禁用 Copilot Chat 的 WebSocket 回退机制
在 VS Code 设置中搜索 github copilot chat use websocket,将其设为 false。该开关会强制 Chat 功能降级为轮询模式(HTTP POST polling),虽响应略慢,但能穿透多数只拦截 WebSocket 协议的防火墙。
使用约定式提交(Conventional Commits)从 Git 历史记录中生成结构化变更日志,支持多种格式、AI 增强型描述以及可自定义的范围……
方法二:修改 hosts 文件直连 IP(仅限已知稳定 IP 段)
执行 nslookup api.githubcopilot.com 获取当前解析 IP(如 140.82.121.3),然后编辑系统 hosts 文件(Windows:C:\Windows\System32\drivers\etc\hosts;macOS/Linux:/etc/hosts),追加一行:
140.82.121.3 api.githubcopilot.com。
⚠️ 注意:该 IP 可能随 CDN 调度变化,若某天失效需重新查;不要盲目复制网上过期 IP。
方法三:在远程开发场景中隔离代理继承
VS Code 连接 WSL 或 SSH 服务器时,默认会把 Windows 的代理设置透传给远程端,但远程环境往往没有对应代理服务运行,导致请求卡死在 CONNECT 阶段。
第一步:关闭远程窗口的全局代理继承 → 打开远程设置(Settings → Remote [WSL/SSH] → HTTP → Proxy),将 http.proxy 设为空字符串;
第二步:单独为 Copilot 配置最小化代理 → 在远程 settings.json 中添加:"github.copilot.httpProxy": "http://corp-proxy:8080";
第三步:重启远程窗口并重载扩展。
验证 WebSocket 是否真正恢复
① 在远程终端执行:curl --verbose --include --no-buffer https://api.githubcopilot.com/v1/completions --header "Authorization: token YOUR_VALID_TOKEN" --data '{"prompt":"console.log("hello")"}';
② 观察响应头是否含 HTTP/2 200 且 body 返回 JSON 补全结果;
③ 若成功,再打开一个 .py 或 .js 文件,输入 for i in range(,等待 2 秒看是否弹出补全建议框;
④ 最后在 Copilot Chat 输入任意问题,确认不再卡在“正在准备 Copilot”状态。

















