Skip to content

执行策略快速入门

Codex 可以在运行 shell 命令之前强制执行您自己的基于规则的执行策略。策略位于 ~/.codex/rules 下的 .rules 文件中。

如何创建和编辑规则

TUI 交互

Codex CLI 将在命令导致提示时提供将命令列入白名单的选项。

当您批准并将命令列入白名单时,列入白名单的命令在当前和后续会话中不再需要您的权限。

在幕后,当您批准并将命令列入白名单时,codex 将编辑 ~/.codex/rules/default.rules

编辑 .rules 文件

  1. 创建策略目录:mkdir -p ~/.codex/rules
  2. 在该文件夹中添加一个或多个 .rules 文件。Codex 在启动时自动加载该文件夹中的每个 .rules 文件。
  3. 编写 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 标记的列表,从左到右进行评估;将标记包装在嵌套列表中以表示替代项(例如,匹配 pushfetch)。
  • decision 设置严重程度;当多个规则匹配时,Codex 选择最严格的决定(forbidden > prompt > allow)。
  • matchnot_match 充当可选的单元测试。Codex 在加载策略时验证它们,所以如果示例有意外的行为,您会得到反馈。

在此示例规则中,如果 Codex 想运行前缀为 git pushgit 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 可能会在将来有破坏性的变化。