【Claude Code】VS Code拡張の確認プロンプトを減らしつつsandboxでフォルダに閉じ込める設定

概要

今回はVS CodeのClaude Code拡張で確認プロンプトを減らしつつ、被害範囲を特定フォルダに閉じ込める設定について紹介していきます。

VS CodeのClaude Code拡張を使っていると、ファイル編集やコマンド実行のたびに確認ダイアログが出て、「はい」を押さないと先に進まない場面がありますよね。
これ自体は誤操作を防ぐための安全機構なんですが、頻度が高いとどうしても作業のテンポが崩れます。

かといって確認を全部消してしまうと、今度は意図しないファイルへのアクセスや削除が起きるリスクが上がります。
「確認を減らす」ことと「安全に留める」ことはトレードオフの関係にあるので、両方をどう両立させるかが今回のテーマです。

確認プロンプトを減らす方法と、それをやっても被害範囲を特定フォルダ内に限定する方法をまとめます。

それではやっていきましょう!

ここで紹介する設定は完璧でない可能性があります。
特にbypassPermissionsは本来CI/CD向けの危険モードです。理解し調べてから使用するようにしてください!
何かあったときの責任はとれないので、あくまで自己責任での実施をお願いします。

目次

確認プロンプトが出る理由

Claude Codeは、ファイル編集・シェルコマンド実行・ネットワークアクセスなど、意図しない変更を防ぐために各アクションの前に承認を求める仕様になっています。
これがデフォルトの「Ask」モードです。

