「codexと打てば動きます。ただ、これがどのファイルなのかは、正直わかっていません」。導入を終えた現場から、この言葉が出てきます。

動いているうちは困りません。困るのは、アプリを更新したあとに挙動が変わったときと、決まった時刻に走らせる仕組みから呼んだときです。手元では動くのに、そちらからは見つからない設定ファイルをいくら読み返しても、原因はそこに書いていません

この記事は、Codex CLIの設定と使い方を、実行ファイルの所在を確かめるところから順に組み立てます。素材は公式ドキュメント8件と、自社の検証環境です(learn.chatgpt.com、旧developers.openai.com/codex、2026-07-28閲覧時点)。

こんなふうに調べていませんか

  • codexコマンドは動くが、どのファイルが動いているのかを説明できない
  • sandbox_modeとapproval_policyを、どこまで開けてよいのか決めきれない
  • 設定ファイルを書いたのに反映されず、どこを見ればいいか分からない

この記事を読み終えたときに手に入るもの

  • いま動いている実体を突き止めて、自動実行からも同じものを呼べるようになります
  • 触らせる範囲と止まる場所を、2つの設定の組み合わせとして選べるようになります
  • 効かないときに見にいく場所が4か所に絞れます

結論30秒でわかる、この記事の結論

  • Codex CLIの設定と使い方は、いま動いている実行ファイルの所在を確かめるところから始まります。
  • 決めることは4つです。実体・権限・プロジェクト連携・MCP接続の順に埋めていきます。
  • 効かないときの原因は、実体・綴り・信頼・古いフラグのどれかに戻ってきます。
決めるのは、この4つの持ち場ですどれが動いているかを、いちばん先に確かめます決めるのは、この4つの持ち場です持ち場1どれが動くか同じ呼び名でも、中身が別のことがあります持ち場2どこまで触るか動ける広さと、声をかける場面を決めます持ち場3どれを読ませるか置き場ごとに、効いたり効かなかったりします持ち場4外の道具を足すか使わせる相手を、名指しで登録します鈴木さんどれが動いているかを、いちばん先に確かめます
決めるのは、この4つの持ち場です — どれが動いているかを、いちばん先に確かめます

01「codex cli 設定 使い方」で調べた人は、AIエージェントの何から手をつければいいんですか?

高梨課長
高梨課長の発言

検索すると、入れる手順ばかり出てきます。入れたあとに何を決めるのかが知りたいんですが。

鈴木さん
鈴木さんの発言

合鍵を配る前に、どの部屋まで入ってよいかを決める作業に近いと思っています。鍵そのものより、どこまで開けておくかのほうが後で効いてきます。

Codex CLIは、単体のインストーラーで導入する場合があります。ChatGPTのデスクトップアプリに同梱された実行ファイルとして存在する場合もあります(出典: Codex公式ドキュメント)。同じcodexというコマンド名でも、環境によって実体のファイルが違うことがある。ここが出発点です

このセットアップで決めることは、下表の4つです。

観点決めること効き方
実行ファイルどのcodexが動いているかを特定する実体が変わるとバージョンも動作も変わる
権限sandbox_modeとapproval_policyの組み合わせツール実行の直前に自動で適用される
プロジェクト連携AGENTS.mdの読み込みと信頼設定フォルダ単位で有効・無効が切り替わる
MCP接続外部ツールの追加config.tomlのmcp_serversに登録して使う

もう1つ、先に知っておくと迷いが減ることがあります。設定は1か所では決まりません。実行時のフラグ、プロジェクトの設定、プロファイル、ユーザー設定、システム設定、そして組み込みの既定値が、この順で重なって最終的な値になります。

プロジェクトの設定だけは、そのプロジェクトが信頼されている場合にだけ通ります。信頼されていなければ、その段は飛ばされ、ユーザー設定へ落ちます。

決まり方には、上下の順番があります同じことを二重に書くと、上の段が勝ちます決まり方には、上下の順番があります同じことを二重に書くと、上の段が勝ちます1その場で言い足したもの打つときに添えた指定が、いちばん強く残ります2その仕事場だけの決めごと迎え入れられているときにかぎって通ります3呼び分け用のひとまとまり名前をつけて呼び出す、まとめ書きの束です4使う本人の手元にある決めとくに指定が無ければ、ここが土台になります5その機械ぜんたいの決め台ごとに配られている、共通の下敷きです6何も書かなかったときの値どこにも書かれていなければ、これが残ります
決まり方には、上下の順番があります — 同じことを二重に書くと、上の段が勝ちます

