Web制作

Windowsで Claude Code を「安全&ラクに」使う方法 ― サンドボックスが使えない問題を WSL2 で解決する

この記事でやること(結論から)

Claude Code は、AI がターミナル(黒い画面)の中で
コードを書いたりコマンドを実行したりしてくれるツールです。
とても便利なのですが、Windows でそのまま使うと
「安全に自動化する」ことができない、という落とし穴があります。

その原因が「サンドボックス」という安全機能。これが Windows では使えません。

この記事では、

  • そもそもサンドボックスとは何で、
  • なぜ必要なのか なぜ Windows だと使えないのか
  • それを WSL2 という仕組みで解決し、
    「危険な操作は自動でブロック/安全な操作は確認なしでサクサク」

という理想の状態を作る方法を、順番に手を動かしながら実装していきます。

なぜ「サンドボックス」が必要なのか

Claude Code の便利さと、裏側にあるリスク

Claude Code に「テストを実行して、失敗していたら直して」とお願いすると、
AI が自分でコマンドを打ち、ファイルを書き換えてくれます。まるで優秀なアシスタントです。

でも、よく考えると少し怖い部分もあります。
AI は、あなたのパソコンの中でコマンドを実行できるわけです。

もし AI が勘違いして大事なファイルを消してしまったら? 
あるいは、開いていたファイルの中に悪意ある指示が紛れ込んでいて、
AI がそれに従ってしまったら?
(これは「プロンプトインジェクション」と呼ばれる、実際に警戒されているリスクです。)

「毎回確認」の煩わしさ

このリスクへの一番シンプルな対策は、
「AI が何かするたびに、人間が y/n(はい/いいえ)で許可する」ことです。
実際、Claude Code は初期状態だとこの動きをします。

ところがこれ、使っているとかなり煩わしいのです。
「ファイルを読みます、いいですか?」
「コマンドを実行します、いいですか?」
と一つひとつ聞かれるので、自動化どころか、むしろ手間が増えます。

そこで登場するのが「サンドボックス」

サンドボックス(sandbox=砂場) とは、
AI の作業を「決められた砂場の中だけ」に閉じ込める仕組みです。

砂場の中では自由に遊ばせる代わりに、
砂場の外(=大事なファイルや、外部への通信)には手を出せないよう、
OS(基本ソフト)のレベルで境界を強制します。

この「境界」があると何が嬉しいか。
境界の外に出られないと保証されているので、いちいち確認しなくても安全なのです。

つまり、

  • 砂場の中の操作 → 確認なしでサクサク実行(ラク)
  • 砂場の外に出ようとする操作 → ブロック(安全)

という、「安全」と「ラク」を両立できます。
これこそが、Claude Code を快適かつ安全に自動化するための鍵になります。

Windows の壁 ― サンドボックスが使えない

ここが本題です。
この便利なサンドボックス、Windows でそのまま Claude Code を使うと利用できません。

サンドボックスは、OS が持つ「隔離のための機能」を土台にしています。
この機能は macOS と Linux には備わっているのですが、
Windows のこの部分は Claude Code のサンドボックスに対応していないのです。

「じゃあ確認をオフにすればいいのでは?」が危険な理由

「確認が面倒なら、確認機能を全部オフにすればラクになるのでは?」と思うかもしれません。
実際、Claude Code には権限確認をすべてスキップするオプションがあります。

でも、これはとても危険です。
サンドボックス(砂場の壁)が無い状態で確認までオフにすると、
AI を止めるものが何も無くなります

砂場の壁も無い、見張りも居ない。
もし AI が暴走したり、悪意ある指示に乗ってしまったら、被害を防ぐ手立てがありません。

整理すると、Windows でそのまま使う場合はこうなります。

  • 確認オン → 安全だが、毎回聞かれて煩わしい
  • 確認オフ → ラクだが、防御ゼロで危険

「安全」と「ラク」を両立できない。 これが Windows の壁です。

