跳转到主要内容

Codex account/read failed during TUI bootstrap:修法看后半句

Codex 启动秒退看后半句:discovery failed/timed out 先重启后台服务;401、requirements 多是令牌失效;plan type 是凭证混用。

LaoZhang AI Team发布于37 分钟阅读
文章目录
终端里的 Codex 报错 account/read failed during TUI bootstrap 拆成固定的前半句和决定修法的后半句,例如 workspace routing discovery failed

敲 codex,终端界面还没画出来就退回提示符,只留下一行:

Error: account/read failed during TUI bootstrap: account/read failed: workspace routing discovery failed (code -32603)

workspace routing discovery failed 那个位置也可能是 timed out、unauthorized (401)、failed to load workspace requirements、duplicate workspace in routing discovery,或者结尾换成 (code -32600) 的 plan type is required for chatgpt authentication。这一行从 2026 年 4 月到 10 月对应过好几种原因,前半句却一直没变:它只说"TUI 启动时发出的 account/read 请求失败了"。-32603 是 JSON-RPC 的通用内部错误码,-32600 是"无效请求",两个都不是 HTTP 状态码,也不指向任何具体原因。真正有信息量的是第二个 account/read failed: 之后、(code …) 之前的那半句,下文叫它后半句。

来源先交代清楚。机制部分来自 Codex 源码(codex-rs 仓库里的 workspace_routing.rs 与 app_server_session.rs,截至 2026 年 10 月 17 日的 main 分支)和 OpenAI 的官方文档;修法全部来自 GitHub openai/codex 仓库和 OpenAI 开发者社区里带日期的用户报告,每条都标了出处。本机实际执行过的只有 0.163.0-alpha 上 codex login status、codex doctor --summary --no-color、codex app-server daemon version 三条只读命令,用来确认输出长什么样;这个报错没有在本机复现,下面任何一条修法也没有被验证过。截至 2026 年 10 月 17 日,OpenAI 没有给出官方原因或修复说明,最新稳定版 0.163.0 上仍有新报告。

按后半句,处理方向分五类:

  • timed out 和 discovery failed:多数报告指向 0.157.0 起默认开启的共享后台服务,它状态陈旧、版本落后于 CLI,或继承了旧的代理环境变量。先 codex app-server daemon restart,再用 codex --no-daemon 验证是不是只有走后台服务才失败。
  • failed to load workspace requirements:有报告底下其实是被撤销的 ChatGPT 令牌,重新登录后还得把仍拿着旧令牌的进程杀掉。这是目前答得最不圆满的一类,0.163.0 上仍在复现。
  • unauthorized (401):令牌在账号侧已失效,在持有凭证的那台机器上重新登录。
  • duplicate workspace 和 selected workspace missing:账号侧的工作空间列表有问题,前者目前没有用户侧修法。
  • plan type is required … (code -32600):ChatGPT 模式的凭证里没有套餐信息,多见于第三方签发或和 API Key 混在一起的凭证,codex logout 后二选一重新登录。

这行报错在说什么:前半句固定,后半句才有信息

Codex 的交互界面(TUI)启动时要向一个叫 app-server 的进程发几个 JSON-RPC 请求,account/read 是其中一步,用来取当前账号信息。请求出错时,TUI 把它包成 account/read failed during TUI bootstrap: …,里面的 JSON-RPC 错误再渲染成 account/read failed: 后半句 (code N),于是就有了这行两段式的报错。同一个包装也用在 model/list、configRequirements/read、thread/start、thread/fork 上,所以 thread/start failed during TUI bootstrap 是启动序列里另一步出的错,各有各的 issue,不能套用下面的分类。

用 ChatGPT 账号登录时,account/read 会让 app-server 做一件事:解析"工作空间路由"(workspace routing)。这里的工作空间指你用 ChatGPT 账号登录时选的那个空间,不是项目目录。路由发现(discovery)要向 chatgpt.com 后端的 accounts/check 发请求,再拉一份云端的"工作空间要求"配置包。整个读取包在 15 秒的超时里,超时就返回 workspace routing discovery timed out;现场记录与此吻合,桌面版日志里是 durationMs=15002 errorCode=-32603 method=account/read,WSL2 的记录是 15.016 秒。路由类错误一律映射成 JSON-RPC 的 internal error,也就是 -32603;账号状态本身无效才是 invalid request,-32600。所以 -32603 只告诉你"路由那一步没过",具体是网络、令牌还是账号列表,要看后半句。

还有一个要先认识的对象:共享后台服务。自 2026 年 9 月 25 日发布的 0.157.0 起,交互式 codex 默认会启动一个常驻的 codex app-server --managed-daemon 进程,官方界面文案叫 shared background server,命令里叫 app-server daemon,下文统一叫后台服务。它还带一个更新器,会把整套运行包复制到 ~/.codex/packages/app-server-daemon/releases/ 下并从那份副本运行,所以正在跑的后台服务版本可以和你刚装的 CLI 不一样;它还会保留启动它那个会话的环境变量,包括代理设置。这些行为在 openai/codex issue #48195(要求把 daemon_auto_start 改成默认关闭)里有逐条描述(2026 年 9 月 25 日,19 条评论,没有官方回复)。真正去连 chatgpt.com 做路由发现的是这个后台服务进程,TUI 只是把请求发给它,这就是为什么后面很多修法都围着它转。