sandbox_modeとapproval_policyも、この重なりの結果として確定します。config.tomlに書いたのに効かないときは、上の段で別の値が勝っている可能性を先に疑います。

02設定を始める前に、AI導入の前提として何を3つ確かめるんですか?

セットアップに入る前に、3つを確認します。

1つ目は、OSとインストール方法を問わず、codexコマンドがPATH上で解決できるか、絶対パスで直接呼べる状態かです。2つ目は認証方法です。3つ目は、設定変更を許すディレクトリの範囲です。

認証は、ChatGPTアカウントでのサインインと、APIキーによる認証の両方が用意されています(出典: Codex公式ドキュメント)。

認証方法向く用途備考
ChatGPTサインイン対話的な利用初回起動時に選択する
APIキー対話しない自動実行・CI等非対話環境ではこちらが一般的とされる
名乗り方の入口は、二手に分かれます分かれ目は、画面の前に人がいるかどうかです名乗り方の入口は、二手に分かれます分かれ目は、画面の前に人がいるかどうかです人が画面の前にいる立ち上げたときに、その場で選べる聞かれたら、すぐ答えられるやりとりしながら進められる待てる人がいる場面に向きます人が画面の前にいない決めた合図で、勝手に動きだす聞かれても、答える相手がいない止まった時点で、そこから進まない止まらない前提を先に用意します
名乗り方の入口は、二手に分かれます — 分かれ目は、画面の前に人がいるかどうかです

分かれ目は、画面の前に人がいるかどうかです。人がいる前提の入口を、人がいない場面へそのまま持ち込むと、確認を待ったまま止まります。

3つ目のディレクトリ範囲は、後述のsandbox_modeで決めます。ここだけは単独では決まらないので、権限の章まで持ち越します。

この章のまとめ

前提は3つです。呼べること、名乗れること、どこまで触ってよいかが決まっていること。

03codexコマンドの実体は、AIエージェントの設定でなぜ最初に確かめるんですか?

若葉さん
若葉さんの発言

同じ名前のコマンドなのに、中身が違うことがあるんですか。

鈴木さん
鈴木さんの発言

表札が同じでも、部屋が別ということがあります。うちでは、名前で呼んでいた相手が、いつのまにか入れ替わっていました。

最初の一歩は、PATHで解決されるcodexの実体を確認することです。

# PATHで解決されるcodexの実体を確認する
which codex
ls -la "$(which codex)"

自社の検証環境(macOS)では、この実体は単体インストーラーの配置先ではありませんでした。実際のパスは/Applications/ChatGPT.app/Contents/Resources/codexでした(2026-07-28確認)。以前は別の場所にあったコマンドが見つからなくなった経緯があり、以後はこの同梱パスを実体として扱っています。

# ChatGPT.app同梱の実行ファイルを直接確認する
ls -la "/Applications/ChatGPT.app/Contents/Resources/codex"
"/Applications/ChatGPT.app/Contents/Resources/codex" --version
呼び名と中身は、別ものとして扱います表札を信じると、部屋を間違えます呼び名と中身は、別ものとして扱います表札を信じると、部屋を間違えます身近なたとえ手元で起きていること同じ表札の部屋が、建物に2つある同じ呼び名で、別の中身が立ち上がる留守のあいだに住人が入れ替わった包みが新しくなり、中身も差し替わる表札ではなく、部屋番号で人を呼ぶ呼び名ではなく、置き場そのもので指す呼び名は変わらないので、入れ替わりは音もなく起きます。
呼び名と中身は、別ものとして扱います — 表札を信じると、部屋を間違えます

ここを飛ばすと、あとの章の設定が「どこに効いているのか」を確かめられなくなります。手順書のとおりに書いたのに動かない、という相談の入口は、たいていここです。

この章のまとめ

実体が変わればバージョンも動作も変わります。名前ではなく、ファイルを見ます。

