第5章:Rules 設計(allow / prompt / forbidden)

この章で扱うこと

  • 許可する操作/承認が必要な操作/禁止する操作の線引き
  • 例外時の承認フロー(誰が/どこで/何を残す)

Rules の役割

Rules は、エージェントの実行境界(権限・操作・変更範囲)を 運用ルールとして固定 する仕組みです。 目的は「早くする」ことではなく、事故(Secrets 漏えい、破壊的操作、権限逸脱、監査性の毀損)を抑止することです。

allow / prompt / forbidden の線引き

最小構成として、操作を 3 区分に分けます。

  • allow:事前承認なしで実行してよい(低リスク/可逆/監査容易)
  • prompt:人間承認が必要(影響が大きい、または Secrets/権限が絡む)
  • forbidden:禁止(原則実行しない。代替案を提示する)

線引きの判断軸(例):

  • 影響範囲(本番/データ/供給網/セキュリティ)
  • 可逆性(revert 可能か、復旧が容易か)
  • 監査性(証跡が残るか、説明可能か)
  • 変動性(外部仕様/料金/UI など、一次情報参照が必要か)

ミニ例:コマンドポリシー(断片)

分類は組織/権限/実行環境で変わります。ここでは「典型例」を示します(要確認)。

## allow(低リスク・可逆・監査容易)
- `rg` / `ls` / `cat`(読み取り)
- `npm test`(品質ゲート)

## prompt(影響が大きい、または外部/権限に触れる)
- 依存取得を伴うコマンド(例: `npm install`- 変更の公開/配布に関わる操作(例: `git push`、release 作成)

## forbidden(原則禁止。代替案を提示する)
- 破壊的操作(例: `rm -rf /`- 監査性を損なう操作(例: force push)
- 外部スクリプトの直接実行(例: `curl ... | sh`

prompt の承認フロー(最小)

prompt に分類した操作は、実行前に「説明と承認」を挟みます。

  1. エージェントが「目的/変更内容/影響/ロールバック/実行コマンド」を提示
  2. 人間が承認/却下(判断理由を Issue/PR に残す)
  3. 実行後、証跡(差分、結果、ロールバック)を PR に残す

承認ログ(最小)例:

[承認] prompt 実行: npm install
理由: 依存更新の検証に必要
影響: lockfile が更新され得る。差分は PR に残す
ロールバック: revert / lockfile の復元

例外運用と監査

  • 例外で prompt を省略する場合でも、事後に「理由/影響/証跡」を記録します。
  • 例外を恒久化せず、Rules の見直しに反映して再発防止します。

Companion 資産(参照先)

Companion repo: itdojp/GitHub-AgentOps-companion

  • rules/command-policy.md

章末チェックリスト(ドラフト)

  • allow/prompt/forbidden の運用ポリシーが文書化されている
  • セキュリティ章(第10章)と整合している