## 新功能
- 在无头环境中增加设备码认证作为独立的备用认证方式。 (#9333)
## 问题修复
- 仅从受信任的文件夹加载配置,并修复了符号链接的 `config.toml` 解析问题。 (#9533, #9445)
- 修复了 Azure 端点的无效输入错误。 (#9387)
- 解决了核心运行时的内存泄漏问题。 (#9543)
- 防止了被中断的对话回合重复执行。 (#9043)
- 修复了 WSL 终端界面图像粘贴的回归问题。 (#9473)
## 文档
- 更新了 MCP 文档链接至最新地址。 (#9490)
- 修正了文档中“多智能体”的命名拼写错误。 (#9542)
- 为协作模式添加了开发者说明。 (#9424)
## 项目事务
- 将 Rust 升级至 1.92 版本,并更新了核心 Rust 依赖。 (#8860, #9465, #9466, #9467, #9468, #9469)
## 更新日志
完整更新日志: https://github.com/openai/codex/compare/rust-v0.87.0...rust-v0.88.0
- #9373 fix: 修复不稳定的测试 @jif-oai
- #9333 [设备认证] 在检测到无头环境时,增加设备码认证作为独立选项。 @mzeng-openai
- #9352 使 `codex exec resume --last` 与 `codex resume --last` 行为一致 @etraut-openai
- #9324 添加 codex cloud 列表功能 @nornagon-openai
- #9332 按对话回合进行状态粘性路由 @aibrahim-oai
- #9364 feat: 工具调用耗时指标 @jif-oai
- #8860 chore: 升级到 Rust 1.92.0 @viyatb-oai
- #9385 feat: 直接 `/fork` 当前会话,而不是打开会话选择器 @apanasenko-oai
- #9247 feat(应用服务器, 核心): 支持按创建时间或更新时间返回会话列表 @owenlin0
- #9330 feat: 在 `/status` 中显示派生自的会话 ID @apanasenko-oai
- #9340 引入协作模式 @aibrahim-oai
- #9328 支持通过配置/API 启用/禁用技能。 @xl-openai
- #9408 为对话回合添加协作模式覆盖选项 @aibrahim-oai
- #9400 fix(codex-api): 将 `invalid_prompt` 视为不可重试错误 @fouad-openai
- #9401 延迟回溯修剪,直到回滚确认 @aibrahim-oai
- #9414 修复 unified_exec::tests::unified_exec_timeouts 测试,使用更独特的匹配值 @ahornby
- #9421 公开协作预设 @aibrahim-oai
- #9422 chore(核心) 创建指令模块 @dylan-hurd-oai
- #9423 chore(指令) 移除未使用的 `SessionMeta.instructions` 字段 @dylan-hurd-oai
- #9424 添加协作模式开发者说明 @aibrahim-oai
- #9425 在搜索中保持斜杠命令的顺序 @aibrahim-oai
- #9059 tui: 允许在回溯预览中向前导航 @slkzgm
- #9443 为协作模式添加测试提示 @aibrahim-oai
- #9457 fix(tui2): 运行 `/mcp` 时,直到其他事件触发刷新后才打印输出 @bolinfest
- #9445 修复了 `config.toml` 的符号链接支持 @etraut-openai
- #9466 chore(依赖): 在 /codex-rs 中将 log 从 0.4.28 升级到 0.4.29 @dependabot
- #9467 chore(依赖): 在 /codex-rs 中将 tokio 从 1.48.0 升级到 1.49.0 @dependabot
- #9468 chore(依赖): 在 /codex-rs 中将 arc-swap 从 1.7.1 升级到 1.8.0 @dependabot
- #9469 chore(依赖): 在 /codex-rs 中将 ctor 从 0.5.0 升级到 0.6.3 @dependabot
- #9465 chore(依赖): 在 /codex-rs 中将 chrono 从 0.4.42 升级到 0.4.43 @dependabot
- #9473 修复了 WSL 中与图像粘贴相关的终端界面回归问题 @etraut-openai
- #9382 feat: 计时器总对话回合指标 @jif-oai
- #9478 feat: 在 `/new` 中关闭所有会话线程 @jif-oai
- #9477 feat: 分离非 TTY 子进程 @jif-oai
- #9479 提示 3 @jif-oai
- #9387 修复 Azure 端点的无效输入错误 @etraut-openai
- #9463 移除未使用的协议协作模式提示 @aibrahim-oai
- #9487 chore: 警告指标 @jif-oai
- #9490 修复了指向 MCP 文档的失效链接 @etraut-openai
- #9461 TUI: 协作模式用户体验 + 启用时始终提交 `UserTurn` @aibrahim-oai
- #9472 Feat: 请求用户输入工具 @shijie-oai
- #9402 根据对话回合处理包含推理的情况 @aibrahim-oai
- #9496 chore: 修复测试版与实验性版本的区分 @jif-oai
- #9495 Feat: 计划模式提示更新 @shijie-oai
- #9451 tui: 当技能弹窗激活时避免 Esc 键中断 @prateek-oai
- #9497 迁移 tui 以使用 UserTurn @aibrahim-oai
- #9427 fix(核心) 在 SessionMeta 中保留 `base_instructions` @dylan-hurd-oai
- #9393 使文本元素在 TUI 输入和历史记录中持久化 @charley-oai
- #9407 fix(tui) 修复用户消息在浅色模式下的背景色问题 @dylan-hurd-oai
- #9525 chore: 协作模式移至实验性功能 @jif-oai
- #9374 nit: 如果没有任务在运行,则不渲染终端交互信息 @jif-oai
- #9529 feat: 记录带有额外标签的计时器 @jif-oai
- #9528 feat: 远程模型的指标 @jif-oai
- #9527 feat: shell 快照指标 @jif-oai
- #9533 仅从受信任的文件夹加载配置 @gt-oai
- #9409 feat: 支持 WebSocket 连接的代理 @apanasenko-oai
- #9507 Tui: 使用协作模式替代模型和努力程度设置 @aibrahim-oai
- #9193 fix: 在非 Windows 操作系统中,`writable_roots` 无法识别家目录符号 @tiffanycitra
- #9542 将特性名称从 'Mult-agents' 修正为 'Multi-agents' @simonw
- #9459 feat(个性) 引入 `model_personality` 配置 @dylan-hurd-oai
- #9543 fix: 内存泄漏问题 @jif-oai
- #9509 修复了配置文件与 profiles 合并时的问题 @etraut-openai
- #9043 fix: 防止重复被中断的对话回合 @swordfish444
- #9553 fix(核心): 恢复会话时不更新文件的修改时间 @owenlin0
- #9552 查找系统 SID 而非硬编码英文字符串。 @iceweasel-oai
- #9314 fix(windows-sandbox): 拒绝可写根目录下的 .git 文件条目 @MaxMiksa
- #9319 fix(windows-sandbox): 解析审计根目录的 PATH 列表条目 @MaxMiksa
- #9547 合并远程模型 @aibrahim-oai
- #9545 添加完整的(非部分的)TextElement 占位符访问器 @charley-oai
- #9532 fix(cli): 为 bin/codex.js 添加执行权限 @zerone0x
- #9162 改进排队消息的 UI 间距 @charley-oai
- #9554 启用远程模型 @aibrahim-oai
- #9558 仅当任务正在工作时才进行队列 @aibrahim-oai
- #8590 fix(核心): 在 Windows 上强制删除需要批准 @hdcodedev
- #9293 [codex-tui] 当终端为 dumb 类型时退出 @jmickey-oai
- #9562 feat(tui2): 添加 /experimental 菜单 @joshka-oai
- #9563 fix: bminor/bash 不再托管于 GitHub,改用 bolinfest/bash @bolinfest
- #9568 在配置信息前显示会话头部 @aibrahim-oai
- #9555 feat: 将 `experimental_instructions_file` 重命名为 `model_instructions_file` @bolinfest
- #9518 提示扩展:保留文本元素 @charley-oai
- #9560 在执行和自定义模式中拒绝“询问用户问题”工具 @charley-oai
- #9575 feat: 添加技能注入计数器指标 @alexsong-oai
- #9578 自动启用 WebSockets 传输的特性 @pakrym-oai
- #9587 通过运行 pnpm 修复 CI @aibrahim-oai
- #9586 对 `just fix` 命令不请求批准 @aibrahim-oai
- #9585 添加请求用户输入覆盖层 @aibrahim-oai
- #9596 修复在记录笔记后,上下浏览问题时的导航问题 @aibrahim-oai
- #9483 feat: 最大线程数配置 @jif-oai
- #9598 feat: 在用户 shell 上显示原始命令 @jif-oai
- #9594 为指标名称 "conversation.turn.count" 添加 "codex." 前缀 @etraut-openai
- #9600 feat: 异步 shell 快照 @jif-oai
- #9602 fix: 优化终端交互时的 TUI 细节 @jif-oai
- #9551 nit: 改进协作模式的 TUI 界面 @jif-oai
## New Features
- Added device-code auth as a standalone fallback in headless environments. (#9333)
## Bug Fixes
- Load configs from trusted folders only and fix symlinked `config.toml` resolution. (#9533, #9445)
- Fixed Azure endpoint invalid input errors. (#9387)
- Resolved a memory leak in core runtime. (#9543)
- Prevented interrupted turns from repeating. (#9043)
- Fixed WSL TUI image paste regression. (#9473)
## Documentation
- Updated MCP documentation link to the current destination. (#9490)
- Corrected a “Multi-agents” naming typo in docs. (#9542)
- Added developer instructions for collaboration modes. (#9424)
## Chores
- Upgraded to Rust 1.92 and refreshed core Rust dependencies. (#8860, #9465, #9466, #9467, #9468, #9469)
## Changelog
Full Changelog: https://github.com/openai/codex/compare/rust-v0.87.0...rust-v0.88.0
- #9373 fix: flaky tests @jif-oai
- #9333 [device-auth] Add device code auth as a standalone option when headless environment is detected. @mzeng-openai
- #9352 Made `codex exec resume --last` consistent with `codex resume --last` @etraut-openai
- #9324 add codex cloud list @nornagon-openai
- #9332 Turn-state sticky routing per turn @aibrahim-oai
- #9364 feat: tool call duration metric @jif-oai
- #8860 chore: upgrade to Rust 1.92.0 @viyatb-oai
- #9385 feat: /fork the current session instead of opening session picker @apanasenko-oai
- #9247 feat(app-server, core): return threads by created_at or updated_at @owenlin0
- #9330 feat: show forked from session id in /status @apanasenko-oai
- #9340 Introduce collaboration modes @aibrahim-oai
- #9328 Support enable/disable skill via config/api. @xl-openai
- #9408 Add collaboration_mode override to turns @aibrahim-oai
- #9400 fix(codex-api): treat invalid_prompt as non-retryable @fouad-openai
- #9401 Defer backtrack trim until rollback confirms @aibrahim-oai
- #9414 fix unified_exec::tests::unified_exec_timeouts to use a more unique match value @ahornby
- #9421 Expose collaboration presets @aibrahim-oai
- #9422 chore(core) Create instructions module @dylan-hurd-oai
- #9423 chore(instructions) Remove unread SessionMeta.instructions field @dylan-hurd-oai
- #9424 Add collaboration developer instructions @aibrahim-oai
- #9425 Preserve slash command order in search @aibrahim-oai
- #9059 tui: allow forward navigation in backtrack preview @slkzgm
- #9443 Add collaboration modes test prompts @aibrahim-oai
- #9457 fix(tui2): running /mcp was not printing any output until another event triggered a flush @bolinfest
- #9445 Fixed symlink support for config.toml @etraut-openai
- #9466 chore(deps): bump log from 0.4.28 to 0.4.29 in /codex-rs @dependabot
- #9467 chore(deps): bump tokio from 1.48.0 to 1.49.0 in /codex-rs @dependabot
- #9468 chore(deps): bump arc-swap from 1.7.1 to 1.8.0 in /codex-rs @dependabot
- #9469 chore(deps): bump ctor from 0.5.0 to 0.6.3 in /codex-rs @dependabot
- #9465 chore(deps): bump chrono from 0.4.42 to 0.4.43 in /codex-rs @dependabot
- #9473 Fixed TUI regression related to image paste in WSL @etraut-openai
- #9382 feat: timer total turn metrics @jif-oai
- #9478 feat: close all threads in `/new` @jif-oai
- #9477 feat: detach non-tty childs @jif-oai
- #9479 prompt 3 @jif-oai
- #9387 Fix invalid input error on Azure endpoint @etraut-openai
- #9463 Remove unused protocol collaboration mode prompts @aibrahim-oai
- #9487 chore: warning metric @jif-oai
- #9490 Fixed stale link to MCP documentation @etraut-openai
- #9461 TUI: collaboration mode UX + always submit `UserTurn` when enabled @aibrahim-oai
- #9472 Feat: request user input tool @shijie-oai
- #9402 Act on reasoning-included per turn @aibrahim-oai
- #9496 chore: fix beta VS experimental @jif-oai
- #9495 Feat: plan mode prompt update @shijie-oai
- #9451 tui: avoid Esc interrupt when skill popup active @prateek-oai
- #9497 Migrate tui to use UserTurn @aibrahim-oai
- #9427 fix(core) Preserve base_instructions in SessionMeta @dylan-hurd-oai
- #9393 Persist text elements through TUI input and history @charley-oai
- #9407 fix(tui) fix user message light mode background @dylan-hurd-oai
- #9525 chore: collab in experimental @jif-oai
- #9374 nit: do not render terminal interactions if no task running @jif-oai
- #9529 feat: record timer with additional tags @jif-oai
- #9528 feat: metrics on remote models @jif-oai
- #9527 feat: metrics on shell snapshot @jif-oai
- #9533 Only load config from trusted folders @gt-oai
- #9409 feat: support proxy for ws connection @apanasenko-oai
- #9507 Tui: use collaboration mode instead of model and effort @aibrahim-oai
- #9193 fix: `writable_roots` doesn't recognize home directory symbol in non-windows OS @tiffanycitra
- #9542 Fix typo in feature name from 'Mult-agents' to 'Multi-agents' @simonw
- #9459 feat(personality) introduce model_personality config @dylan-hurd-oai
- #9543 fix: memory leak issue @jif-oai
- #9509 Fixed config merging issue with profiles @etraut-openai
- #9043 fix: prevent repeating interrupted turns @swordfish444
- #9553 fix(core): don't update the file's mtime on resume @owenlin0
- #9552 lookup system SIDs instead of hardcoding English strings. @iceweasel-oai
- #9314 fix(windows-sandbox): deny .git file entries under writable roots @MaxMiksa
- #9319 fix(windows-sandbox): parse PATH list entries for audit roots @MaxMiksa
- #9547 merge remote models @aibrahim-oai
- #9545 Add total (non-partial) TextElement placeholder accessors @charley-oai
- #9532 fix(cli): add execute permission to bin/codex.js @zerone0x
- #9162 Improve UI spacing for queued messages @charley-oai
- #9554 Enable remote models @aibrahim-oai
- #9558 queue only when task is working @aibrahim-oai
- #8590 fix(core): require approval for force delete on Windows @hdcodedev
- #9293 [codex-tui] exit when terminal is dumb @jmickey-oai
- #9562 feat(tui2): add /experimental menu @joshka-oai
- #9563 fix: bminor/bash is no longer on GitHub so use bolinfest/bash instead @bolinfest
- #9568 Show session header before configuration @aibrahim-oai
- #9555 feat: rename experimental_instructions_file to model_instructions_file @bolinfest
- #9518 Prompt Expansion: Preserve Text Elements @charley-oai
- #9560 Reject ask user question tool in Execute and Custom @charley-oai
- #9575 feat: add skill injected counter metric @alexsong-oai
- #9578 Feature to auto-enable websockets transport @pakrym-oai
- #9587 fix CI by running pnpm @aibrahim-oai
- #9586 don't ask for approval for `just fix` @aibrahim-oai
- #9585 Add request-user-input overlay @aibrahim-oai
- #9596 fix going up and down on questions after writing notes @aibrahim-oai
- #9483 feat: max threads config @jif-oai
- #9598 feat: display raw command on user shell @jif-oai
- #9594 Added "codex." prefix to "conversation.turn.count" metric name @etraut-openai
- #9600 feat: async shell snapshot @jif-oai
- #9602 fix: nit tui on terminal interactions @jif-oai
- #9551 nit: better collab tui @jif-oai