ChatGPT Windows 提示「Windows 安装未完成」:不是 Windows,是 config.toml

ChatGPT / OpenAI.Codex 桌面端卡在 Complete Windows Setup,重装无效;最终定位为用户目录 .codex/config.toml 配置不兼容。

📅 时间: 2026-07-15
🌤️ 天气: 银川

山重水复疑无路,柳暗花明又一村。

— 陆游 · 《游山西村》

ChatGPT Windows 提示「Windows 安装未完成」

适用环境:Windows 11 + Microsoft Store 版 ChatGPT / OpenAI.Codex 桌面端

问题现象

安装并启动 ChatGPT Windows 客户端后,界面一直停在:

  • 完成 Windows 设置
  • ChatGPT 需要一次性权限才能在你的电脑上运行
  • Windows 安装未完成

点「重试 Windows 设置」「继续受限访问」都没反应。
管理员运行、UAC 允许、卸载重装、Reset-AppxPackage、重启电脑——全无效。

一开始怀疑什么

界面写着 Windows setup incomplete,本能会怀疑:

  • UAC / 管理员权限
  • Microsoft Store / AppX 安装损坏
  • Windows App Runtime
  • 相关服务(AppXSvc、ClipSVC 等)

于是先把「系统侧」排了一遍。

排查:系统侧其实都正常

1. 包已经装好

POWERSHELL
Get-AppxPackage -Name OpenAI.Codex

