blog

Claude Codeのセキュリティ対策と設定|個人・企業で今すぐやるべきチェックリスト【2026】

Claude Code セキュリティ完全ガイド|企業導入の設定・リスク管理のイメージ

Claude Codeは、ファイルの書き換えやコマンド実行の前に許可を求める権限の仕組みを持ち、settings.jsonの許可・拒否ルールやサンドボックスで、AIが触れられる範囲を絞れます。企業で使う場合は、権限ルールの設計と定期的な権限の棚卸しを導入前に決めておくことが、安全に使う前提です。

Claude Codeは、Anthropicの生成AI「Claude(クロード)」が、手元のパソコンでファイルを読み書きし、コマンドを実行するツールです。できることが多いぶん、何を許すかは利用者が決める必要があります。この記事では、個人が今日できる設定のチェックリストから、権限ルールの書き方、サンドボックス、送ったデータの保存期間、企業・チームでの管理方法、書かれたコードの脆弱性を見つける公式機能「Claude Security」までを、Anthropic公式ドキュメント(2026年10月16日確認)にもとづいて解説します。

目次

Claude Codeのセキュリティの全体像:起きうること7つと、止める仕組み

先に、Claude Codeを使うときに起きうる問題と、それを止める公式の仕組みを一覧にします。どれも設定で大きく減らせますが、1つの仕組みですべてを防げるわけではありません。

起きうること止める主な仕組み
① 秘密情報(.env・APIキー・~/.ssh)を読まれ、会話に入るReadのdenyルール、サンドボックスの credentials 設定
② ファイルの削除や上書きなど、取り返しのつかない操作Manualモードの確認、askルール、denyルール
③ 外部への送信(curl・wget など)通信するコマンドは既定で自動承認しない、denyルール、サンドボックスの通信制限
④ 知らないリポジトリに仕込まれた設定や、プロンプトインジェクション信頼ダイアログ、非対話(-p)で動かすときの読み込み制限
⑤ 信頼できないMCPサーバー提供元の選別、.mcp.json のサーバーごとの承認、組織でのMCP管理
⑥ 書かれたコードに脆弱性が残る/security-review、security-guidance プラグイン、Claude Security
⑦ 送ったコードやプロンプトの保存・学習への利用プライバシー設定、契約の種類、計測(テレメトリ)の停止

確認画面で「Yes」を押し続けると何が起きるか

Manualモードでは、Claude Codeはファイルの編集やコマンドの実行の前に確認を出します。ここで「Yes, and don’t ask again」を選ぶと、Bashコマンドとウェブ取得(WebFetch)のドメインについては、許可のルールがリポジトリの直下の .claude/settings.local.json に保存され、以後そのリポジトリのすべてのセッションで確認なしに通ります。ファイル編集の許可はファイルに保存されず、セッションの終わりまでです(公式 Configure permissions)。

つまり、確認を読まずに押し続けると、広い許可が気づかないうちに積み上がっていきます。後で紹介する /permissions で定期的に見直すのはこのためです。

もう1つ知っておきたいのが、起動したときのモードです。v2.1.283以降、ターミナルとVS Codeの拡張機能では「autoモード」が組み込みの開始モードです。autoモードでは、利用者の代わりに別の分類器モデルが操作を確認し、危険と判断したものだけを止めます。すべての操作を自分で確認したい場合はManualモードで起動します(公式 Permission modes)。

実際に公開された脆弱性:知らないリポジトリから始まるものが多い

Anthropicは、Claude Codeの脆弱性をGitHubのセキュリティアドバイザリで公開しています(anthropics/claude-code のSecurity Advisories、2026年10月16日時点で35件。Claude Desktopの分を含みます)。そのうち、この記事の対策と関係が深いものを抜き出しました。

識別番号(公開日)内容(公式の説明の要約)修正された版
CVE-2026-33068(2026年3月)悪意のあるリポジトリが .claude/settings.json で defaultMode を bypassPermissions にすると、初回に信頼ダイアログが出ないまま、確認を省くモードになった2.1.53
CVE-2026-21852(2026年1月)リポジトリの設定ファイルが ANTHROPIC_BASE_URL を攻撃者のサーバーに向けると、信頼の確認より前にAPIへの要求が送られ、APIキーが漏れうる状態だった2.0.65
CVE-2026-55607(2026年6月)Gitのworktreeの扱いを悪用し、サンドボックスの外でコードを実行できた(悪意のあるリポジトリを取り込み、そこで動かすことが条件)2.1.163
CVE-2026-39861(2026年4月)サンドボックスの中で作ったシンボリックリンクをたどって、作業フォルダの外へ書き込めた2.1.64
CVE-2026-25724(2026年2月)シンボリックリンク経由で、denyルールで禁止したファイルを読めた2.1.7
CVE-2026-24887(2026年2月)findコマンドの解析の誤りで、確認画面を通さずにコマンドを実行させられた2.0.72
CVE-2026-54316(2026年6月)WebFetchで事前に許可されていた huggingface.co を使い、確認なしの取得でデータを外へ持ち出す経路があった2.1.163
CVE-2026-103012(2026年9月)保存済みのAPIキーが優先され、組織のサーバー管理設定(denyルールなど)が適用されないままセッションが始まることがあった2.1.260

公式の説明から読み取れる点は3つです。1つ目は、多くが「悪意のあるリポジトリを開く」「信頼できない内容をClaudeに読ませる」ことを条件にしている点です。知らないリポジトリを安易に信頼しない、という基本が効きます。2つ目は、denyルールやサンドボックスにも抜け道が見つかってきた点です。1つの仕組みに頼らず重ねるのはこのためです。3つ目は、どれも修正済みで、公式は「自動更新の利用者には修正が届いている。手動で更新している場合は最新版にするように」と案内している点です。更新を長く止めること自体がリスクになります。手元の版は claude --version で確認できます。

依存パッケージの乗っ取り:2026年3月のaxiosの例

Claude Code自体の不具合とは別に、Claudeが実行する npm install などで、乗っ取られたパッケージを入れてしまう危険もあります。2026年3月31日、GitHubのアドバイザリデータベースは、JavaScriptで広く使われる通信ライブラリ axios の 1.14.1 と 0.30.4 にマルウェアが含まれていたとして、警告(GHSA-fw8c-xr5c-95f9「Malware in axios」)を公開しました。警告は「このパッケージを入れた、または動かしたコンピューターは完全に乗っ取られたものとみなし、そこに保存していた秘密情報と鍵をすべて、別のコンピューターから直ちに変更すること」「パッケージを削除しても、入り込んだ不正なソフトがすべて消える保証はない」としています。

パッケージのインストール時に動くスクリプトは、利用者と同じ権限で動きます。Claude Codeに依存パッケージの追加を任せる場合は、次の2つを組み合わせると、こうした事故の被害を小さくできます(どちらも公式の設定です)。

  • Bash(npm install *) などをaskルールに入れ、パッケージの追加は毎回自分で確認する(autoモードでも、askルールは効きます。実際の画面は下の「実際に試して分かったこと」にあります。ルールは書かれた文字列で一致を調べるので、npm i のような別の書き方を使う場合はそれも足します)
  • サンドボックスを有効にし、credentials で ~/.ssh・クラウドの認証情報・トークンの環境変数を拒否し、通信先を allowedDomains に絞る。サンドボックスの制限は、コマンドから起動されたプログラム(インストール時のスクリプトを含む)にも及びます
{
  "permissions": {
    "ask": [
      "Bash(npm install *)",
      "Bash(pnpm add *)",
      "Bash(pip install *)"
    ]
  }
}

ただし、許可した通信先(パッケージの配布元など)の中で起きる乗っ取りまでは、サンドボックスでは見分けられません。依存パッケージの確認は、公式の整理どおりCIの既存のスキャナーでも行います。

