Claude CodeのSandbox(サンドボックス)とは?重要性や設定方法を解説

Claude Codeの****Sandbox****(サンドボックス)って何?
セキュリティ的に重要と聞いたけど、どう設定すればいいんだろう?

Claude Codeのセキュリティについて調べていると、Sandbox(サンドボックス)という言葉を目にした人もいるはず。

しかし、Sandbox(サンドボックス)で何ができるかわからない人や、設定方法で行き詰まる人もいますよね。設定方法を調べてみたものの、MacとWindowsで手順が異なり、どこから手をつければよいか迷っている人も多いです。

そこでこの記事では、Mac・Windows・Dockerでの設定手順も交え、Claude CodeのSandboxの使い方を解説します。セキュリティ対策についても触れているので、ぜひ参考にしてください。

Claude Codeの特徴をおさらいしておきたい人は、次の記事を参考にしてください。

この記事の要約
  • SandboxはAIの操作範囲をプロジェクト内に限定する実行環境
  • Mac・Windows・Dockerで設定手順が異なる
  • Sandboxと権限設定・監査ログの併用が安全運用の基本

『ClaudeCodeに興味はあるけど、どうやって使えばいいんだろう…』

そんな方へ、

  • ClaudeCodeに作業や仕事を任せる方法
  • ClaudeCodeを使いこなすたった1つのコツ
  • 業務効率化や収入獲得に活かすClaudeCodeの実演

を、無料のオンラインセミナーで凝縮してお伝えします!

パソコンはもちろん、スマホから気軽に参加OK。この時間が、あなたを変える大きなきっかけになりますよ。

\ スマホ参加OK!顔出し不要 /

目次

Claude CodeのSandboxとは

Claude CodeのSandboxとは

Claude CodeのSandboxとは、AIが操作できる範囲をプロジェクト内に限定する、隔離された実行環境のことです。

通常のClaude Codeは、指示に従ってシステム全体のファイルにアクセスしたり、任意のコマンドを実行したりできます。便利な反面、意図しないファイルの削除や設定の上書きが起きるリスクもあります。

Sandboxを使うと、AIの動作範囲をあらかじめ決めた領域に指定可能です。プロジェクトフォルダの外への書き込みや、ネットワーク通信の制限なども設定できるため、安全な開発環境を保てます。

Sandboxの基本機能は、次のとおりです。

  • ファイルシステムへの書き込みをカレントディレクトリ配下に限定する(読み取りは明示的に拒否しない限りシステム全体で可能)
  • ネットワーク通信を許可済みドメインのみに絞る
  • BashコマンドとそのサブプロセスをOS レベルで隔離する
  • Read・Edit・WriteなどのファイルツールはSandbox外でパーミッションシステムが制御する

初心者でも「Sandboxを有効にすればAIの動作が安全になる」とシンプルに理解して問題ありません。

Claude CodeでSandboxが重要な4つの理由

Claude CodeでSandboxが重要な4つの理由

ここからはClaude CodeでSandboxが重要な理由を、4つにまとめて解説します。

ファイル操作の暴走を防げる

Sandboxを使うと、AIによるファイル操作の影響範囲を限定してファイル操作の暴走を防げます

Claude Codeは、自律的にファイルを読み書きする機能があります。意図せず重要なファイルを上書きしたり、プロジェクト外のディレクトリを書き換えたりする事故が起きるリスクも。

たとえば、プロジェクトのコードを整理する作業を任せた際に、関係のない設定ファイルまで変更されてしまうケースが考えられます。最悪の場合、OSの設定ファイルに触れてしまうインシデントにつながることも。

Sandboxを導入すれば、AIが操作できるディレクトリをプロジェクト内だけに制限できます。ファイル操作の暴走を未然に防ぎ、安心して作業を任せられる環境を作れます。

システム環境を汚さず検証できる

Sandboxは、ホストOSを変更せずに新しいライブラリや設定を試せる環境を提供します。

新しいパッケージをインストールしたり、設定を変更したりすると、既存の開発環境に影響が出る場合があります。「試しにインストールしたら、既存プロジェクトが動かなくなった」という経験がある人も多いはずです。

Sandboxを使えば、検証作業をホストOS(実際のパソコン)から切り離した環境で実行できます。試した結果がうまくいかなくても、サンドボックスを破棄するだけで元の環境に戻せます。

本番環境や既存プロジェクトへの影響を気にせず、積極的に新技術を試せる点が大きなメリットです。

意図しないコマンド実行を遮断できる

Claude CodeのSandboxを利用すれば、意図しないコマンドの実行を防げます。

Claude Codeはターミナルコマンドを自動で実行する機能を持っているため、想定外のコマンドが走るリスクがあります。

