隔離と検査と署名
AI と、外から入れる物は、BeesBuild の本体と鍵から離して動かします。入れる前には検査し、配る物には署名します。どれか 1 つが破られても、ほかの守りが止める重ね方です。
AI はサンドボックスで動かす
Windows の資格情報マネージャーと、コアと話す口(名前付きパイプ)は、同じ Windows の利用者のプロセスなら読める作りです。AI のエージェントを人と同じ利用者のまま動かすと、鍵の置き場とコアの口に届いてしまいます。だから AI は、サンドボックスで動かすのを既定にします。
| 形 | 中身 | 向く所 |
|---|---|---|
| WSL2 | Windows との相互の呼び出しを切った Linux の中で動かす | Claude Code(Claude Code のサンドボックスは、Windows の上では直接は動かないため) |
| Docker | コンテナーの中で動かす。Docker Sandboxes も使える | Claude Code・高度な設定のハーネス・スキルの試し |
| 別の Windows の利用者 | AI 専用の Windows の利用者で動かす | Windows でしか動かない物 |
Codex は、Windows の公式のサンドボックスを使います(ハーネスの設計)。
Windows Sandbox は、AI の隔離には使いません。同時に 1 つしか動かず、出力も取り出せないためです。
WSL2 の設定の見本
AI を動かす WSL の中の /etc/wsl.conf で、Windows のプログラムを呼ぶ道と、C ドライブの自動のつなぎを切ります。
# Windows のプログラム(powershell.exe など)を呼べなくする
[interop]
enabled = false
# Windows の PATH を足さない
appendWindowsPath = false
# C ドライブなどを /mnt に自動でつながない
[automount]
enabled = false
- 書き換えた後は、
wsl --shutdownで WSL を止めてから起こし直すと効きます。 - 仕事のフォルダーは、WSL の中に置くか、決めたフォルダーだけをつなぎます。
- 自動のつなぎを切った時に困る所が無いかは、試しの週に確かめます。確認中
口を分ける
| 口 | できる事 |
|---|---|
| 画面用の口 | 人の操作と承認。お金・鍵・権限は Windows Hello で本人を確かめる |
| AI 用の口(hb の命令・Hive Bus) | 読む・案を作る・決まりの範囲で動かす。承認の引数が無く、鍵の中身も返さない |
Hive Bus の守り
| 守り | 中身 |
|---|---|
| 受ける所 | 127.0.0.1 だけ。外のネットワークからは届かない |
| Origin のヘッダー | 確かめる。ブラウザーのページから手元の口を叩く攻撃(DNS rebinding など)を防ぐため |
| スレッドごとのトークン | 確かめる。名札の無い相手は受けない |
| 承認 | 道具は承認の引数を受けない |
| クラウドから | 届かない。手元に入る口は開けず、クラウドの蜂とは custom tool でつなぐ(クラウドの蜂) |
詳しくはHive Busにあります。
入れる前の門
外から入れる物は、どれも入れる前の門を通します。中心は、スキルと同じ 5 段の確認です(スキル)。
| 段 | すること |
|---|---|
| ① 出どころ | 元のリポジトリ・作者・commit と tree SHA・署名・ライセンス・前の版との差を見る |
| ② 静的な点検 | 手元で決まった項目を流す。中身を外に送らない |
| ③ AI の読み取り | 書いた AI と別のモデルが、全部のファイルを信用しないデータとして読む |
| ④ サンドボックスでの試行 | 鍵の無い使い捨ての VM・Docker・WSL の中で動かし、触ったファイルと出ようとした通信を宣言と比べる |
| ⑤ 人の承認 | 確認のカードに、要点・危ない所・許す事を 1 枚で出す。AI の承認は数えない |
| 入れる物 | 門 | 詳しく |
|---|---|---|
| スキル | 5 段。T0〜T2 は通れば自動、公開の物は人の承認、スクリプトか hooks を持つ物は既定で入れない | スキル |
| MCP のサーバー | 5 段。「読む」と「外へ送る」がそろう組み合わせは止める | つなぐ・MCP・プラグイン |
| プラグイン | 5 段に、権限の宣言と署名を足す | つなぐ・MCP・プラグイン |
| テーマ | 18 の項目の点検。人からもらった物は、5 段の全部と確認のカード | テーマ・キャラクター・遊びのモード |
| npm などの依存 | 名前の似た偽物と、OSV の悪い部品の記録(MAL- で始まる番号)を確かめる。依存の宣言とロックのファイルを変える PR は人が押す | PR の地図とマージ |
- リポジトリの中にあるスキルは、そのフォルダーでハーネスを開く前に点検に通します。
- ハーネスの側でも、危ない機能を既定で止めます。例えば Claude Code では、スキルの中の命令の実行を切ります(スキル)。
署名
| 物 | 署名と確かめ |
|---|---|
| BeesBuild のインストーラー(Windows) | OV 証明書で署名する。クラウドの HSM に置いた鍵で、CI から Tauri の signCommand を使って署名する |
| Mac 版 | Developer ID の証明書で署名し、Apple による確認(notarization)を通す ベータ版の後 |
| プラグイン | 発行者を確かめて署名する。市場の物は、署名と審査が無いと入らない ベータ版の後 |
テーマを配る包み(.bbtheme) | 全部のファイルの sha256 を書いた MANIFEST.sha256 と、作った道具の版と時刻を書いた ORIGIN.json を付ける。署名は後で足す ベータ版の後 |
| スキル | 版と digest(中身の指紋)を lock のファイルに書く。取り消した版は二度と入れない(スキル) |
| ハーネスの本体 | 同梱しない。各社の公式の入れ方で入れ、Claude Code は安定版の流れと下限の版で固定する(入れ方) |
Microsoft のクラウドの署名の仕組みは、調べた時点では日本の組織が対象外でした。だから OV 証明書を使います。Microsoft Store(MSIX)で配る形も比べています。確認中
プラグインの隔離
プラグインは、BeesBuild と別のプロセスで動き、鍵を持ちません。外への通信は宣言した先だけで、宣言に無い先へ出ようとした物は検査で止めます。問題が出たら、全部の PC から遠隔で止めます。公開の市場では悪い動きをするスキルが配られた例があるので、BeesBuild の市場は、そういう物が来る前提で作ります(つなぐ・MCP・プラグイン)。
専用の環境
ブラウザーと画面の操作と、スキルの試しは、仕事ごとに新しく作って消す専用の環境で動かします。
| 決まり | 中身 |
|---|---|
| 毎回まっさら | 仕事ごとに作って消す。ログインもプロフィールも残さない |
| root で動かさない | 別の利用者で動かし、ルートのファイルは読むだけ |
| PC のフォルダーをつながない | 受け渡しのフォルダーだけをつなぐ |
| 資格を入れない | 鍵と会話はコアだけが持つ |
| 出口を絞る | 許した送り先だけを通す。私的なアドレスとリンクローカルのアドレス(クラウドの資格を返す 169.254.169.254 など)へは出さない。名前を引くのは、コンテナーの中の決まった仕組みだけ |
| 口を開けない | 中の部品とコアは、TCP の口を開けずに標準入出力でやり取りする |
外のサイトを開く時は、公式の Playwright の Docker のイメージを、別の利用者・seccomp・Chromium のサンドボックスで固めて使います(ブラウザーと画面の操作)。
クラウドの蜂は、Anthropic のクラウドの Linux の箱で動きます。通信は許した送り先だけ(limited)にし、鍵は金庫にだけ置き、bash と push は毎回聞きます(クラウドの蜂)。
部品の守り
| 見る物 | 道具 | いつ |
|---|---|---|
| 部品表(SBOM) | Syft・npm sbom | 書き出す時 |
| 弱点 | osv-scanner。Rust は cargo-deny、PHP は composer audit | PR ごと・毎晩 |
| 秘密の漏れ | gitleaks | PR ごと |
| 偽物と悪い部品 | OSV の MAL- の記録 | 部品を足す時 |
| ライセンス | cargo-deny・cargo-about・generate-license-file | 部品を足す時 |
| 専用の環境のイメージ | 新しい版と弱点の知らせを見張る | 毎週 |
弱点の知らせは、使っている部品と突き合わせ、当たった物を人の番へ回します(監視と監査)。ライセンスの台帳は規約の線とライセンスにあります。
遠隔で止める
悪いと分かったスキル・プラグイン・テーマは、全部のプロジェクト・全部のハーネス・全部の PC で、まとめて止めます。止める決まりを足す時は、確認のカードを通します(確認のカードと止める 3 段)。
データの型
| 型 | 中身 |
|---|---|
HbSkillCheck | 入れる前の確認の結果(5 段・札・使った道具の版) |
HbStopRule | 止める決まり(NG のコマンド・触らない物・全部で止める) |