## 新功能
- TUI 现在为围栏代码块和差异内容提供语法高亮,新增带实时预览的 `/theme` 主题选择器,并为浅色和深色终端使用更优的、感知主题的差异颜色。(#11447, #12581)
- 您现在可以通过按住空格键来录制和转录音频输入,直接在 TUI 中口述提示词。(#3381)
- 多代理工作流更易于运行和跟踪:`spawn_agents_on_csv` 可通过内置进度/ETA 从 CSV 分发任务,子代理也更易于跟踪,支持昵称、更清爽的选择器以及可见的子线程审批提示。(#10935, #12320, #12327, #12332, #12570, #12767)
- TUI 新增便捷命令:`/copy` 复制最新的完整助手回复,而 `/clear` 和 `Ctrl-L` 可清除屏幕但不丢失线程上下文,其中 `/clear` 还能开启全新的聊天。(#12444, #12520, #12613, #12628)
- 审批控制更灵活:Codex 现在可为命令请求额外的沙盒权限,您可以自动拒绝特定类型的审批提示,而无需完全关闭审批功能。(#11871, #12087)
- 应用服务器客户端可对线程进行更多操作:`thread/list` 可按标题搜索,线程状态在读取/列出响应和通知中公开,`thread/resume` 内联返回最新回合,使重连损失更小。(#11776, #11786, #12578)
## Bug 修复
- TUI 中换行的长链接仍可点击,这也修复了几个视图中相关的裁剪和布局问题。(#12067)
- 修复了多个 TUI 交互边缘情况:在更多终端中排队消息编辑现在可用,在最终答案仍流式传输时按回车不再导致后续提示卡住,审批对话框现在能响应正确的请求 ID。(#12240, #12569, #12746)
- 聊天组合器中的 `@` 解析更可靠,因此像 `npx -y @scope/pkg@latest` 这样的命令不再意外打开文件选择器或阻止提交。(#12643)
- 应用服务器 WebSocket 处理更稳健:线程监听器在断开后仍存活,Ctrl-C 在重启前会等待进行中的回合,发送 `permessage-deflate` 的 WebSocket 客户端现在可以成功连接。(#12373, #12517, #12629)
- Linux 沙盒化命令现在获得一个最小的 `/dev`,修复了需要熵或其他标准设备节点的工具中的失败。(#12081)
- `js_repl` 现在能更清晰地报告未捕获的内核故障,之后干净地恢复,并能正确附加嵌套工具调用中的 `view_image` 结果。(#12636, #12725)
## 文档
- 添加了包含 Bugcrowd 报告指南的公开安全策略。(#12193)
- 更新了安装和本地工作流文档,以使用 `cargo install --locked cargo-nextest`,并避免常规的 `--all-features` 构建,除非您特别需要完整的特性覆盖。(#12377, #12429)
## 更新日志
完整更新日志:https://github.com/openai/codex/compare/rust-v0.104.0...rust-v0.105.0
- #12071 如果启用功能则使用 V2 WebSocket @pakrym-oai
- #12052 feat(core): zsh exec bridge @owenlin0
- #12072 为代理消息线程项添加消息阶段 @mousseau-oai
- #12077 移除了 configtoml 中的 experimental_mode @won-openai
- #12036 codex-api: 实时 WebSocket session.create + 类型化的入站事件 @aibrahim-oai
- #12073 添加模型可见上下文布局快照测试 @charley-oai
- #12096 更新问题标签脚本以包含安全检查标签 @etraut-openai
- #11944 [js_repl] js_repl 可指定 node 模块解析路径 @aaronl-openai
- #11798 fix: 受限读取:/System 对 macOS 平台权限过于宽松… @leoshimo-oai
- #12015 在 TUI 配置中启用默认状态行指示器 @jif-oai
- #12124 feat: 阶段 1 和阶段 2 端到端延迟 @jif-oai
- #12121 feat: 阶段 2 使用情况 @jif-oai
- #12120 feat: 内存使用指标 @jif-oai
- #12133 feat: 验证代理配置文件路径 @jif-oai
- #12137 nit: 更改阶段 1 的模型 @jif-oai
- #12069 在 js_repl_tools_only 模式下停止过滤模型工具 @fjord-oai
- #12135 feat: 更好的 rollout summaries 别名 @jif-oai
- #12157 在审查委托期间禁用协作工具 @jif-oai
- #11802 修复了应用服务器令牌刷新逻辑中的一个漏洞 @etraut-openai
- #12105 fix: 文件监视器 @jif-oai
- #12167 memories: 将 rollout summary 别名上限提高到 60 @zuxin-oai
- #12177 js_repl: 规范化 node_modules 边界检查的路径 @fjord-oai
- #12025 应用服务器对 Windows 沙盒设置的支持。 @iceweasel-oai
- #12187 fix: 移除引用 @zuxin-oai
- #12180 [apps] 临时应用块。 @mzeng-openai
- #11786 应用服务器:通过读取/列出和通知公开加载的线程状态 @euroelessar
- #12038 state: 为线程和无线程进程日志强制执行 10 MiB 日志上限 @charley-oai
- #12203 稳定应用服务器分离的审查和运行恢复测试 @charley-oai
- #12211 [apps] 更新应用允许列表。 @mzeng-openai
- #12081 fix(linux-sandbox): 在 bwrap 沙盒中挂载 /dev @viyatb-oai
- #12164 更新功能标志通知的文档链接 @etraut-openai
- #12231 调整 memories rollout 默认值 @jif-oai
- #12152 feat: 子代理注入 @jif-oai
- #12233 feat: 添加 shell 快照失败原因 @jif-oai
- #12193 docs: 添加 codex 安全策略 @viyatb-oai
- #12228 feat: 添加可配置的 write_stdin 超时 @jif-oai
- #11787 为自定义服务器调整 MCP 工具审批处理 @colby-oai
- #12179 将上一回合上下文跟踪移至 ContextManager 历史记录 @charley-oai
- #12244 从历史记录加载时恢复阶段 @mousseau-oai
- #12101 客户端模型信息覆盖 @sayan-oai
- #12251 添加可配置的代理生成深度 @jif-oai
- #12254 chore: 为所有人增加堆栈大小 @jif-oai
- #12250 feat: 在 ue 上无超时模式 @jif-oai
- #12255 chore: 合并 McpConnectionManager 的 new() 和 initialize() @bolinfest
- #12256 还原“feat: 在 ue 上无超时模式” @jif-oai
- #12258 撤销 Bazel 测试 hack 的堆栈大小 @charley-oai
- #12264 修复 flaky 测试 @jif-oai
- #12087 feat: 添加具有细粒度提示拒绝控制的 Reject 审批策略 @bolinfest
- #12253 在指标发射期间跳过已移除的功能 @jif-oai
- #12265 澄清 Plan 模式中 cumulative proposed_plan 的行为 @charley-oai
- #12266 应用服务器测试:通过优雅的子进程关闭减少间歇性的 nextest LEAK @bolinfest
- #11953 通过 client_metadata 的 ws 回合元数据 @pash-openai
- #11778 fix(bazel): 在 memories 中用 include_str! 替换 askama 模板 @rupurt
- #11382 为 MCP 登录添加可配置的 MCP OAuth 回调 URL @dkumar-oai
- #12274 [bazel] 修复 proc_macro_dep 库 @zbarsky-openai
- #12054 feat(config): 添加 permissions.network 代理配置连接 @viyatb-oai
- #12269 tests(thread_resume): 在恢复错误路径测试中中断进行中的回合 @bolinfest
- #12009 更新 pnpm 版本以修复 cve-2026-24842 @mjr-openai
- #12080 skill-creator: 在前置元数据解析中延迟加载 PyYAML @xl-openai
- #12271 tests: 集中进行中回合清理助手 @bolinfest
- #12286 应用服务器:修复 flaky list_apps_returns_connectors_with_accessible_flags 测试 @bolinfest
- #11776 应用服务器:改进线程恢复重新加入流程 @maxj-oai
- #11822 [apps] 将应用工具缓存存储在磁盘上以减少启动时间。 @mzeng-openai
- #12221 memories: 向原始 memories 添加 rollout_summary_file 头并调整提示 @zuxin-oai
- #12309 设置 memories 阶段推理努力常量 @jif-oai
- #12315 chore: nit explorer @jif-oai
- #12320 feat: 为子代理添加昵称 @jif-oai
- #12328 chore: 更好的代理名称 @jif-oai
- #12326 为阶段 2 禁用协作 @jif-oai
- #12267 将 MCP 服务器上下文添加到 otel tool_result 日志 @colby-oai
- #12327 feat: TUI 中子代理更清爽的界面 @jif-oai
- #12332 feat: TUI 中更好的代理选择器 @jif-oai
- #12344 feat: 如果不必要则不排队阶段 2 @jif-oai
- #12340 fix: 简化 macOS 睡眠抑制剂 FFI @yvolovich-cyber
- #12347 fix: 线程/读取时的昵称 @jif-oai
- #12294 在回合之间重用连接 @pakrym-oai
- #12287 应用服务器:添加 JSON 跟踪日志 @maxj-oai
- #12140 重构网络审批以按主机/协议/端口范围 @viyatb-oai
- #12300 js_repl: 在语法中阻止包装的有效负载前缀 @fjord-oai
- #11368 fix(network-proxy): 添加 unix socket allow-all 并更新 seatbelt 规则 @viyatb-oai
- #12275 js_repl: 移除 codex.state 助手引用 @fjord-oai
- #12289 CODEX-4927: 在浏览器中显示本地登录权限拒绝 @daniel-oai
- #12205 ci(bazel): 在远程镜像中从 node-version.txt 安装 Node @fjord-oai
- #12312 feat: 添加配置 `allow_login_shell` @jif-oai
- #12086 [apps] 实现应用配置。 @mzeng-openai
- #12353 fix(core): 要求对破坏性 MCP 工具调用进行审批 @colby-oai
- #12218 应用服务器:强化断开连接清理路径 @maxj-oai
- #12291 核心测试:在审查套件中使用密封的模拟服务器 @viyatb-oai
- #12374 [apps] 强制执行简单的 logo url 格式。 @mzeng-openai
- #12377 docs: 安装 cargo-nextest 时使用 --locked @derekf-oai
- #12370 添加将额外文件附加到反馈的能力 @pakrym-oai
- #12306 将 sanitizer 移入 codex-secrets @viyatb-oai
- #12379 阐明 model_catalog_json 仅在启动时应用 @sayan-oai
- #12307 切换模式时显示模型/推理提示 @charley-oai
- #12403 [apps] 修复网关 url。 @mzeng-openai
- #12240 fix(tui): 在某些终端中排队消息编辑快捷键无法访问 @fcoury
- #12405 [apps] 提高 MCP 工具调用超时。 @mzeng-openai
- #12406 fix: 在 JSON 模式生成中明确列出名称冲突 @bolinfest
- #12301 为 Thread 对象添加字段,用于给定线程的最新重命名集 @natea-oai
- #12268 将实时 API 连接到核心 @aibrahim-oai
- #12415 fix(nix): 在 linux 构建中包含 libcap 依赖 @rgodha24
- #12416 添加实验性实时 WebSocket URL 覆盖 @aibrahim-oai
- #12303 改进 Plan 模式推理选择流程 @charley-oai
- #12418 添加实验性实时 WebSocket 覆盖和文本镜像 @aibrahim-oai
- #12381 fix: 解决 thread_resume_rejoins_running_thread_even_with_override_mismatch 中的 flakiness @bolinfest
- #12422 feat: 在 App Server v2 中直接使用 OAI Responses API MessagePhase 类型 @bolinfest
- #12376 test(app-server): 在 turn_start 测试中等待 turn/completed @yvolovich-cyber
- #12408 在 JSON 模式代码生成中忽略 v1 @bolinfest
- #12314 fix(core) 过滤不匹配的前缀规则 @dylan-hurd-oai
- #12429 feat: 不鼓励使用 --all-features 标志 @bolinfest
- #12252 修复压缩上下文重新注入和模型基线 @charley-oai
- #12427 chore: 将配置诊断移出 codex-core @bolinfest
- #12430 折叠等待的消息 @pakrym-oai
- #12432 chore: 移除 codex-core 公共协议/shell 重新导出 @bolinfest
- #12434 fix: codex-arg0 不再依赖 codex-core @bolinfest
- #12435 refactor(core): 将嵌入式系统技能移入 codex-skills crate @bolinfest
- #12440 chore: 删除空的 codex-rs/code 文件 @bolinfest
- #12441 删除 AggregatedStream @pakrym-oai
- #11293 feat(linux-sandbox): 通过 TCP-UDS-TCP 网桥实现仅代理出口 @viyatb-oai
- #12410 配置文件级别的 model_catalog_json 覆盖 @sayan-oai
- #12420 防止重放运行时事件强制活动状态 @etraut-openai
- #12428 如果可用则首选 v2 WebSocket @pakrym-oai
- #12419 改进图像的令牌使用估算 @etraut-openai
- #12474 fix: 使技能加载器测试在 ~/.agents 技能下密封 @bolinfest
- #12473 core: 在 TurnContext 中保留约束的审批/沙盒策略 @bolinfest
- #12067 fix(tui): 在所有 TUI 视图中保持 URL 可点击性 @fcoury
- #12469 将入站实时文本路由到回合开始或控制 @aibrahim-oai
- #12479 还原“将入站实时文本路由到回合开始或控制” @aibrahim-oai
- #12475 fix: 使实时对话 flakiness 测试顺序不敏感 @bolinfest
- #12476 使 shell 检测测试
对 Nix shell 路径
## New Features
- The TUI now syntax-highlights fenced code blocks and diffs, adds a `/theme` picker with live preview, and uses better theme-aware diff colors for light and dark terminals. (#11447, #12581)
- You can now dictate prompts by holding the spacebar to record and transcribe voice input directly in the TUI. (#3381)
- Multi-agent workflows are easier to run and track: `spawn_agents_on_csv` can fan out work from a CSV with built-in progress/ETA, and sub-agents are easier to follow with nicknames, a cleaner picker, and visible child-thread approval prompts. (#10935, #12320, #12327, #12332, #12570, #12767)
- The TUI picked up new convenience commands: `/copy` copies the latest complete assistant reply, while `/clear` and `Ctrl-L` clear the screen without losing thread context, with `/clear` also able to start a fresh chat. (#12444, #12520, #12613, #12628)
- Approval controls are more flexible: Codex can now ask for extra sandbox permissions for a command, and you can auto-reject specific approval prompt types without turning approvals off entirely. (#11871, #12087)
- App-server clients can do more with threads: `thread/list` can search by title, thread status is exposed in read/list responses and notifications, and `thread/resume` returns the latest turn inline so reconnects are less lossy. (#11776, #11786, #12578)
## Bug Fixes
- Long links in the TUI stay clickable when wrapped, which also fixes related clipping and layout issues in several views. (#12067)
- Several TUI interaction edge cases were fixed: queued-message editing now works in more terminals, follow-up prompts no longer get stuck if you press Enter while a final answer is still streaming, and approval dialogs now respond with the correct request id. (#12240, #12569, #12746)
- `@` parsing in the chat composer is more reliable, so commands like `npx -y @scope/pkg@latest` no longer accidentally open the file picker or block submission. (#12643)
- App-server websocket handling is more robust: thread listeners survive disconnects, Ctrl-C waits for in-flight turns before restarting, and websocket clients that send `permessage-deflate` can connect successfully. (#12373, #12517, #12629)
- Linux sandboxed commands now get a minimal `/dev`, fixing failures in tools that need entropy or other standard device nodes. (#12081)
- `js_repl` now reports uncaught kernel failures more clearly, recovers cleanly afterward, and correctly attaches `view_image` results from nested tool calls. (#12636, #12725)
## Documentation
- Added a public security policy with Bugcrowd reporting guidance. (#12193)
- Updated install and local workflow docs to use `cargo install --locked cargo-nextest` and to avoid routine `--all-features` builds unless you specifically need full feature coverage. (#12377, #12429)
## Changelog
Full Changelog: https://github.com/openai/codex/compare/rust-v0.104.0...rust-v0.105.0
- #12071 Use V2 websockets if feature enabled @pakrym-oai
- #12052 feat(core): zsh exec bridge @owenlin0
- #12072 Add message phase to agent message thread item @mousseau-oai
- #12077 got rid of experimental_mode for configtoml @won-openai
- #12036 codex-api: realtime websocket session.create + typed inbound events @aibrahim-oai
- #12073 Add model-visible context layout snapshot tests @charley-oai
- #12096 Updated issue labeler script to include safety-check label @etraut-openai
- #11944 [js_repl] paths for node module resolution can be specified for js_repl @aaronl-openai
- #11798 fix: Restricted Read: /System is too permissive for macOS platform de… @leoshimo-oai
- #12015 Enable default status line indicators in TUI config @jif-oai
- #12124 feat: phase 1 and phase 2 e2e latencies @jif-oai
- #12121 feat: phase 2 usage @jif-oai
- #12120 feat: memory usage metrics @jif-oai
- #12133 feat: validate agent config file paths @jif-oai
- #12137 nit: change model for phase 1 @jif-oai
- #12069 Stop filtering model tools in js_repl_tools_only mode @fjord-oai
- #12135 feat: better slug for rollout summaries @jif-oai
- #12157 Disable collab tools during review delegation @jif-oai
- #11802 Fixed a hole in token refresh logic for app server @etraut-openai
- #12105 fix: file watcher @jif-oai
- #12167 memories: bump rollout summary slug cap to 60 @zuxin-oai
- #12177 js_repl: canonicalize paths for node_modules boundary checks @fjord-oai
- #12025 app-server support for Windows sandbox setup. @iceweasel-oai
- #12187 fix: Remove citation @zuxin-oai
- #12180 [apps] Temporary app block. @mzeng-openai
- #11786 app-server: expose loaded thread status via read/list and notifications @euroelessar
- #12038 state: enforce 10 MiB log caps for thread and threadless process logs @charley-oai
- #12203 Stabilize app-server detached review and running-resume tests @charley-oai
- #12211 [apps] Update apps allowlist. @mzeng-openai
- #12081 fix(linux-sandbox): mount /dev in bwrap sandbox @viyatb-oai
- #12164 Update docs links for feature flag notice @etraut-openai
- #12231 Adjust memories rollout defaults @jif-oai
- #12152 feat: sub-agent injection @jif-oai
- #12233 feat: add shell snapshot failure reason @jif-oai
- #12193 docs: add codex security policy @viyatb-oai
- #12228 feat: add configurable write_stdin timeout @jif-oai
- #11787 Adjust MCP tool approval handling for custom servers @colby-oai
- #12179 Move previous turn context tracking into ContextManager history @charley-oai
- #12244 Restore phase when loading from history @mousseau-oai
- #12101 client side modelinfo overrides @sayan-oai
- #12251 Add configurable agent spawn depth @jif-oai
- #12254 chore: increase stack size for everyone @jif-oai
- #12250 feat: no timeout mode on ue @jif-oai
- #12255 chore: consolidate new() and initialize() for McpConnectionManager @bolinfest
- #12256 Revert "feat: no timeout mode on ue" @jif-oai
- #12258 Undo stack size Bazel test hack @charley-oai
- #12264 Fix flaky test @jif-oai
- #12087 feat: add Reject approval policy with granular prompt rejection controls @bolinfest
- #12253 Skip removed features during metrics emission @jif-oai
- #12265 Clarify cumulative proposed_plan behavior in Plan mode @charley-oai
- #12266 app-server tests: reduce intermittent nextest LEAK via graceful child shutdown @bolinfest
- #11953 ws turn metadata via client_metadata @pash-openai
- #11778 fix(bazel): replace askama templates with include_str! in memories @rupurt
- #11382 Add configurable MCP OAuth callback URL for MCP login @dkumar-oai
- #12274 [bazel] Fix proc_macro_dep libs @zbarsky-openai
- #12054 feat(config): add permissions.network proxy config wiring @viyatb-oai
- #12269 tests(thread_resume): interrupt running turns in resume error-path tests @bolinfest
- #12009 Update pnpm versions to fix cve-2026-24842 @mjr-openai
- #12080 skill-creator: lazy-load PyYAML in frontmatter parsing @xl-openai
- #12271 tests: centralize in-flight turn cleanup helper @bolinfest
- #12286 app-server: fix flaky list_apps_returns_connectors_with_accessible_flags test @bolinfest
- #11776 app-server: improve thread resume rejoin flow @maxj-oai
- #11822 [apps] Store apps tool cache in disk to reduce startup time. @mzeng-openai
- #12221 memories: add rollout_summary_file header to raw memories and tune prompts @zuxin-oai
- #12309 Set memories phase reasoning effort constants @jif-oai
- #12315 chore: nit explorer @jif-oai
- #12320 feat: add nick name to sub-agents @jif-oai
- #12328 chore: better agent names @jif-oai
- #12326 disable collab for phase 2 @jif-oai
- #12267 Add MCP server context to otel tool_result logs @colby-oai
- #12327 feat: cleaner TUI for sub-agents @jif-oai
- #12332 feat: better agent picker in TUI @jif-oai
- #12344 feat: do not enqueue phase 2 if not necessary @jif-oai
- #12340 fix: simplify macOS sleep inhibitor FFI @yvolovich-cyber
- #12347 fix: nick name at thread/read @jif-oai
- #12294 Reuse connection between turns @pakrym-oai
- #12287 app-server: add JSON tracing logs @maxj-oai
- #12140 Refactor network approvals to host/protocol/port scope @viyatb-oai
- #12300 js_repl: block wrapped payload prefixes in grammar @fjord-oai
- #11368 fix(network-proxy): add unix socket allow-all and update seatbelt rules @viyatb-oai
- #12275 js_repl: remove codex.state helper references @fjord-oai
- #12289 CODEX-4927: Surface local login entitlement denials in browser @daniel-oai
- #12205 ci(bazel): install Node from node-version.txt in remote image @fjord-oai
- #12312 feat: add config `allow_login_shell` @jif-oai
- #12086 [apps] Implement apps configs. @mzeng-openai
- #12353 fix(core): require approval for destructive MCP tool calls @colby-oai
- #12218 app-server: harden disconnect cleanup paths @maxj-oai
- #12291 core tests: use hermetic mock server in review suite @viyatb-oai
- #12374 [apps] Enforce simple logo url format. @mzeng-openai
- #12377 docs: use --locked when installing cargo-nextest @derekf-oai
- #12370 Add ability to attach extra files to feedback @pakrym-oai
- #12306 Move sanitizer into codex-secrets @viyatb-oai
- #12379 clarify model_catalog_json only applied on startup @sayan-oai
- #12307 Show model/reasoning hint when switching modes @charley-oai
- #12403 [apps] Fix gateway url. @mzeng-openai
- #12240 fix(tui): queued-message edit shortcut unreachable in some terminals @fcoury
- #12405 [apps] Bump MCP tool call timeout. @mzeng-openai
- #12406 fix: explicitly list name collisions in JSON schema generation @bolinfest
- #12301 Add field to Thread object for the latest rename set for a given thread @natea-oai
- #12268 Wire realtime api to core @aibrahim-oai
- #12415 fix(nix): include libcap dependency on linux builds @rgodha24
- #12416 Add experimental realtime websocket URL override @aibrahim-oai
- #12303 Improve Plan mode reasoning selection flow @charley-oai
- #12418 Add experimental realtime websocket overrides and text mirroring @aibrahim-oai
- #12381 fix: address flakiness in thread_resume_rejoins_running_thread_even_with_override_mismatch @bolinfest
- #12422 feat: use OAI Responses API MessagePhase type directly in App Server v2 @bolinfest
- #12376 test(app-server): wait for turn/completed in turn_start tests @yvolovich-cyber
- #12408 ignore v1 in JSON schema codegen @bolinfest
- #12314 fix(core) Filter non-matching prefix rules @dylan-hurd-oai
- #12429 feat: discourage the use of the --all-features flag @bolinfest
- #12252 Fix compaction context reinjection and model baselines @charley-oai
- #12427 chore: move config diagnostics out of codex-core @bolinfest
- #12430 Collapse waited message @pakrym-oai
- #12432 chore: remove codex-core public protocol/shell re-exports @bolinfest
- #12434 fix: codex-arg0 no longer depends on codex-core @bolinfest
- #12435 refactor(core): move embedded system skills into codex-skills crate @bolinfest
- #12440 chore: delete empty codex-rs/code file @bolinfest
- #12441 Delete AggregatedStream @pakrym-oai
- #11293 feat(linux-sandbox): implement proxy-only egress via TCP-UDS-TCP bridge @viyatb-oai
- #12410 profile-level model_catalog_json overrie @sayan-oai
- #12420 Prevent replayed runtime events from forcing active status @etraut-openai
- #12428 Prefer v2 websockets if available @pakrym-oai
- #12419 Improve token usage estimate for images @etraut-openai
- #12474 fix: make skills loader tests hermetic with ~/.agents skills @bolinfest
- #12473 core: preserve constrained approval/sandbox policies in TurnContext @bolinfest
- #12067 fix(tui): preserve URL clickability across all TUI views @fcoury
- #12469 Route inbound realtime text into turn start or steer @aibrahim-oai
- #12479 Revert "Route inbound realtime text into turn start or steer" @aibrahim-oai
- #12475 fix: make realtime conversation flake test order-insensitive @bolinfest
- #12476 Make shell detection tests
robust to Nix shell paths @rupurt
- #11447 feat(tui): syntax highlighting via syntect with theme picker @fcoury
- #12373 app-server: retain thread listener across disconnects @maxj-oai
- #12444 feat(tui) /clear @won-openai
- #12485 fix(core) exec policy parsing 3 @dylan-hurd-oai
- #12423 Send events to realtime api @aibrahim-oai
- #12364 feat: monitor role @jif-oai
- #12313 Handle orphan exec ends without clobbering active exploring cell @jif-oai
- #12455 feat(tui): support Alt-d delete-forward-word @dougEfresh
- #12480 Revert "Revert "Route inbound realtime text into turn start or steer"" @aibrahim-oai
- #12509 Sort themes case-insensitively in picker @etraut-openai
- #12511 Add C# syntax option to highlight selections @etraut-openai
- #12513 Add PR babysitting skill for this repo @etraut-openai
- #12518 test: vendor zsh fork via DotSlash and stabilize zsh-fork tests @bolinfest
- #12553 Return image content from view_image @pakrym-oai
- #12555 refactor: decouple MCP policy construction from escalate server @bolinfest
- #12559 chore: nit name @jif-oai
- #12562 chore: awaiter @jif-oai
- #12565 chore: add doc to memories @jif-oai
- #12568 chore: phase 2 name @jif-oai
- #12571 fix: TUI constraint @jif-oai
- #12570 feat: keep dead agents in the agent picker @jif-oai
- #12575 feat: agent nick names to model @jif-oai
- #12500 feat: add uuid helper @jif-oai
- #12580 chore: rename memory feature flag @jif-oai
- #12541 Allow exec resume to parse output-last-message flag after command @etraut-openai
- #12579 feat: role metrics multi-agent @jif-oai
- #12141 feat: land sqlite @jif-oai
- #12576 chore: better bazel test logs @jif-oai
- #12028 remove feature flag collaboration modes @aibrahim-oai
- #12520 tweaked /clear to support clear + new chat, also fix minor bug for macos terminal @won-openai
- #12556 refactor: normalize unix module layout for exec-server and shell-escalation @bolinfest
- #12421 app-server: box request dispatch future to reduce stack pressure @charley-oai
- #12528 chore(deps): bump libc from 0.2.180 to 0.2.182 in /codex-rs @dependabot
- #12529 chore(deps): bump syn from 2.0.114 to 2.0.117 in /codex-rs @dependabot
- #12583 Use Arc-based ToolCtx in tool runtimes @bolinfest
- #12540 fix: add ellipsis for truncated status indicator @sayan-oai
- #12609 fix(tui): recover on owned wrap mapping mismatch @fcoury
- #12569 fix(tui): queue steer Enter while final answer is still streaming to prevent dead state @guidedways
- #12530 chore(deps): bump owo-colors from 4.2.3 to 4.3.0 in /codex-rs @dependabot
- #12549 fix: show command running in background terminal in details under status indicator @sayan-oai
- #3381 voice transcription @nornagon-openai
- #12619 Handle realtime spawn_transcript delegation @aibrahim-oai
- #11408 Update models.json @github-actions
- #12629 app-server: fix connecting via websockets with `Sec-WebSocket-Extensions: permessage-deflate` @JaviSoto
- #12632 refactor: delete exec-server and move execve wrapper into shell-escalation @bolinfest
- #12638 refactor: decouple shell-escalation from codex-core @bolinfest
- #12357 feat(core): persist network approvals in execpolicy @viyatb-oai
- #12648 fix(exec) Patch resume test race condition @dylan-hurd-oai
- #12049 Support implicit skill invocation analytics events @alexsong-oai
- #12647 Avoid `AbsolutePathBuf::parent()` panic under `EMFILE` by skipping re-absolutization @etraut-openai
- #12633 Add skill approval event/response @pakrym-oai
- #12650 chore: rm hardcoded PRESETS list @sayan-oai
- #12652 Simplify skill tracking @pakrym-oai
- #12653 memories: tighten consolidation prompt schema and indexing guidance @zuxin-oai
- #12667 feat: mutli agents persist config overrides @jif-oai
- #12635 memories: tighten memory lookup guidance and citation requirements @zuxin-oai
- #12663 fix: replay after `/agent` @jif-oai
- #11258 Send warmup request @pakrym-oai
- #12688 feat: use process group to kill the PTY @jif-oai
- #11871 feat(core) Introduce Feature::RequestPermissions @dylan-hurd-oai
- #12628 ctrl-L (clears terminal but does not start a new chat) @won-openai
- #9859 feat(network-proxy): add MITM support and gate limited-mode CONNECT @viyatb-oai
- #12649 feat: run zsh fork shell tool via shell-escalation @bolinfest
- #12643 Fix @mention token parsing in chat composer @etraut-openai
- #12658 fix: also try matching namespaced prefix for modelinfo candidate @sayan-oai
- #11766 feat(sleep-inhibitor): add Linux and Windows idle-sleep prevention @yvolovich-cyber
- #12581 feat(tui): add theme-aware diff backgrounds with capability-graded palettes @fcoury
- #12697 Ensure shell command skills trigger approval @pakrym-oai
- #12707 refactor: remove unused seatbelt unix socket arg @bolinfest
- #12687 Add TUI realtime conversation mode @aibrahim-oai
- #12639 Honor `project_root_markers` when discovering `AGENTS.md` @etraut-openai
- #10935 Agent jobs (spawn_agents_on_csv) + progress UI @daveaitel-openai
- #12700 revert audio scope @nornagon-openai
- #12711 fix: temp remove citation @zuxin-oai
- #12613 feat(tui) - /copy @won-openai
- #12695 Add app-server event tracing @pakrym-oai
- #12717 Raise image byte estimate for compaction token accounting @etraut-openai
- #12724 fix: make EscalateServer public and remove shell escalation wrappers @bolinfest
- #12517 codex-rs/app-server: graceful websocket restart on Ctrl-C @maxj-oai
- #12636 fix(js_repl): surface uncaught kernel errors and reset cleanly @fjord-oai
- #12729 fix: clarify the value of SkillMetadata.path @bolinfest
- #12719 feat: pass helper executable paths via Arg0DispatchPaths @bolinfest
- #12720 add AWS_LC_SYS_NO_JITTER_ENTROPY=1 to release musl build step to unblock releases @sayan-oai
- #12725 Fix js_repl view_image attachments in nested tool calls @fjord-oai
- #12656 chore: change catalog mode to enum @sayan-oai
- #12731 chore: migrate additional permissions to PermissionProfile @celia-oai
- #12407 tests(js_repl): stabilize CI runtime test execution @fjord-oai
- #12737 feat: add experimental additionalPermissions to v2 command execution approval requests @celia-oai
- #12372 feat: update Docker image digest to reflect #12205 @fjord-oai
- #12746 fix: chatwidget was not honoring approval_id for an ExecApprovalRequestEvent @bolinfest
- #12185 tests(js_repl): remove node-related skip paths from js_repl tests @fjord-oai
- #12358 feat(ui): add network approval persistence plumbing @viyatb-oai
- #12730 feat: zsh-fork forces scripts/**/* for skills to trigger a prompt @bolinfest
- #12750 fix: keep shell escalation exec paths absolute @bolinfest
- #12753 Surface skill permission profiles in zsh-fork exec approvals @celia-oai
- #12319 feat: add service name to app-server @jif-oai
- #12692 fix: flaky test due to second-resolution for thread ordering @jif-oai
- #12578 feat: add search term to thread list @jif-oai
- #12660 Support external agent config detect and import @alexsong-oai
- #12756 feat: record whether a skill script is approved for the session @bolinfest
- #12767 Display pending child-thread approvals in TUI @jif-oai
- #12768 feat: add large stack test macro @jif-oai
- #12666 feat: adding stream parser @jif-oai
- #12761 feat: record memory usage @jif-oai
- #12772 nit: migration @jif-oai
- #12352 otel: add host.name resource attribute to logs/traces via gethostname @mcgrew-oai
- #12770 chore: unify max depth parameter @jif-oai
- #12787 feat: fix sqlite home @jif-oai