解決策は「WSL2」― Windows の中に Linux を住まわせる

WSL2 とは何か

この壁を越える答えが WSL2(Windows Subsystem for Linux 2) です。

WSL2 は、ひとことで言うと
Windows の中で、本物の Linux を動かせる仕組み」です。

Microsoft が公式に用意しているもので、
あなたの Windows パソコンの中に、小さな Linux(Ubuntu)の部屋を作るイメージです。

前の章で「サンドボックスは Linux なら使える」と説明しました。

つまり、Windows の中に Linux の部屋(WSL2)を作り、
その中で Claude Code を動かせば、サンドボックスが使えるというわけです。

Windows の壁を、Linux を持ち込むことで回避するのです。

よくある不安①:PowerShell が使えなくなる?

「Linux を入れたら、今まで使っていた PowerShell やコマンドプロンプトが使えなくなるのでは?」という不安があるかもしれません。

大丈夫です。何も無くなりません。

WSL2 は、今ある環境を置き換えるものではなく、
「Linux の部屋を追加で開けるようになる」だけです。

PowerShell はこれまで通り使えますし、
むしろ「Linux の部屋を開ける入口」として活躍します。両者は仲良く共存します。

よくある不安②:難しそう

コマンドに不慣れだと身構えてしまいますが、
やることはこの記事に書いてある通りにコピペしていくだけです。

一つずつ説明しながら進むので、順番に手を動かせば必ず完成します。

実装しよう(ここから手を動かします)

ここからは実際の作業です。焦らず、上から一つずつ進めてください。

【用語ミニ解説】
ターミナル / シェル:文字でコマンドを打ってパソコンに指示する黒い画面のこと。
プロンプト:コマンドを入力できる状態を示す、行頭の表示($ など)。
コマンド:パソコンへの命令文。この記事の「コードブロック」に書かれているものをコピペします。

前提の確認

  • Windows 10(バージョン21H2以降)または Windows 11。Home エディションでもOKです。
  • パソコンの「仮想化」機能が有効なこと
    (多くのPCは初期状態で有効です。もし後の手順でエラーが出たら、その時に確認します)。

ステップ1:WSL2(Linuxの部屋)をインストールする

まず PowerShell を 管理者として 開きます。
スタートボタンを右クリック →
「ターミナル(管理者)」または「Windows PowerShell(管理者)」を選びます。

開いた画面に、次のコマンドをコピペして Enter を押します。

wsl --install

これで Ubuntu(Linux の一種)が自動でインストールされます。
「再起動してください」と言われたら、パソコンを再起動してください。

▶ 再起動後に出てくる画面と対応

再起動後、自動で続きが始まります。以下のような表示が順に出ます。

  • 「Linux 用 Windows サブシステムにようこそ」という案内画面
    → これは説明とリンクを表示しているだけ。何もせず閉じてOKです。
    実際に入力するのは、別のウィンドウで次のように聞いてくる方です。
  • Enter new UNIX username:(ユーザー名を決める)
    → Linux の部屋で使うあなたの名前を決めます。
    すべて半角の小文字で、先頭は英字にします(例:taro)。
    これは Windows のログイン名とは別で、自由に決められます。
  • New password:Retype new password:(パスワードを2回)
    → Linux の部屋用のパスワードを決めて、同じものを2回入力します。
    → 重要:パスワードを打っても画面には何も表示されません(* すら出ません)。
    これは Linux の仕様で、故障ではありません。
    気にせずそのまま入力して Enter を押してください。
    このパスワードは後で使うので必ずメモしておきます。
  • Would you like to opt-in to platform metrics collection (Y/n)?(情報提供のお願い)
    → Ubuntu の開発元への「匿名で使用状況を共有していいですか?」というアンケートです。
    Claude Code とは関係ないので、y でも n でもどちらでもOK。決めて Enter を押します。

これで、名前@PC名:~$ のような表示が出れば、Linux の部屋の完成です。

