サンドボックスと承認
二つの設定は、別々の仕事をしています。 サンドボックスはエージェントに何ができるかを、 承認は何を先に訊かねばならないかを決めます。
サンドボックス
sandbox_mode = "workspace-write"
| エージェントができること | |
|---|---|
read-only | ファイルを見る。変更はしない |
workspace-write | 作業ディレクトリの中に書く |
danger-full-access | あなたのアカウントにできること全部 |
読み取りは決して制限されません。 制限されるのは書き込みとネットワークだけなので、
read-only は「ディスク全体が見えて、一つも変えられない」という意味です。
書き込める根は作業ディレクトリです
workspace-write のもとでの「ワークスペース」とは、
その対話または実行が開いているディレクトリのことです。
プロジェクトでも、リポジトリでもなく、そのディレクトリです。
このページで最も重要な一文がこれです。 ホームディレクトリで開いた実行は、
.ssh、Documents、Library に書けます。
これは仮定の話ではありません。 部門が存在する前に作られた定時タスクが ホームディレクトリを抱えたまま、そのやり方で四十二回走っていました。 毎回そのすべてに手が届く状態で、誰も訊かれず、何も言われませんでした。 新しい対話の既定を変えても、それには触れませんでした —— 既定は遡らないからです。
だから、実行が始まる瞬間に二つ目の検査があります。
バックグラウンド実行がどこで始められるか
実行が始められるのは、そのディレクトリがこの製品がすでに知っている場所のときです:
- ワークスペースの中
- ある部門のディレクトリの中
- あなたが名指しで許可した場所
それ以外は保留され、Dispatch パネルのあなた待ちの下に このディレクトリを許可 ボタンつきで現れます。 ある場所を許可すると、それを待っていた実行がすべて解放されます。
訊くことが要点です:普段と違う場所で走らせるのは、たいていまさに望まれたことであり、 答えは拒否ではなく一つの問いです。
承認
approval_policy = "on-failure"
untrusted | 安全と分かっていないコマンドは毎回先に見せる |
on-failure | コマンドは無人で走り、もっと権限が要るときだけ訊かれる |
never | 実行前に何も見せない |
never は何も保留されないことも意味します。承認を切った人は、言葉どおり
「止められたくない」と言ったのであり、それをもっと狭い意味だと決めつけるのは、
製品が自分の設定を上書きすることになります。
スクリプトを放しても構わないディレクトリに使ってください。
人がはまる組み合わせ
sandbox_mode = "danger-full-access" と approval_policy = "never" の組み合わせは、
何も見せず何も訊かずに、あなたのマシンで任意のコマンドを走らせるエージェントです。
それが正解のディレクトリはあります。あなたのホームディレクトリはその一つではありません。
サンドボックスがしない二つのこと
- モデルがあなたのファイルを読むのを止めません。 読み取りはどのモードでも制限されません。
- 走らせたコマンドがそのあと何をするかは覆いません。 エージェントが起動したスクリプトは サンドボックスを継ぎますが、実行より長生きするサービスを起動した場合、それは継ぎません。