Codex TUI 把 account/read 发给共享后台服务,由它连 chatgpt.com 的 accounts/check 做路由发现;codex --no-daemon 走内嵌模式绕开后台服务,后台服务保留启动时的环境变量、版本可与 CLI 不同

两个看起来自相矛盾的现象也能解释了。codex login status 显示 Logged in using ChatGPT,是因为它只读本地存着的凭证,官方身份验证页对它的描述就是"查看当前的身份验证方式";令牌在服务端被撤销或拒绝时,它照样显示已登录。codex exec "…" 能跑,是因为 exec 不经过 TUI 这段启动序列;它能跑只说明凭证和模型请求本身没坏,不能反过来证明 account/read 会成功,账号里出现重复工作空间时 exec 也会失败。

截至 2026 年 10 月 17 日,Codex 官方文档的身份验证页、配置参考和开发者命令页都没有出现 "workspace routing"、account/read 或 "TUI bootstrap" 这几个词,所以下面能引官方的地方只有命令和配置项本身。

先跑三条检查:登录状态、后台服务版本、doctor 汇总

动手之前先跑三条不改任何东西的命令,它们决定你该跳到哪一节:

bash
codex login status
codex app-server daemon version
codex doctor --summary --no-color
命令输出说明什么
codex login statusLogged in using ChatGPT走 ChatGPT 登录,路由发现会执行,后面各节都适用
codex login statusLogged in using an API keyAPI Key 登录不做路由发现,这行报错多半来自自定义 provider 配置,直接看 plan type is required 那一节的 requires_openai_auth 部分
codex app-server daemon version一段 JSON,含 cliVersion、appServerVersion、managedCodexVersion对比 cliVersion 与 appServerVersion,不一致就是版本错位
codex app-server daemon versionError: failed to connect to ~/.codex/app-server-control/app-server-control.sock,下面一行 No such file or directory (os error 2)此刻没有后台服务在跑,重启它不是你的杠杆,先看代理、令牌和账号侧的几节
codex doctor --summary --no-color分组行,含 websocket connected (HTTP 101 Switching Protocols) · 15s timeout、Background Server ○ app-server not running (ephemeral mode) 或显示 running看后台服务在不在、WebSocket 通不通;去掉 --summary 的详细报告里有 app-server 的版本号

JSON 的实际样子来自 openai/codex issue #52928 里 bboygun 2026 年 10 月 15 日的评论:{"status":"running","backend":"pid","managedCodexVersion":"0.162.1","cliVersion":"0.162.1","appServerVersion":"0.162.1"}。socket 不存在的那条报错和 doctor 的分组行是本机 0.163.0-alpha.10.2 的原样输出,当时没有后台服务在跑。codex app-server daemon 下的 start、restart、update、stop、version 等子命令来自 CLI 自带的 --help;官方开发者命令页记录了 --no-daemon、codex doctor、codex login status、codex logout 和 TUI 内的 /daemon,但没有记录这组子命令。

codex doctor 覆盖安装、配置、身份验证、运行时、Git、终端、app-server 和线程清单。要注意的是它全绿也挡不住这个报错:重复工作空间那条 issue 里,一位用户贴出的 doctor 输出 auth is configured、websocket connected (HTTP 101 Switching Protocols) 全部正常,codex 照样起不来。doctor 回答的是"本机环境有没有问题",不是"账号侧和路由发现过不过"。

后半句对照表:每种写法指向什么、先做什么

后半句原文代码里的含义报告里的常见原因先做什么
workspace routing discovery timed out15 秒内没完成路由发现后台服务状态陈旧或版本错位;代理只对启动它的那个会话生效;WSL2;网络不稳codex app-server daemon restart,再用 --no-daemon 验证
workspace routing discovery failed路由发现请求失败,不是超时,有报告 1.63 秒就返回同上;代理端口填错返回 407;公司网络封了 chatgpt.com同上,另查代理端口和放行规则
failed to load workspace requirements云端的工作空间要求配置包没拉下来;0.162.1 与 0.163.0 不打印原因有报告底下是 401 token_revoked重新登录,然后杀掉仍持旧令牌的进程;0.163.0 仍有复现
workspace routing discovery unauthorized (401)后端拒绝了这个令牌账号权限或套餐变动后旧凭证失效;远程主机上的旧 auth.json在持有凭证的那台机器上重新登录,再结束旧的 app-server 进程
duplicate workspace in routing discovery账号的工作空间列表里出现两个一样的条目账号侧数据,ChatGPT 网页和手机端也能看到两个 Personal用户侧没有有效修法,开支持工单;VS Code 扩展仍可用
selected workspace missing from routing discovery保存的工作空间选择不在账号当前列表里没有公开报告可读,只有代码枚举重新登录并重选工作空间;设了 forced_chatgpt_workspace_id 的核对它。此条是推断
plan type is required for chatgpt authentication (code -32600)ChatGPT 模式凭证的令牌里没有 plan_type第三方签发或混用的凭证codex logout,然后官方 ChatGPT 登录或 API Key 登录,二选一
没有后半句(2026 年 4 月的旧写法)0.120 时代,内层错误不显示自定义 provider 写了 requires_openai_auth = true,又留着过期的 ChatGPT 登录态把它改成 false 或删掉;或 codex logout 后重新登录