守りは3つの層で考える

  • 権限(パーミッション):Claude Code本体が、ツールの呼び出しごとに「許可・確認・拒否」を判定します。この判定はClaude Codeが行うもので、モデルが行うのではありません。プロンプトやCLAUDE.mdに書いた指示はClaudeが試みる動きを変えますが、Claude Codeが許可する範囲は変えません。
  • サンドボックス:Bashなどのシェルコマンドと、そこから起動したプログラムが触れるファイルと通信先を、OSの仕組みで制限します。
  • 環境の分離:dev container(開発用コンテナ)や仮想マシンの中でClaude Code全体を動かし、手元のパソコンから切り離します。

公式は、権限とサンドボックスを「互いを補う2つの層」と説明しています。プロンプトインジェクションでClaudeの判断がだまされても、サンドボックスの制限は残るためです。

関連記事Claude Codeの権限設定はどうする? / Claude Codeのサンドボックスの使い方は? / Claude Codeで学習させない設定は?

まずやるべきClaude Codeのセキュリティ設定チェックリスト(個人・チーム共通)

Claude Codeのセキュリティは、ほとんどが手元の設定で決まります。企業導入の検討に入る前に、個人でも今日から実施できる対策を、公式ドキュメント(Security・Permissions・Permission modes・Sandboxing、2026年10月16日確認)に沿って一覧にしました。

