CFC_PROMPTでChromeのシステムプロンプトだけ外す方法
CLAUDE_CODE_DISABLE_CFC_PROMPTはClaude in Chromeのツールを残したままシステムプロンプトの該当節だけ省く設定です。設定方法と適用範囲を解説します。
何が消えて、何が残るのか
CLAUDE_CODE_DISABLE_CFC_PROMPT は、Claude CodeのシステムプロンプトからChromeに関する節と /claude-in-chrome バンドルスキルだけを取り除く環境変数です。Claude in Chromeのブラウザ操作ツールは、使える状態のまま残ります。
公式ドキュメントの説明では、この変数は「Claude Codeを組み込み、自前のブラウザ操作ガイダンスを提供するホスト」向けです。自社のプロダクトにClaude Codeを埋め込み、ブラウザ操作の指示文を自分たちで書きたい開発者が対象になります。Claude Code v2.1.257以降が必要で、この版は2026年9月1日のリリースです。プロンプト全体を短縮版にする変数はSIMPLE_SYSTEM_PROMPTの解説にあります。
変数ごとに、消えるものと残るもの
CLAUDE_CODE_DISABLE_CFC_PROMPT
システムプロンプトのChrome節と /claude-in-chrome スキルが消えます。ブラウザ操作ツールと、ほかの同梱スキル・ワークフローは残ります。
CLAUDE_CODE_DISABLE_BUNDLED_SKILLS
Claude Code同梱のスキルとワークフローが丸ごと消えます。/init のような組み込みコマンドは入力できますが、モデルからは見えなくなります。
名前が似ているので、Chromeだけを対象にしたいときに範囲の広い方を設定しないよう注意が必要です。後者が消すのはClaude Code同梱のものだけで、プラグインや .claude/skills/、.claude/commands/ に置いた自作のスキルは影響を受けません。後者には disableBundledSkills という対応する設定キーがあります。前者には専用の設定キーがなく、設定ファイルで固定する場合も env キーの中に環境変数として書きます。
設定する
設定から反映までの流れ
- 1
書く場所を決める
自分のシェルだけなら
export、チームで共有するなら.claude/settings.jsonのenvに書きます。 - 2
値を入れる
1を設定します。trueなどの書き方もそのまま使えます。 - 3
claudeを起動し直す
起動済みのセッションの外で設定を変えたときは、新しく
claudeを始めます。 - 4
ツールが残っているか見る
/mcpでclaude-in-chromeを選び、View toolsを開きます。ブラウザ操作ツールが並んでいれば、ツールは残っています。
シェルで一時的に設定するなら、claude を起動する前にexportします。
export CLAUDE_CODE_DISABLE_CFC_PROMPT=1
claude毎回のセッションで有効にしたいときは、~/.bashrc や ~/.zshrc に同じ export 行を足します。同じシェルで echo $CLAUDE_CODE_DISABLE_CFC_PROMPT を実行すれば、値が入っているか見られます。
プロジェクト単位で共有したい場合は、settings.json の env キーに書きます。
{
"env": {
"CLAUDE_CODE_DISABLE_CFC_PROMPT": "1"
}
}プロジェクト側の設定ファイルに書いた env の多くは、ワークスペースを信頼したあとに読み込まれます。置き場所によって届く範囲が変わります。~/.claude/settings.json は自分だけ全プロジェクトに、.claude/settings.json はプロジェクトに関わる全員に、.claude/settings.local.json は自分だけそのプロジェクトに適用されます。組織全体に配るならmanaged settingsを使います。
値の書き方と優先順位
オン・オフを切り替える環境変数には共通の書式があります。公式ドキュメントによると、1・true・yes・on でオン、0・false・no・off でオフになり、大文字小文字は問われません。CLAUDE_CODE_DISABLE_CFC_PROMPT の表の行には 1 とだけ書かれていますが、書式は共通なので true や on でも同じ意味になります。元に戻すときは、変数を外すか 0 を入れます。
同じ変数をシェルと settings.json の両方に書いた場合は、設定ファイル側の値が勝ちます。env の値が、シェルでexport済みの同名の変数を上書きするためです。例外は、Claude Desktopアプリやself-hosted environmentのランナーが起動したセッションです。起動環境が先に設定している変数については、設定ファイルの env の値が無視されます。
設定ファイル同士では、優先度が高い順に、managed settings、起動時のフラグ(--settings など)、.claude/settings.local.json、.claude/settings.json、~/.claude/settings.json です。組み込みホストが全利用者に変数を強制したいなら、managed settingsに置けば、利用者側の .claude/settings.json では上書きできません。逆に、利用者ごとに変えられる余地を残したいなら、より下のレベルに置きます。
実機の出力: v2.1.289のヘルプで見えるもの
手元の claude --version は 2.1.289 (Claude Code) と答えました。この版の claude --help には、Chromeとシステムプロンプトに関わる次の行が並びます。
claude --help --append-system-prompt <prompt> Append a system prompt to the default
system prompt
--chrome Enable Claude in Chrome integration
--no-chrome Disable Claude in Chrome integration
--system-prompt <prompt> System prompt to use for the sessionヘルプの別の箇所には --system-prompt[-file] と --append-system-prompt[-file] という表記もあります。プロンプトをファイルから読み込む形が、それぞれ用意されているということです。--chrome と --no-chrome はセッション単位でChrome連携そのものを入り切りするフラグで、システムプロンプトの一節だけを外す変数とは別の層にあります。
変数そのものはヘルプの出力に現れません。ツールが残っているかは上の手順の /mcp で見られます。指示文の側は、自分のホストが渡した内容が反映されるかどうかで確かめます。
組み込みホストが自前のガイダンスを渡す
この変数の想定する利用者は、一般の開発者よりも「Claude Codeを自社製品に組み込むホスト」です。たとえば、社内ツールの管理画面を操作させたいホストと、公開サイトの検証だけに使わせたいホストでは、ブラウザ操作に添える注意事項が違ってくるはずです。標準のChrome節を外しておけば、ツールの機能はそのまま使いつつ、指示文だけを自社の文脈で書き直せます。
渡す手段は、先ほどのヘルプにあるシステムプロンプト用のフラグです。--append-system-prompt は既定の指示に追記し、--system-prompt は既定の指示を置き換えます。Chrome節を外した分の指示は、このどちらかのフラグでホストが補います。
システムプロンプト全体の構成や版ごとの違いは、Claudeのシステムプロンプト変更履歴ページの読み方で追えます。企業導入でClaude in Chromeを使う場合の権限設計とネットワーク制御は、Claude in Chromeの管理者設定にまとまっています。
似た発想の変数に CLAUDE_CODE_PROVIDER_MANAGED_BY_HOST があります。モデルプロバイダーのルーティングをホストが管理する場合に使い、設定ファイル側の CLAUDE_CODE_USE_BEDROCK や ANTHROPIC_BASE_URL といった選択を無視させます。対象は違いますが、組み込みホストが特定の領域を自分の管理下に置くための変数という点は共通です。
ブラウザ操作そのものを止めたいとき
CLAUDE_CODE_DISABLE_CFC_PROMPT を設定しても、Claude in Chromeのツール呼び出しは止まりません。止めたいときの手段は、目的別に次の3つです。
止めたい範囲ごとの手段
1回のセッションだけ
claude --no-chromeで、そのセッションのChrome連携をオフにします。ツールを呼ばせない
permissions.denyにmcp__claude-in-chrome__*を書きます。ツールがClaudeの文脈から取り除かれます。組織で禁止する
managed settingsの
deniedMcpServersにclaude-in-chromeを入れると、サーバー自体がブロックされます。
permissions.deny の書き方は次のとおりです。
{
"permissions": {
"deny": ["mcp__claude-in-chrome__*"]
}
}サーバー名の部分を固定して、配下のツール名だけをワイルドカードで指定する形で、Claude Codeのdenyルールの標準的な構文です。bare-name形式のglob拒否に一致したツールは、Claudeの文脈から取り除かれます。
Chrome節を省くと、その節の指示はプロンプトから消えます。ブラウザ操作の指示はホスト側で用意します。リスクと対策の全体像はClaude in Chromeを安全に使う方法とリスク対策にあります。
組み込みホストが自前の指示文を渡すなら、その指示文自体に外部入力が混ざらない経路を選ぶ必要があります。外部のテキストが指示に化ける例は、Claude Codeのサーバー側プロンプトインジェクションで扱っています。
変数が効かない条件
最初の条件はバージョンです。変数を読むのはClaude Code v2.1.257以降で、組み込み先のランタイムがバージョンを固定しているなら、先にそれを見ておきます。
次の条件は認証方式です。Chrome連携は /login でのサインインが前提で、APIキーや claude setup-token で作った長期トークンで認証したセッションでは、--chrome を付けてもChrome連携はオフのままです。ブラウザ拡張がそれらの資格情報で認証できないためです。そのためAPIキーで動かすホストでは、そもそも外すべきChrome節が出番を持ちません。
Chromeを「Enabled by default」にしている環境では、ブラウザツールとその指示が常に読み込まれて、コンテキストの消費が増えると案内されています。ブラウザを使う場面が限られるなら、既定オンにしたまま節だけ外すより、--chrome を必要なときだけ付ける運用もあります。
まとめ
CLAUDE_CODE_DISABLE_CFC_PROMPT は、ツールを削らずに指示文だけを差し替えたいホスト向けの、Chromeに限定した設定です。ブラウザ操作そのものを制限したいなら、この変数ではなく --no-chrome や permissions.deny を選びます。設定を変えたあとは、claude を起動し直して反映させてください。
参照した一次ソース
この記事の記述は、次の一次ソースと照合しています。更新時に参照先が変わった場合は一覧も更新します。