AI時短ラボ
検証· 約15

AIエージェントに`rm -rf ~`を打たれても平気にする──macOS向けサンドボックスAgent Safehouseの仕組み

オープンソースツールAgent Safehouseは、macOSのカーネルレベルでプロジェクトディレクトリ外への書き込みを拒否する「deny-first」型サンドボックス。公式サイトによるとClaude Code・Codex・Gemini CLI・Cursor Agentなど主要コーディングエージェントに対応し、Homebrewまたはシェルスクリプト1本で導入できる。

AIエージェントに`rm -rf ~`を打たれても平気にする──macOS向けサンドボックスAgent Safehouseの仕組み
執筆・編集:
目次

3行まとめ

  1. Agent Safehouseは、AIコーディングエージェントを実行する際にmacOSのカーネルレベルでファイルアクセスを制限するオープンソースのサンドボックスツール。プロジェクトディレクトリ外への書き込みを、シェルやアプリではなくOSのカーネルがシステムコールの段階で拒否する。
  2. デフォルトは「deny-first(拒否がデフォルト)」で、明示的に許可したパス以外はすべてアクセス不可。~/.ssh/~/.aws/、他のリポジトリなどは何も設定しなければ自動的に見えなくなる。
  3. 公式サイトによると、Claude Code・Codex・OpenCode・Amp・Copilot CLI・Gemini CLI・Aider・Goose・Auggie・Pi・Cursor Agent・Cline・Kilo Code・Droidなど主要なコーディングエージェントに対してテスト済みで、Homebrewまたは単一のシェルスクリプトでインストールできる。

何のためのツールか

Agent Safehouseの公式サイトは、AIコーディングエージェントに強い権限(--dangerously-skip-permissionsのような、確認なしで何でも実行させるフラグ)を与えることの危険性を、次のように説明している。「LLMは確率的なものだ。1%の確率で大惨事が起きるなら、それは『もし』ではなく『いつ』の問題になる」。実際、サイトのトップにはエージェントが誤ってrm -rf ~(ホームディレクトリを丸ごと削除するコマンド)を実行しようとする寸劇的な例が示され、「Safehouseはこれを0%の確率にする──カーネルによって強制される」と説明されている。

つまりこのツールは、プロンプトで「気をつけて」「削除しないで」と指示する類の対策ではなく、OSのカーネルが該当するシステムコールをそもそも実行させない、という物理的な強制力に頼る設計だ。

公式サイトは「0%の確率にする」という強い言い切りをしているが、GitHubリポジトリのREADME本文を直接読むと、開発者自身はもう少し慎重な書き方をしている。

It is a hardening layer, not a perfect security boundary against a determined attacker.

(これは強度を高める層であって、執念深い攻撃者に対する完全なセキュリティ境界ではない)

つまり「LLMの暴走・うっかりミスを防ぐ」という文脈での実効性と、「本気で突破しようとする攻撃者からも守る」という文脈での保証は別物だと、開発者自身がREADMEで区別している。公式サイトのキャッチーな「0%」という表現と、開発者がGitHub上で書いている技術的に控えめな説明との間には、この記事を書く上でトーンの差があった。

仕組み──「許可されていないものはすべて拒否」

公式サイトは自社の権限モデルを「Deny-first access model」と呼んでいる。通常、AIエージェントはそれを起動したユーザーの全権限を継承するが、Safehouseはこれを反転させ、「明示的に許可されない限り何にもアクセスできない」状態にする。サイトに掲載されている設定例では、次のような区分けが示されている。

  • ~/my-project/: 読み書き可能
  • ~/shared-lib/: 読み取り専用
  • ~/.ssh/: アクセス拒否
  • ~/.aws/: アクセス拒否
  • ~/other-repos/: アクセス拒否

サイトには、実際にSafehouse経由でSSH秘密鍵を読もうとするコマンド例も掲載されており、「safehouse cat ~/.ssh/id_ed25519」を実行すると「Operation not permitted」というエラーがカーネルレベルで返る、つまりプロセスがデータを目にする前に拒否される、と説明されている。他のリポジトリをlsしようとした場合も同様に「Operation not permitted」で弾かれ、サンドボックス外のディレクトリはエージェントから見て存在しないのと同じ扱いになる。

GitHubのREADMEにはさらに細かい挙動の説明があった。ホームディレクトリ($HOME)へのデフォルトのアクセスは「完全に見えない」わけではなく、メタデータのみのトラバーサル(statは通るがlscatは通らない)に絞られているという。README曰く「stat "$HOME"は成功する一方、ls "$HOME"cat ~/secret.txtは、より具体的なルールで許可されない限り失敗する」。つまりエージェントは「ホームディレクトリが存在すること」自体は検知できるが、その中身は覗けない、という中間的な挙動になっている。

導入方法

