1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

AIエージェントの承認はどこに置くべきか。取り消せない操作だけを人が止める

1
Posted at

※この記事は Zennの記事 からの転載です。


AI エージェントに作業を任せていると、必ずぶつかる問いがあります。どこまで自動で進めさせて、どこで人が確認するかです。

確認を増やすと、承認の画面が多すぎて、人は中身を読まずに「はい」を押すようになります。確認を減らすと、ある日 AI が本番のデータを消したり、間違ったメールを送ったりします。

この記事では、承認の置き場所を決めるための考え方を整理します。軸は1つ、その操作は取り消せるかです。

操作を3つに分ける

AI がやる操作を、取り消せるかどうかで分けます。

種類 例 間違えたとき
読むだけ ファイルを読む、ログを見る、検索する 何も起きない
取り消せる書き込み 手元のファイルの編集、下書きの保存、テスト環境への反映 戻せば済む
取り消せない・外に出る操作 本番への公開、メール・チャットの送信、データの削除、支払い、権限の変更 戻せない。他人に届く

人が止めるべきなのは、3つ目だけです。1つ目と2つ目まで毎回確認していると、承認の数が増えて、3つ目の確認まで流し読みになります。

逆に言えば、2つ目を増やす工夫(下書きを経由する、テスト環境を挟む、バックアップを取ってから書く)をすると、3つ目に当たる操作そのものが減ります。

原則1:承認は「作業ごと」に、記録に残る形で

「公開していい?」「いいよ」という会話の中の承認は、あとから何を承認したのかが分からなくなります。AI のほうも、会話の流れから承認の範囲を広く取り違えることがあります。

承認は、作業ごとに、対象を特定して残します。

- 2026-10-28 人:承認(対象:下書き 7281〜7299 の19件を公開)
- 2026-10-28 AI:公開を実行。19件とも外から表示を確認

こうしておけば、AI が実行したコマンドが承認の範囲に収まっているかを、あとで照合できます。

原則2:道具の既定を「何もしない」にする

AI に渡すスクリプトやコマンドは、何も付けずに動かしたら、何も書き込まない作りにします。

deploy --dry-run                         # 何をするか出すだけ(既定)
deploy --apply --only item-01            # 1件だけ、下書きとして書く
deploy --apply --publish --only item-01  # 1件だけ公開する
  • 書き込みは --apply を明示したときだけ
  • 取り消せない操作(公開)は、さらに別の引数を明示したときだけ
  • 対象を1件ずつ絞れる

こうしておくと、AI が引数を間違えても、被害は「何も起きない」か「下書きが1件増える」で止まります。逆に、引数なしで本番に書き込む道具は、どんなに便利でも AI に渡しません。

原則3:AI は自分の権限を広げられない

AI エージェントには、「許可リスト」(確認なしで実行してよいコマンドの一覧)を持たせることが多いです。このリストを AI 自身が書き換えられると、確認の仕組みは意味を失います。

権限を広げるのは、必ず人です。広げ方も段階を踏みます。

段階 許可の範囲 向いている場面
1 承認した作業のコマンドそのもの(1行) 初めての操作、まだ道具を信用しきれないとき
2 そのスクリプト全体(どの引数でも) 道具が原則2の作りになっていて、承認の記録も残る運用が回っているとき
3 操作の種類ごと自動 取り消せる操作だけ

取り消せない操作を、3まで広げることはしません。

原則4:終わったかどうかは、結果の側で数える

コマンドが成功(終了コード 0)で終わっても、本当に終わったとは限りません。公開したつもりのページが下書きのまま、送ったつもりのメールが下書き箱のまま、ということは起きます。

取り消せない操作のあとは、外から結果を数えます。

for path in $(cat targets.txt); do
  code=$(curl -s -o page.html -w '%{http_code}' "https://example.com/$path/")
  echo "$code $(grep -c undefined page.html) $path"
done
  • 全件が見えているか(下書きのままなら 404)
  • 表示が崩れていないか(テンプレートの埋め忘れは undefined として出やすい)

これを AI に必ずやらせると、「やりました」の報告を人が信じる必要がなくなります。

例:AI 側の安全装置に止められたとき

私は AI(Claude Code)に、Web サイトのページの公開まで任せています。人が承認した19件のページを公開させたところ、AI 側の自動チェックで「本番への配備」として止められました。AI が許可リストにスクリプトを足そうとすると、それも「自分の権限の変更」として止められました。

これは、原則3がそのまま実装されている状態です。私は、承認した作業のコマンドそのものだけを許可して公開させ、外から19件の表示を確かめさせました(原則1・4)。スクリプトが原則2の作りになっていることを確かめたうえで、許可を広げるかを決めることにしています。

まとめ

人が止める場所 取り消せない・外に出る操作だけ。読む・取り消せる書き込みは止めない
承認の残し方 作業ごとに、対象を特定して記録に残す
道具の作り 既定は何もしない。書き込み・公開は引数で明示。対象は1件ずつ絞れる
権限 広げるのは人だけ。コマンド1行 → スクリプト全体 と段階を踏む
終わったか 結果の側で数える。終了コードを信じない

確認の数を減らしたいときは、確認を外す前に「その操作を取り消せる形に変えられないか」を考えてみてください。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?