ステップ2:今「どこにいるか」を確認する

Linux の部屋に入ると、行頭に 名前@PC名:...$ のような表示(プロンプト)が出ます。
ここで一つ、初心者がつまずきやすい注意点があります。

PowerShell から Linux の部屋を開くと、
最初の居場所が /mnt/c/... で始まっていることがあります。

taro@MyPC:/mnt/c/Users/taro$

この /mnt/c は「Windows 側の C ドライブ」を指しています。
実は、この場所で作業すると動作がとても遅くなるという落とし穴があります。
そこで、次のコマンドで「Linux の部屋の自分の部屋(ホーム)」に移動します。

cd ~

行頭が :~$~ はチルダという記号)に変われば、正しい場所にいます。

taro@MyPC:~$

念のため、Linux の部屋にちゃんといるか確認しましょう。

uname -a

Linux ... WSL2 ... のような表示が返ってくれば、準備OKです。

【なぜ場所が大事?】
Windows 側(C:)と Linux の部屋(ホーム)は、実は別々の収納場所です。
境界をまたいでファイルを触ると遅くなるので、作業は必ず Linux 側のホームで行うのが鉄則です。

ステップ3:Claude Code を動かすための土台(Node.js)を入れる

Claude Code は「Node.js」というソフトの上で動きます。まずはそれを入れます。

最初に、Linux の部屋を最新の状態に整えます。
次のコマンドを実行してください。
パスワードを聞かれたら、ステップ1で決めたパスワードを入力します
(画面に出なくても正常)。

sudo apt update && sudo apt upgrade -y

次に Node.js を入れます。
ここは1行ずつ、順番に実行してください(まとめて貼ると失敗することがあります)。

1行目:

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bash

2行目(設定を反映させます。実行しても特に表示は出ません):

source ~/.bashrc

3行目(Node.js 本体を入れます。少し時間がかかります):

nvm install --lts

入ったか確認します。

node -v
npm -v

どちらも v22.x.x のような数字が返ってくれば成功です。

【もし nvm: command not found と出たら】
2行目の source ~/.bashrc を実行し忘れているか、順番が前後した可能性があります。
もう一度 1行目 → 2行目 → 3行目 の順で実行してください。

ステップ4:Claude Code 本体をインストールする

いよいよ Claude Code を入れます。

npm install -g @anthropic-ai/claude-code

インストールが終わったら、ちゃんと入ったか確認します。

claude --version

バージョン番号(例:2.x.x)が表示されれば成功です。

allow-scripts という警告が出たら】
インストール中に npm warn allow-scripts ... という黄色い警告が出ることがあります。
まず claude --version を試してください。バージョンが出るなら問題なし、無視でOKです。
もし command not found になった場合だけ、次のコマンドで入れ直します。

npm install -g --allow-scripts=@anthropic-ai/claude-code @anthropic-ai/claude-code

また New major version of npm available!(npmの新版のお知らせ)も
出ることがありますが、今は無視でOKです。

ステップ5:Claude Code を起動してログインする

準備ができたので、起動します。

cd ~
claude

初回はいくつか設定画面が順に出ます。落ち着いて対応しましょう。

テーマ(見た目)の選択 Choose the text style... と出たら、好みの配色を選んで Enter。
後で変えられるので、そのまま Dark mode で Enter でOK。

② ログイン方法の選択 Select login method: と出たら、選択肢が3つ出ます。
1. Claude account with subscription(Pro, Max, Team, or Enterprise)を選んでください。
これは、すでに持っている Claude のアカウント(Pro プランなど)でログインする方法です。
API キーなどは必要ありません。

③ ブラウザでログイン(ここが少し戸惑うポイント)
Linux の部屋からはブラウザが自動で開かないため、次のような表示が出ます。

Browser didn't open? Use the url below to sign in (c to copy)
https://claude.com/...(長いURL)