04実体を絶対パスで固定する使い方は、AI社員の自動実行で何を守るんですか?

自社では、この絶対パスをCODEX_BINという環境変数に入れ、実行スクリプト側から明示的に参照する運用にしています

エイリアスだけに頼ると、cronや自動実行スクリプトのように、シェル設定を経由しない場面で解決できないことがあるためです。人が打つときは動くのに、決まった時刻に動かす仕組みからは動かない。この差が生まれるのは、ここです。

# ~/.zshrc に追記する例
export CODEX_BIN="/Applications/ChatGPT.app/Contents/Resources/codex"
alias codex="$CODEX_BIN"
呼び出し口を、人の手だけに預けない打つ人と、動かす仕組みでは通る道が違います呼び出し口を、人の手だけに預けない打つ人と、動かす仕組みでは通る道が違います短い呼び名だけ置いていた手で打つぶんには、そのまま通る決めた合図で走る側からは外れる見つからない理由が、あとに残らない人の操作にしか効きません置き場そのものを持たせたどこにあるかを、控えとして持つ仕組みの側からも同じものへ届くどちらの道から来ても、行き先が一致する呼ぶ側が変わっても迷いません
呼び出し口を、人の手だけに預けない — 打つ人と、動かす仕組みでは通る道が違います

書くのは2行ですが、効く相手が違います。別名は人が打つ場面のための短縮で、環境変数は仕組みが呼ぶための宛先です。両方を置いておくと、どちらの経路からでも同じ実体に届きます。

この章のまとめ

別名は人のため、絶対パスは仕組みのためです。自動実行を混ぜるなら、後者を先に用意します。

05サンドボックスの3モードは、AIエージェントにどこまで触らせる設定なんですか?

Codexのサンドボックスは、read-only・workspace-write・danger-full-accessの3モードです(出典: Codex公式ドキュメント)。既定はworkspace-writeです

sandbox_modeできることネットワークファイル書き込み
read-onlyファイルの検査のみ。編集・実行は承認が要る制限あり不可
workspace-write(既定)ワークスペース内で読み書き・ルーチン実行承認時に許可ワークスペース内に限定
danger-full-accessサンドボックス制限なしで動作無制限システム全体
広さの違いは、戻せる範囲の違いですできることの数ではなく、取り返しで比べます広さの違いは、戻せる範囲の違いですできることの数ではなく、取り返しで比べますいちばん狭い見るだけの部屋手を加えるには、そのつど断りが要りますふだんの位置仕事場の中だけ決められた区画の中でなら、そのまま動かせますいちばん広い囲いを外した状態戻す相手が、どこにも残らないことがあります
広さの違いは、戻せる範囲の違いです — できることの数ではなく、取り返しで比べます

3つの違いは、できることの多さというより、取り返しがつかなくなる範囲の広さです。読むだけなら、間違えても元に戻せます。制限が外れた状態では、戻す相手が残らないこともあります。

06承認方針とサンドボックスの組み合わせは、AIエージェントの使い方をどこで止めるんですか?

高梨課長
高梨課長の発言

権限は広いほうが速く終わりませんか。止まるたびに待つのは、けっこうな手間です。

鈴木さん
鈴木さんの発言

速くはなります。ただ、止まらない設定は、間違いのほうも止めません。うちは、確かめるときだけ止まらない側に寄せています。

承認のタイミングはapproval_policyで決めます。値はuntrusted・on-request・neverの3種類です(出典: Codex公式ドキュメント)。

approval_policy承認を求めるタイミング
untrusted状態を変えるコマンドの実行時
on-requestサンドボックス外の編集、またはネットワークアクセス時
never求めない(非対話実行向け)

低摩擦さと安全さのバランスを取るなら、workspace-write+on-requestの組み合わせから始めるのが妥当です

# ~/.codex/config.toml
model = "gpt-5.6"
sandbox_mode = "workspace-write"
approval_policy = "on-request"
広さと止まりどころの、四つの組み合わせ片方だけを絞っても、狙った場所では止まりません広さと止まりどころの、四つの組み合わせ片方だけを絞っても、狙った場所では止まりません最初に置くならここ中で動かし、外へ出るときだけ声をかけます広げた意味が薄れる外したぶんだけ、聞かれる場面が増えます確かめるときの位置読むだけにして、止めずに通しますここは避ける声をかけないまま、どこへでも手が届きます上:外へ出るとき声をかける / 下:かけない左:囲いの中だけで動かす / 右:囲いを外す
広さと止まりどころの、四つの組み合わせ — 片方だけを絞っても、狙った場所では止まりません

