Codex のプロンプトレイヤー
Codex は、独自の基本指示、プロジェクトのドキュメント、権限と環境のコンテキスト、 インストール済みのスキルなど、複数のレイヤーからプロンプトを組み立てます。 Codex Set → Prompt では、この構成、各レイヤーが占めるサイズを確認し、不要な部分を オフにできます。
リストに表示される内容
Section titled “リストに表示される内容”各行には、組み立て順での位置、該当する場合はそのレイヤーを制御する設定キー、 実際に送信された内容のサイズが表示されます。
位置番号が連続していないのは意図的です。この番号は実際の組み立てインデックスであり、 そのうち 2 つは下の 遷移通知 に表示されます。グループごとに 1 から番号を振り直すと、 Codex が実際には使用しない順序を示すことになります。
5 種類のレイヤー
Section titled “5 種類のレイヤー”| 種類 | できること |
|---|---|
| ここで切り替え可能 | 実際のスイッチです。config.toml にキーを書き込みます。 |
| 機能フラグ制御 | 実在するレイヤーですが、このページではなく機能設定で変更します。 |
| 常に有効 | Codex のどこにもオフにするスイッチはありません。 |
| 変更時に送信 | 遷移を通知するため、何かが変わったときだけ表示されます。 |
| 拡張レイヤー | リストには表示できません。Codex が公開していません。 |
オフにするスイッチがないレイヤーには、無効なスイッチではなく、スイッチ自体が 表示されません。グレー表示のコントロールでは、機能は存在するものの一時的に 利用できないように見えますが、実際にはその機能が存在しないためです。
レイヤーを読み取る
Section titled “レイヤーを読み取る”レイヤー名をクリックすると、送信されるテキストを確認できます。ダイアログは
codex debug prompt-input から内容を読み取るため、説明ではなく実際の送信内容です。
表示する内容がない場合もあり、ダイアログに該当する理由が表示されます。
- ファイルは存在しますが空です。
~/.codex/AGENTS.mdが 0 バイトのため、 レイヤーには送信する内容がありません。ダイアログにパスが表示されます。 - 読み取ったターンでは何も送信されませんでした。 レイヤーは変更されたときだけ 再送信されるため、変更のないレイヤーは 1 回分のサンプルには含まれません。
- 基本プロンプトはモデルカタログから読み取ります。 Codex は基本プロンプトを
読み取り可能なリストの外で送信するため、ダイアログは選択中のモデルのカタログ項目
から、
model_instructions_fileを設定している場合はそのファイルから読み取ります。 カタログに展開前のテンプレートしかない場合、そのテキストは Codex が実際に送信する 内容ではないため、表示しないと伝えます。 - プロンプトを読み取れませんでした。 このマシンで確認処理が失敗しました。
内容は、ダッシュボードがたまたま実行されているディレクトリではなく、グローバルな
Codex ホーム(~/.codex)から読み取られます。
カスタムレイヤー
Section titled “カスタムレイヤー”+ Add layer を押すと、独自の指示が追加されます。カスタムレイヤーは
developer_instructions に組み込まれます。このキーは追加方式なので、Codex 独自の
指示は維持され、ユーザーの指示が加わります。
カスタムレイヤーは、その順序で 1 つのセクションにまとめられるため、カスタムレイヤー 同士で番号が付けられます。組み込みレイヤーの間に挿入されることはありません。
行の矢印を使うか、行内のどこからでも Alt + Up / Alt + Down を押して
並べ替えられます。この順序が組み立て順です。
パネルには、有効なレイヤーの合計サイズが developer_instructions の 128 KiB
上限と比較して表示され、結合されたテキストを折りたたみ式のプレビューで確認
できます。セクションを上限超えにするレイヤーは、保存した後ではなく保存する
前に分かります。
レイヤーの削除は確認を求めてから、数秒間 元に戻す を提示します。レイヤーは 元の位置に戻るため、順序に依存する一覧も操作ミスに耐えられます。
+ Add layer には、簡潔な出力、編集前の計画、推論の説明、テスト優先、韓国語での 応答という 5 つの開始点があります。どれを選んでも通常のエディターが入力済みの 状態で開き、すべて編集できます。プリセットは開始点にすぎず、保存すると通常の カスタムレイヤーになります。
プリセットは、他者のプロンプトをコピーせず、アプローチを簡潔にまとめるために 独自に作成したテキストです。それぞれに出典が記載されています。
編集中にレイヤー間を移動する
Section titled “編集中にレイヤー間を移動する”エディターには前へ/次へコントロールと位置インジケーターがあります。移動中も未保存の 編集内容は保持されるため、編集中に 2 つのレイヤーを比較し、入力内容を失わずに 元のレイヤーへ戻れます。
互換性の警告
Section titled “互換性の警告”レイヤーの内容が記述どおりに動作しない場合、エディターに警告が表示されます。別の アイデンティティを名乗る、レジストリが定義するツール名を挙げる、展開されない テンプレートのプレースホルダーを使う、または Codex が後から生成する環境情報を 記述する場合が該当します。貼り付けられた認証情報(レイヤー内の API キーはリクエスト ごとに平文でモデルへ送られます)、モデルに以前の指示を捨てさせる表現、韓国語で書かれた Codex 以外のアイデンティティも警告対象です。
これらは警告であり、保存を妨げることはありません。意図的に Codex を上書きするなら、 そのまま実行できます。警告は、それが偶然ではなく意識的な判断になるよう促すだけです。
コミットの帰属表示
Section titled “コミットの帰属表示”コミットの帰属表示 の行は、モデルが書いたコミットに Co-authored-by: Codex の
トレーラーを、モデルが開いたプルリクエストに Generated with Codex. の行を追加するよう
指示します。
この行にスイッチはなく、[features] にもありません。Codex がアカウントの帰属表示
ポリシーから解決するためです。アカウント側でオフにしてもレイヤーは消えません。Codex は
代わりに 逆の 指示、つまりトレーラーを追加しないという指示を送ります。どちらの場合でも
何かが送信されるため、この行は常に有効ではなく、アカウントで決まるものとして表示されます。
基本プロンプトのバリアント
Section titled “基本プロンプトのバリアント”基本プロンプトは唯一オフにできないレイヤーです。基本プロンプトのないモデルは、動作する エージェントではないためです。ただし 置き換える ことはできます。基本指示 の行にある スイッチがその操作を行います。
行を開くとピッカーが表示されます。オプション間の移動は、横方向のスワイプ、左右の矢印キー、 または矢印ボタンで行います。スクリーンリーダーが読み上げるのはこのボタンなので、 タッチパッドがなくてもページを操作できます。
| オプション | 内容 | 編集 |
|---|---|---|
| Codex 自身の基本プロンプト | 設定に model_instructions_file が存在しない状態 |
不可 |
| 自分のバリアント | 自分で書いたプロンプト。~/.codex/opencodex-prompt-base/ に保存されます |
可 |
| 2 つ目のバリアント | 同じもので、最大 2 つまで | 可 |
1 つ目のオプションには編集する対象も Save ボタンもなく、グレー表示のコントロールを
見せる代わりに、ダイアログがその理由を説明します。既定値は、opencodex が保存している
Codex のプロンプトのコピーではなく、キーが 存在しない 状態そのものです。そのため
変更するテキストも削除するテキストもなく、これを選ぶと設定から
model_instructions_file が再び削除されるだけです。
バリアントエディターにもカスタムレイヤーエディターと同じ保護があります。オプション 間を移動しても未保存の編集は保持され、編集中に閉じれば破棄の確認が表示され、入力中は 本文がバリアントごとの 64 KiB 上限と照合されます。
他のものがすでに基本プロンプトを置き換えている場合
Section titled “他のものがすでに基本プロンプトを置き換えている場合”model_instructions_file が opencodex 以外の書いたファイルを指している場合、ピッカーは
動作せず、キーが指している場所を表示します。ユーザーや別のツールが設定したキーを、
黙って別の場所に向け直すことはありません。手動で消す必要はありません。バリアントとしてインポートはファイルを変換します。
プレビューにはインストールされるテキストがそのまま表示されます — バリアント名を含む # 見出し行と、
改行・タブを正規化した本文 — 確認前にタイトルを編集できます。本文は正規化後に最大 64 KiB まで使用でき
(bodyBytes)、見出しを含めて実際に書き込まれるファイル全体は少し大きくなります(serializedBytes)。
確認はプレビューしたテキストにハッシュで結び付けられるため、間にファイルや選択したタイトルが変わると、
見ていないテキストをインストールせず拒否します。デフォルトから始めたい場合は、自分で消してください。
これは developer_instructions のインポートと同じ考え方です。パネルは見つけた内容を
報告し、判断はユーザーが行います。
切り替えは、このページの他の変更と同じく、新しく開始したセッションに適用されます。
opencodex の外部で記述された指示
Section titled “opencodex の外部で記述された指示”developer_instructions がすでに存在し、opencodex が書き込んだ値でない場合、パネルは
上書きしません。代わりに、そのテキストをレイヤーとしてインポートする選択肢を
表示します。既存の値が先に表示され、確認するまでは何も書き込まれません。
同期していない場合
Section titled “同期していない場合”保存済みのレイヤーと config.toml の値が一致しない場合、パネルはその状態を通知し、
自動で修正せず Repair を提示します。修復手順のうち 2 つはユーザーが書いた
テキストを書き換えるため、明示的な操作として残されています。中断された書き込み
(journal present)では、ロックを保持し、ジャーナルに記録されたファイルの状態だけを
使って復旧します。現在の一覧を再保存したり、欠けた内容を作り出したりはしません。
実際のファイルがどの記録状態にも一致しない場合、復旧を拒否して証拠を保全します。
更新されたパネルには残る不一致が表示されます。レイヤーファイルが見つからない場合、
修復処理は変更前にバックアップを作成します。
変更が反映されるタイミング
Section titled “変更が反映されるタイミング”変更は新しく開始したセッションに適用されます。すでに実行中のセッションは、開始時の プロンプト設定を維持します。
このページが読み取るものと、読み取らないもの
Section titled “このページが読み取るものと、読み取らないもの”opencodex が読み取る設定ファイルは、ユーザーの config.toml 1 つだけです。Codex は
複数のレイヤーから設定を解決するため、ここに表示される値はユーザーのファイルに
書かれた値であり、Codex が最終的に算出する値とは限りません。
このページが書き込むキー
Section titled “このページが書き込むキー”これらは Codex の config.toml にあり、opencodex 自体の設定ではありません。
| キー | 既定値 | レイヤー |
|---|---|---|
include_permissions_instructions |
true |
権限 |
include_collaboration_mode_instructions |
true |
コラボレーションモード |
include_environment_context |
true |
環境コンテキスト |
include_apps_instructions |
true |
アプリ |
skills.include_instructions |
true |
スキル |
developer_instructions |
未設定 | カスタムレイヤーを順に連結した内容 |
model_instructions_file |
未設定 | バリアントを選択したときの基本プロンプト |
書き込みは行単位の編集なので、コメントと書式はそのまま残り、opencodex が認識しないキーは削除せずそのままにします。
キーが無い場合は false ではなく既定値として読み取ります。パネルはファイルに実際に書かれている値を表示し、未設定であればそう伝えます。
明示的な値を持つ行には 既定値にリセット も表示されます。これは既定値を書き戻すのではなく
キー行を削除します。Codex が後で既定値を変えても追従し続けるのはこの状態だけです — key = true
と書くと今日の既定値がオーバーライドとして固定されます。
この単純値エディターは、キーの書き込みやリセット前に配列、インラインテーブル、複数行の文字列を拒否し、元のバイト列を保持します。インポートでは読み取れない設定を明示します。読み取り専用のタイトルプレビュー中も入力欄は編集可能で、確認にはそのタイトルに結び付いたプレビューが必要です。測定の HTTP やネットワーク障害は、別の測定が実行中という表示ではなく、失敗として表示します。

