执行策略快速入门
Codex 可以在运行 shell 命令之前强制执行您自己的基于规则的执行策略。策略位于 ~/.codex/rules 下的 .rules 文件中。
如何创建和编辑规则
TUI 交互
Codex CLI 将在命令导致提示时提供将命令列入白名单的选项。
当您批准并将命令列入白名单时,列入白名单的命令在当前和后续会话中不再需要您的权限。
在幕后,当您批准并将命令列入白名单时,codex 将编辑 ~/.codex/rules/default.rules。
编辑 .rules 文件
- 创建策略目录:
mkdir -p ~/.codex/rules。 - 在该文件夹中添加一个或多个
.rules文件。Codex 在启动时自动加载该文件夹中的每个.rules文件。 - 编写
prefix_rule条目来描述您想要允许、提示或阻止的命令:
python
prefix_rule(
pattern = ["git", ["push", "fetch"]],
decision = "prompt", # allow | prompt | forbidden
match = [["git", "push", "origin", "main"]], # 必须匹配的示例
not_match = [["git", "status"]], # 必须不匹配的示例
)pattern是 shell 标记的列表,从左到右进行评估;将标记包装在嵌套列表中以表示替代项(例如,匹配push和fetch)。decision设置严重程度;当多个规则匹配时,Codex 选择最严格的决定(forbidden > prompt > allow)。match和not_match充当可选的单元测试。Codex 在加载策略时验证它们,所以如果示例有意外的行为,您会得到反馈。
在此示例规则中,如果 Codex 想运行前缀为 git push 或 git fetch 的命令,它将首先要求用户批准。
预览决定
使用 codex execpolicy check 子命令在保存规则之前预览决定(有关语法详情,请参见 codex-execpolicy README):
shell
codex execpolicy check --rules ~/.codex/rules/default.rules git push origin main传递多个 --rules 标志来测试多个文件如何合并,并使用 --pretty 来获取格式化的 JSON 输出。有关可用语法的更详细的演练,请参见 codex-rs/execpolicy README。
规则匹配时的示例输出:
json
{
"matchedRules": [
{
"prefixRuleMatch": {
"matchedPrefix": ["git", "push"],
"decision": "prompt"
}
}
],
"decision": "prompt"
}当没有规则匹配时,matchedRules 是一个空数组,decision 被省略。
json
{
"matchedRules": []
}状态
execpolicy 命令仍在预览中。API 可能会在将来有破坏性的变化。