Codex の Web 検索を制御する web_search 設定:disabled / cached / indexed / live の違い
Codex CLI が Web 検索をどう使うかを決める config.toml の web_search の 4 つの値と既定、1 回だけ有効にする --search フラグ、プロンプトインジェクションの観点で indexed を選ぶ理由、ドメイン制限の設定を解説します。
依存ライブラリの最新のリリースノートを踏まえて作業してほしいときは Web 検索が要りますが、常に外部の Web を読ませるとプロンプトインジェクションの入り口になります。Codex CLI の Web 検索は web_search 設定で 4 段階に制御できます。
結論として、config.toml の web_search に disabled / cached / indexed / live のいずれかを書きます。ローカルの既定は cached で、1 回だけライブ検索を使いたいときは --search フラグで起動します。
KEY POINT
この記事で分かること
- 4 つの値の意味と、それぞれの既定になる条件
--searchフラグでの一時的な有効化indexedがプロンプトインジェクション対策になる理由と、ドメイン制限
4 つの値
# disabled | cached | indexed | live。既定: "cached"
web_search = "cached"
| 値 | 意味 |
|---|---|
disabled | Web 検索ツールを完全に無効にする |
cached | キャッシュされた検索結果を使う。ローカルの Codex の既定 |
indexed | 検索インデックスがリクエストをゲートする場合にだけ外部 Web にアクセスする。プロンプトインジェクションのリスクを下げる |
live | 現在の情報を直接取得する。最新情報に依存するタスク向け |
公式ドキュメントによると、Codex をフルアクセスで動かしている場合はライブ検索が既定になり、ローカルのチャットでは cached が既定で有効になります。
用語解説
プロンプトインジェクション: Web ページや検索結果の中に「この指示に従え」といった文章を仕込み、AI エージェントの動作を乗っ取る攻撃です。エージェントが任意の Web ページを直接読む live は、この攻撃面が最も広くなります。
1 回だけ有効にする
設定ファイルを変えずに、そのタスクだけライブ検索を使うには --search を付けます。
codex --search "この依存ライブラリの最新リリースノートを要約して"
「普段は cached か disabled にしておき、必要なときだけ --search」が、リスクと利便性のバランスとして扱いやすい運用です。
indexed を選ぶ理由とドメイン制限
indexed は、検索インデックスを経由したリクエストだけ外部アクセスを許可する設定です。任意の URL を直接読みに行く経路を塞ぐため、公式ドキュメントはプロンプトインジェクションのリスク低減として説明しています。
アクセス先を絞りたい場合は tools.web_search.allowed_domains でドメインを制限できます。組織で許可するモードを固定するには allowed_web_search_modes を使います。
web_search = "indexed"
[tools.web_search]
allowed_domains = ["docs.python.org", "developer.mozilla.org"]
ドメイン制限は Web 検索だけに効く
公式ドキュメントは、検索のドメインフィルタがローカルコマンドの通信、アプリ、コネクタ、MCP サーバーの通信を制限しないと明記しています。コマンドからの curl などはサンドボックスの network_access で、MCP サーバーの通信はそれぞれの設定で別に制御してください。
なお、旧来の features.web_search は非推奨で、web_search 設定に置き換わっています。カスタムの model_providers で検索を使うには、プロバイダ側で supports_standalone_web_search = true を指定する必要があります(既定 false)。
サンドボックスのネットワーク設定は approval mode と sandbox 設定の違い を、config.toml の全体像は親記事の config.toml でモデル・推論の深さ・プロファイルを切り替える を参照してください。
まとめ
web_searchはdisabled/cached/indexed/liveの 4 段階。ローカルの既定はcached、フルアクセス時はライブ- そのタスクだけ使うなら
codex --search "..." indexedは検索インデックスをゲートにして、任意ページの直接読み込みを防ぐtools.web_search.allowed_domainsでドメインを絞れるが、コマンドや MCP の通信には効かないfeatures.web_searchは非推奨。Web の結果は常に信頼できない入力として扱う
よくある質問
- web_search の既定値は何ですか?
- ローカルの Codex では cached が既定です。フルアクセスで動かしている場合はライブ検索が既定になります。
- 最新情報が必要なタスクだけ検索を使いたいです。
- そのタスクだけ codex --search "..." のようにフラグを付けて起動します。設定ファイルを変える必要はありません。
- 検索結果を信頼してよいですか?
- 公式ドキュメントはすべての Web の結果を信頼できない入力として扱うよう求めています。indexed にすると検索インデックスがゲートになり、リスクを下げられます。
参考にした一次情報
この記事は公式ドキュメントを基に AI が下書きを作成し、運営者が内容を確認して公開しています。誤りを見つけた場合は お問い合わせからお知らせください。