danger-full-accessとneverを組み合わせると、承認なしでシステム全体に書き込める状態になります。公式ドキュメントも、この組み合わせは高信頼な自動化向けだと注記しています(出典: Codex公式ドキュメント)。

2つは別々の軸です。サンドボックスは技術的にできる範囲を決め、承認方針はどの場面で人に聞くかを決めます。片方だけを絞っても、もう片方が開いていれば、狙った場所では止まりません。

もう一方のエンジンと並べて考えたいときは、Claude Code側の権限の配分に別の軸の整理があります。

この章のまとめ

広さと止まりどころは別の軸です。片方ではなく、組み合わせで決めます。

07プロジェクトごとの設定と信頼は、エージェントの使い方をどう変えるんですか?

プロジェクト直下の.codex/config.tomlは、そのプロジェクトが信頼されている場合だけ読み込まれます。プロジェクトローカルのhooksも同じ扱いです(出典: Codex公式ドキュメント)。信頼されていないプロジェクトでは、ユーザー設定(~/.codex/config.toml)だけが有効になります。

# プロジェクト直下 .codex/config.toml(信頼されたプロジェクトのみ有効)
sandbox_mode = "workspace-write"
approval_policy = "on-request"
同じ書き置きでも、届くかどうかが変わります迎え入れていない場所では、黙って素通りします同じ書き置きでも、届くかどうかが変わります迎え入れていない場所では、黙って素通りしますまだ迎え入れていない置き場そこに書いた決めごとは読まれない手元の決めごとだけで動く読み飛ばしたことを知らせてこない書いた側は、効いているつもりでいます迎え入れた置き場そこの決めごとが上へ乗る仕掛けのほうも一緒に効くその場所でだけ、動き方が変わる効かせたいなら、先にここを通します
同じ書き置きでも、届くかどうかが変わります — 迎え入れていない場所では、黙って素通りします

厄介なのは、読み込まれなくてもエラーにならないことです。書いた側は反映されたつもりでいて、動きだけが違う。書いたのに効かないと感じたら、まず信頼の状態から疑います。

この章のまとめ

プロジェクト側の設定は、信頼が通っているときだけの上乗せです。

08AGENTS.mdの読み込み順の設定は、AIエージェントへの指示のどれが最後に効くんですか?

若葉さん
若葉さんの発言

指示書が何枚もあるとき、どれが最後に効くんですか。

鈴木さん
鈴木さんの発言

近いところに置いたものが後に効きます。廊下の張り紙より、その部屋の張り紙のほうが強い、という順番です。

AGENTS.mdの読み込みには順序があります。グローバルの~/.codexディレクトリでAGENTS.override.mdがあればそちらを優先し、なければAGENTS.mdを読みます。プロジェクト側はGitルートから作業ディレクトリへ下りながら各階層を確認し、ルートから現在地へ向かう順で連結します(出典: Codex公式ドキュメント)。下位のファイルが上位の指示を上書きする構造です

言いつけは、遠いほうから拾われます近いところに置いたものが、あとから上に乗ります言いつけは、遠いほうから拾われます近いところに置いたものが、あとから上に乗ります1いちばん外の1枚差し替え版があれば、そちらを先に2根元の階作業場所の大もとから拾い始める3途中の階下りながら、その階のぶんも足す4いまいる場所最後に足したものが、上に乗る鈴木さん遠くの張り紙より、その部屋の張り紙のほうが後に効きます
言いつけは、遠いほうから拾われます — 近いところに置いたものが、あとから上に乗ります

順番が分かると、置き場の決め方も変わります。全体に効かせたい約束は上へ、その場かぎりの断り書きは下へ。同じ内容を両方に書くと、あとから読んだほうだけが残ります。

読み込むバイト数には上限があり、既定はproject_doc_max_bytesの32KiBです(出典: Codex公式ドキュメント)。プロジェクトの指示が長くなるほど、この上限に近づきます

