Shell Gate とは?

Shell Gate は Alius のヒューマンインザループセキュリティ層です。Agent が要求するすべてのシェル・ファイル操作に対してリスク分析とスコープチェックを行い、機密操作中もあなたがコントロールを維持できるようにします。

Shell Gate は単純な「許可/拒否」スイッチではありません。コマンド文字列、引数、パス、リダイレクト先、現在の作業ディレクトリ、送信元、ワークスペースルート、認可ポリシーを分析して、きめ細かい決定を行います。

仕組み

Agent が操作(シェルコマンド、ファイル書き込みなど)を実行しようとすると、Shell Gate は:

  1. 操作を傍受する
  2. コマンドのリスクとスコープを分析する
  3. 決定:Allow / Deny / ApprovalRequired
  4. 監査のために決定を記録する

Shell Gate の決定

決定プランモードの動作バイパスモードの動作
Allow直接実行直接実行
Deny実行を拒否実行を拒否
ApprovalRequired一時停止してユーザーの確認を待つ直接実行して結果を返す

バイパスモードでは、Shell Gate の ApprovalRequired 決定は確認プロンプトを表示せずに直接実行されます。Deny された操作は実行されません。

Git コマンドのリスク分類

Shell Gate は Git サブコマンドを分類します:

リスクレベルコマンド説明
低リスクgit status, git log, git diff, git show, git branch読み取り専用操作
中リスクgit clone, git fetch, git pull, git submoduleワークスペースへの書き込みやネットワーク使用
中リスクgit push, git checkout, git switch, git merge, git rebase, git restore, git add, git commit変更操作
高リスクgit clean, git reset --hardデータ損失の可能性

ワークスペース境界チェック

すべてのファイル操作は resolve_within_workspace(path, workspace, must_exist) で境界チェックを受けます:

  • 絶対パスアクセスをブロック(例:/etc/passwd
  • 親ディレクトリトラバーサルをブロック(例:../secret
  • シンボリックリンクエスケープをブロック
  • オプション値内のパスをチェック(例:--output=/tmp/file
  • リダイレクト先をチェック(例:> /tmp/file2>/tmp/error
  • URL 的な値は無視(パスとして扱わない)

内蔵ツール権限

ツール権限レベル説明
shellExecuteシェルコマンドを実行、120秒タイムアウト、出力20,000文字で切り捨て
read_fileReadファイルを読み取り、ワークスペース境界チェック
write_fileWriteファイルに書き込み、プランモードでは確認が必要
list_dirReadディレクトリの内容を一覧表示
edit_fileWriteファイルの内容を置換、プランモードでは確認が必要

シェルツール

シェルツールの完全な実行フロー:

  1. 引数を解析
  2. cwd をワークスペーススコープ内に解決
  3. shell_gate::authorize を呼び出してリスク分析
  4. Deny → 実行を拒否
  5. Allow → コマンドを実行
  6. ApprovalRequired → プランモードは確認待ちで一時停止、バイパスモードは直接実行
  7. 出力形式:[exit:N]\n<stdout>\n<stderr>、20,000文字で切り捨て

権限の設定

.alius/config/permissions.toml で設定:

[shell]
default = "ask"
auto_approve = ["ls", "cat", "git status", "git log", "git diff"]
deny = ["rm -rf /", "format", "mkfs"]

[file_write]
default = "ask"
deny_patterns = [".env", "credentials", "*.key"]

[network]
default = "ask"

ベストプラクティス

  1. 厳格に始める — すべての操作タイプに ask をデフォルトとして使用
  2. 段階的に自動承認を追加 — 頻繁に実行し信頼するコマンドのみ
  3. トレースをレビュー — 定期的に監査ログを確認
  4. 書き込みを自動承認しない — ファイル変更には承認を必要とする
  5. バイパスモードに注意 — バイパスモードでは ApprovalRequired が直接実行されるため、現在のタスクを信頼していることを確認

監査

すべてのツール呼び出しは ToolCallStartedToolCallCompleted イベントを生成し、セッションのトレースに記録されます。シェル呼び出しはセッションエリアに shell: <command> 形式で表示され、完了ブロックには簡潔な出力サマリーが含まれます。