## 新功能
- 新增插件系统,可从配置或本地市场加载技能、MCP 条目和应用连接器,并支持通过应用服务器安装端点启用插件。(#12864, #13333, #13401, #13422)
- 扩展了 TUI 多智能体流程,支持审批提示、基于 `/agent` 的启用机制、更清晰的提示、序号化昵称以及带角色标签的交接上下文。(#12995, #13246, #13404, #13412, #13505)
- 在 TUI 中新增持久化的 `/fast` 切换开关,并为应用服务器支持 `fast` 和 `flex` 服务层级。(#13212, #13334, #13391)
- 改进记忆功能,支持工作区范围写入、重命名记忆设置,并添加防护措施防止保存过时或受污染的事实。(#13008, #13088, #13237, #13467)
- 为已发布的发布产物添加了直接的 Windows 安装脚本。(#12741)
## 错误修复
- 修复 `@` 文件提及功能,使父目录 `.gitignore` 规则不再隐藏有效的仓库文件。(#13250)
- 通过正确复用 shell 状态并修复 `/status`、`Esc`、待处理消息处理以及启动/配置文件竞争条件,使子智能体更快、更可靠。(#12935, #13052, #13130, #13131, #13235, #13240, #13248)
- 修复项目信任解析,使 CLI 覆盖能正确应用于受信任的项目本地 MCP 传输。(#13090)
- 修复只读沙盒策略,在明确启用时保留网络访问权限。(#13409)
- 修复会话状态中的多行环境导出捕获和 Windows 状态数据库路径处理。(#12642, #13336)
- 修复 ANSI/base16 语法高亮,确保终端主题颜色在 TUI 中正确渲染。(#13382)
## 文档
- 扩展应用服务器文档,涵盖服务层级、插件安装、重命名未加载的线程以及新的 `skills/changed` 通知。(#13282, #13391, #13414, #13422)
## 杂项
- 移除剩余的遗留应用服务器 v1 websocket/RPC 接口,转而使用当前协议。(#13364, #13375, #13397)
## 更新日志
完整更新日志:https://github.com/openai/codex/compare/rust-v0.107.0...rust-v0.110.0
- #13086 修复 CLI 反馈链接 @etraut-openai
- #13063 使 cloud_requirements 在接近时失败 @alexsong-oai
- #13083 在 codex exec 和 codex mcp-server 中启用分析 @etraut-openai
- #12995 feat: TUI 中子智能体的审批 @jif-oai
- #13027 feat: 技能禁用尊重配置层 @jif-oai
- #13125 chore: 更改记忆默认设置 @jif-oai
- #13088 为过时事实调整记忆读取路径 @andi-oai
- #13128 nit: 忽略 `resume_startup_does_not_consume_model_availability_nux_c… @jif-oai
- #12935 加快子智能体启动速度 @daveaitel-openai
- #13127 nit: 在 Windows 上禁用 @jif-oai
- #13129 fix: 为 Bazel 测试打包 `models.json` @jif-oai
- #13065 core: 在预检期间解析 host_executable() 规则 @bolinfest
- #12864 feat: 从插件加载 @xl-openai
- #12989 fix: MacOSAutomationPermission::BundleIDs 应允许通信… @leoshimo-oai
- #13181 [codex] 在账户更新中包含计划类型 @tibo-openai
- #13058 在替换时记录实时关闭标记 @aibrahim-oai
- #13215 修复 Codex 问题的重复数据删除工作流 @etraut-openai
- #13197 提高 TUI 中子智能体的对比度 @gabec-openai
- #13130 fix: 子智能体中的 `/status` @jif-oai
- #13008 feat: 受污染的记忆 @jif-oai
- #13237 feat: 更新记忆配置名称 @jif-oai
- #13131 fix: `/agent` 中的 Esc @jif-oai
- #13052 core: 为线程生成子智能体复用父 shell 快照 @daveaitel-openai
- #13249 chore: `/multiagent` 作为 `/agent` 的别名 @jif-oai
- #13057 fix: 使用 https://git.savannah.gnu.org/git/bash 代替 https://github.com/bolinfest/bash @bolinfest
- #13090 修复项目信任配置解析,使 CLI 覆盖生效 @etraut-openai
- #13202 tui: 恢复草稿页脚提示 @charley-oai
- #13246 feat: 通过 `/agent` 启用多智能体 @jif-oai
- #12642 fix(core) shell_snapshot 多行导出 @dylan-hurd-oai
- #11814 test(app-server): 增加流程测试超时以减少波动 @joshka-oai
- #13282 app-server: 更新 `thread/name/set` 以支持未加载的线程 @euroelessar
- #13285 feat(app-server): 为所有应用服务器 API 添加跟踪 @owenlin0
- #13265 更新实时 websocket API @aibrahim-oai
- #13261 fix(app-server): 仅在轮次实际开始时发出 turn/started @owenlin0
- #13079 app-server: 静音因线程创建导致的线程状态更改 @euroelessar
- #13284 为清晰度和详细程度调整计划提示 @bfioca-openai
- #13286 feat(app-server-test-client): 支持跟踪 @owenlin0
- #13061 chore: 移除 SkillMetadata.permissions 并根据 permission_profile 推导技能沙盒 @celia-oai
- #12006 tui: 在提交和斜杠命令清除之间保留杀死缓冲区 @rakan-oai
- #13212 添加快捷模式切换 @pash-openai
- #13250 fix(core): 将文件搜索 gitignore 范围限定到仓库上下文 @fcoury
- #13313 在 TUI 引导中将 Team 重命名为 Business 计划 @bwanner-oai
- #13248 fix: 智能体竞争 @jif-oai
- #13235 fix: 配置文件时的智能体 @jif-oai
- #13336 fix: db windows 路径 @jif-oai
- #13334 app-server 服务层级管道(以及一些清理) @pash-openai
- #13341 feat: 演示工件 p1 @jif-oai
- #13344 feat: 演示工件 2 @jif-oai
- #13346 feat: 演示工件 3 @jif-oai
- #13345 feat: 电子表格工件 @jif-oai
- #13347 feat: 电子表格 v2 @jif-oai
- #13348 feat: 演示第 4 部分 @jif-oai
- #13350 feat: 电子表格第 3 部分 @jif-oai
- #13355 feat: 演示工件第 5 部分 @jif-oai
- #13357 feat: 为演示工具添加多操作 @jif-oai
- #13360 feat: 演示工件第 7 部分 @jif-oai
- #13362 feat: 连接电子表格工件 @jif-oai
- #12741 添加 Windows 直接安装脚本 @efrazer-oai
- #13376 实时提示更改 @aibrahim-oai
- #13324 app-server-protocol: 导出扁平 v2 架构捆绑包 @apanasenko-oai
- #13364 移除 Responses V1 websocket 实现 @pakrym-oai
- #12969 app-server: 在跟踪级别从 sqlite 来源 /feedback 日志 @charley-oai
- #13381 chore: 从 rust-analyzer 中移除 --all-features 标志 @sayan-oai
- #13043 当任何阶段未知时折叠解析的命令摘要 @nornagon-openai
- #13385 还原“实时提示更改” @aibrahim-oai
- #13389 fix @aibrahim-oai
- #13375 chore(app-server): 删除 v1 RPC 方法和通知 @owenlin0
- #13397 chore(app-server): 恢复 EventMsg TS 类型 @owenlin0
- #13395 从所有消息构建委托的实时交接文本 @aibrahim-oai
- #13399 在评论前要求重复数据删除器成功 @etraut-openai
- #13398 还原“还原‘实时提示更改’” @aibrahim-oai
- #13333 重构插件配置和缓存路径 @xl-openai
- #13275 fix(network-proxy): 拒绝不匹配的主机头 @viyatb-oai
- #12868 tui: 使待处理引导与核心接受对齐 @charley-oai
- #13280 向应用服务器添加线程元数据更新端点 @joeytrasatti-openai
- #13050 添加开发中原始分辨率 view_image 支持 @fjord-oai
- #13402 确保导入的 shell_environment_policy.set 的环境值为字符串 @alexsong-oai
- #13331 使 js_repl 图像输出可控制 @fjord-oai
- #13401 feat: 加载插件应用 @sayan-oai
- #13292 [反馈] 诊断 @rhan-oai
- #13414 feat(app-server): 添加 skills/changed v2 通知 @owenlin0
- #13368 feat(app-server): 将应用服务器跟踪上下文传播到核心 @owenlin0
- #13413 将 command-runner 复制到 CODEX_HOME,以便沙盒用户始终可以执行它 @iceweasel-oai
- #13366 [bazel] 升级 rules_rs 和 llvm @zbarsky-openai
- #13409 Feat: 在只读沙盒策略上保留网络访问权限 @celia-oai
- #13388 config: 强制执行企业功能要求 @bolinfest
- #13218 添加特定角色的子智能体昵称覆盖 @gabec-openai
- #13427 chore: 将技能和协议网络权限嵌套在 `network.enabled` 下 @celia-oai
- #13429 core: 将包装器 future 装箱以减少堆栈压力 @bolinfest
- #13391 在应用服务器中除 'fast' 外还支持 'flex' 层级 @kharvd
- #13290 image-gen-core @won-openai
- #13404 feat: 更好的多智能体提示 @jif-oai
- #13412 feat: 序号化昵称 @jif-oai
- #13454 添加每轮令牌使用情况的指标 @jif-oai
- #13240 fix: `/agent` 中的待处理消息 @jif-oai
- #13461 fix: 错误的合并 @jif-oai
- #13460 feat: 在子智能体上禁用请求输入 @jif-oai
- #13456 feat: 添加每轮工具计数指标并添加 tmp_mem 标志 @jif-oai
- #13468 nit: 引用提示 @jif-oai
- #13467 feat: 工作区写入中的记忆 @jif-oai
- #12383 登录添加新范围 @adaley-openai
- #13484 允许应用为沙盒设置指定 cwd。 @iceweasel-oai
- #13424 feat(core, tracing): 添加表示一轮的 span @owenlin0
- #13489 从应用服务器示例中移除 serviceTier @kharvd
- #13458 [tui] 更新 Fast 斜杠命令描述 @pash-openai
- #13382 fix(tui): 在语法主题中解码 ANSI alpha 通道编码 @fcoury
- #13485 feat: 外部工件构建器 @jif-oai
- #13493 feat(app-server-test-client): 用于跟踪的 OTEL 设置 @owenlin0
- #13501 添加外部配置导入的指标 @alexsong-oai
- #13495 向 TUI 通知计划模式提示和用户输入请求 @etraut-openai
- #13506 [release] 临时在发布中使用薄 LTO @bolinfest
- #13505 用角色前缀交接消息 @aibrahim-oai
- #13422 plugin: 支持基于本地市场的 marketplace.json + 安装端点。 @xl-openai
## New Features
- Added a plugin system that can load skills, MCP entries, and app connectors from config or a local marketplace, with an install endpoint for enabling plugins from the app server. (#12864, #13333, #13401, #13422)
- Expanded the TUI multi-agent flow with approval prompts, `/agent`-based enablement, clearer prompts, ordinal nicknames, and role-labeled handoff context. (#12995, #13246, #13404, #13412, #13505)
- Added a persisted `/fast` toggle in the TUI and app-server support for `fast` and `flex` service tiers. (#13212, #13334, #13391)
- Improved memories with workspace-scoped writes, renamed memory settings, and guardrails against saving stale or polluted facts. (#13008, #13088, #13237, #13467)
- Added a direct Windows installer script to published release artifacts. (#12741)
## Bug Fixes
- Fixed `@` file mentions so parent-directory `.gitignore` rules no longer hide valid repository files. (#13250)
- Made sub-agents faster and more reliable by reusing shell state correctly and fixing `/status`, `Esc`, pending-message handling, and startup/profile race conditions. (#12935, #13052, #13130, #13131, #13235, #13240, #13248)
- Fixed project trust parsing so CLI overrides apply correctly to trusted project-local MCP transports. (#13090)
- Fixed read-only sandbox policies so network access is preserved when it is explicitly enabled. (#13409)
- Fixed multiline environment export capture and Windows state DB path handling in session state. (#12642, #13336)
- Fixed ANSI/base16 syntax highlighting so terminal-themed colors render correctly in the TUI. (#13382)
## Documentation
- Expanded app-server docs around service tiers, plugin installation, renaming unloaded threads, and the new `skills/changed` notification. (#13282, #13391, #13414, #13422)
## Chores
- Removed the remaining legacy app-server v1 websocket/RPC surfaces in favor of the current protocol. (#13364, #13375, #13397)
## Changelog
Full Changelog: https://github.com/openai/codex/compare/rust-v0.107.0...rust-v0.110.0
- #13086 Fix CLI feedback link @etraut-openai
- #13063 Make cloud_requirements fail close @alexsong-oai
- #13083 Enable analytics in codex exec and codex mcp-server @etraut-openai
- #12995 feat: approval for sub-agent in the TUI @jif-oai
- #13027 feat: skill disable respect config layer @jif-oai
- #13125 chore: change mem default @jif-oai
- #13088 Tune memory read-path for stale facts @andi-oai
- #13128 nit: ignore `resume_startup_does_not_consume_model_availability_nux_c… @jif-oai
- #12935 Speed up subagent startup @daveaitel-openai
- #13127 nit: disable on windows @jif-oai
- #13129 fix: package `models.json` for Bazel tests @jif-oai
- #13065 core: resolve host_executable() rules during preflight @bolinfest
- #12864 feat: load from plugins @xl-openai
- #12989 fix: MacOSAutomationPermission::BundleIDs should allow communicating … @leoshimo-oai
- #13181 [codex] include plan type in account updates @tibo-openai
- #13058 Record realtime close marker on replacement @aibrahim-oai
- #13215 Fix issue deduplication workflow for Codex issues @etraut-openai
- #13197 Improve subagent contrast in TUI @gabec-openai
- #13130 fix: `/status` when sub-agent @jif-oai
- #13008 feat: polluted memories @jif-oai
- #13237 feat: update memories config names @jif-oai
- #13131 fix: esc in `/agent` @jif-oai
- #13052 core: reuse parent shell snapshot for thread-spawn subagents @daveaitel-openai
- #13249 chore: `/multiagent` alias for `/agent` @jif-oai
- #13057 fix: use https://git.savannah.gnu.org/git/bash instead of https://github.com/bolinfest/bash @bolinfest
- #13090 Fix project trust config parsing so CLI overrides work @etraut-openai
- #13202 tui: restore draft footer hints @charley-oai
- #13246 feat: enable ma through `/agent` @jif-oai
- #12642 fix(core) shell_snapshot multiline exports @dylan-hurd-oai
- #11814 test(app-server): increase flow test timeout to reduce flake @joshka-oai
- #13282 app-server: Update `thread/name/set` to support not-loaded threads @euroelessar
- #13285 feat(app-server): add tracing to all app-server APIs @owenlin0
- #13265 Update realtime websocket API @aibrahim-oai
- #13261 fix(app-server): emit turn/started only when turn actually starts @owenlin0
- #13079 app-server: Silence thread status changes caused by thread being created @euroelessar
- #13284 Adjusting plan prompt for clarity and verbosity @bfioca-openai
- #13286 feat(app-server-test-client): support tracing @owenlin0
- #13061 chore: remove SkillMetadata.permissions and derive skill sandboxing from permission_profile @celia-oai
- #12006 tui: preserve kill buffer across submit and slash-command clears @rakan-oai
- #13212 add fast mode toggle @pash-openai
- #13250 fix(core): scope file search gitignore to repository context @fcoury
- #13313 Renaming Team to Business plan during TUI onboarding @bwanner-oai
- #13248 fix: agent race @jif-oai
- #13235 fix: agent when profile @jif-oai
- #13336 fix: db windows path @jif-oai
- #13334 app-server service tier plumbing (plus some cleanup) @pash-openai
- #13341 feat: presentation artifact p1 @jif-oai
- #13344 feat: pres artifact 2 @jif-oai
- #13346 feat: pres artifact 3 @jif-oai
- #13345 feat: spreadsheet artifact @jif-oai
- #13347 feat: spreadsheet v2 @jif-oai
- #13348 feat: presentation part 4 @jif-oai
- #13350 feat: spreadsheet part 3 @jif-oai
- #13355 feat: pres artifact part 5 @jif-oai
- #13357 feat: add multi-actions to presentation tool @jif-oai
- #13360 feat: artifact presentation part 7 @jif-oai
- #13362 feat: wire spreadsheet artifact @jif-oai
- #12741 Add Windows direct install script @efrazer-oai
- #13376 realtime prompt changes @aibrahim-oai
- #13324 app-server-protocol: export flat v2 schema bundle @apanasenko-oai
- #13364 Remove Responses V1 websocket implementation @pakrym-oai
- #12969 app-server: source /feedback logs from sqlite at trace level @charley-oai
- #13381 chore: rm --all-features flag from rust-analyzer @sayan-oai
- #13043 Collapse parsed command summaries when any stage is unknown @nornagon-openai
- #13385 Revert "realtime prompt changes" @aibrahim-oai
- #13389 fix @aibrahim-oai
- #13375 chore(app-server): delete v1 RPC methods and notifications @owenlin0
- #13397 chore(app-server): restore EventMsg TS types @owenlin0
- #13395 Build delegated realtime handoff text from all messages @aibrahim-oai
- #13399 Require deduplicator success before commenting @etraut-openai
- #13398 Revert "Revert "realtime prompt changes"" @aibrahim-oai
- #13333 Refactor plugin config and cache path @xl-openai
- #13275 fix(network-proxy): reject mismatched host headers @viyatb-oai
- #12868 tui: align pending steers with core acceptance @charley-oai
- #13280 Add thread metadata update endpoint to app server @joeytrasatti-openai
- #13050 Add under-development original-resolution view_image support @fjord-oai
- #13402 Ensure the env values of imported shell_environment_policy.set is string @alexsong-oai
- #13331 Make js_repl image output controllable @fjord-oai
- #13401 feat: load plugin apps @sayan-oai
- #13292 [feedback] diagnostics @rhan-oai
- #13414 feat(app-server): add a skills/changed v2 notification @owenlin0
- #13368 feat(app-server): propagate app-server trace context into core @owenlin0
- #13413 copy command-runner to CODEX_HOME so sandbox users can always execute it @iceweasel-oai
- #13366 [bazel] Bump rules_rs and llvm @zbarsky-openai
- #13409 Feat: Preserve network access on read-only sandbox policies @celia-oai
- #13388 config: enforce enterprise feature requirements @bolinfest
- #13218 Add role-specific subagent nickname overrides @gabec-openai
- #13427 chore: Nest skill and protocol network permissions under `network.enabled` @celia-oai
- #13429 core: box wrapper futures to reduce stack pressure @bolinfest
- #13391 support 'flex' tier in app-server in addition to 'fast' @kharvd
- #13290 image-gen-core @won-openai
- #13404 feat: better multi-agent prompt @jif-oai
- #13412 feat: ordinal nick name @jif-oai
- #13454 add metric for per-turn token usage @jif-oai
- #13240 fix: pending messages in `/agent` @jif-oai
- #13461 fix: bad merge @jif-oai
- #13460 feat: disable request input on sub agent @jif-oai
- #13456 feat: add metric for per-turn tool count and add tmp_mem flag @jif-oai
- #13468 nit: citation prompt @jif-oai
- #13467 feat: memories in workspace write @jif-oai
- #12383 add new scopes to login @adaley-openai
- #13484 allow apps to specify cwd for sandbox setup. @iceweasel-oai
- #13424 feat(core, tracing): add a span representing a turn @owenlin0
- #13489 remove serviceTier from app-server examples @kharvd
- #13458 [tui] Update Fast slash command description @pash-openai
- #13382 fix(tui): decode ANSI alpha-channel encoding in syntax themes @fcoury
- #13485 feat: external artifacts builder @jif-oai
- #13493 feat(app-server-test-client): OTEL setup for tracing @owenlin0
- #13501 add metrics for external config import @alexsong-oai
- #13495 Notify TUI about plan mode prompts and user input requests @etraut-openai
- #13506 [release] temporarily use thin LTO for releases @bolinfest
- #13505 Prefix handoff messages with role @aibrahim-oai
- #13422 plugin: support local-based marketplace.json + install endpoint. @xl-openai