Codex 更新后对话消失和沙盒失效:适用人群、问题背景、解决方式与原因分析
如果前面已经看过我上一篇《CodeX windows app使用第三方api以及session记录还原》,这一篇可以直接接着看。
上一篇解决的是:
- 使用第三方 API 之后聊天记录怎么恢复
- 最简配置应该怎么写
- 已经看不到的对话怎么重新显示
这一篇不是重复那个内容。
这一篇要说的是另一个坑:
Codex 更新之后,对话突然像没了,工具执行也不正常,看起来像沙盒失效了,但最后发现问题不在 API,而在另一层更隐蔽的高级配置。
适宜人群
这篇主要适合下面这些人看:
1. 已经在用 Codex Desktop,并且改过配置
如果你一直是默认配置,很多问题其实不会这么复杂。
但只要你已经开始自己改:
- provider
- model
- features
- sandbox
- profile
那这篇就和你有关系。
2. 已经接过第三方 API,或者经常切换配置的人
这类用户最容易误判。
因为一旦更新后出问题,第一反应通常都会先去怪 API,或者先怀疑聊天记录又没了。
但这次这个坑,真不一定是那边出的。
3. 看过上一篇,已经会用最简配置和恢复脚本的人
上一篇那套内容我这里不再重复展开。
如果你连最简配置和恢复聊天记录脚本都还没看过,那先去看上一篇,再回来会更顺。
问题背景
这次的问题表面看起来很像老问题。
更新 Codex 之后,会出现这种现象:
- 聊天列表像空了一样
- 原来还能看的对话像"没了"
- 本地工具执行不正常
- 沙盒表现异常
最容易让人误判的地方就在这里。
因为上一篇那个场景里,聊天记录显示异常,本来就和第三方 API、provider、配置切换有关系。
所以很多人这次一看到"对话没了",自然就会往那个方向去想:
- 是不是第三方 API 又有问题了
- 是不是 provider 写坏了
- 是不是聊天记录又被分桶了
但这次我排完之后发现,不是。
至少这次我碰到的这个坑,重点不在 API。
问题真正出在另一层:会改变 Codex 本地执行方式的高级配置。
解决方式
这一部分不说空话,直接说怎么排。
第一步:先不要重复上一篇的老思路,把锅全甩给 API
上一篇那个问题里,第三方 API、provider 名字、聊天记录展示,确实是重点。
但这次如果你一上来还是只盯着:
base_urlmodel_provider- 模型名
- 聊天记录脚本
那很容易先走偏。
因为这次的问题有可能根本不在这里。
第二步:先用上一篇的最简配置确认"基础能力是不是还活着"
上一篇给过最简配置,这里不重复贴。
先做的事情应该是:
- 切回上一篇那套最简配置
- 完全退出 Codex
- 重新打开
- 看聊天和本地工具是不是恢复正常
如果这一步已经恢复,那方向就很清楚了:
问题不在基础路由,而在你原来后来叠上去的那一层高级配置。
第三步:先删高级执行配置,不要先删 API
这次最应该先删的,不是 provider,不是 URL,而是下面这一类东西:
toml
profile = "auto-max"
sandbox_mode = "danger-full-access"
[features]
elevated_windows_sandbox = true
...
[profiles.auto-max]
...
[profiles.auto-max.windows]
...
[profiles.review]
...
[sandbox_workspace_write]
...
[shell_environment_policy]
...
简单说就是:
profilesandbox_mode- 一整块复杂的
[features] - 一整块复杂的
[profiles.*] - workspace write / shell environment 这一层
这一组东西,优先删。
不要一上来先删 API。
第四步:如果删掉这层之后恢复正常,问题基本就定位了
这时候就不要再怀疑:
- 是不是某个第三方接口突然不兼容了
- 是不是模型名写错了
- 是不是插件市场先炸了
因为如果 API、provider、基础插件层都还保留着,而删掉高级执行配置之后恢复正常,那方向其实已经非常清楚了。
问题不在路由层,在执行层。
第五步:后面要回加,就一组一组加
这一点别偷懒。
不要把删掉的那一大段再整段贴回去,然后继续猜。
真要继续定位,就按组回加:
- 先加
profile - 再加
sandbox_mode - 再加
[profiles.auto-max] - 再加
[profiles.auto-max.windows] - 最后再加更复杂的
[features]
一次只加一组,看哪一组一回来就又开始不对。
这样排,才知道到底是谁有问题。
这次我真正盯上的配置是哪一组
这次我最后最怀疑的是下面这组:
toml
profile = "auto-max"
sandbox_mode = "danger-full-access"
[features]
elevated_windows_sandbox = true
[profiles.auto-max]
sandbox_mode = "workspace-write"
[profiles.auto-max.windows]
sandbox = "elevated"
不是说一定就精确到某一行。
但至少我这次这个坑,最值得怀疑的就是这一组联动配置。
因为它们有三个很明显的特点:
1. 删掉之后,问题消失了
这是最直接的信号。
2. 它们改的不是模型名,而是 Codex 怎么在本地执行
这就和单纯改 API 不一样了。
3. 这一组是联动的,不是孤立的一行
这种东西叠起来,本来就比简单配置更容易在更新后踩边界。
原理
最后再说原理。
这次之所以容易把人带偏,是因为它的现象和上一篇那个"聊天记录看不到"的问题太像了。
但两者不是一回事。
上一篇的问题,核心在:
- provider 名字
- API 路由
- 聊天记录展示
这次的问题,核心更像是:
- 更新之后
- 那套高级本地执行配置
- 和当前版本 Codex 的执行方式没有完全对上
所以最后表现出来才会像:
- 列表异常
- 工具异常
- 沙盒异常
这个时候如果还只盯着 API 看,就容易一直在错方向上转。
还有一个容易和这次混在一起的点
这个也要单独提一下。
model_provider 这个值,本来就可能影响聊天记录在界面上的展示分组。
比如一会儿写:
toml
model_provider = "OpenAI"
一会儿又写:
toml
model_provider = "codex"
哪怕最后指向的是同一个 URL,界面上也可能看起来像两拨记录。
所以这次如果一边碰到了高级配置不兼容,一边又改过 provider 名字,那最后看起来就特别像:
- 聊天没了
- 本地工具也坏了
- 整个环境都不对
但它其实可能是两个问题叠在一起:
- 高级执行配置更新后不兼容
- provider 名字变化把历史展示搞乱了
这也是为什么我现在更倾向于把事情做简单:
- provider 名字尽量固定
- 路由要改就改
base_url - 出问题先删复杂配置
最后
上一篇那套最简配置和恢复聊天记录脚本,解决的是"接第三方 API 之后,聊天记录怎么找回来"。
这一篇补的,是另一个更容易误判的坑:
更新之后,如果又开始出现"对话像没了、沙盒像失效了"这种情况,先别本能地去怀疑 API,先去看你后来叠上去的那层高级执行配置。
至少这次我碰到的这个问题,真正有问题的不是路由层,而是 profile + sandbox_mode + features 那层联动配置。
参考资料
- 我的上一篇文章:《CodeX windows app使用第三方api以及session记录还原》
- OpenAI 官方 Codex CLI 文档:https://developers.openai.com/codex/cli
- OpenAI 官方模型总览:https://developers.openai.com/api/docs/models
- OpenAI 官方 GPT-5-Codex 模型页:https://developers.openai.com/api/docs/models/gpt-5-codex
- OpenAI 官方 Codex Use Cases:https://developers.openai.com/codex/explore