09MCPを足す使い方は、AIエージェントに外部ツールをどう触らせるんですか?

MCPサーバーはconfig.tomlmcp_serversセクションに書くか、CLIから追加します。

[mcp_servers.context7]
command = "npx"
args = ["-y", "@upstash/context7-mcp"]
codex mcp add context7 -- npx -y @upstash/context7-mcp
外の道具は、この三手で迎えます最後の一手を省くと、抜けに気づけません外の道具は、この三手で迎えます最後の一手を省くと、抜けに気づけません1呼び名を決める何と呼ぶかを、先に固定します2起こし方を添えるどうやって立ち上げるかを書き添えます3並んでいるかを見る名前が出てこなければ、書き方から疑います
外の道具は、この三手で迎えます — 最後の一手を省くと、抜けに気づけません

セクション名はmcp_serversとアンダースコア区切りです。綴りを誤ると設定が反映されません。しかも、エラーで止まるのではなく、静かに無視される形になります(この落とし穴は次章で扱います)。

接続そのものの考え方をもう一段見たいときは、MCPサーバーの接続設定にまとめてあります。

この章のまとめ

足し方は2通り、確かめ方は1つです。登録した名前が一覧に出るかどうかで見ます。

10設定が効かないとき、AI活用が止まるのはどの4か所ですか?

効かないと感じたら、この順で見にいきますどれも音を立てずに外れるので、記憶では拾えません効かないと感じたら、この順で見にいきますどれも音を立てずに外れるので、記憶では拾えません呼んでいる中身が、入れ替わっていないか居場所を覚えたままだと、前のものを呼び続けます見出しのつなぎ方が、そろっているかひと文字違うだけで、黙って読み飛ばされますその置き場を、迎え入れているか通っていなければ、そこの決めごとは読まれませんもう勧められていない指定が、残っていないか古い覚え書きの写しから紛れ込みます
効かないと感じたら、この順で見にいきます — どれも音を立てずに外れるので、記憶では拾えません
  1. バージョンが更新されているのに古いまま動く:実体がChatGPT.app同梱の場合、アプリ更新でファイルの中身が変わります。シェル側がコマンドの場所をキャッシュしていると、更新後も古い実体を呼び続けます。hash -r(zshはrehash)で解決します。
  2. MCPサーバーを登録したのに一覧に出ないconfig.tomlのセクション名をmcp-serversのようにハイフンで書くと、キーが一致せず設定は静かに無視されます。mcp_serversとアンダースコアで書き直し、保存後に再起動して確認します。
  3. プロジェクト側の設定が反映されない:プロジェクトが信頼されていないと、.codex/config.tomlの内容は読み込まれません(出典: Codex公式ドキュメント)。初回起動時の信頼確認に答えているかを確認します。
  4. --full-autoが非推奨だと知らずに使うcodex execのこのフラグは非推奨です。公式ドキュメントは--sandbox workspace-writeへの置き換えを勧めています(出典: Codex公式ドキュメント)。古い社内メモや記事に残っていた例を、そのままコピーすると起こります。

4つに共通しているのは、どれも大きな音を立てないことです。画面は静かなまま、意図とは違う設定で動き続けます。だから、思い出そうとするのではなく、見にいく場所を先に決めておきます。

この章のまとめ

静かに外れる設定は、記憶では拾えません。見る場所を4か所に固定します。

11検索語の「codex cli 設定 使い方」は、AI社員に任せる前のどの動作確認に置き換わるんですか?

高梨課長
高梨課長の発言

どこまでやれば「設定が終わった」と言えるんでしょう。

鈴木さん
鈴木さんの発言

3つ返ってくれば、いったん終わりにしています。名乗るか、止まらずに終わるか、はじめての場所でちゃんと聞いてくるか。

合格の基準は3つです。①バージョン確認、②非対話実行の確認、③信頼プロンプトの確認です。

# ①期待したバージョン文字列が返るか
codex --version

# ②承認プロンプトで止まらず、終了コード0で返るか
codex exec "echo setup-check" --sandbox read-only --ask-for-approval never --json
echo "exit code: $?"

