跳转到内容

Codex桌面端显示「自定义」或401 Unauthorized - cc-switch

Quick fix

在cc-switch设置中开启「切换第三方时保留官方登录」并确保Codex已登录官方ChatGPT账号,或新开对话避免旧会话401。

报错原文
unexpected status 401 Unauthorized: Incorrect API key provided: ark-ee1b**********************************93eb. You can find your API key at https://platform.openai.com/account/api-keys., url: https://api.openai.com/v1/responses, cf-ray: a2e67f46795d1e19-YVR, request id: req_2dbb31e84df94ce1b1d7759febf558ef 还是不行为什么

Codex 桌面端和 CLI 的模型选择器会根据是否登录官方 ChatGPT 身份来决定是否显示第三方自定义模型。没有官方登录态时,桌面端会强制回落到官方默认模型,导致模型选择器仅显示「自定义」或默认模型。cc-switch 无法直接改写 Codex 内部的这一层判断。此外,如果之前在旧对话中使用了官方登录态,切换到第三方供应商后,旧对话仍会尝试使用旧的官方凭证发起请求,导致请求被路由到 `api.openai.com` 并触发 401 Unauthorized 错误。在 v3.17.0 中,cc-switch 引入了「Codex 官方 ChatGPT 会话走本地路由接管」功能,使得在第三方供应商之间切换属于「热切换」,不再需要重启 Codex,也不会触碰 `auth.json`,从而避免了登录态丢失。但旧会话由于已经绑定了特定的会话状态,仍需新开对话才能应用新的路由配置。

  1. 确保在 Codex 桌面端至少登录过一次官方 ChatGPT 账号,保证 `~/.codex/auth.json` 里存在官方登录凭据。

  2. 打开 cc-switch 设置,找到「Codex 应用增强」或「路由」设置,开启「切换第三方时保留官方登录」以及本地路由总开关,并对 Codex 启用接管。

  3. 将你使用的第三方供应商加入路由接管目标,此后在第三方供应商之间切换即为热切换,无需重启 Codex,官方登录会一直保留。

  4. 如果遇到旧对话报 401 Unauthorized 错误,请放弃旧对话,新开一个对话窗口即可正常使用配置的第三方供应商。

  5. 如果需要手动指定模型(例如 GPT-5.6),可修改 `~/.codex/config.toml` 文件,将 `model` 改为 `gpt-5.6-sol`,重启 Codex 后即使显示为 Custom(自定义),实际请求也会按指定模型执行。

    ~/.codex/config.toml
    model = "gpt-5.5"
    model = "gpt-5.6-sol"
ToolCodex
Versioncc-switch 3.16.3 - 3.20.0
PlatformsWindowsmacOS
为什么我在 cc-switch 里配置了第三方供应商,但 Codex 桌面端模型选择器只显示「自定义」?
这是 Codex 桌面端本身的限制。它的模型选择器会根据是否登录官方 ChatGPT 身份来决定是否显示第三方模型。请在 cc-switch 设置中开启「切换第三方时保留官方登录」,并确保已登录官方 ChatGPT 账号,然后完全退出并重新启动 Codex 桌面端。
为什么切换第三方供应商后,之前的对话会报 401 Unauthorized 错误?
旧对话已经绑定了之前的官方登录态,切换供应商后旧对话仍会尝试使用旧凭证请求 `api.openai.com`,导致 401。新开一个对话窗口即可正常使用新的第三方供应商。
如何使用 GPT-5.6 模型?
更新 Codex CLI 至 v0.144.0 及以上,或更新 Codex 桌面端至最新版(软件名会变为 ChatGPT)。如果桌面端仍未显示,可手动修改 `~/.codex/config.toml`,把 `model` 改成 `gpt-5.6-sol`,重启后即使显示为 Custom 也能实际调用该模型。
卸载 cc-switch 后如何恢复 Codex 原本的官方登录?
删除 `~/.codex/config.toml` 里的相关自定义字段(如 `model_catalog_json` 等),并清空 `~/.codex/auth.json`,然后重新启动 Codex 即可看到原本的官方登录页面。
切换供应商后 Subagent 无法 spawn 怎么办?
这通常是因为切换到 custom provider 后,当前 session 缺少 spawn 工具暴露。建议检查 provider 的配置是否完整,或尝试新开对话。此问题在部分版本中仍处于开放状态,官方仍在排查。

这是一个非官方社区 wiki,与 cc-switch 作者及项目本身无隶属关系。内容整理自项目公开的 GitHub issues。本站不分发任何软件。