0.121.0
新增功能
- 新增
codex marketplace add及 app-server 支持,可从 GitHub、git URL、本地目录和直接的marketplace.jsonURL 安装插件市场 (#17087, #17717, #17756)。 - 新增 TUI 提示历史改进,包括
Ctrl+R反向搜索,以及已接受斜杠命令的本地召回 (#17550, #17336)。 - 新增 TUI 和 app-server 控制,用于记忆模式、记忆重置/删除以及记忆扩展清理 (#17632, #17626, #17913, #17937, #17844)。
- 扩展 MCP/插件支持,包括 MCP Apps 工具调用、带命名空间的 MCP 注册、并行调用选择性启用,以及 MCP 服务器的沙箱状态元数据 (#17364, #17404, #17667, #17763)。
- 新增实时和 app-server API,用于输出模态、对话记录完成事件、原始轮次项注入,以及感知符号链接的文件系统元数据 (#17701, #17703, #17719)。
- 新增安全的 devcontainer 配置,支持 bubblewrap,并为 Unix socket 添加 macOS 沙箱允许列表 (#10431, #17547, #17654)。
问题修复
- 修复了 macOS 针对私有 DNS 的沙箱/代理处理,并移除了
danger-full-access仅 denylist 网络模式(#17370, #17732)。 - 修复了 Windows 上 cwd/会话匹配问题,使
resume --last和thread/list在路径使用 verbatim 前缀时可用(#17414)。 - 修复了
prolite套餐的速率限制/账户处理,并使未知 WHAM 套餐值可解码(#17419)。 - 使 Guardian 超时与策略拒绝区分开来,并提供超时专属指引和可见的 TUI 历史记录条目(#17381, #17486, #17521, #17557)。
- 稳定了 app-server 行为:避免过早卸载 thread,容忍启动时 trust 持久化失败,并跳过
fs/readDirectory中的损坏符号链接(#17398, #17595, #17907)。 - 修复了 MCP/tool-call 边界情况,包括展平后的 deferred 工具名称、elicitation 超时统计,以及空命名空间描述(#17556, #17566, #17946)。
其他变更
- 通过固定 GitHub Actions、cargo 安装、git 依赖项、V8 校验和以及 cargo-deny 源允许列表,强化了供应链和 CI 输入(#17471)。
- 新增 Bazel 发布构建验证,使仅用于发布的 Rust 代码也会在 PR CI 中编译(#17704、#17705)。
- 引入
codex-thread-storecrate/接口,并将本地线程列表迁移到其后面(#17659、#17824)。 - 要求工作区安装使用经过审查的 pnpm 依赖构建脚本(#17558)。
- 通过更广泛的绝对路径类型以及移除未使用的辅助 API,减少了 Rust 维护面(#17407、#17792、#17146)。
- 记录了安全 devcontainer 配置文件及其 bubblewrap 要求 (#10431, #17547)。
- 添加了关于历史搜索行为的 TUI composer 文档 (#17550)。
- 更新了 app-server 文档,涵盖新的 MCP、marketplace、turn 注入、记忆重置、文件系统元数据、外部 agent 迁移和 websocket token-hash APIs (#17364, #17717, #17703, #17913, #17719, #17855, #17871)。
- 记录了 WSL1 bubblewrap 限制和 WSL2 行为 (#17559)。
- 添加了用于扩展清理的 memory pipeline 文档 (#17844)。
完整更新日志:https://github.com/openai/codex/compare/rust-v0.120.0...rust-v0.121.0
- #17087 添加 marketplace 命令 @xli-oai
- #17409 修复 Windows exec-server 输出测试 flake @etraut-openai
- #17381 在协议类型中表示 guardian 审查超时 @won-openai
- #17399 TUI:强制核心边界 @etraut-openai
- #17370 fix:解除 macOS sandbox 中私有 DNS 的阻塞 @viyatb-oai
- #17396 更新 cloud requirements 解析失败消息 @alexsong-oai
- #17364 [mcp] 支持 MCP Apps 第 3 部分 - 添加 mcp 工具调用支持。 @mzeng-openai
- #17424 稳定 marketplace add 本地源测试 @ningyi-oai
- #17414 修复 Windows verbatim 路径的 thread/list cwd 过滤 @etraut-openai
- #10431 feat(devcontainer):添加单独的 secure customer 配置文件 @viyatb-oai
- #17314 在上传反馈时传递 turn id @ningyi-oai
- #17336 fix(tui):本地召回已接受的斜杠命令 @fcoury-oai
- #17430 将已关闭的 TUI 输入流视为 shutdown 处理 @etraut-openai
- #17385 添加 use_agent_identity feature flag @adrian-openai
- #17483 更新 issue labeler agent 标签 @etraut-openai
- #17493 修复 @aibrahim-oai
- #17419 支持 prolite plan 类型 @etraut-openai
- #17416 在 /stop 后清除 /ps @etraut-openai
- #17415 退出时恢复 codex-tui resume 提示 @etraut-openai
- #17402 chore:将 name 和 namespace 重构为单一类型 @sayan-oai
- #17486 更改 guardian 超时后的决策语义 @won-openai
- #17521 澄清 guardian 超时指导 @won-openai
- #17547 [codex] 在 secure Docker devcontainer 中支持 bubblewrap @viyatb-oai
- #17519 为 realtime 当前线程上下文设定预算 @aibrahim-oai
- #17556 [codex] 支持扁平化的延迟 MCP 工具调用 @fc-oai
- #17558 build(pnpm):要求经过审查的依赖构建脚本 @mcgrew-oai
- #17559 fix(sandboxing):拒绝 WSL1 bubblewrap sandboxing @viyatb-oai
- #17520 将用户文本镜像到 realtime @aibrahim-oai
- #17550 feat(tui):为 composer 添加反向历史搜索 @fcoury-oai
- #17420 移除上下文状态行计量器 @etraut-openai
- #17506 通过 app server 暴露指令来源 (AGENTS.md) @etraut-openai
- #17566 fix(mcp) 暂停 elicitations 的计时器 @dylan-hurd-oai
- #17406 将 MCP 工具 wall time 添加到模型输出 @pakrym-oai
- #17294 通过 sandbox helper 运行 exec-server fs 操作 @starr-openai
- #17605 稳定 exec-server 进程测试 @etraut-openai
- #17221 feat:在 0.0.0 上忽略 keyring @jif-oai
- #17216 根据 exec-server policy 构建远程 exec 环境 @jif-oai
- #17633 nit:更改 consolidation 模型 @jif-oai
- #17640 fix:提升 exec server 稳定性 @jif-oai
- #17643 fix:去重 compact @jif-oai
- #17247 使分叉 agent spawn 保留父级模型配置 @friel-openai
- #17470 修复流失败时自定义工具输出清理 @etraut-openai
- #17417 为问卷发送 plan-mode 提示通知 @etraut-openai
- #17481 在窄布局中换行显示状态重置时间戳 @etraut-openai
- #17601 抑制重复的 compaction 和终端等待事件 @etraut-openai
- #17657 修复 TUI compaction 项重放 @etraut-openai
- #17595 信任持久化失败时不让 thread start 失败 @etraut-openai
- #17407 在 skill 加载和 codex_home 中使用 AbsolutePathBuf @pakrym-oai
- #17626 feat:禁用 memory endpoint @jif-oai
- #17365 在提升权限的 Windows sandbox 设置中包含旧版 deny 路径 @iceweasel-oai
- #17638 feat:避免为 tool-suggest discovera… 重新加载 curated marketplaces @jif-oai
- #17398 app-server:仅卸载一段时间未使用的线程 @euroelessar
- #17669 仅在规则需要时指定远程端口 @iceweasel-oai
- #17691 修复 tui 编译 @davidhao3300
- #17384 将 phase 2 memory 模型更新为 gpt-5.4 @kliu128
- #17395 移除不必要的测试 @kliu128
- #17685 限制 realtime 镜像的用户 turn 数 @aibrahim-oai
- #17699 更改 realtime 工具描述 @aibrahim-oai
- #17667 为 included mcps 添加
supports_parallel_tool_calls标志 @josiah-openai - #17703 添加 turn item 注入 API @pakrym-oai
- #17671 在 CI 中稳定 exec-server 文件系统测试 @starr-openai
- #17557 guardian 超时修复 pr 3 - 超时的 UX 调整 @won-openai
- #17719 [codex] 向 fs metadata 添加 symlink 标志 @pakrym-oai
- #17146 [codex] 移除未使用的 Rust 辅助函数 @pakrym-oai
- #17471 fix:固定输入 @viyatb-oai
- #17717 [codex] 将 marketplace add 重构为共享核心流程 @xli-oai
- #17747 将 plugin loading 重构为异步 @pakrym-oai
- #17709 [codex] 为 code mode V8 初始化 ICU 数据 @pakrym-oai
- #17749 [codex] 仅在请求边界排空 mailbox @tibo-openai
- #16640 [codex-analytics] feature plumbing 和 emittance @rhan-oai
- #17761 收紧 realtime handoff 完成逻辑 @aibrahim-oai
- #17701 添加 realtime 输出模态和 transcript 事件 @aibrahim-oai
- #17777 nit:feature flag @jif-oai
- #17637 feat:向状态行添加上下文百分比 @jif-oai
- #17665 在支持的模型上始终启用 original image detail @fjord-oai
- #17374 [codex-analytics] 向客户端元数据添加 session source @marksteinbrick-oai
- #17489 将 updated-at 时间戳改为唯一的毫秒时间 @ddr-oai
- #17784 feat:codex sampler @jif-oai
- #17732 fix:回退 danger-full-access 仅 denylist 模式 @viyatb-oai
- #17234 将 debug 客户端输出重定向到文件 @rasmusrygaard
- #17803 将 image_detail_original 保留为已移除的 feature flag @fjord-oai
- #17372 app-server:准备并发运行 initialized rpcs @euroelessar
- #17704 重构 Bazel CI 作业设置 @bolinfest
- #17674 通过环境文件系统路由 apply_patch @starr-openai
- #17702 修复远程 skill 弹窗加载 @starr-openai
- #17830 [codex] 修复 app-server initialized request analytics 构建 @etraut-openai
- #17389 [codex-analytics] 默认启用 general analytics @rhan-oai
- #17659 thread store 接口 @wiltzius-openai
- #17792 传播 AbsolutePathBuf @pakrym-oai
- #17808 fix:刷新 apply patch bin @jif-oai
- #17838 添加 realtime wire trace 日志 @aibrahim-oai
- #17684 调整默认工具搜索结果上限 @malone-oai
- #17705 添加 Bazel verify-release-build 作业 @bolinfest
- #17720 使 skill loading 感知文件系统 @pakrym-oai
- #17756 [codex] 支持本地 marketplace 源 @xli-oai
- #17846 修复 Guardian CI Tests 栈溢出,应用 Box 降低栈压力 @won-openai
- #17855 在外部 agent 配置迁移中支持 plugins @alexsong-oai
- #17872 在 guardian 审查会话中禁用 hooks @abhinav-oai
- #17868 换行显示委托输入文本 @guinness-oai
- #17884 修复外部 agent 配置迁移中的 clippy 警告 @canvrno-oai
- #17837 在核心测试中复用远程 exec-server @starr-openai
- #17859 sandbox:移除无用的 seatbelt helper 并更新测试 @bolinfest
- #17870 fix:清理通用 exec() 函数的契约 @bolinfest
- #17871 fix:添加 websocket capability token hash 支持 @viyatb-oai
- #17763 通过 MCP 工具元数据发送 sandbox 状态 @aaronl-openai
- #17654 在 macOS sandbox 中支持 Unix socket 允许列表 @aaronl-openai
- #17915 fix:cargo deny @jif-oai
- #17913 feat:添加删除 memories 的 endpoint @jif-oai
- #17844 feat:清理 memories 扩展 @jif-oai
- #17921 chore:exp flag @jif-oai
- #17917 [codex] 修复当前 main 的 CI 阻塞 @sayan-oai
- #17919 chore:重置时不要为过去的 rollouts 禁用 memories @jif-oai
- #17924 nit:稳定测试 @jif-oai
- #17632 feat:memories 菜单 @jif-oai
- #17404 使用 namespace 注册所有 mcp 工具 @sayan-oai
- #17941 nit:文档 @jif-oai
- #17938 feat:在 phase 1 前清理 rollouts @jif-oai
- #17937 feat:重置 memories 按钮 @jif-oai
- #17883 移除 exec-server fs sandbox 请求预检 @pakrym-oai
- #17386 在 use_agent_identity 开关后注册 agent identities @adrian-openai
- #17907 修复 fs/readDirectory 以跳过损坏的 symlinks @willwang-openai
- #17960 chore(features) codex 依赖功能 @dylan-hurd-oai
- #17965 fix:将 is_azure_responses_wire_base_url 重命名为 is_azure_responses_provider @bolinfest
- #17946 修复空工具描述 @shijie-oai
- #17824 [codex] 添加本地 thread store 列表 @wiltzius-openai
- #17942 添加 CLI 更新公告 @shijie-oai
- #17866 将 auth providers 重构为修改请求头 @pakrym-oai
- #17902 app-server:按流跟踪 remote-control seq ID @euroelessar
- #17957 mcp:移除 codex/sandbox-state 自定义请求支持 @bolinfest
- #17953 fix:传播 log db @jif-oai
- #17920 chore(tui) 清理 @dylan-hurd-oai
- #17981 chore:临时禁用 @jif-oai