③は、まだ一度もCodexを実行していない新しいプロジェクトフォルダでcodexを起動し、信頼するかどうかの確認が一度は表示されることを見ます。

三つ返ってきたら、いったん手を離しますそろわないうちは、決めごとより前提を疑います三つ返ってきたら、いったん手を離しますそろわないうちは、決めごとより前提を疑います1名乗るか返ってきた文字が、思っていたものと合うか2止まらず終わるか誰も答えなくても、最後まで通り抜けるか3はじめての場所で聞くか触ったことのない置き場で、ひと声かけてくるか
三つ返ってきたら、いったん手を離します — そろわないうちは、決めごとより前提を疑います

3つとも満たせば、実行ファイルの所在・権限設定・プロジェクト連携が揃った状態です。②で読むだけの設定と止まらない設定を組み合わせているのは、確かめる行為そのものが何かを書き換えないようにするためです。

検索語のままでは、現場では使えません。「設定と使い方を調べる」は、この3つが返るかどうかに翻訳できます。返らなければ、設定ではなく前提のほうを疑います。

12よくある質問

Codex CLIとClaude Codeを両方使う場合、設定ファイルは分ける必要がありますか

はい。方式が別です。CodexはTOML形式の~/.codex/config.toml、Claude CodeはJSON形式のsettings.jsonで、キー体系も異なります。AGENTS.mdとCLAUDE.mdも別ファイルとして両方用意します。片方の設定をもう片方へ写しても、書式の時点で読まれません

sandbox_modeとapproval_policyは、どちらを先に決めるべきですか

sandbox_modeを先に決めます。実行できる範囲の上限を決めてから、その範囲内でどこまで自動承認するかを決める順番のほうが、想定外の書き込みを防げます。逆にすると、止まる場所だけを細かく決めたのに、触れる範囲は開いたまま、ということが起こります。

認証はAPIキーとChatGPTサインインのどちらを使うべきですか

前掲の認証方法の表のとおり、用途で分けます。両方式とも公式ドキュメントに記載があります。判断のしかたは単純で、画面の前に人がいる使い方か、いない使い方かで選びます。

config.tomlを直接編集せず、CLIだけで設定を変えられますか

一部は可能です。--sandbox--ask-for-approvalのようなグローバルフラグは実行時に上書きでき、MCPサーバーはcodex mcp addで追加できます。信頼設定や恒久的な既定値の変更は、config.tomlを直接編集するほうが確実です。

設定を書いたのに反映されません。どこから見ればいいですか

順番があります。実体が入れ替わっていないか、綴りが合っているか、プロジェクトが信頼されているか、非推奨のフラグが残っていないか。この4か所は、どれもエラーを出さずに外れるので、順に確かめるほうが早く着きます

13まとめ|今日やる3つのこと

Codex CLIの設定と使い方は、いま動いている実行ファイルの所在から始まり、触らせる範囲と止まる場所の組み合わせで決まります。書いたのに効かないときは、たいてい上の段で別の値が勝っているか、静かに無視されています

今日はこの順で手をつけます

  1. which codexで実体を確かめる

    名前ではなくファイルを見ないと、あとの設定がどこに効くか分かりません

  2. sandbox_modeとapproval_policyを、狭い側と止まる側から書く

    広げるのは、動いてからでも間に合います

  3. 3つの動作確認を通す

    通らないうちは、設定ではなく前提のほうを疑います

AI検索では、こう聞かれています

  • Codex CLIの設定は、何から手をつければいいんですか?

    「codexコマンドの実体は、AIエージェントの設定でなぜ最初に確かめるんですか?」の章で説明しています

  • sandbox_modeとapproval_policyは、どの組み合わせから始めればいいんですか?

    「承認方針とサンドボックスの組み合わせは、AIエージェントの使い方をどこで止めるんですか?」の章で扱っています

  • AGENTS.mdは、どの順番で読み込まれるんですか?

    「AGENTS.mdの読み込み順の設定は、AIエージェントへの指示のどれが最後に効くんですか?」の章にあります

  • 設定したのに効かないときは、どこを見ればいいんですか?

    「設定が効かないとき、AI活用が止まるのはどの4か所ですか?」の章で順番を示しています

次に読むなら、この記事です