最近体验了一下 OpenAI 的 Codex CLI,准备在 Windows 上配置它的 sandbox。
本来以为就是正常安装、登录、运行,结果第一步就被 Windows 权限问题卡住了。
启动 Codex 后提示:
Couldn't set up your sandbox with Administrator permissions
You can still use Codex in a non-admin sandbox.
It carries greater risk if prompt injected.大意是:无法使用管理员权限创建 sandbox,可以继续使用普通 sandbox。
我的第一反应是:
那是不是需要管理员运行 Codex?
于是切换到管理员 PowerShell,再次启动:
codex结果出现:
Error: start the Windows daemon from a non-elevated terminal;
shared clients must not inherit administrator privileges这就很奇怪了。
普通用户:
需要管理员权限创建 sandbox管理员:
不能启动 Codex daemon看起来像一个权限死循环。
后来发现:管理员不是用来运行 Codex 的
问题的关键在于理解错了 Codex 的设计。
我原本以为:
Codex 需要管理员权限,所以应该管理员运行。
实际上:
管理员权限只负责初始化 sandbox 环境。
Codex 本身仍然应该以普通用户运行。
流程应该是:
管理员权限
|
| 创建 sandbox
v
sandbox 初始化完成
|
v
普通用户运行 codex而不是:
管理员 PowerShell
|
v
codex手动初始化 sandbox
正常情况下,Codex 会自动请求管理员权限完成初始化。
但是我的情况自动流程失败了。
最后找到 Codex CLI 自带的 sandbox setup 命令:
codex sandbox setup --elevated --current-user注意:
这个命令并没有出现在普通用户看的 Windows 官方使用流程里。
它更多出现在:
CLI help
源码
GitHub issue
里面。
执行方式:
先打开管理员 PowerShell:
codex sandbox setup --elevated --current-user等待初始化完成。
然后关闭管理员窗口。
重新打开普通 PowerShell:
codex这次就正常进入了。
为什么管理员运行 Codex 会失败?
这个错误:
start the Windows daemon from a non-elevated terminal其实已经说明原因了。
Codex 不希望后台 daemon 继承管理员权限。
原因也很好理解:
如果整个 AI agent 都运行在管理员权限下:
文件权限过高
命令执行风险增加
prompt injection 后影响范围更大
所以设计成:
管理员:
帮忙安装隔离环境
普通用户:
日常运行 agent
这次踩坑最大的经验
不要看到 Windows 弹管理员权限,就认为:
“以后都要管理员运行”。
很多开发工具都是类似设计:
安装阶段需要管理员
运行阶段不需要管理员
Codex 的 sandbox 也是这样。
一个小疑问:为什么官方文档没写这个命令?
后来查了一下:
codex sandbox setup --elevated --current-user 确实存在。
但是它不是普通用户流程中的推荐入口。
官方希望用户走:
codex
↓
自动请求管理员权限
↓
完成 sandbox setup只有自动流程失败时,才需要手动执行。
所以如果你只是正常安装,大概率看不到这个命令。
最后的正确流程
Windows 下配置 Codex sandbox:
第一次:
管理员 PowerShell:
codex sandbox setup --elevated --current-user之后:
普通 PowerShell:
codex不要:
# 管理员窗口
codex否则会遇到:
shared clients must not inherit administrator privileges这次问题最大的收获不是记住一个命令,而是理解了 Codex Windows sandbox 的权限模型:
管理员负责搭环境,普通用户负责使用。
不要把两个角色混在一起。