安全性重視の設計としては妥当なんですが、テストやビルドを何度も回すような作業をしていると、同じコマンドで何回も同じ「はい」を押すことになって、だんだんしんどくなってきます(- -;

確認を減らす方法

VS Code拡張のUIから

一番手軽なのは、チャット入力欄下部のモード切替から「Bypass permissions」を選ぶ方法です。

または、VS Codeの設定(Ctrl+,)で以下を検索・変更しても同じ効果になります。

  • Claude Code: Allow Dangerously Skip Permissions
    • チェックを入れる
  • Claude Code: Initial Permission Mode
    • bypassPermissionsに変更する

settings.jsonに直接書く場合は次の通りです。

settings.json

1
2
"claudeCode.allowDangerouslySkipPermissions": true,
"claudeCode.initialPermissionMode": "bypassPermissions"

settings.json側で細かく制御する

~/.claude/settings.json(全体)や.claude/settings.json(プロジェクト単位)に以下を追加する方法もあります。

.claude/settings.json

1
2
3
4
5
{
"permissions": {
"defaultMode": "bypassPermissions"
}
}

ただし、VS Code拡張はこのグローバル設定を無視する既知の不具合があるので、確実に効かせたいなら前述の拡張機能側のUI設定を併用したほうが確実です。

注意点

bypassPermissionsは本来CI/CD向けの危険モード

bypassPermissionsは、ファイル編集やコマンド実行を無条件で許可するモードです。
誤操作や意図しない変更のリスクが上がるので、個人利用なら「特定のコマンドだけ許可する」「一度承認したら次回から聞かない(.claude/settings.local.jsonに自動保存される)」といった運用のほうが安全な場合が多いです。

長い・複合コマンドだと設定が効かないことがある

settings.jsonのallowルール(例: Bash(npm run *))は本来、&&|などで繋いだ複合コマンドも各サブコマンドごとに判定するはずです。
ただし、実装上この分解がうまくいかないケースや、逆にBash(cd:*)のような緩いルールがcd /path && rm -rf ...のような複合コマンド全体にマッチしてしまい、本来ブロックすべきものが無警告で実行されるという、安全側に壊れているケースもあるという話もあるようです。

つまり「聞かれすぎる」ことと「聞かれるべき時に聞かれない」ことが同時に起きているわけです。

現実的な回避策は次の3つです。

  • ワイルドカードを広げる(Bash(*)
    • ただし複合コマンド全体を無条件許可することになるので安全性はかなり落ちる
  • PreToolUseフックでBash呼び出しを自前のスクリプトで判定・自動承認する
    • ルールベースの分解に頼らず、フック側で厳密に判定できる
  • 根本的に確認を無くしたいならbypassPermissionsに倒す
    • ただし危険な部分もまとめて無警告実行してしまうリスクとセット

特定フォルダ以外へのアクセスを制限する(sandbox機能)

確認プロンプトの仕組みとは別に、Claude CodeにはOSレベルのファイルシステム/ネットワーク隔離機能(/sandboxがあります。
macOSではSeatbelt、Linux/WSL2ではbubblewrapを使ってカーネルレベルで制限をかけるもので、bypassPermissionsを使っていても関係なく効きます
モデルが何を実行しようとしたかに関わらず、OSがプロセスの動作を強制的に縛るためです。

対応OSはmacOS・Linux・WSL2のみです。ネイティブのWindows(WSLを介さない環境)では動作しないため、Windowsで使う場合はWSL2上でClaude Codeを実行してください。

プロジェクトの.claude/settings.jsonに以下を書きます。

.claude/settings.json

1
2
3
4
5
6
7
8
9
{
"sandbox": {
"enabled": true,
"filesystem": {
"denyRead": ["~/"],
"allowRead": ["."]
}
}
}

denyRead: ["~/"]でホームディレクトリ全体の読み取りを拒否しつつ、allowRead: ["."]でプロジェクトルートだけ読めるようにしています。
書き込みはデフォルトで「作業ディレクトリとセッション一時ディレクトリのみ」に制限されているので、追加で許可したい場所があればallowWriteに足します。

.claude/settings.json(allowWriteの追記例)

1
2
3
4
5
6
7
{
"sandbox": {
"filesystem": {
"allowWrite": ["~/.kube", "/tmp/build"]
}
}
}

有効化後は/sandboxコマンドでモード(auto-allowか通常の権限確認か)を選べます。
Linux/WSL2ではbubblewrapとsocatのインストールが必要です。

bubblewrapとsocatのインストール

1
sudo apt-get install bubblewrap socat

これが無いとサンドボックスが黙って機能せず、素通りしてしまう点は注意してください。

一点重要な制限として、このsandboxはBashコマンドとその子プロセスのみが対象です。
Claude自身のRead/Edit/Writeツールは別の権限ルール(allow/deny/ask)側で制御されるので、両方揃って初めて「フォルダの外に触れない」がほぼ保証されます。

bypassモードとsandbox、どちらを選ぶか

ここまでの設定を整理すると、選択肢は次のフローで考えられます。

確認プロンプトを減らす方法の選び方フローチャート(sandbox auto-allow / sandbox+bypass / defaultMode bypassPermissions)
Claude Codeの権限モード選択フローチャート。誤操作の被害範囲をフォルダ内に限定したいかを起点に、sandboxのauto-allowモード・sandbox+bypassPermissions・defaultMode bypassPermissionsの3択に分岐する図
  • sandboxのauto-allowモード(推奨)
    • フォルダ内で完結する操作は無確認で実行しつつ、ホームディレクトリ削除のような危険なコマンドやフォルダ外への新規ネットワークアクセスは引き続きプロンプトが出る。
    • 安全側に倒したい場合はこちらを利用する
  • defaultMode: bypassPermissions
    • ただしフォルダ内外問わずほぼ全てのプロンプトを消す、sandboxのfilesystem設定と併用しないと、フォルダの外にもアクセスできてしまう点に注意が必要です。

VS Code拡張の「Claude Code: Initial Permission Mode」をbypassPermissionsにする設定は、後者のルートを選んだ場合の保険です(拡張機能がsettings.jsondefaultModeを無視するバグへの対策)。
sandboxのauto-allowだけで運用するなら不要です。

まとめ

確認プロンプトを減らす方法と、被害範囲を特定フォルダに閉じ込めるsandbox機能について紹介しました。

bypassPermissionsだけに頼ると誤操作のリスクがそのまま残るので、sandboxのauto-allowモードを組み合わせておくのが安心です。
まずは自分の環境で/sandboxを試して、フォルダの外に触れないことを確認してみてください。

以上となります。
サンドボックス機能がデフォルトであるのは嬉しいですが、Windowsにも対応して欲しい…
それではお疲れさまでした。

参考ドキュメント

公式ドキュメントも合わせて載せておきます。

Permissions(権限モードの一覧)
https://code.claude.com/docs/en/permissionscode.claude.com

Sandboxing(sandbox機能の詳細)
https://code.claude.com/docs/en/sandboxingcode.claude.com

権限まわりの実装は今もバグ修正・仕様変更が続いているので、設定が思った通りに効かない場合はまず上記の公式ドキュメントを確認するのが早いです。