如何在 OpenAI Codex 中仅将指定命令加入允许列表?
可以使用命令前缀规则
支持 Rules 的本地 Codex 可以通过 prefix_rule() 将指定命令前缀加入允许列表。设置 decision = "allow" 后,匹配的命令可在沙箱外运行,无需再次确认。该功能目前标为实验性,具体支持情况需要结合所用客户端和版本判断。官方 Rules 文档
这不等于允许所有命令:规则只覆盖匹配的命令,其他命令仍按现有沙箱和审批策略处理。未匹配的命令也不一定都会弹窗,因为部分操作本来就能在沙箱内执行。沙箱权限和审批策略分别控制访问范围和授权行为。Windows 沙箱说明
在 Windows 上添加规则
以下步骤适用于 Codex 原生运行于 Windows、使用默认配置目录的情况。如果实际运行在 WSL 中,应修改 WSL 环境中的配置。
- 在用户目录下创建或打开
.codex\rules\default.rules,通常对应C:\Users\<用户名>\.codex\rules\default.rules。 - 保留已有内容,追加需要允许的规则。
- 保存文件并重启 Codex。
例如,只希望免确认运行 git status,可以添加:
prefix_rule(
pattern = ["git", "status"],
decision = "allow",
match = ["git status", "git status --short"],
not_match = ["git reset --hard"],
)
文件使用 Starlark 语法。match 和 not_match 是用于检查规则的示例,不是额外的允许或禁止列表。如果 CLI 的授权界面提供将命令加入允许列表的选项,也可以在那里保存规则。官方文档说明,规则会写入用户级的 ~/.codex/rules/default.rules。规则文件与保存方式
检查规则是否匹配
如果安装的 Codex CLI 支持该子命令,可以在 PowerShell 中检查:
codex execpolicy check --pretty --rules "$env:USERPROFILE\.codex\rules\default.rules" -- git status
该命令会输出规则判断结果和匹配信息,不会执行这里的 git status。它可以验证指定规则文件的匹配结果,但仍需在实际会话中确认运行时是否加载了同一配置,以及是否存在其他限制。规则检查命令
加入允许列表后为什么仍会询问
对照授权提示中的实际命令,检查以下几点:
- 前缀不同:
git status与git -C C:\repo status的参数顺序不同,后者不匹配上述规则。 - 配置目录不同:原生 Windows、WSL 或自定义配置目录可能使用不同的规则文件。
- 存在更严格的规则:多个规则同时匹配时,优先级为
forbidden > prompt > allow,用户级允许规则不能覆盖更严格的限制。 - 调用形式不同:命令可能经过 shell 包装,或包含其他操作,需要按实际调用检查匹配结果。规则匹配说明
前缀匹配会覆盖后续参数。例如,["git", "status"] 也匹配 git status --short。应按具体子命令设置规则,避免直接允许整个 powershell、cmd 或脚本解释器,否则授权范围会远大于预期。
原问题未提供 Codex 客户端类型、版本和反复请求批准的具体命令,因此无法仅凭 Windows 11 25H2 Pro 判断重复授权的原因。
备注:内容仅供参考。