#やること具体的な方法
1起動時の権限モードを確かめるv2.1.283以降はautoモードが既定です。すべて自分で確認したいなら claude --permission-mode manual で起動するか、~/.claude/settings.json の permissions.defaultMode を "default"(Manualの設定値)にします。実行中は Shift+Tab で切り替えられます
2.envなど秘密情報のファイルを読ませないpermissions.deny に Read(./.env)・Read(./.env.*)・Read(./secrets/**) を書きます
3ホームフォルダの直下で起動しないプロジェクトのフォルダに移ってから起動します。ホームフォルダの直下では信頼が保存されず、毎回確認が出ます
4知らないリポジトリを安易に信頼しない初めてのフォルダでは信頼ダイアログが出ます。中身を確認してから「Yes」を選びます。非対話の -p ではこの確認が出ません
5通信や削除のコマンドを広く許可しないcurl・wget は既定では自動承認されません。Bash(curl *) のような広い許可は入れず、使わないならdenyに入れます
6Bashをサンドボックスで動かす/sandbox で有効にします。LinuxではbubblewrapとsocatがないとDependenciesタブに不足が出て、サンドボックスなしで動きます。~/.ssh などの認証情報は既定では読めるので、credentials で個別に拒否します
7MCPサーバーは信頼できる提供元だけにする自作か、信頼できる提供元のものを使います。プロジェクトの .mcp.json のサーバーは個別に承認が求められます
8「常に許可」したルールを見直す/permissions で、これまでに保存した許可ルールを確認・削除します
9変更をセキュリティの観点で確認する/security-review で現在のブランチの変更を確認します。作業中に自動で確認させるなら security-guidance プラグインを入れます
10学習への利用と保存期間を確認するFree・Pro・Maxは claude.aiのプライバシー設定でいつでも変更できます(Team・Enterprise・APIは商用規約)。保存期間は下の表で確認できます

1・2・5番は、次の1つの設定ファイルにまとめて書けます(~/.claude/settings.json に書くと自分のすべてのプロジェクトに、プロジェクトの .claude/settings.json に書くとそのプロジェクトに効きます)。保存後、Claude Code内で /status を実行すると、設定ファイルが読み込まれたかを確認できます。

{
  "permissions": {
    "defaultMode": "default",
    "deny": [
      "Read(./.env)",
      "Read(./.env.*)",
      "Read(./secrets/**)",
      "Bash(curl *)",
      "Bash(wget *)"
    ],
    "ask": [
      "Bash(git push *)"
    ]
  }
}

この例では、秘密情報のファイルを読ませず、curl・wget を禁止し、git push の前には必ず確認を出します。対象は自分の環境に合わせて変えてください。

実際の画面:初めてのフォルダで出る確認

表の4番目(知らないリポジトリを安易に信頼しない)に当たる画面です。信頼ダイアログは、まだ信頼していないフォルダでClaude Codeを対話モードで起動したときに出ます。

Claude Codeを初めてのフォルダで起動すると出る確認画面。Accessing workspaceの下にフォルダの場所が表示され、「No, exit」と「Yes, I trust this folder」のどちらかを選ぶ(2026年10月13日・Claude Code 2.1.296で撮影)
初めてのフォルダで出る確認画面(2026年10月13日にこの記事のために撮影・Claude Code 2.1.296・Linux)。既定の選択は「No, exit」なので、中身を確認してから「Yes」を選びます。

このダイアログには、そのフォルダの設定ファイルが許可しようとしているルールや追加のフォルダが並びます。プロジェクトの .claude/settings.json にある permissions.allow のルールは、ここで信頼するまで使われません(denyとaskのルールは制限するだけなので、信頼の前から効きます)。

公式によると、ホームフォルダの直下でClaude Codeを起動した場合、この信頼は今回のセッションだけのものになり、ディスクに保存されないため、起動のたびに確認が出ます。設定でこれを保存することはできません。プロジェクトのサブフォルダで起動すれば、フォルダ(Gitのリポジトリならリポジトリの直下)ごとに信頼が保存されます。

Claude Security(脆弱性スキャン)とは:書かれたコードの脆弱性を見つける公式機能

この後で解説する権限やサンドボックスが「AIに危険な操作をさせない」ための守りだとすれば、Anthropicはもう1つ、「書かれたコードに潜む脆弱性を見つける」ための機能も提供しています。2026年2月20日に「Claude Code Security」が、TeamプランとEnterpriseプランの利用者向けの限られた研究プレビューとして発表されました。既知のパターンに照らすのではなく、部品どうしの関係やデータの流れを読み取って脆弱性を探し、人が確認するための修正案(パッチ)を出します(出典:Anthropic公式発表)。

2026年10月時点の公式製品ページでは、名称が「Claude Security」になり、Claude Enterprise向けのパブリックベータと、Claude Code用のプラグイン(ベータ)が案内されています(出典:Claude Security 公式ページ、2026年10月16日確認)。

項目公式ページに記載されている内容
何をするかコードベースをスキャンし、指摘を自ら検証し直したうえで修正案を出します。修正は人が確認・承認してから適用します
重視する脆弱性メモリ破壊、インジェクション、認証の回避、複雑なロジックの誤りなど、深刻度の高いもの
運用の機能ディレクトリ単位のスキャン、定期スキャン、SlackやJiraなどへの通知(Webhook)、CSV・Markdownでの書き出し
Claude.ai のアプリEnterprise向けのパブリックベータ。管理者が管理コンソールで有効にし、GitHubのリポジトリをつないでスキャンします。スキャンには Claude Mythos 5.1 が使われます
Claude Code用プラグインすべてのClaude Codeの利用者向けにベータで提供。コードを自分の環境に置いたまま、スキャン・検証・修正ができます。使うモデルは、自分のClaude Codeのアカウントで使えるモデルです

Claude Codeで使えるセキュリティ確認の道具は5段階

公式ドキュメントは、脆弱性の確認を1つの道具に任せず、段階ごとに重ねる形を勧めています。どの段階で何を使うかを、公式の表に沿ってまとめます。

いつ道具確認する対象
作業中security-guidance プラグインClaudeが書いているコードの、よくある脆弱性(インジェクション、安全でないデシリアライズ、安全でないDOMの使い方など)。見つけたら同じセッションで直します
必要なときに1回/security-review現在のブランチの変更を1回だけ確認します
必要なときに深くClaude Security プラグインリポジトリ全体や差分を複数のエージェントで調べ、検証済みの指摘と修正案を出します
プルリクエストCode Review(Team・Enterprise)コードベース全体を踏まえた、正しさとセキュリティの確認
CI既存の静的解析・依存関係のスキャナー言語ごとのルール、サプライチェーン(依存パッケージ)の確認など

security-guidance プラグインは、ターミナルのClaude Codeで次のように入れます。入れた後は自動で動き、呼び出すコマンドはありません。Python 3.7以降が必要で、ターンの終わりやコミットのときの確認はGitのリポジトリの中でだけ動きます。

/plugin install security-guidance@claude-plugins-official

公式は、どの段階も「保証ではなく、後の確認の代わりにはならない」と注意しています。/security-review の使い方はClaude Codeのレビュー用コマンドの解説で詳しく説明しています。

企業で導入を検討する場合は、「Claude Codeの権限・設定(次の節以降)」と「Claude Securityなどによる脆弱性の確認」を、別の対策として分けて考えると整理しやすくなります。前者はAIの操作の範囲を絞るもの、後者は人やAIが書いたコードの欠陥を見つけるものです。

権限(パーミッション)の仕組み:6つのモードと確認の出方

権限モードは6種類

権限モードは、Claudeが確認なしで何を実行できるかの基準を決めます(公式 Permission modes、2026年10月16日確認)。

モード確認なしで動くもの向いている場面
default(Manual)読み取りだけすべて自分で確認したいとき、機密を扱う作業
acceptEdits読み取り、ファイル編集、mkdir・touch・mv・cp などのよく使うファイル操作(作業フォルダ内)確認しながらコードを直していくとき
plan読み取り(autoモードが使えるときは、分類器が認めたコマンドも)変更する前にコードを調べるとき
autoすべて(裏で分類器が安全を確認)長い作業、確認の回数を減らしたいとき
dontAsk作業フォルダ内の読み取りと、事前に許可したツールだけ。確認が出るものは拒否締めつけたCIやスクリプト
bypassPermissionsすべて隔離したコンテナや仮想マシンの中だけ

denyルールは、bypassPermissions を含むすべてのモードで効きます。また、設定ファイルなどの「保護されたパス」への書き込みは、bypassPermissions など一部の場合を除いて自動承認されません。組織では、bypassPermissions を使えないように管理設定で止めることもできます(後述)。

ツールの種類ごとの確認と、「今後確認しない」の範囲

Manualモードでの確認の出方は、ツールの種類で決まります。

ツールの種類確認「Yes, and don’t ask again」の範囲
読み取り(ファイルの読み取り、Grep)作業フォルダと追加したフォルダの中なら不要—
Bashコマンド必要(ls・cat・git status など、組み込みの読み取りコマンドを除く)リポジトリとコマンドごとに保存
ファイルの編集・書き込み必要セッションの終わりまで
ウェブ取得(WebFetch)必要(公式があらかじめ許可したドキュメントのドメインを除く)リポジトリとドメインごとに保存
ウェブ検索(WebSearch)必要リポジトリごとに保存

実際の画面:ファイルを作るときの確認

上の表の「ファイルの編集・書き込み」の行に当たる画面です。Claude Codeがファイルを作る前に、内容を見せて許可を求めます。

Manualモードでhello.txtの作成を頼んだときの確認画面。Create file hello.txtの内容が表示され、「Yes」「Yes, and switch to accept edits」「No」の3つから選ぶ(2026年10月13日撮影)
Manualモードでファイルの作成を頼むと、実行前にこの確認画面が出ます(2026年10月13日撮影)。「Yes」でこの1回だけ許可、「No」で拒否です。2番目を選ぶと、そのセッションではファイル編集の確認が省かれます。

Manualモードには、ほかにも次のような守りがあります(公式 Security)。

  • 内容を解析しきれないBashコマンドは、実行の前に確認が出ます。Bash(git *) のような一部分への許可ルールがあっても、この確認は省かれません。
  • どのルールにも当てはまらないコマンドは、既定で確認が必要です(当てはまらなければ止める作り)。
  • 起動したフォルダとそのサブフォルダの外をファイルツールで読み書きする前に、確認が出ます。ただしこれは確認画面による境界なので、承認したBashコマンドは、自分のユーザーの権限が及ぶ場所ならどこにでも書けます。OSのレベルで止めたい場合はサンドボックスを使います。

権限ルールの書き方:allow・ask・denyと設定ファイルの置き場所

チェックリストの「.envを読ませない」「広すぎる許可を絞る」を実際に設定するには、権限ルールの書き方を知っておく必要があります。公式ドキュメント(Configure permissions、2026年10月16日確認)の要点をまとめます。

ルールは3種類。判定は deny → ask → allow の順

種類動き
allow指定したツールの使用を、確認なしで許可します
ask指定したツールを使おうとするたびに、確認を求めます
deny指定したツールの使用を禁止します

ルールは deny、ask、allow の順に評価され、最初に当てはまったものが結果になります。ルールの細かさは順番に影響しません。そのため、広いdenyルール(例:Bash(aws *))があると、より細かいallowルール(例:Bash(aws s3 ls))を書いても実行できません。allowでdenyの例外は作れないという点が、はまりやすいところです。

ルールの書式

書き方意味
Bash(または Bash(*))すべてのBashコマンドに当てはまります。denyに書くと、ツールそのものがClaudeから見えなくなります
Bash(npm run build)npm run build というコマンドに当てはまります
Bash(rm *)rm で始まるコマンドに当てはまります。denyに書くとツールは残り、当てはまる呼び出しだけが止まります
Read(./.env)現在のフォルダの .env の読み取りに当てはまります
Read(./secrets/**)secrets フォルダ以下の読み取りに当てはまります
WebFetch(domain:example.com)example.com への取得に当てはまります

読ませたくないファイルは Read の deny で指定する(.claudeignore は効かない)

公式ドキュメントは、ファイルやフォルダを読ませないようにするには Read のdenyルールを追加する、としています。プロジェクトに .claudeignore というファイルを置いても効果はなく、その内容は Read のdenyルールへ移すよう案内されています。

  • Read のdenyルールは、同じパスへの編集・書き込み(新規作成を含む)も止めます。ノートブックの編集(NotebookEdit)は対象外なので、どのツールにも変えさせたくないパスには Edit のdenyも足します。
  • Read・Edit のdenyルールが効くのは、Claudeの組み込みのファイル操作と、cat・head・tail・sed・tee などClaude Codeが認識できるBashのファイル操作、> file のようなリダイレクトまでです。
  • PythonやNodeのスクリプトが自分でファイルを開く場合のように、別のプログラムを経由した読み書きには効きません。そこまで止めたい場合は、OSのレベルで制限するサンドボックスを併用します。

実際の画面:denyルールで.envが読めなかったとき

settings.jsonのdenyルールでRead(./.env)を拒否した状態で.envの中身を尋ねた画面。Claude Codeは「権限設定でこのファイルへの読み取りが拒否されているため読めない」と答え、下部にmanual mode onと表示されている(2026年10月13日撮影)
上の設定例のうちRead(./.env)のdenyを入れた検証用フォルダで「.envの中身を教えてください」と頼んだ結果(2026年10月13日撮影)。Claude Codeは読めず、「権限設定で拒否されている」と答えました。下部のmanual mode onは、確認画面を出す起動方法(--permission-mode default)で撮ったためです。

危険なコマンドを先にdenyへ入れておく

確認画面で「Yes」を押し続ける使い方になりやすい人ほど、通信や削除のコマンドは最初からdenyに入れておくと安全です。次は、通信のコマンドと削除のコマンドを止める例です(対象は環境に合わせて変えてください)。

{
  "permissions": {
    "deny": [
      "Bash(curl *)",
      "Bash(wget *)",
      "Bash(rm *)"
    ]
  }
}

公式によると、denyルールはコマンドの文字列に書かれたとおりに一致を調べます。そのため、書き方を変えた呼び出しまでは止められない場合があります。通信そのものを止めたいときは、コマンドの文字列に頼らないサンドボックスの通信制限を併用します。権限設定の全体はClaude Codeの権限設定の解説で詳しく説明しています。

設定ファイルの置き場所と優先順位

ファイル効く範囲使いどころ
~/.claude/settings.json自分のすべてのプロジェクト個人の基本設定(.envを読ませない、など)
.claude/settings.jsonそのプロジェクト(リポジトリに入れてチームで共有)チーム共通のルール
.claude/settings.local.jsonそのプロジェクトの自分だけ共有したくない個人用の調整。「今後確認しない」で保存された許可もここに入ります
管理設定(managed settings)組織全体管理者が配る、利用者側では上書きできない設定

どこか1か所でdenyされたツールは、ほかの場所の設定や起動時の引数で許可することはできません。たとえばユーザー設定で許可していても、プロジェクト設定でdenyしていればブロックされます(逆も同じです)。

設定した後は、/permissions で、どのルールがどの設定ファイルから読み込まれているかを一覧で確認できます(画面は下の「企業・チームで導入するときの設定方針」の節にあります)。

サンドボックスで、コマンドが触れる範囲をOSのレベルで絞る

サンドボックスは、Claudeが実行するシェルコマンドと、そこから起動したプログラムを、決められた範囲の中だけで動かす仕組みです。既定ではオフで、Claude Code内で /sandbox を実行するか、設定ファイルで sandbox.enabled を true にすると有効になります(公式 Sandboxing、2026年10月16日確認)。

有効にしたときに、コマンドが既定で届く範囲は次のとおりです。読み取りはパソコンのほぼ全体に届く点に注意が必要です。

対象既定の範囲変える設定
書き込み作業フォルダ、ユーザーごとの一時フォルダ、追加したフォルダ(保護されたパスは書き込み不可)filesystem.allowWrite・filesystem.denyWrite
読み取りパソコンのほぼ全体。~/.ssh や ~/.aws/credentials などの認証情報も含みますfilesystem.denyRead・credentials
通信直接は外へ出られず、手元のプロキシが許可したドメインと照合します(許可リストは最初は空)network.allowedDomains・network.deniedDomains
環境変数Claude Codeから引き継ぎます(中の秘密情報も含む)credentials・CLAUDE_CODE_SUBPROCESS_ENV_SCRUB

公式は「組み込みの認証情報の拒否リストは無く、指定したファイルと変数だけが制限される」と明記しています。SSHの鍵やクラウドの認証情報は、自分で credentials に書く必要があります。次は、認証情報を読ませず、決めたドメインにだけ通信させる設定の例です。

{
  "sandbox": {
    "enabled": true,
    "allowUnsandboxedCommands": false,
    "credentials": {
      "files": [
        { "path": "~/.ssh", "mode": "deny" },
        { "path": "~/.aws/credentials", "mode": "deny" }
      ],
      "envVars": [
        { "name": "GITHUB_TOKEN", "mode": "deny" }
      ]
    },
    "network": {
      "allowedDomains": ["github.com", "*.npmjs.org"]
    }
  }
}

allowUnsandboxedCommands を false にすると、サンドボックスの中で失敗したコマンドを、Claudeが外で実行し直す逃げ道(確認つきの再実行)を止められます。

サンドボックスの外で動くもの

サンドボックスが包むのはシェルコマンドだけです。次のものは外で動くため、それぞれ別の手当てが必要です。

  • Read・Edit・Write・WebFetch・WebSearch などの組み込みのツール:権限ルールに従います。denyRead ではReadツールは止まらず、allowedDomains ではWebFetchは制限されません。
  • フック(hooks)、手元で動くMCPサーバー、ステータスラインのコマンド、apiKeyHelper など:利用者と同じ権限で動きます。
  • 自分で ! から打ったコマンド、excludedCommands に入れたコマンド、サンドボックスの外での再実行を認めたコマンド。

動く環境にも違いがあります。macOSは標準の仕組み(Seatbelt)で動き、LinuxとWSL2では bubblewrap と socat が必要です。Windowsのネイティブ環境ではサンドボックスが使えず、コマンドはサンドボックスなしで動きます(使うならWSL2の中でClaude Codeを動かします)。また、必要なものが無くてサンドボックスが起動できないときは、既定ではサンドボックスなしでコマンドが動きます。起動できないときに止めたい場合は sandbox.failIfUnavailable を true にします。サンドボックスの詳しい設定はClaude Codeのサンドボックスの解説で説明しています。

実際に試して分かったこと:.envのdenyとサンドボックスはどこまで効くか

ここまでの説明が実際の動きと合っているかを、この端末で確かめました。条件は次のとおりです。

  • 日時と環境:2026年10月16日、Linux(Ubuntu)、Claude Code v2.1.301
  • 検証用の空のフォルダを作り、.env には「TEST_TOKEN=test」という無害な1行だけを書きました(本物の秘密情報は使っていません)
  • プロジェクトの .claude/settings.json に、チェックリストの例と同じ Read(./.env)・Read(./.env.*) のdenyを書きました
  • 同じフォルダに、.env を開いて表示するだけのPythonスクリプト read_env.py(中身は print(open('.env').read()) の1行)を置きました
試したこと結果
Claudeに「.envの中身を教えて」と頼む(Readツール)読めませんでした(上の「denyルールで.envが読めなかったとき」の画面)
Bashで cat .env を実行させる確認画面も出ずに拒否されました。表示は「Permission to use Bash with command cat .env has been denied.」
python3 read_env.py を実行させる(サンドボックスなし)denyでは止まらず、実行の確認画面が出ました。「Yes」を選ぶと TEST_TOKEN=test が表示されました
同じことを、python3 の実行を許可した状態で非対話(-p)で行う確認なしで実行され、中身が表示されました
sandbox.enabled を true にする(socatが入っていない状態)サンドボックスは動かず、コマンドはサンドボックスなしで実行されました。対話の画面では警告が目立たず、/sandbox の画面で「socat: not installed」と分かりました
socatを用意してサンドボックスが動く状態で、同じスクリプトを実行するPermissionError: [Errno 13] Permission denied: '.env' で読めませんでした
サンドボックスが動く状態で、作業フォルダの外にある別のテスト用ファイルをPythonで読む読めました(既定では、読み取りは作業フォルダの外にも届きます)
そのファイルを sandbox.credentials の files に "mode": "deny" で書くPermissionError で読めなくなりました
autoモードで、askルール Bash(npm install *) を入れて npm install を頼む自動では通らず、確認画面が出ました(「No」を選び、インストールはしていません)

denyを入れても、Pythonスクリプト経由では読めた

Readのdenyルールは、Claudeの組み込みのファイル操作と、cat のようにClaude Codeが読み取りと認識できるコマンドには効きました。一方、.env を開くPythonスクリプトの実行は、denyでは止まりませんでした。止めていたのは、Manualモードの実行確認だけです。

Read(./.env)をdenyにした検証用フォルダで、.envを開くPythonスクリプト(python3 read_env.py)の実行を頼んだ画面。denyでは止まらず、Bashコマンドの実行確認(Do you want to proceed?)が出ている(Claude Code v2.1.301・2026年10月16日撮影)
Read(./.env) をdenyにしたまま、python3 read_env.py の実行を頼んだ画面(2026年10月16日撮影)。denyでは止まらず、通常のコマンドと同じ実行確認が出ました。2番目の「Yes, and don’t ask again for: python3 *」を選ぶと、以後は python3 で始まるコマンドが確認なしで通ります。
確認画面でYesを選んだ結果、Pythonスクリプト経由で.envの中身(TEST_TOKEN=test)が表示された画面(2026年10月16日撮影)
確認画面で「Yes」を選んだ結果。スクリプトを経由して .env の中身(検証用の TEST_TOKEN=test)が会話に表示されました。

これは公式ドキュメントの「別のプログラムを経由した読み書きには効かない」という説明どおりの動きです。確認画面の内容が python3 read_env.py だけなので、スクリプトの中身を知らなければ、.env を読むことに気づけません。確認画面で「今後確認しない」を選んで python3 * を許可していた場合は、確認なしで中身が会話に入ります(非対話の -p で実際にそうなりました)。

なお、同じ会話で先に cat .env が拒否されていたときは、Claudeがスクリプトの中身を読み、「設定を迂回することになる」として実行を控えました。ただしこれはモデルのその場の判断で、設定による制限ではありません。新しい会話で頼んだときは、そのまま実行の確認が出ました。

サンドボックスは、必要なものが無いと動かないまま使えてしまう

サンドボックスを有効にする設定を入れても、Linuxで socat が入っていない状態では、サンドボックスは動きませんでした。非対話の実行では「Sandbox disabled: sandbox is enabled but dependencies are missing: socat not installed」「Commands will run WITHOUT sandboxing.」という警告が出ましたが、対話の画面ではそのまま普段どおりに使え、Pythonスクリプトは .env を読めました。

/sandboxのDependenciesタブ。bubblewrapはinstalled、socatはnot installedと表示されている(Linux・Claude Code v2.1.301・2026年10月16日撮影)
Claude Code内で /sandbox を開き、Dependenciesタブを選んだ画面(2026年10月16日撮影)。bubblewrapは入っていますが、socatが「not installed」です。この状態では、サンドボックスを有効にする設定を入れても、コマンドはサンドボックスなしで動きました。

socatを用意してサンドボックスが動く状態にすると、同じスクリプトは読み取りを拒否されました。公式の説明どおり、Readのdenyルールがサンドボックスの読み取り制限にも加わり、Pythonのような別のプログラムにもOSのレベルで効いたことになります。

サンドボックスが動く状態で同じPythonスクリプトを実行した画面。PermissionError: [Errno 13] Permission denied: '.env' で読み取りが拒否された(2026年10月16日撮影)
サンドボックスが動く状態で、同じ python3 read_env.py を実行した結果(2026年10月16日撮影)。PermissionError で .env を読めませんでした。

サンドボックスを使うなら、有効にした後に /sandbox のDependenciesタブで不足が無いかを確かめ、動かないときに止めたい場合は sandbox.failIfUnavailable を true にしておくと確実です。また、作業フォルダの外にあるファイルは、credentials に書くまで読めました。守りたい認証情報のファイルは、1つずつ書き出しておく必要があります。

autoモードでも、askルールは確認画面を出した

autoモードは、分類器が安全と判断した操作を確認なしで進めます。そこに Bash(npm install *) のaskルールを入れておくと、npm install は自動では通らず、確認画面が出ました。上の「依存パッケージの乗っ取り」で紹介した設定は、autoモードで使う場合にも効きます。

autoモードでnpm installを頼んだ画面。Ask rule Bash(npm install *) overrides auto mode for this command と表示され、確認画面が出ている(2026年10月16日撮影)
autoモードで npm install left-pad を頼んだ画面(2026年10月16日撮影)。「Ask rule Bash(npm install *) overrides auto mode for this command.」と表示され、確認が求められました。ここでは「No」にあたる操作で止め、インストールはしていません。

検証から決めた設定の組み合わせ

  1. .env などは、Readのdenyルールで読ませないようにする(組み込みのツールと cat などを止める)
  2. サンドボックスを有効にし、/sandbox で動いていることを確かめ、failIfUnavailable を true にする(スクリプト経由の読み取りを止める)
  3. 作業フォルダの外にある認証情報のファイルは、credentials に1つずつ書く
  4. 確認画面で python3 * や node * のような広い許可を「今後確認しない」で保存しない。保存したものは /permissions で見直す
  5. パッケージの追加など、止めて確かめたい操作はaskルールにする(autoモードでも確認が出る)

知らないリポジトリ・プロンプトインジェクション・MCPへの備え

プロンプトインジェクションは、コードのコメントや外部のファイル、Webページなどに悪意のある文を紛れ込ませ、AIの指示を上書きしようとする手口です。Claude Codeでは、知らないリポジトリそのものにも、設定ファイルやMCPサーバーの指定が入っている場合があります。

非対話(-p)で知らないリポジトリを動かすときの注意

claude -p での実行や Agent SDK では、信頼ダイアログが出ません。公式の表によると、そのフォルダを信頼していなくても、次のものは使われます。

  • プロジェクトの設定ファイルにあるフック、env の設定、apiKeyHelper などの補助コマンド
  • .mcp.json にあるMCPサーバー(承認の有無にかかわらず、確認なしで接続されます)

一方、プロジェクトの permissions.allow のルールは使われません。自分が書いていないリポジトリで -p を使う前には、公式が挙げる次の方法で、読み込むものを絞ります。

  • --setting-sources user を付けて、プロジェクトの設定ファイルと .mcp.json を読まないようにする
  • --bare で起動し、プロジェクトのフック・スキル・サブエージェント・プラグイン・MCPサーバーを読まないようにする(env の設定などは残ります)
  • --settings '{"disableAllHooks": true}' で、その実行だけフックを止める(ユーザー設定に書くだけでは、プロジェクト設定で戻されることがあります)

プロンプトインジェクションへの公式の備え

  • curl・wget など、Webから内容を取ってくるコマンドは既定で自動承認されません。
  • WebFetchでは、多くの場合、ページをそのままClaudeに渡さず、別のモデルの呼び出しで要約した答えを渡します。
  • 内容を解析しきれないコマンドは確認が出て、どのルールにも当てはまらないコマンドも既定で確認が必要です(Manualモード)。

あわせて公式は、信頼できない内容を扱うときの注意として、「承認する前に提案されたコマンドを確認する」「信頼できない内容をClaudeに直接パイプしない」「重要なファイルへの変更を確かめる」「外部のWebサービスとやり取りするときは仮想マシンで動かす」「怪しい動きは /feedback で報告する」の5つを挙げています。そのうえで、これらの保護はリスクを大きく下げるが、すべての攻撃を防げるわけではない、と明記しています。

MCPサーバー:監査の責任は利用する側にある

プロジェクトで使うMCPサーバーは .mcp.json に書き、ソース管理に入れられます。ただし、ほかの範囲の設定やclaude.aiのコネクタ、プラグインが追加するサーバーもあるため、.mcp.json を見るだけでは、セッションが読み込むサーバーのすべては分かりません。Anthropicはディレクトリに載せるコネクタを掲載基準に照らして確認しますが、個々のMCPサーバーのセキュリティ監査や管理は行いません。自作か信頼できる提供元のものだけを使い、組織では管理設定で使えるサーバーを制限します。MCPの基本はClaude CodeのMCPの解説で説明しています。

Windowsでの注意:WebDAV

Windowsで使う場合、公式はWebDAVを有効にすることや、\\* のようなWebDAVのサブフォルダを含みうるパスへのアクセスを許すことを勧めていません。WebDAVはMicrosoft自身がセキュリティ上の理由で非推奨にしている機能で、有効にするとClaude Codeが外部のホストへ通信し、権限の仕組みを迂回する経路になりうるためです。

次に読む:Claude Codeの権限設定はどうする?

Claude Code 権限設定|allow/deny・最小権限【2026】

コードやプロンプトの送信先・保存期間・学習への利用(公式の記載)

Claude Codeは手元で動きますが、モデルとやり取りするために、入力したプロンプトとモデルの出力をネットワーク経由で送ります(通信はTLS 1.2以上で暗号化)。保存期間と学習への利用は、アカウントの種類で決まります。公式のデータ利用の文書(Data usage、2026年10月16日確認)の記載を、種類ごとに表にまとめました。

対象保存期間補足(公式の記載)
Free・Pro・Max(モデル改善への利用を許可)5年将来のClaudeモデルの改善に使われます。設定はいつでも変更できます
Free・Pro・Max(許可しない)30日モデルの学習には使われません
Team・Enterprise・API・他社のクラウド基盤標準30日顧客が自らデータの提供を選ばない限り、Claude Codeに送ったコードやプロンプトで生成モデルを学習しません
ゼロデータリテンションサーバー側に残さない条件を満たした Claude for Enterprise での Claude Code 向け。標準のEnterpriseには含まれず、組織ごとに有効化されます
/feedback・/bug・/share で送った会話5年送るときに、現在のセッションだけか、ほかのセッションも含めるかを選びます
セッション品質の調査で、追加の「Yes」を選んだ場合最長6か月評価だけなら会話は送られません。「Yes」を選んだときだけ会話の記録が送られます(既知のAPIキーの形は伏せられますが、ソースコードはそのまま送られます)
この端末に残る会話の記録既定30日~/.claude/projects/ の下に平文で保存されます。cleanupPeriodDays で期間を変えられます

送る情報を減らしたい場合の設定も、公式に載っています。使用状況の計測は DISABLE_TELEMETRY=1、エラー報告は DISABLE_ERROR_REPORTING=1、/feedback は DISABLE_FEEDBACK_COMMAND=1、アンケートは CLAUDE_CODE_DISABLE_FEEDBACK_SURVEY=1 で止められます。CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC を設定すると、必須でない通信をまとめて止められます。計測にはコード・プロンプト・ファイルパスは含まれないと公式は説明しています。Amazon Bedrock・Google Cloud の Agent Platform・Microsoft Foundry・Claude Platform on AWS を使う場合、計測・エラー報告・/feedback の送信は既定でオフです。

注意したい点が3つあります。

  1. WebFetchツールは、URLを取得する前に、ホスト名(URL全体ではありません)を安全確認の一覧と照合するため api.anthropic.com へ送ります。この確認は、どのモデル提供元を使っていても動きます。社内のネットワークで api.anthropic.com を遮断していると、WebFetchは失敗します。
  2. 手元の会話の記録は平文で残ります。機密を扱う端末では、保存期間を短くするか、共有の端末で使わない運用を決めておくと安心です。
  3. APIキーやトークンは、macOSではキーチェーン(使える場合)に、Linuxでは所有者だけが読み書きできるファイル(権限0600)に保存されます。

Claude Code・AIエージェントの業務導入をご検討の方は、自社での開発実例を公開しているクリスタルメソッドの無料相談をご利用ください。

企業・チームで導入するときの設定方針

個人の設定は、利用者が自分で変えられます。組織として守りを揃えるには、設定の配り方・監視・更新の管理までを決めておきます。公式が「チームのセキュリティ」として挙げるのは、管理設定で組織の基準を強制する、承認済みの権限設定をバージョン管理で共有する、メンバーを教育する、OpenTelemetryの計測で利用状況を見る、ConfigChange フックでセッション中の設定変更を監査・ブロックする、の5つです。

managed settingsで、利用者が外せない守りを作る

管理者が配る管理設定(managed settings)の権限ルールは、ユーザー設定・プロジェクト設定・起動時の引数のどれでも上書きできません(公式 Deploy managed settings、2026年10月16日確認)。配り方は、端末の管理方法に合わせて選びます。

配り方置き場所読み込まれるとき
サーバーで管理claude.ai の管理コンソール起動時に取得し、その後1時間ごとに確認
MDM・OSのポリシーmacOSの構成プロファイル、Windowsのレジストリ(Jamf・Intune・グループポリシーなど)起動時
ファイルmacOS:/Library/Application Support/ClaudeCode/managed-settings.json
Linux・WSL:/etc/claude-code/managed-settings.json
Windows:C:\Program Files\ClaudeCode\managed-settings.json
起動時(ファイルが変わると読み直し)

公式の例は次のとおりです。秘密情報を読ませず、確認をすべて省く bypassPermissions モードを使えなくし、権限ルールの取得元を管理設定だけに限っています。

{
  "permissions": {
    "deny": [
      "Read(./.env)",
      "Read(./secrets/**)"
    ],
    "disableBypassPermissionsMode": "disable"
  },
  "allowManagedPermissionRulesOnly": true
}

管理設定で sandbox.allowUnsandboxedCommands を false にすると、サンドボックスは「管理者が必須にした」状態になり、リポジトリの設定ファイルでサンドボックスを緩める指定は無視されます。どの設定がどこから効いているかは、各端末の /status で確認できます。

実際の画面:/permissions で、配ったルールが効いているかを確かめる

チームで設定を配った後は、各自の環境でルールが効いているかを /permissions で確認してもらいます。どのルールがどの設定ファイルから読み込まれているかが一覧で出ます。

Claude Code内で/permissionsを実行したときの画面。Denyのタブに、プロジェクトのsettings.jsonに書いたRead(./.env)とRead(./.env.*)の2つのルールが並んでいる(2026年10月13日撮影)
/permissions のDenyタブ(2026年10月13日撮影)。プロジェクトの設定に書いたdenyルールが一覧で出ます。タブはほかに Allow・Ask・Workspace などがあります。

dev containerで、さらに分離する

特に機密度の高いリポジトリでは、公式はClaude Code全体をサンドボックスの実行環境やdev container(開発用コンテナ)の中で動かすことを勧めています。dev containerでは、Claudeが実行するコマンドは手元のパソコンではなくコンテナの中で動き、プロジェクトのファイルの変更は手元のリポジトリに反映されます。公式の参考用コンテナには、外への通信を許可した宛先だけに絞るファイアウォールのスクリプト(init-firewall.sh)が入っています。

ただし公式は、コンテナの中で確認を省く --dangerously-skip-permissions を使うと、悪意のあるプロジェクトがコンテナ内のもの(~/.claude にあるClaude Codeの認証情報を含む)を持ち出すのは防げない、と注意しています。信頼できるリポジトリだけで使い、~/.ssh やクラウドの認証情報をコンテナに入れない(リポジトリ単位や短い期限のトークンを使う)ことが勧められています。

Claude Code自体の更新と、サプライチェーンへの備え

Claude Codeは更新の頻度が高いツールです。新しい版にすぐ追従するか、少し待つかは設定で選べます(公式 Advanced setup、2026年10月16日確認)。

  • autoUpdatesChannel を "stable" にすると、おおむね1週間前の版を使い、大きな不具合のあった版を飛ばします。既定の "latest" は、出た版をすぐに受け取ります。組織では管理設定でチャンネルを揃えられます。
  • Homebrewでは、claude-code が stable、claude-code@latest が latest を追います。apt・dnf・apkのリポジトリは署名つきで、同じく2つのチャンネルがあります。
  • 各リリースには、全プラットフォームのバイナリのSHA256を記した manifest.json が公開され、AnthropicのGPGの鍵で署名されています。配布前に署名を確かめられます。
  • 自分たちの配布経路で版を固定したい場合、DISABLE_UPDATES で手動の更新も含めて止められます。

プロジェクトが使う依存パッケージの確認は、Claude Codeの機能ではなく、CIの既存のスキャナーで行う、というのが公式の整理です(上の5段階の表の最後の行)。

利用状況の監視と、設定変更の監査

  • OpenTelemetry:CLAUDE_CODE_ENABLE_TELEMETRY=1 を設定すると、利用状況の計測を自社の収集基盤へ送れます。プロンプトの中身の記録は既定でオフで、OTEL_LOG_USER_PROMPTS=1 を設定したときだけ記録されます。
  • ConfigChange フック:セッション中に設定ファイル・管理設定のファイル・スキルのファイルが変わったときに動き、変更の記録やブロックに使えます。
  • PreToolUse フック:ツールが実行される前に動き、危険なコマンドを止めるなど独自の確認を足せます。使い方はClaude Codeのフックの解説で説明しています。

クラウド実行(Claude Code on the web)とRemote Control

ブラウザから使う Claude Code on the web で、Anthropicが用意する環境を使う場合、公式は次の7つの守りを挙げています(組織が自社の環境で動かす場合、分離・通信・Gitの認証情報は自社の責任です)。

  • 分離された仮想マシン:セッションごとに、Anthropicが管理する独立した仮想マシンで動きます
  • 通信の制限:既定で制限され、無効にしたり、特定のドメインだけ許可したりできます
  • 認証情報の保護:GitHubの認証情報は暗号化してAnthropicのサーバーに保存され、仮想マシンには入りません。仮想マシンが持つのは、そのセッションだけに使える短い期限の認証情報です
  • pushの制限:GitHubへの通信を仲介するプロキシが、ブランチの削除と、タグなどブランチ以外のpushを拒否します。どのブランチを更新できるかは、GitHub側のブランチ保護ルールで決まります
  • 監査ログ:クラウドのセッション内のすべての操作が記録されます
  • 自動の片づけ:使われていないセッションの仮想マシンは回収されます
  • 削除:セッションはいつでも削除できます

一方、Remote Control(Webの画面から手元のClaude Codeにつなぐ形)は仕組みが違います。コードの実行とファイルの操作は手元に留まり、クラウドの仮想マシンやサンドボックスは使われません。通信はTLSでAnthropicのAPIを通り、つないでいる間は会話の記録が端末間で同期するためAnthropicのサーバーに保存されます。Webでの使い方はClaude Code on the webの解説で説明しています。

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

確認すること関連する仕組み
個人任せにせず、管理設定で組織の権限の基準を強制しているかmanaged settings
確認をすべて省くモードを使えなくしているかdisableBypassPermissionsMode
使ってよいMCPサーバーを決め、追加のときに社内で確認しているか管理設定のMCP制限、.mcp.json
外部へ送信しうるコマンド(curl・wgetなど)を個別に判断しているかpermissions.deny
サンドボックスを有効にし、認証情報のファイルを拒否しているかsandbox.credentials
セッション中の設定変更を記録・ブロックできるかConfigChange フック
機密度の高いリポジトリを、さらに分離しているかdev container
利用状況を計測しているかOpenTelemetry
更新のチャンネルを揃えているかautoUpdatesChannel
保存した許可ルールを定期的に見直しているか/permissions

導入審査で確認しておきたい4つの観点(IPAの資料も参考に)

IPAは「AIセキュリティ短信」で、生成AIを業務で使うときの留意点を継続して公表しています。導入前の社内審査では、その資料も参考にしながら、次の4点を確認しておくと整理しやすくなります。(1)データの送信先と利用規約の確認、(2)入力するデータの機密区分、(3)出力物の品質の検証、(4)利用ポリシーの策定と教育です。なお、この4点は実務上の整理として当サイトが挙げたもので、IPAの資料の項目をそのまま写したものではありません。

Claude Code自体に脆弱性を見つけたときの報告

公式が定める手順は、(1)公開の場で開示しない、(2)HackerOneのプログラムから報告する、(3)詳しい再現手順を添える、(4)公開する前に、Anthropicが対処する時間をとる、の4つです。社内でClaude Codeを使う開発者にも、この流れを伝えておきます。

Claude Codeのセキュリティの限界と導入判断の考え方

ここまでの設定を入れても、次の限界は残ります。導入を判断するときは、これを前提にしておきます。

  • denyルールは書かれた文字列で一致を調べる:書き方を変えた呼び出しや、スクリプトの中からのファイル操作は止められない場合があります。サンドボックスと組み合わせます。
  • サンドボックスはシェルコマンドだけを包む:組み込みのファイルツール、フック、手元のMCPサーバーは外で動きます。また、起動できないときは既定でサンドボックスなしに動きます。
  • プロンプトインジェクションは完全には防げない:公式も、どんな仕組みもすべての攻撃を防げるわけではないと明記しています。Claudeに渡す内容を必要な範囲に絞り、重要な操作は人が確認します。
  • 確認の責任は利用者にある:公式は、提案されたコードとコマンドを承認の前に安全の観点で確認する責任は利用者にある、としています。生成されたコードにも脆弱性が含まれうるため、重要な変更は人のレビューを残します。
  • 更新が速い:新しい機能が、新しい考慮点を生むことがあります。組織では stable チャンネルや更新前の確認の流れを決めておきます。

一次情報:自社の運用ルール(CLAUDE.md)にみるセキュリティの原則

クリスタルメソッド株式会社では、代表・河合継がClaude Codeを3.5世代から1年以上、自社のSEO運用ツールや記事生成基盤の開発という実務の中で使い続けています。その過程で、社内では「CLAUDE.md」と呼ぶ運用ルールに、セキュリティに関わる原則を段階的に追加してきました。

  • ファイルの生成・更新やプログラムの実行の前には、作業計画を報告し、承認を得てから実行する
  • 本番のデータベースや外部のAPIに触れる操作には、接続先の確認・試し実行(dry-run)・物理的なバックアップを義務づける
  • テスト用のダミーのキーやデータを、コメントであってもソースコードに残さない
  • Edit・Writeツールでファイルを変える直前に、自動でバックアップを取る仕組み(PreToolUse フック)を2025年11月に入れ、変更をいつでも戻せるようにしている

ただし、CLAUDE.mdの指示はClaudeの動きを方向づけるもので、Claude Codeが許可する範囲を変えるものではありません(上の「守りは3つの層で考える」のとおり)。そのため、守りたいことは権限ルールやフックといった「仕組み」に落とし込んでいます。個別の事故の内容は開示できませんが、共通して得た教訓は「破壊的な操作ほど、事前の確認と元に戻す手段を仕組みとして強制する」という一点です。

よくある質問

Q. Claude Codeの初期設定では、どの操作に確認が出ますか?
A. v2.1.283以降、ターミナルとVS Codeの拡張機能では、autoモード(別の分類器モデルが操作を確認し、危険と判断したものを止める)が組み込みの開始モードです(2026年10月16日確認)。すべての操作を自分で確認したい場合は、claude –permission-mode manual で起動するか、~/.claude/settings.json の permissions.defaultMode を “default”(Manualモード)にします。Manualモードは読み取りだけで始まり、編集やコマンドの実行の前に確認が出ます。

Q. 確認画面で「Yes, and don’t ask again」を選ぶと、どうなりますか?
A. Bashコマンドとウェブ取得のドメインについては、許可のルールがリポジトリの直下の .claude/settings.local.json に保存され、以後そのリポジトリのすべてのセッションで確認なしに通ります。ファイル編集の許可は保存されず、セッションの終わりまでです。保存されたルールは /permissions で確認・削除できます。

Q. .claudeignoreで読ませたくないファイルを除外できますか?
A. 公式ドキュメントによると、.claudeignore ファイルを置いても効果はありません。読ませたくないファイルは、settings.json の permissions.deny に Read(./.env) のようなルールで指定します。Readのdenyルールは同じパスへの編集・書き込みも止めますが、別のプログラムを経由した読み書きには効かないため、必要に応じてサンドボックスを併用します。

Q. Readのdenyルールに.envを入れれば、.envは絶対に読まれませんか?
A. いいえ。2026年10月16日にClaude Code v2.1.301で試したところ、Readツールと cat .env は拒否されましたが、.env を開くPythonスクリプトの実行はdenyでは止まらず、実行の確認画面で「Yes」を選ぶと中身が表示されました。サンドボックスが動く状態にすると、同じスクリプトは PermissionError で読めませんでした。denyルールとサンドボックスを組み合わせ、Linuxでは socat などが入っていてサンドボックスが実際に動いているかを /sandbox で確かめます。

Q. サンドボックスを有効にすれば、~/.ssh などの認証情報も守られますか?
A. いいえ。公式によると、サンドボックスの中のコマンドは、既定でパソコンのほぼ全体を読み取れ、~/.ssh や ~/.aws/credentials も含まれます。組み込みの拒否リストは無いため、sandbox.credentials に守りたいファイルと環境変数を書いて拒否します。

Q. Team・Enterpriseプランなど商用利用時、コードはモデルの学習に使われますか?
A. 公式のデータ利用の文書によると、Team・Enterpriseプラン、API、他社のクラウド基盤などの商用利用では、顧客が自らデータの提供を選ばない限り、送ったコードやプロンプトは生成モデルの学習に使われません。保存期間は標準で30日です。

Q. Claude Codeに送ったコードやプロンプトは、どれくらいの期間保存されますか?
A. 公式のデータ利用の文書(2026年10月16日確認)によると、Free・Pro・Maxでモデル改善への利用を許可している場合は5年、許可していない場合は30日です。Team・Enterprise・APIの標準は30日で、ゼロデータリテンションは条件を満たした Claude for Enterprise の組織で個別に有効化されます。/feedback で送った会話は5年保存され、手元の端末には会話の記録が既定で30日間、平文で残ります。

Q. 知らないフォルダでClaude Codeを起動したとき、「Yes, I trust this folder」は押してよいですか?
A. 自分で作ったプロジェクト、よく知られたオープンソース、チームのコードなど、中身を知っているフォルダだけ「Yes」を選びます。プロジェクトの設定ファイルにある許可ルールは、信頼するまで使われません。非対話の -p で起動した場合はこの確認自体が出ず、プロジェクトのフックや .mcp.json のサーバーが使われる点に注意が必要です。

Q. Claude Code Security(Claude Security)と /security-review は何が違いますか?
A. /security-review は、現在のブランチの変更を1回だけセキュリティの観点で確認するコマンドです。Claude Security は、リポジトリ全体や差分を複数のエージェントで調べ、検証済みの指摘と修正案を出す機能で、Claude.ai のアプリ(Enterprise向けパブリックベータ)と、Claude Code用のプラグイン(ベータ)があります。作業中に自動で確認させる security-guidance プラグインもあります。

Q. Claude Code自体に脆弱性が見つかったことはありますか?
A. あります。Anthropicは GitHub の anthropics/claude-code のセキュリティアドバイザリで脆弱性を公開しており、2026年10月16日時点で35件(Claude Desktopの分を含む)が載っています。信頼ダイアログを飛ばされるもの、サンドボックスの外へ書き込めるもの、denyルールをシンボリックリンクで回避できるものなどがあり、いずれも修正済みです。自動更新を止めず、手動で更新している場合は最新版にすることが勧められています。

Q. MCPサーバーのセキュリティは誰が担保していますか?
A. Anthropicはディレクトリに載せるコネクタを掲載基準に照らして確認しますが、個々のMCPサーバーのセキュリティ監査や管理は行いません。自作か信頼できる提供元のものだけを使い、組織では管理設定で使えるサーバーを制限します。

Q. Claude Code自体に脆弱性を見つけた場合、どう報告すればよいですか?
A. 公式が定める手順は、(1)公開の場で開示しない、(2)HackerOneのプログラムから報告する、(3)詳しい再現手順を添える、(4)公開する前にAnthropicが対処する時間をとる、の4つです。

Q. Windows環境でClaude Codeを使う際に注意すべき点はありますか?
A. Windowsのネイティブ環境ではサンドボックスが使えず、コマンドはサンドボックスなしで動きます。使う場合はWSL2の中でClaude Codeを動かします。また公式は、WebDAVの有効化や、WebDAVのサブフォルダを含みうるパスへのアクセスを許すことを勧めていません。権限の仕組みを迂回する経路になりうるためです。


まとめ:今日やること・導入前に決めること

個人で使う場合は、まず「起動時の権限モードの確認」「.envなど秘密情報のファイルをReadのdenyで読ませない」「知らないリポジトリやMCPサーバーを安易に信頼しない」の3つから始めるとよいです。そのうえで、確認画面で保存した許可ルールを /permissions で見直し、サンドボックスを有効にして認証情報のファイルを拒否します。実際に試したとおり、denyだけではスクリプト経由の読み取りは止まらず、サンドボックスは必要なものが無いと動かないまま使えてしまうので、/sandbox で動いていることまで確かめてください。

企業として管理する場合は、技術の設定・契約・組織の運用の3つで対策を考えます。技術の設定では、管理設定で権限の基準と bypassPermissions の禁止を強制し、サンドボックスと必要に応じてdev containerで分離します。契約では、商用規約での学習への非利用と保存期間を、法務・情報セキュリティの部門が確認します。運用では、利用ポリシー、計測(OpenTelemetry)と設定変更の監査、更新のチャンネル、脆弱性の報告の流れを決めておきます。

書かれたコードの脆弱性は、権限の設定とは別に、/security-review や security-guidance プラグイン、Claude Security で段階的に確認します。まず開発環境だけに限って始め、設定と教育を整えてから範囲を広げると、無理なく進められます。Claude Codeの全体像はClaude Codeとはをあわせて参照してください。

参考文献

関連記事

監修

河合 継(クリスタルメソッド株式会社 代表取締役)

AI・ディープラーニングに関する特許16件の発明者。過去、国立がん研究センターとの共同研究や、テレビ番組でのAI解説実績を持つAI研究者として、AIの研究開発を主導している。
運営会社について | 編集方針

Claude Code・AIエージェントの業務活用をご検討の方へ

クリスタルメソッドは、Claude Codeを実務投入している開発会社として、AIエージェント・社員AIの導入と開発効率化を支援しています。自社サイトの表示速度をAI社員(Claude Code)で12.89秒→2.03秒に短縮した実例も事例記事として公開しています。「自社の開発・業務にAIをどう組み込むか」といったご相談を承っています。

AIブログ購読

 
クリスタルメソッドがお届けする
AIブログの更新通知を受け取る

Read next

あわせて読みたい

  • 対話・チャットLLMのイメージ

    Claude Code 権限設定|allow/deny・最小権限【2026】

    Claude Codeの権限設定は、エージェントにどのツールやコマンドの実行を許可/拒否するかを制御する、安全に使ううえで最初に押さえるべき仕組みです。本記事で...

  • Claude Code sandboxサンドボックスモードの安全な使い方と設定完全ガイドのイメージ

    Claude Code Sandbox(サンドボックス)モードの安全な使い方【6つの隔離方式徹底比較・2026】

    Claude Code を本番環境や重要なリポジトリで使い始めると、すぐに「どこまでエージェントに自律実行させるか」という問いにぶつかります。ファイルを読むだけ...

  • 対話・チャットLLMのイメージ

    claude 学習させない 設定|プラン別の正しい設定と見落としポイント

    claude 学習させない 設定:プラン別の前提がまず逆になる 「ClaudeにコードやプロンプトをAI学習させない設定はどこにあるか」という問いに対する正確な...

View more