
2026/03/09 5:30
エージェント・セーフハウス – macOS ネイティブサンドボックスによるローカルエージェントの保護 --- **ポイント解説** - **Agent Safehouse** は、macOS 上で動作するローカルエージェント(バックグラウンドプロセスやサービス)を安全に隔離し、外部からの不正アクセスや権限昇格を防ぐための仕組みです。 - 「macOS‑native sandboxing」は、Apple が提供するサンドボックス機能(`sandbox-exec`, `com.apple.security.*` など)を利用しており、追加のソフトウェアやカーネル拡張は不要です。 **主な特徴** 1. **最小権限で実行** – 必要最低限のファイル・ネットワークアクセスのみ許可し、それ以外は自動的にブロック。 2. **監査ログ** – アクセス試行や失敗がすべて記録され、後からトラブルシューティングやセキュリティ調査に利用可能。 3. **設定の柔軟性** – プロファイルベースでポリシーを定義でき、企業規模に合わせた細かな制御が可能。 **実装例(サンドボックスプロファイル)** ```xml <key>com.apple.security.app-sandbox</key> <true/> <key>com.apple.security.files.user-selected.read-write</key> <true/> ``` このように、エージェント・セーフハウスは macOS の標準機能だけで安全性を大幅に向上させるソリューションです。
RSS: https://news.ycombinator.com/rss
要約▶
Japanese Translation:
Safehouse は、ローカル AI エージェントがアクセスできるファイルを厳密に制御する軽量な macOS ネイティブサンドボックスです。デフォルトでは「deny‑first」ポリシーに従い、指定されたワークスペース外への読み書き試行はカーネルエラー(“Operation not permitted”)を引き起こし、SSH キーや
などの機密項目やその他個人リポジトリを保護します。ツールは.awsを使ってcurlにインストールされる単一の Bash スクリプト(~/.local/bin)でセットアップされます。safehouse.shエージェントは
のようなコマンドで呼び出され、現在の作業ディレクトリ(通常は git リポジトリルート)への読み書きアクセスを自動的に許可し、インストール済みツールチェーンへの読み取りアクセスのみを許可して残りのホームディレクトリは拒否します。safehouse claude --dangerously-skip-permissions上級ユーザーは
のようなシェル関数をsafe() { safehouse --add-dirs-ro=~/mywork "$@"; }や.zshrcに追加し、すべてのエージェント呼び出しがデフォルトで Safehouse 内で実行されるようにできます。セッションごとにサンドボックスをバイパスするには、コマンドに文字列.bashrcを接頭辞として付けます(例:command)。command claudeこのゼロコンフィグ方式により、開発者やチームはローカルファイルとの AI 連携を安全に行い、個人プロジェクト、クラウド認証情報、企業リポジトリでの偶発的なデータ漏洩を減らすことができます。
本文
ゴー・フル― ヨロ。
macOS‑ネイティブのサンドボックスでローカルエージェントを保護します。高速に動かし、何も壊さないように。
LLMは確率的です ― 1%の破綻リスクがあるなら「いつ」起こるかが問題で、「起きるかどうか」はではありません。
あなたは完璧に仕上げられたMacBook Proを持ち、エージェント思考…
$ rm -rf ~you!@#$ I told you, "Make no mistakes." agent: You're absolutely right! 👁️ 👉👈 👁️
主要なすべてのエージェントでテスト済み:
- それぞれのサンドボックス内では完全に機能しますが、外部には影響できません。
「拒否優先」アクセスモデル
エージェントはあなたと同じユーザー権限を継承します。Safehouse はこれを反転させ、明示的に許可されない限り何もアクセスできません。
| パス | 権限 |
|---|---|
| ✅ |
| ✅ |
| ❌ |
| ❌ |
| ❌ |
はじめに
単一のシェルスクリプトをダウンロードし、実行権限を付与してエージェントをその中で走らせます。
ビルドステップも依存関係も不要 ― Bash と macOS のみです。
1. Safehouse をダウンロード(単一自己完結スクリプト)
mkdir -p ~/.local/bin curl -fsSL https://raw.githubusercontent.com/eugene1g/agent-safehouse/main/dist/safehouse.sh \ -o ~/.local/bin/safehouse chmod +x ~/.local/bin/safehouse
2. Safehouse 内で任意のエージェントを実行
cd ~/projects/my-app safehouse claude --dangerously-skip-permissions
Safehouse は自動的に選択した作業ディレクトリ(デフォルトは Git のルート)に読み書きアクセスを付与し、インストール済みツールチェーンには読み取りアクセスを許可します。
SSH キーやその他のリポジトリ、個人ファイルなどホームディレクトリ全体はカーネルで拒否されます。
サンドボックスが機能していることを証明
# SSH 秘密鍵を読むとき – カーネルにより拒否 safehouse cat ~/.ssh/id_ed25519 # cat: /Users/you/.ssh/id_ed25519: Operation not permitted # 別リポジトリを一覧表示すると見えません safehouse ls ~/other-project # ls: /Users/you/other-project: Operation not permitted # ただし現在のプロジェクトは正常に機能します safehouse ls . # README.md src/ package.json ...
デフォルトで安全、シェル関数で実装
以下をシェル設定ファイルに追加すれば、すべてのエージェントが自動的に Safehouse 内で走ります ― 忘れる必要はありません。
サンドボックスなしで実行したい場合は
command claude を使って関数をバイパスします。
# ~/.zshrc または ~/.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 # 単純な対話セッション