Codex切换ChatGPT Plus与第三方API后出现401的排查方法
1. 问题现象
Codex在ChatGPT Plus账号和第三方API之间切换后,可能出现以下几类错误。
情况一:第三方 Key 被发送到 OpenAI 官方接口
错误中的请求地址为:
https://api.openai.com/v1/responses
这说明 Codex 当前连接的是 OpenAI 官方 API,但使用的 Key 并不是有效的 OpenAI 官方 API Key。
常见原因是:
-
使用了 PackyCode、PackyAPI 等第三方平台的 Key;
-
但接口地址仍然是
api.openai.com; -
第三方 Key 被当作 OpenAI 官方 Key 使用。
情况二:切回 ChatGPT Plus 后,仍然请求第三方接口
unexpected status 401 Unauthorized:无效的令牌
url: https://www.packyapi.com/v1/responses
错误中的请求地址为:
https://www.packyapi.com/v1/responses
这说明虽然 Codex 界面已经登录 ChatGPT Plus 账号,但配置文件中仍指定了 PackyAPI。
典型残留配置如下:
model_provider = "packycode"
model = "gpt-5.4"
[model_providers.packycode]
name = "packycode"
base_url = "https://www.packyapi.com/v1"
wire_api = "responses"
requires_openai_auth = true
只要以下配置仍然存在:
model_provider = "packycode"
Codex 就会继续选择 PackyCode 提供商,而不会因为重新登录 ChatGPT 账号自动恢复官方模式。
情况三:Key 与第三方接口不属于同一平台
unexpected status 401 Unauthorized:
{"code":"INVALID API KEY","message":"Invalid API key"}
url: https://api.aigocode.com/responses

