CFC_PROMPTでChromeのシステムプロンプトだけ外す方法
CLAUDE_CODE_DISABLE_CFC_PROMPTはClaude in Chromeのツールを残したままシステムプロンプトの該当節だけ省く設定です。設定方法と適用範囲を解説します。
CLAUDE_CODE_DISABLE_CFC_PROMPTでできること
CLAUDE_CODE_DISABLE_CFC_PROMPT は、Claude CodeのシステムプロンプトからChromeに関する節と /claude-in-chrome バンドルスキルだけを取り除く環境変数です。Claude in Chromeのブラウザ操作ツール自体は使える状態のまま残ります。
公式ドキュメントによると、この変数は「Claude Codeを組み込み、自前のブラウザ操作ガイダンスを提供するホスト」向けに用意されています。自社のプロダクトにClaude Codeを組み込んで、ブラウザ操作の指示文を自分たちで書きたい開発者が対象です。Claude Code v2.1.257以降が必要です。
似た名前の変数に CLAUDE_CODE_DISABLE_BUNDLED_SKILLS がありますが、こちらはClaude Code同梱のスキルと組み込みワークフローを丸ごと無効化します。CLAUDE_CODE_DISABLE_CFC_PROMPT はChromeまわりだけを対象にした、より狭い範囲の設定です。名前が似ているため、Chromeだけを対象にしたいときに誤って範囲の広い方を設定してしまわないよう注意します。
設定方法
シェルで一時的に設定する場合は、claude を起動する前にexportします。
export CLAUDE_CODE_DISABLE_CFC_PROMPT=1
claude毎回のセッションで有効にしたいときは、~/.bashrc や ~/.zshrc に同じ export 行を追加します。設定できたかどうかは、claude を起動する前の同じシェルで echo $CLAUDE_CODE_DISABLE_CFC_PROMPT を実行して確認できます。
プロジェクト単位で共有したい場合は、settings.json の env キーに書きます。
{
"env": {
"CLAUDE_CODE_DISABLE_CFC_PROMPT": "1"
}
}置き場所によって適用範囲が変わります。~/.claude/settings.json は自分だけ全プロジェクトに、.claude/settings.json はプロジェクトに関わる全員に、.claude/settings.local.json は自分だけそのプロジェクトに適用されます。組織全体に配る場合はmanaged settingsを使います。
CLAUDE_CODE_DISABLE_BUNDLED_SKILLS には disableBundledSkills という対応する設定キーがあり、環境変数と設定キーのどちらでも同じ挙動を作れます。一方で CLAUDE_CODE_DISABLE_CFC_PROMPT には、公式ドキュメント上、対応する専用の設定キーの記載がありません。設定ファイルで恒久的に適用したい場合も、env キーの中に環境変数として書く形になります。
オン・オフの値は、Claude Codeの環境変数全般に共通する書式に従います。公式ドキュメントの注記によれば、動作をオン・オフする変数は大文字小文字を区別せず 1 または true でオン、0 または false でオフにできます。したがって CLAUDE_CODE_DISABLE_CFC_PROMPT=true と書いても 1 と同じ意味になります。一時的に元の挙動へ戻したいときは、変数を未設定にするか 0 を設定します。
同じ変数をシェルと settings.json の両方で設定した場合、設定ファイル側の値が優先されます。Claude Codeは各 env エントリをプロセス環境に書き込み、シェルから継承した値を上書きするためです。プロジェクトのメンバーで共有したいなら .claude/settings.json、自分のマシンだけで固定したいなら ~/.claude/settings.json か .claude/settings.local.json に置くと、シェルプロファイルの違いに左右されずに済みます。
env ブロック自体は特別扱いされる項目ではなく、通常の設定キーと同じ優先順位のスタックに従います。優先度が高い順に、managed settings、--settings などの起動時フラグ、.claude/settings.local.json、.claude/settings.json、~/.claude/settings.json という並びです。組み込みホストが利用者全員に対してこの変数を強制したい場合は、個々のプロジェクト設定より上位のmanaged settingsに書けば、利用者側の .claude/settings.json では上書きできなくなります。逆に、利用者ごとに挙動を変えたいだけなら、上書きされる可能性を踏まえて .claude/settings.json より下のレベルに置きます。
CLAUDE_CODE_DISABLE_BUNDLED_SKILLSとの違い
Chromeまわりの動作を絞りたいとき、どちらの変数を使うべきかは影響範囲で決まります。
| 変数 | 対象範囲 | Claude in Chromeのツール自体 | 他の同梱スキル・ワークフロー |
|---|---|---|---|
CLAUDE_CODE_DISABLE_CFC_PROMPT | 対象範囲Chromeの節と /claude-in-chrome スキルのみ | Claude in Chromeのツール自体使える | 他の同梱スキル・ワークフロー影響なし |
CLAUDE_CODE_DISABLE_BUNDLED_SKILLS | 対象範囲同梱スキルと組み込みワークフロー全体 | Claude in Chromeのツール自体ツール自体は無効化されないが、案内するスキルが消える | 他の同梱スキル・ワークフローすべて無効化 |
| どちらも未設定(既定) | 対象範囲— | Claude in Chromeのツール自体使える | 他の同梱スキル・ワークフローすべて読み込まれる |
CLAUDE_CODE_DISABLE_BUNDLED_SKILLS を有効にすると /init のような組み込みコマンドはタイプできる状態のまま、モデルからは見えなくなります。Claude in Chromeのツール定義そのものは残りますが、それをいつどう使うかを案内するスキルごと消えるため、ブラウザ操作の挙動が変わる可能性があります。ブラウザ関連の案内だけを差し替えたいなら、CLAUDE_CODE_DISABLE_CFC_PROMPT の方が意図に近い設定です。
組み込みホストが自前のガイダンスを必要とする理由
この変数が想定する利用者は、一般の開発者よりも「Claude Codeを自社製品に組み込むホスト」に寄っています。Agent SDKや類似の統合を使ってClaude Codeをプロダクトに埋め込む場合、ブラウザ操作の文脈は製品ごとに大きく違います。社内ツールの管理画面を操作させたいホストと、公開ウェブサイトの検証だけに使わせたいホストでは、Claudeに与えるべき注意事項が異なります。
Claude Code標準のChromeシステムプロンプトは、汎用的な利用を想定した文言です。組み込みホスト側で独自のセキュリティポリシーやドメイン制限、操作手順の説明を持っている場合、標準の文言とホスト側の指示が重複したり、場合によっては矛盾したりする可能性があります。CLAUDE_CODE_DISABLE_CFC_PROMPT を使えば、ツールの機能はそのまま流用しつつ、Claudeに渡す指示文だけを自社の文脈に合わせて書き換えられます。
自前のガイダンスを渡す手段としては、CLI起動時の --append-system-prompt(既定の指示に追加する)や --system-prompt(既定の指示を丸ごと置き換える)といったシステムプロンプト用のフラグが用意されています。ファイルから読み込む --append-system-prompt-file も同様に使えます。Agent SDK経由でClaude Codeを組み込む場合も、これに相当するオプションでプロンプトを差し替えられます。CLAUDE_CODE_DISABLE_CFC_PROMPT でChrome節を空けたうえで、これらのフラグを使って自社向けの指示文を追加する、という組み合わせが基本の形です。システムプロンプト全体の構成や版ごとの違いは、Claudeのシステムプロンプト変更履歴ページの読み方で確認できます。
企業導入でClaude in Chromeを使う場合の権限設計・ネットワーク制御は、Claude in Chromeの管理者設定にまとまっています。組み込みホストとして独自の許可範囲を決める際の参考になります。
似た設計思想を持つ変数に CLAUDE_CODE_PROVIDER_MANAGED_BY_HOST があります。こちらはモデルプロバイダーのルーティングをホスト側が管理する場合に使う変数で、ユーザー設定側のプロバイダー選択を無視させます。対象は違いますが、どちらも「Claude Codeを組み込むホストが、特定領域の既定の挙動を自分たちの管理下に置く」という同じ発想の変数です。
近縁の変数に CLAUDE_CODE_SUBPROCESS_ENV_SCRUB もあります。BashツールやHooks、MCPのstdioサーバーといったサブプロセスの環境からAnthropicやクラウドプロバイダーの認証情報を取り除く変数で、claude-code-action が特定の条件下で自動設定します。組み込み先のプロダクトを設計するときは、この系統の変数がほかにもないか env-vars のリファレンスを一通り確認しておくと見落としを防げます。
注意点
CLAUDE_CODE_DISABLE_CFC_PROMPT を設定しても、Claude in Chromeのツール呼び出し自体を止めるわけではありません。ブラウザを操作させたくない場合は、この変数ではなく、settings.json の permissions.deny にツール名を指定して制限します。MCPサーバー由来のツールは mcp__<サーバー名>__<ツール名> の形式で識別されるため、Claude in Chromeのツールをまとめて拒否したいときは次のように書きます。
{
"permissions": {
"deny": ["mcp__claude-in-chrome__*"]
}
}このglobパターンはサーバー名の部分を固定したまま、配下のツール名だけをワイルドカードで一括指定する書き方で、Claude Codeのdenyルールが持つ標準的な構文です。Chrome節を省いた場合、そこに書かれていたはずの指示は失われるため、代わりの注意事項をホスト側の指示文で用意しておかないと、既定より緩い挙動になる可能性があります。安全に使うための具体的なリスクと対策はClaude in Chromeを安全に使う方法とリスク対策で扱っています。
システムプロンプトを外部から操作しようとする経路が問題になる例としては、Claude Codeのサーバー側プロンプトインジェクションも参考になります。組み込みホストが自前の指示文を渡す設計にするときは、その指示文自体が外部入力に汚染されない経路を選ぶ必要があります。
もう一点、Claude Code v2.1.257より前のバージョンではこの変数自体が存在しません。組み込み先のランタイムでClaude Codeのバージョンを固定している場合は、先にバージョンを確認してから設定します。
Amazon BedrockやGoogle CloudのAgent Platform、Microsoft Foundryといったサードパーティプロバイダー経由でClaude Codeを組み込んでいる場合、そうしたセッションではAnthropicへの機能フラグ取得そのものがスキップされます。公式ドキュメントが挙げる、フラグ取得に依存する機能の一覧に CLAUDE_CODE_DISABLE_CFC_PROMPT は含まれていません。
まとめ
CLAUDE_CODE_DISABLE_CFC_PROMPT は、Claude in Chromeのブラウザ操作ツールを使える状態に保ちながら、システムプロンプトのChrome節と /claude-in-chrome バンドルスキルだけを省く環境変数です。ツールの機能を削らずに指示文だけを差し替えられる点が、この変数の一番の特徴です。Claude Code v2.1.257以降で使え、シェルの export か settings.json の env キーで設定します。CLAUDE_CODE_DISABLE_BUNDLED_SKILLS のような対応する設定キーは公式ドキュメント上見当たらないため、恒久適用も環境変数の形で行います。対象は主にClaude Codeを自社製品へ組み込み、独自のブラウザ操作ガイダンスを持つホスト側の開発者です。省いた分の注意事項は自分たちの指示文で補う前提で使う設定といえます。設定を変えたあとは、claude を起動し直して反映させます。