【环境配置】卸载 Codex++ 后 Codex 仍显示 custom:恢复官方登录的解决方法
卸载 Codex++ 后 Codex 仍显示 custom:恢复官方登录的解决方法
问题背景
之前在 Windows 上使用过 Codex++,用于配置自定义模型或第三方服务。后来卸载 Codex++,准备恢复 Codex 官方登录。
但是卸载完成后,重新打开 Codex,左下角仍然显示:
custom

界面没有恢复到正常的 ChatGPT 官方账号状态。
这说明 Codex++ 虽然已经被卸载,但它写入的 Codex 配置、认证信息或环境变量仍然存在。Codex 官方应用启动后继续读取这些残留配置,因此仍然显示 custom。
最终通过以下方式解决:
关闭 Codex 相关进程,备份
.codex目录,删除config.toml和auth.json,并清除自定义服务相关环境变量。
一、问题现象
卸载 Codex++ 后,打开 Codex,左下角仍然显示:
custom
点击后只能看到类似以下选项:
显示宠物
设置
没有正常显示 ChatGPT 官方账号或工作区。
同时,在 PowerShell 中运行:
Get-Command codex -All
可能会提示:
无法将“codex”项识别为 cmdlet、函数、脚本文件或可运行程序的名称
运行:
where.exe codex
也可能提示找不到文件。
不过,这并不是本次问题的关键。
PowerShell 中的 codex 命令对应独立安装的 Codex CLI。没有安装 Codex CLI,并不影响 ChatGPT 桌面应用中集成的 Codex 功能。
本次问题的真正原因,是 .codex 配置和环境变量中仍然保留着 Codex++ 使用过的自定义 Provider 信息。
二、最终有效的解决方案
使用 PowerShell 执行以下脚本:
Get-Process ChatGPT,Codex,CodexPlusPlus -ErrorAction SilentlyContinue |
Stop-Process -Force
$stamp = Get-Date -Format "yyyyMMdd-HHmmss"
$codexDir = "$HOME\.codex"
$backupDir = "$HOME\.codex-backup-$stamp"
# 完整备份,防止本地会话或设置丢失
if (Test-Path $codexDir) {
Copy-Item $codexDir $backupDir -Recurse -Force
Write-Host "备份位置:$backupDir"
}
# 仅移除登录和自定义提供商配置
Remove-Item "$codexDir\config.toml" -Force -ErrorAction SilentlyContinue
Remove-Item "$codexDir\auth.json" -Force -ErrorAction SilentlyContinue
# 清除可能的自定义服务地址
$vars = @(
"CODEX_HOME",
"CODEX_ACCESS_TOKEN",
"CODEX_API_KEY",
"OPENAI_BASE_URL",
"OPENAI_API_BASE"
)
foreach ($name in $vars) {
Remove-Item "Env:$name" -ErrorAction SilentlyContinue
[Environment]::SetEnvironmentVariable($name, $null, "User")
}
Write-Host "自定义 Codex 配置已清理。"
执行完成后:
- 关闭当前 PowerShell 窗口。
- 重新打开 ChatGPT 或 Codex。
- 按照提示使用 ChatGPT 官方账号重新登录。
- 检查左下角是否还显示
custom。
在我的环境中,执行以上脚本后,Codex 成功恢复了正常的官方登录状态。
三、脚本具体做了什么
1. 关闭相关进程
脚本首先执行:
Get-Process ChatGPT,Codex,CodexPlusPlus -ErrorAction SilentlyContinue |
Stop-Process -Force
它会尝试关闭以下进程:
ChatGPT
Codex
CodexPlusPlus
这是为了防止配置文件正在被应用占用。
如果不先关闭应用,删除配置后,正在运行的程序可能重新写回旧配置,或者继续使用内存中已加载的自定义配置。
参数:
-ErrorAction SilentlyContinue
表示某个进程不存在时不显示错误,因此可以直接执行。
2. 创建带时间戳的备份目录
脚本生成当前时间:
$stamp = Get-Date -Format "yyyyMMdd-HHmmss"
例如:
20260728-103500
然后设置 Codex 配置目录:
$codexDir = "$HOME\.codex"
通常对应:
C:\Users\你的用户名\.codex
备份目录则类似:
C:\Users\你的用户名\.codex-backup-20260728-103500
这样每次执行脚本都会生成一个新的备份,不会直接覆盖旧备份。
3. 完整备份 .codex 目录
脚本执行:
if (Test-Path $codexDir) {
Copy-Item $codexDir $backupDir -Recurse -Force
Write-Host "备份位置:$backupDir"
}
如果 .codex 目录存在,就将整个目录复制到带时间戳的备份目录中。
这一步很重要,因为 .codex 目录除了保存登录和 Provider 配置外,还可能包含:
- Codex 偏好设置
- 会话状态
- 项目配置
- 日志
- 本地缓存
- 其他用户配置
先备份,再清理指定文件,可以避免误操作造成不可恢复的数据丢失。
4. 删除 config.toml
脚本删除:
Remove-Item "$codexDir\config.toml" -Force -ErrorAction SilentlyContinue
config.toml 通常用于保存 Codex 的配置,包括:
- 当前使用的模型
- 模型提供商
- 自定义 Provider
- 第三方接口地址
- API Base URL
- 环境变量名称
- 其他运行参数
Codex++ 可能会在该文件中加入类似下面的配置:
model_provider = "custom"
或者:
[model_providers.custom]
base_url = "https://example.com/v1"
env_key = "CODEX_API_KEY"
即使 Codex++ 已经卸载,只要 config.toml 中仍然指定了 custom Provider,官方 Codex 启动后仍然可能显示 custom。
删除该文件后,Codex 会在下次启动时重新使用默认配置,或者重新生成配置文件。
5. 删除 auth.json
脚本删除:
Remove-Item "$codexDir\auth.json" -Force -ErrorAction SilentlyContinue
auth.json 可能保存:
- 登录状态
- 访问令牌
- API Key 认证信息
- 自定义服务认证信息
- 旧的账号会话
如果文件中仍保存着 Codex++ 或第三方 Provider 的认证数据,仅删除 config.toml 可能还不够。
删除 auth.json 后,Codex 会要求重新登录,从而重新建立官方 ChatGPT 认证状态。
6. 清除当前 PowerShell 会话中的环境变量
脚本定义了以下变量:
$vars = @(
"CODEX_HOME",
"CODEX_ACCESS_TOKEN",
"CODEX_API_KEY",
"OPENAI_BASE_URL",
"OPENAI_API_BASE"
)
这些变量可能影响 Codex 的配置目录、认证方式或接口地址。
循环中的这一行:
Remove-Item "Env:$name" -ErrorAction SilentlyContinue
用于删除当前 PowerShell 会话中的对应环境变量。
例如,如果当前终端中存在:
OPENAI_BASE_URL=https://example.com/v1
Codex 可能继续连接第三方接口,而不是 OpenAI 官方服务。
7. 清除用户级永久环境变量
脚本还执行:
[Environment]::SetEnvironmentVariable($name, $null, "User")
这一步用于清除 Windows 用户级环境变量。
只删除当前终端中的:
Remove-Item Env:OPENAI_BASE_URL
是不够的,因为重新打开 PowerShell 或重新启动应用后,Windows 仍然可能从用户环境变量中加载该值。
设置为 $null 后,对应用户级变量会被删除。
四、需要清除的环境变量说明
CODEX_HOME
CODEX_HOME 用来指定 Codex 的配置根目录。
默认情况下,Codex 可能读取:
C:\Users\用户名\.codex
但如果设置了:
CODEX_HOME=D:\CustomCodex
即使已经清理了默认的 .codex 目录,Codex 仍然会从其他目录加载旧配置。
因此需要清除该变量。
CODEX_ACCESS_TOKEN
该变量可能保存 Codex 的访问令牌。
如果仍然存在旧令牌,应用可能继续使用原来的认证状态。
CODEX_API_KEY
该变量可能用于自定义 Codex Provider 的 API Key 认证。
清除后,可以避免 Codex 自动使用第三方 API Key。
OPENAI_BASE_URL
该变量可能将请求重定向到自定义服务,例如:
https://example.com/v1
如果它仍然存在,即使界面是官方 Codex,请求也可能不会发送到 OpenAI 官方接口。
OPENAI_API_BASE
这是另一种常见的自定义接口地址变量。
部分工具使用 OPENAI_BASE_URL,另一些工具使用 OPENAI_API_BASE,因此脚本同时清理两者。
五、为什么卸载 Codex++ 后问题仍然存在
原因在于,卸载程序和清除用户配置是两件不同的事情。
Codex++ 被卸载后,以下内容可能仍然保留:
C:\Users\用户名\.codex\config.toml
C:\Users\用户名\.codex\auth.json
以及用户环境变量:
CODEX_HOME
CODEX_ACCESS_TOKEN
CODEX_API_KEY
OPENAI_BASE_URL
OPENAI_API_BASE
卸载 Codex++ 通常只删除:
- Codex++ 程序本体
- 启动器
- 部分补丁文件
- 部分应用组件
为了避免用户配置和认证信息意外丢失,卸载程序一般不会主动删除整个 .codex 目录,也未必会清理 Windows 用户环境变量。
因此会出现这种情况:
Codex++ 已卸载
↓
自定义配置仍然存在
↓
官方 Codex 启动
↓
继续读取 custom Provider
↓
界面仍然显示 custom
六、执行脚本后的正确操作
脚本执行完成后,建议关闭当前 PowerShell 窗口。
这是因为环境变量修改后,已经运行的程序不会自动刷新环境。关闭并重新打开应用,可以确保它读取最新的环境变量状态。
推荐步骤:
执行清理脚本
→ 关闭 PowerShell
→ 确认 ChatGPT/Codex 已完全退出
→ 重新启动 ChatGPT
→ 进入 Codex
→ 使用官方 ChatGPT 账号登录
如果任务栏中仍有旧的 Codex++ 快捷方式,也应删除旧快捷方式,从 Windows 开始菜单重新启动官方 ChatGPT 应用。
更多推荐



所有评论(0)