Claude Codeをサンドボックス上で実行するスクリプト
Macのsandbox-execを使用してClaude Codeをサンドボックス上で実行するスクリプトclaude-sandboxを作成しました。
コアとなるアイデアとして、以下の記事を参考にさせてもらいました。
claude-sandboxは300行程度のごく小規模な単一ファイルのBashスクリプトです。実行すると、内部でサンドボックスのプロファイルを作成し、それを利用したsandbox-exec経由でClaude Codeを実行します。
claude-sandboxはclaudeコマンドを、ほぼそのまま置き換えて使えるようにデザインされています。つまり
claude
と実行する代わりに
claude-sandbox
とするだけで、安全なサンドボックス環境でClaude Codeが起動します。
インストール
単一ファイルのBashスクリプトなので、インストールはGithubのリポジトリにあるclaude-sandboxファイルをダウンロードして実行権限を付与するだけです。以下はcurlを使って/usr/local/bin配下にインストールする例です
curl -sSL https://raw.githubusercontent.com/kohkimakimoto/claude-sandbox/refs/heads/main/claude-sandbox | sudo tee /usr/local/bin/claude-sandbox > /dev/null && sudo chmod +x /usr/local/bin/claude-sandbox
実行
基本的な使い方は、前述したようにclaudeコマンドの代わりにclaude-sandboxを実行するだけで良いです。
claude-sandbox
これで作業ディレクトリ配下とClaude Codeが暗黙的に利用する関連ファイル、一時ディレクトリなどを除いて、ファイルの書き込みが制限された状態でClaude Codeが起動します。
実際のサンドボックスの設定(プロファイル)がどうなっているかはclaude-sandbox profileコマンドで確認できます。
claude-sandbox profile
;; This is a default built-in sandbox profile for claude-sandbox.
(version 1)
(allow default)
(deny file-write*)
(allow file-write*
;; Working directory
(subpath (param "WORKDIR"))
;; Claude Code
(subpath (string-append (param "HOME") "/.claude"))
(literal (string-append (param "HOME") "/.claude.json"))
(literal (string-append (param "HOME") "/.claude.json.lock"))
(literal (string-append (param "HOME") "/.claude.json.backup"))
(regex (string-append "^" (param "HOME") "/\\.claude\\.json\\.tmp"))
;; Temporary directories and files
(subpath "/tmp")
(subpath "/var/folders")
(subpath "/private/tmp")
(subpath "/private/var/folders")
;; Home directory
(subpath (string-append (param "HOME") "/.npm"))
(subpath (string-append (param "HOME") "/.cache"))
;; devices
(literal "/dev/stdout")
(literal "/dev/stderr")
(literal "/dev/null")
)
サンドボックスのカスタマイズ
サンドボックスの設定をカスタマイズしたいときは、カレントディレクトリ配下に.claude/sandbox.sbファイルを作成して、そこに設定を書きます。claude-sandboxは .claude/sandbox.sbにファイルがあると、そこからサンドボックスの設定を読み込みます。
デフォルトと同じ初期設定で.claude/sandbox.sbを新規作成するためのコマンドclaude-sandbox initを用意したので、それを使って作成した後に、自分の用途に合わせて編集してもよいでしょう。
claude-sandbox init
# .claude/sandbox.sbが作成される
また、特定のプロジェクト(ディレクトリ)ごとではなく、グローバルに設定を変更したいときは、ホームディレクトリ配下の.claude/sandbox.sbに設定を記述することで対応できます。こちらはclaude-sandbox init-globalで、初期設定が定義された状態のファイルを作成することができます。
claude-sandbox init-global
# ~/.claude/sandbox.sbが作成される
既知の制限
IDEのターミナル(VSCodeやIntelliJ内のターミナル)からclaude-sandboxを起動したときに、IDEとの連携ができない問題があります。一方、Macの標準のターミナルからなら問題なく連携でき、この不具合の原因は判明していません。
まとめ
Claude Codeをサンドボックス環境で動作させるためのツールclaude-sandboxを紹介しました。シンプルにclaudeと置き換えて使うことができ、Claude Codeの予期せぬ動作によるリスクを軽減することができます。
Discussion