Claude Codeで作業の内容がパソコンの外へ出る道を減らすための設定を、Anthropicが公式の見本として公開しました。医療情報を扱う組織向けの「HIPAA向け設定例」ですが、中身は「外へ送る機能を止める」「コマンドの通信先を絞る」「認証情報を隠す」など、ほかの会社でもそのまま参考になる情報漏洩対策です。

日本時間2026年10月10日1時16分、公式リポジトリanthropics/claude-codeに変更が取り込まれました。設定例のフォルダーに、settings-hipaa.json、managed-mcp-hipaa.json、説明書のREADME-hipaa.mdの3つを加えるものです。対象はClaude Code v2.1.285以降(デスクトップアプリはv2.19675.0以降)です。Anthropicは「推奨する出発点の見本であり、自社の環境に何が必要かを決めて確かめる責任は各組織にある」と明記しています。本記事は、これらのファイルと公式資料を10月15日に確認して書いています。編集部でも、設定例の一部だけを写した検証用のフォルダーでClaude Codeを動かし、通信と認証情報を守る設定が実際に効くかを確かめました。

元資料:anthropics/claude-code:HIPAA向けの設定例を追加(PR #100293)。2026年10月15日確認。

情報漏洩を防ぐ公式の設定例とは

HIPAAは、米国で医療情報を守るための法律です。Claudeでは、Enterpriseプランで、医療情報の扱いについてAnthropicと契約(BAA)を結んだ組織に「HIPAA向けの設定」が適用されます。適用の手続きを進めるのは、組織の最上位の管理者とAnthropicです。公式資料には、その組織のIT担当者が開発者のパソコンを準備する手順が書かれています。今回の設定例は、この資料から案内されている、より完全な見本です。

設定例は、会社が全員のパソコンに配る「管理用の設定」(managed-settings.json)として使う前提です。開発者が自分で書く設定より強く、開発者が上書きできない項目を含みます。説明書には「HIPAA向けの設定が有効かどうかに関係なく効く」と書かれていて、医療以外の会社でも、情報漏洩対策の設定集として読むことができます。

外へ送る機能、コマンドの通信、認証情報、の3つの出口を並べた図
公式のHIPAA向け設定例が狭める3つの出口公式の設定例の項目を、編集部が「外へ送る機能」「コマンドの通信」「認証情報」の3つに分けて整理した図です。
編集部の説明図(Image 2.5生成)。画像はタップで原寸表示。

情報漏洩の出口を狭める3つの設定

設定例の中心は、作業の内容がパソコンの外へ出る道を1つずつ狭めることです。説明書の項目を、編集部で3つに分けて整理すると次のようになります。

出口設定例がすること主な項目
外へ送る機能Webページを取りに行くWebFetch、claude.aiのプロジェクトへのファイル送信、アーティファクトの公開などを使えなくする。リモート操作、ほかの会話からのメッセージ受け取り、claude.aiのスキル・プラグインの同期も止めるpermissions.deny、disableRemoteControl、enableArtifact、crossSessionInbound
コマンドの通信Claudeが実行するコマンドをサンドボックスの中で動かし、通信できる相手を会社が決めたホストだけにする。サンドボックスが起動できなければ、Claude Code自体を起動させないsandbox.enabled、failIfUnavailable、network.allowedDomains
認証情報~/.sshや~/.aws/credentialsなどの鍵のファイルを、Claudeの読み書きとコマンドの両方から隠す。AWS_SECRET_ACCESS_KEYやGITHUB_TOKENなどの環境変数も、コマンドからは見えなくするpermissions.denyのRead(~/.ssh/**)など、sandbox.credentials

このほかにも、次のような項目が並びます。

  • /feedbackでAnthropicへ会話を送る機能や、外部のサービスへのエラー報告などの付随の送信を止める
  • ログインをclaude.aiの自社の組織だけに限る(forceLoginMethod・forceLoginOrgUUID)
  • Amazon Bedrockなどを経由した利用を禁じる(allowedProviders)
  • MCPサーバー・フック・権限の規則・プラグインを、会社が配ったものだけにする
  • 手元の会話の記録を30日で消す(cleanupPeriodDays)
  • 利用の記録は自社の集計先へ送り、依頼文や返答の本文は送らない

一方で、Web検索(WebSearch)は止めていません。HIPAA向けの設定を適用した組織について、公式資料に「WebFetchは使えないが、Web検索は使える」とあり、設定例もWebSearchを拒否に入れていません。検索の言葉そのものが外へ出ることまで防ぎたい場合は、自社でWebSearchも拒否に足すかどうかを決める必要があります。

情報漏洩対策の設定を配る前に直す所

設定例は、そのまま配ると動きません。説明書は、配る前に次の箇所を書き換えるよう求めています(抜粋)。

  1. forceLoginOrgUUIDの仮の値を、自社の組織IDに置き換える。組織IDが一致しないうちは、claude.aiでログインするとClaude Codeが毎回起動時に終了する
  2. 4つのプロキシの値を自社のプロキシに置き換える。プロキシがなければ、その4行とNO_PROXYの2行を消す。仮の値のままだと起動しない
  3. 利用の記録の送り先OTEL_EXPORTER_OTLP_ENDPOINTを、自社の集計先に向ける
  4. sandbox.network.allowedDomainsの仮のホストを、自社のGitのホストとパッケージの置き場に置き換える
  5. 確認したMCPサーバー・プラグインの置き場・フックのURLを、それぞれの許可リストへ足す。MCPサーバーとプラグインの置き場の一覧を空のままにすると、MCPサーバーもプラグインの置き場もすべて止まる(フックのURLの一覧は、開発者が自分で書いた一覧と合わせて使われる)
  6. 社内で使うほかのシェルや秘密のファイルを、permissions.denyとsandboxの両方へ足す

Windowsの場合、WSLを使わずに直接動かすときやWSL1ではサンドボックスが動かないため、この設定のままだとClaude Codeは起動時に終了します。ターミナルはWSL2の中で使い、デスクトップアプリ用にはsandboxを除いた写しを配る、と説明書にあります。LinuxとWSL2では、bubblewrapとsocatのインストールも必要です。配った後は、1台で「curl https://example.comが失敗する」「許可した自社のGitのホストには届く」ことを確かめるよう、説明書が手順を示しています。

編集部で試した:情報漏洩を防ぐ設定は本当に効くか

2026年10月15日、Mac StudioのターミナルでClaude Code 2.1.300を動かし、公式の設定例の一部が実際に効くかを確かめました。検証用フォルダーの.claude/settings.jsonには、settings-hipaa.jsonから次の3種類の項目だけを写しています。

  • 外へ送る機能:permissions.denyのWebFetch
  • コマンドの通信:sandboxの有効化(enabled・failIfUnavailable・allowUnsandboxedCommands: false)と、通信を許すホスト(network.allowedDomains)。仮のgithub.example.comなどの代わりに、実在するregistry.npmjs.orgだけにしました
  • 認証情報:sandbox.credentials.envVarsでAWS_SECRET_ACCESS_KEYをdenyにする

会社として配る管理用の設定ではなく、このフォルダーだけに効くプロジェクトの設定としての実験です。起動時は--setting-sources projectでユーザー設定とローカル設定を読まないようにし、MCPサーバーも空にしました(このMacには管理用の設定ファイルを置いておらず、個人のClaude Maxのアカウントで試しています)。モデルはSonnet 5.5を使っています。使えるツールはBashとWebFetchの2つに絞り、curlとtestのコマンドとWebFetchは、確認なしで実行できるよう事前に許可しました。本物の認証情報を使わないよう、AWS_SECRET_ACCESS_KEYには実在しないテスト用の値を入れて起動しました。

Claudeには、次の4つの試験を依頼しました。①WebFetchでexample.comを開く、②curlで許可していないexample.comへ接続する、③許可したregistry.npmjs.orgへ接続する、④test -n "$AWS_SECRET_ACCESS_KEY" && echo set || echo emptyで、変数がコマンドから見えるかを確かめる。あわせてClaudeには、拒否された操作を別の方法で試し直さないよう指示しました。

ターミナルにclaude --versionの結果と.claude/settings.jsonの中身が表示され、最後の行でClaude Codeを起動している画面
①起動前:設定ファイルを確認して起動Claude Codeの版(2.1.300)と、検証用フォルダーの.claude/settings.jsonを表示しました。①WebFetchの拒否、②通信を許すホストをregistry.npmjs.orgだけにする設定、③AWS_SECRET_ACCESS_KEYを隠す設定です。④最後の行でClaude Codeを起動します。
実操作のスクリーンショット(赤枠・番号のみ後付け)。画像はタップで原寸表示。
Claude Codeの起動表示の下に、4つの試験を頼む日本語の依頼が入力され、処理が始まった画面
②依頼を入力して実行①起動したClaude Code(v2.1.300・Sonnet 5.5)に、②4つの試験を1回ずつ行う依頼を送りました。下に「Mulling…」と出ていて、考え始めた状態です。
実操作のスクリーンショット(赤枠・番号のみ後付け)。画像はタップで原寸表示。
curlでexample.comに接続しようとしてエラーになり、右下にSandbox blocked 1 operationと表示された画面
③実行中:許可していない通信が止まる①Claudeがcurlでexample.comへの接続を試し、「CONNECT tunnel failed, response 403」で失敗しました。②右下に「Sandbox blocked 1 operation」と、サンドボックスが1件止めたことが表示されています。
実操作のスクリーンショット(赤枠・番号のみ後付け)。画像はタップで原寸表示。
npmのレジストリへのcurlが200、環境変数の確認がempty、最後に4項目の結果のまとめが表示された画面
④結果:許可したホストは200、隠した変数は空①許可したregistry.npmjs.orgへのcurlは200で成功。②AWS_SECRET_ACCESS_KEYの確認はemptyで、コマンドからは見えませんでした。③最後にClaudeが4つの結果をまとめています(WebFetchは「ツールがない」)。
実操作のスクリーンショット(赤枠・番号のみ後付け)。画像はタップで原寸表示。
実操作の録画:設定の確認から、4つの試験の結果まで2026年10月15日、Mac StudioのターミナルでClaude Code 2.1.300を起動し、設定ファイルの表示→依頼→許可外の通信の拒否→許可ホストへの成功→環境変数の確認までを、ウィンドウごと連続で録画しました(80秒・早送りなし)。
実操作の連続画面収録(約50.0fps・実際の取得間隔で再生)。再生ボタンで操作の流れを確認できます。

結果は次のとおりです。

試験設定を置いたフォルダーでの結果効いた設定
①WebFetchでexample.comツールの一覧になく、実行されなかったpermissions.denyのWebFetch
②example.comへのcurl失敗(CONNECT tunnel failed, response 403)。画面下に「Sandbox blocked 1 operation」と表示sandbox.network.allowedDomains
③registry.npmjs.orgへのcurl成功(200)。許可したホストには届いたsandbox.network.allowedDomains(許可リストに入れたホスト)
④AWS_SECRET_ACCESS_KEYの確認empty(コマンドからは見えない)sandbox.credentials.envVars

④のemptyが本当に設定の効果なのかを確かめるため、sandbox.credentialsだけを外した別のフォルダーで、同じテスト用の値を入れて起動し、同じtestコマンドを実行しました。結果はsetです(録画のためにもう一度実行した2回目もset)。隠す設定がなければ変数はコマンドから見え、設定を置けば見えなくなる、という違いが確かめられました。

比較用フォルダーで起動したClaude Codeに、同じ環境変数の確認を依頼した画面
⑤比較用のフォルダーで同じ確認を依頼①環境変数の隠し設定だけを外した別のフォルダー(hipaa-credential-control)でClaude Codeを起動しています。②同じテスト用の値を入れた変数がコマンドから見えるかを確かめる依頼を、もう一度送りました。
実操作のスクリーンショット(赤枠・番号のみ後付け)。画像はタップで原寸表示。
比較用フォルダーで同じ環境変数の確認がsetと表示された画面
⑥比較:隠し設定がないと変数は見える①隠し設定を外したフォルダーでは、同じコマンドの結果がsetになりました。値そのものは表示していません。隠し設定のあるフォルダーでは、同じ確認(試験④)の結果がemptyだったので、違いは設定によるものと分かります。
実操作のスクリーンショット(赤枠・番号のみ後付け)。画像はタップで原寸表示。
比較の録画:隠し設定を外したフォルダーでの同じ確認環境変数の隠し設定だけを外したフォルダーで、同じtestコマンドを実行した場面の連続録画です(15秒)。結果はsetでした。
実操作の連続画面収録(約49.9fps・実際の取得間隔で再生)。再生ボタンで操作の流れを確認できます。

編集部は起動時にWebFetchを使えるツールに指定し、事前に許可もしていました。それでもWebFetchは、ツールの一覧そのものから外れていました。Claudeの返答も「このセッションにWebFetchツールがない」というものです。公式資料でも、ツール名だけを拒否に書くと、そのツールは会話から外れると説明されています。設定を配る側は、開発者から「WebFetchが見えない」という問い合わせが来ることも想定しておくとよいでしょう。

今回試したのは設定例のうち3種類の項目だけです。設定を置いたフォルダーでの4つの試験は各1回、比較のフォルダーでの確認は2回(どちらもset)の観察です。ログインの制限、MCPサーバーの制限、会社全体への配布、HIPAA向けの設定が有効な組織での動きは試していません。この結果は、医療情報の扱いが法律に合っていることの証明にはなりません。

編集部で試した入力と結果

使用環境:Claude Code CLI(Mac Studioのターミナルで対話モードを起動) / Claude Code 2.1.300

Claude Codeを実際に動かした手順(CLI)

  1. 起動した画面:claude --versionが2.1.300を返し、settings.jsonにWebFetchの拒否・許可ホスト・環境変数の隠し設定があることを画面で確認した
  2. 実際の依頼を入力:Claude Code v2.1.300(Sonnet 5.5・Claude Max)が起動し、依頼文が送られて処理が始まった
  3. 実行中の様子:example.comへのcurlがプロキシの403で失敗し、画面下にSandbox blocked 1 operationが表示された
  4. 完了後の結果を確認:許可ホストへのcurlが200、AWS_SECRET_ACCESS_KEYの確認がempty、WebFetchはツールがないと報告された

成果物の確認:Claudeのまとめだけでなく、画面に出た各コマンドの実際の結果(403での失敗・200・empty)と会話記録のツール結果を照合し、比較用フォルダーのsetとも見比べた。

今回、実際に入力した内容
公開用の架空データによる設定検証です。以下4項目は独立した試験です。各項目を1回だけ行い、その項目が拒否された場合は代替経路や権限変更で再試行せず次の項目へ進んでください。1) WebFetchでhttps://example.comを取得。ツールが利用できない場合は実行せず未提供と記録。2) Bashで curl -sS --connect-timeout 5 --max-time 10 -o /dev/null -w "%{http_code}" https://example.com を実行。3) Bashで curl -sS --connect-timeout 5 --max-time 10 -o /dev/null -w "%{http_code}" https://registry.npmjs.org/ を実行。4) Bashで test -n "$AWS_SECRET_ACCESS_KEY" && echo set || echo empty を実行。変数は架空の教材値です。値そのものは絶対に表示しないでください。コマンドは追記や改変をせず、そのまま実行。最後に実結果を4行で報告。HIPAA準拠の証明とは扱わない。
実際に得られた結果
1. WebFetch (https://example.com): 未実行です。このセッションにWebFetchツールがないため、「未提供」と記録します。
2. curl https://example.com: 失敗しました。プロキシが CONNECT で 403 を返し(curl exit 56)、HTTPコードは 000 でした。サンドボックスが example.com:443 への通信を拒否しています。代替経路での再試行はしていません。
3. curl https://registry.npmjs.org/: 成功し、HTTP 200 でした。
4. `AWS_SECRET_ACCESS_KEY` の確認: `empty` でした。この環境では未設定か空です。値は表示していません。

これは設定検証の結果で、HIPAA準拠の証明ではありません。

Claude Codeが返した結果のテキストを保存 ↓(Claude Codeの会話記録から、まとめの返答を一字も変えずに取り出したものです)

情報漏洩対策で開発者が失うものと、残る穴

説明書は「配る前に開発者へ伝えること」として、失われる機能を挙げています(ターミナルで使う時に関わるものを抜粋)。

  • 開発者が自分で作ったスキル・コマンド・エージェントが読み込まれない
  • 開発者が自分で書いた許可・拒否の規則が無視され、確認画面の「常に許可」も出なくなる
  • VS CodeやJetBrainsとの連携(/ideや差分の表示)が使えない
  • /goalが使えない
  • サンドボックスの中では、社内のパッケージ置き場のトークンが見えず、インストールが失敗することがある

また公式資料によると、HIPAA向けの設定が適用された組織では、MCPのツールを必要な時だけ探して読み込む機能(MCP tool search)がオフになり、MCPのツールは最初から会話に読み込まれます。ENABLE_TOOL_SEARCHや管理用の設定でも元に戻せません。MCPサーバーをたくさんつなぐ組織では、会話に最初から読み込まれる量が増えることも、あらかじめ開発者に伝えておきましょう。

逆に、この設定でも守れない範囲も書かれています。代表的なものは次のとおりです。

  • GitHub Actionsで動くClaude Codeや、管理していない個人のパソコン、ブラウザなど、この設定を読まない使い方
  • 許可したホストへは、サンドボックスの中からでもデータを送れる。同じGitのホストのほかのリポジトリも含む
  • リポジトリやイシュー、CIの出力に紛れ込んだ指示に従って、開発者自身のシェルやGitを通じて内容が外へ持ち出されてしまうこと。この設定で防げるのは、通信の許可リストで行き先を絞るところまで
  • 手元の会話の記録の削除は、Claude Codeを起動した時にしか走らず、自動メモリーは消さない
  • 開発者が!で打ったコマンドや、開発者自身のexcludedCommandsに当たるコマンド、許可したプラグイン・MCPサーバー・フックは、サンドボックスの外で動く
  • 作業フォルダーの中の秘密は隠さない:設定例が隠すのは、ホームフォルダーの鍵のファイルと決まった環境変数だけです。リポジトリの.envやsecrets/は対象外なので、permissions.denyにRead(./.env)やRead(./secrets/**)を足します。サンドボックスが有効なら、この拒否はコマンドの読み取り禁止にも自動で加わります。.claudeignoreというファイルは効果がない、と公式資料に明記されています

autoモードについては、HIPAA向けの設定が有効な組織では会話がManualモードで始まるものの、autoモードは使えるままだと説明されています。公式資料は、autoモードを使うならサンドボックスを残すか、disableAutoModeでautoモードを無効にするよう勧めています。autoモードの仕組みはautoモードの記事で、拒否の設定の書き方はdeny設定・サンドボックスの記事で詳しく説明しています。

情報漏洩対策のよくある質問

医療の会社でなくても使えますか?

使えます。説明書に、HIPAA向けの設定が有効かどうかに関係なく効くと書かれています。ただし、ログインの組織ID、プロキシ、集計先、許可するホストは、自社の値に置き換えないと動きません。Amazon Bedrockや社内の中継サーバー、APIキーでClaude Codeを使っている会社は、ログインと接続先を限る項目のせいで起動できなくなるので、その項目を外すか書き換えます。

個人のパソコンで試すだけなら、どこに書けばよいですか?

編集部の実験のように、プロジェクトの.claude/settings.jsonにpermissionsとsandboxの部分を書けば、そのフォルダーの中で効き目を確かめられます。このとき--setting-sources projectを付けないと、ユーザー設定の許可と合わさります。MCPサーバーやコネクターの制限はプロジェクトの設定では試せません。開発者が上書きできない形で全員に効かせるには、管理用の設定として配る必要があります。

Claudeに会話の内容を学習されないようにする設定ですか?

違います。この設定例は、パソコンの上のClaude Codeから内容が外へ出る道を減らすためのものです。送った内容の扱いは公式資料のData usageにまとまっています。Claude Codeは依頼文と返答(Claudeが読んだファイルやコマンドの結果も会話に含まれます)を、使っている接続先のAPIへ送ります。Free・Pro・Maxでは、設定で学習への利用を許すと学習に使われ5年保存、許さなければ30日保存です(プライバシーの設定でいつでも変えられます)。Team・Enterprise・APIでは、組織が開発パートナープログラムなどで提供を選んだ場合を除き、学習には使われません。標準の保存期間は30日です。Claude for Enterpriseの条件を満たす組織では、Anthropicのアカウントチームが組織ごとに、保存しない設定(ZDR)を有効にできます。手元のパソコンにも、会話の記録が~/.claude/projects/に平文で、初期設定では30日残ります(cleanupPeriodDaysで変えられます。デスクトップアプリやCoworkの会話は、既定ではこの期限の対象外です)。/feedbackで送った会話は5年保存されます。設定例は/feedbackやエラー報告も止めており、こうした付随の送信も減らせます。

設定が効いているかは、どう確かめますか?

説明書の手順では、Claudeにcurl https://example.comを実行させて失敗すること、許可した自社のGitのホストには届くことを確かめます。公式資料では、/statusで設定がどこから読み込まれたかも確認できます。編集部の実験でも、許可していないホストへのcurlは403で失敗し、画面の下に「Sandbox blocked 1 operation」と表示されました。

まとめ:情報漏洩対策は、公式の見本から始めて自社用に直す

Anthropicが公開したHIPAA向けの設定例は、Claude Codeから外へ出る道を、外へ送る機能・コマンドの通信・認証情報の扱いで狭める、実用的な見本です(3つの分け方は編集部の整理です)。編集部の実験でも、WebFetchがツールから外れ、許可していないホストへの通信が止まり、許可したホストには届くことを確かめました。テスト用に入れた秘密の環境変数も、コマンドからは見えなくなりました。そのまま配ると動かない項目があるため、説明書の手順で自社の値に直し、失う機能と残る穴を開発者と共有してから使ってください。社内のルールに合わせた設計や導入の進め方は、PLaiのAI社員導入支援でも相談を受けています。