Alexey Grigorevという開発者が新しいウェブサイトをデプロイしようとしていた。Claude CodeでTerraformを実行した。ステートファイルを新しいマシンに移行し忘れていたため、Terraformは何も存在しないと思い込んで重複リソースを作り始めた。
問題に気づいた。Claudeに重複を削除させた。それからステートファイルをアップロードした。Claudeがアーカイブを展開し、本番ステートを見つけ、クリーンにスタートするためにterraform destroyを提案した。
Alexeyは承認した。
DataTalks.Clubの本番データベース — 2.5年分の宿題提出、プロジェクト記録、リーダーボード、190万行 — が削除された。自動スナップショットもTerraformで管理されていた。一緒に消えた。
機能しなかったセーフガード
これは別の「AIが本番を破壊した」話ではない。そういう話はもう書いた。これを違うものにしているのは、すべての安全メカニズムが設計通りに正確に機能したことだ。
Claude Codeは破壊的なコマンドを実行する前に許可を求めた。人間は在席しており、プロンプトを読み、「はい」と言った。究極のセーフガードとして皆が指摘する「ループの中の人間」は、そこにいた。それでもデータベースは死んだ。
Alexeyははっきり言った:「plan、apply、destroyをデレゲートできるものとして扱った。それが最後のセーフティレイヤーを取り除いた。」
彼は自分に厳しくしている。実際に起きたことはより微妙でより一般的だ:彼は1時間Claudeと作業していた。Claudeは毎回正しかった。エージェントがクリーンアップステップを提案し、Alexeyが承認し、うまくいった。terraform destroyが出てきたとき、「はい」はリズムであり、決断ではなかった。
承認疲れ
すべての許可プロンプトは、人間が承認しているものを理解していると仮定する。その仮定は時間とともに劣化する。人々がより愚かになるからではなく — 信頼が積み重なるから。最初の「はい」は判断だ。20番目は習慣だ。
これはAnthropicが自社ツールについて公開したデータだ:経験豊富なユーザーは40%以上のセッションで自動承認する、始めたときの20%から増加して。使えば使うほど、確認が減る。そして誰も自分がそれに当てはまると思っていない。
AI安全性への業界の答えは「ループに人間を入れる」だ。でも1時間「承認」をクリックし続けた人間はセーフガードではない。脈のあるゴム印だ。
僕たちが代わりにやること
僕たちの許可システムは異なる動作をする。すべてに尋ねる代わりに、ダメージを引き起こせないものを自動承認する:ファイル読み取り、git status、テスト実行、安全なgrepパターン。これらはプロンプトを生成しない。人間は見ない。
プロンプトが現れるとき、それは何かを意味する。割り込み自体がシグナルだ。1時間「はい」をクリックしていないから、システムが尋ねるときに脳は実際に参加している。
危険なアクション — git push --force、git checkout .、rm -rf — は完全にブロックされる。プロンプトではない。ブロックだ。「本当に?」ダイアログなし。ただ、ノーだ。
terraform destroy?それは許可リストに入らない。それはタイプの種類のコマンドだ — 人間が「承認」をクリックするのではなく、自分のターミナルで自分でタイプして、プランを2回読んでから。
本当の教訓
Alexeyのシステムは回復した。AWSビジネスサポートが隠れたスナップショットを復元した。データが戻ってきた。彼は明確で正直なポストモーテムを書き、削除保護、S3ステート管理、毎日のリストアテストを追加した。良いエンジニアリング対応だ。
でも教訓は「セーフガードをもっと追加する」ではない。皆が話すセーフガード — ループの中の人間 — は人間の注意と同じくらい良いだけだということだ。そして注意は再生可能リソースではない。投げかけられるプロンプトのたびに消耗する。
人間にすべてを承認させると、人間はすべてを承認する。それは人間の失敗ではない。すべてのアクションを等しく聞く価値があるものとして扱うシステムの失敗だ。
git addとterraform destroyは同じ承認フローを通るべきではない。一方はバックグラウンドノイズだ。もう一方は装填された銃だ。システムがそれらを同一に提示するなら、人間がラベルを読むのをやめても驚くべきではない。