3行でいうと

  • OWASPは、危険の根を「機能が多い・権限が多い・人の確認なしに動ける」の3つに分け、どれも絞るよう勧めています。
  • Claude Codeの権限ルールは、モデルではなくアプリが強制します。評価の順は拒否、確認、許可で、拒否が常に勝ちます。
  • 許可の確認とサンドボックス(OS側の隔離)は別の層です。公式は両方を重ねる前提で書いています。

この記事は、実際に使って確かめた記録ではありません。この記事は公式の文書や論文を読んでまとめたものです。

先に結論

前提:用語を先にそろえる

考え方:OWASPの整理

OWASP(Webなどの安全に関する非営利の団体)の「LLMアプリ向けTop 10(2025年版)」のLLM06 Excessive Agency(過剰な裁量)は、AIが誤った出力や操作された出力に従って、害のある行動をとってしまう脆弱性です。原因は、幻覚(もっともらしい誤り)、性能の低さ、直接・間接のプロンプトインジェクションなど、何でも含まれます。

危険の根は3つに分けられています。

根 意味 対策の例(OWASPの記載)
過剰な機能 その仕事に要らない機能が付いている 道具の数を絞る。各道具の機能を絞る。シェルやURL取得のような何でもできる道具を避け、細かく分けた道具にする
過剰な権限 下流のシステムに必要以上の権限がある 利用者本人の最小権限で動かす(範囲を限ったOAuthなど)。下流の側でも許可を確かめる(AIの判断に頼らない)
過剰な自律性 影響の大きな行動を、独立に確認・承認せずに実行する 影響の大きな操作は人が承認する

ログ、監視、速度制限は、被害を抑えるものであって、過剰な裁量を防ぐものではない、とも書かれています。

OWASPの「Top 10 for Agentic Applications 2026」(2025年12月の版。公式PDFで確認)は、10項目のリストです。ツールの悪用、ID・権限の悪用、予期しないコード実行、カスケード障害などが並びます。文書は「Least-Agency(最小の裁量)」という言い方で、必要のない自律性を持たせないよう勧めています。権限はタスクの範囲で、期限を切って渡すこと(task-scoped, time-bound)、というのが、IDと権限の項目の対策の一つです。

Claude Codeの設計

Anthropicの開発者向けAIアプリ、Claude Codeの公式文書から、権限の仕組みを読みます。

権限ルールとモード

サンドボックス(Bashの隔離)

Claude CodeのBashサンドボックスは、シェルのコマンドと、その子プロセスに対して、OSが強制する境界を作ります。macOSでは組み込みのSeatbelt、LinuxとWSL2ではbubblewrapとsocatを使います。ネイティブのWindowsでは、サンドボックスなしで実行される、と書かれています。

既定の境界は、公式の表では次のとおりです。

項目 既定
書き込み 作業ディレクトリ、利用者ごとの一時ディレクトリ、追加したディレクトリ。保護された場所は書き込み不可
読み取り マシンの大部分。~/.sshや~/.aws/credentialsのような認証情報のファイルも含む
ネットワーク 直接の出口なし。自分のマシン上のプロキシを通り、許可ドメイン(最初は空)にある宛先だけ
環境変数 Claude Codeから引き継ぐ。環境にある秘密情報も含む

読み取りが広いこと、環境変数が引き継がれることは、見落としやすい点です。文書は、認証情報を守る設定(denyReadやcredentials)を別に用意しています。

サンドボックスの外で動くものもあります。

つまり、サンドボックスは「シェルコマンドの囲い」であって、エージェント全体の囲いではありません。全体を囲むには、Claude Code自体をコンテナ、VM、サンドボックスランタイムの中で動かす、と文書が案内しています。

許可の確認とサンドボックスの関係

公式は「許可(どの道具を使えるか)」と「サンドボックス(OSが強制する、ファイルとネットワークの制限)」を補い合う層としています。プロンプトインジェクションでAIの判断が崩れても、サンドボックスの制限は残る、というのが重ねる理由です。サンドボックスの内側のコマンドは、既定で確認なしに実行される設定があり、境界が確認の代わりになります。

サンドボックスの限界(公式文書の記載)

サンドボックスの頁は、「リスクを減らすが、完全な隔離の境界ではない」と明記しています。主な限界は次のとおりです。

  • ネットワークのフィルタ:既定のプロキシは暗号化された通信の中身を見ません。許可ドメインにgithub.comのような広いものを入れると、データ持ち出しの道ができうる、と警告されています。ドメイン・フロンティングのような手法で許可外に出られる可能性も書かれています。より強い保証が必要なら、TLSを終端して検査する独自のプロキシを使う、とあります。
  • Unixソケット:allowUnixSocketsで/var/run/docker.sockなどを許すと、実質ホストへの道が開く。
  • ファイルの書き込みを広く許すこと:$PATH上の実行ファイルのあるディレクトリや、.bashrcなどへの書き込みを許すと、別の文脈でコードが実行される。
  • Linuxの弱い入れ子モード:enableWeakerNestedSandboxはDocker内で動かすための設定で、安全性を大きく下げる。ほかの隔離がある場合だけ使うこと。
  • macOSのApple Events:許可すると、サンドボックス内のコマンドが、他のアプリを制限なしに起動できる。
  • 公式の警告:「ファイルの隔離とネットワークの隔離の両方が要る」。ネットワークがなければ、侵害されたエージェントが秘密鍵を持ち出せる。ファイルの隔離がなければ、システム資源に細工してネットワークへの道を作れる。

Codexの設計

OpenAIのコーディングエージェントCodexの公式文書(Agent approvals & security、Sandboxing)から読みます。サンドボックスと承認が、別の設定として分かれています。

設定 値 意味(文書の記載)
サンドボックスのモード read-only 読むだけ
workspace-write 作業場所で編集とコマンド実行ができる。既定ではネットワークは切れている
danger-full-access サンドボックスなし
承認の方針 on-request サンドボックスを出る、またはネットワークを使うときに聞く
never 聞かない。選んだサンドボックスの中で動く
granular 一部の種類だけ聞き、他は自動で拒否
untrusted 廃止。指定すると起動に失敗することがある

設計の手順:4つの問い

見立てです。ここまでの文書を並べると、エージェントを導入するときの問いは、次の順になると思います。

  1. 機能:この仕事に、本当に要る道具は何か。シェルやURL取得のような「何でも」の道具は、必要になるまで外す。
  2. 範囲:各道具は何に触れられるか。読み取り専用で足りないか。1つのリポジトリ、1つのフォルダー、1つのドメインに限れないか。認証情報の置き場所は、読めない場所にあるか。
  3. 承認:取り消せない操作(削除、送信、支払い、本番への反映)だけは人を挟めるか。承認が多すぎて流していないか。サンドボックスの内側は確認なし、外へ出るときだけ確認、という形にできないか。
  4. 隔離と記録:失敗しても被害が囲い込まれるか。コンテナやVMの中か。呼び出しの記録は残るか。

承認を人が押すだけでは足りない理由も、文書から読み取れます。Googleの文書(別の記事で紹介)は、人が承認を誤る問題を挙げています。見立てです。だから、承認を残しつつ、それとは別に、権限の範囲そのものを絞っておく二重の構えが要ると思います。

よくある失敗・つまずき

見立てです。公式文書の警告から、起きやすいと思う点を挙げます。

気をつけること

出典

更新履歴