按后半句分流:timed out 与 discovery failed 先重启后台服务,failed to load workspace requirements 重新登录再杀旧进程,unauthorized (401) 在持有凭证的机器上重登,duplicate workspace 开支持工单,plan type is required 则 codex logout 后二选一重新登录

timed out 与 discovery failed:先重启后台服务,再试 --no-daemon

这两种后半句的报告最多,有效的办法也最集中。

重启后台服务。命令是 codex app-server daemon restart。据 OpenAI 开发者社区帖"Codex CLI 0.162.0 fails during TUI bootstrap"(2026 年 10 月 9 日,Linux Mint,ChatGPT 登录,本地代理),作者自己给出并被标为接受答案的解法就是这一条,"没有删除配置、凭证或对话历史";他同时注明重启"可能打断正在进行的 Codex 会话",并且说不清起作用的是后台服务版本旧(CLI 0.162.0,后台 0.161.0)还是它拿着过期的代理设置。issue #52928 里 bboygun 10 月 15 日的情形更干净:0.162.1,HTTP 代理,CLI 和后台服务版本一致,用 curl 打 https://chatgpt.com/backend-api/wham/accounts/check 0.46 秒返回 401(未带凭证时的正常结果),说明网络没问题,codex --no-daemon 正常,重启后台服务后 codex 恢复;他的猜测是"陈旧的 daemon 状态、继承的代理环境变量或连接状态"。issue #17800 里 mlms13(10 月 11 日)和 itsmistermoon(10 月 15 日)也报告重启后恢复。更早的做法是直接杀进程:openai/codex issue #48894 里 Humorhunter 2026 年 9 月 29 日的评论给的是 pkill -f codex,然后 codex login status 确认还在登录,再 codex,10 月 5 日和 6 日各有一人回复有效。Windows 上没有 pkill,哪些 Codex 进程该结束、哪些该留,见Codex Windows 后台进程怎么处理:哪些该保留,哪些可以结束。

