opencode 报错"This API key has expired"怎么办:三步换掉旧 Key,顺带看懂四种常见原因
发布日期:2026-10-22 | 数据截至 2026-10-21,来源为 opencode 官方文档与 GitHub issue #58032
opencode 报错"This API key has expired. Create a new API key in OpenCode Console and replace it in your client or secret store. Signing in again will not renew this key."的根本原因是:旧 Key 已在服务端标记失效,重新登录无法续期,必须在 OpenCode Console 手动生成新 Key 并替换到本地。完整修复分三步:进入 opencode.ai 控制台吊销旧 Key → 创建新 Key → 在终端执行 /connect 粘贴新 Key;凭证写入 ~/.local/share/opencode/auth.json,不需要改任何配置文件。对于同时出现 ECONNREFUSED 127.0.0.1:8080(本地代理未启动)和"model not available in your country"(地区限制)的情况,三条报错来源各不相同,需逐一排查。如果不想再被单一 Provider 的 Key 失效打断工作,可以在 opencode.json 里接入一个兼容 OpenAI 协议的统一 API 端点,把多家模型的调用收归一个 Key 管理。

报错原文和它真正在说什么
完整错误提示:
This API key has expired.
Create a new API key in OpenCode Console and replace it in your client or secret store.
Signing in again will not renew this key.这三句话说了三件重要的事:
已过期:Key 在服务端被标记为失效,不是网络问题,不是密码错误
需要新建:必须去控制台重新生成,没有"续期"操作
重新登录没用:OAuth 重新授权走的是不同通道,不会刷新这个 Key
三步修复
第一步:吊销旧 Key
打开浏览器访问 opencode.ai,登录后进入 OpenCode Console,找到已过期的 Key,点击吊销(Revoke)。这一步不是必须的,但能防止旧 Key 被别人拿去继续尝试。
第二步:创建新 Key
在同一个控制台页面点击 Create new API key,复制生成的 Key 字符串,不要关掉页面,因为大多数平台只显示一次完整 Key。
第三步:在 opencode 里替换
打开终端,在任意目录启动 opencode,执行:
/connect在弹出的提供商列表里选择 OpenCode(即 OpenCode Zen),粘贴新 Key,回车确认。
opencode 会把凭证写入:
~/.local/share/opencode/auth.json # Linux / macOS
%APPDATA%\opencode\auth.json # Windows写入成功后可以用 /models 命令验证是否能正常列出可用模型。
如果同时出现其他报错
在 GitHub issue #58032(opencode v2.1.2,Windows 11)里,用户在同一时间遇到了三条报错:
这三条报错来源各不相同,混在一起很容易让人以为是同一个问题,逐一排查效率更高。
为什么 Key 会过期
opencode 的 Key 失效有几种常见来源:
1. 账单欠费自动吊销:OpenCode Zen 是后付费模式,账单逾期后平台会自动让 Key 失效。检查 opencode.ai 后台是否有未付账单。
2. 手动轮换:安全规范要求定期轮换凭证时,旧 Key 被主动吊销。
3. 安全事件后批量失效:opencode 近期发生过一次安全事件(参考 GitHub issue 中的讨论),平台对受影响账户的 Key 做了批量吊销。如果你没有手动操作过,但 Key 突然失效,可以去控制台检查是否有安全提醒。
4. Key 本身有有效期:部分平台在创建 Key 时可以设置过期时间,到期自动失效。
换成自定义 Provider,以后不怕单点失效
如果你同时使用多家模型,或者不想每次都通过 OpenCode Zen 中转,可以在 opencode.json 里直接接入兼容 OpenAI 协议的第三方端点。
配置文件位置:
~/.config/opencode/opencode.json # Linux / macOS
%APPDATA%\opencode\opencode.json # Windows添加一个自定义提供商的最小配置:
{
"$schema": "https://opencode.ai/config.json",
"provider": {
"myprovider": {
"npm": "@ai-sdk/openai-compatible",
"name": "我的统一端点",
"options": {
"baseURL": "https://api.example.com/v1"
},
"models": {
"model-id": {
"name": "模型显示名"
}
}
}
}
}baseURL 填入支持 /v1/chat/completions 的端点地址,api_key 通过 /connect 命令写入 auth.json,不写在配置文件里,避免 Key 明文泄露。
国内可以直接调用的统一 API 端点(同时覆盖 DeepSeek、Kimi、GLM 等多款主流模型),可以参考七牛云 Token Plan 的接入文档,一个 Key 管理多家模型调用,Key 过期只需要换一处。
换完还是报错怎么办
替换 Key 之后如果仍然报相同错误,按以下顺序排查:
确认 auth.json 已更新:用文本编辑器打开 auth.json,检查 Key 字段是否是新值
检查是否有多个 opencode 进程:旧进程可能仍在使用内存中缓存的旧 Key,重启 opencode
确认新 Key 在控制台状态为 Active:Console 里 Key 列表显示 Active 才算有效
检查网络:
curl -s https://opencode.ai返回正常再排除网络问题
总结
"This API key has expired"报错的唯一出路是:去 OpenCode Console 生成新 Key,回到终端用 /connect 替换,重新登录解决不了这个问题。如果同时出现 ECONNREFUSED 或地区限制报错,说明是三条独立问题叠在一起,分开处理。本文操作步骤来自 opencode 官方文档(opencode.ai/docs/providers)及 GitHub issue #58032,如果 Console 入口有变动以官网实际页面为准。
延伸阅读
opencode 官方提供商配置文档:opencode.ai/docs/providers
opencode GitHub issue #58032(API key expired 讨论):github.com/anomalyco/opencode/issues/58032
七牛云 Token Plan(多模型统一 API Key)::https://www.qiniu.com/ai/models