公式サイトが示すインストール手順は2通りある。

# Homebrewでインストール
brew install eugene1g/safehouse/agent-safehouse

# または単一のシェルスクリプトをダウンロード
mkdir -p ~/.local/bin
curl -fsSL https://github.com/eugene1g/agent-safehouse/releases/latest/download/safehouse.sh \
  -o ~/.local/bin/safehouse
chmod +x ~/.local/bin/safehouse

インストール後は、対象のプロジェクトディレクトリに移動してエージェントをSafehouse経由で起動する。

cd ~/projects/my-app
safehouse claude --dangerously-skip-permissions

Safehouseは、選択した作業ディレクトリ(デフォルトはgitのルート)への読み書きアクセスと、インストール済みのツールチェーンへの読み取りアクセスを自動的に許可し、ホームディレクトリの残り大部分(SSH鍵、他のリポジトリ、個人ファイルなど)はカーネルによって拒否される、とサイトは説明している。

さらに、シェル設定ファイルに関数を追加しておけば、claudecodexといった通常のコマンドを打つだけで自動的にSafehouse経由で起動されるようにできる。公式サイトに掲載されている設定例(zsh/bash向け)は次の通りだ。

# ~/.zshrc or ~/.bashrc
safe() { safehouse --add-dirs-ro=~/mywork "$@"; }

# サンドボックス化がデフォルトになる
claude() { safe claude --dangerously-skip-permissions "$@"; }
codex() { safe codex --dangerously-bypass-approvals-and-sandbox "$@"; }
amp() { safe amp --dangerously-allow-all "$@"; }
gemini() { NO_BROWSER=true safe gemini --yolo "$@"; }

# サンドボックスを外したい時は command を頭に付ける
# command claude — 通常の対話セッション

サンドボックスなしで実行したい場合は、コマンドの前にcommandを付けることでこの関数をバイパスできるとされている。

Claude Code公式のサンドボックス機能との違い

Claude Codeには、Anthropic公式が提供する/sandboxパネル経由のBashサンドボックス機能が既にある(macOSではSeatbeltフレームワークを使い追加インストール不要)。Agent Safehouseはこれとは別に、macOS標準のsandbox-execをベースにしたサードパーティ製・エージェント非依存のツールという位置づけだ。公式サイトのテスト済みエージェント一覧にはClaude Codeだけでなく、Codex・Gemini CLI・Cursor Agentなど14種類のツールが並んでおり、「特定の1社のエージェントだけでなく、使っているツールを問わず同じ仕組みで守りたい」というニーズに向いている。LLMプロンプトを使って自分の環境に合わせた最小権限プロファイルを生成する手順も用意されている、とサイトには記載がある。

Claude Code公式のサンドボックスドキュメントを実際にcurlで取得して読むと、両者の設計思想の違いがもう少し具体的に見えてくる。

項目 Agent Safehouse Claude Code公式サンドボックス
デフォルトの読み取り deny-first(明示的に許可した場所以外は読めない) 「コンピュータ全体を読める」がデフォルト。~/.aws/credentials~/.ssh/も、sandbox.credentials等で個別にブロックしない限り読める
ネットワーク制限 公式サイト・READMEに明示的な記載を確認できず サンドボックス外で動くプロキシ経由でドメイン単位の許可制。未許可ドメインは初回にプロンプトで確認、strictAllowlist設定で自動拒否も可能
OS実装 sandbox-exec(macOS標準) macOSはSeatbelt、Linux/WSL2はbubblewrap
対応エージェント Claude Code含む14種以上(エージェント非依存) Claude Code専用

特に読み取り権限の既定値は対照的だ。Agent Safehouseは「明示的に許可した場所しか読めない」という厳格な既定値を掲げるのに対し、Claude Code公式サンドボックスは「書き込みは制限するが、読み取りはデフォルトでほぼ全開放(認証情報ファイルを含む)」という設計になっている。目的(ファイル破壊の防止か、認証情報の漏洩防止か)によって、どちらの既定値が適切かは変わりそうだ。またネットワーク制限は、公式サンドボックスには明記されている一方、Agent Safehouse側では本記事の確認範囲では見つけられなかった。

GitHubリポジトリの概要も確認しておく(2026年8月27日時点)。

項目 内容
スター数 約2,000
フォーク数 88
オープンなIssue数 21件
ライセンス Apache-2.0
コミット数 284
実装方式 macOS標準のsandbox-exec+合成可能なポリシープロファイル

2,000スターという規模から、単なる個人の実験プロジェクトというより、一定数のユーザーに実際に使われているツールだとうかがえる。ただし本記事では、Issue欄に実際にどんな不具合・要望が挙がっているかまでは読み込んでいない。

