## 新功能
- 新增了通过特性门控的实验性 JavaScript REPL 运行时(`js_repl`),可在工具调用间保持状态,并支持运行时路径覆盖。(#10674)
- 在协议、后端客户端和 TUI 状态界面中增加了对多个并发速率限制的支持。(#11260)
- 重新引入了应用服务器 WebSocket 传输层,采用分离的入站/出站架构,并支持连接感知的线程恢复订阅。(#11370, #11474)
- 在 TUI 中增加了内存管理斜杠命令(`/m_update`, `/m_drop`),并扩展了内存读取/指标的基础设施。(#11569, #11459, #11593)
- 在 ChatGPT 连接器处理中启用了 Apps SDK 应用。(#11486)
- 提升了 Linux 和 Windows 上的沙箱能力,并引入了新的 `ReadOnlyAccess` 策略形式以实现可配置的只读访问。(#11381, #11341, #11387)
## 错误修复
- 修复了 WebSocket 增量输出的重复问题,阻止了在 `response.completed` 后的追加操作,并将 `response.incomplete` 视为错误路径。(#11383, #11402, #11558)
- 通过在空闲时持续处理 ping 操作并抑制快速重连期间的首个重试错误噪音,提高了 WebSocket 会话稳定性。(#11413, #11548)
- 通过在线程列表时删除缺失的 rollout 文件并清理陈旧的数据库元数据,修复了陈旧的线程条目问题。(#11572)
- 通过增加粘贴突发时间容忍度,修复了 Windows 终端(尤其是 VS Code 集成终端)中多行粘贴的可靠性问题。(#9348)
- 修复了合并部分速率限制更新时 `limit_name` 的错误继承问题。(#11557)
- 将文件监视器的去抖时间从 1 秒增加到 10 秒,减少了活动编辑期间重复的技能解析错误噪音。(#11494)
## 文档
- 添加了 JS REPL 的文档以及启用和配置该功能的配置/模式指南。(#10674)
- 更新了应用服务器 README 中关于 WebSocket 传输层的文档。(#11370)
## 项目维护
- 将 `codex-common` 拆分为更聚焦的 `codex-utils-*` 包,以简化 Rust 工作区组件间的依赖边界。(#11422)
- 提高了 Windows 和 musl 目标的 Rust 发布流水线吞吐量和可靠性,包括并行 Windows 构建和 musl 链接修复。(#11488, #11500, #11556)
- 通过排除重复的 `cargo-timing.html` 工件,防止了 GitHub 发布资产上传冲突。(#11564)
## 更新日志
完整更新日志:https://github.com/openai/codex/compare/rust-v0.99.0...rust-v0.100.0
- #11383 不在增量 WebSocket 连接中重新发送输出项 @pakrym-oai
- #11246 项目维护:在 rollout 会话中持久化 turn_id 并使 turn_id 基于 UUID @celia-oai
- #11260 功能:支持多个速率限制 @xl-openai
- #11412 tui:在 /debug-config 中显示非文件层内容 @bolinfest
- #11405 从 `codex-core` 移除 `test-support` 特性,替换为显式测试开关 @bolinfest
- #11428 修复:不稳定的测试 @jif-oai
- #11429 功能:改进线程列表 @jif-oai
- #11422 功能:将 codex-common 拆分为更小的工具包 @bolinfest
- #11439 功能:新的内存提示 @jif-oai
- #11305 缓存云端需求 @gt-oai
- #11452 细节:增加最大原始内存 @jif-oai
- #11455 功能:合并后关闭内存代理 @jif-oai
- #11454 修复:内存的可选模式 @jif-oai
- #11449 功能:为第二阶段内存设置策略 @jif-oai
- #11420 项目维护:重命名 disable_websockets -> websockets_disabled @sayan-oai
- #11402 不在 response.completed 后尝试追加 @pakrym-oai
- #11462 清理:内存 rollout 记录器 @jif-oai
- #11381 功能(核心):将 Linux bubblewrap 沙箱提升为实验性 @viyatb-oai
- #11389 从 `codex-core` 提取 `codex-config` @bolinfest
- #11370 重新应用“添加支持 WebSocket 的应用服务器传输层” @maxj-oai
- #11470 功能:如果 Constrained<WebSearchMode> 不支持 Disabled 则触发 panic @bolinfest
- #11475 功能:从 CI 中移除“cargo 检查各个包” @bolinfest
- #11459 功能:内存读取路径 @jif-oai
- #11471 项目维护:清理 memories 中的 rollout 提取 @jif-oai
- #9348 修复(tui):在 Windows 上将粘贴突发字符间隔增加到 30 毫秒 @yuvrajangadsingh
- #11464 项目维护:子代理永不请求批准 @jif-oai
- #11414 将反馈链接转换为链接 @pakrym-oai
- #11480 项目维护:更新内存提示 @jif-oai
- #11485 修复:受约束的导入 @owenlin0
- #11341 提升 Windows 沙箱 @iceweasel-oai
- #10674 添加特性门控的自由格式 js_repl 核心运行时 @fjord-oai
- #11419 重构:codex 应用服务器 ThreadState @maxj-oai
- #11413 保持 ping 操作 @pakrym-oai
- #11488 功能:使用更强大的机器构建 Windows 版本 @bolinfest
- #11479 细节:内存截断 @jif-oai
- #11494 将文件监视器去抖持续时间从 1 秒增加到 10 秒 @etraut-openai
- #11335 添加 AfterToolUse 钩子 @gt-oai
- #11500 功能:并行构建 Windows 支持二进制文件 @bolinfest
- #11290 项目维护(tui)简化 /status 权限 @dylan-hurd-oai
- #11503 使 codex-sdk 依赖于 openai/codex @pakrym-oai
- #11474 应用服务器:线程恢复订阅 @maxj-oai
- #11277 添加了允许 os.cpus 的 seatbelt 策略规则 @etraut-openai
- #11506 项目维护:向 ws 客户端注入来源/驻留标头 @apanasenko-oai
- #11497 在恢复/分叉/回滚/任务启动时保留之前的模型 @aibrahim-oai
- #11513 功能:尝试修复我在资源解析逻辑中遇到的实际错误 @bolinfest
- #11509 将 search_tool 功能整合到 apps 中 @apanasenko-oai
- #11388 将模型上限改为服务器过载 @willwang-openai
- #11504 采样前使用先前模型上下文进行压缩 @aibrahim-oai
- #11516 将自动压缩限制限制在上下文窗口内 @aibrahim-oai
- #11520 模型切换后更新上下文窗口 @aibrahim-oai
- #11519 在 tui 中使用别名 @pakrym-oai
- #11522 修复:向 bazel.yml 添加 --test_verbose_timeout_warnings @bolinfest
- #11526 修复:移除错误的 Cargo.lock 文件 @bolinfest
- #11521 测试(应用服务器):通过使用文件支持的 MCP OAuth 凭据稳定 app/list 线程特性标志测试 @bolinfest
- #11387 功能:使沙箱读访问可通过 `ReadOnlyAccess` 配置 @bolinfest
- #11486 [应用] 允许 Apps SDK 应用。 @mzeng-openai
- #11532 修复编译 @sayan-oai
- #11531 让 codex 自我测试 @pakrym-oai
- #11540 ci:从 Rust 发布工作流中移除 actions/cache @bolinfest
- #11542 ci(Windows):在 rust-release-windows 中对 zstd 使用 DotSlash @bolinfest
- #11498 构建(linux-sandbox):在 Linux 上始终编译附带的 bubblewrap;移除 CODEX_BWRAP_ENABLE_FFI @viyatb-oai
- #11545 修复:使 project_doc 技能渲染测试具有确定性 @bolinfest
- #11543 ci:在 Rust CI 和发布工作流中捕获 cargo 时间 @bolinfest
- #11539 将 rmcp 升级到 0.15 @gpeal
- #11548 隐藏第一个 WebSocket 重试 @pakrym-oai
- #11551 向模型缓存添加日志 @aibrahim-oai
- #11556 修复 musl 链接和发布资产上传中的 rust-release 失败问题 @bolinfest
- #11558 处理 response.incomplete @pakrym-oai
- #11557 修复:停止继承速率限制的 limit_name @xl-openai
- #11564 rust-release:从发布资产中排除 cargo-timing.html @bolinfest
- #11546 修复:更新内存写入提示 @zuxin-oai
- #11448 修复测试不稳定问题 @gt-oai
- #11569 功能:内存斜杠命令 @jif-oai
- #11573 修复不稳定的 pre_sampling_compact 切换测试 @jif-oai
- #11571 功能:内存丢弃 cot @jif-oai
- #11572 确保 list_threads 删除陈旧的 rollout 文件 @jif-oai
- #11575 修复:数据库相关内存问题 @jif-oai
- #11581 细节:升级数据库版本 @jif-oai
- #11577 功能:使用模型信息进行截断 @jif-oai
- #11590 项目维护:清理常量 @jif-oai
- #11593 功能:向 memories 添加指标 @jif-oai
- #11579 修复 macOS 上的配置测试 @gt-oai
- #11600 功能:添加清理器以编辑机密信息 @jif-oai
- #11609 项目维护:移除对动态工具的 MCP 验证 @jif-oai
## New Features
- Added an experimental, feature-gated JavaScript REPL runtime (`js_repl`) that can persist state across tool calls, with optional runtime path overrides. (#10674)
- Added support for multiple simultaneous rate limits across the protocol, backend client, and TUI status surfaces. (#11260)
- Reintroduced app-server websocket transport with a split inbound/outbound architecture, plus connection-aware thread resume subscriptions. (#11370, #11474)
- Added memory management slash commands in the TUI (`/m_update`, `/m_drop`) and expanded memory-read/metrics plumbing. (#11569, #11459, #11593)
- Enabled Apps SDK apps in ChatGPT connector handling. (#11486)
- Promoted sandbox capabilities on both Linux and Windows, and introduced a new `ReadOnlyAccess` policy shape for configurable read access. (#11381, #11341, #11387)
## Bug Fixes
- Fixed websocket incremental output duplication, prevented appends after `response.completed`, and treated `response.incomplete` as an error path. (#11383, #11402, #11558)
- Improved websocket session stability by continuing ping handling when idle and suppressing noisy first-retry errors during quick reconnects. (#11413, #11548)
- Fixed stale thread entries by dropping missing rollout files and cleaning stale DB metadata during thread listing. (#11572)
- Fixed Windows multi-line paste reliability in terminals (especially VS Code integrated terminal) by increasing paste burst timing tolerance. (#9348)
- Fixed incorrect inheritance of `limit_name` when merging partial rate-limit updates. (#11557)
- Reduced repeated skill parse-error spam during active edits by increasing file-watcher debounce from 1s to 10s. (#11494)
## Documentation
- Added JS REPL documentation and config/schema guidance for enabling and configuring the feature. (#10674)
- Updated app-server websocket transport documentation in the app-server README. (#11370)
## Chores
- Split `codex-common` into focused `codex-utils-*` crates to simplify dependency boundaries across Rust workspace components. (#11422)
- Improved Rust release pipeline throughput and reliability for Windows and musl targets, including parallel Windows builds and musl link fixes. (#11488, #11500, #11556)
- Prevented GitHub release asset upload collisions by excluding duplicate `cargo-timing.html` artifacts. (#11564)
## Changelog
Full Changelog: https://github.com/openai/codex/compare/rust-v0.99.0...rust-v0.100.0
- #11383 Do not resend output items in incremental websockets connections @pakrym-oai
- #11246 chore: persist turn_id in rollout session and make turn_id uuid based @celia-oai
- #11260 feat: support multiple rate limits @xl-openai
- #11412 tui: show non-file layer content in /debug-config @bolinfest
- #11405 Remove `test-support` feature from `codex-core` and replace it with explicit test toggles @bolinfest
- #11428 fix: flaky test @jif-oai
- #11429 feat: improve thread listing @jif-oai
- #11422 feat: split codex-common into smaller utils crates @bolinfest
- #11439 feat: new memory prompts @jif-oai
- #11305 Cache cloud requirements @gt-oai
- #11452 nit: increase max raw memories @jif-oai
- #11455 feat: close mem agent after consolidation @jif-oai
- #11454 fix: optional schema of memories @jif-oai
- #11449 feat: set policy for phase 2 memory @jif-oai
- #11420 chore: rename disable_websockets -> websockets_disabled @sayan-oai
- #11402 Do not attempt to append after response.completed @pakrym-oai
- #11462 clean: memory rollout recorder @jif-oai
- #11381 feat(core): promote Linux bubblewrap sandbox to Experimental @viyatb-oai
- #11389 Extract `codex-config` from `codex-core` @bolinfest
- #11370 Reapply "Add app-server transport layer with websocket support" @maxj-oai
- #11470 feat: panic if Constrained<WebSearchMode> does not support Disabled @bolinfest
- #11475 feat: remove "cargo check individual crates" from CI @bolinfest
- #11459 feat: memory read path @jif-oai
- #11471 chore: clean rollout extraction in memories @jif-oai
- #9348 fix(tui): increase paste burst char interval on Windows to 30ms @yuvrajangadsingh
- #11464 chore: sub-agent never ask for approval @jif-oai
- #11414 Linkify feedback link @pakrym-oai
- #11480 chore: update mem prompt @jif-oai
- #11485 fix: Constrained import @owenlin0
- #11341 Promote Windows Sandbox @iceweasel-oai
- #10674 Add feature-gated freeform js_repl core runtime @fjord-oai
- #11419 refactor: codex app-server ThreadState @maxj-oai
- #11413 Pump pings @pakrym-oai
- #11488 feat: use more powerful machines for building Windows releases @bolinfest
- #11479 nit: memory truncation @jif-oai
- #11494 Increased file watcher debounce duration from 1s to 10s @etraut-openai
- #11335 Add AfterToolUse hook @gt-oai
- #11500 feat: build windows support binaries in parallel @bolinfest
- #11290 chore(tui) Simplify /status Permissions @dylan-hurd-oai
- #11503 Make codex-sdk depend on openai/codex @pakrym-oai
- #11474 app-server: thread resume subscriptions @maxj-oai
- #11277 Added seatbelt policy rule to allow os.cpus @etraut-openai
- #11506 chore: inject originator/residency headers to ws client @apanasenko-oai
- #11497 Hydrate previous model across resume/fork/rollback/task start @aibrahim-oai
- #11513 feat: try to fix bugs I saw in the wild in the resource parsing logic @bolinfest
- #11509 Consolidate search_tool feature into apps @apanasenko-oai
- #11388 change model cap to server overload @willwang-openai
- #11504 Pre-sampling compact with previous model context @aibrahim-oai
- #11516 Clamp auto-compact limit to context window @aibrahim-oai
- #11520 Update context window after model switch @aibrahim-oai
- #11519 Use slug in tui @pakrym-oai
- #11522 fix: add --test_verbose_timeout_warnings to bazel.yml @bolinfest
- #11526 fix: remove errant Cargo.lock files @bolinfest
- #11521 test(app-server): stabilize app/list thread feature-flag test by using file-backed MCP OAuth creds @bolinfest
- #11387 feat: make sandbox read access configurable with `ReadOnlyAccess` @bolinfest
- #11486 [apps] Allow Apps SDK apps. @mzeng-openai
- #11532 fix compilation @sayan-oai
- #11531 Teach codex to test itself @pakrym-oai
- #11540 ci: remove actions/cache from rust release workflows @bolinfest
- #11542 ci(windows): use DotSlash for zstd in rust-release-windows @bolinfest
- #11498 build(linux-sandbox): always compile vendored bubblewrap on Linux; remove CODEX_BWRAP_ENABLE_FFI @viyatb-oai
- #11545 fix: make project_doc skill-render tests deterministic @bolinfest
- #11543 ci: capture cargo timings in Rust CI and release workflows @bolinfest
- #11539 Bump rmcp to 0.15 @gpeal
- #11548 Hide the first websocket retry @pakrym-oai
- #11551 Add logs to model cache @aibrahim-oai
- #11556 Fix rust-release failures in musl linking and release asset upload @bolinfest
- #11558 Handle response.incomplete @pakrym-oai
- #11557 fix: stop inheriting rate-limit limit_name @xl-openai
- #11564 rust-release: exclude cargo-timing.html from release assets @bolinfest
- #11546 fix: update memory writing prompt @zuxin-oai
- #11448 Fix test flake @gt-oai
- #11569 feat: mem slash commands @jif-oai
- #11573 Fix flaky pre_sampling_compact switch test @jif-oai
- #11571 feat: mem drop cot @jif-oai
- #11572 Ensure list_threads drops stale rollout files @jif-oai
- #11575 fix: db stuff mem @jif-oai
- #11581 nit: upgrade DB version @jif-oai
- #11577 feat: truncate with model infos @jif-oai
- #11590 chore: clean consts @jif-oai
- #11593 feat: metrics to memories @jif-oai
- #11579 Fix config test on macOS @gt-oai
- #11600 feat: add sanitizer to redact secrets @jif-oai
- #11609 chore: drop mcp validation of dynamic tools @jif-oai