0.122.0
新增功能
- 独立安装现在更加自包含,且
codex app现在能在 Windows 和 Intel Mac 上正确打开或安装 Desktop(#17022, #18500)。 - TUI 可以打开
/side对话,用于快速提出附带问题;排队输入现在在工作运行期间支持斜杠命令和!shell 提示符(#18190, #18542)。 - Plan Mode 可以在全新上下文中开始实现,并在决定是否延续规划线程之前显示上下文用量(#17499, #18573)。
- 插件工作流现在包括标签页浏览、内联启用/禁用开关、市场移除,以及远程、跨仓库或本地市场源(#18222, #18395, #17752, #17751, #17277, #18017, #18246)。
- 文件系统权限现在支持拒绝读取的 glob 策略、受管拒绝读取要求、平台沙箱强制执行,以及忽略用户配置或规则的隔离
codex exec运行(#15979, #17740, #18096, #18646)。 - 工具发现和图像生成现在默认启用,并为 MCP 和
js_repl图像输出提供更高细节的图像处理和原始细节元数据支持(#17854, #17153, #17714, #18386)。
问题修复
- 当另一个客户端解决 app-server 审批、用户输入提示和 MCP 征求后,它们现在会从 TUI 中消失,而不再留下过期的提示 (#15134)。
- 远程控制启动现在可容忍 ChatGPT 认证缺失,并且 MCP 启动取消可通过 app-server 会话重新生效 (#18117, #18078)。
- 恢复和分叉的 app-server 线程现在会立即重放 token 用量,以便上下文/状态 UI 从恢复后的状态开始 (#18023)。
- 安全敏感流程已收紧:退出登录会撤销受管理的 ChatGPT token,项目 hook 和 exec 策略要求受信任工作区,并且 Windows 沙箱设置避免授予宽泛的用户配置文件与 SSH root 权限 (#17825, #14718, #18443, #18493)。
- 沙箱化的
apply_patch写入在拆分文件系统策略下可正确工作,文件监视器现在也能注意到开始监视后创建的文件 (#18296, #18492)。 - 若干 TUI 粗糙之处已修复,包括致命的 skills 列表失败、无效的恢复提示、重复的上下文状态栏条目、
/model菜单循环、冗余的内存通知,以及 iTerm2 中的终端标题引号处理 (#18061, #18059, #18054, #18154, #18580, #18261)。
其他变更
- 将插件和市场代码拆分至
codex-core-plugins,把更多连接器代码迁移至connectors,并继续拆分庞大的核心 session/turn 模块(#18070、#18158、#18200、#18206、#18244、#18249)。 - 将配置加载和
AGENTS.md发现逻辑重构至更细粒度的文件系统和管理器抽象之后(#18209、#18035)。 - 通过修复 flake、原生 Rust 测试分片、限定范围的仓库缓存、更强的 Windows clippy 覆盖率,以及更新
rules_rs/LLVM 版本锁定,稳定了 Bazel 和 CI(#17791、#18082、#18366、#18350、#18397)。 - 添加了核心 CODEOWNERS 和更精简的开发构建配置(#18362、#18612)。
- 移除了过时的核心
models.json,并更新发布准备工作以刷新活跃模型目录(#18585)。
- 在
SECURITY.md中新增了沙箱、审批和网络控制的安全边界参考 (#17848, #18004)。 - 记录了自定义 MCP 服务器审批默认值和 exec-server stdin 行为 (#17843, #18086)。
- 更新了 app-server 文档,涵盖插件 API 变更、marketplace 移除、resume/fork token 使用量重放以及警告通知 (#17277, #17751, #18023, #18298)。
- 新增了 responses API 代理的简短指南 (#18604)。
完整变更日志:https://github.com/openai/codex/compare/rust-v0.121.0...rust-v0.122.0
- #17958 支持 Azure responses 提供程序的远程压缩 @ivanmurashko
- #17848 [docs] 在 SECURITY.md 中添加安全边界参考 @evawong-oai
- #17990 自动安装 start-codex-exec.sh 依赖项 @pakrym-oai
- #17892 将 archive/unarchive 迁移到本地 ThreadStore @wiltzius-openai
- #17989 [codex] 恢复远程 exec-server 文件系统测试 @starr-openai
- #15134 在远程解析后丢弃过期的 app-server 请求 @ebrevdo
- #18002 重新启用它 @jif-oai
- #17885 feat: 支持备用 marketplace manifest 和本地字符串 @xl-openai
- #18003 [docs] 回退 PR 17848 的额外更改 @evawong-oai
- #17714 支持 MCP 图像输出上的 original-detail 元数据 @fjord-oai
- #17022 显著改进独立安装程序 @efrazer-oai
- #17853 [mcp] 为之前调用过但当前缺失的工具添加 dummy 工具。 @mzeng-openai
- #18004 [docs] 恢复来自 PR 17848 的 SECURITY.md 更新 @evawong-oai
- #17896 澄清 realtime v2 上下文和 handoff 消息 @bxie-openai
- #17742 为 yolo 移除网络代理 @won-openai
- #17999 [codex] 让 command exec delta 测试容忍分块 @euroelessar
- #18033 feat: 引入 codex-pr-body 技能 @bolinfest
- #17877 启动 TUI 时,如果设置了 YOLO 模式权限则显示 @canvrno-oai
- #18022 异步配置加载 @pakrym-oai
- #17854 更新 ToolSearch,使其默认启用 @mzeng-openai
- #17831 [codex][mcp] 为 tool call item 添加 resource uri 元数据。 @mzeng-openai
- #18070 将插件加载和 marketplace 逻辑提取到 codex-core-plugins @xl-openai
- #18078 修复通过 app server 取消 MCP 启动的问题 @etraut-openai
- #17151 [codex] 将 Fed ChatGPT 认证路由到 Fed edge @jackz-oai
- #18006 fix: 更多 flake @jif-oai
- #18127 fix: Windows flake @jif-oai
- #18137 nit: 为 memories 添加最小值 @jif-oai
- #18135 debug: Windows flake @jif-oai
- #18138 chore: 更多污染过滤 @jif-oai
- #18134 chore: 统一 memory drop 端点 @jif-oai
- #18144 nit: 移除一个 expect @jif-oai
- #17791 稳定 Bazel 测试(超时调整和 flake 修复) @ddr-oai
- #18117 fix: 认证预检 @jif-oai
- #18146 chore: 在 just file 中使用
justfile_directory@jif-oai - #18085 [1/8] 添加 MCP 服务器环境配置 @aibrahim-oai
- #18054 fix(tui): 移除重复的上下文状态栏项 @etraut-openai
- #17287 [code mode] 从 exec 描述中延迟 mcp 工具 @sayan-oai
- #18057 用当前线程名称预填重命名提示 @etraut-openai
- #18059 修复无效的 TUI resume 提示 @etraut-openai
- #17153 默认启动图像生成 @won-openai
- #18042 让 yolo 跳过 managed-network 工具强制执行 @won-openai
- #18154 fix: 模型菜单弹出 @jif-oai
- #17826 [codex] 添加远程 thread store 实现 @wiltzius-openai
- #18086 [2/8] 支持 exec process API 中的管道 stdin @aibrahim-oai
- #18061 避免因 skills 列表失败导致致命 TUI 错误 @etraut-openai
- #15979 feat(permissions): 添加 glob deny-read 策略支持 @viyatb-oai
- #18055 改进已配置 marketplace 的外部 agent 插件迁移 @alexsong-oai
- #17425 自动升级已配置的 marketplace @xli-oai
- #18035 将 AGENTS.md 发现逻辑重构为 AgentsMdManager @pakrym-oai
- #18158 将更多 connector 逻辑移入 connectors crate @pakrym-oai
- #17843 为自定义 MCP 服务器添加服务器级审批默认值 @mzeng-openai
- #18178 fix: 更早释放锁;此前在 send_event().await 期间不必要地持有锁 @bolinfest
- #18000 使 thread unsubscribe 测试具有确定性 @starr-openai
- #17996 添加 codex_hook_run 分析事件 @abhinav-oai
- #18184 fix: 修复 examples/ 文件夹中的 clippy 问题 @bolinfest
- #18023 fix(app-server): 在 resume 和 fork 后重放 token 使用量 @fcoury-oai
- #18172 [codex] 使 realtime 启动上下文截断具有确定性 @bxie-openai
- #18192 限制 Windows Bazel 测试并发 @starr-openai
- #18200 [codex] 拆分 codex op 处理器 @pakrym-oai
- #17387 在 use_agent_identity 后注册 agent 任务 @adrian-openai
- #18026 为 hook 运行添加 OTEL 指标 @abhinav-oai
- #18092 [codex] 更新 realtime V2 VAD 静音延迟和 1.5 prompt @bxie-openai
- #18188 添加标签页列表、单行渲染、列宽变更 @canvrno-oai
- #18206 [codex] 拆分 codex turn 逻辑 @pakrym-oai
- #18169 使用 codex-auto-review 进行 guardian 审查 @jeffsharris
- #18196 对 unknown-thread MCP read 测试使用进程内 app-server @mzeng-openai
- #18116 将 marketplace add 移到 plugin 命令下 @xli-oai
- #18096 feat(sandbox): 添加 glob deny-read 平台强制执行 @viyatb-oai
- #17971 fix: 弃用 use_legacy_landlock feature flag @viyatb-oai
- #18209 重构配置加载以使用文件系统抽象 @pakrym-oai
- #17862 流式传输 apply_patch 变更 @akshaynathan
- #18244 拆分 codex session 模块 @pakrym-oai
- #17713 feat: 添加可选的 provider runtime 抽象 @celia-oai
- #18182 feat: 处理备用插件 manifest 路径 @xl-openai
- #18219 将 Computer Use 工具建议移到 core @leoshimo-oai
- #18231 codex: 拆分 thread/read 视图加载 @wiltzius-openai
- #18126 fix(exec-policy) 规则解析 @dylan-hurd-oai
- #17825 [codex] 注销时撤销 ChatGPT token @sashank-oai
- #18304 修复 Windows exec policy 测试 flake @etraut-openai
- #17947 fix: 缩小可写根目录 @jif-oai
- #18246 同步本地插件导入、异步远程导入、刷新缓存后… @alexsong-oai
- #18097 通过功能标志延迟所有工具 @sayan-oai
- #17563 添加 PermissionRequest hooks 支持 @abhinav-oai
- #18338 nit: 第二阶段 ephemeral @jif-oai
- #18267 在 resume 选择器中支持 Ctrl+P/Ctrl+N @etraut-openai
- #18261 fix(tui): 使用 BEL 更新终端标题 @etraut-openai
- #17740 feat(config): 支持托管的 deny-read 要求 @viyatb-oai
- #18249 将 codex 模块移到 session 下 @pakrym-oai
- #18351 修复文件系统抽象竞态后的 config-loader 测试 @bolinfest
- #18021 Guardian -> Auto-Review @won-openai
- #18140 feat: 配置别名 @jif-oai
- #17232 使 app 工具提示默认对 app 策略采取保守设置 @colby-oai
- #17499 feat(tui): 添加 clear-context 计划实现 @fcoury-oai
- #18352 codex: 通过 thread store 路由 thread/read 持久化 @wiltzius-openai
- #18263 在动态工具上启用工具搜索 @sayan-oai
- #18350 ci: 让 Windows Bazel clippy 捕获 core 测试导入 @bolinfest
- #18362 添加 core CODEOWNERS @aibrahim-oai
- #18366 ci: 按 job 划分 Bazel 仓库缓存范围 @bolinfest
- #17305 为 thread/list 添加排序/backwardsCursor,并新增 thread/turns/list API @ddr-oai
- #18020 [3/6] 添加推送的 exec process 事件 @aibrahim-oai
- #12640 更新 models.json @github-actions
- #18373 在 /status 中显示默认 reasoning @aibrahim-oai
- #18379 归因自动 PR Babysitter 审查回复 @etraut-openai
- #18087 [4/6] 抽象 MCP stdio 服务器启动 @aibrahim-oai
- #18370 perf(tui): 延迟启动时 skills 刷新 @fcoury-oai
- #18222 /plugins: 添加 v2 标签页 marketplace 菜单 @canvrno-oai
- #18227 [codex] 传播 rate limit reached 类型 @richardopenai
- #18380 exec-server: 保留 fs helper 运行时环境 @starr-openai
- #18381 从 connectors 目录请求中移除 tier 约束 @xl-openai
- #18211 refactor: 收窄 async lock guard 生命周期 @bolinfest
- #18017 [codex] 将跨仓库插件源添加到 marketplace manifest @xli-oai
- #18398 refactor: 对共享接收器使用可克隆的 async channel @bolinfest
- #18296 fix: 修复 apply_patch 的 fs sandbox helper @viyatb-oai
- #18397 [codex] 将 rules_rs 和 llvm 升级到最新 BCR 版本 @zbarsky-openai
- #18082 bazel: 使用原生 rust 测试分片 @bolinfest
- #18384 更新图像缩放以适配 2048 正方形边界 @pakrym-oai
- #17277 feat: 向插件 API 添加远程插件字段 @xl-openai
- #18395 /plugins: 添加内联启用开关 @canvrno-oai
- #14718 fix: 对项目 hooks 和 exec policies 进行信任门控 @viyatb-oai
- #17891 [TUI] 启动 TUI 时添加外部配置迁移提示 @alexsong-oai
- #18369 Feat/auto review 开发消息标记 @won-openai
- #18298 feat: 对 skill 元数据做预算,并将裁剪作为警告呈现 @xl-openai
- #18449 [codex] 描述未安装的跨仓库插件读取 @xli-oai
- #18220 [codex] 添加 owner nudge app-server API @richardopenai
- #17752 [codex] 添加 marketplace remove 命令和共享逻辑 @xli-oai
- #18382 添加最大上下文窗口模型元数据 @aibrahim-oai
- #18325 回退“[codex] 仅在请求边界排空 mailbox” @jif-oai
- #18386 更新图像输出,默认使用高细节 @pakrym-oai
- #18499 修复 cwd 不可用时插件缓存 panic @etraut-openai
- #18212 [5/6] 接入由 executor 支持的 MCP stdio @aibrahim-oai
- #18573 feat(tui): 在 plan implementation 提示中显示已用上下文 @fcoury-oai
- #18500 在 macOS (Intel) 和 Windows 上支持
codex app@etraut-openai - #18542 在 TUI 中排队 slash 和 shell 提示 @etraut-openai
- #18524 为外部官方 marketplace 添加回退源 @alexsong-oai
- #18571 记录 realtime session id @aibrahim-oai
- #18585 移除未使用的 models.json @aibrahim-oai
- #18190 添加
/side对话 @etraut-openai - #18580 避免冗余的 memory 启用通知 @etraut-openai
- #18443 不要在 USERPROFILE 上授予 Windows 沙箱 ACL @efrazer-oai
- #18493 从 SSH 配置依赖中过滤 Windows 沙箱根目录 @efrazer-oai
- #17978 按线程持久化并预热 agent 任务 @adrian-openai
- #18604 为 responses-api-proxy 添加 tldr 文档 @andmis
- #18601 软化 Fast mode 计划用量文案 @pash-openai
- #18596 chore(multiagent) skills instructions 开关 @dylan-hurd-oai
- #18599 fix(guardian) 在 guardian 线程中禁用 skills 消息 @dylan-hurd-oai
- #18612 创建 dev-small 构建配置 @andmis
- #18440 在 TUI resume 提示中使用线程 ID @etraut-openai
- #18605 TUI: 移除简单的 legacy_core 重导出 @etraut-openai
- #18625 添加
codex debug models以显示模型目录 @andmis - #18221 [codex] 添加 workspace owner 用量提示 UI @richardopenai
- #17980 [codex] 在 use_agent_identity 后使用下游 AgentAssertion @adrian-openai
- #17751 [codex] 添加 marketplace/remove app-server RPC @xli-oai
- #18644 feat: 添加 mem 2 agent header @jif-oai
- #18353 chore: 将 morpheus 加入 path @jif-oai
- #18649 fix: main 2 @jif-oai
- #17721 稳定 marketplace/remove installedRoot 测试 @xli-oai
- #18492 fix: 修复文件尚不存在时的 FS watcher @jif-oai
- #18646 feat: 添加
--ignore-user-config和--ignore-rules@jif-oai - #18652 nit: 在测试中将 telepathy 改为 chronicle @jif-oai
- #18654 fix: 修复 sub-agents 的 exec policy 加载 @jif-oai
- #18651 feat: chronicle 别名 @jif-oai