VPN07

OpenClaw GitHub Copilot 登录失败怎么办?device token 认证完整排查指南

2026-03-10 阅读约14分钟 故障排查 GitHub Copilot

问题背景: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 的认证问题,这也是绝大多数用户遇到的场景。

device
认证流程类型
15分钟
一次性码有效期
1008
Token Mismatch 错误码
已修复
Issue #18018 状态

正确的 GitHub Copilot 认证流程

首先了解正常的登录流程,这样才能判断是在哪个环节出了问题:

终端 Terminal
# 第一步:运行登录命令
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 文件无法自动继承终端的环境变量。

~/Library/LaunchAgents/com.openclaw.gateway.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 登录成功后,建议按以下步骤逐一验证配置是否完全正确:

1

查看可用模型列表

openclaw models list
# 应该能看到 github-copilot/xxx 开头的模型
2

设置默认模型并重启

openclaw models set github-copilot/gpt-4o
openclaw gateway restart
3

用聊天测试实际响应

在 Telegram/Discord 等渠道发送一条简单消息,确认 AI 使用的是 Copilot 模型回复(可通过 /status 查看当前模型)

4

重启系统测试 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

VPN07 — GitHub 认证全链路无障碍

1000Mbps千兆 · GitHub/API全通 · 70+国家节点

GitHub device flow 涉及多个端点的连续访问,任何一个节点的网络不稳定都会导致认证失败。VPN07 千兆带宽保障 GitHub 全套 API 访问流畅,让 OpenClaw Copilot 认证一次成功不重来。

¥9/月
超低月费
1000Mbps
千兆带宽
70+国家
全球节点
30天
无理由退款

相关文章推荐

月费¥9 · 运营十年
免费试用 VPN07