たとえば、ファイルを削除するつもりで指示を出したところ、関連するすべてのファイルが一括削除されるケースも。ネットワーク経由で、外部サーバに接続するコマンドが意図せず実行される可能性もあります。

Sandboxを設定すると、実行できるコマンドの種類やネットワークアクセスの範囲を制限できます。これにより、危険なコマンドが走っても実害が及ぶ範囲を最小限に抑えられます。

開発初期段階や、慣れない操作を試す場面では特に効果的な対策です。

承認疲れが解消できる

処理の承認疲れを解消できる点も、Sandboxの魅力です。

Claude Codeを使い始めると、AIが操作を提案するたびに「許可しますか?」という確認が頻繁に表示されます。毎回の承認作業が積み重なると、作業効率が大幅に落ちることも。

承認の手間を減らそうと「すべて許可」にすると、今度はセキュリティリスクが高まります。利便性と安全性のバランスを取れない状態に陥りがちです。

Sandboxを使うと、操作環境を限定してAI自由に動かせる設定が可能です。サンドボックスの外に影響が出ない範囲の操作なら、細かく承認しなくてもリスクが低いからです。

承認疲れを解消しつつ、安全性を保てる点がSandboxの実用的なメリットといえます。

【Mac】Claude CodeのSandbox設定手順

【Mac】Claude CodeのSandbox設定手順

MacでClaude CodeのSandboxを使うには、macOS標準搭載の「Seatbelt」(sandbox-exec)を活用します。

macOSには、プロセスが実行できる操作を制限するセキュリティ機能がビルトインされています。Claude CodeはmacOSの仕組みと連携する形でSandboxを利用可能です。

Mac環境では、--sandboxフラグを付けてClaude Codeを起動するだけで、基本的なSandboxが有効になります。

具体的な手順は次のとおりです。

  • ターミナルを開く
  • プロジェクトディレクトリに移動する
  • 下記のコマンドでClaude Codeを起動する
/sandbox

Sandboxが有効な状態では、Claude Codeはプロジェクトディレクトリ以外への書き込みが制限されます。特定のシステムリソースへのアクセスも遮断されます。

Sandboxを有効にしたまま特定のディレクトリへのアクセスを許可したい場合は、settings.jsonに以下のように記述してください。

# サンドボックス設定
{
"sandbox": {
"filesystem": {
"allowWrite": ["/Users/yourname/projects/myapp"]
}
}
}

初回起動時にmacOSのセキュリティ確認が出る場合は、「許可」を選択してください。Sandbox設定後も、Claude Codeの基本的な操作は変わりません。安全性を高めつつ、通常どおり作業を進められます。

MacでClaude Codeを使う方法を詳しく知りたい人は、次の記事を参考にしてください。

【Windows】Claude CodeのSandbox設定手順

【Windows】Claude CodeのSandbox設定手順

WindowsでClaude CodeのSandboxを構築する場合は、WSL2(Windows Subsystem for Linux 2)の環境内でLinuxのサンドボックス機能を活用します。

Windows単体ではClaude CodeのSandbox機能を直接利用しにくいため、WSL2上のLinux環境にClaude Codeをインストールして動かす構成が推奨です。

以下の手順でWSL2上のSandboxを設定します。

まず、WSL2とUbuntuをインストールします。PowerShellを管理者権限で開き、次のコマンドを実行してください。

wsl --install

インストール完了後、WSL2のUbuntu環境を起動します。次に、Ubuntu上でNode.jsとClaude Codeをインストールします。

# Node.jsのインストール

| curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash - |
| :--- | :--- |

sudo apt-get install -y nodejs

# Claude Codeのインストール
npm install -g @anthropic-ai/claude-code

インストール後、プロジェクトディレクトリに移動してSandboxモードで起動します。

cd /home/yourname/projects/myapp
/sandbox

WSL2環境でのSandboxは、Linuxのbubblewrapを使います。この機能で実行環境を隔離し、Windowsのファイルシステムへの直接アクセスを制限できるため、ホストOSへの影響を防げます。

WSL2内のプロジェクトファイルは/home/yourname/以下に置くと、Sandboxの効果を最大化できます。/mnt/c/以下(Windowsのドライブマウント)にプロジェクトを置く場合は、アクセス制限の設定を別途確認してください。

WindowsでClaude Codeを使う方法を詳しく知りたい人は、次の記事を参考にしてください。

DockerでSandboxを構築する方法

DockerでSandboxを構築する方法

Dockerを使ったSandboxは、Mac・Windowsどちらでも同じ構成で動かせる点が特徴です。コンテナ技術によってより強固な環境分離を実現できます。

