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 可能會在將來有破壞性的變化。