结果大致是:

  • 包名:OpenAI.Codex(不是 OpenAI.ChatGPT
  • Status : Ok
  • 安装目录在 C:\Program Files\WindowsApps\OpenAI.Codex_...

说明:Store 安装、AppX 注册本身没坏。

2. 进程其实已经起来

POWERSHELL
Get-Process | Where-Object { $_.ProcessName -match "ChatGPT|Codex|OpenAI" }

能看到 codex.exe 在跑。
所以不是「EXE 根本起不来」,而是起了但内部初始化没走完

3. AppModel 日志也干净

Microsoft-Windows-AppModel-Runtime/Admin 里是:

  • Create AppContainer Success
  • LaunchProcess Success
  • FinishPackageActivation Success

没有 Access Denied / Package Error。
结论:Windows 已经把应用激活成功了,锅不在 Windows。

真正突破口:客户端自己的日志

日志在:

TEXT
%LOCALAPPDATA%\Packages\OpenAI.Codex_*\LocalCache\Local\Codex\Logs

用户配置在:

TEXT
%USERPROFILE%\.codex\config.toml

注意:卸载 Store 应用不会删 ~\.codex
所以「重装永远没用」——新装完还是读旧配置。

我这边实际踩到的配置错误

网上常见说法是 hooks 格式、duplicate key、UTF-8 BOM 把 notify 读成 锘縩otify
这些都可能,但我本机日志里最后钉死的是下面两条(按出现顺序):

错误 1:model_catalog_json 不能写相对路径

TEXT
invalid configuration: AbsolutePathBuf deserialized without a base path
in `model_catalog_json`

当时配置类似:

TOML
model_catalog_json = "cc-switch-model-catalog.json"

新版要求绝对路径,例如:

TOML
model_catalog_json = "C:\\Users\\你的用户名\\.codex\\cc-switch-model-catalog.json"

不需要自定义模型目录的话,也可以直接删掉 / 注释这一行。

错误 2:不能覆盖内置 provider 名 openai(致命)

修完路径后,日志立刻变成:

TEXT
model_providers contains reserved built-in provider IDs: `openai`.
Built-in providers cannot be overridden.
Rename your custom provider (for example, `openai-custom`).

当时有:

TOML
model_provider = "openai"

[model_providers.openai]
base_url = "http://127.0.0.1:20000/v1"
wire_api = "responses"

这在旧版或许能用;新版明确禁止用内置 ID openai 当自定义 provider。

改成:

TOML
model_provider = "openai-proxy"

[model_providers.openai-proxy]
name = "openai-proxy"
base_url = "http://127.0.0.1:20000/v1"
wire_api = "responses"

改完后界面不再卡在「Windows 安装未完成」。

顺带发现的次要问题(不一定致命)

1. MCP / node_repl 指向了过期 runtime 目录

配置里还写着类似:

TEXT
...\OpenAI\Codex\runtimes\cua_node\789504f803e82e2b\bin\node_repl.exe

磁盘上实际只有别的 hash 目录(例如 a89897d3d9baa117)。
路径对不上会导致 browser / computer-use 相关能力异常,建议和现有 runtime 对齐。

2. bundled executable relocation 失败

日志里大量:

TEXT
bundled_executable_relocation_failed
copyfile ... errno -4094 UNKNOWN

应用试图把 WindowsApps 里的 codex.exe / cua_node 拷到:

TEXT
%LOCALAPPDATA%\OpenAI\Codex\bin
%LOCALAPPDATA%\OpenAI\Codex\runtimes

本机还观察到源文件带 Encrypted 属性,复制到用户目录会失败。
这次主因仍是 config 解析失败;若 config 修好后仍异常,可再查:

  • C 盘 EFS / 文件夹加密
  • 杀软拦截复制
  • 清掉 %LOCALAPPDATA%\OpenAI\Codex 下的 .staging-* 再启动

为什么界面会骗你

大致启动链是:

TEXT
启动程序
  → 读 config.toml
  → 初始化 app-server / MCP / plugins / computer use
  → 完成 Windows Setup 页面

任意一步配置解析失败:

TEXT
config 失败
  → 初始化中断
  → Setup 永远完成不了
  → 界面仍写「Windows 安装未完成」

所以文案误导性很强:Windows 早就装完了,是客户端自己的初始化没过。

快速自救清单

遇到同样现象,优先做这几步,别先反复重装:

1. 先看日志里有没有 config 报错

POWERSHELL
$logRoot = "$env:LOCALAPPDATA\Packages\OpenAI.Codex_2p2nqsd0c76g0\LocalCache\Local\Codex\Logs"
Get-ChildItem $logRoot -Recurse -File |
  Sort-Object LastWriteTime -Descending |
  Select-Object -First 1 |
  ForEach-Object { Select-String -LiteralPath $_.FullName -Pattern "failed to reload|invalid configuration|duplicate key" }

2. 临时禁用坏配置(最快验证)

POWERSHELL
Stop-Process -Name codex -Force -ErrorAction SilentlyContinue
Copy-Item "$env:USERPROFILE\.codex\config.toml" "$env:USERPROFILE\.codex\config.toml.bak-$(Get-Date -Format yyyyMMddHHmmss)"
Rename-Item "$env:USERPROFILE\.codex\config.toml" "config.toml.disabled"

再打开 ChatGPT,让它生成干净默认配置。
能进主界面 = 百分百是用户配置问题。

3. 再把自定义项加回去(注意雷区)

  • model_catalog_json 用绝对路径,或不要写
  • 自定义 provider 不要叫 openai / 其他内置 ID
  • MCP 路径指向当前真实存在的 runtime 目录
  • 避免 duplicate key、错误编码 / BOM

总结

表象真相
Windows 安装未完成Windows / AppX 多半已经 OK
重装无效~\.codex 不会随 Store 卸载删除
真正故障源config.toml 与新版不兼容
本机关键错误相对路径 model_catalog_json + 覆盖内置 openai provider

一句话:

ChatGPT Windows 卡在「Windows 安装未完成」时,先看 %USERPROFILE%\.codex\config.toml 和 Codex Logs,不要只盯着 Store 和 UAC。

如果你的现象是:重装无效、管理员运行无效、进程其实在跑、日志里一堆 failed to reload config——优先修 / 重建这份配置,通常比继续折腾 AppX 省几个小时。


授权

ChatGPT Windows 提示「Windows 安装未完成」:不是 Windows,是 config.toml

2026年07月15日
1267 字 · 6 分钟

© xiexienila · CC BY-NC-SA 4.0