ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Windows ChatGPT 启动失败:Unable to locate the Codex CLI binary 解决方法

Windows ChatGPT 启动失败:Unable to locate the Codex CLI binary 解决方法 1. Windows 下 ChatGPT 桌面端启动报错 Unable to locate the Codex CLI binary 是什么你双击 Windows 版 ChatGPT 桌面图标窗口还没出来先弹一个错误框ChatGPT failed to start. Unable to locate the Codex CLI binary. Set CODEX_CLI_PATH or ensure the Electron resources include bin/codex.这个报错的核心意思是ChatGPT 桌面端Electron 壳在启动时需要拉起一个叫 Codex CLI 的命令行程序来完成本地代码相关能力但它在预期位置没找到这个二进制文件于是直接拒绝启动。先把几个名词拆开讲清楚不然后面排查会晕。ChatGPT 桌面端在 Windows 上是一个 Electron 应用。Electron 的本质是「一个 Chromium 浏览器 Node.js 运行时打包成的桌面壳」。它自己不会写代码、不会读本地仓库很多能力要靠外部进程。Codex CLI 就是这样一个外部进程——一个独立的命令行工具负责本地代码上下文、文件读写、命令执行这类活。Electron 主进程启动时会按一套固定顺序去找 Codex CLI 的可执行文件先读环境变量CODEX_CLI_PATH如果它指向一个真实存在的 exe就用它如果没有这个环境变量就去自己的 resources 目录里找bin/codex打包时应该内置进去的两处都没有就抛出你看到的这条Unable to locate the Codex CLI binary。所以这个报错只有两种根因要么 Codex CLI 根本没装或装到了别处要么装了但CODEX_CLI_PATH没设、或者设了但没生效。绝大多数情况是第二种——路径写错、变量设到了错误的作用域、或者设完没重启进程。适合谁看这篇在 Windows 10/11 上用 ChatGPT 桌面端、想用本地代码能力、结果被这个启动错误卡住的人。不需要你懂 Electron 源码跟着命令走就行。我试过在一台全新 Windows 11 上复现装完 Codex CLI 后不设环境变量ChatGPT 依然报同样的错——说明桌面端并不会自动去LOCALAPPDATA里翻必须显式告诉它路径。这就是为什么「装了还是报错」。下面按「先确认二进制在不在 → 再确认路径变量生效 → 最后验证桌面端能读到」的顺序走每一步都有可复制的命令和预期输出。2. 前置准备确认 Codex CLI 安装位置与 CODEX_CLI_PATH 语义在动手设环境变量之前先搞清楚 Codex CLI 到底装在哪、CODEX_CLI_PATH到底该填什么。这一步做对后面基本不会返工。2.1 Codex CLI 的默认安装路径Windows 上通过官方脚本安装 Codex CLI默认落在当前用户的LOCALAPPDATA下$env:LOCALAPPDATA\Programs\OpenAI\Codex\bin\codex.exe$env:LOCALAPPDATA在标准 Windows 上会展开成C:\Users\你的用户名\AppData\Local。注意这里有个常见误解很多人以为要手动把「你的用户名」替换掉其实在 PowerShell 里直接用$env:LOCALAPPDATA这个变量就行它会自动展开不用改。如果你之前用 npm 全局装过路径可能是$env:APPDATA\npm\codex.cmd或者用其他包管理器装的路径又不一样。所以第一步永远是「先找到真实的 exe 在哪」而不是照抄一个路径。2.2 CODEX_CLI_PATH 的语义CODEX_CLI_PATH是一个用户级环境变量值必须是codex 可执行文件的完整绝对路径包括文件名和.exe后缀。几个容易踩的点不能填目录必须填到codex.exe这一层路径里有空格没关系但设变量时不要自己加引号PowerShell 的SetEnvironmentVariable会原样存加了引号反而会让 Electron 找不到作用域要选User不要选Machine。选 Machine 需要管理员权限而且 Electron 以当前用户身份启动时读的是 User 作用域两者混用会出现「明明设了却读不到」。注意环境变量分「进程级 / 用户级 / 系统级」。你在当前 PowerShell 窗口里$env:CODEX_CLI_PATH ...只是进程级关掉窗口就没了ChatGPT 也读不到。必须用[Environment]::SetEnvironmentVariable(..., User)写到用户级。2.3 为什么 Electron 读不到你设的变量这是本篇最核心的坑。Electron 应用启动时读取环境变量的时机是「进程创建那一刻」。如果你在 ChatGPT 已经运行的情况下改环境变量它不会重新读——必须彻底退出再启动。更隐蔽的一种情况Windows 的「快速启动」和托盘驻留会让 ChatGPT 进程没真正退出。你点了右上角关闭它可能只是最小化到托盘进程还在环境变量自然还是旧的。所以后面第 4 步会专门讲怎么强制杀进程。还有一种情况是变量设到了当前会话而不是用户级或者设的时候路径拼错了一个字符。这些都会在第 5 步的排障里逐条对照。2.4 用 TaoToken 统一管理模型接入可选如果你除了本地 Codex CLI还想在同一个工作流里调用云端模型做代码补全、对话验证可以用 TaoToken 把模型接入统一起来。它的 API 地址是https://taotoken.net/api兼容常见的 OpenAI 风格调用方式配置一次就能在多个工具里复用同一个 Key。对这篇的场景来说它的价值在于当你排查完 Codex CLI 路径问题、ChatGPT 桌面端能正常启动后可以顺手把模型调用也接上避免每个工具各配一套。具体接入方式在下一节给可复制片段。3. 可复制配置安装 Codex CLI 并写入 CODEX_CLI_PATH这一节给完整可复制的命令按顺序执行即可。全部在 PowerShell 里跑普通用户权限就够不需要管理员。3.1 安装 Codex CLI打开 PowerShell开始菜单搜 PowerShell直接打开不用管理员执行powershell -ExecutionPolicy Bypass -Command irm https://chatgpt.com/codex/install.ps1 | iex-ExecutionPolicy Bypass是为了绕过当前会话的执行策略限制只对这一次命令生效不改系统设置。irm是Invoke-RestMethod的别名拉取安装脚本并执行。装完后Codex CLI 默认在$codex $env:LOCALAPPDATA\Programs\OpenAI\Codex\bin\codex.exe这行直接复制不用改用户名。3.2 验证二进制存在并读取版本Test-Path $codex预期返回True如果返回False说明安装没成功或装到了别处先别往下走去第 5 步看排查。确认存在后读版本 $codex --version预期输出类似codex-cli 0.149.1版本号和你看到的不一样是正常的只要不是报错就行。3.3 写入用户级环境变量[Environment]::SetEnvironmentVariable(CODEX_CLI_PATH, $codex, User)这行把CODEX_CLI_PATH写到当前用户的用户级环境变量里作用域是User。写完后当前 PowerShell 会话不会自动刷新需要新开窗口或手动读一次。3.4 校验变量写入结果[Environment]::GetEnvironmentVariable(CODEX_CLI_PATH, User)预期返回 codex.exe 的完整路径类似C:\Users\你的用户名\AppData\Local\Programs\OpenAI\Codex\bin\codex.exe如果返回空说明上一步没写成功重跑 3.3。3.5 可选接入 TaoToken 的配置片段如果你要把模型调用也统一到 TaoToken可以在同一个用户级环境变量体系里加一个配置文件。以常见的 OpenAI 兼容配置为例在用户目录下建config.json{ base_url: https://taotoken.net/api, api_key: 你的_TaoToken_Key, model: gpt-4o-mini }三个字段对应三件套Base URL 填https://taotoken.net/apiAPI Key 去控制台生成Model ID 按你实际要用的填。Key 的获取入口在https://taotoken.net/api-keys接入文档在https://taotoken.net/doc。注意这个 JSON 是给支持 OpenAI 兼容配置的工具用的不是 Codex CLI 的配置。Codex CLI 的路径问题只跟CODEX_CLI_PATH有关别把两件事混在一起。3.6 完整一键脚本把上面几步合成一段直接整段粘贴执行# 安装 Codex CLI powershell -ExecutionPolicy Bypass -Command irm https://chatgpt.com/codex/install.ps1 | iex # 定位路径 $codex $env:LOCALAPPDATA\Programs\OpenAI\Codex\bin\codex.exe # 验证存在与版本 Test-Path $codex $codex --version # 写入用户级环境变量 [Environment]::SetEnvironmentVariable(CODEX_CLI_PATH, $codex, User) # 校验写入 [Environment]::GetEnvironmentVariable(CODEX_CLI_PATH, User)跑完最后一行能看到完整路径就说明配置层面 OK 了。接下来是让 ChatGPT 真正读到它。4. 验证请求强制重启 ChatGPT 并确认成功启动配置写对了不等于 ChatGPT 能读到。Electron 进程只在启动瞬间读环境变量所以必须彻底重启。4.1 强制结束残留进程先看有没有残留Get-Process -Name ChatGPT,Codex -ErrorAction SilentlyContinue如果有输出说明进程还在。强制结束Get-Process -Name ChatGPT,Codex -ErrorAction SilentlyContinue | Stop-Process -Force-ErrorAction SilentlyContinue是为了在进程不存在时不报错脚本能继续跑。4.2 确认进程已清空Get-Process -Name ChatGPT,Codex -ErrorAction SilentlyContinue这次应该没有任何输出。如果还有说明有进程被系统保护或权限更高可以打开任务管理器手动结束。4.3 从新会话启动 ChatGPT关键点不要从旧的 PowerShell 或旧的任务栏图标启动。最稳的方式是按Win键搜索 ChatGPT右键 → 以普通用户身份打开不要用管理员管理员会话的环境变量可能不同观察是否还弹Unable to locate the Codex CLI binary。如果不再弹错、窗口正常出现说明路径问题解决了。4.4 用命令行验证 Electron 能读到的变量想更确定一点可以在启动 ChatGPT 之前用一个新开的 PowerShell 窗口读一次用户级变量[Environment]::GetEnvironmentVariable(CODEX_CLI_PATH, User)再读一次进程级新窗口里进程级会继承用户级$env:CODEX_CLI_PATH两个都返回完整路径说明变量在「用户级 → 新进程」这条链路上是通的。ChatGPT 作为新进程启动时读到的就是同一个值。4.5 成功结果长什么样成功启动后ChatGPT 桌面端正常打开不再有错误框。如果你在应用里触发本地代码相关功能它能正常调用 Codex CLI而不是报「binary not found」。到这一步Unable to locate the Codex CLI binary就算解决了。如果还有问题进下一节逐条对照。5. 本篇常见错排查401、local proxy failed、reading choices、OAuth这一节把排查过程中最常撞到的几类报错列出来对照你的实际输出定位。5.1 仍然报 Unable to locate the Codex CLI binary说明 ChatGPT 读到的CODEX_CLI_PATH还是空或错的。按顺序查[Environment]::GetEnvironmentVariable(CODEX_CLI_PATH, User)是否返回完整路径返回空就是没写成功重跑 3.3。路径是否真的存在Test-Path返回 False 就是路径错了重新用$env:LOCALAPPDATA拼。是不是设到了Machine作用域[Environment]::GetEnvironmentVariable(CODEX_CLI_PATH, Machine)如果有值而 User 没有说明设错作用域了用 User 重设。ChatGPT 是不是没真正退出重跑 4.1 的强制结束。5.2 401 Unauthorized这个跟 Codex CLI 路径无关是模型调用鉴权失败。常见于你把 TaoToken 的 Key 填错、或 Key 过期。检查配置文件里的api_key字段去https://taotoken.net/api-keys重新生成一个。Base URL 确认是https://taotoken.net/api不要多加斜杠或路径。5.3 local proxy failed这个报错通常出现在工具尝试走本地代理端口但端口没起来。检查是否有本地代理进程在监听预期端口配置文件里的 base_url 是否指向了一个不存在的本地地址如果用的是 TaoToken 的云端地址https://taotoken.net/api就不该出现 local proxy 相关逻辑说明配置里混入了本地代理设置清掉。5.4 reading choices 相关报错这类报错一般是响应体解析失败模型返回的 JSON 结构跟客户端预期不一致。排查方向确认 Model ID 填的是服务端真实支持的模型名确认 base_url 没有指向一个返回 HTML 错误页的地址比如把网页地址当 API 地址填了用curl直接打一次接口看返回体是不是合法 JSON。5.5 OAuth 相关报错如果工具走的是 OAuth 流程而不是 API Key报错通常跟回调地址、token 过期有关。检查回调地址是否和注册时填的一致token 是否过期重新授权一次系统时间是否准确时间偏差过大会导致 token 校验失败。5.6 三件套对照表凡是涉及模型接入的报错先对照这三件套是否齐全且正确配置项正确值示例常见错误Base URLhttps://taotoken.net/api填成网页地址、多写路径API Key控制台生成的 Key复制时带空格、Key 过期Model ID服务端支持的模型名拼错、用了不存在的模型三件套里任何一个错都会表现为不同的报错。401 多半是 Keyreading choices 多半是 Model ID 或 Base URLlocal proxy failed 多半是 Base URL 指向了本地。5.7 排查顺序建议遇到任何报错按这个顺序走能少绕路先确认 Codex CLI 路径问题是否已解决本篇主线再确认三件套是否齐全用curl或 PowerShell 的Invoke-RestMethod直接打接口隔离是客户端问题还是服务端问题最后才怀疑工具本身的 bug。6. 后续接入与长期使用建议路径问题解决后ChatGPT 桌面端能正常启动了。如果你接下来要长期在本地做代码相关的工作有几个方向可以顺手配好。第一把模型接入统一到一处。本地 Codex CLI 负责本地代码上下文云端模型负责对话和补全两者用同一套 Base URL 和 Key 管理切换成本最低。TaoToken 的接入文档在https://taotoken.net/doc模型对话入口在https://taotoken.net/chat需要长期跑编码任务或 Agent 的可以看https://taotoken.net/coding-plan。第二环境变量设一次就够但换机器、重装系统后要重设。建议把 3.6 那段一键脚本存成一个.ps1文件放桌面重装后双击跑一遍。第三遇到报错先看错误原文的关键词。Unable to locate是路径问题401是鉴权reading choices是响应解析local proxy是代理配置。按关键词分流比盲目重装快得多。第四ChatGPT 桌面端更新后偶尔会重置 resources 目录如果之前是靠内置bin/codex工作的更新后可能又找不到。这时候CODEX_CLI_PATH显式指定的好处就体现出来了——它不依赖应用内部打包更新也不影响。最后提醒一句环境变量改完一定要彻底重启进程这是本篇最高频的返工原因。托盘驻留、快速启动、多开窗口都会让旧进程继续用旧变量。养成「改完变量先杀进程再启动」的习惯能省掉大量重复排查。
返回列表