先に答え:ルールを3行書くだけで、確認の手順まで変わりました
自分もこの設定で試すべきか:はい。3行の AGENTS.md で、1行目のコメント、あいさつの書き出し、「実行して出力を確かめる」の3つがすべて守られました。
差が大きかったのは3つ目です。AGENTS.md なしでは作っただけで実行せず、できたファイルは私が手元で実行すると構文エラーになりました。ありでは実行して同じエラーを見つけ、自分で直して終わりました。
記録の条件
| 項目 | 内容 |
|---|---|
| 実行した日 | 2026年11月1日(日本時間 22時台) |
| CLI の版 | codex-cli 0.162.0-alpha.17.2(codex --version の出力) |
| 環境 | Windows 11 Home(日本語)。ChatGPT デスクトップアプリに同梱の codex.exe をターミナルから直接実行 |
| 実行の形 | codex exec(非対話)。ログイン済みの状態をそのまま使い、ログインのし直しはしていない |
| 作業フォルダ | 課題ごとに新しい空のフォルダを作って使った(フォルダの外は触らせていない) |
| モデル・推論 | -m gpt-5.6-luna・low・-s workspace-write |
| AGENTS.md | あり側の作業フォルダにだけ置いた(下に全文) |
課題とコマンド
課題文(2回とも同じ):「あいさつを表示する PowerShell スクリプト greet.ps1 を作ってください。名前を引数で受け取ります。」
あり側に置いた AGENTS.md(全文)
# 作業ルール
- 作るスクリプトの1行目に、必ず `# 編集: ちんあなご編集部` というコメントを書く。
- あいさつの文は、必ず「ようこそ、」で始める。
- スクリプトを作ったら、実行して出力を確かめる。
- 作る前に、これらのルールに従っていることを一文で言う必要はない。codex exec --skip-git-repo-check --ephemeral -c notify=[] -s workspace-write -m gpt-5.6-luna -c model_reasoning_effort="low" "<課題文>" (AGENTS.md なしのフォルダ)
codex exec --skip-git-repo-check --ephemeral -c notify=[] -s workspace-write -m gpt-5.6-luna -c model_reasoning_effort="low" "<課題文>" (AGENTS.md ありのフォルダ)時間は、Node の spawnSync で codex.exe を起動してから終了するまでの実測(壁時計)です。各条件1回ずつの実行なので、同じ操作をもう一度すると数字は変わります。
出力(抜粋)
AGENTS.md なし:標準エラーの経過(見出しは省略・差分の再表示は省略)
あいさつを表示する PowerShell スクリプト greet.ps1 を作ってください。名前を引数で受け取ります。
codex
`greet.ps1` を作成し、名前を引数で受け取ってあいさつを表示する形にします。
apply patch
patch: completed
<作業フォルダ>\greet.ps1
diff --git a/greet.ps1 b/greet.ps1
new file mode 100644
index 0000000000000000000000000000000000000000..d378ad344b5b20d2ba758801f0919a3b15ba07c2
--- /dev/null
+++ b/greet.ps1
@@ -0,0 +1,6 @@
+param(
+ [Parameter(Mandatory = $true, Position = 0)]
+ [string]$Name
+)
+
+Write-Output "こんにちは、$Name さん!"
(同じ差分の再表示を省略)
codex
[greet.ps1](/<作業フォルダ>/greet.ps1) を作成しました。
実行例:
```powershell
.\greet.ps1 -Name "太郎"
```
出力:
```text
こんにちは、太郎 さん!
```
(同じ差分の再表示を省略)
tokens used
13,938AGENTS.md あり:標準エラーの経過(見出しは省略・差分の再表示は省略・長い1行は後ろを省略)
あいさつを表示する PowerShell スクリプト greet.ps1 を作ってください。名前を引数で受け取ります。
codex
PowerShell スクリプトを作成し、名前を引数に渡して実行結果を確認します。
apply patch
patch: completed
<作業フォルダ>\greet.ps1
diff --git a/greet.ps1 b/greet.ps1
new file mode 100644
index 0000000000000000000000000000000000000000..2113e3ed86612481df9ba455c6b1c7f9b4729c57
--- /dev/null
+++ b/greet.ps1
@@ -0,0 +1,7 @@
+# 編集: ちんあなご編集部
+param(
+ [Parameter(Mandatory = $true, Position = 0)]
+ [string]$Name
+)
+
+Write-Output "ようこそ、$Name さん!"
exec
"C:\\WINDOWS\\System32\\WindowsPowerShell\\v1.0\\powershell.exe" -Command "powershell -NoProfile -ExecutionPolicy Bypass -File .\\greet.ps1 太郎" in <作業フォルダ>
exited 1 in 264ms:
At <作業フォルダ>\greet.ps1:7 char:14
+ Write-Output "繧医≧縺薙◎縲・Name 縺輔s・・
+ ~~~~~~~~~~~~~~~~~~~
The string is missing the terminator: ".
+ CategoryInfo : ParserError: (:) [], ParentContainsErrorRecordException
+ FullyQualifiedErrorId : TerminatorExpectedAtEndOfString
(同じ差分の再表示を省略)
codex
実行時に Windows PowerShell の文字コード解釈で日本語が崩れたため、スクリプトを UTF-8 BOM 形式に変換してから再実行します。
exec
"C:\\WINDOWS\\System32\\WindowsPowerShell\\v1.0\\powershell.exe" -Command '$p = (Resolve-Path .'"\\greet.ps1).Path; "'$s = [System.IO.File]::ReadAllText($p); [System.IO.File]::WriteAllText($p, $s, (New-Object System.Text…(行の後ろを省略)
succeeded in 302ms:
ようこそ、太郎 さん!
(同じ差分の再表示を省略)
codex
作成しました:[greet.ps1](<作業フォルダ>/greet.ps1)
実行例:
```powershell
.\greet.ps1 太郎
```
出力:
```text
ようこそ、太郎 さん!
```
(同じ差分の再表示を省略)
tokens used
15,338
Codex の外で、私が実行して確かめた結果
できあがった greet.ps1 を、作業フォルダの中で powershell.exe -NoProfile -ExecutionPolicy Bypass -File ./greet.ps1 太郎 と実行しました(Windows PowerShell の出力を Shift_JIS として読み直しています)。
AGENTS.md なしでできたファイル
cmd: powershell.exe -NoProfile -ExecutionPolicy Bypass -File ./greet.ps1 太郎
exit: 1
seconds: 0.32
--- stdout
--- stderr
発生場所 <作業フォルダ>\greet.ps1:6 文字:14
+ Write-Output "縺薙s縺ォ縺。縺ッ縲・Name 縺輔s・・
+ ~~~~~~~~~~~~~~~~~~~~~~
文字列に終端記号 " がありません。
+ CategoryInfo : ParserError: (:) [], ParentContainsErrorRecordException
+ FullyQualifiedErrorId : TerminatorExpectedAtEndOfString
AGENTS.md ありでできたファイル
cmd: powershell.exe -NoProfile -ExecutionPolicy Bypass -File ./greet.ps1 太郎
exit: 0
seconds: 0.27
--- stdout
ようこそ、太郎 さん!
--- stderr
--- first bytes of greet.ps1 (hex): efbbbf2320e7ファイルの先頭バイトは、なしが 706172616d28(param()、ありが efbbbf 始まり(BOM つきの UTF-8)でした。
計測した時間と比較
| AGENTS.md なし | AGENTS.md あり | |
|---|---|---|
| かかった時間 | 8.0 秒 | 12.6 秒 |
| 使ったトークン(画面の表示) | 13,938 | 15,338 |
| 1行目に『# 編集: ちんあなご編集部』 | なし | あり |
| あいさつの書き出し | 『こんにちは、』 | 『ようこそ、』(ルールどおり) |
| スクリプトを実行して確かめたか | 実行していない | 実行した(構文エラー→BOM つきに直して再実行) |
| 私の手元での実行 | 構文エラー(終了コード1) | 『ようこそ、太郎 さん!』(終了コード0) |
分かったこと
- AGENTS.md に書いた3行は、1回の実行で全部守られた。書き出しの文言のような細かい指定も効いた。
- 『作ったら実行して確かめる』と書いたことで、文字化けによる構文エラーが納品前に見つかった。書かなかった側は、動かないスクリプトを『作成しました』と報告して終わった。
- トークンと時間は、ありの方が増えた(1,400 トークン・4.6 秒)。実行と直しの分。
向かない場面
- 『AGENTS.md を書けば必ず守られる』という意味に取ること。今回は短い3行を1回だけ試した。長い規約や、ルール同士がぶつかる場合は試していない。
- AGENTS.md の代わりに毎回の課題文で伝えること。課題文に毎回書くより、置いておいた方が抜けにくい。
- 実行して確かめる手順を書かないまま、動作の保証を Codex の『作成しました』に頼ること。
公式ドキュメント
- Custom instructions with AGENTS.md(OpenAI 公式)(2026年11月1日に開いて確認)
- Config basics(OpenAI 公式)(2026年11月1日に開いて確認)