ここからはDockerでのSandbox構築を、3つのステップにまとめて解説します。

Dockerfile・Compose設定の作成

DockerでClaude Codeを動かすには、まず専用のDockerfileを作成します。

Dockerfileは、コンテナの設計書のようなものです。どのOSを使い、どのソフトウェアをインストールするかを記述します。

プロジェクトルートにDockerfileという名前のファイルを作り、次の内容を記述してください。

FROM node:20-slim

# 必要パッケージのインストール
RUN apt-get update && apt-get install -y \
git \
curl \
&& rm -rf /var/lib/apt/lists/*

# Claude Codeのインストール
RUN npm install -g @anthropic-ai/claude-code

# 作業ディレクトリの設定
WORKDIR /workspace

# 非rootユーザーの作成(セキュリティ向上)
RUN useradd -m -u 1000 claude-user
USER claude-user

次に、同じディレクトリにdocker-compose.ymlを作成します。

version: '3.8'
services:
claude-sandbox:
build: .
volumes:
- ./workspace:/workspace
environment:
- ANTHROPIC_API_KEY=${ANTHROPIC_API_KEY}
stdin_open: true
tty: true

ANTHROPIC_API_KEYは、Anthropicの管理画面で発行したAPIキーを.envファイルに記載して管理します。コード内に直接書かないよう注意してください。

コンテナ上でClaude Codeを動かす流れ

Dockerfileとdocker-compose.ymlの作成後は、コンテナをビルドして起動します。

まず、プロジェクトディレクトリでコンテナをビルドします。

docker compose build

ビルドが完了したら、コンテナを起動してClaude Codeを実行します。

docker compose run --rm claude-sandbox claude

コンテナ内でClaude Codeが起動したら、通常どおりに指示を出して作業を進められます。AIが操作できる範囲はコンテナ内の/workspace以下に限定されるため、ホストOSには一切影響が及びません。

作業が終わったらコンテナを終了します。--rmオプションを付けているため、コンテナは自動で削除されます。

exit

作業結果は./workspaceディレクトリ(ホストOSとマウントしているフォルダ)に保存されます。コンテナを削除してもファイルは残るため、成果物を失う心配はありません。

リソース制限とネットワーク分離の設定

Dockerではコンテナが使えるCPUやメモリを制限して、ホストOSへの負荷を抑えられます。

docker-compose.ymlに次の設定を追加すると、リソース制限が有効になります。

version: '3.8'
services:
claude-sandbox:
build: .
volumes:
- ./workspace:/workspace
environment:
- ANTHROPIC_API_KEY=${ANTHROPIC_API_KEY}
deploy:
resources:
limits:
cpus: '1.0'
memory: 2G
networks:
- sandbox-net
stdin_open: true
tty: true

networks:
sandbox-net:
driver: bridge
internal: true

internal: trueを指定すると、コンテナがインターネットに直接アクセスできません。外部への意図しない通信を防ぐ効果があります。

ただし、外部APIを呼び出す作業が必要な場合はinternal: trueを外す必要があります。用途に合わせて設定を調整してください。

CPUを'1.0'(1コア相当)、メモリを2G(2GB)に制限する設定は、一般的な開発作業に十分な値です。処理が重い場合は値を増やして調整してください。

Claude CodeでDockerを動かす方法を詳しく知りたい人は、次の記事を参考にしてください。

Sandboxと併用すべきClaude Codeのセキュリティ対策

Sandboxと併用すべきClaude Codeのセキュリティ対策

Sandboxだけですべてのリスクをカバーできるわけではありません。Sandboxと他のセキュリティ対策を組み合わせることで、より安全な開発環境を実現できます。

ここからは、Sandboxと併用すべきClaude Codeのセキュリティ対策を解説します。

権限設定とアクセス制御の基本

Claude Codeでは、CLAUDE.mdファイルにアクセス制御のルールを記述して権限を細かく管理できます。

CLAUDE.mdは、プロジェクトのルートディレクトリに置くことでClaude Codeが自動的に読み込む設定ファイルです。AIに対して「何をしてよいか」「何をしてはいけないか」を明示できます。

たとえば、次のような内容を記述します。

```
# アクセス制御ルール
```

Claude Codeは記載した指示を参照して行動するため、意図しない操作を事前に防げます。

加えて、APIキーなどの機密情報は.envファイルで管理し、.gitignoreに必ず追加してください。コードリポジトリにAPIキーが混入するリスクを防げます。

セキュリティの観点を含め、Claude Codeのおすすめ設定を詳しく知りたい人は、次の記事を参考にしてください。

許可コマンドの制限と監査ログの活用

Claude Codeには、実行を許可するコマンドをあらかじめ指定する「allowedTools」設定があります。ホワイトリスト方式で許可するコマンドを絞り込めるため、予期しないコマンドの実行を防げます。

CLAUDE.mdに次のように記述すると、実行できるコマンドを制限できます。

```
# 許可コマンドリスト
{
  "permissions": {
    "allow": [
      "Bash(npm run *)",
      "Bash(git status)",
      "Bash(git add *)",
      "Bash(git commit *)"
    ]
  }
}
```

上記の設定では、`npm run`と`git`の基本操作、ファイルの読み書きのみを許可しています。リストにないコマンドはClaude Codeが提案しても実行前に確認が入ります。

Claude Codeの操作履歴をログとして記録しておくと、問題が起きたときの原因調査が格段に楽になります。

Dockerを使った環境では、次のコマンドでコンテナのログを確認できます。

```bash
docker compose logs claude-sandbox
```

定期的にログを確認する習慣をつけると、異常な操作パターンを早期に発見しやすくなります。Claude Codeのコマンドについて詳しく知りたい人は、次の記事を参考にしてください。

Claude CodeのSandboxによく抱く疑問

Claude CodeのSandboxによく抱く疑問

ここからはClaude CodeのSandboxに関するよくある質問を、3つにまとめて紹介します。

コンテナ内のデータは永続化できる?

Dockerのボリューム機能を使えば、コンテナを削除してもデータを保持できます。

コンテナ自体はステートレス(状態を持たない)な設計が基本です。何も設定しなければ、コンテナを削除したときにコンテナ内のファイルも消えます。

データを永続化するには、docker-compose.ymlにボリューム設定を追加します。

```yaml
volumes:
./workspace:/workspace        # ホストとの共有ディレクトリ
claude-data:/home/claude-user  # 名前付きボリューム

volumes:
  claude-data:
```

./workspace:/workspaceのように、ホストOSのディレクトリとコンテナ内のディレクトリを紐づけることで、コンテナ外にデータを保存できます。作業ファイルはマウントされたディレクトリに保存する習慣をつけてください。

Sandboxを入れると動作は遅くなる?

macOSのSeatbeltやLinuxのNamespaceを使ったSandboxは、OSカーネルレベルで動作します。アプリケーション層での処理が増えないため、日常的な使用において速度低下を感じることはほぼありません。

Dockerを使ったコンテナ型のSandboxは、初回起動時のビルドに数分かかる場合があります。ビルドが完了した後は、通常と変わらない速度で作業を進められます。

ネットワーク分離の設定(internal: true)を有効にすると、外部APIへのアクセスが遮断されます。外部通信が必要なコマンドが実行できなくなり、処理が止まるケースがあります。速度ではなく「動かない」と感じる場合は、ネットワーク設定を見直してください。

特定のコマンドがSandbox内で動かないときは?

コマンドが動かない原因の多くは、権限不足かネットワーク制限によるものです。

まず、エラーメッセージを確認してください。Permission deniedと表示される場合は権限の問題です。Could not connectNetwork unreachableと表示される場合は、ネットワーク制限が原因です。

権限エラーの場合は、CLAUDE.mdの許可コマンドリストに該当コマンドを追加します。

```
allowedTools:
Bash(pip install*)    # Pythonパッケージのインストールを追加
```

ネットワークエラーの場合は、docker-compose.ymlinternal: trueを削除するか、外部アクセスが必要な通信だけを許可するプロキシ設定を追加します。

Dockerfileで実行ユーザーを非rootユーザーに設定している場合、パッケージのインストール先が限られます。インストールコマンドが失敗するときは、--userオプションを付けてユーザーディレクトリにインストールするよう指示してください。

まとめ

この記事では、Claude CodeのSandboxの概要と重要性、Mac・Windows・Dockerでの設定方法、セキュリティ対策までを解説しました。

Sandboxを導入すると、ファイル操作の暴走防止やシステム環境の保護、承認疲れの解消など、多くのメリットがあります。CLAUDE.mdによる権限設定や監査ログと組み合わせると、安全性がさらに高まります。

まずは/sandboxコマンドでSandboxを有効化して、安全なClaude Code環境を整えてみてください。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

【プロフィール】
新卒でプログラマーとして勤務し、実務経験を積んだ後、現在はフリーランスWebライターとして活動中。主に、企業のオウンドメディアやブログ記事の執筆を担当。IT・プログラミング関連の執筆が得意。2020年から侍エンジニアブログの記事制作を務めており、文章の読みやすさや納得感を意識しながら執筆しています。自身も生成AI活用し、ブログを運営中。
【専門分野】
IT/プログラミング/生成AI
【SNS】
X(旧:Twitter)

目次