codex cli 在 Windows 沙盒环境中触发权限拒绝的解决方案
- 内容介绍
- 文章标签
- 相关推荐
背景
codex cli在 Windows 沙盒环境(windows.sandbox = "elevated")中,对工作区外的路径没有完整权限(即使加 sandbox_workspace_write.writable_roots 也不行)
[!warning]
配sandbox_mode = "danger-full-access"可以解决,但这无异于脱裤子放屁,不是推荐的工作流
解决方案
简单来说,找到设备名称、codex 沙箱用户的组名、真实路径,加上 acl 权限就行了
举个例子
先找到 codex 沙箱用户的组名
一般来说,组名是 CodexSandboxUsers
如果不确定,可以让 codex 执行 whoami /groups
获取设备名称
设备名称在 系统设置 - 系统 - 关于 - 设备规格 中可以找到,或者在 cli 中执行 hostname 得到
找到要改的路径
uv 是安装到全局路径,然后以硬链接的方式放到项目中的,所以给项目中的虚拟环境改权限是无济于事的
要想找到真实路径,可以执行 fsutil hardlink list "{项目内依赖文件的路径}"
[!tip]-
严格来说,建立硬链接后,真实文件将存在于底层,无论是缓存目录还是虚拟环境文件,都是桌面系统对其的引用,都不算是真实路径。
背景
codex cli在 Windows 沙盒环境(windows.sandbox = "elevated")中,对工作区外的路径没有完整权限(即使加 sandbox_workspace_write.writable_roots 也不行)
[!warning]
配sandbox_mode = "danger-full-access"可以解决,但这无异于脱裤子放屁,不是推荐的工作流
解决方案
简单来说,找到设备名称、codex 沙箱用户的组名、真实路径,加上 acl 权限就行了
举个例子
先找到 codex 沙箱用户的组名
一般来说,组名是 CodexSandboxUsers
如果不确定,可以让 codex 执行 whoami /groups
获取设备名称
设备名称在 系统设置 - 系统 - 关于 - 设备规格 中可以找到,或者在 cli 中执行 hostname 得到
找到要改的路径
uv 是安装到全局路径,然后以硬链接的方式放到项目中的,所以给项目中的虚拟环境改权限是无济于事的
要想找到真实路径,可以执行 fsutil hardlink list "{项目内依赖文件的路径}"
[!tip]-
严格来说,建立硬链接后,真实文件将存在于底层,无论是缓存目录还是虚拟环境文件,都是桌面系统对其的引用,都不算是真实路径。