対応はこうです。

  1. ターミナルで c キーを押すと、この URL がコピーされます。
  2. Windows のブラウザ(Edge や Chrome)を開き、
    アドレス欄に貼り付けて開きます。
  3. いつもの Claude アカウントでログインし、
    「アクセスを許可しますか」といった画面が出たら承認します。
  4. すると**認証コード(文字列)**が表示されるので、それをコピーします。
  5. ターミナルに戻り、Paste code here if prompted > の部分に貼り付けて Enter

表示される URL の中に create_api_key という文字が含まれていますが、
これはログインの標準的な手続きの一部で、勝手に課金される・キーが発行されるという意味ではありません
安心して進めてください。

④ セキュリティの注意
→ Enter Claude can make mistakes...
(AIは間違えることがある、信頼できるコードだけで使う)という注意が出ます。読んで Enter。

⑤ このフォルダを信頼するか
→ Yes Is this a project you created or one you trust? と聞かれます。
今いるのは自分の部屋(ホーム)なので、1. Yes, I trust this folder を選びます

これでチャットの入力欄が出れば、起動成功です。
試しに 今日の日付を教えて と打ってみましょう。
答えが返ってくれば、Claude Code は無事に動いています。

この時点では、まだ「安全&ラク」の設定は入っていません。
コマンドのたびに確認が入る状態です。
次のステップで、いよいよ本題の設定を入れます。

ステップ6:危険な操作を自動でブロックする設定を入れる

Claude Code には、
「この操作は許可」「この操作は禁止」というルールを書く設定ファイル(settings.json)があります。
ここに、秘密の情報や危険なコマンドをブロックするルールを入れます。

まず、今の設定を確認します。Claude Code の入力欄に、そのまま日本語で頼めます。

~/.claude/settings.json の中身をそのまま表示して。編集はしないで。

たいてい、見た目の設定(テーマなど)だけが入っています。
ここに、下記のルールを追記した完全版に書き換えます。
あなたの既存の設定(theme など)は残す形にしてください。

{
  "theme": "dark",
  "agentPushNotifEnabled": true,
  "tui": "fullscreen",
  "permissions": {
    "allow": [
      "Bash(npm run *)",
      "Bash(npm test *)",
      "Bash(git status)",
      "Bash(git diff *)",
      "Bash(git log *)",
      "Bash(git add *)",
      "Bash(git commit *)",
      "Bash(ls *)",
      "Bash(grep *)"
    ],
    "deny": [
      "Bash(rm -rf *)",
      "Bash(rm -fr *)",
      "Bash(sudo *)",
      "Bash(git reset --hard*)",
      "Bash(git push --force*)",
      "Bash(git push *)",
      "Read(~/.ssh/**)",
      "Read(~/.gnupg/**)",
      "Read(~/.aws/**)",
      "Read(~/.npmrc)",
      "Read(~/.git-credentials)",
      "Read(~/.config/gh/**)",
      "Read(~/.claude/.env)",
      "Edit(~/.bashrc)",
      "Bash(curl *)",
      "Bash(wget *)",
      "Bash(ssh *)",
      "Read(*.env)",
      "Read(.env.*)",
      "Bash(cat *env*)",
      "Bash(printenv *)",
      "Bash(env)"
    ]
  },
  "enableAllProjectMcpServers": false
}
  • allow(許可リスト):テストの実行や git の状態確認など、安全でよく使う操作。
    確認なしで通します。
  • deny(禁止リスト)rm -rf(ファイル大量削除)、sudo(管理者権限)、
    パスワードやキーが入ったファイルの読み取りなど。
    AI に絶対やらせたくない操作を並べています。

書き換えは、Claude Code に頼むのが簡単です。
入力欄に「~/.claude/settings.json を次の内容に書き換えて(既存のキーは残して)」と伝え、
先ほどのコード内容を貼ります。

途中で Use skill "update-config"? と聞かれたら、1. Yes を選んでください
(設定ファイルを正しく編集するための専用機能です)。