GitHubのリリースノートを確認すると、直近版v0.11.1(2026年7月17日公開)では、1Password経由のSSH署名、Podman/Dockerのソケット、Chromium系ブラウザのヘッドレス起動、Claude・Codexのデスクトップアプリなど、個別ツールとの互換性を細かく調整する修正が並んでいた。macOSのバージョン差(Tahoe 26.4+でSSH_AUTH_SOCKの配置が変わった件への対応など)まで追いかけている点から、リリースは一度きりの公開で終わらず、実際に使われた上でのフィードバックを反映しながら継続的にメンテナンスされていることがうかがえる。

実際にインストールして動かしてはいない

  • 本記事はAgent Safehouse公式サイト(agent-safehouse.dev)とGitHubリポジトリのトップページ・READMEを2026年8月27日にcurlで取得した内容にもとづく。実際にインストールして動作を検証したものではなく、記述はすべて公式サイト・READMEの説明の整理にとどまる
  • 開発者名(GitHubアカウントeugene1g)以外の運営主体情報は、GitHub・公式サイトいずれからも「個人がApache-2.0で公開しているOSSプロジェクト」以上の情報は確認できなかった。企業のバックがあるのか個人プロジェクトなのかという点は、少なくとも「個人プロジェクトである可能性が高い」というところまでは絞り込めた
  • macOS専用であり、Windows・Linuxでの利用可否についての記載は見当たらなかった
  • ネットワークアクセスの制限については、公式サイト・READMEのいずれにも明示的な記載を見つけられなかった。今回確認できた範囲は「ファイルアクセスの制限」が中心で、エージェントが任意の外部サーバーへ通信すること自体を防ぐ機能があるかどうかは本記事では確認していない

関連記事

シェア: ポスト はてブ

出典・参照資料

AIニュースの解説を動画でも

YouTubeでは注目ニュースの背景を解説し、Xでは新着記事をお知らせしています。

コメント

まだコメントはありません。最初のコメントを書いてみませんか?

AIについて聞きたいことはありますか?

質問箱で無料で受け付けています。回答は公開され、他の方の参考にもなります。

質問箱を見る →

新しい記事をメールで受け取る

AIの新しい発表を、出典付きで整理して届けます。

関連記事

Agent Client Protocol(ACP)とは──コーディングエージェントを「LSPのように」つなぐ標準規格の記事画像
検証09.04読了13

Agent Client Protocol(ACP)とは──コーディングエージェントを「LSPのように」つなぐ標準規格

出典 ─ Introduction(Agent Cli
30プロバイダを自動フェイルオーバーで渡り歩く──Rust製ターミナルコーディングエージェント「VT Code」の記事画像
検証09.04読了13

30プロバイダを自動フェイルオーバーで渡り歩く──Rust製ターミナルコーディングエージェント「VT Code」

出典 ─ vinhnx/vtcode README(G
1つのACPエージェントの中にClaude・Codex・Grokが同居する──『艦隊型』オーケストレータClaw Orchestratorの記事画像
検証09.03読了13

1つのACPエージェントの中にClaude・Codex・Grokが同居する──『艦隊型』オーケストレータClaw Orchestrator

出典 ─ Enderfga/claw-orchestr
Claude Code・Codex・Hermesを1コンテナにまとめる「HarnessRouter」──自前サーバーで動かす統一プロトコルの記事画像
検証09.03読了14

Claude Code・Codex・Hermesを1コンテナにまとめる「HarnessRouter」──自前サーバーで動かす統一プロトコル

出典 ─ harnessrouter/harnessr
GitHubにすら置かれていないコーディングエージェント「kaagum」──Guile言語・自前UIなし・ACP専用という徹底ぶりの記事画像
検証09.02読了14

GitHubにすら置かれていないコーディングエージェント「kaagum」──Guile言語・自前UIなし・ACP専用という徹底ぶり

出典 ─ kaagum: Tiny, security
Claude Code・Codex・Devin──「APIキーを配らない」認証への移行が同時に進んでいるの記事画像
検証09.01読了18

Claude Code・Codex・Devin──「APIキーを配らない」認証への移行が同時に進んでいる

出典 ─ Workload Identity Fede
Claude発の「Skills」がベンダー中立の標準規格になっていた──agentskills.ioを実際に開いて確認するの記事画像
検証09.06読了10

Claude発の「Skills」がベンダー中立の標準規格になっていた──agentskills.ioを実際に開いて確認する

出典 ─ Agent Skills Overview(
アイデア1行をPDFの論文に変えるspark-to-paper-skills──Claude Codeの13個のスキルだけで、数値を捏造せず図まで組む仕組みの記事画像
検証09.06読了14

アイデア1行をPDFの論文に変えるspark-to-paper-skills──Claude Codeの13個のスキルだけで、数値を捏造せず図まで組む仕組み

出典 ─ Spark-To-Paper-Skills/