- macOSネイティブサンドボックスにより、ローカルAIエージェントを隔離し、システム外部を変更できないようにするツール
- すべてのエージェントが独立したサンドボックス環境で実行され、ユーザーのホームディレクトリや他のプロジェクトにはアクセス不可
- Deny-firstアクセスモデルを適用し、明示的に許可されたディレクトリのみ読み書き可能
- インストールは単一のBashスクリプトで完了し、追加のビルドや依存関係なしですぐに実行可能
- LLMベースのプロファイル生成機能により、最小権限のsandbox-exec設定を自動化できる
概要
- Agent SafehouseはmacOS専用のサンドボックスシステムで、ローカルで実行されるAIエージェントがシステムファイルを破損しないよう保護
- “Go full
--yolo. We've got you.” “Move fast, break nothing”
- LLMの確率的な特性によって生じる予期しないコマンド実行のリスクを防止
- 主要なすべてのエージェントがサンドボックス内で完全に動作し、外部システムには影響を与えない
- Deny-firstアクセスモデルを採用し、デフォルトですべてのアクセスを遮断し、明示的に許可されたパスのみアクセス可能
- 例:
~/my-project は読み書きを許可、~/.ssh, ~/.aws, ~/other-repos はアクセス拒否
インストールと実行
- インストールは単一のシェルスクリプトのダウンロードで完了
curl コマンドでスクリプトを取得し、~/.local/bin/safehouse に保存して実行権限を付与
- その後は
safehouse コマンドで任意のエージェントを実行
- 例:
safehouse claude --dangerously-skip-permissions
- Safehouseはデフォルトで現在の作業ディレクトリ(git root) に読み書き権限を付与し、ツールチェーンディレクトリには読み取り専用アクセスを許可
サンドボックス検証の例
- 機密ファイルへのアクセスはカーネルレベルで遮断される
safehouse cat ~/.ssh/id_ed25519 を実行すると “Operation not permitted” エラーが発生
- 他のプロジェクトディレクトリ(
~/other-project)は見えない
- 現在のプロジェクトディレクトリには正常にアクセス可能
自動化とプロファイル生成
- シェル関数の追加により、すべてのエージェントをデフォルトでSafehouse内で実行可能
- 例:
.zshrc または .bashrc に safe() 関数を定義し、claude, codex, amp, gemini コマンドを自動的にサンドボックス化
- サンドボックスなしで実行するには
command claude 形式で呼び出す
- LLMベースのプロファイル生成機能を提供
- Claude、Codex、Gemini などのモデルがSafehouseテンプレートを解析し、最小権限のsandbox-execプロファイルを生成
- ホームディレクトリとツールチェーン情報を基に
~/.config/sandbox-exec.profile パスへ保存
- 現在の作業ディレクトリへのアクセス権限と、エージェントごとのショートカットコマンドを含む
セキュリティと活用上の意義
- LLMベースのローカルエージェントが意図しないファイル削除やシステム変更を行えないよう保護
- macOSのカーネルレベルのアクセス制御を活用し、デフォルトで安全な実行環境を提供
- 単一スクリプトベースで開発者のワークフローに容易に統合可能
1件のコメント
Hacker Newsのコメント
自分が作ったプロジェクトがこんなに早く公開されるとは思わなかった
1️⃣ 私は ローカルで直接実行されるエージェント を好んでいる。コンテナやリモートサーバーではなく、自分が細かく調整した自分のマシン上で動くほうが安心できる
2️⃣ これは実質的に sandbox-exec 用の ポリシー生成器 だ。依存関係もなく、仮想化もない。その代わり、各エージェントが自動更新、キーチェーン統合、画像の貼り付けなどを行うために必要な最小権限を見つけることに多くの時間をかけた。関連する調査内容は agent-safehouse.dev/docs/agent-investigations にまとめてある
3️⃣ プロジェクト全体を使う必要すらない。Policy Builder だけでも sandbox-exec ポリシーを生成して dotfiles に入れて使える
これまでも sandbox ポリシーのドキュメントは見てきましたが、こういう すぐ使えるアプリの形 は初めてでした
ただ、いくつか不便な点がありました — ホームディレクトリの
.gitconfig、.gitignoreへのアクセスが制限され、プロセスアクセス制約のせいで Claude にlldbやpkillのようなコマンドを実行させられません。細かな権限制御 ができるとよいと思いますサイトとスクリプトをざっと見ましたが、特に問題点は見つかりませんでした。何か文書化されていない 注意点 はありますか?
tarball 形式で配布してほしいです。tarball なら中身を直接確認できるし、CI で自動生成されたものかどうかも検証できるので、より信頼できます
こういうプロジェクトを見るとうれしいし、今は sandboxing が最大の課題 だと思います
初期ユーザーは深く考えずにローカルでエージェントを動かすでしょうが、長期的にも企業環境でもそれでは絶対に通用しません
単にネットワーク、ファイル、実行権限を制御するだけでなく、ブラウザテストやクラウドリソース作成のような複雑なシナリオも扱う必要があります
結局は セキュリティ・コスト・権限制御を統合した実用的なアプローチ が必要です
私はローカルデーモンが短命の JWT を発行して、エージェントが直接キーを扱わないようにする方式を使っています。API アクセスにはうまく合いますが、それでもファイルシステムレベルでは EC2 インスタンスを無限に立ち上げることができます
複数のサンドボックスを比較評価するのが難しいのが問題です
これは sandbox-exec の ラッパー に見えますが、最近はこうしたラッパーがたくさん出てきています
本当に必要なのは 信頼性検証の文書と自動化テスト です。ほとんどのサンドボックスは文書が不十分です
信頼するには詳細な文書と、実際に動作している証拠が必要です
各エージェント向けの sandbox-exec プロファイルは GitHub のプロファイルフォルダ に分けてあり、簡単にレビューできます
実際のエージェントで E2E テスト も行っています
Safehouse ラッパーなしでも Policy Builder で最小権限ポリシーを直接生成できます
また、LLM にサンドボックスプロファイルを書かせるための ガイドファイル も提供しています
これは sandbox-exec の ラッパースクリプト です。あらかじめよく作られたプリセットが多くて良いです
sandbox-exec の 90% は適切な範囲設定で、残りの 90% はそれを理解することです
ただ、overlay や copy-on-write 方式 でサンドボックス化できるとよいと思います。自分の
.bashrcではなく、一時環境だけが変更されれば十分ですoverlay FS は macOS では難しいですが、CWD 外部を読み取り専用に制限して一時フォルダで作業するよう誘導する形で対処しました
TCP/UDP ポートの公開や、チームメンバーとの共有も可能です。GitHub リンク を参照してください
git-ignored ファイルにも安全にアクセスできます。Treebeard リンク
興味深いことに、sandbox-exec は macOS Sierra (2016) から公式に deprecated 状態でした
それでも今なお有用に使われています。Apple の App Sandbox はこうしたユーザー定義ルールには向いていません
Apple が完全に廃止しないことを願います
Sandvault というプロジェクトもあります。sandbox-exec と Unix ユーザーシステムを組み合わせた方式です
各エージェントに別々の非特権ユーザーアカウントを与え、sudo・SSH・共有ディレクトリで相互作用します
Sandvault GitHub リンク
私は macOS 向け GUI アプリを作って、sandbox-exec を視覚的に管理できるようにしました
ドメインごとのネットワークフィルタリング と シークレット検出機能 も含まれています
multitui.com
Apple の container コマンドを使って Claude code を Apple コンテナ内で実行する方法を共有します
container system start→container run→container execの順に環境を構成し、Node.js と Claude をインストールしますなぜローカルでエージェントを動かすほうがよいと考えるのか気になります。
ほとんどの人にとっては リモート実行 のほうが効率的だと思います — 常時起動しておく必要がないので
そのうえサブスクリプション料金を避けられます
セキュリティ強化を進めており、AI ワークフローには十分適しています
pixels GitHub リンク
「clunker」が「clanker」の新しい俗語なのか気になります。友だちの友だちの Roku が聞いています
ちょうど今サンドボックス化の問題で苦労しているので、タイミングが完璧です