0.129.0
新增功能
- TUI 现在支持在输入编辑器中进行模态 Vim 编辑,包括
/vim、默认模式配置以及 Vim 专属的键位映射上下文。(#18595) - 经过重新设计的 resume/fork 选择器、原始回滚模式(raw scrollback mode)、
/ide上下文注入以及感知工作区的/diff,让 TUI 工作流的恢复与复制更加便捷。(#20065, #20819, #20294, #21001) - 状态行可显示跟随主题的颜色,以及可选的 PR 与分支变更摘要,
/keymap debug可帮助检查终端按键事件。(#19631, #20892, #20794) - 插件管理现在支持工作区共享、共享访问控制、来源过滤、本地共享路径跟踪、市场移除/升级、远程包同步,以及管理员禁用状态的处理。(#20278, #21124, #21419, #20560, #19843, #20478, #20268, #20298)
- Hooks 可通过
/hooks浏览和开关,可在压缩(compaction)前后运行,并可添加PreToolUse上下文;Codex Apps 认证和符合条件的 MCP elicitation 现在会通过 TUI/Guardian 流程呈现。(#19882, #19905, #20692, #19193, #19431) - 实验性 goals 现在可被发现,在恢复会话时保持暂停状态(除非用户重新启用),并提供更清晰的校验结果与多天时长输出。(#20083, #20790, #20746, #20558)
问题修复
/copy在 tmux 中工作更顺畅,Alt+Enter 和被修饰的 Delete/Backspace 键行为正确,Windows 的输入/粘贴延迟已降低。 (#20207, #20535, #21058, #18914)- 大段粘贴占位符和通过 Ctrl+C 暂存的草稿现在能在 clear/editor 工作流中保留,且不会损坏草稿历史。 (#21091, #21190, #21351, #21397)
- TUI 启动和可访问性得到改进:限制终端探测、清除首次内联视口渲染,并对实时行遵循
animations = false。 (#20654, #21450, #20564) - Linux 沙箱启动在较旧的
bwrap、缓慢的挂载探测、受符号链接保护的路径以及共享/tmp配置下更可靠。 (#20628, #20111, #21127, #21234) - Windows 沙箱和 exec 策略现在能更可靠地处理命名管道、ConPTY 拆除、PowerShell 包装的允许规则、worktree
safe.directory以及不安全的 Git 选项。 (#20270, #20685, #20336, #21409, #21275) - 修复了 TLS 检查代理后的自定义 CA 登录、Bedrock 运行时端点报告、危险的项目配置键、heredoc 重定向批准匹配,以及无限制的 MCP/hook 输出增长。 (#20676, #20275, #20098, #20113, #20260, #21069)
其他变更
- Linux 版本现在会为 npm 和 DotSlash 安装构建、发布、打包并验证一个独立的
bwrap回退方案。(#21255, #21256, #21257, #21312, #21285) - 内置的 Bubblewrap 已更新至 0.11.2,包括围绕 setuid 支持的上游安全变更。(#21389)
- Windows Bazel CI 现在对测试、clippy 和 release-build 检查使用更快的交叉编译,且 Bazel 现在会运行分片的 Rust 集成测试。(#20585, #20701, #21057)
- App-server 和协议内部实现进行了拆分和精简,包括传输层抽取、协议模块分解、线程/消息历史迁移以及 tool-handler 清理。(#20324, #20325, #20348, #20545, #21251, #21278, #21395)
- 分析和诊断覆盖范围已扩展至工具生命周期、目标、插件技能、线程来源、服务层级以及 PR issue 标记。(#17089, #17090, #20799, #20923, #20949, #20969, #20893)
- 更新了内嵌的 OpenAI Docs 示例技能,使 API-key 设置指南与其他 docs 变体保持一致。(#21263)
- 记录了生成的 git commit 归属如何由
codex_git_commit控制,并在config.toml中配置。(#21379) - 移除了仅本地使用的规划/规格 docs,并将配置 docs 重定向到维护中的外部文档入口。(#20896)
完整变更日志: https://github.com/openai/codex/compare/rust-v0.128.0...rust-v0.129.0
- #20278 feat: 添加工作区插件共享 API @xl-openai
- #20334 使缺失配置清理变为 no-op @etraut-openai
- #20246 独立于 collab 控制 multi-agent v2 工具 @jif-oai
- #20361 realtime: 重命名 provider session ids @aibrahim-oai
- #20260 fix(core): 在 rollout 中截断大型 mcp 工具输出 @owenlin0
- #20083 将 goals 功能标记为实验性 @etraut-openai
- #19843 /plugins: 移除 marketplace @canvrno-oai
- #20458 [Extension] 将 Chrome Extension 加入 tool_suggest 工具允许列表 @teddywyly-oai
- #20324 移除 core protocol 依赖 [1/2] @etraut-openai
- #20299 将 item 事件映射移入 app-server-protocol @pakrym-oai
- #20325 移除 core protocol 依赖 [2/2] @etraut-openai
- #20471 停止发送 item/fileChange/outputDelta 输出增量通知 @pakrym-oai
- #20245 [Codex] 添加 browser use 外部功能标志 @khoi-oai
- #19882 为生命周期 hooks 添加 /hooks 浏览器 @abhinav-oai
- #20275 fix: 在 /status 中显示正确的 Bedrock 运行时端点 @celia-oai
- #20270 [codex] 修复提权 Windows 沙箱命名管道访问 @iceweasel-oai
- #20463 feat(rollouts): 在有限历史模式下存储 EventMsg::ApplyPatchEnd @owenlin0
- #20101 为 Windows 沙箱设置安装 WFP 过滤器 @iceweasel-oai
- #20474 [plugin] 将 Canva 添加到可推荐列表。 @mzeng-openai
- #20379 为同步导入发送外部导入完成 @alexsong-oai
- #19280 [codex] 将 thread turns 列表迁移到 thread store @wiltzius-openai
- #20348 将 plugin 移出 core。 @xl-openai
- #19160 使 apply_patch 流式解析器具备状态 @akshaynathan
- #20504 fix 不稳定的测试 falls_back_to_registered_fallback_port_when_default_po… @owenlin0
- #20098 fix: 忽略危险的项目级配置键 @owenlin0
- #20268 同步远程安装的插件包 @xli-oai
- #20502 fix(tui): 设置 persist_extended_history: false @owenlin0
- #20069 在 auto-review 中绕过始终允许的 MCP 工具的审查 @maja-openai
- #18595 feat(tui): 添加 vim 撰写模式 @fcoury-oai
- #20267 为远程插件安装发送分析事件 @xli-oai
- #20499 fix(app-server): 将 thread/turns/list 和 exclude_turns 标记为 experime… @owenlin0
- #20522 将 codex_hooks 功能别名设为 hooks @abhinav-oai
- #20336 execpolicy: 在 Windows 上解包 PowerShell -Command 包装器 @iceweasel-oai
- #20113 fix(exec_policy) heredoc 解析 file_redirect @dylan-hurd-oai
- #20341 app-server: 将远程控制切换至协议 v3 分段 @euroelessar
- #20300 [codex-analytics] 集中管理 thread 分析状态 @rhan-oai
- #20484 [codex] 改进 PR babysitter CI 诊断与防护栏 @wiltzius-openai
- #20298 展示管理员禁用的远程插件状态 @xli-oai
- #20511 [codex] 移除未使用的事件消息 @pakrym-oai
- #19474 使 thread store 以进程为作用域 @wiltzius-openai
- #20558 在 TUI 中格式化多日 goal 时长 @etraut-openai
- #19631 根据活动主题为 TUI 状态栏着色 @etraut-openai
- #20265 认证变更时刷新远程插件缓存 @xli-oai
- #20150 添加远程插件技能读取 API @xli-oai
- #20560 feat: 跟踪共享插件的本地路径 @xl-openai
- #20600 chore: 允许编辑 memories @jif-oai
- #20602 feat: 临时指令 @jif-oai
- #20610 chore: 改进 remember 提示 @jif-oai
- #20606 feat: 预置临时 memory 扩展指令 @jif-oai
- #20405 feat: 导出并重放有效配置锁 @jif-oai
- #20540 将 apply-patch 文件变更移入 turn items @pakrym-oai
- #20564 对屏幕阅读器强制
animations = false@etraut-openai - #20523 移除无工具 goal continuation 抑制 @etraut-openai
- #20627 fix: cargo deny @jif-oai
- #20545 app-server: 将传输层移入专用 crate @euroelessar
- #20294 为 TUI 添加 /ide 上下文支持 @etraut-openai
- #20630 [codex] 添加 Codex 环境配置 @pakrym-oai
- #20524 弃用 legacy notify @abhinav-oai
- #20486 [codex] 将已加载的 thread/read 历史迁移到 ThreadStore @wiltzius-openai
- #20281 使用选定的 turn 环境作为运行时上下文 @starr-openai
- #20535 fix(tui): 恢复 alt-enter 换行别名 @fcoury-oai
- #20650 fix: 减少 ConfigBuilder::build 栈使用 @jif-oai
- #20478 /plugins: 添加 marketplace 升级流程 @canvrno-oai
- #20512 [codex] 将 image view 作为 core item 发送 @pakrym-oai
- #20562 使用 2025-06-18 elicitation 能力结构 @abhinav-oai
- #20674 turn 完成时清除实时 hook 行 @abhinav-oai
- #20646 在环境上下文中展示多环境选项 @starr-openai
- #20542 清理未使用的 code-mode 全局变量 @cconger
- #20585 ci: 交叉编译 Windows Bazel 测试 @bolinfest
- #20701 ci: 交叉编译 Windows Bazel clippy @bolinfest
- #20676 修复 TLS 检查代理后的自定义 CA 登录 @jgershen-oai
- #20654 fix(tui): 限制启动时的终端探测 @fcoury-oai
- #20566 [tool_suggest] 进一步润色提示词。 @mzeng-openai
- #20751 使用空闲超时限制 websocket 请求发送 @pakrym-oai
- #20893 [codex] 添加 issue labeler 区域标签 @etraut-openai
- #20896 移除本地 docs 和 specs @etraut-openai
- #20897 [codex] 重构 app-server 调度结果流程 @pakrym-oai
- #20677 [codex] 将 MCP 工具调用作为 turn items 发送 @pakrym-oai
- #20973 feat: 支持 multi-agent 使用提示中的模板插值 @jif-oai
- #20622 feat: memories mcp v1 @jif-oai
- #20773 feat: 添加远程压缩 v2 Responses 客户端路径 @jif-oai
- #20986 feat: 为 memory read MCP 添加行偏移 @jif-oai
- #20991 feat: 为 memories MCP read 添加 max_lines @jif-oai
- #20993 feat: 对 MCP memories 列表分页 @jif-oai
- #20994 feat: 使 memories MCP 列表返回浅层结果 @jif-oai
- #20996 feat: 对 memories MCP 搜索结果分页 @jif-oai
- #20997 feat: 为 memories MCP search 添加上下文行 @jif-oai
- #20998 nit: 重命名 @jif-oai
- #21004 feat: 支持多查询 memories 搜索 @jif-oai
- #21006 nit: legacy @jif-oai
- #20815 加速 /side 父级恢复重放 @etraut-openai
- #20790 thread 恢复时保持已暂停的 goals 暂停 @etraut-openai
- #20940 [codex] 拆分 app-server 请求处理器 @pakrym-oai
- #21023 拼写修正 @jif-oai
- #21012 memories/mcp: 使用 schemars 生成工具 schema @jif-oai
- #21010 memories-mcp: 在本地后端拒绝符号链接遍历 @jif-oai
- #20989 core: 与 compact 请求共享 responses 请求构建器 @jif-oai
- #20853 [mcp-apps] 持久化 MCP Apps 专属工具调用结束事件。 @mzeng-openai
- #20750 统一 approval_mode = "approve" 的跳过审查处理 @mzeng-openai
- #20682 feat(app-server): 始终返回受限的 thread 历史 @owenlin0
- #20628 fix(linux-sandbox): 当系统 bwrap 缺少权限时回退 @viyatb-oai
- #20794 feat(tui): 添加键位映射调试检查器 @fcoury-oai
- #21034 tui: 停用 /approvals 并将 /autoreview 重命名为 /approve @won-openai
- #20669 准备选定环境的底层连接 @starr-openai
- #20685 通过保留 ConPTY 所有权修复 Windows PTY 拆卸 @iceweasel-oai
- #20663 添加 stdio exec-server 监听器 @starr-openai
- #20561 state: 将 state db 句柄传递给消费者 @euroelessar
- #21054 rollout: 存储 web search 和 mcp 工具调用 @owenlin0
- #20892 feat(tui): 添加 PR 摘要状态栏项 @fcoury-oai
- #20798 feat(tui): 改进 TUI 键位映射覆盖 @fcoury-oai
- #21053 在延迟命名空间描述中使用 MCP server instructions @sayan-oai
- #21026 core: 在反馈标签中保留最近的 model ids @sayan-oai
- #21060 core: 修复 apply_patch 请求权限测试 @bolinfest
- #20060 将 reasoning effort 添加到 turn tracing spans @charley-openai
- #21058 fix(tui): 支持带修饰键的 backspace/delete @fcoury-oai
- #21057 bazel: 运行分片 rust 集成测试 @bolinfest
- #18914 fix(tui): 在 Windows 上使用共享的粘贴突发间隔 @fcoury-oai
- #20715 使 realtime sideband 启动异步化 @kmeelu-oai
- #20514 [codex-analytics] 添加 item 生命周期计时 @rhan-oai
- #20722 移除远程插件卸载前缀门控 @xli-oai
- #19040 [codex] 添加非沙箱进程执行 API @euroelessar
- #21105 [network-proxy] 覆盖 DNS 超时阻塞 @evawong-oai
- #21059 将 agent identity 登录界面重命名为 access token @shijie-oai
- #20576 codex: 通过 ThreadStore 路由元数据更新 @wiltzius-openai
- #20923 将 plugin ID 添加到技能分析 @alexsong-oai
- #21122 将 turn_id 添加到 Codex 技能调用分析 @edwardysun3
- #20575 codex: 将(更多)app-server thread 历史读取迁移到 ThreadStore @wiltzius-openai
- #21069 将大型 hook 输出移出上下文 @abhinav-oai
- #20969 1- 添加模型服务层级元数据 @aibrahim-oai
- #21170 tools: 移除未使用的实验性
list_dir工具 @jif-oai - #21201 memories-mcp: 在 list、read 和 search 中隐藏点路径 @jif-oai
- #21204 feat: 支持窗口化多查询 memory 搜索 @jif-oai
- #21205 feat: 为 memory search 添加标准化匹配 @jif-oai
- #20207 fix(tui): 使 /copy 在 tmux 内无需 passthrough 即可工作 @fcoury-oai
- #20799 添加 goal 生命周期指标 @etraut-openai
- #20746 在 TUI 中验证 /goal 目标长度 @etraut-openai
- #20708 添加 Windows 沙箱就绪 RPC @iceweasel-oai
- #20692 支持 PreToolUse additionalContext @abhinav-oai
- #21091 [codex] 修复 Ctrl+C 后 TUI 大型粘贴占位符编号 @canvrno-oai
- #21089 [codex] 修复 fork --last cwd 过滤 @canvrno-oai
- #21152 回滚 legacy notify 弃用 @abhinav-oai
- #21190 fix(tui): 对相同大小的大型粘贴进行外部编辑器展开 @fcoury-oai
- #20111 fix(sandboxing): 限制系统 bwrap 咨询式启动探测 @viyatb-oai
- #21220 chore: 添加最小代理出口诊断 @viyatb-oai
- #20819 feat(tui): 添加 raw scrollback 模式 @fcoury-oai
- #21225 app-server: 忽略 persist_extended_history 参数 @owenlin0
- #17089 [codex-analytics] 添加工具 item 事件 schema @rhan-oai
- #20647 将 process 工具路由到选定环境 @starr-openai
- #20321 hook 信任元数据与强制执行 @abhinav-oai
- #21221 [codex] 使用共享 app-server JSON-RPC 错误辅助函数 @pakrym-oai
- #21063 为 app-server turns 添加 turn items 视图 @rhan-oai
- #21001 feat(tui): 通过 workspace commands 路由 /diff @fcoury-oai
- #20065 feat(tui): 重新设计会话选择器 @fcoury-oai
- #21127 fix(linux-sandbox): 避免 bwrap 构建失败时 panic @viyatb-oai
- #21234 fix(linux-sandbox): 针对共享 codex 使用场景,按用户隔离 Linux 沙箱合成挂载注册表 @viyatb-oai
- #20687 [codex] 按工具名称拆分工具处理器 @pakrym-oai
- #21113 对 Xcode 26.4 客户端自动拒绝 MCP elicitations @etraut-openai
- #21243 [codex] 修复 TUI turn items 视图 fixtures @fcoury-oai
- #21146 为源码构建启用 V8 沙箱 @cconger
- #20689 注入 state DB、agent graph store @rasmusrygaard
- #19575 为 exec-server 添加云执行器注册 @miz-openai
- #20577 codex: 为 core review forks 使用 ThreadStore 历史 @wiltzius-openai
- #21261 修复构建 @bolinfest
- #21251 chore(app-server-protocol): 将 v2 API 定义拆分为模块 @owenlin0
- #21259 ci: 从 tag 触发 rusty-v8 发布 @cconger
- #21255 linux-sandbox: 使用独立捆绑的 bwrap @bolinfest
- #21256 release: 发布独立 bwrap 制品 @bolinfest
- #21260 [codex] 将 thread 命名移至 app server @pakrym-oai
- #21219 将 model 和 reasoning effort 添加到 MCP turn 元数据 @mchen-oai
- #21275 在 Windows 上共享 Git 安全命令逻辑 @iceweasel-oai
- #21257 release/npm: 在 Linux 上捆绑独立 bwrap @bolinfest
- #21276 [codex] 移除未使用的 ListModels op @pakrym-oai
- #21282 [codex] 移除 legacy ListSkills op @pakrym-oai
- #21271 在 app server 中暴露插件 manifest 关键字 @alfozan
- #20949 [codex-analytics] 为 thread 分析重构 thread_source @rhan-oai
- #21124 feat: 添加插件共享访问控制 @xl-openai
- #20724 app-server: 使动态工具标识符与 Responses API 对齐 @eternal-openai
- #21055 刷新时保留会话 MCP 配置 @aaronl-openai
- #21277 [mcp] 根据反馈提前返回 Accept。 @mzeng-openai
- #21285 fix(bwrap): 在独立归档后发出 libcap @viyatb-oai
- #21312 release: 将 bwrap 与 Linux codex DotSlash 制品一起打包 @bolinfest
- #19193 支持 Codex Apps 认证 elicitations @mzeng-openai
- #20437 feat: 添加
session_id@jif-oai - #21328 test: 隔离 app-server-client 进程内测试状态 @jif-oai
- #21329 feat: 在 MCP turn 元数据中包含 thread ID @jif-oai
- #21332 feat: 从 thread/fork 返回 session ID @jif-oai
- #21337 回滚 "feat: 支持 multi-agent 使用提示中的模板插值" @jif-oai
- #21249 在 compact 中传播 cache key 和 service tiers @aibrahim-oai
- #21182 将 installation ID 解析移出 core 启动流程 @jif-oai
- #21214 chore: 为 memories 启动 MCP @jif-oai
- #21336 feat(app-server): 将 v2
sessionId移到Thread上 @jif-oai - #21350 [codex] 修复内置 MCP Windows 路径测试 @jif-oai
- #20971 2- 在会话协议中使用字符串 service tiers @aibrahim-oai
- #21278 将消息历史移出 core @pakrym-oai
- #21284 [codex] 添加 response.processed websocket 请求 @pakrym-oai
- #21367 rollout: 合并 thread updated_at 更新 @jif-oai
- #21378 feat: 移动 auto vaccum @jif-oai
- #21263 [codex] 协调 OpenAI docs 示例与 API key 设置 @mifan-oai
- #21351 fix(tui): 在 /clear 后保留 Ctrl-C 暂存的草稿 @fcoury-oai
- #21389 vendor: 将 bubblewrap 更新至 0.11.2 @bolinfest
- #21281 移除 core MCP list tools op @pakrym-oai
- #21381 [codex] 按位置处理 git 分页标志 @iceweasel-oai
- #21397 fix(tui): 通过 app 事件持久化 ctrl-c 草稿 @fcoury-oai
- #19431 将已选择加入的 MCP elicitations 通过 Guardian 路由 @cd-oai
- #21107 避免 codex exec 中嘈杂的 OTEL 诊断 @cpaasch-oai
- #21390 避免硬编码环境上下文 shell @starr-openai
- #21090 [codex] 去重回退模型元数据警告 @canvrno-oai
- #21395 [codex] 将工具处理器拆分到单独文件 @pakrym-oai
- #21401 [codex-tui] 为 tui threads 传递 thread source @rhan-oai
- #17090 [codex-analytics] 从 item 生命周期发送工具 item 事件 @rhan-oai
- #21409 [codex] 修复 Windows 沙箱中 worktree 的 git safe.directory @iceweasel-oai
- #21379 记录 Codex git commit 归属配置 @henzelmann-oai
- #21287 将 skills watcher 移至 app-server @pakrym-oai
- #21416 [codex] 将 tool specs 移入 core handlers @pakrym-oai
- #21419 feat: 添加 marketplace 源过滤和插件共享上下文 @xl-openai
- #19905 添加 compact 生命周期 hooks(由 vincentkoc 发起 - 外部贡献) @eternal-openai
- #21460 回滚 "将 skills watcher 移至 app-server" @pakrym-oai
- #21450 fix(tui): 清除首次内联视口渲染 @fcoury-oai
- #21427 [codex] 删除工具处理器计划间接层 @pakrym-oai
- #21423 [codex] 将 OpenAI Developers 添加到工具建议允许列表 @mifan-oai
- #21340 [codex] 允许在 app-server 队列中读取共享配置 @xli-oai
- #21441 [codex] 并行化 skills 列表 cwd 加载 @xli-oai
- #21481 回滚 state DB 注入和 agent graph store @pakrym-oai