元数据
| id | codex-sandbox-setup-error | 收录 | 2026-08-29 |
|---|---|---|---|
| 问题域 | 安全与治理 | 主题分组 | 权限与安全 |
| 适用工具 | codex · 外部工具 | ||
症状
Codex 执行 shell 时报 `helper_unknown_error: setup refresh had errors`;即使用 `workspace_write` 权限,写项目目录下的文件也反复失败;失败后 agent 尝试提权方式执行(需要人工审批),同意后才能继续。常见于新电脑 + 从旧电脑拷贝的目录、或跨机器/跨用户共享目录、WSL UNC 路径。
原因
Codex 启动时会跑一次「setup refresh」:对配置的 write roots 做 ACL/ACE 检查并补写权限,失败则整体报 `setup refresh had errors`(界面显示 helper_unknown_error)。典型触发:
1. 目录 owner 是另一台机器/已删除用户的 SID(旧电脑直接拷贝的文件夹)——当前用户不是 owner,无权修改该目录 ACL → ACE 检查失败;
2. UNC/WSL 路径(`\\wsl.localhost\...`)上 `GetSecurityInfo` 失败(本机实测变体,错误码 1)。
解法
1. **先看沙盒日志定位**(比瞎猜快):`C:\Users\<user>\.codex\.sandbox\sandbox.<date>.log`(旧版路径 `C:\Users\<user>\.codex.sandbox\sandbox.<date>.log`)。搜 `setup refresh had errors` / `write ACE`,能看到具体是哪个路径、什么错误。
2. **改 owner(最常见修复)**:资源管理器 → 目录属性 → 安全 → 高级 → 更改所有者 → 当前用户,勾选「替换子容器和对象的所有者」;命令行等价:`takeown /f <dir> /r /d y`。
3. **补 ACL(owner 正确但仍缺权限时)**:`icacls <dir> /grant <user>:(OI)(CI)F /T`。
4. **恢复验证**:重新开一个 Codex 会话触发 setup refresh,日志出现 `errors=[]` 即恢复——幂等,不需要重装/重置。
验证证据
- 本地日志复现(2026-08-29):本机 `C:\Users\<user>\.codex\.sandbox\sandbox.<date>.log` 完整记录报错链:`write ACE check failed on \\?\UNC\wsl.localhost\Ubuntu\root\<repo>: GetSecurityInfo failed ...: 1` → `setup refresh completed with errors` → `setup error: setup refresh had errors`(即 helper_unknown_error 底层)。
- 恢复验证:同日 18:20 日志 `errors=[]`、`setup binary completed` —— ACL 问题解决后自动恢复,幂等。
- 机制验证(Windows 侧 icacls 实测,临时目录):`icacls ... /deny <user>:(W)` 后写入 → Access denied(与沙盒写失败同机制);`/remove:d` 后写入 → 成功;`takeown /f` 修改 owner 命令可用。
- 实测复现日志(2026-08-29)
来源与证据
素材来源:https://www.cnblogs.com/grey-wolf/p/22743305
验证证据:Evidence details kept locally (2026-08-29)