0.128.0
新增功能
- 新增持久化的
/goal工作流,支持 app-server API、模型工具、运行时续接,以及用于创建、暂停、恢复和清除的 TUI 控件。(#18073, #18074, #18075, #18076, #18077, #20082) - 新增
codex update、可配置的 TUI 键位映射、plan-mode 提示、需要操作的终端标题,以及活动轮次中的/statusline和/title编辑。(#19933, #18593, #19901, #18372, #19917) - 扩展权限配置文件,加入内置默认值、sandbox CLI 配置文件选择、cwd 控制,以及面向客户端的活动配置文件元数据。(#19900, #20117, #20118, #20095)
- 改进插件工作流,支持市场安装、远程 bundle 缓存、远程卸载、插件捆绑的 hook、hook 启用状态,以及外部 agent 配置导入。(#18704, #19914, #19456, #19705, #19840, #19949)
- 新增外部 agent 会话导入,包括后台导入和导入会话的标题处理。(#19895, #20284, #20261)
- 通过线程上限、等待时间控制、root/subagent 提示,以及 v2 特有的深度处理,使 MultiAgentV2 配置更加明确。(#19360, #19792, #19805, #20052, #20180)
问题修复
- 修复了多个恢复与中断问题,包括陈旧中断挂起、持久化 provider 恢复、大型远程恢复响应以及筛选后恢复列表缓慢。(#18392, #19287, #19920, #19591)
- 提升了 TUI 在终端调整大小重排、markdown 列表间距、斜杠命令弹窗布局、键盘清理、shell 模式转义以及工作状态更新方面的可靠性。(#18575, #19706, #19511, #19625, #19986, #19939)
- 加强了受管网络行为,涵盖延迟拒绝、代理绕过默认值、已解析目标检查、IPv6 主机匹配以及
git -C审批处理。(#19184, #20002, #19999, #19995, #20085) - 修复了 Windows 沙箱和 PTY 边缘情况,包括伪控制台启动、提升权限运行器进程处理、核心 shell 环境继承以及命名管道验证。(#20042, #19211, #20089, #19283)
- 修复了 Bedrock 模型对
apply_patch的支持、GPT-5.4 推理级别,并更新了 Bedrock GPT-5.4 端点/模型元数据。(#19416, #19461, #20109) - 修复了 MCP/插件边缘情况,涉及 stdio 服务器清理、插件 MCP 审批持久化以及自定义 MCP 元数据隔离。(#19753, #19537, #19836, #19875)
其他变更
- 发布了
codex-app-server发布产物,停止发布 GNU Linux 二进制文件,并延长了发布工作流超时时间。(#19447, #19445, #20271, #20343) - 为 Python app-server SDK 包添加了 Codex 固定版本管理。(#18996)
- 弃用了
--full-auto,同时引导用户改用显式的权限配置文件和信任流程。(#20133) - 通过迁移 Bazel 设置、固定发布冒烟测试,以及更新工作流固定版本/超时时间,稳定了 CI 和发布管线。(#19851, #19854, #19472, #19609)
- 更新内置 OpenAI Docs skill,以支持 GPT-5.5、
gpt-image-2,并提供更清晰的升级指南。 (#19407, #19443, #19422) - 澄清了面向贡献者的文档,包括 PR 模板、Rust async trait 指南和 README 措辞。 (#19912, #20242, #19514)
- 添加了已检入的
codex-core公共 API 列表和 ThreadManager 示例 crate。 (#20243, #20141)
完整变更日志:https://github.com/openai/codex/compare/rust-v0.125.0...rust-v0.128.0
- #19124 使 MultiAgentV2 中断标记由 assistant 编写 @jif-oai
- #19354 chore: 为 max_concurrent_threads_per_session 设置别名 @jif-oai
- #19360 feat: 在 spawn 描述中展示 multi-agent 线程限制 @jif-oai
- #19351 为中断标记添加 agents.interrupt_message @jif-oai
- #18392 修复 turn/interrupt 时的挂起 @danwang-oai
- #19380 chore: 从 Morpheus 中移除 MCP Plugins 和 App @jif-oai
- #18907 遵循用于禁用 plugins 的 workspace 选项 @zamoshchin-openai
- #19283 检查命名管道使用方的 PID @iceweasel-oai
- #19407 更新内置 OpenAI Docs skill 以支持 GPT-5.5 @kkahadze-oai
- #19163 强化包管理器安装策略 @mcgrew-oai
- #19416 修复:为 Bedrock 模型使用 function apply_patch 工具 @celia-oai
- #19093 [codex] 从 thread started 通知中省略 fork turns @euroelessar
- #19244 更新 unix socket 传输以使用 WebSocket upgrade @willwang-openai
- #19170 在选择菜单编号和默认焦点中跳过已禁用行 @canvrno-oai
- #19414 permissions: 使旧版 profile 转换不依赖 cwd @bolinfest
- #18900 将 fork 和 resume 读取迁移到 thread store @wiltzius-openai
- #19445 ci: 停止发布 GNU Linux 发布产物 @bolinfest
- #19443 将 gpt-image-2 添加到内置 OpenAI Docs skill @kkahadze-oai
- #18584 [4/4] 遵循 Streamable HTTP MCP 放置 @aibrahim-oai
- #19447 ci: 发布 codex-app-server 发布产物 @bolinfest
- #19422 澄清内置 OpenAI Docs 升级指南措辞 @kkahadze-oai
- #19266 [codex] 添加非本地 thread store 回归测试 harness @wiltzius-openai
- #19098 feat: 使用根别名压缩 skill 路径 @xl-openai
- #19207 [codex] 将 Codex Apps 工具调用 ID 转发到后端元数据 @rreichel3-oai
- #19453 串行执行旧版 Windows PowerShell 沙箱测试 @dylan-hurd-oai
- #19234 将日志 DB 重构为 LogWriter 接口 @rasmusrygaard
- #19461 fix: Bedrock GPT-5.4 推理级别 @celia-oai
- #19449 permissions: 移除旧版只读访问模式 @bolinfest
- #19472 ci: 固定 codex-action v1.7 @viyatb-oai
- #19468 修复 Bazel cargo_bin runfiles 路径 @fjord-oai
- #19410 移除 js_repl 功能 @fjord-oai
- #18073 添加 goal 持久化基础 (1 / 5) @etraut-openai
- #18074 添加 goal app-server API (2 / 5) @etraut-openai
- #18075 添加 goal 模型工具 (3 / 5) @etraut-openai
- #18076 添加 goal 核心运行时 (4 / 5) @etraut-openai
- #18077 添加 goal TUI UX (5 / 5) @etraut-openai
- #19454 拆分审批矩阵测试组 @dylan-hurd-oai
- #19514 修复 codex-rs README 语法 @etraut-openai
- #19459 默认启用不可用的 dummy 工具 @mzeng-openai
- #19524 [codex] 清理未使用的 codex-mcp API 和重复 helper @aibrahim-oai
- #19526 [codex] 按可见性对 codex-mcp 项排序 @aibrahim-oai
- #19578 fix: 将 Bazel 超时增加到 45 分钟 @bolinfest
- #19287 在线程恢复时恢复持久化的模型 provider @etraut-openai
- #19593 test: 将远程 thread store 回归与 plugin 预热隔离 @bolinfest
- #19511 滚动时保持斜杠命令弹出框列稳定 @etraut-openai
- #19595 [codex] 为提权 exec 绕过托管网络 @viyatb-oai
- #19604 test: 稳定 Windows 上的 app-server 路径断言 @bolinfest
- #19609 fix: 恢复 Bazel 构建的 30 分钟超时 @bolinfest
- #19389 守护 npm update 就绪状态 @shijie-oai
- #18575 fix(tui): 终端调整大小时重排 scrollback @fcoury-oai
- #19610 在 response.completed 中支持 end_turn @andmis
- #19640 [codex] 移除 responses 命令 @tibo-openai
- #19683 test: 强化 app-server 集成测试 @bolinfest
- #18904 feat: 从 JWT 登录/env 加载 AgentIdentity @efrazer-oai
- #19606 permissions: 使运行时配置由 profile 支持 @bolinfest
- #19392 permissions: 从 profiles 派生兼容性策略 @bolinfest
- #19484 将 app-server JSON-RPC 错误处理提升到请求边界 @pakrym-oai
- #19487 [codex] 将配置加载移入 codex-config @pakrym-oai
- #19393 permissions: 将审批和沙箱消费者迁移到 profiles @bolinfest
- #19726 修复 codex-core 配置测试类型路径 @pakrym-oai
- #19727 test: 将 core-all-test 分片数增加到 16 @bolinfest
- #19725 拆分 MCP 连接模块 @aibrahim-oai
- #19605 删除未使用的 ResponseItem::Message.end_turn @andmis
- #19394 permissions: 移除核心旧版策略往返 @bolinfest
- #19733 允许 agents.max_threads 与 multi_agent_v2 配合工作 @andmis
- #19395 permissions: 完成由 profile 支持的应用表面 @bolinfest
- #19739 为远程沙箱配置内联主机名解析 @abhinav-oai
- #19734 permissions: 集中处理旧版沙箱投影 @bolinfest
- #19058 添加 /auto-review-denials 重试审批流程 @won-openai
- #19735 permissions: 仅存储受约束的 permission profiles @bolinfest
- #19736 permissions: 将 requirements 约束为 profiles @bolinfest
- #19737 permissions: 在边界派生旧版 exec 策略 @bolinfest
- #19779 添加 Codex issue 摘要 skill @etraut-openai
- #19792 multi_agent_v2: 将线程上限移入功能配置 @jif-oai
- #18982 feat: 使用基于 git 的 workspace diff 进行记忆整合 @jif-oai
- #19809 允许在重试耗尽后进行 Phase 2 记忆声明 @jif-oai
- #19812 在干净 workspace 上避免重写 Phase 2 选择 @jif-oai
- #19813 nit: 再修复一处 @jif-oai
- #19818 chore: 拆分 memories 第 1 部分 @jif-oai
- #19510 当不存在用户消息时隐藏 rewind 预览 @etraut-openai
- #19618 将 shell 模式命令持久化到提示历史 @etraut-openai
- #19709 渲染委托 patch 审批详情 @etraut-openai
- #19490 精简 plugin、apps 和 skills 处理器 @pakrym-oai
- #19762 refactor: 使 auth 加载异步化 @efrazer-oai
- #19854 ci: 将 npm staging 冒烟测试固定到最近的 rust-release 运行 @bolinfest
- #19851 ci: 将 Bazel 设置从已归档的 setup-bazelisk 迁移出来 @bolinfest
- #19491 精简账户和命令处理器 @pakrym-oai
- #19771 fix: 从 model_visible_specs 中过滤动态 deferred 工具 @sayan-oai
- #19863 [codex-analytics] 移除 ga 标志 @rhan-oai
- #19865 限制 original-detail 图像 token 估算 @fjord-oai
- #19591 修复 TUI 中过滤后的 thread-list 恢复回归 @etraut-openai
- #19513 输入时延迟审批提示 @etraut-openai
- #19706 保留 TUI markdown 代码块后的列表间距 @etraut-openai
- #19841 permissions: 移除 cwd 特殊路径 @bolinfest
- #19492 精简线程启动处理器 @pakrym-oai
- #19874 [codex-backend] 在过滤后的 thread 列表中优先使用状态 git 元数据 @joeytrasatti-openai
- #19493 精简线程变更处理器 @pakrym-oai
- #19862 [codex] 分片 exec Bazel 集成测试 @starr-openai
- #18996 发布采用 Codex 固定版本号策略的 Python SDK @sdcoffey
- #19494 精简线程读取处理器 @pakrym-oai
- #19839 [codex] 追踪已取消的推理流 @cassirer-openai
- #19495 精简线程恢复和 fork 处理器 @pakrym-oai
- #19497 精简 turn 和 realtime 处理器 @pakrym-oai
- #18372 在终端标题中显示 action required @canvrno-oai
- #19884 添加 MCP app 功能标志 @mzeng-openai
- #19498 精简 review 和反馈处理器 @pakrym-oai
- #19772 permissions: 将配置默认值派生为 profiles @bolinfest
- #19836 禁止 custom mcps 的 fileparams 元数据 @colby-oai
- #19892 将 exec-server 文件系统 API 重构为 codex-file-system @miz-openai
- #19452 稳定 plugin MCP fixture 测试 @dylan-hurd-oai
- #19481 移除 ghost snapshots @pakrym-oai
- #19773 permissions: 在 TUI thread 状态中要求 profiles @bolinfest
- #19917 允许在活动 turn 期间使用 /statusline 和 /title 斜杠命令 @canvrno-oai
- #19763 refactor: 主动加载 agent identity 运行时 @efrazer-oai
- #17689 [codex-analytics] 在默认 headers 中包含 user agent @marksteinbrick-oai
- #19912 澄清 PR 模板邀请要求 @etraut-openai
- #19630 避免在线程关闭后持久化 ShutdownComplete @etraut-openai
- #19774 permissions: 使 SessionConfigured 仅限 profile @bolinfest
- #19775 permissions: 派生快照沙箱投影 @bolinfest
- #19920 允许大型远程 app-server 恢复响应 @etraut-openai
- #19776 permissions: 将 thread sessions 存储为 profiles @bolinfest
- #19899 app-server-protocol: 将 permission profiles 标记为实验性 @bolinfest
- #19933 添加
codex update命令 @etraut-openai - #19914 feat: 在安装时缓存远程 plugin bundle @xl-openai
- #19456 添加远程 plugin 卸载 API @xli-oai
- #19805 添加 MultiAgentV2 root 和 subagent 上下文提示 @jif-oai
- #19860 feat: 拆分 memories 第 2 部分 @jif-oai
- #19961 feat: 修复 hinting 2 @jif-oai
- #19963 feat: 修复 hinting 3 @jif-oai
- #19967 稳定 memory Phase 2 输入顺序 @jif-oai
- #19970 feat: 通过用户 turns 触发 memories 并带冷却 @jif-oai
- #19904 fix: 配置 AgentIdentity AuthAPI base URL @efrazer-oai
- #19990 feat: 当 Codex 速率限制较低时跳过 memory 启动 @jif-oai
- #19998 feat: 维护 memories 1 @jif-oai
- #20000 feat: 维护 memories 2 @jif-oai
- #19832 为重放消息保留 assistant phase @friel-openai
- #19625 退出时重置 TUI 键盘报告 @etraut-openai
- #18593 feat(tui): 添加可配置 keymap 支持 @fcoury-oai
- #19846 [sandbox] 强制执行受保护的 workspace 元数据路径 @evawong-oai
- #20005 feat: 维护 memories 3 @jif-oai
- #19929 TUI: 对 worked-for 分隔符使用累计 turn 时长 @etraut-openai
- #19753 在关闭时终止 stdio MCP 服务器以避免进程泄漏 @etraut-openai
- #19473 向 turn 元数据添加 turn 开始时间戳 @mchen-oai
- #19875 从 custom MCP 工具中剥离 connector 来源元数据 @colby-oai
- #19764 feat: 使用 JWKS 验证 agent identity JWT @efrazer-oai
- #19847 在 Seatbelt 中强制执行 workspace 元数据保护 @evawong-oai
- #19509 在 mcp.tools.call spans 上记录 MCP 结果遥测 @mchen-oai
- #19907 澄清网络审批自动审查提示 @maja-openai
- #19901 feat(tui): 根据 composer 草稿建议 plan 模式 @fcoury-oai
- #19931 将本地 /resume cwd 过滤移入 thread/list @canvrno-oai
- #19986 fix(tui): 允许 esc 退出空 shell 模式 @fcoury-oai
- #19895 外部 agent 会话支持 @stefanstokic-oai
- #20002 fix(network-proxy): 收紧网络代理绕过默认值 @viyatb-oai
- #19900 permissions: 添加内置默认 profiles @bolinfest
- #20045 修复任务完成签名变更后的 plan 模式 nudge 测试 @canvrno-oai
- #19432 [codex] 向 turn tracing spans 添加 token 使用量 @charley-openai
- #20001 fix(network-proxy): 强化 linux 代理桥接 helper @viyatb-oai
- #19959 修复 log db 批量刷新 flake @dylan-hurd-oai
- #17373 app-server: 使用 keyed 序列化运行已初始化的 rpcs @euroelessar
- #19708 为 agent identity 加载云 requirements @shijie-oai
- #19999 fix(network-proxy): 重新检查网络代理连接目标 @viyatb-oai
- #20047 app-server: 允许 remote_control 运行时功能覆盖 @euroelessar
- #20052 使 MultiAgentV2 等待最小值可配置 @jif-oai
- #20008 tui: 使用 permission profiles 表示 sandbox 状态 @bolinfest
- #20068 app-server: 在无 sqlite 时禁用 remote control @euroelessar
- #20066 [rollout-trace] 在 rollout trace 中包含 x-request-id。 @cassirer-openai
- #19705 发现随 plugins 捆绑的 hooks @abhinav-oai
- #18704 /plugins: 添加 marketplace 安装流程 @canvrno-oai
- #20085 fix: 不要自动批准 git -C ... @owenlin0
- #20088 修复不稳定的 plugin hook env 测试 @abhinav-oai
- #19995 fix(network-proxy): 规范化网络代理主机匹配 @viyatb-oai
- #20010 core tests: 使用 permission profiles 提交 turns @bolinfest
- #20092 auth 刷新失败时返回 None @gpeal
- #19919 app-server: 将 remote-control 状态变更通知客户端 @euroelessar
- #20097 改进 Codex issue 摘要总结 @etraut-openai
- #20011 core tests: 从 permission profiles 构建 user turns @bolinfest
- #20013 core tests: 将更多 turns 迁移到 permission profiles @bolinfest
- #20015 core tests: 直接配置 profiles @bolinfest
- #20016 core tests: 使用 permission profiles 发送 model turns @bolinfest
- #20100 增加 plugin hook env 测试超时 @abhinav-oai
- #20018 core tests: 将 model/personality turns 迁移到 profiles @bolinfest
- #20021 core tests: 将 view image turns 迁移到 profiles @bolinfest
- #20024 core tests: 将 safety check turns 迁移到 profiles @bolinfest
- #20026 core tests: 将 plan item turns 迁移到 profiles @bolinfest
- #20027 core tests: 将 tools 测试迁移到 permission profiles @bolinfest
- #20028 core tests: 将 permissions message 测试迁移到 profiles @bolinfest
- #20030 core tests: 将 exec policy turns 迁移到 profiles @bolinfest
- #20032 core tests: 将 prompt caching turns 迁移到 profiles @bolinfest
- #20033 core tests: 将 request permissions tool turns 迁移到 profiles @bolinfest
- #20034 core tests: 将 zsh-fork permissions 迁移到 profiles @bolinfest
- #20035 core tests: 将 compact turns 迁移到 profiles @bolinfest
- #20037 core tests: 将 rmcp turns 迁移到 profiles @bolinfest
- #20040 core tests: 将 apply patch turns 迁移到 profiles @bolinfest
- #20041 core tests: 将 hook turns 迁移到 profiles @bolinfest
- #20072 支持为特定工具禁用 tool suggest。 @mzeng-openai
- #19949 支持从外部检测并导入 MCP、Subagents、hooks、commands @alexsong-oai
- #19442 feat: 按 model provider 禁用 capabilities @celia-oai
- #20108 fix: 为 apply patch 测试恢复 live event submit 路径 @bolinfest
- #19939 在设置 steer message 后恢复 TUI 工作状态 @canvrno-oai
- #20086 修复 plugin list workspace settings 测试隔离 @canvrno-oai
- #20049 feat: 向 app server 客户端暴露 provider capability 边界 @celia-oai
- #20109 feat: 更新 Bedrock Mantle endpoint 和 GPT-5.4 model ID @celia-oai
- #20106 linux-sandbox: 将 helper 底层连接切换为 PermissionProfile @bolinfest
- #20112 缓和 skill 描述预算警告 @xl-openai
- #20058 添加 environment provider 快照 @starr-openai
- #20133 chore(cli) 弃用 --full-auto @dylan-hurd-oai
- #20117 feat(cli): 添加显式 sandbox permission profiles @viyatb-oai
- #20139 删除 multi_agent_v2 followup_task interrupt 参数 @andmis
- #20118 feat(cli): 添加 sandbox profile 配置控制 @viyatb-oai
- #20144 修复迁移后的 hook 路径重写 @alexsong-oai
- #20042 修复沙箱化 PTY 会话的 Windows pseudoconsole 属性处理 @iceweasel-oai
- #20186 nit: 移除旧的 memories 相关内容 @jif-oai
- #20180 使 multi-agent v2 忽略 agents.max_depth @jif-oai
- #20082 对暂停的 goals 使用 /goal resume @etraut-openai
- #20172 TUI: 移除 core protocol 依赖 [1/7] @etraut-openai
- #19211 改进 Windows 进程管理边界情况 @iceweasel-oai
- #20123 [rollout-tracer] 根据 encrypted id 匹配分析消息。 @cassirer-openai
- #20173 TUI: 移除 core protocol 依赖 [2/7] @etraut-openai
- #20174 TUI: 移除 core protocol 依赖 [3/7] @etraut-openai
- #20228 [codex-backend] 对 rollout-path 读取优先使用 sqlite git 信息 @joeytrasatti-openai
- #20141 添加 ThreadManager 示例 crate @pakrym-oai
- #20046 test protocol: 锁定 inter-agent commentary phase @friel-openai
- #20064 在反馈上传中包含 auto-review rollout @won-openai
- #20096 feat: 对 skills 和 MCP 使用远程已安装 plugin 缓存 @xl-openai
- #19184 fix: 处理延迟的网络代理拒绝 @viyatb-oai
- #20089 扩展 Windows 的核心 shell 环境变量集合。 @iceweasel-oai
- #17088 [codex-analytics] 摄取服务器请求和响应 @rhan-oai
- #20091 [tool_suggest] 改进 tool_suggest 触发条件。 @mzeng-openai
- #20258 app-server: 修复 outgoing sender 测试设置 @sayan-oai
- #20050 [app-server] 为 client response payload 添加类型 @rhan-oai
- #19966 卸载前要求提供远程 plugin 详情 @xli-oai
- #20059 [app-server] 集中处理 client response analytics @rhan-oai
- #19334 默认端口繁忙时回退登录回调端口 @xli-oai
- #20231 [apps] 添加 apps MCP 路径覆盖 @adaley-openai
- #20242 docs: 不鼓励使用
#[async_trait]和#[allow(async_fn_in_trait)]@bolinfest - #19620 将 turn metadata 头转义为 ASCII JSON @etraut-openai
- #19537 [mcp] 修复 plugin MCP 审批策略。 @mzeng-openai
- #19229 添加 agent graph store 接口 @rasmusrygaard
- #20243 添加 codex-core 公共 API 列表 @pakrym-oai
- #19435 停止在 Windows 上阻塞 unified_exec @iceweasel-oai
- #19852 在 Linux sandbox 中强制执行 workspace 元数据保护 @evawong-oai
- #20136 更新 Codex 登录成功页面 UX @rafael-jac
- #20271 chore: 将 release 构建超时从 60 分钟增加到 90 分钟 @bolinfest
- #19778 添加 hooks/list app-server RPC @abhinav-oai
- #20261 从外部会话消费 ai-title 并添加结束标记 @alexsong-oai
- #20284 在后台导入外部 agent 会话 @stefanstokic-oai
- #20149 缩减 collaboration modes 的暴露面 @pakrym-oai
- #20282 tui: 在 Ctrl-D 时从 side chat 返回 @etraut-openai
- #20250 更新 codex_plugins_beta_setting(来自 workspace settings) @zamoshchin-openai
- #20080 [codex-analytics] 防止过期的 guardian 事件满足复用的 reviews @rhan-oai
- #20291 app-server: 从 bespoke events 中移除无用的 api version 处理 @pakrym-oai
- #20304 [plugins] 允许在 tool_suggest 中使用 MSFT 精选 plugins @mzeng-openai
- #20095 permissions: 暴露 active profile 元数据 @bolinfest
- #19840 添加持久化的 hook 启用状态 @abhinav-oai
- #20343 ci: 增加 Windows release 工作流超时 @bolinfest