## 新功能
- 新增持久化的 `/goal` 工作流,支持应用服务器 API、模型工具、运行时延续以及用于创建、暂停、恢复和清除的 TUI 控件。(#18073, #18074, #18075, #18076, #18077, #20082)
- 新增 `codex update` 命令、可配置的 TUI 键位映射、计划模式提示、需要操作的终端标题,以及活跃轮次中的 `/statusline` 和 `/title` 编辑功能。(#19933, #18593, #19901, #18372, #19917)
- 扩展权限配置文件,包括内置默认配置、沙箱 CLI 配置文件选择、当前工作目录(cwd)控制,以及供客户端使用的活跃配置文件元数据。(#19900, #20117, #20118, #20095)
- 改进插件工作流,支持市场安装、远程包缓存、远程卸载、插件捆绑钩子、钩子启用状态以及外部代理配置导入。(#18704, #19914, #19456, #19705, #19840, #19949)
- 新增外部代理会话导入功能,包括后台导入和导入会话标题处理。(#19895, #20284, #20261)
- 使 MultiAgentV2 配置更明确,支持线程上限、等待时间控制、根/子代理提示以及 v2 特定的深度处理。(#19360, #19792, #19805, #20052, #20180)
## Bug 修复
- 修复了多个恢复和中断问题,包括陈旧中断挂起、持久化提供程序恢复、大型远程恢复响应以及缓慢的过滤恢复列表。(#18392, #19287, #19920, #19591)
- 改进了 TUI 在终端大小调整重排、Markdown 列表间距、斜杠命令弹出布局、键盘清理、Shell 模式退出以及工作状态更新方面的可靠性。(#18575, #19706, #19511, #19625, #19986, #19939)
- 强化托管网络行为,支持延迟拒绝、代理绕过默认值、解析目标检查、IPv6 主机匹配以及 `git -C` 批准处理。(#19184, #20002, #19999, #19995, #20085)
- 修复了 Windows 沙箱和 PTY 边缘情况,包括伪控制台启动、提升的 runner 进程处理、核心 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)
## 文档
- 更新了捆绑的 OpenAI Docs 技能,以支持 GPT-5.5、`gpt-image-2`,并提供了更清晰的升级指南。(#19407, #19443, #19422)
- 澄清了面向贡献者的文档,包括 PR 模板、Rust async trait 指南以及 README 措辞。(#19912, #20242, #19514)
- 新增了已检入的 `codex-core` 公共 API 列表以及 ThreadManager 示例 crate。(#20243, #20141)
## 杂项
- 发布了 `codex-app-server` 发行版构件,停止发布 GNU Linux 二进制文件,并延长了发行工作流超时时间。(#19447, #19445, #20271, #20343)
- 为 Python 应用服务器 SDK 包添加了 Codex 固定版本控制。(#18996)
- 弃用了 `--full-auto`,引导用户使用明确的权限配置文件和信任流程。(#20133)
- 通过 Bazel 设置迁移、发行冒烟测试锁定以及工作流固定/超时更新,稳定了 CI 和发行管道。(#19851, #19854, #19472, #19609)
## 更新日志
完整更新日志:https://github.com/openai/codex/compare/rust-v0.125.0...rust-v0.128.0
- #19124 使 MultiAgentV2 中断标记由助手生成 @jif-oai
- #19354 杂项:为 max_concurrent_threads_per_session 设置别名 @jif-oai
- #19360 新功能:在生成描述中显示多代理线程限制 @jif-oai
- #19351 添加 agents.interrupt_message 用于中断标记 @jif-oai
- #18392 修复轮次/中断挂起问题 @danwang-oai
- #19380 杂项:从 Morpheus 中移除 MCP 插件和应用 @jif-oai
- #18907 尊重用于禁用插件的工作区选项 @zamoshchin-openai
- #19283 检查命名管道使用者的 PID @iceweasel-oai
- #19407 为 GPT-5.5 更新捆绑的 OpenAI Docs 技能 @kkahadze-oai
- #19163 强化包管理器安装策略 @mcgrew-oai
- #19416 修复:为 Bedrock 模型使用 apply_patch 工具 @celia-oai
- #19093 [codex] 从线程开始通知中省略 fork 轮次 @euroelessar
- #19244 更新 Unix 套接字传输以使用 WebSocket 升级 @willwang-openai
- #19170 在选择菜单编号和默认焦点中跳过禁用行 @canvrno-oai
- #19414 权限:使旧配置文件转换独立于当前工作目录 @bolinfest
- #18900 将 fork 和恢复读取迁移到线程存储 @wiltzius-openai
- #19445 CI:停止发布 GNU Linux 发行版构件 @bolinfest
- #19443 将 gpt-image-2 添加到捆绑的 OpenAI Docs 技能 @kkahadze-oai
- #18584 [4/4] 遵循可流式 HTTP MCP 放置 @aibrahim-oai
- #19447 CI:发布 codex-app-server 发行版构件 @bolinfest
- #19422 澄清捆绑的 OpenAI Docs 升级指南措辞 @kkahadze-oai
- #19266 [codex] 添加非本地线程存储回归测试 @wiltzius-openai
- #19098 新功能:使用根别名压缩技能路径 @xl-openai
- #19207 [codex] 将 Codex 应用工具调用 ID 转发到后端元数据 @rreichel3-oai
- #19453 序列化遗留 Windows PowerShell 沙箱测试 @dylan-hurd-oai
- #19234 将日志 DB 重构为 LogWriter 接口 @rasmusrygaard
- #19461 修复:Bedrock GPT-5.4 推理级别 @celia-oai
- #19449 权限:移除遗留的只读访问模式 @bolinfest
- #19472 CI:固定 codex-action v1.7 @viyatb-oai
- #19468 修复 Bazel cargo_bin runfiles 路径 @fjord-oai
- #19410 移除 js_repl 功能 @fjord-oai
- #18073 添加目标持久化基础(1/5)@etraut-openai
- #18074 添加目标应用服务器 API(2/5)@etraut-openai
- #18075 添加目标模型工具(3/5)@etraut-openai
- #18076 添加目标核心运行时(4/5)@etraut-openai
- #18077 添加目标 TUI UX(5/5)@etraut-openai
- #19454 拆分批准矩阵测试组 @dylan-hurd-oai
- #19514 修复 codex-rs README 语法 @etraut-openai
- #19459 默认启用不可用的虚拟工具 @mzeng-openai
- #19524 [codex] 移除未使用的 codex-mcp API 和重复的辅助函数 @aibrahim-oai
- #19526 [codex] 按可见性排序 codex-mcp 项目 @aibrahim-oai
- #19578 修复:将 Bazel 超时增加到 45 分钟 @bolinfest
- #19287 在线程恢复时恢复持久化的模型提供程序 @etraut-openai
- #19593 测试:将远程线程存储回归与插件预热隔离 @bolinfest
- #19511 滚动时保持斜杠命令弹出列稳定 @etraut-openai
- #19595 [codex] 为提升的 exec 绕过托管网络 @viyatb-oai
- #19604 测试:在 Windows 上稳定应用服务器路径断言 @bolinfest
- #19609 修复:恢复 Bazel 构建的 30 分钟超时 @bolinfest
- #19389 保护 npm 更新准备就绪 @shijie-oai
- #18575 修复(tui):在终端大小调整时重新排布滚动缓冲区 @fcoury-oai
- #19610 在 response.completed 中支持 end_turn @andmis
- #19640 [codex] 移除 responses 命令 @tibo-openai
- #19683 测试:强化应用服务器集成测试 @bolinfest
- #18904 新功能:从 JWT 登录/环境加载 AgentIdentity @efrazer-oai
- #19606 权限:使运行时配置基于配置文件 @bolinfest
- #19392 权限:从配置文件推导兼容性策略 @bolinfest
- #19484 将应用服务器 JSON-RPC 错误处理提升到请求边界 @pakrym-oai
- #19487 [codex] 将配置加载移至 codex-config @pakrym-oai
- #19393 权限:将批准和沙箱使用者迁移到配置文件 @bolinfest
- #19726 修复 codex-core 配置测试类型路径 @pakrym-oai
- #19727 测试:将 core-all-test 分片数量增加到 16 @bolinfest
- #19725 拆分 MCP 连接模块 @aibrahim-oai
- #19605 删除未使用的 ResponseItem::Message.end_turn @andmis
- #19394 权限:移除核心遗留策略往返 @bolinfest
- #19733 允许 agents.max_threads 与 multi_agent_v2 配合使用 @andmis
- #19395 权限:完成基于配置文件的应用表面 @bolinfest
- #19739 远程沙箱配置的内联主机名解析 @abhinav-oai
- #19734 权限:集中遗留沙箱投影 @bolinfest
- #19058 添加 /auto-review-denials 重试批准流程 @won-openai
- #19735 权限:仅存储受限的权限配置文件 @bolinfest
- #19736 权限:将需求约束为配置文件 @bolinfest
- #19737 权限:在边界处推导遗留 exec 策略 @bolinfest
- #19779 添加 Codex 问题摘要技能 @etraut-openai
- #19792 multi_agent_v2:将线程上限移至功能配置 @jif-oai
- #18982 新功能:使用 git 支持的工作区差异进行内存合并 @jif-oai
- #19809 允许在重试耗尽后进行第 2 阶段内存声明 @jif-oai
- #19812 避免在干净工作区上重写第 2 阶段选择 @jif-oai
- #19813 细节:再修复一次 @jif-oai
- #19818 杂项:拆分内存 第 1 部分 @jif-oai
- #19510 当不存在用户消息时隐藏重放预览 @etraut-openai
- #19618 在提示历史中持久化 Shell 模式命令 @etraut-openai
- #19709 渲染委托的补丁批准详情 @etraut-openai
- #19490 简化插件、应用和技能处理器 @pakrym-oai
- #19762 重构:使认证加载异步 @efrazer-oai
- #19854 CI:将 npm 预发布冒烟测试固定到最近的 rust-release 运行 @bolinfest
- #19851 CI:将 Bazel 设置迁移出已归档的 setup-bazelisk @bolinfest
- #19491 简化账户和命令处理器 @pakrym-oai
- #19771 修复:从 model_visible_specs 中过滤动态延迟工具 @sayan-oai
- #19863 [codex-analytics] 移除 ga 标志 @rhan-oai
- #19865 限制原始细节图像令牌估算 @fjord-oai
- #19591 修复 TUI 中过滤的线程列表恢复回归 @etraut-openai
- #19513 在输入时延迟批准提示 @etraut-openai
- #19706 在代码块后保持 TUI Markdown 列表间距 @etraut-openai
- #19841 权限:移除 cwd 特殊路径 @bolinfest
- #19492 简化线程启动处理器 @pakrym-oai
- #19874 [codex-backend] 在过滤的线程列表中优先使用状态 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 简化轮次和实时处理器 @pakrym-oai
- #18372 在终端标题中显示需要操作 @canvrno-oai
- #19884 添加 MCP 应用功能标志 @mzeng-openai
- #19498 简化审查和反馈处理器 @pakrym-oai
- #19772 权限:将配置默认值推导为配置文件 @bolinfest
- #19836 禁止自定义 MCP 使用 fileparams 元数据 @colby-oai
- #19892 将 exec-server 文件系统 API 重构为 codex-file-system @miz-openai
- #19452 稳定插件 MCP 固定测试 @dylan-hurd-oai
- #19481 移除幽灵快照 @pakrym-oai
- #19773 权限:在 TUI 线程状态中要求配置文件 @bolinfest
- #19917 允许在活跃轮次中使用 /statusline 和 /title 斜杠命令 @canvrno-oai
- #19763 重构:急切加载代理身份运行时 @efrazer-oai
- #17689 [codex-analytics] 在默认标头中包含用户代理 @marksteinbrick-oai
- #19912 澄清 PR 模板邀请要求 @etraut-openai
- #19630 避免在线程关闭后持久化 ShutdownComplete @etraut-openai
- #19774 权限:使 SessionConfigured 仅基于配置文件 @bolinfest
- #19775 权限:推导快照沙箱投影 @bolinfest
- #19920 允许大型远程应用服务器恢复响应 @etraut-openai
- #19776 权限:将线程会话存储为配置文件 @bolinfest
- #19899 应用服务器协议:将权限配置文件标记为实验性 @bolinfest
- #19933 添加 `codex update` 命令 @etraut-openai
- #19914 新功能:在安装时缓存远程插件包 @xl-openai
- #19456 添加远程插件卸载 API @xli-oai
- #19805 添加 MultiAgentV2 根和子代理上下文提示 @jif-oai
- #19860 新功能:拆分内存 第 2 部分 @jif-oai
- #19961 新功能:修复提示 2 @jif-oai
- #19963 新功能:修复提示 3 @jif-oai
- #19967 稳定内存第 2 阶段输入顺序 @jif-oai
- #19970 新功能:在冷却期间从用户轮次触发内存 @jif-oai
- #19904 修复:配置 AgentIdentity AuthAPI 基础 URL @efrazer-oai
- #19990 新功能:当 Codex 速率限制较低时跳过内存启动 @jif-oai
- #19998 新功能:内存内务处理 1 @jif-oai
- #20000 新功能:内存内务处理 2 @jif-oai
- #19832 为重新播放的消息保留助手阶段 @friel-openai
- #19625 退出时重置 TUI 键盘报告 @etraut-openai
- #18593 新功能(tui):添加可配置键位映射支持 @fcoury-oai
- #19846 [sandbox] 在 Seatbelt 中强制执行受保护的工作区元数据路径 @evawong-oai
- #20005 新功能:内存内务处理 3 @jif-oai
- #19929 TUI:为工作分隔符使用累积轮次持续时间 @etraut-openai
- #19753 终止关闭时的 stdio MCP 服务器以避免进程泄漏 @etraut-openai
- #19473 将轮次开始时间戳添加到轮次元数据 @mchen-oai
- #19875 从自定义 MCP 工具中剥离连接器来源元数据 @colby-oai
- #19764 新功能:使用 JWKS 验证代理身份 JWT @efrazer-oai
- #19847 在 Linux 沙箱中强制执行工作区元数据保护 @evawong-oai
- #19509 在 mcp.tools.call 跨度上记录 MCP 结果遥测 @mchen-oai
- #19907 澄清网络批准自动审查提示 @maja-openai
- #19901 新功能(tui):从草稿中建议计划模式 @fcoury-oai
- #19931 将本地 /resume cwd 过滤移至线程/列表 @canvrno-oai
- #19986 修复(tui):让 esc 退出空 Shell 模式 @fcoury-oai
- #19895 外部代理会话支持 @stefanstokic-oai
- #20002 修复(network-proxy):收紧网络代理绕过默认值 @viyatb-oai
- #19900 权限:添加内置默认配置文件 @bolinfest
- #20045 在任务完成签名变更后修复计划模式提示测试 @canvrno-oai
- #19432 [codex] 将令牌使用情况添加到轮次跟踪跨度 @charley-openai
- #20001 修复(network-proxy):强化 Linux 代理桥接辅助工具 @viyatb-oai
- #19959 修复日志 DB 批量刷新 flakes @dylan-hurd-oai
- #17373 应用服务器:使用键控序列化运行初始化的 RPC @euroelessar
- #19708 为代理身份加载云要求 @shijie-oai
- #19999 修复(network-proxy):重新检查网络代理连接目标 @viyatb-oai
- #20047 应用服务器:允许远程控制运行时功能覆盖 @euroelessar
- #20052 使 MultiAgentV2 等待最小时间可配置 @jif-oai
- #20008 tui:对沙箱状态使用权限配置文件 @bolinfest
- #20068 应用服务器:在没有 SQLite 时禁用远程控制 @euroelessar
- #20066 [rollout-trace] 在 rollout trace 中包含 x-request-id。@cassirer-openai
- #19705 发现插件捆绑的钩子 @abhinav-oai
- #18704 /plugins:添加市场安装流程 @canvrno-oai
- #20085 修复:不要自动批准 git -C ... @owenlin0
- #20088 修复易失败的插件钩子环境测试 @abhinav-oai
- #19995 修复(network-proxy):规范化网络代理主机匹配 @viyatb-oai
- #20010 核心测试:使用权限配置文件提交轮次 @bolinfest
- #20092 当认证刷新失败时返回 None @gpeal
- #19919 应用服务器:通知客户端远程控制状态变更 @euroelessar
- #20097 完善 Codex 问题摘要 @etraut-openai
- #20011 核心测试:从权限配置文件构建用户轮次 @bolinfest
- #20013 核心测试:将更多轮次迁移到权限配置文件 @bolinfest
- #20015 核心测试:直接配置配置文件 @bolinfest
- #20016 核心测试:发送带有权限配置文件的模型轮次 @bolinfest
- #20100 增加插件钩子环境测试超时 @abhinav-oai
- #20018 核心测试:将模型/个性轮次迁移到配置文件 @bolinfest
- #20021 核心测试:将查看图像轮次迁移到配置文件 @bolinfest
- #20024 核心测试:将安全检查轮次迁移到配置文件 @bolinfest
- #20026 核心测试:将计划项目轮次迁移到配置文件 @bolinfest
- #20027 核心测试:将工具测试迁移到权限配置文件 @bolinfest
- #20028 核心测试:将权限消息测试迁移到配置文件 @bolinfest
- #20030 核心测试:将 exec 策略轮次迁移到配置文件 @bolinfest
- #20032 核心测试:将提示缓存轮次迁移到配置文件 @bolinfest
- #20033 核心测试:将请求权限工具轮次迁移到配置文件 @bolinfest
- #20034 核心测试:将 zsh-fork 权限迁移到配置文件 @bolinfest
- #20035 核心测试:将紧凑轮次迁移到配置文件 @bolinfest
- #20037 核心测试:将 rmcp 轮次迁移到配置文件 @bolinfest
- #20040 核心测试:将 apply patch 轮次迁移到配置文件 @bolinfest
- #20041 核心测试:将钩子轮次迁移到配置文件 @bolinfest
- #20072 支持为特定工具禁用工具建议。@mzeng-openai
- #19949 支持从外部检测和导入 MCP、Subagents、钩子、命令 @alexsong-oai
- #19442 新功能:按模型提供程序禁用功能 @celia-oai
- #20108 修复:为 apply patch 测试恢复实时事件提交路径 @bolinfest
- #19939 设置转向消息后恢复 TUI 工作状态 @canvrno-oai
- #20086 修复插件列表工作区设置测试隔离 @canvrno-oai
- #20049 新功能:向应用服务器客户端公开提供程序能力边界 @celia-oai
- #20109 新功能:更新 Bedrock Mantle 端点和 GPT-5.4 模型 ID @celia-oai
- #20106 linux-sandbox:将辅助管道切换到 PermissionProfile @bolinfest
- #20112 放宽技能描述预算警告 @xl-openai
- #20058 添加环境提供程序快照 @starr-openai
- #20133 杂项(cli) 弃用 --full-auto @dylan-hurd-oai
- #20117 新功能(cli):添加显式沙箱权限配置文件 @viyatb-oai
- #20139 删除 multi_agent_v2 followup_task 中断参数 @andmis
- #20118 新功能(cli):添加沙箱配置文件控制 @viyatb-oai
- #20144 修复迁移的钩子路径重写 @alexsong-oai
- #20042 修复 Windows 伪控制台属性处理,用于沙箱 PTY 会话 @iceweasel-oai
- #20186 细节:移除旧的内存内容 @jif-oai
- #20180 使多代理 v2 忽略 agents.max_depth @jif-oai
- #20082 对暂停的目标使用 /goal 恢复 @etraut-openai
- #20172 TUI:移除核心协议依赖 [1/7] @etraut-openai
- #19211 改进 Windows 进程管理边缘情况 @iceweasel-oai
- #20123 [rollout-tracer] 在加密 ID 上匹配分析消息。@cassirer-openai
- #20173 TUI:移除核心协议依赖 [2/7] @etraut-openai
- #20174 TUI:移除核心协议依赖 [3/7] @etraut-openai
- #20228 [codex-backend] 在 rollout-path 读取中优先使用 sqlite git 信息 @joeytrasatti-openai
- #20141 添加 ThreadManager 示例 crate @pakrym-oai
- #20046 测试协议:锁定代理间评论阶段 @friel-openai
- #20064 在反馈上传中包含自动审查 rollout @won-openai
- #20096 新功能:对技能和 MCP 使用远程安装的插件缓存 @xl-openai
- #19184 修复:处理延迟的网络代理拒绝 @viyatb-oai
- #20089 扩大 Windows 核心 shell 环境变量集。@iceweasel-oai
- #17088 [codex-analytics] 摄入服务器请求和响应 @rhan-oai
- #20091 [tool_suggest] 改进 tool_suggest 触发条件。@mzeng-openai
- #20258 应用服务器:修复传出发送器测试设置 @sayan-oai
- #20050 [应用服务器] 类型化客户端响应负载 @rhan-oai
- #19966 在卸载前要求远程插件详细信息 @xli-oai
- #20059 [应用服务器] 集中客户端响应分析 @rhan-oai
- #19334 当默认端口忙时回退登录回调端口 @xli-oai
- #20231 [apps] 添加应用 MCP 路径覆盖 @adaley-openai
- #20242 文档:不鼓励使用 `#[async_trait]` 和 `#[allow(async_fn_in_trait)]` @bolinfest
- #19620 将轮次元数据标头转义为 ASCII JSON @etraut-openai
- #19537 [mcp] 修复插件 MCP 批准策略。@mzeng-openai
- #19229 添加代理图存储接口 @rasmusrygaard
- #20243 添加 codex-core 公共 API 列表 @pakrym-oai
- #19435 停止在 Windows 上阻塞 unified_exec @iceweasel-oai
- #19852 在 Linux 沙箱中强制执行工作区元数据保护 @evawong-oai
- #20136 更新 Codex 登录成功页面 UX @rafael-jac
- #20271 杂项:将发行构建超时从 60 分钟增加到 90 @bolinfest
- #19778 添加钩子/列表应用服务器 RPC @abhinav-oai
- #20261 从外部会话消费 ai-title 并添加结束标记 @alexsong-oai
- #20284 在后台导入外部代理会话 @stefanstokic-oai
- #20149 减少协作模式的表面 @pakrym-oai
- #20282 tui:在 Ctrl-D 时从侧聊天返回 @etraut-openai
- #20250 更新 codex_plugins_beta_setting(来自工作区设置)@zamoshchin-openai
- #20080 [codex-analytics] 防止过时的 guardian 事件满足重复使用的审查 @rhan-oai
- #20291 应用服务器:从 bespoke 事件中移除死 API 版本处理 @pakrym-oai
- #20304 [plugins] 允许 MSFT 策划的插件在 tool_suggest 中 @mzeng-openai
- #20095 权限:公开活跃的配置文件元数据 @bolinfest
- #19840 添加持久化的钩子启用状态 @abhinav-oai
- #20343 CI:增加 Windows 发行工作流超时 @bolinfest
## New Features
- Added persisted `/goal` workflows with app-server APIs, model tools, runtime continuation, and TUI controls for create, pause, resume, and clear. (#18073, #18074, #18075, #18076, #18077, #20082)
- Added `codex update`, configurable TUI keymaps, plan-mode nudges, action-required terminal titles, and active-turn `/statusline` and `/title` edits. (#19933, #18593, #19901, #18372, #19917)
- Expanded permission profiles with built-in defaults, sandbox CLI profile selection, cwd controls, and active-profile metadata for clients. (#19900, #20117, #20118, #20095)
- Improved plugin workflows with marketplace installation, remote bundle caching, remote uninstall, plugin-bundled hooks, hook enablement state, and external-agent config import. (#18704, #19914, #19456, #19705, #19840, #19949)
- Added external agent session import, including background imports and imported-session title handling. (#19895, #20284, #20261)
- Made MultiAgentV2 configuration more explicit with thread caps, wait-time controls, root/subagent hints, and v2-specific depth handling. (#19360, #19792, #19805, #20052, #20180)
## Bug Fixes
- Fixed several resume and interruption issues, including stale interrupt hangs, persisted provider restoration, large remote resume responses, and slow filtered resume lists. (#18392, #19287, #19920, #19591)
- Improved TUI reliability around terminal resize reflow, markdown list spacing, slash-command popup layout, keyboard cleanup, shell-mode escape, and working status updates. (#18575, #19706, #19511, #19625, #19986, #19939)
- Hardened managed network behavior for deferred denials, proxy bypass defaults, resolved target checks, IPv6 host matching, and `git -C` approval handling. (#19184, #20002, #19999, #19995, #20085)
- Fixed Windows sandbox and PTY edge cases, including pseudoconsole startup, elevated runner process handling, core shell environment inheritance, and named-pipe validation. (#20042, #19211, #20089, #19283)
- Fixed Bedrock model support for `apply_patch`, GPT-5.4 reasoning levels, and updated Bedrock GPT-5.4 endpoint/model metadata. (#19416, #19461, #20109)
- Fixed MCP/plugin edge cases around stdio server cleanup, plugin MCP approval persistence, and custom MCP metadata isolation. (#19753, #19537, #19836, #19875)
## Documentation
- Updated the bundled OpenAI Docs skill for GPT-5.5, `gpt-image-2`, and clearer upgrade guidance. (#19407, #19443, #19422)
- Clarified contributor-facing docs, including the PR template, Rust async trait guidance, and README wording. (#19912, #20242, #19514)
- Added a checked-in `codex-core` public API listing and a ThreadManager sample crate. (#20243, #20141)
## Chores
- Published `codex-app-server` release artifacts, stopped publishing GNU Linux binaries, and increased release workflow timeouts. (#19447, #19445, #20271, #20343)
- Added Codex-pinned versioning for the Python app-server SDK package. (#18996)
- Deprecated `--full-auto` while steering users toward explicit permission profiles and trust flows. (#20133)
- Stabilized CI and release plumbing with Bazel setup migration, release smoke-test pinning, and updated workflow pins/timeouts. (#19851, #19854, #19472, #19609)
## Changelog
Full Changelog: https://github.com/openai/codex/compare/rust-v0.125.0...rust-v0.128.0
- #19124 Make MultiAgentV2 interruption markers assistant-authored @jif-oai
- #19354 chore: alias max_concurrent_threads_per_session @jif-oai
- #19360 feat: surface multi-agent thread limit in spawn description @jif-oai
- #19351 Add agents.interrupt_message for interruption markers @jif-oai
- #18392 Fix hang on turn/interrupt @danwang-oai
- #19380 chore: drop MCP Plugins and App from Morpheus @jif-oai
- #18907 respect workspace option for disabling plugins @zamoshchin-openai
- #19283 check PID of named pipe consumer @iceweasel-oai
- #19407 Update bundled OpenAI Docs skill for GPT-5.5 @kkahadze-oai
- #19163 Harden package-manager install policy @mcgrew-oai
- #19416 Fix: use function apply_patch tool for Bedrock model @celia-oai
- #19093 [codex] Omit fork turns from thread started notifications @euroelessar
- #19244 Update unix socket transport to use WebSocket upgrade @willwang-openai
- #19170 Skip disabled rows in selection menu numbering and default focus @canvrno-oai
- #19414 permissions: make legacy profile conversion cwd-free @bolinfest
- #18900 Migrate fork and resume reads to thread store @wiltzius-openai
- #19445 ci: stop publishing GNU Linux release artifacts @bolinfest
- #19443 Add gpt-image-2 to bundled OpenAI Docs skill @kkahadze-oai
- #18584 [4/4] Honor Streamable HTTP MCP placement @aibrahim-oai
- #19447 ci: publish codex-app-server release artifacts @bolinfest
- #19422 Clarify bundled OpenAI Docs upgrade guide wording @kkahadze-oai
- #19266 [codex] add non-local thread store regression harness @wiltzius-openai
- #19098 feat: Compress skill paths with root aliases @xl-openai
- #19207 [codex] Forward Codex Apps tool call IDs to backend metadata @rreichel3-oai
- #19453 Serialize legacy Windows PowerShell sandbox tests @dylan-hurd-oai
- #19234 Refactor log DB into LogWriter interface @rasmusrygaard
- #19461 fix: Bedrock GPT-5.4 reasoning levels @celia-oai
- #19449 permissions: remove legacy read-only access modes @bolinfest
- #19472 ci: pin codex-action v1.7 @viyatb-oai
- #19468 Fix Bazel cargo_bin runfiles paths @fjord-oai
- #19410 Remove js_repl feature @fjord-oai
- #18073 Add goal persistence foundation (1 / 5) @etraut-openai
- #18074 Add goal app-server API (2 / 5) @etraut-openai
- #18075 Add goal model tools (3 / 5) @etraut-openai
- #18076 Add goal core runtime (4 / 5) @etraut-openai
- #18077 Add goal TUI UX (5 / 5) @etraut-openai
- #19454 Split approval matrix test groups @dylan-hurd-oai
- #19514 Fix codex-rs README grammar @etraut-openai
- #19459 Enable unavailable dummy tools by default @mzeng-openai
- #19524 [codex] Prune unused codex-mcp API and duplicate helpers @aibrahim-oai
- #19526 [codex] Order codex-mcp items by visibility @aibrahim-oai
- #19578 fix: increase Bazel timeout to 45 minutes @bolinfest
- #19287 Restore persisted model provider on thread resume @etraut-openai
- #19593 test: isolate remote thread store regression from plugin warmups @bolinfest
- #19511 Keep slash command popup columns stable while scrolling @etraut-openai
- #19595 [codex] Bypass managed network for escalated exec @viyatb-oai
- #19604 test: stabilize app-server path assertions on Windows @bolinfest
- #19609 fix: restore 30-minute timeout for Bazel builds @bolinfest
- #19389 Guard npm update readiness @shijie-oai
- #18575 fix(tui): reflow scrollback on terminal resize @fcoury-oai
- #19610 Support end_turn in response.completed @andmis
- #19640 [codex] remove responses command @tibo-openai
- #19683 test: harden app-server integration tests @bolinfest
- #18904 feat: load AgentIdentity from JWT login/env @efrazer-oai
- #19606 permissions: make runtime config profile-backed @bolinfest
- #19392 permissions: derive compatibility policies from profiles @bolinfest
- #19484 Lift app-server JSON-RPC error handling to request boundary @pakrym-oai
- #19487 [codex] Move config loading into codex-config @pakrym-oai
- #19393 permissions: migrate approval and sandbox consumers to profiles @bolinfest
- #19726 Fix codex-core config test type paths @pakrym-oai
- #19727 test: increase core-all-test shard count to 16 @bolinfest
- #19725 Split MCP connection modules @aibrahim-oai
- #19605 Delete unused ResponseItem::Message.end_turn @andmis
- #19394 permissions: remove core legacy policy round trips @bolinfest
- #19733 Allow agents.max_threads to work with multi_agent_v2 @andmis
- #19395 permissions: finish profile-backed app surfaces @bolinfest
- #19739 inline hostname resolution for remote sandbox config @abhinav-oai
- #19734 permissions: centralize legacy sandbox projection @bolinfest
- #19058 Add /auto-review-denials retry approval flow @won-openai
- #19735 permissions: store only constrained permission profiles @bolinfest
- #19736 permissions: constrain requirements as profiles @bolinfest
- #19737 permissions: derive legacy exec policies at boundaries @bolinfest
- #19779 Add Codex issue digest skill @etraut-openai
- #19792 multi_agent_v2: move thread cap into feature config @jif-oai
- #18982 feat: use git-backed workspace diffs for memory consolidation @jif-oai
- #19809 Allow Phase 2 memory claims after retry exhaustion @jif-oai
- #19812 Avoid rewriting Phase 2 selection on clean workspace @jif-oai
- #19813 nit: one more fix @jif-oai
- #19818 chore: split memories part 1 @jif-oai
- #19510 Hide rewind preview when no user message exists @etraut-openai
- #19618 Persist shell mode commands in prompt history @etraut-openai
- #19709 Render delegated patch approval details @etraut-openai
- #19490 Streamline plugin, apps, and skills handlers @pakrym-oai
- #19762 refactor: make auth loading async @efrazer-oai
- #19854 ci: pin npm staging smoke test to a recent rust-release run @bolinfest
- #19851 ci: migrate Bazel setup away from archived setup-bazelisk @bolinfest
- #19491 Streamline account and command handlers @pakrym-oai
- #19771 fix: filter dynamic deferred tools from model_visible_specs @sayan-oai
- #19863 [codex-analytics] remove ga flag @rhan-oai
- #19865 Cap original-detail image token estimates @fjord-oai
- #19591 Fix filtered thread-list resume regression in TUI @etraut-openai
- #19513 Delay approval prompts while typing @etraut-openai
- #19706 Preserve TUI markdown list spacing after code blocks @etraut-openai
- #19841 permissions: remove cwd special path @bolinfest
- #19492 Streamline thread start handler @pakrym-oai
- #19874 [codex-backend] Prefer state git metadata in filtered thread lists @joeytrasatti-openai
- #19493 Streamline thread mutation handlers @pakrym-oai
- #19862 [codex] Shard exec Bazel integration test @starr-openai
- #18996 Publish Python SDK with Codex-pinned versioning @sdcoffey
- #19494 Streamline thread read handlers @pakrym-oai
- #19839 [codex] Trace cancelled inference streams @cassirer-openai
- #19495 Streamline thread resume and fork handlers @pakrym-oai
- #19497 Streamline turn and realtime handlers @pakrym-oai
- #18372 Show action required in terminal title @canvrno-oai
- #19884 Add MCP app feature flag @mzeng-openai
- #19498 Streamline review and feedback handlers @pakrym-oai
- #19772 permissions: derive config defaults as profiles @bolinfest
- #19836 disallow fileparams metadata for custom mcps @colby-oai
- #19892 Refactor exec-server filesystem API into codex-file-system @miz-openai
- #19452 Stabilize plugin MCP fixture tests @dylan-hurd-oai
- #19481 Remove ghost snapshots @pakrym-oai
- #19773 permissions: require profiles in TUI thread state @bolinfest
- #19917 Allow /statusline and /title slash commands during active turns @canvrno-oai
- #19763 refactor: load agent identity runtime eagerly @efrazer-oai
- #17689 [codex-analytics] include user agent in default headers @marksteinbrick-oai
- #19912 Clarify PR template invitation requirement @etraut-openai
- #19630 Avoid persisting ShutdownComplete after thread shutdown @etraut-openai
- #19774 permissions: make SessionConfigured profile-only @bolinfest
- #19775 permissions: derive snapshot sandbox projections @bolinfest
- #19920 Allow large remote app-server resume responses @etraut-openai
- #19776 permissions: store thread sessions as profiles @bolinfest
- #19899 app-server-protocol: mark permission profiles experimental @bolinfest
- #19933 Add `codex update` command @etraut-openai
- #19914 feat: Cache remote plugin bundles on install @xl-openai
- #19456 Add remote plugin uninstall API @xli-oai
- #19805 Add MultiAgentV2 root and subagent context hints @jif-oai
- #19860 feat: split memories part 2 @jif-oai
- #19961 feat: fix hinting 2 @jif-oai
- #19963 feat: fix hinting 3 @jif-oai
- #19967 Stabilize memory Phase 2 input ordering @jif-oai
- #19970 feat: trigger memories from user turns with cooldown @jif-oai
- #19904 fix: configure AgentIdentity AuthAPI base URL @efrazer-oai
- #19990 feat: skip memory startup when Codex rate limits are low @jif-oai
- #19998 feat: house-keeping memories 1 @jif-oai
- #20000 feat: house-keeping memories 2 @jif-oai
- #19832 Preserve assistant phase for replayed messages @friel-openai
- #19625 Reset TUI keyboard reporting on exit @etraut-openai
- #18593 feat(tui): add configurable keymap support @fcoury-oai
- #19846 [sandbox] Enforce protected workspace metadata paths @evawong-oai
- #20005 feat: house-keeping memories 3 @jif-oai
- #19929 TUI: use cumulative turn duration for worked-for separator @etraut-openai
- #19753 Terminate stdio MCP servers on shutdown to avoid process leaks @etraut-openai
- #19473 Add turn start timestamp to turn metadata @mchen-oai
- #19875 Strip connector provenance metadata from custom MCP tools @colby-oai
- #19764 feat: verify agent identity JWTs with JWKS @efrazer-oai
- #19847 Enforce workspace metadata protections in Seatbelt @evawong-oai
- #19509 Record MCP result telemetry on mcp.tools.call spans @mchen-oai
- #19907 Clarify network approval auto-review prompts @maja-openai
- #19901 feat(tui): suggest plan mode from composer drafts @fcoury-oai
- #19931 Move local /resume cwd filtering into thread/list @canvrno-oai
- #19986 fix(tui): let esc exit empty shell mode @fcoury-oai
- #19895 External agent session support @stefanstokic-oai
- #20002 fix(network-proxy): tighten network proxy bypass defaults @viyatb-oai
- #19900 permissions: add built-in default profiles @bolinfest
- #20045 Fix plan mode nudge test after task completion signature change @canvrno-oai
- #19432 [codex] Add token usage to turn tracing spans @charley-openai
- #20001 fix(network-proxy): harden linux proxy bridge helpers @viyatb-oai
- #19959 Fix log db batch flush flake @dylan-hurd-oai
- #17373 app-server: run initialized rpcs with keyed serialization @euroelessar
- #19708 Load cloud requirements for agent identity @shijie-oai
- #19999 fix(network-proxy): recheck network proxy connect targets @viyatb-oai
- #20047 app-server: allow remote_control runtime feature override @euroelessar
- #20052 Make MultiAgentV2 wait minimum configurable @jif-oai
- #20008 tui: use permission profiles for sandbox state @bolinfest
- #20068 app-server: disable remote control without sqlite @euroelessar
- #20066 [rollout-trace] Include x-request-id in rollout trace. @cassirer-openai
- #19705 Discover hooks bundled with plugins @abhinav-oai
- #18704 /plugins: add marketplace install flow @canvrno-oai
- #20085 fix: don't auto approve git -C ... @owenlin0
- #20088 Fix flaky plugin hook env test @abhinav-oai
- #19995 fix(network-proxy): normalize network proxy host matching @viyatb-oai
- #20010 core tests: submit turns with permission profiles @bolinfest
- #20092 Return None when auth refresh fails @gpeal
- #19919 app-server: notify clients of remote-control status changes @euroelessar
- #20097 Refine Codex issue digest summaries @etraut-openai
- #20011 core tests: build user turns from permission profiles @bolinfest
- #20013 core tests: migrate more turns to permission profiles @bolinfest
- #20015 core tests: configure profiles directly @bolinfest
- #20016 core tests: send model turns with permission profiles @bolinfest
- #20100 Increase plugin hook env test timeout @abhinav-oai
- #20018 core tests: migrate model/personality turns to profiles @bolinfest
- #20021 core tests: migrate view image turns to profiles @bolinfest
- #20024 core tests: migrate safety check turns to profiles @bolinfest
- #20026 core tests: migrate plan item turns to profiles @bolinfest
- #20027 core tests: migrate tools tests to permission profiles @bolinfest
- #20028 core tests: migrate permissions message tests to profiles @bolinfest
- #20030 core tests: migrate exec policy turns to profiles @bolinfest
- #20032 core tests: migrate prompt caching turns to profiles @bolinfest
- #20033 core tests: migrate request permissions tool turns to profiles @bolinfest
- #20034 core tests: migrate zsh-fork permissions to profiles @bolinfest
- #20035 core tests: migrate compact turns to profiles @bolinfest
- #20037 core tests: migrate rmcp turns to profiles @bolinfest
- #20040 core tests: migrate apply patch turns to profiles @bolinfest
- #20041 core tests: migrate hook turns to profiles @bolinfest
- #20072 Support disabling tool suggest for specific tools. @mzeng-openai
- #19949 Support detect and import MCP, Subagents, hooks, commands from external @alexsong-oai
- #19442 feat: disable capabilities by model provider @celia-oai
- #20108 fix: restore live event submit path for apply patch tests @bolinfest
- #19939 Restore TUI working status after steer message is set @canvrno-oai
- #20086 Fix plugin list workspace settings test isolation @canvrno-oai
- #20049 feat: expose provider capability bounds to app server clients @celia-oai
- #20109 feat: update Bedrock Mantle endpoint and GPT-5.4 model ID @celia-oai
- #20106 linux-sandbox: switch helper plumbing to PermissionProfile @bolinfest
- #20112 Soften skill description budget warnings @xl-openai
- #20058 Add environment provider snapshot @starr-openai
- #20133 chore(cli) deprecate --full-auto @dylan-hurd-oai
- #20117 feat(cli): add explicit sandbox permission profiles @viyatb-oai
- #20139 Delete multi_agent_v2 followup_task interrupt parameter @andmis
- #20118 feat(cli): add sandbox profile config controls @viyatb-oai
- #20144 Fix migrated hook path rewriting @alexsong-oai
- #20042 Fix Windows pseudoconsole attribute handling for sandboxed PTY sessions @iceweasel-oai
- #20186 nit: drop old memories things @jif-oai
- #20180 Make multi-agent v2 ignore agents.max_depth @jif-oai
- #20082 Use /goal resume for paused goals @etraut-openai
- #20172 TUI: Remove core protocol dependency [1/7] @etraut-openai
- #19211 Improve Windows process management edge cases @iceweasel-oai
- #20123 [rollout-tracer] Match analysis messages on encrypted id. @cassirer-openai
- #20173 TUI: Remove core protocol dependency [2/7] @etraut-openai
- #20174 TUI: Remove core protocol dependency [3/7] @etraut-openai
- #20228 [codex-backend] Prefer sqlite git info for rollout-path reads @joeytrasatti-openai
- #20141 Add ThreadManager sample crate @pakrym-oai
- #20046 test protocol: lock inter-agent commentary phase @friel-openai
- #20064 Include auto-review rollout in feedback uploads @won-openai
- #20096 feat: Use remote installed plugin cache for skills and MCP @xl-openai
- #19184 fix: handle deferred network proxy denials @viyatb-oai
- #20089 expand the set of core shell env vars for Windows. @iceweasel-oai
- #17088 [codex-analytics] ingest server requests and responses @rhan-oai
- #20091 [tool_suggest] Improve tool_suggest triggering conditions. @mzeng-openai
- #20258 app-server: fix outgoing sender test setup @sayan-oai
- #20050 [app-server] type client response payloads @rhan-oai
- #19966 Require remote plugin detail before uninstall @xli-oai
- #20059 [app-server] centralize client response analytics @rhan-oai
- #19334 Fallback login callback port when default is busy @xli-oai
- #20231 [apps] Add apps MCP path override @adaley-openai
- #20242 docs: discourage `#[async_trait]` and `#[allow(async_fn_in_trait)]` @bolinfest
- #19620 Escape turn metadata headers as ASCII JSON @etraut-openai
- #19537 [mcp] Fix plugin MCP approval policy. @mzeng-openai
- #19229 Add agent graph store interface @rasmusrygaard
- #20243 Add codex-core public API listing @pakrym-oai
- #19435 stop blocking unified_exec on Windows @iceweasel-oai
- #19852 Enforce workspace metadata protections in Linux sandbox @evawong-oai
- #20136 Update Codex login success page UX @rafael-jac
- #20271 chore: increase release build timeout from 60 min to 90 @bolinfest
- #19778 Add hooks/list app-server RPC @abhinav-oai
- #20261 Consume ai-title from external sessions and add end marker @alexsong-oai
- #20284 Import external agent sessions in background @stefanstokic-oai
- #20149 Reduce the surface of collaboration modes @pakrym-oai
- #20282 tui: return from side chat on Ctrl-D @etraut-openai
- #20250 update codex_plugins_beta_setting (from workspace settings) @zamoshchin-openai
- #20080 [codex-analytics] prevent stale guardian events from satisfying reused reviews @rhan-oai
- #20291 app-server: remove dead api version handling from bespoke events @pakrym-oai
- #20304 [plugins] Allow MSFT curated plugins in tool_suggest @mzeng-openai
- #20095 permissions: expose active profile metadata @bolinfest
- #19840 Add persisted hook enablement state @abhinav-oai
- #20343 ci: increase Windows release workflow timeouts @bolinfest