
AIエージェント向けの実行層セキュリティ(ELS) — 監査機能付きポリシー強制シェル。
macOS 注意: ESF(Endpoint Security Framework)+ NE(Network Extension)によるネイティブ macOS の強制適用は Alpha です。ファイル・プロセス・ネットワークイベントがシステム拡張機能から Go ポリシーエンジンへ流れるエンドツーエンドの動作はしますが、リリース間での荒さや破壊的変更が予想されます。本番利用には現時点では Linux を推奨します。
Windows 注意: minifilter ドライバの署名取得に取り組んでいます。それまでは、本番利用では Windows WSL2 モードのみが完全にサポートされます。
AI エージェント向けの、セキュアでポリシー強制型の実行ゲートウェイ。
agentsh はエージェント / ツールの下に位置し、ファイル・ネットワーク・プロセス・シグナルアクティビティ(サブプロセスツリーを含む)を傍受し、定義したポリシーを強制し、構造化監査イベントを出力します。
プラットフォーム注記: Linux は完全な強制適用(セキュリティスコア 100%)を提供します。macOS ESF+NE(スコア 90%)は Alpha で、機能はするものの本番準備はできていません。Windows WSL2 は Linux 相当の完全な強制適用(スコア 100%)を提供します。minifilter ドライバ + AppContainer によるネイティブ Windows(スコア 85%)はドライバ署名待ちです。詳細は プラットフォーム比較マトリクス を参照してください。
allow、deny、approve(人間の承認)、soft_delete、redirect。db_services を介した Postgres 系データベーストラフィックエージェントのワークフローは、最終的には任意のコード(pip install、make test、python script.py)を実行することになります。従来の「コマンド実行前に承認を求める」方式の制御はツール境界で止まり、そのコマンドの内部で何が起きているかは見えません。
agentsh はポリシーを実行時に強制するため、サブプロセスが行う隠れた作業も管理・記録され、必要に応じて承認されます。
ほとんどのシステムはアクションを deny できます。agentsh はそれを redirect することもできます。
つまり、エージェントが誤ったアプローチ(または力技の回避策)を試みたとき、ポリシーがコマンドを置き換えてガイダンスを返すことで、正しい経路へ誘導できます。これによりエージェントを整備された道に留め、無駄なリトライを減らせます。
例: curl を監査付きラッパーへリダイレクトする```yaml command_rules:
**例: ワークスペース外への書き込みを内部にリダイレクト**```yaml
file_rules:
- name: redirect-outside-writes
paths: ["/home/**", "/tmp/**"]
operations: [write, create]
decision: redirect
redirect_to: "/workspace/.scratch"
message: "Writes outside workspace redirected to /workspace/.scratch"
エージェントは成功した操作を認識します(エラーではありません)が、実際に何がどこに着地するかはあなたが制御します。
コンテナはホストの攻撃面を隔離します。agentsh はコンテナ内のランタイム可視性とポリシーを追加します。
macOS(Homebrew)```bash brew tap canyonroad/tap brew install --cask agentsh
これにより、ESF+NE システム拡張機能を備えた AgentSH アプリバンドルがインストールされます。インストール後、**System Settings > General > Login Items & Extensions** でシステム拡張機能の承認を求められます。
**Linux(GitHub Release から)**
お使いのプラットフォーム用の `.deb`、`.rpm`、または `.apk` を [リリースページ](https://github.com/erans/agentsh/releases) からダウンロードしてください。```bash
# Example for Debian/Ubuntu
sudo dpkg -i agentsh_<VERSION>_linux_amd64.deb
ソースから(Linux)```bash make build sudo install -m 0755 bin/agentsh bin/agentsh-shell-shim /usr/local/bin
**ソースから (macOS)**```bash
# ESF+NE mode (full enforcement — Alpha, requires Xcode 15+)
make build-macos-enterprise
詳細なmacOSビルド手順については、macOSビルドガイドを参照してください。
./bin/agentsh server --config configs/server-config.yaml
SID=$(./bin/agentsh session create --workspace . --json | jq -r .id) ./bin/agentsh exec "$SID" -- ls -la
./bin/agentsh exec --output json --events summary "$SID" -- curl https://example.com
### Check what gets enforced
`agentsh detect` はホストを調査し、実際に利用可能な強制プリミティブ — seccomp、Landlock、FUSE、eBPF、ptrace、cgroups — を報告し、ドメインごとの保護スコアと選択されたセキュリティモードにグループ化します。制限されたホスト(Daytona、E2B、Firecracker クラス)で seccomp user-notify リスナーをインストールできない場合、カーネルが単にサポートしているものではなく、*実際に*強制されるモードを報告します。```bash
agentsh detect # human-readable protection report
agentsh detect config # emit a config tuned for this host
モードマトリクスと調整用ノブについては、Security Modes を参照してください。
agentsh exec $SID -- <your-command-here>agentsh exec --output json --events summary $SID -- <your-command-here>SID=$(agentsh session create --workspace . --json | jq -r .id)---
### 自動起動(手動デーモン手順は不要)
`agentsh server` を自分で起動する必要は**ありません**。
* 最初の `agentsh exec`(または shim 化された `/bin/sh` / `/bin/bash`)が、`configs/server-config.yaml`(または設定されていれば `AGENTSH_CONFIG`)を使用してローカルサーバーを自動的に起動します。
* そのサーバーは、セッションの存続期間中 FUSE レイヤーとポリシーエンジンを維持します。後続のコマンドはそれを再利用します。
* サーバーのライフサイクルを手動で管理したい場合は、`AGENTSH_NO_AUTO=1` を設定してください。
---
## Docker での使用(シェル shim 付き)
最小限の Debian ベースイメージについては、`Dockerfile.example` を参照してください。
イメージ内でリリースパッケージをインストール(またはビルドをコピー)してから、shim を有効にします。```bash
agentsh shim install-shell \
--root / \
--shim /usr/bin/agentsh-shell-shim \
--bash \
--i-understand-this-modifies-the-host
shimをサーバー(サイドカーまたはホスト)に向けてください:```dockerfile ENV AGENTSH_SERVER=http://127.0.0.1:18080
これで、コンテナ内の `/bin/sh -c ...` や `/bin/bash -lc ...` はすべて agentsh を経由します。
### 非対話モードでの強制
デフォルトでは、stdin が TTY でない場合、シムはポリシーをバイパスします(パイプ渡しされるコマンドのバイナリデータを保持するため)。コマンドが常に非対話的でありながら強制適用が必要なプラットフォーム(例: exe.dev、サンドボックス API)では、`--force` を指定してください:```bash
agentsh shim install-shell \
--root / \
--shim /usr/bin/agentsh-shell-shim \
--bash \
--force \
--i-understand-this-modifies-the-host
これは /etc/agentsh/shim.conf を force=true で書き込み、shimは起動時にこれを読み取ります。この設定ファイルは、シェルがどのように起動されても機能します(環境変数やプロファイルスクリプトとは異なります)。プロセス環境内の AGENTSH_SHIM_FORCE=1 も、プロセス単位で同じ効果をもたらします。
推奨パターン: agentsh を同じポッド/サービスのサイドカー(またはPID 1)として実行し、ワークスペースボリュームを共有します。shimはすべてのシェルホップがポリシーの下に留まることを保証します。
allowdenyapprove(人間による承認)redirect(コマンドを置き換える)audit(許可+ログ)soft_delete(削除を検疫し、復元可能にする)ルールは名前付きポリシーに格納され、セッションがポリシーを選択します。
デフォルト:
configs/server-config.yamlconfigs/policies/default.yamlAGENTSH_POLICY_NAME を許可されたポリシー名(サフィックスなし)に設定します。未設定・無効・許可されていない場合はデフォルトが使用されます。policies.env_policy(allow/deny、max_bytes、max_keys、block_iteration)とコマンドごとの env_* 上書きを設定します。空の許可リストは、組み込みのシークレット拒否リストを備えた最小限の PATH/LANG/TERM/HOME をデフォルトにします。block_iteration を設定すると、env の反復処理を非表示にします(env shim が必要)。config.yml の policies.allowed を設定します。空の場合はデフォルトのみが許可されます。policies.manifest_path にSHA256マニフェストを設定します。