結論:止める範囲を先に決める

Claude Code 2.1.285の公式changelogには、WebFetch toolを無効化するCLAUDE_CODE_DISABLE_WEB_FETCHが追加されています。ただし、全sessionで外部取得を止めたいのか、特定project・domain・利用者だけを制御したいのかで、環境変数とpermission denyの選び方は変わります。

確認する一次情報はClaude Code changelogとsettings公式資料、permissions公式資料です。changelogで正式な変数名と追加versionを確認し、settingsで環境変数の設定場所、permissionsでWebFetchのdenyとscopeを確認します。Managed Agentsのdomain制限は別surfaceの制御なので、Claude CodeのWebFetch停止と混同しません。

環境変数とdeny ruleを比較する

方法向く場面限界・確認点
CLAUDE_CODE_DISABLE_WEB_FETCH端末・CI・組織でWebFetch自体を止める適用されたprocessと設定scopeを確認する
permissions.denyのWebFetchsettingsのpolicyとして拒否を記録するmanaged・project・localの優先関係を読む
domain policy許可domainや外部情報の利用方針を決めるWebFetch以外のnetwork surfaceまで網羅しない
人間確認例外的なURL取得を都度判断する無人jobではprompt待ちになり得る

環境変数の停止は切り分けが明快ですが、全ての作業で必要な場合にだけ使います。deny ruleは組織の設定台帳へ載せやすい一方、設定が届いていないsessionでは期待した拒否になりません。公式資料にない「外部通信が全て止まる」という主張はせず、WebFetch toolの停止範囲として説明します。

8手順でWebFetchの停止を検証する

  1. 対象を全端末、CI、特定project、特定jobのどれにするか決めます。
  2. Claude Codeのversionと、実行時のenvironment、settings source、permission modeを保存します。
  3. まず試験用projectでCLAUDE_CODE_DISABLE_WEB_FETCHを設定します。
  4. sessionを新規起動し、設定がprocessへ継承されているかを表示とログで確認します。
  5. WebFetchを必要とする安全なテスト依頼を行い、toolが実行されず拒否されることを記録します。
  6. 次にmanagedまたはproject settingsでWebFetchのdenyを適用し、結果を比較します。
  7. 許可が必要な例外はdomain、担当者、期限、取得データ、保存先を申請書にします。
  8. 再有効化時も同じテストを実行し、取得結果の正確性ではなく適用された制御を合格条件にします。

環境変数をshellの一時設定にすると、IDE、subagent、CIへ継承されない場合があります。実行surfaceごとにprocess境界を表にし、どの設定がどこへ届くかを確認します。テストで実際の機密URLを取得せず、組織が許可した公開テストページだけを使います。

外部取得ポリシーの判断軸

判断軸質問停止条件
データ分類取得したURL・本文・credentialに機密性はあるか機密情報を含むjobはWebFetchを無効化
業務目的一次資料の確認か、探索か、不要な補助か目的と許可domainがない取得を拒否
実行主体対話型か、CIか、subagentか無人実行はデフォルトdeny
証跡URL、時刻、利用者、判断を残せるかログが欠ける場合は再取得しない

既存のMCPセキュリティや監査ログと同様、toolを止めるだけでなく、例外を誰が承認し、いつ解除するかを決めます。WebFetchを止めても、利用者が別のnetwork toolやcopy-and-pasteで外部情報を持ち込む可能性は残るため、情報持ち出しの全体方針へ接続します。

企業導入前チェックリスト

  • 停止対象のsurfaceとjobを定義した
  • 2.1.285以上で正式変数名を確認した
  • 環境変数の設定元とprocess継承を確認した
  • WebFetch denyのscopeと優先関係を確認した
  • 許可domain、データ分類、取得目的を台帳化した
  • 無人CIと対話型sessionの例外を分けた
  • ログ、再有効化、期限、停止担当を決めた

社内標準では、環境変数を全端末へ一律に配る前に、調査業務と機密処理をprofileで分けます。調査profileは許可domainと保存先を限定し、機密処理profileはWebFetchを無効化します。どちらも設定の出所を/statusや運用台帳で確認できるようにし、設定変更を人間の承認なしに自動反映させません。

FAQ

WebFetchを無効化するとClaude Code全体がオフラインになりますか?
公式changelogの記載はWebFetch toolの無効化です。他のnetwork surfaceまで止まると断定せず、必要な制御を個別に設計します。
環境変数とdenyを両方設定してよいですか?
可能ですが、同じ目的の二重設定は原因切り分けを難しくします。標準は一つに定め、例外時だけもう一方を使い、適用scopeを記録します。
外部取得ポリシーを無料診断できますか?
できます。許可domain、データ分類、job、ログ、例外、停止条件を無料診断(60秒)で整理します。

WebFetchの停止は、情報の正確性や検索品質を保証する設定ではありません。目的が一次資料の確認なら、管理されたsource listを人間が更新し、取得できない時は手動確認へ切り替える手順を用意します。公式資料にない料金、削減効果、全通信停止の主張は避け、実際の契約とネットワーク設定を別途readbackします。設定変更のレビューでは、HTTP hookの許可先やChannelsの外部接続を同じ境界と誤認せず、別のtoolとして棚卸しします。

外部取得を使うかどうかの判断は、ツールの便利さだけでなく、対象データ、実行主体、証跡、停止条件で決めます。CLAUDE_CODE_DISABLE_WEB_FETCHとdeny ruleを試験用projectで比較し、期待する境界を確認してからmanaged settingsへ広げることが、再現可能な企業運用につながります。再有効化の前には、期限切れの例外を取り消し、許可domainと取得先の変更を再承認します。

設定の有効期限と所有者を台帳で管理し、担当者が変わっても同じ確認を再現できるようにします。判断できない取得は、取得結果を使わず人間確認へ戻します。例外の終了時刻も必ず記録します。