【AIの暴走を防げ】Claude Codeが「git reset --hard」を仕掛けてきた。しかし、私はすでに禁止していた

AIエージェントに、リポジトリを破壊されかけたことはあるだろうか。

先日、Claude Codeを使って開発していたところ、Claudeが突然こんなコマンドを実行しようとした。

git reset --hard

おい、待て。

ただし今回は、実行されなかった。

Claude Codeのローカル設定で、すでに禁止していたからだ。

以前から私は、Claude Codeに危険な操作を自由にやらせないよう、Permissionsのdenyに禁止事項を山盛り入れている。

正直、設定した当初は「ちょっと神経質かな」とも思っていた。

しかし今回、その設定が本当に仕事をした。

Claudeはなぜgit reset --hardしようとしたのか

理由はおそらく単純だ。

コードを修正する。

うまくいかない。

テストが落ちる。

現在の変更を捨てて、きれいな状態からやり直したほうが早い。

たぶんClaudeは、その程度の判断をしたのだと思う。

AIから見れば合理的なのだろう。

しかし、人間からすると話は違う。

git reset --hardは、未コミットの変更を吹き飛ばす可能性がある。

そのコードが5分前に書いたものなのか、数時間悩んでようやく動いたものなのか、Claudeには関係ない。

目的は「タスクを完了すること」。

邪魔な変更がある。

消せばいい。

非常に論理的で、非常に怖い。

私は以前からClaude Codeの危険操作を禁止している

今回の事故未遂を受けて、新しく安全対策を始めたわけではない。

すでにやっていた。

Claude CodeにはPermissionsの設定があり、ローカルの設定ファイルで特定の操作をdenyにできる。

私は以前から、危険だと思う操作をかなり多めに禁止している。

git reset --hard

git push --force

git push -f

git branch -D

その他、ファイルや環境を壊す可能性がある操作も対象にしている。

プロンプトに「危険なコマンドは禁止」と書いているだけではない。

Claude Codeそのものに、実行させないよう設定している。

今回、Claudeがgit reset --hardを実行しようとして、それが止められた。

つまり、昔の自分が仕掛けた地雷除去装置に、今のClaudeが本当に引っかかったわけだ。

設定しておいてよかった。

AIへの「お願い」は安全対策ではない

AIを使っていると、ついCLAUDE.mdに禁止事項を書きたくなる。

「勝手にGitを操作しないこと」

「破壊的なコマンドは禁止」

「データベースを削除する前に確認すること」

私もこうした指示は使う。

しかし、これは結局AIへのお願いである。

Claudeはかなり賢い。

だが、長時間作業していると時々おかしな判断をする。

コンテキストが長くなったときや、修正が泥沼化したときは特に怖い。

最初は慎重に作業していたのに、突然、

「一度クリーンな状態に戻します」

などと言い始める。

戻すな。

だから、本当にやってほしくない操作はプロンプトではなくPermissionsで止める。

AIの判断力を信用するかどうかという話ではない。

実行できないようにしておけばいい。

禁止事項はかなり多めにしている

私の方針は、安全第一である。

AIの利便性を最大化することには、それほど興味がない。

危険なGit操作、強制削除、データベースを破壊する可能性がある処理。

少しでも「これ、AIが勝手にやったら嫌だな」と思うものは、かなり厳しめに止めている。

当然、不便なこともある。

本当にGitを戻したいときでもClaudeは実行できない。

環境を初期化したいときも拒否される。

その場合は、自分でターミナルを開いてコマンドを打つ。

それだけだ。

人間が数秒で実行できる破壊的操作を、わざわざAIに許可する必要はない。

便利さが少し落ちるだけ。

一方、AIが暴走した場合は、復旧に数時間かかる可能性がある。

比較するまでもない。

AIは反省文を書くのが非常に上手い

以前にも書いたが、AIは失敗した後の反省が非常に上手い。

「申し訳ありません。私の判断が不適切でした」

原因を分析する。

問題点を整理する。

再発防止策まで提案する。

完璧である。

しかし、消えたコードは戻らない。

壊れたデータベースも戻らない。

Gitの履歴がグチャグチャになれば、直すのは人間だ。

だから私は、AIの反省能力にはあまり期待していない。

反省させるより、最初から実行できなくしたほうが早い。

禁止しておいて、本当によかった

今回のgit reset --hardは未遂に終わった。

Claude CodeのPermissionsが止めたからだ。

もし禁止していなかったら、本当に実行されていたのか。

未コミットのコードが消えていたのか。

実際のところは分からない。

ただ、AIがそのコマンドを選択肢として出してきたことは事実だ。

毎日Claude Codeを使っているが、性能についてはかなり信用している。

しかし、行動については別だ。

ものすごく優秀だが、時々突然git reset --hardを打とうとする奴。

私はそのくらいの距離感でAIを見ている。

AIエージェントの自律性はこれからさらに上がるだろう。

だからこそ、何でも自由にさせるのではなく、「絶対にやらせないこと」をシステム側で決める必要がある。

今回、昔の自分が設定した禁止事項にClaudeが引っかかった。

設定したときは少し過剰かと思った。

今は一つだけ言える。

禁止事項は、山盛りで正解だった。