一、问题表现在 Codex Desktop 中切换 ChatGPT 账号登录和第三方 API 后常见问题主要有两类。第一类是请求直接报401 Unauthorizedunexpected status 401 Unauthorized:Incorrect API key providedurl: https://api.openai.com/v1/responses或者unexpected status 401 Unauthorized:无效的令牌url: https://www.packyapi.com/v1/responses第二类是切换登录方式后原来的对话列表不再显示。重新切回之前的登录方式对话又重新出现。这两个问题表面上都发生在“切换账号”之后但原因并不相同401通常是认证信息和接口地址不匹配对话不可见通常与当前登录身份、模型提供商配置或本地会话视图有关并不一定代表对话文件已经被删除。二、先根据请求地址判断问题排查401时首先查看报错中的url。1. 请求发到了 OpenAI 官方接口https://api.openai.com/v1/responses如果此时使用的是 PackyCode、PackyAPI 或其他第三方平台发放的 KeyOpenAI 官方接口不会认可该 Key因此会返回Incorrect API key provided这类情况可以概括为第三方 Key ↓ OpenAI 官方接口 ↓ 401 invalid_api_key解决方法不是反复更换模型而是将 Key、接口地址和模型提供商改为同一家平台。2. 请求仍然发到了第三方接口例如https://www.packyapi.com/v1/responses如果已经重新登录 ChatGPT Plus但报错地址仍然是 PackyAPI说明第三方配置没有被清除。Codex 当前登录的是哪个账号与请求最终发往哪个模型提供商并不完全是同一件事。登录状态可能已经切换但config.toml仍然保留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 packycodeCodex 就可能继续请求 PackyAPI而不是使用当前 ChatGPT 账号对应的服务。3. 请求发到了其他第三方接口例如https://api.aigocode.com/responses并返回INVALID API KEY说明请求已经到达 AIGoCode但当前 Key 没有通过该平台的认证。可能的原因包括Key 属于另一家平台Key 已经失效Key 复制不完整当前账号没有相应权限接口地址或认证方式配置错误。不能仅凭sk-前缀判断 Key 的来源因为不少第三方兼容平台也使用相同前缀。三、检查当前 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 model gpt-5.4 base_url https://www.packyapi.com/v1 wire_api responses说明当前仍处于第三方 provider 配置中。如果准备切回 ChatGPT Plus仅仅在界面中重新登录账号还不够还需要恢复原来的配置文件。四、不要误删桌面版的本地代理配置Codex Desktop 的原始配置中可能出现base_url http://127.0.0.1:15721/v1后面还可能包含[mcp_servers] [mcp_servers.node_repl] type stdio command C:\Users\...\node_repl.exe startup_timeout_sec 120127.0.0.1:15721是 Codex Desktop 使用的本地服务地址不是 OpenAI 公网 API也不是第三方 API。因此不建议为了清除第三方配置而直接删除整个config.toml。否则可能把桌面应用自动生成的 MCP、浏览器控制和运行时配置一并删除。更稳妥的方法是先备份当前配置恢复切换第三方 API 之前的配置完全退出并重新启动 Codex。五、恢复 ChatGPT 账号模式1. 完全关闭 CodexGet-Process | Where-Object { $_.ProcessName -match Codex } | Stop-Process -Force配置通常在应用启动时读取。如果 Codex 没有完全退出即使修改了配置旧进程也可能继续使用原来的 provider。2. 备份当前第三方配置Copy-Item $HOME\.codex\config.toml $HOME\.codex\config.toml.thirdparty-$(Get-Date -Format yyyyMMdd-HHmmss)不要直接覆盖而不留备份后续还需要使用第三方 API 时可以恢复这份文件。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 已经移除。随后重新启动 Codex使用 ChatGPT 账号登录并新建会话测试。六、检查环境变量是否覆盖配置有些第三方接入方式会通过环境变量设置 Key 或 Base URL。可以执行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如果没有任何输出说明当前没有通过常见环境变量设置第三方接口。七、为什么切换后对话列表会变化切换 ChatGPT 账号、API Key 或模型提供商后Codex 显示的会话列表可能发生变化。常见现象是账号登录模式显示一组历史会话 API Key 模式显示另一组会话 切回账号模式原会话重新出现从实际表现看这通常意味着会话没有真正被删除而是当前认证环境下没有加载到原来的会话视图。需要区分两件事项目文件和代码修改是否还在Codex 左侧的对话记录是否可见。即使旧对话暂时不可见只要没有执行删除、清理缓存或重置应用数据项目目录中的代码和文档一般不会因此消失。对于重要任务不建议只依赖聊天记录保存进度。可以在项目中维护一个交接文件CODEX_HANDOFF.md内容包括# 项目目标 # 已完成工作 # 修改过的文件 # 关键技术决策 # 当前存在的问题 # 下一步任务切换登录方式后在新会话中让 Codex 读取该文件即可恢复主要上下文。八、建议分别保存两套配置经常切换 ChatGPT Plus 和第三方 API 时可以保留两份独立配置。config.toml.chatgpt config.toml.packycode切换到 ChatGPT 账号模式Copy-Item $HOME\.codex\config.toml.chatgpt $HOME\.codex\config.toml -Force切换到第三方模式Copy-Item $HOME\.codex\config.toml.packycode $HOME\.codex\config.toml -Force切换顺序建议固定为完全关闭 Codex → 替换 config.toml → 重新启动 Codex → 确认登录方式 → 新建会话测试不要在 Codex 运行过程中直接覆盖配置。九、第三方 API 配置的基本原则第三方 API 不能只拿到一串 Key 就直接使用还需要确认平台名称 Base URL 模型 ID 接口协议 是否支持 Responses API 是否支持 Codex正确的匹配关系应为平台 A 的 Key 平台 A 的 Base URL 平台 A 支持的模型 平台 A 支持的接口协议以下组合都会导致异常PackyCode Key OpenAI 官方接口 AIGoCode Key PackyAPI 接口 ChatGPT 账号令牌 第三方 provider 第三方 Key 不受支持的模型名称排查时先看请求 URL再看model_provider通常比反复更换 Key 更有效。十、API Key 安全API Key 不应出现在公开文章截图GitHub 仓库聊天记录日志视频录屏。示例中应统一写成sk-********************************如果完整 Key 曾经公开应立即撤销并重新生成。总结Codex Desktop 在 ChatGPT 账号和第三方 API 之间切换后出现401通常不是单纯的 Key 失效而是以下配置没有同步切换登录身份 model_provider base_url API Key 模型名称 接口协议处理时可按以下顺序排查查看报错 URL → 确认 Key 来源 → 检查 config.toml → 检查环境变量 → 恢复对应配置 → 完全重启 Codex → 新建会话验证对话列表在不同登录方式下发生变化时也不应立即判断为数据丢失。应先切回原登录方式确认并通过项目内交接文档保存长期上下文。