以下の内容はhttps://nikkie-ftnext.hatenablog.com/entry/codex-cli-rules-learning-allow-script-wrap-commandsより取得しました。


作業をお願いした Codex CLI が都度コマンドの許可を求めるのを見た僕は、スクリプトにまとめてそれだけを Rules で許可した

はじめに

七尾百合子さん、お誕生日 328日目 おめでとうございます! nikkieです。

決まり切った手順の作業を私の代わりに Codex CLI に任せてみての学びです。

目次

Agent Development Kit のバージョンごとのテーブル定義を Codex CLI にまとめさせよう

以下の裏話になります。

gpt-5.2-codex に作業させて用意したのがこちらのリポジトリです。

手順書はこちら:
https://github.com/ftnext/adk-python-db-schema-history/blob/e57497d499f56e2e1dee42978618cb8bb3c119c7/AGENTS.md#procedure

  1. DBのイメージをdocker run
  2. uvxで Agent Development Kit のサーバ起動
  3. curllocalhost にリクエスト
  4. DBに作成されたテーブルを dump
  5. テーブル定義をリポジトリにコミット
  6. サーバを止める(lsofでポートで動いてるプロセス確認 -> kill
  7. DBのイメージを止める(docker rm

手順を遂行しながら許可を求めてくる Codex に都度許可を出していたのですが、ルールに書けることに気づきました。
さらに手順をスクリプトにまとめることで、ルールが単純になり、より安全にできました。

Codex のルール

今回は Git 管理しているディレクトリなので、Codex CLI は workspace-write という sandbox モードで開くそうです1

危険なコマンドは sandbox 外で実行してよいか人間に許可を求めてきます。
これを人間が都度許可するのは、安全ですが、つきっきりになってしまいます。
Codex CLI にも Claude Code のような permission 設定が来ていました(実験的との断りがあります)。

developers.openai.com

0.93.0 を機に相当快適になりました。

ルールの設定はグローバルだけでなく、プロジェクトの.codex/rulesに置けます。
最初に置いたのはこんなファイルでした。

prefix_rule(pattern=["docker", "ps"], decision="allow")
prefix_rule(pattern=["scripts/export_schema.sh"], decision="allow")
prefix_rule(pattern=["docker", "rm", "-f"], decision="allow")
prefix_rule(pattern=["git", "add"], decision="allow")
prefix_rule(pattern=["git", "commit"], decision="allow")
prefix_rule(pattern=["kill"], decision="allow")

手順の大半は Codex CLI が自作したscripts/export_schema.shで実行します。
なのでスクリプトを許可しておきます。

コマンドをスクリプトにまとめて許可する

後片付けのkilldocker rmは都度許可を求められたので、ルールに書きました。
「任意の引数でこれらをやられるのはちょっと危険だよな」と引っかかりましたが、手順の追従性が高かったので信頼することにしました。

数回動かす中で閃いたのです、「スクリプトに入れたら消せるじゃん」と
https://github.com/ftnext/adk-python-db-schema-history/blob/e57497d499f56e2e1dee42978618cb8bb3c119c7/.codex/rules/default.rules

prefix_rule(pattern=["scripts/export_schema.sh"], decision="allow")
prefix_rule(pattern=["git", "add"], decision="allow")
prefix_rule(pattern=["git", "commit"], decision="allow")
  • scripts/export_schema.shで始まるコマンドのみ許可
  • 結果、想定していない形でkilldocker rmを実行されることがなくなる
    • 任意の引数でのkilldocker rmは許可を求めてくる

終わりに

Codex CLI が sandbox 外で実行するコマンドについて、ルールを書いて許可できるようになっています。
今回は手順が決まっていたので、あらゆる引数で実行される可能性のある先頭一致の許可ルールよりも、スクリプトにまとめてしまう方が安全なことに気づきました。
ルールについては codex-rs のソースコードに当たることで、より理解を深めていけそうです

記事のタイトルを考えるにあたり、おぼろげながら浮かんできたんです。「飛べない僕は泳いだ」が




以上の内容はhttps://nikkie-ftnext.hatenablog.com/entry/codex-cli-rules-learning-allow-script-wrap-commandsより取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14