Muse Code には、エージェントが触れる範囲を制御するオプションがいくつかあります。安全に使ううえで押さえておきたい部分です。
--workspace で起点を決める
--workspace <PATH>
Register policy-gated workspace tools rooted at PATH
「PATH を起点として、ポリシーで制御されたワークスペースツールを登録する」という説明です。「policy-gated(方針で門を設ける)」という言葉が使われている点が重要で、単にカレントディレクトリを変えるのとは違います。
実行時には起点が表示されます。
muse: workspace root: /path/to/work (cwd default)
(cwd default) とあるとおり、指定しなければカレントディレクトリが起点になります。
ワークスペースを信頼するかどうか
--trust-workspace
Trust this workspace for this run (load its skills and rules);
does not save trust
ここに重要な情報が2つ入っています。
- 信頼して初めて、そのワークスペースのスキルとルールが読み込まれる
- この信頼は保存されない(その実行限り)
つまり、クローンしてきただけのリポジトリに置かれたスキルやルールは、自動では有効になりません。他人のリポジトリを開いただけでエージェントへの指示が仕込まれる、という事態を防ぐ設計です。
スキル関連のサブコマンドにも同じ --trust-workspace が付いています(記事)。
書き込みと実行を止める
| オプション | 効果 |
|---|---|
| --disable-write | シェル以外からのワークスペース書き込みを禁止 |
| --disable-shell | ワークスペースでのシェル実行を禁止 |
| --enable-shell-tool | 管理されたbashではなく旧来のshellツールを使う |
--disable-write の説明が「non-shell workspace filesystem writes」となっている点に注意が要ります。シェル経由の書き込みは別枠ということです。読み取り専用にしたいなら --disable-shell と併用する必要があります。
「管理されたbash」という言い方
--enable-shell-tool の説明に「managed bash」ではなく「legacy shell tool」を使う、とあります。裏を返せば既定は「管理されたbash」だということです。素のシェルをそのまま渡しているのではなく、間に管理層が入っている構造が読み取れます。
組み合わせの例
# 読ませるだけ。書き込みもシェル実行もさせない muse --workspace ./src --disable-write --disable-shell
コードレビューや調査だけを頼みたい場合の構成です。ネットワークは既定で proxy-only なので、これに加えて外部通信も絞られた状態になります。