这种错误说明请求已经到达第三方服务器,但该服务器不认可当前 Key。
例如:
PackyCode Key
↓
AIGoCode 接口
↓
401 Invalid API Key
sk- 只是常见的 Key 前缀,不能据此判断 Key 属于哪个平台。
2. 问题根源
Codex 是否使用 ChatGPT Plus 额度,不能只看当前登录的账号,还要看模型提供商配置。
影响请求走向的主要内容包括:
登录方式
model_provider
base_url
API Key
模型名称
接口协议
其中:
-
登录方式决定当前使用哪种认证;
-
model_provider决定使用哪个模型提供商; -
base_url决定请求发送到哪个服务器; -
API Key 必须由对应服务器签发;
-
模型名称必须是该平台实际支持的模型;
-
wire_api决定使用 Responses API 还是其他接口。
一套可用配置必须满足:
API Key、Base URL、模型名称和接口协议属于同一平台
只切换账号而不修改 config.toml,很容易导致认证方式和请求地址不匹配。
3. 先查看错误中的 URL
处理 401 时,应先检查错误信息里的:
url: ...
它比“Invalid API key”更能直接说明问题。
OpenAI 官方接口
https://api.openai.com/v1/responses
如果这里使用的是第三方 Key,OpenAI 会返回:
Incorrect API key provided
PackyAPI 接口
https://www.packyapi.com/v1/responses
如果已经切回 ChatGPT Plus,但仍出现这个地址,说明第三方 provider 配置还没有清除。
AIGoCode 接口
https://api.aigocode.com/responses
如果 Key 并非 AIGoCode 签发,该平台会返回无效 Key。
可以按照下面的关系快速判断:
| 当前认证或 Key | 实际请求地址 | 结果 |
|---|---|---|
| 第三方 Key | api.openai.com |
401 |
| ChatGPT Plus 登录 | www.packyapi.com |
401 |
| 非 AIGoCode Key | api.aigocode.com |
401 |
| PackyAPI Key | PackyAPI 对应接口 | 正常或进入下一步校验 |
| ChatGPT Plus 登录 | Codex 官方账号模式 | 使用 Plus 额度 |
4. 检查 Codex 配置文件
Windows 版 Codex 的用户配置文件通常位于:
C:\Users\当前用户名\.codex\config.toml
在 PowerShell 中执行:
Get-Content "$HOME\.codex\config.toml" |
Select-String -Pattern "packy|aigocode|base_url|model_provider|requires_openai_auth|env_key|wire_api|^model\s*="
如果输出包含:
model_provider = "packycode"
base_url = "https://www.packyapi.com/v1"
说明当前仍在使用 PackyAPI。
如果要切回 ChatGPT Plus,就不能继续保留:
model_provider = "packycode"
5. Windows 桌面版中的本地地址
部分 Windows 版 Codex 配置中会出现:
base_url = "http://127.0.0.1:15721/v1"
这个地址是 Codex 桌面应用使用的本地服务地址,不是第三方公网接口,也不是 OpenAI 官方 API 地址。
配置文件后面还可能包含:
[mcp_servers]
[mcp_servers.node_repl]
type = "stdio"
command = 'C:\Users\...\node_repl.exe'
startup_timeout_sec = 120
以及:
[mcp_servers.node_repl.env]
这些通常是桌面应用自动生成的 MCP、浏览器控制和运行时配置。
因此,恢复 ChatGPT Plus 模式时,不应直接清空整个 config.toml,也不应随意删除 mcp_servers 部分。最安全的方法是恢复切换第三方 API 之前保存的原始配置。
6. 检查环境变量
部分客户端会通过环境变量读取 Key 或接口地址,因此还应检查 Windows 环境变量。
下面的命令会隐藏 Key 和 Token 的值:
foreach ($scope in @("Process", "User", "Machine")) {
[Environment]::GetEnvironmentVariables($scope).GetEnumerator() |
Where-Object {
"$($_.Key)" -match "OPENAI|PACKY|AIGOCODE|CODEX"
} |
ForEach-Object {
$sensitive = "$($_.Key)" -match "KEY|TOKEN|SECRET"
[PSCustomObject]@{
Scope = $scope
Name = $_.Key
Value = if ($sensitive) {
"<已隐藏>"
} else {
"$($_.Value)"
}
}
}
}
重点检查以下变量:
OPENAI_API_KEY
OPENAI_BASE_URL
OPENAI_API_BASE
PACKY_API_KEY
AIGOCODE_API_KEY
如果没有任何输出,说明当前问题大概率来自 config.toml 或应用内部配置,而不是系统环境变量。
7. 切回 ChatGPT Plus 的解决方法
7.1 完全关闭 Codex
在修改配置前,应先退出 Codex。
可以在 PowerShell 中终止残留进程:
Get-Process |
Where-Object { $_.ProcessName -match "Codex" } |
Stop-Process -Force
修改配置后如果不重启,旧进程仍可能继续使用启动时读取的配置。
7.2 备份当前第三方配置
Copy-Item "$HOME\.codex\config.toml" `
"$HOME\.codex\config.toml.thirdparty-$(Get-Date -Format 'yyyyMMdd-HHmmss')"
这样以后还需要使用第三方 API 时,可以恢复对应配置。
7.3 恢复原始配置
如果之前已经保存了官方模式下的备份,例如:
config.toml.backup-20260627-154357
可以执行:
Copy-Item "$HOME\.codex\config.toml.backup-20260627-154357" `
"$HOME\.codex\config.toml" -Force
恢复后检查:
Get-Content "$HOME\.codex\config.toml" |
Select-String -Pattern "packy|aigocode|base_url|model_provider|requires_openai_auth|env_key|wire_api|^model\s*="
如果输出只剩:
base_url = "http://127.0.0.1:15721/v1"
并且没有以下内容:
model_provider = "packycode"
https://www.packyapi.com/v1
说明第三方 provider 已经移除。
7.4 重新登录 ChatGPT Plus
重新打开 Codex 后:
-
使用自己的 ChatGPT 账号登录;
-
确认账号页面显示 Plus;
-
新建一个会话;
-
发送简单测试请求;
-
检查是否还出现第三方接口地址。
如果错误中仍出现:
https://www.packyapi.com/v1/responses
说明第三方配置没有完全切换。
如果不再出现第三方 URL,并且 Codex 能正常响应,则已恢复 ChatGPT Plus 模式。
8. 配置第三方 API 时的基本要求
使用第三方 API 时,不能只获得一串 Key,还必须明确以下信息:
平台名称
Base URL
模型名称
接口协议
是否支持 Codex
例如一套第三方配置可能类似:
model_provider = "第三方提供商名称"
model = "第三方支持的模型ID"
[model_providers.第三方提供商名称]
name = "第三方提供商名称"
base_url = "第三方提供的Base URL"
wire_api = "responses"
requires_openai_auth = true
具体值必须以第三方平台提供的说明为准,不能根据 Key 前缀猜测。
常见错误包括:
PackyCode Key + OpenAI Base URL
AIGoCode Key + PackyAPI Base URL
ChatGPT Plus 登录 + 第三方 model_provider
第三方 Key + 不受支持的模型名称
9. 建议分别保存两套配置
频繁在 ChatGPT Plus 和第三方 API 之间切换时,可以分别保存配置。
ChatGPT Plus 配置
config.toml.chatgpt
第三方 API 配置
config.toml.packycode
切换到 ChatGPT Plus:
Copy-Item "$HOME\.codex\config.toml.chatgpt" `
"$HOME\.codex\config.toml" -Force
切换到第三方 API:
Copy-Item "$HOME\.codex\config.toml.packycode" `
"$HOME\.codex\config.toml" -Force
每次切换后都应:
关闭 Codex
替换 config.toml
重新启动 Codex
新建会话
检查实际请求 URL
不要在 Codex 正在运行时直接切换配置。
10. API Key 安全
API Key 不应直接出现在:
-
CSDN 文章;
-
截图;
-
GitHub 仓库;
-
聊天记录;
-
日志文件;
-
公开配置示例。
文章中统一使用:
sk-********************************
如果完整 Key 已经被公开,应立即在对应平台:
-
撤销旧 Key;
-
创建新 Key;
-
更新本地配置;
-
停止使用已泄露的 Key。
11. 排查顺序
遇到 Codex 401 时,可以按下面的顺序处理。
第一步:看 URL
api.openai.com
www.packyapi.com
api.aigocode.com
先确认请求实际发到了哪里。
第二步:确认 Key 来源
确认 Key 是 OpenAI 官方、PackyCode、AIGoCode,还是其他平台生成的。
第三步:检查 config.toml
Get-Content "$HOME\.codex\config.toml" |
Select-String -Pattern "base_url|model_provider|model|wire_api"
第四步:检查环境变量
排除 OPENAI_API_KEY、OPENAI_BASE_URL 等变量覆盖配置。
第五步:检查匹配关系
确认以下内容属于同一平台:
API Key
Base URL
模型名称
接口协议
第六步:恢复对应配置
切回 ChatGPT Plus 时,恢复官方模式下的 config.toml。
第七步:彻底重启 Codex
配置修改后必须重新启动应用。
总结
Codex 切换 ChatGPT Plus 和第三方 API 后出现 401,通常不是单纯的 Key 失效,而是以下内容没有同步切换:
认证方式
model_provider
base_url
API Key
模型名称
排查时不要只看“Invalid API key”,应优先查看错误中的实际请求 URL。
只要确保:
API Key、Base URL、模型名称和接口协议属于同一平台
并在切换后恢复正确的 config.toml、完全重启 Codex,大多数 401 问题都可以解决。
更多推荐


所有评论(0)