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.
这三句话说了三件重要的事:
打开浏览器访问 opencode.ai,登录后进入 OpenCode Console,找到已过期的 Key,点击吊销(Revoke)。这一步不是必须的,但能防止旧 Key 被别人拿去继续尝试。
在同一个控制台页面点击 Create new API key,复制生成的 Key 字符串,不要关掉页面,因为大多数平台只显示一次完整 Key。
打开终端,在任意目录启动 opencode,执行:
|
1 |
/connect |
在弹出的提供商列表里选择 OpenCode(即 OpenCode Zen),粘贴新 Key,回车确认。
opencode 会把凭证写入:
|
1 2 |
~/.local/share/opencode/auth.json # Linux / macOS %APPDATA%\opencode\auth.json # Windows |
写入成功后可以用 /models 命令验证是否能正常列出可用模型。
在 GitHub issue #58032(opencode v2.1.2,Windows 11)里,用户在同一时间遇到了三条报错:
| 报错 | 真正原因 | 对应操作 |
|---|---|---|
| This API key has expired | Key 服务端失效 | 按上文三步换 Key |
| This model is not available in your country | 所选模型有地区限制 | 用 /models 切换其他模型 |
| ECONNREFUSED 127.0.0.1:8080 | 本地代理/VPN 客户端没开,或配置文件里写了错误的 baseURL | 检查本地代理状态,或清理 opencode.json 里的 baseURL 配置 |
这三条报错来源各不相同,混在一起很容易让人以为是同一个问题,逐一排查效率更高。
opencode 的 Key 失效有几种常见来源:
1. 账单欠费自动吊销:OpenCode Zen 是后付费模式,账单逾期后平台会自动让 Key 失效。检查 opencode.ai 后台是否有未付账单。
2. 手动轮换:安全规范要求定期轮换凭证时,旧 Key 被主动吊销。
3. 安全事件后批量失效:opencode 近期发生过一次安全事件(参考 GitHub issue 中的讨论),平台对受影响账户的 Key 做了批量吊销。如果你没有手动操作过,但 Key 突然失效,可以去控制台检查是否有安全提醒。
4. Key 本身有有效期:部分平台在创建 Key 时可以设置过期时间,到期自动失效。
如果你同时使用多家模型,或者不想每次都通过 OpenCode Zen 中转,可以在 opencode.json 里直接接入兼容 OpenAI 协议的第三方端点。
配置文件位置:
|
1 2 |
~/.config/opencode/opencode.json # Linux / macOS %APPDATA%\opencode\opencode.json # Windows |
添加一个自定义提供商的最小配置:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
{ "$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 之后如果仍然报相同错误,按以下顺序排查:
"This API key has expired"报错的唯一出路是:去 OpenCode Console 生成新 Key,回到终端用 /connect 替换,重新登录解决不了这个问题。如果同时出现 ECONNREFUSED 或地区限制报错,说明是三条独立问题叠在一起,分开处理。本文操作步骤来自 opencode 官方文档(opencode.ai/docs/providers)及 GitHub issue #58032,如果 Console 入口有变动以官网实际页面为准。