钩子事件由 11 个增加到 13 个:新增 PreModelRequest 与 PostModelRequest,包住每次模型请求(含重试),只观察不控制,输出不能否决请求或改写上下文。同周插件钩子的审批改为绑定插件包内容哈希,脚本变更后需重新审批。
OpenAI
稳定演进Codex
操作系统级沙箱、审批边界与协议化内核
成熟的开源编码 Agent,95% 以上代码为 Rust。codex-core 承载 Session / Turn 生命周期、工具执行、沙箱与审批,CLI、IDE 与 App Server 共享同一套协议。
语言 / 许可
Rust · Apache-2.0
跟踪分支
main
跟踪 commit
4beea50e26dd
核实日期
2026-08-24
核心主张
编码 Harness 的价值不只是生成代码,而是让长任务在真实仓库、受限权限和可验证反馈中安全推进。
公开仓库高频发布,自带 CHANGELOG.md 与官方 changelog 页,约每周一次。
对照列
Codex 在每个设计问题上的选择
周报点名
原格写 trigger_turn 为假的消息只在收件方下次运行时读到。新增默认关闭的 wake_on_agent_messages:开启后这类消息到达已结束的根会话时会开一个新回合,沿用上一回合的上下文;被打断的会话、Plan 模式和子代理不自动唤醒。
W39 新增的 instant_interrupt 改为默认开启;code_mode_interrupt 标为稳定并默认开启,打断回合会终止活动的 code-mode cell 与嵌套工具调用,会话中已存的值保留。
新增默认关闭的 retain_client_tool_outputs:调用方标记 retain 的工具输出在远端压缩 v2 与换新窗口时整条保留,紧急裁剪停在它前面,与既有保留内容共用 64000 token 预算,超出时整条丢弃而不截断。
新增默认关闭的 incremental_tools:Responses Lite 首次发送完整工具目录,之后只追加新增或变化的定义,删除工具用开发者通知表示,已发送的请求前缀不变。
回合级授权与严格审查状态改为挂在发起请求的回合上,后台 code-mode cell 跨回合继续运行时不会丢掉授权,也不会借用新回合的权限;会话级授权仍跨回合共享。
仅排队的 Agent 消息在会话卸载后保留在内存信箱,向已卸载的 Agent 发消息不再触发重新加载;消息顺序跨卸载与重新加载保持,Agent 被移除或所在的树关闭时丢弃。
新增默认关闭的 instant_interrupt:用户输入到达时中断请求准备、流式响应与重试退避,code-mode 的 exec/wait 先交回 cell 编号而不停止执行;被抢占后重置 WebSocket 续接,下一次请求发全量历史。原格描述的是跨进程恢复,这是回合内抢占的补充。
AgentMessageBoard 接口新增内存后端(临时会话、同树共享)与远程 HTTP 客户端,消息面板的存储位置变为可替换;另加 defer_mailbox_preemption,让 Agent 消息等到下一次请求再送达,而不是在推理或评论边界打断采样。
Guardian 审查证据(用户限制、已验证答案)现在独立于压缩/重启存在:恢复与远端压缩时解析所选 reviewer 的兼容性哈希,不兼容或未知时保留旧 transcript,兼容压缩后才失效绑定旧证据策略的待处理审查。本格此前描述的「倒序找压缩检查点、只重放尾巴」的恢复机制,现在多了一条并行规则——审查证据的保留窗口可以比常规历史重放窗口更长。
新增 model_post_turn_compact_threshold_percent 配置项,在最终响应之后、上下文占用达到配置百分比时触发一次性压缩(#46541),有输入待处理、回合被取消或开启 token 预算模式时跳过,审查者(approval reviewers)角色也跳过以免拖慢审批完成。本格此前的三条并行摘要路径(本地摘要/远端摘要/直接换窗口)之外,新增了一个与压缩策略本身解耦的「何时触发」开关。
钩子拿到的设置口径变了:#45248 之后,前置/后置工具钩子与权限请求钩子接收的是实际发出该次调用那一步的模型、推理强度与审查标志,而非回合开始时的设置,hook_runtime.rs 与 turn_metadata.rs 同步改写。本格此前只描述挂载点在哪里,未涉及挂载点看到的设置归属于哪一层。
新增能力协商门控的 MCP 用户验证(openai/userVerification 经 elicitation/create 处理),但在 Codex 内刻意保持未启用:收到请求即取消,待 app-server 与 UI 就绪后再开。
会话与托管 worktree 绑定:TUI 可浏览仓库配置池中的检出、按归属元数据恢复对应线程;worktree 切换拆为多阶段,各自在新的事件循环轮次执行。
压缩不再使已有的 Guardian 授权失效:授权挂在独立的「宿主用户消息修订号」上,压缩与内部上下文注入不推进该修订号。本格此前只描述压缩对上下文的影响,未涉及它对授权状态的副作用。
两处变化:授权有效性与对话历史解耦;Guardian 分类转为异步,Node REPL 首次 js 执行不等分类直接放行,后续按正常策略审查。
「Preserve developer instruction annotations in subagent forks」(#40297) 直接触及本格引用的 AgentRoleOverrides.developer_instructions 继承语义。
官方来源
相关章节