昇格モード
エージェントがサンドボックス内で実行されている場合、その exec コマンドはサンドボックス環境内に制限されます。昇格モードを使うと、エージェントはそこから抜け出し、代わりにサンドボックス外でコマンドを実行できます。承認ゲートは設定可能です。
昇格モードが挙動を変えるのは、エージェントがサンドボックス化されている場合だけです。サンドボックス化されていないエージェントでは、exec はすでにホスト上で実行されます。
ディレクティブ
セッション単位でスラッシュコマンドを使って昇格モードを制御します。
| Directive | What it does |
|---|
/elevated on | 設定されたホストパスでサンドボックス外実行に切り替え、承認は維持する |
/elevated ask | on と同じ(エイリアス) |
/elevated full | 設定されたホストパスでサンドボックス外実行に切り替え、承認をスキップする |
/elevated off | サンドボックス内に制限された実行へ戻す |
/elev on|off|ask|full でも利用できます。
引数なしで /elevated を送ると、現在のレベルを確認できます。
仕組み
利用可能か確認する
昇格は config で有効になっている必要があり、送信者が許可リストに入っていなければなりません。{
tools: {
elevated: {
enabled: true,
allowFrom: {
discord: ["user-id-123"],
whatsapp: ["+15555550123"],
},
},
},
}
レベルを設定する
ディレクティブだけのメッセージを送ると、そのセッションのデフォルトを設定できます。またはインラインでも使えます(そのメッセージにのみ適用されます)。/elevated on run the deployment script
コマンドはサンドボックス外で実行される
昇格が有効な間、exec 呼び出しはサンドボックスを出て実行されます。実際のホストはデフォルトで
gateway、設定済みまたはセッションの exec target が node の場合は node です。full モードでは、
exec の承認はスキップされます。on/ask モードでは、設定された承認ルールが引き続き適用されます。
解決順序
- メッセージ上のインラインディレクティブ(そのメッセージのみに適用)
- セッション上書き(ディレクティブだけのメッセージ送信で設定)
- グローバルデフォルト(config の
agents.defaults.elevatedDefault)
利用可否と許可リスト
- グローバルゲート:
tools.elevated.enabled(true である必要があります)
- 送信者許可リスト: チャンネルごとの一覧を持つ
tools.elevated.allowFrom
- エージェント単位のゲート:
agents.list[].tools.elevated.enabled(さらに制限することしかできません)
- エージェント単位の許可リスト:
agents.list[].tools.elevated.allowFrom(送信者はグローバル + エージェント単位の両方に一致する必要があります)
- Discord のフォールバック:
tools.elevated.allowFrom.discord が省略されている場合、channels.discord.allowFrom がフォールバックとして使われます
- すべてのゲートを通過する必要があります。そうでない場合、昇格は利用不可として扱われます
許可リスト項目の形式:
| Prefix | Matches |
|---|
| (なし) | 送信者 ID、E.164、または From フィールド |
name: | 送信者の表示名 |
username: | 送信者のユーザー名 |
tag: | 送信者タグ |
id:, from:, e164: | 明示的な識別情報指定 |
昇格で制御しないもの
- tool policy:
exec が tool policy によって拒否されている場合、昇格でもそれを上書きできません
- ホスト選択ポリシー: 昇格は
auto を自由なクロスホスト上書きにはしません。設定済みまたはセッションの exec target ルールを使い、target がすでに node の場合にのみ node を選びます
/exec とは別物: /exec ディレクティブは、認可された送信者向けにセッションごとの exec デフォルトを調整するもので、昇格モードは必要ありません