執行策略快速入門
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 可能會在將來有破壞性的變化。