nono: Seatbelt / Landlock でコマンドを OS サンドボックス実行する
nono run -- <command> で、macOS は Seatbelt、Linux は Landlock によるカーネル強制の capability 制限をかけてコマンドを実行する。ユーザー空間だけのラッパより逃げにくい。
どんなときに使う?
- エージェントや不審なスクリプトに、特定パス以外を触らせたくない
- Docker / microVM までは重いが、プロセス単位の隔離は欲しい
- 「一度かけたら広げられない」サンドボックスが欲しい(escape hatch なし)
やり方
bash
nono run -- <command>ポリシー(読めるパス、ネットワーク可否など)は CLI のフラグ / プロファイルで指定する(詳細は公式 docs)。
仕組みの要点
- macOS: Seatbelt プロファイルを生成し
sandbox_init()。制限は永続で子プロセスにも継承 - Linux: Landlock ruleset を作り
restrict_self()。ABI によってネットワーク制御の可否が変わる(TCP フィルタは比較的新しいカーネル)
注意点
- Landlock が無効なカーネルでは動かない / 部分適用になる。
CONFIG_SECURITY_LANDLOCKや boot のlsm=を確認 - macOS で Terminal に Full Disk Access が無いと、TCC と合わせて意図より狭くなることがある
- Docker Sandboxes(
sbx)のようなフル VM 隔離とは層が違う。必要なら併用や使い分け
出典
- @zaru · 2026-07-16
- GitHub: github.com/nolabs-ai/nono
- Docs: nono.sh