Skip to content

fix(worker): 阻止沙盒 Codex 触发启动自更新#433

Open
xiongz-c wants to merge 1 commit into
masterfrom
codex/sandbox-codex-update-guard
Open

fix(worker): 阻止沙盒 Codex 触发启动自更新#433
xiongz-c wants to merge 1 commit into
masterfrom
codex/sandbox-codex-update-guard

Conversation

@xiongz-c

Copy link
Copy Markdown
Collaborator

背景 / 动机

文件沙盒会把子进程对 HOME 的大部分写入放进会话级临时 overlay。Codex 在启动升级菜单中执行 npm 全局更新时,可能只更新该临时层;会话重启后仍从宿主旧版本启动,升级提示随之重复出现。

同时,Codex 的升级菜单和普通输入框都会使用 光标。原 readyPattern 匹配任意 ,会把 › 1. Update now 误判为输入框已就绪,并把排队中的首条消息写入升级菜单。

改动

  • 为 CLI adapter 启动参数增加 disableStartupUpdateCheck 能力。
  • worker 仅在文件沙盒实际生效时开启该能力;Codex adapter 注入官方配置 check_for_update_on_startup=false,把 CLI 升级留给宿主环境处理。
  • 收紧 Codex readyPattern:继续识别普通 composer 和状态栏,但排除 › N. 编号菜单项。
  • 覆盖 fresh、resume、非沙盒默认行为和升级菜单误判的回归测试。

默认值 / 兼容性依据

  • 仅文件沙盒中的 Codex 会关闭启动更新检查。
  • 非沙盒 Codex 保持原有更新检查行为。
  • 其他 CLI 不实现该可选能力,启动参数不变。
  • 不修改现有会话数据、Codex 配置文件或宿主 CLI 安装。

测试覆盖

  • Codex fresh 启动时,配置覆盖以 -c 参数注入。
  • Codex resume 时,配置覆盖位于 resume 子命令和 session id 之间。
  • 非沙盒启动不注入更新配置。
  • 普通 composer / 状态栏仍可识别,› 1. Update now› 2. Skip 不再被识别为 ready。

验证

  • pnpm vitest run test/cli-adapters.test.ts test/idle-detector.test.ts:297 passed。
  • pnpm build:通过。
  • git diff --check:通过。
  • 额外运行全量 unit suite:7697 passed;test/sandbox.test.ts 有 2 个未改动路径上的 macOS 基线失败,分别是 symlink dataDir 清理和 opaque dir 落盘用例。

影响范围

  • 影响:文件沙盒中的 Codex 启动和 ready 检测。
  • 不影响:非沙盒 Codex、其他 CLI、宿主升级流程、现有配置与会话数据。

@xiongz-c xiongz-c requested a review from deepcoldy as a code owner July 10, 2026 12:49
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant