## 新功能
- 远程执行器现在使用经过身份验证的端到端加密 Noise 中继通道。(#26242, #26245)
- 跨平台远程执行现在保留执行器原生工作目录和 Shell,包括跨应用服务器和执行服务器边界的文件系统权限路径。(#27819, #27995, #28032, #28122, #28165, #28367)
- 选定的执行器插件可以按线程激活其 stdio MCP 服务器;插件发现还增加了“由我创建”市场以及特定身份验证的精选目录。(#27870, #27884, #27893, #28203, #28383)
- 应用服务器客户端可以列出直接子线程,将外部代理导入与详细结果关联,以及读取或兑换速率限制重置积分。(#26662, #28008, #28143)
- 实时客户端可以显式追加语音,控制 Codex 响应如何进入对话,并省略启动上下文。(#27917, #28405)
- TUI 输入提示可以在无活动后自动解析,并带有在交互时暂停的倒计时。(#28235)
## 错误修复
- 现在钩子信任绕过在 `codex exec` 线程启动和恢复时持久生效,同时阻塞的 `PostToolUse` 钩子正确拒绝代码模式工具调用。(#26434, #28365)
- 插件能力现在根据身份验证模式一致路由,去重冲突的 App/MCP 声明,并保留远程市场排序。(#27461, #27602, #27607, #27902, #27958, #28395)
- Windows 沙盒执行自动修复过期凭据,并在后台运行前给予 PowerShell 命令更多时间。(#27086, #27944)
- 空闲的执行服务器中继保持连接,受控的用户输入立即中断 `wait_agent`。(#28286, #28341)
- 捆绑的 SQLite 已固定到包含 WAL 重置损坏修复的版本。(#27992)
- TLS 连接现在支持企业代理常用的 P-521 证书签名。(#27706)
## 杂项
- 通过缓存工具搜索并消除重复的请求和历史副本,减少了大型、工具密集型会话中的延迟和内存使用。(#27258, #27813, #28306, #28309, #28313, #28323, #28327)
- 将提示图像缓存限制为 64 MiB,反馈上传限制为八个相关线程。(#28294, #28332)
- 终端大小调整回流现在始终启用,忽略已废弃的禁用设置。(#27794)
## 变更日志
完整变更日志:https://github.com/openai/codex/compare/rust-v0.140.0...rust-v0.141.0
- #28001 [codex] 在 x64 上打包 Windows ARM64 @tamird
- #28032 [codex] 将 exec-server 的 cwd 作为 PathUri 传递 @anp-oai
- #27607 [codex] 按应用声明名称去重插件 MCP @felixxia-oai
- #27992 [codex] 将捆绑的 SQLite 固定到修复后的 WAL 重置版本 @gpeal
- #28125 build: 从 just fmt 运行 buildifier @anp-oai
- #28120 bazel: 向 Wine 测试工具集添加 PowerShell @anp-oai
- #27819 path-uri: 跨平台渲染原生路径 @anp-oai
- #28122 [codex] exec-server 遵循远程环境 cwd 和 shell @anp-oai
- #26662 feat(app-server): 按父线程过滤线程 @btraut-openai
- #27884 为 MCP 目录添加选定插件的优先级和归属 @jif-oai
- #27870 从选定的执行器插件中发现 stdio MCP 服务器 @jif-oai
- #28283 [codex] 更新多代理 v2 提示 @jif-oai
- #27602 [codex] 在连接器列表中保留插件应用 @felixxia-oai
- #27461 [codex] 跳过匹配应用路由的插件 MCP OAuth @felixxia-oai
- #27893 在应用服务器中激活选定的执行器插件 MCP @jif-oai
- #28332 [codex] 限制反馈上传子树 @jif-oai
- #27365 内部使用显式命名空间表示动态工具 @sayan-oai
- #28333 skills: 使用本地执行器隐藏协调器技能 @jif-oai
- #27756 [codex] 简化 shell 快照所有权 @pakrym-oai
- #27794 移除终端大小调整回流标志门 @etraut-openai
- #28286 chore: 恢复 exec-server 中继保活 @jif-oai
- #28164 [codex] 简化内存读取指标 @pakrym-oai
- #27371 在线程启动时公开显式动态工具命名空间 @sayan-oai
- #28309 线性化历史输出规范化 @jif-oai
- #28306 避免克隆采样请求输入 @jif-oai
- #28323 直接序列化 WebSocket 请求 @jif-oai
- #28313 避免克隆 WebSocket 请求历史 @jif-oai
- #28344 [codex] 移除过时的 PathExt 导入 @pakrym-oai
- #27059 [codex] 覆盖 OTLP HTTP 日志和跟踪事件导出 @richardopenai
- #28327 重用编码后的 Responses 请求体 @jif-oai
- #27995 [codex] 保留显式环境 cwd @pakrym-oai
- #28285 guardian: 将审查上下文与技能和记忆隔离 @jif-oai
- #26702 TUI 插件共享 2 - 添加远程插件部分管道 @canvrno-oai
- #28294 限制提示图像缓存保留 @jif-oai
- #28257 支持暂存 OAuth 客户端 ID 覆盖 @apanasenko-oai
- #28341 core: 让 steer 中断 wait_agent @jif-oai
- #28336 skills: 每个线程缓存协调器资源 @jif-oai
- #28357 提取共享的 Windows 沙盒会话运行器 @iceweasel-oai
- #27706 使用 aws-lc-rs 作为 rustls 加密提供者 @malsamiri-oai
- #28347 [codex] 添加路径类型技能 @anp-oai
- #28235 添加请求用户输入自动解析计时器 @shijie-oai
- #28234 [mcp] 将默认工具超时增加到 300 秒 @adaley-openai
- #28008 [codex] 添加外部代理导入结果核算 @charlesgong-openai
- #27944 恢复过时的 Windows 沙盒凭据 @iceweasel-oai
- #27086 添加 Windows 统一执行 yield 地板 @iceweasel-oai
- #28358 添加隐藏的 Windows 沙盒包装入口点 @iceweasel-oai
- #27258 core: 每个会话缓存工具搜索处理器 @mchen-oai
- #28143 feat(app-server): 公开速率限制重置积分 @jayp-oai
- #28355 feat(core): 向 ResponseItem 添加元数据字段 @owenlin0
- #28203 [codex] 添加“由我创建”远程插件市场 @ericning-o
- #28365 在代码模式下遵守阻塞的 PostToolUse 钩子 @abhinav-oai
- #27813 [codex] 复用跨 MCP 工具暴露的应用策略评估 @mzeng-openai
- #28300 减少实时移交引导测试的不稳定性 @felixxia-oai
- #28395 [codex] 保留远程插件目录顺序 @jameswt-oai
- #27955 [codex] 跨轮次保留已解析的环境 @pakrym-oai
- #27917 添加实时语音追加控制 @guinness-oai
- #27093 [codex-analytics] 在调试构建中收集分析到文件 @jameswt-oai
- #26242 exec-server: 添加 Noise 中继传输 @viyatb-oai
- #28165 在 exec-server 的文件系统权限路径中使用 PathUri @anp-oai
- #28415 [codex] 修复测试中缺少的响应项元数据 @adaley-openai
- #27058 [codex] 添加基于秒的 OTEL 持续时间直方图 @richardopenai
- #27902 [codex] 集中化插件身份验证能力过滤 @felixxia-oai
- #28405 为实时启动上下文添加开关 @guinness-oai
- #26434 在 codex exec 线程中保留钩子信任绕过 @abhinav-oai
- #26245 exec-server: 默认远程传输使用 Noise @viyatb-oai
- #28383 [codex] 按身份验证加载 API 策划的市场 @felixxia-oai
- #27958 [codex] 使插件详细信息感知能力 @felixxia-oai
- #28367 在应用服务器文件系统权限路径中使用 ApiPathString @anp-oai
- #28421 [codex] 将 shell 快照绑定到保留的线程环境 @pakrym-oai
- #28429 [codex] 添加可中断的睡眠工具 @pakrym-oai
- #28441 [codex] 在集成测试中使用 expect @pakrym-oai
- #28163 [codex] 为用户 shell 命令使用本地环境 @pakrym-oai
## New Features
- Remote executors now use authenticated, end-to-end encrypted Noise relay channels. (#26242, #26245)
- Cross-platform remote execution now preserves executor-native working directories and shells, including filesystem permission paths across app-server and exec-server boundaries. (#27819, #27995, #28032, #28122, #28165, #28367)
- Selected executor plugins can activate their stdio MCP servers per thread; plugin discovery also adds a created-by-me marketplace and auth-specific curated catalogs. (#27870, #27884, #27893, #28203, #28383)
- App-server clients can list immediate child threads, correlate external-agent imports with detailed results, and read or redeem rate-limit reset credits. (#26662, #28008, #28143)
- Realtime clients can explicitly append speech, control how Codex responses enter conversations, and omit startup context. (#27917, #28405)
- TUI input prompts can auto-resolve after inactivity, with a countdown that pauses on interaction. (#28235)
## Bug Fixes
- Hook trust bypass now persists through `codex exec` thread start and resume, while blocking `PostToolUse` hooks correctly reject code-mode tool calls. (#26434, #28365)
- Plugin capabilities now route consistently by authentication mode, deduplicate conflicting App/MCP declarations, and preserve remote marketplace ordering. (#27461, #27602, #27607, #27902, #27958, #28395)
- Windows sandbox execution repairs stale credentials automatically and gives PowerShell commands more time before backgrounding. (#27086, #27944)
- Idle exec-server relays remain connected, and steered user input immediately interrupts `wait_agent`. (#28286, #28341)
- Bundled SQLite is pinned to a version containing the WAL-reset corruption fix. (#27992)
- TLS connections now support P-521 certificate signatures commonly used by enterprise proxies. (#27706)
## Chores
- Reduced latency and memory use in large, tool-heavy sessions by caching tool search and eliminating repeated request and history copies. (#27258, #27813, #28306, #28309, #28313, #28323, #28327)
- Bounded prompt-image caching to 64 MiB and feedback uploads to eight related threads. (#28294, #28332)
- Terminal resize reflow is now always enabled, ignoring obsolete disabled settings. (#27794)
## Changelog
Full Changelog: https://github.com/openai/codex/compare/rust-v0.140.0...rust-v0.141.0
- #28001 [codex] package Windows ARM64 on x64 @tamird
- #28032 [codex] Carry exec-server cwd as PathUri @anp-oai
- #27607 [codex] Dedupe plugin MCPs by app declaration name @felixxia-oai
- #27992 [codex] Pin bundled SQLite to fixed WAL-reset version @gpeal
- #28125 build: run buildifier from just fmt @anp-oai
- #28120 bazel: add PowerShell to Wine test harness @anp-oai
- #27819 path-uri: render native paths across platforms @anp-oai
- #28122 [codex] exec-server honors remote environment cwd and shell @anp-oai
- #26662 feat(app-server): filter threads by parent @btraut-openai
- #27884 Add selected-plugin precedence and attribution to the MCP catalog @jif-oai
- #27870 Discover stdio MCP servers from selected executor plugins @jif-oai
- #28283 [codex] update multi-agent v2 prompts @jif-oai
- #27602 [codex] Preserve plugin apps in connector listings @felixxia-oai
- #27461 [codex] Skip plugin MCP OAuth for matching app routes @felixxia-oai
- #27893 Activate selected executor plugin MCPs in app-server @jif-oai
- #28332 [codex] Cap feedback upload subtrees @jif-oai
- #27365 Represent dynamic tools with explicit namespaces internally @sayan-oai
- #28333 skills: hide orchestrator skills with a local executor @jif-oai
- #27756 [codex] simplify shell snapshot ownership @pakrym-oai
- #27794 Remove terminal resize reflow flag gates @etraut-openai
- #28286 chore: restore exec-server relay keepalives @jif-oai
- #28164 [codex] simplify memory read metrics @pakrym-oai
- #27371 Expose explicit dynamic tool namespaces in thread start @sayan-oai
- #28309 linearize history output normalization @jif-oai
- #28306 avoid cloning sampling request input @jif-oai
- #28323 serialize websocket requests directly @jif-oai
- #28313 avoid cloning websocket request history @jif-oai
- #28344 [codex] remove stale PathExt import @pakrym-oai
- #27059 [codex] Cover OTLP HTTP log and trace event export @richardopenai
- #28327 reuse encoded Responses request bodies @jif-oai
- #27995 [codex] preserve explicit environment cwd @pakrym-oai
- #28285 guardian: isolate review context from skills and memories @jif-oai
- #26702 TUI Plugin Sharing 2 - add remote plugin section plumbing @canvrno-oai
- #28294 bound prompt image cache retention @jif-oai
- #28257 Support staging OAuth client ID overrides @apanasenko-oai
- #28341 core: let steer interrupt wait_agent @jif-oai
- #28336 skills: cache orchestrator resources per thread @jif-oai
- #28357 Extract shared Windows sandbox session runner @iceweasel-oai
- #27706 Use aws-lc-rs for rustls crypto provider @malsamiri-oai
- #28347 [codex] add path-types skill @anp-oai
- #28235 Add request user input auto-resolution timer @shijie-oai
- #28234 [mcp] Increase default tool timeout to 300 seconds @adaley-openai
- #28008 [codex] Add external agent import result accounting @charlesgong-openai
- #27944 recover stale Windows sandbox credentials @iceweasel-oai
- #27086 Add Windows unified exec yield floor @iceweasel-oai
- #28358 Add hidden Windows sandbox wrapper entrypoint @iceweasel-oai
- #27258 core: cache the tool search handler per session @mchen-oai
- #28143 feat(app-server): expose rate-limit reset credits @jayp-oai
- #28355 feat(core): add metadata field to ResponseItem @owenlin0
- #28203 [codex] Add created-by-me remote plugin marketplace @ericning-o
- #28365 Respect blocking PostToolUse hooks in code mode @abhinav-oai
- #27813 [codex] Reuse Apps policy evaluation across MCP tool exposure @mzeng-openai
- #28300 Deflake realtime handoff steering test @felixxia-oai
- #28395 [codex] Preserve remote plugin directory order @jameswt-oai
- #27955 [codex] retain resolved environments across turns @pakrym-oai
- #27917 Add realtime speech append control @guinness-oai
- #27093 [codex-analytics] Analytics Capture to File in Debug Builds @jameswt-oai
- #26242 exec-server: add Noise relay transport @viyatb-oai
- #28165 Use PathUri in filesystem permission paths for exec-server @anp-oai
- #28415 [codex] Fix missing response item metadata in tests @adaley-openai
- #27058 [codex] Add second-based OTEL duration histograms @richardopenai
- #27902 [codex] Centralize plugin auth capability filtering @felixxia-oai
- #28405 Add a toggle for realtime startup context @guinness-oai
- #26434 Preserve hook trust bypass in codex exec threads @abhinav-oai
- #26245 exec-server: default remote transport to Noise @viyatb-oai
- #28383 [codex] Load API curated marketplace by auth @felixxia-oai
- #27958 [codex] Make plugin details capability aware @felixxia-oai
- #28367 Use ApiPathString in app-server filesystem permission paths @anp-oai
- #28421 [codex] Bind shell snapshots to retained thread environments @pakrym-oai
- #28429 [codex] Add interruptible sleep tool @pakrym-oai
- #28441 [codex] Use expect in integration tests @pakrym-oai
- #28163 [codex] Use local environment for user shell commands @pakrym-oai