安全設計

方針の機械可読版は policies/safety.yml。本書はその背景と運用を説明する。

大原則

  1. 通常の実行はテキスト成果物のみを生成する。write mode を明示したタスクでは、 人間の承認後に AI が working tree を直接変更できる。
  2. Git のチェックポイント、変更一覧、diff stat、巻き戻し方法を自動記録する。
  3. コミット、push、送信、公開、決済、本番反映など、変更の確定は人間が行う。
  4. .env・鍵・認証情報は読ませず、保存する出力のシークレットをマスクする。

write mode の発火条件

次の全条件が揃った workflow step だけが書き込み可能になる。

  1. frontmatter の write: true、CLI の --write、または Concierge の task_draft.write: true
  2. workflow step の writes: true (make workflow の make step)
  3. 実行前の y/n 承認。--auto または project.write_confirm: false で省略可能
  4. scope=public

scope が public でなければ確認画面で昇格を提案する。拒否された場合は write を無効化し、
従来のテキスト成果物モードで実行する。private / local-only では write より先に
外部 AI の利用を禁止する。

実装上のガード

ガード実装
明示的な opt-inタスク × step × 承認 × scope を純関数で合成
Git 証跡開始時の HEAD/status と終了時 status の差分を run-summary と decision-log に記録
巻き戻しtracked file は git checkout -- <path>、untracked file は確認後に git clean
読み込み拒否.env、鍵、credentials 等を forbidden_read で拒否
禁止対象の変更検知forbidden_write に一致した変更を事後検知し needs_human_review にする
シークレットマスクredaction_patterns を保存前に適用
外部作用の禁止commit / push / publish / 送信 / 決済 / 本番反映は AI に行わせない

runner ごとの信頼境界

Git 管理外でも警告して実行を続けるが、チェックポイントと Git による巻き戻しは使えない。
また forbidden_write は実行後の Git status に基づく事後検知であり、Claude を事前に
封じ込める仕組みではない。

人間が確定する操作

write mode の approval-required.md には、git diff を確認し、問題なければ人間が
コミットする項目が必ず入る。

リスクとインシデント対応

write mode の risk は最低 medium に補正する。high、レビュー重大指摘、
forbidden_write 検知時は needs_human_review にする。

問題が起きた場合は実行を中断し、decision-log.md のチェックポイントと変更一覧を確認する。
tracked file は git checkout -- <path> で戻す。untracked file は git clean -n
対象を確認してから git clean -f を使う。原因が policy の穴なら safety.yml を更新する。