OpenClaw GitHub Copilot 登录失败怎么办?device token 认证完整排查指南
问题背景:GitHub Copilot 是 OpenClaw 最受欢迎的免费/低成本模型 provider 之一,很多用户选择它作为 Claude 的备用方案。但配置过程中经常遇到各种认证失败:device flow 卡死、一次性码超时、重启后出现 "1008 unauthorized: device token mismatch" 错误……本文覆盖所有这些问题的完整排查和修复流程。
GitHub Copilot 在 OpenClaw 中的定位
对于已有 GitHub Copilot 订阅的开发者来说,把它接入 OpenClaw 是最省钱的选择——模型费用已包含在订阅月费中,不需要额外支付 Anthropic 或 OpenAI 的 API 费用。Copilot Pro 订阅支持接入 Claude Sonnet、GPT-4o 等高质量模型,而这一切都通过 OpenClaw 内置的 github-copilot provider 来实现。
OpenClaw 支持两种方式使用 Copilot:一是原生 github-copilot provider(推荐,通过 GitHub device flow 认证);二是 copilot-proxy 插件(需要 VS Code 扩展作为本地桥接)。本文主要针对原生 provider 的认证问题,这也是绝大多数用户遇到的场景。
正确的 GitHub Copilot 认证流程
首先了解正常的登录流程,这样才能判断是在哪个环节出了问题:
# 第一步:运行登录命令
openclaw models auth login-github-copilot
# 系统输出(正常情况):
# Please visit: https://github.com/login/device
# And enter the code: XXXX-XXXX
# Keep this terminal open until authentication completes...
# 第二步:在浏览器打开上述 URL
# 输入终端显示的一次性码(格式:XXXX-XXXX)
# 授权 OpenClaw 访问 GitHub Copilot
# 第三步:等待终端显示成功消息
# Authentication successful! Profile saved.
关键注意事项
- • 必须在交互式终端(interactive TTY)中运行,不能在脚本或非交互式 shell 中执行
- • 终端窗口必须保持开放直到认证完成,不能关闭或最小化
- • 一次性码有效期约 15 分钟,超时需要重新运行命令
- • 需要能正常访问 github.com(确保网络可通)
六种常见登录失败场景及修复方案
命令执行后终端卡住,没有输出 URL 和一次性码
$ openclaw models auth login-github-copilot
(光标闪烁,无任何输出...)
原因:通常是网络无法连接 GitHub 的 device flow 端点(github.com/login/device/code),导致请求超时卡死。
# 修复步骤:
# 1. 确认网络可以访问 github.com
curl -I https://github.com
# 2. 如果连接失败,检查 VPN 是否连接并正常工作
# 3. 确认 VPN 已开启后重试
openclaw models auth login-github-copilot
一次性码在浏览器输入后提示"expired code"
GitHub: This code has expired. Please request a new one.
原因:一次性码的有效期约 15 分钟。从终端显示到你打开浏览器输入超过了这个时间,或者是第一次输入有误、浏览器长时间没有操作。
# 解决方法:重新运行命令,立即在浏览器输入新码
openclaw models auth login-github-copilot
# 看到 URL 和码后,立即(3分钟内)完成浏览器操作
浏览器显示授权成功,但终端一直等待不结束
Waiting for authorization...
Waiting for authorization...
(无限等待...)
原因:OpenClaw 无法连接到 GitHub API 来轮询授权状态。浏览器授权成功了,但终端的轮询请求被网络拦截或超时。
# 修复步骤:
# 1. Ctrl+C 终止当前命令
# 2. 确认 VPN 连接稳定后重试
# 3. 换一个响应更快的 VPN 节点
openclaw models auth login-github-copilot
重启 OpenClaw 后报错 1008 device token mismatch
Gateway RPC fails with 1008 unauthorized: device token mismatch
after switching from copilot OAuth primary and restarting
原因(Issue #18018):这是 OpenClaw 已知 Bug。当你切换了主模型(特别是切换到或从 Copilot OAuth 切换),重启后 CLI 端持有的 token 状态和 Gateway 端记录的 token 状态出现不一致,导致认证校验失败。
修复步骤(按顺序执行):
# 步骤一:停止 Gateway
openclaw gateway stop
# 步骤二:清除旧的认证缓存(⚠️ 这会删除已保存的登录状态)
rm -f ~/.openclaw/auth.json
# 步骤三:重新启动 Gateway
openclaw gateway start
# 步骤四:重新执行 GitHub Copilot 登录
openclaw models auth login-github-copilot
# 步骤五:完成浏览器授权后,验证配置
openclaw models list
# 应该能看到 github-copilot 相关模型
登录成功后,/model list 看不到 Copilot 模型
$ /model list
Available models: anthropic/claude-sonnet-4-5
# (没有 github-copilot 相关条目)
原因:认证成功了,但配置文件没有正确更新,或者 Copilot 订阅计划不支持所请求的模型 ID。
# 修复步骤:
# 1. 检查配置文件中是否有 github-copilot provider 条目
cat ~/.openclaw/openclaw.json | grep copilot
# 2. 如果没有,手动添加并重启 Gateway
openclaw gateway restart
# 3. 尝试不同的模型 ID(计划不同支持模型不同)
# gpt-4o / gpt-4.1 / claude-sonnet-4.6
使用一段时间后突然报错 401 Unauthorized
Error 401: Unauthorized
GitHub Copilot token has expired or been revoked
原因:GitHub Copilot token 有有效期(通常为几小时到几天),过期后需要重新认证。这是正常的安全机制,不是 Bug。
# 解决方法:重新登录即可,无需清除任何文件
openclaw models auth login-github-copilot
# 如果 token 一直快速过期(几小时内),检查是否在多台设备使用同一账号
# 多设备同时使用可能导致 token 频繁失效
macOS 用户特别注意:LaunchAgent 环境变量问题
macOS 用户把 OpenClaw Gateway 配置为 LaunchAgent 自动启动时,经常遇到一个特殊问题:手动在终端运行时登录成功,但重启后 Gateway 又报认证失败。这是因为 LaunchAgent 的 plist 文件无法自动继承终端的环境变量。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN">
<plist version="1.0">
<dict>
<key>EnvironmentVariables</key>
<dict>
<!-- 把认证相关的环境变量显式写入 -->
<key>HOME</key>
<string>/Users/你的用户名</string>
<key>PATH</key>
<string>/usr/local/bin:/usr/bin:/bin</string>
</dict>
...其他配置...
</dict>
</plist>
确保 LaunchAgent plist 中的 HOME 路径指向你的实际用户目录。认证 token 保存在 ~/.openclaw/ 下,如果 HOME 变量不正确,Gateway 启动时找不到认证文件,就会报认证失败。
登录成功后的完整验证步骤
GitHub Copilot 登录成功后,建议按以下步骤逐一验证配置是否完全正确:
查看可用模型列表
openclaw models list
# 应该能看到 github-copilot/xxx 开头的模型
设置默认模型并重启
openclaw models set github-copilot/gpt-4o
openclaw gateway restart
用聊天测试实际响应
在 Telegram/Discord 等渠道发送一条简单消息,确认 AI 使用的是 Copilot 模型回复(可通过 /status 查看当前模型)
重启系统测试 LaunchAgent 持久性
如果配置了 LaunchAgent 自动启动,重启计算机后检查 Gateway 是否正常运行且 Copilot 认证依然有效
多账号和多设备配置的特殊注意事项
OpenClaw 支持配置多个 GitHub 账号(通过 --profile-id 参数区分)。如果你有工作账号和个人账号,或者需要在不同 OpenClaw 实例中使用不同的 Copilot 账号,可以这样配置:
# 登录工作账号(指定 profile ID)
openclaw models auth login-github-copilot --profile-id github-copilot:work
# 登录个人账号
openclaw models auth login-github-copilot --profile-id github-copilot:personal
# 在配置文件中为不同 Agent 指定不同账号
# openclaw.json:
# "model": { "primary": "github-copilot:work/gpt-4o" }
多设备使用同一 Copilot 账号的注意事项
如果你在多台设备(家里的 Mac、公司的 Windows、云服务器)同时运行 OpenClaw 并使用同一个 GitHub Copilot 账号,可能导致 token 频繁失效。GitHub 的 device flow token 在某些情况下只允许一个活跃会话,新设备登录后旧设备的 token 会被作废。建议为不同设备使用不同的 GitHub 账号,或者合理安排使用时间。
GitHub Copilot 认证对网络的特殊要求
相比直接使用 Anthropic API,GitHub Copilot 认证对网络有更多要求:不仅需要访问 api.anthropic.com,还需要顺畅访问 github.com(device flow 授权页面)和 api.github.com(token 轮询接口),以及 Copilot 的 API 端点 api.githubcopilot.com。
国内环境访问 GitHub 本身就时常不稳定,更不用说 API 端点的访问质量。这也是为什么在场景一(无输出)和场景三(无限等待)中,网络是主要的排查方向。
VPN07 覆盖全球 70+ 国家节点,1000Mbps 千兆带宽,能确保 GitHub device flow 的整个认证链路流畅通信:device code 申请、浏览器授权、token 轮询、Copilot API 调用,每一步都稳定可靠。十年稳定运营,月费 ¥9,30 天无理由退款。
GitHub Copilot 认证需要访问的端点
github.com/login/device
Device flow 授权页面
github.com/login/oauth/access_token
Token 轮询接口
api.github.com
GitHub API 端点
api.githubcopilot.com
Copilot 模型 API