0.163.0 给 TUI 里的 /daemon 加了确认后重启本地后台服务的动作(PR #53173),确认框会提示其他聊天里进行中或排队的工作可能被中断;官方文档对 /daemon 的说明是"打开后台服务控制",并提醒确认更新会退出 Codex、可能打断正在进行的工作。但它要先进得了 TUI 才能用,对这个报错只能靠命令行那条。

对齐版本。上一步检查里 cliVersion 和 appServerVersion 不一致时,直接把后台服务换成当前 CLI 这份:

bash
codex app-server daemon update --from-cli --yes

--from-cli 的帮助文字是"复制并固定这份 CLI 包",update 本身标注"可能打断正在运行的工作"。issue #52928 里 ziheng5(10 月 15 日,Arch Linux)的 CLI 是 0.162.1、后台服务是 0.160.0,跑完这条后两边都到 0.162.1,codex 直接起来了。openai/codex issue #52775(macOS 升到 0.162.1 后启动失败)里附的 doctor JSON 也是 "app-server version": "0.161.0" 配 codexVersion 0.162.1。版本会错位是前面说的机制决定的:npm install -g @openai/codex@latest 换的是 CLI,正在跑的后台服务用的还是 ~/.codex/packages/ 下那份旧副本,直到重启或更新。配置项 tui.show_server_version_notice 默认开着,会在能进 TUI 时提示连接的 app-server 版本和 CLI 不同。

用 --no-daemon 验证。codex --no-daemon 的说明是"不使用共享后台服务运行,即使它已在运行"。它不是修复,是分流:同一个 shell、同样的代理、登录和配置,codex 失败而 codex --no-daemon 成功,就说明问题出在走后台服务的那条路上。issue #52928 的发起人 Baifeng76(10 月 10 日,Ubuntu 22.04 的 Docker 容器,0.156.1 和 0.162.1 都复现)给的时间很有用:默认启动 1.630 秒就报 discovery failed,"和耗尽 15 秒超时不符",而 --no-daemon 直接可用。反过来,--no-daemon 也失败,就不是后台服务的事,重复工作空间那条 issue 里 Koninec(9 月 23 日)用 --no-daemon 得到一模一样的报错。内嵌模式的代价是 codex agents 和远程控制这类依赖共享服务的功能不可用,官方文档也写明它不能和 --remote 同用。

为什么 -c log_dir=… 也"有效"。从 9 月下旬起有一串报告说加 -c log_dir="$HOME/.codex/log" 就能启动:openai/codex issue #48600(Windows 与 WSL,0.157.1),issue #52775(macOS,0.162.1),以及 LanternCX 10 月 14 日的同样反馈,他的后半句是 failed to load workspace requirements。Baifeng76 在 #52928 里找到了解释:带 -c、--enable、--disable 或 --search 启动时,CLI 会打印 "Running without the shared background server: command-line configuration overrides (-c, --enable, --disable, or --search) requires embedded mode.",也就是任何命令行覆盖都会强制内嵌模式。所以 -c model_reasoning_effort="medium" 一样能进,而把 log_dir 写进 config.toml 顶层却没用。log_dir 不是原因,这些报告其实都是 --no-daemon 的变体。另有 Zefrain 10 月 15 日一条单独报告说只 touch ~/.codex/log/codex-tui.log 就能让 codex 启动,没有人解释过为什么,也没有第二个人确认。

干脆关掉自动启动。codex features disable daemon_auto_start(来自 codex features --help,写进 config.toml),或手写:

toml
[features]
daemon_auto_start = false

issue #48195 里 tagorr(9 月 25 日,Windows 10 LTSC,0.157.0)用这一行解决了他的启动阻塞。截至 10 月 17 日,daemon_auto_start 不在官方配置参考里,这是从 CLI 帮助和用户报告得来的做法,代价和 --no-daemon 相同。

后台服务跑久了的另一类故障。openai/codex issue #37971(启动时报没有可用的文件描述符)里报错的是 configRequirements/read failed during TUI bootstrap,原因是跑了 8 天的后台服务把 1,024 个文件描述符用掉了 1,022 个。方法名不同,但同属"后台服务状态陈旧"这一类,重启即清;0.162.0 把托管后台服务的软上限提到了 4,096。

代理和公司网络:后台服务只认启动它那一刻的环境变量

这一节的几条报告都和代理、网络有关,带代理跑 Codex 的先看这里。

后台服务保留的是启动它那个会话的环境变量(issue #48195 的描述)。你后来在另一个终端改了代理端口、换了节点、或者干脆关了代理,正在跑的后台服务并不知道。按这个行为推,改完代理之后的顺序应该是:停掉旧的后台服务,在带着正确变量的 shell 里再启动 codex,让新的后台服务继承新环境。

bash
codex app-server daemon stop
HTTP_PROXY=$PROXY_URL HTTPS_PROXY=$PROXY_URL codex

把 $PROXY_URL 换成你代理监听的地址。桌面版用户做过同一件事:openai/codex issue #49921(macOS 桌面版不显式设 HTTP_PROXY 就超时)(2026 年 10 月 1 日,桌面版 26.921)里,account/read 稳定耗时 15 秒后失败,/wham/usage、/wham/tasks/list、/settings/user 返回 HTTP 432 "Workspace routing is unavailable";给 Electron 加 --proxy-server= 参数没用,带着 HTTP_PROXY、HTTPS_PROXY、NO_PROXY 环境变量从命令行启动应用就正常。CLI 侧,issue #52928 里 wenzhaoabc(10 月 12 日)在 ~/.codex/ 下放了一个 .env 文件,写入 http_proxy、https_proxy 和 no_proxy,重启 Codex 后恢复。这是单人报告,官方文档没有记载 .env 会被读取,但成本低,可以试。

ini
http_proxy="http://PROXY_HOST:PROXY_PORT"
https_proxy="http://PROXY_HOST:PROXY_PORT"

两个容易踩的坑来自报告本身。一是端口填错:社区帖 1404666 的作者发现代理返回 407 Proxy Authentication Required,原因是把 SOCKS 端口 10808 当成 HTTP 代理端口填进了环境变量,而 HTTP 端口其实是 10809;改对端口后 407 消失,但 Codex 还得重启后台服务才恢复。二是分流规则没放行 chatgpt.com:openai/codex issue #50211 里 kubilen 2026 年 10 月 16 日的评论说公司网络封了 chatgpt.com 却没封 *.openai.com,于是登录能成功,之后的一切都失败。路由发现打的是 chatgpt.com/backend-api/wham/accounts/check,分流规则只写 openai.com 不够。同一条 issue 里 khughitt(10 月 11 日,Linux,0.162.1)的补充值得知道:网络抖动时 TUI 会先正常显示、接受输入,然后才突然退出并丢掉你已经敲的内容。

0.163.0 的一项改动和这里相关:PR #52702 让启动阶段的 accounts/check 和 config/bundle 请求在请求出错时经系统代理重试(前提是启用了回退),但 HTTP 401、403、407、429、503 这些响应不触发回退。也就是说,代理配置本身错了(407)不会被它救回来。企业 TLS 拦截的情形,官方文档给的是 CODEX_CA_CERTIFICATE 指向 PEM 证书包,未设时回退到 SSL_CERT_FILE;HTTP_PROXY、HTTPS_PROXY 不在官方环境变量页上。

WSL2 单独说一句。openai/codex issue #51052(WSL2 下 account/read 15 秒超时,Windows 成功)(10 月 5 日,0.160.0)用同一个账号对照:Windows 侧 account/read 0.422 秒成功,WSL2 侧 15.016 秒超时,codex exec 两边都能跑;报告者自己也说超时信息不能定位是哪一段卡住。另外 0.162.0 起,家目录挂在 Windows 盘上的 WSL(DrvFS/9p)会跳过后台服务自动启动,带着警告以内嵌模式运行,这类环境里重启后台服务不是你的杠杆,重点查 WSL 侧的网络和代理变量。

failed to load workspace requirements:先查令牌,再杀旧进程

这句的字面意思是云端那份"工作空间要求"配置包没拉下来。当前 main 分支的代码会在后面附上原因,形式有 cloud config: authentication failed (HTTP 401)、cloud config: request timed out、cloud config: request failed、cloud config: invalid bundle,或 invalid configuration at 路径:行:列;但 0.162.1 和 0.163.0 的报告里(issue #54184 10 月 15 日、issue #52928 10 月 14 日的评论、社区帖 1407111 10 月 17 日)打印的都是光秃秃的 failed to load workspace requirements (code -32603)。已发布版本上你看不到原因,只能靠下面两条报告排查。

openai/codex issue #54184(真正的错误是 401 token_revoked)(10 月 15 日,0.162.1,macOS arm64,ChatGPT 登录)给了唯一一个查到底的样本:每个后端请求都返回 401 token_revoked("Encountered invalidated oauth token for user"),包括拉配置包那一次,TUI 却只报了通用的 -32603。报告者的关键发现是,重新 codex login 之后,还在跑的 TUI 和后台服务继续使用那个已被撤销的令牌,直到被杀掉。所以这条的顺序是:

bash
codex logout
codex login
codex app-server daemon restart
codex

没有后台服务在跑的话,把第三步换成结束所有残留的 codex 进程。

另一条报告说明这类还没有收口。OpenAI 开发者社区帖"Codex CLI TUI fails during account/read workspace requirements bootstrap"发于 2026 年 10 月 17 日:codex-cli 0.163.0,macOS,Node 22,ChatGPT Plus;在任何目录执行 codex 都立刻报这句,codex login status 显示 Logged in using ChatGPT,退出再登录无效,从 0.162.1 升到 0.163.0 无效,codex exec "Reply only with READY" 正常返回 READY。帖子发出时零回复。X 上也有用户 10 月 13 日拿着 0.162.1 上的这句直接问 Codex 负责人"什么时候修",未见回复。

如果重新登录加杀进程之后还是这句,剩下能做的只有上一节的办法:codex app-server daemon restart,以及用 --no-daemon 验证。LanternCX 10 月 14 日带着这句后半句用 -c log_dir 进去了,也就是内嵌模式对部分 requirements 失败同样有效。再往下就没有可引用的报告了。

unauthorized (401):在持有凭证的那台机器上重新登录

后端在路由发现这一步直接拒绝了令牌。codex login status 仍显示已登录,因为它只看本地文件。

openai/codex issue #47456(远程主机保留失效的 ChatGPT 登录态,login status 仍显示已登录)(2026 年 9 月 23 日)描述的场景是 macOS 桌面版通过 SSH 连一台无界面的 Linux 主机,凭证存在远程主机的 ~/.codex/auth.json 里。账号刚获得新的权限之后,远程侧开始返回 workspace routing discovery unauthorized (401);在远程主机上重新执行 codex login --device-auth 立刻恢复。报告者把权限变动称为"可能的触发条件而非确认的根因"。桌面版这时弹的是另一句不相干的提示 "Your access token could not be refreshed because your refresh token was revoked",而真正过期的凭证在远程那边,所以要在凭证实际所在的机器上重登。服务器上怎么用设备码登录、什么时候该拷 auth.json,见Codex 服务器无浏览器登录:设备码、SSH 转发、auth.json 怎么选。

同一条 issue 下 2aeyes8472-ux(10 月 1 日)补了另一半:套餐变动后 --device-auth 登录成功,401 却还在,原因是一个长期运行的 codex app-server 进程仍持有旧令牌,日志里一直是 token_revoked;pkill -f 'codex app-server' 后再 codex 就正常了,~/.codex 下没删任何文件。这和上一节 issue #54184 的观察一致:重新登录只换了磁盘上的凭证,内存里的旧令牌要靠结束进程。Reddit 上也有人报告过这句后半句,细节无法核对,只能说"也有人遇到"。

duplicate workspace:账号侧有两个同名工作空间,暂无用户侧修法

openai/codex issue #47034(登录成功后报 duplicate workspace in routing discovery)2026 年 9 月 21 日开出,截至 10 月 17 日仍未关闭,9 条评论覆盖 Windows 和 macOS、CLI 0.155 到 0.160、桌面版 26.924。它和前面几类的区别在于问题不在本机:mallejsan-pixel(10 月 3 日)在 ChatGPT 手机应用里看到自己的账号下有两个一样的 "Personal account / Personal";Sanchit-Koul(10 月 4 日)在网页登录时的工作空间选择器里同样看到两个 "Personal account","我没有创建第二个工作空间"。路由发现拿到两条一样的条目,就返回了这句。

评论区列出的无效尝试很完整:codex logout 再 codex login、codex login --device-auth、全新的 CODEX_HOME、设置 forced_chatgpt_workspace_id、重装、codex --no-daemon,全部得到同一句报错;codex exec 也失败,表现为 "Reconnecting… 2/5" 一路到 5/5。能用的只有 VS Code 的 Codex 扩展(10 月 4 日仍可用)。Koninec(9 月 23 日)降到 0.154.0 后能用,Sanchit-Koul(10 月 4 日)降到同一版本没用。几位用户都开了支持工单,线程里没有官方回复。如果你的后半句是这句,先去 ChatGPT 网页或手机端的工作空间切换处看一眼是不是真有两个重复条目,是的话本机能做的就只剩开工单。

selected workspace missing from routing discovery 只在代码的错误枚举里有,没有可读的公开报告。按字面推断,它指保存的工作空间选择已不在账号当前的列表里,对应动作是重新登录并重选工作空间;config.toml 里设了 forced_chatgpt_workspace_id(官方配置参考:"将 ChatGPT 登录限制在某个工作空间 ID")的,核对这个 ID 还属于你的账号。官方身份验证页另有一句相关说明:当前凭证不符合配置限制时,Codex 会把用户登出并退出。这一段是推断,不是报告。

plan type is required:凭证里缺套餐信息,退出后二选一重新登录

这句的结尾是 (code -32600),不是 -32603。它来自 provider.rs 里的 MissingChatgptAccountDetails:ChatGPT 模式的凭证里,令牌必须带 plan_type,email 可以没有,plan_type 不行;缺了就按"账号状态无效"返回 invalid request。也就是说这不是路由发现失败,而是凭证本身不完整。

哪种凭证会缺这个字段,代码没说,中文论坛里的场景给了方向。linux.do 上 2026 年 10 月 3 日有一帖直接以这句为题,同帖还引了 "'gpt-5.4' model is not supported when using Codex with a ChatGPT account";更早的 2026 年 4 月 7 日 linux.do 帖"codex从公益站换回官方报错解决方法"记的是从公益站(免费中转)切回官方账号后 codex 直接报 account/read failed during TUI bootstrap;CSDN 2026 年 7 月 7 日的"本地Codex 接口登录报错account/read failed 的排查与修复记录"把原因归为登录方式混用,走的是退出当前登录状态、设置 API Key、codex login --with-api-key、codex login status 看到 Logged in using an API key、再启动。从代码路径和这些场景看,最可能的是第三方签发的、或手工拼进 auth.json 的 ChatGPT 模式令牌,它们没有 OpenAI 官方令牌里的套餐字段。这是推断,不是官方说明。

处理方式是把凭证收拾干净,二选一:

bash
codex logout
# 要么官方 ChatGPT 登录
codex login
# 要么 API Key 登录
printenv OPENAI_API_KEY | codex login --with-api-key

codex logout 的官方描述是"清除当前凭证",没有参数。用 API Key 登录后路由发现根本不会执行,源码测试 api_only_login_does_not_discover_chatgpt_routing 的预期就是零次 accounts/check 请求;0.163.0 起(PR #52635),没有 ChatGPT 登录时 app-server 启动和连接初始化阶段的后台路由读取也会跳过。代价是官方文档写明的那条:API Key 走标准 API 计费,不用 ChatGPT 套餐里的额度,两种方式怎么选见Codex API Key 和 ChatGPT 订阅怎么选?额度与 credits 按美元算。

自定义 provider 的用户还要检查一个配置项。官方文档:requires_openai_auth = true 表示"该 provider 使用 OpenAI 身份验证",此时 Codex 忽略 env_key。issue #17800 里 xpfo-go(2026 年 4 月 27 日)定位到的就是这一点:给 OpenAI 兼容端点写了 env_key,又顺手加了 requires_openai_auth = true,TUI 启动时就会去读 Codex 存着的 ChatGPT 登录态而不是你的 key,那份登录态过期或不完整就报这行。处理是删掉或改成 false:

toml
[model_providers.my-provider]
base_url = "..."
wire_api = "responses"
env_key = "MY_PROVIDER_API_KEY"
# 不要同时写 requires_openai_auth = true

[model_providers]、env_key、base_url 各写什么,见Codex 自定义 API 配置:Key、Base URL 与 Provider 怎么选。

顺带把 4 月那种没有后半句的旧写法说完。issue #17800(2026 年 4 月 14 日,0.120.0,API Key 用户)的原始修法是退出再登录;5 月 14 日 949869228 给的是 rm ~/.codex/auth.json 再重新认证,比删整个 ~/.codex 好,后者会把全部会话记录一起删掉(RayneYael 5 月 9 日)。但到了 10 月的版本上,mlms13(10 月 11 日)删 auth.json 加重新登录已经不够,起作用的是 codex app-server daemon restart。所以"删 auth.json"是 4 月那类原因的修法,不是现在的默认动作。

不删会话历史的处理顺序:检查、重启、验证、重登、代理、配置

~/.codex 下放着配置、凭证、日志和会话记录(官方对 CODEX_HOME 的描述),下面的顺序不会碰会话记录:

  1. 跑三条检查,确认登录方式、后台服务在不在、版本有没有错位。什么都不改。
  2. 后台服务在跑,先 codex app-server daemon restart;版本错位则 codex app-server daemon update --from-cli --yes。两条都可能打断其他窗口里正在跑的 Codex,先把别处的活收尾。
  3. 还不行,codex --no-daemon。能进,说明问题在共享后台服务那条路上,可以先这样用,或关掉 daemon_auto_start;不能进,往下。
  4. 重新登录:codex logout,codex login(服务器上用 --device-auth),然后结束所有残留的 codex 进程,再 codex。只动登录态。
  5. 带代理的,核对端口和放行规则(要包含 chatgpt.com),停掉后台服务,在带正确变量的 shell 里重新启动。
  6. 用自定义 provider 的,检查 requires_openai_auth 和 env_key 没有同时生效。
  7. 后半句是 duplicate workspace,或在 0.163.0 上重新登录加重启之后仍是 failed to load workspace requirements,目前没有可引用的用户侧修法,去对应 issue 和社区帖留下你的版本和平台,比继续折腾本机更有用。

不建议的动作只有一个:rm -rf ~/.codex。它在 4 月确实解决过问题,代价是会话记录全没,而 10 月的报告显示删凭证并不是现在起作用的那一步。

0.163.0 修了吗:三项相关改动,没有一条是修复声明

按 GitHub 发布页整理的时间线:

  • 0.157.0(2026 年 9 月 25 日):后台服务默认自动启动(#47179);"为不兼容的后台服务提供显式恢复"(#47318)。这个版本之后 timed out 和 discovery failed 的报告开始集中。
  • 0.160.0(10 月 1 日)、0.161.0(10 月 7 日):后台服务诊断信息写进报告(#49843)。
  • 0.162.0(10 月 8 日):Windows 盘上的 WSL 家目录不再自动启动后台服务(#50555);托管后台服务的文件描述符上限提到 4,096(#51470);"区分 daemon 发布身份与可执行文件内容"(#50559)。0.162.1 在 10 月 9 日。
  • 0.163.0(10 月 15 日,当前稳定版):TUI 内 /daemon 可重启后台服务(#53173);启动阶段的 GET 请求在请求出错时经系统代理重试(#52702);没有 ChatGPT 登录时跳过后台路由读取(#52635);"把 daemon 功能兼容性检查限制在显式 CLI 覆盖上"(#52648)。
  • 0.164.0-alpha.1 到 alpha.3(10 月 16 日至 17 日):发布说明为空。

三项 0.163.0 的改动都挨着这个报错,但没有一条写着修复 workspace routing discovery failed 或 timed out,而 10 月 17 日的社区帖就是 0.163.0 上的 failed to load workspace requirements。所以升级值得做,它至少把 /daemon 和代理重试带了进来,但不要把升级当成修法。升级和重装的具体命令见Codex CLI 安装与配置:Windows、macOS、Linux 一次跑通。下一个值得回头看的节点是 0.164 的稳定版。

桌面版和 VS Code 扩展的 workspace routing discovery timed out

同一个 15 秒的路由发现也跑在 ChatGPT 桌面版和 VS Code 扩展里,只是报错换成了登录框上的 "Sign-in failed: workspace routing discovery timed out" 或 "Login failed: …",典型表现是每天都要重新登录。报告散在几条 issue 里:#48894(9 月 28 日,VS Code 扩展,Ubuntu,Pro);openai/codex issue #49443(macOS 桌面版几乎每天要求重新登录)(9 月 30 日,26.924,日志里是 account/read failed: workspace routing discovery failed (error code -32603) 和 "Workspace routing is unavailable");#53236(10 月 12 日,Windows 26.1007,每日重登)和 #53520(10 月 13 日);#50828(10 月 4 日,Windows 登录)。10 月 17 日还有日本用户在 X 上说桌面版突然取不到工作空间信息,向 OpenAI 反馈只收到 AI 回复。

被报告有效的做法同样是进程和环境那两类:#48894 的 pkill -f codex;#49921 带着 HTTP_PROXY、HTTPS_PROXY 启动桌面版;同一条 issue 里 HarmoniK-kang(10 月 15 日)发现退出 ChatGPT 应用后还有一个 Dock Extra (ChatGPT.app) 进程留着,杀掉它之后能登录了,他自己也说不清为什么。openai/codex issue #47145(Windows 上内置运行时导致超时)(9 月 22 日)给的取舍是让桌面版用外部 CLI(CODEX_CLI_PATH),登录能保持,但 ChatGPT Memory 不可用。

桌面版另一个带"工作空间"字样的报错是新聊天发不出的「无法加载工作空间设置」,那是 Cloudflare 403 或 macOS DeviceCheck 的问题,与路由发现无关,见Codex 无法加载工作空间设置:新聊天发不出,按日志分两类排查。VS Code 扩展等 30 秒后报 "could not start" 也是另一条线,见Codex could not start 报错:VS Code 插件按环境排查,哪些已修复。

容易混在一起的 Codex 报错:thread/start、403、提交消息时出错

重启后台服务和重新登录前的几个疑问

重启后台服务会不会打断我其他窗口里正在跑的 Codex?

会有这个风险。社区帖 1404666 的作者在接受答案里专门注明"重启 daemon 可能打断正在进行的 Codex 会话";codex app-server daemon update 的帮助文字写着"可能打断正在运行的工作";0.163.0 给 /daemon 加重启功能的 PR #53173 也在确认框里提示其他聊天中进行或排队的工作可能被中断。先让别的窗口把当前一轮跑完再重启。

codex logout 之后,还在跑的 Codex 进程会怎样?

从两条报告看,它们会继续用内存里的旧令牌。issue #54184 的报告者重新登录后,仍在运行的 TUI 和后台服务一直拿着已撤销的令牌直到被杀掉;issue #47456 下的评论里,--device-auth 登录成功后 401 依旧,直到 pkill -f 'codex app-server'。所以退出再登录这一步要配上结束旧进程,否则等于没做。

要不要直接删掉 ~/.codex?

不要。CODEX_HOME(默认 ~/.codex)下放着配置、凭证、日志和会话记录,删掉它等于清空全部历史对话,issue #17800 里 5 月就有人指出这一点。只想重置登录态,用 codex logout;凭证存储模式是 file 时它对应的文件是 auth.json,模式是 keyring 时凭证在系统凭据库里,更应该走 codex logout 而不是删文件。而且 10 月的报告显示,重置登录态多数时候并不是起作用的那一步。

codex exec 能跑,为什么 TUI 进不去?

account/read 这一步是 TUI 启动序列里发的,codex exec 不走这段,所以它能跑只证明凭证和模型请求没问题。10 月 17 日 0.163.0 上的社区帖和 10 月 5 日 WSL2 那条 issue 都是这种组合。它也不是万能的对照:账号里有重复工作空间时 codex exec 同样失败,表现为反复 "Reconnecting"。

把后台服务关掉算修好了吗?

不算,这是绕开。--no-daemon、-c 覆盖、daemon_auto_start = false 都让 TUI 以内嵌模式运行,避开了共享后台服务那条路,失去的是 codex agents、远程控制这类依赖共享服务的功能。后台服务路径上为什么会失败,截至 2026 年 10 月 17 日没有官方说明,issue #52928 和 #48195 都还开着。

参考来源16

本文引用的外部页面,按正文出现顺序排列。最后更新于 2026年10月17日。

  1. 1.openai/codex issue #48195(要求把 daemon_auto_start 改成默认关闭)github.com/openai/codex/issues/48195
  2. 2.openai/codex issue #52928 里 bboygun 2026 年 10 月 15 日的评论github.com/openai/codex/issues/52928
  3. 3.OpenAI 开发者社区帖"Codex CLI 0.162.0 fails during TUI bootstrap"community.openai.com/t/1404666
  4. 4.openai/codex issue #48894 里 Humorhunter 2026 年 9 月 29 日的评论github.com/openai/codex/issues/48894
  5. 5.openai/codex issue #52775(macOS 升到 0.162.1 后启动失败)github.com/openai/codex/issues/52775
  6. 6.openai/codex issue #48600(Windows 与 WSL,0.157.1)github.com/openai/codex/issues/48600
  7. 7.openai/codex issue #37971(启动时报没有可用的文件描述符)github.com/openai/codex/issues/37971
  8. 8.openai/codex issue #49921(macOS 桌面版不显式设 HTTP_PROXY 就超时)github.com/openai/codex/issues/49921
  9. 9.openai/codex issue #50211 里 kubilen 2026 年 10 月 16 日的评论github.com/openai/codex/issues/50211
  10. 10.openai/codex issue #51052(WSL2 下 account/read 15 秒超时,Windows 成功)github.com/openai/codex/issues/51052
  11. 11.openai/codex issue #54184(真正的错误是 401 token_revoked)github.com/openai/codex/issues/54184
  12. 12.OpenAI 开发者社区帖"Codex CLI TUI fails during account/read workspace requirements bootstrap"community.openai.com/t/1407111
  13. 13.openai/codex issue #47456(远程主机保留失效的 ChatGPT 登录态,login status 仍显示已登录)github.com/openai/codex/issues/47456
  14. 14.openai/codex issue #47034(登录成功后报 duplicate workspace in routing discovery)github.com/openai/codex/issues/47034
  15. 15.openai/codex issue #49443(macOS 桌面版几乎每天要求重新登录)github.com/openai/codex/issues/49443
  16. 16.openai/codex issue #47145(Windows 上内置运行时导致超时)github.com/openai/codex/issues/47145
小团队多代理编程的任务选择、职责分工、独立工作区与合并流程示意
开发工具与智能体

小团队多代理编程工作流:Worktree、任务分工与合并验收

先拆清任务,再让代理并行:每个实现者用独立目录,交付固定提交和检查记录;负责人把变更逐个合到候选版本,在合并后的整体上验证。角色分工与 Git 隔离不能代替运行权限控制。

25 分钟