書き換えたら、壊れていないか確認します。
一度 Claude Code を終了(/exit)して、次のコマンドを実行してください。

python3 -m json.tool ~/.claude/settings.json > /dev/null && echo OK_JSON || echo NG_JSON

OK_JSON と出れば成功です。

ステップ7:いよいよサンドボックスを有効にする

この記事の核心、サンドボックスを有効にします。
まず、サンドボックスに必要な部品を2つ入れます(Claude Code の外、通常の画面で。1行ずつ実行)。

sudo apt-get update
sudo apt-get install -y bubblewrap socat

次に Claude Code を起動し、入力欄で次のコマンドを打ちます。

/sandbox

すると、次のような選択画面が出ます。

Configure mode
  1. Sandbox BashTool, with auto-allow
  2. Sandbox BashTool, with regular permissions
  3. No Sandbox

1. Sandbox BashTool, with auto-allow を選んでください。
これが、この記事でずっと目指してきた「砂場の中なら確認なしで動かす」モードです。

Sandbox enabled with auto-allow for bash commands と表示されれば、完成です。

ちゃんと効いているか確かめる

設定が本当に機能しているか、3つのテストで確認しましょう。
Claude Code の入力欄で1つずつ試します。

テスト1:秘密情報を守れているか

~/.claude/.env の中身を見せて

→ 「これは認証情報を含むので表示しません」といった趣旨で断られれば成功
AI が秘密を漏らさないよう、ちゃんとブロックできています。

テスト2:SSHの鍵を守れているか

~/.ssh/id_rsa を読んで

→ こちらも断られれば成功(まだ鍵を作っていなければ「ファイルが無い」でもOK)。

テスト3:普通の操作はサクサク動くか

→ 確認を挟まず、すぐ答えが返れば成功

テスト1・2でブロック、テスト3ですんなり動く。
これで、「危険な操作は自動で止まる/安全な操作は確認なしで快適」という、
Windows では難しかった状態を実現できました。

まとめ

この記事でやったことを振り返ります。

  • Claude Code を安全かつ快適に使う鍵は「サンドボックス」だが、
    Windows ではそのまま使えない
  • 確認オフで無理にラクにすると「防御ゼロ」になり危険。
    「安全」と「ラク」を両立できないのが Windows の壁。
  • 解決策は、Windows の中に Linux の部屋(WSL2)を作り、
    その中で Claude Code を動かすこと。
    これでサンドボックスが使えるようになる。
  • PowerShell は無くならず、共存する。
    むしろ Linux の部屋への「入口」として活きる。
  • 実際に、権限ルール(deny/allow)+サンドボックスを入れることで、
    危険な操作は自動ブロック/安全な操作は確認なしで快適、という理想の環境が作れた。

コマンドに不慣れでも、上から一つずつコピペしていけば必ずたどり着けます。
Windows だからと諦めず、ぜひ「安全でラクな Claude Code 環境」を手に入れてください。

補足:もっと先へ(自動化について)
ここまでで「快適な対話環境」は完成です。
さらに一歩進んで、決まった作業を無人で自動実行する(例:毎晩自動でテストを回す)ことも、
この WSL2 環境の上でなら安全に組めます。
その場合は、claude -p というコマンドで対話画面を開かずに実行し、
Windows のタスクスケジューラから呼び出す、といった構成になります。
ここは対話に慣れてからの発展テーマとして、別途挑戦してみてください。

  • この記事を書いた人

はぎ

43歳からWeb制作開始|フリーランス2年目| 税理士・公認会計士を目指すも挫折、27歳でトヨタ系自動車部品工場に勤務| 管理業務に関わるなか、ExcelVBAからプログラミングに目覚める| 現在は兼業コーダーとしてクラウドソーシング・制作会社からのお仕事をさせて頂いております| 時間と場所に縛られないライフスタイルを目指し鬼労働中| 柴犬好き🐕‍🦺

-Web制作