Claude Codeが破壊的なGitコマンドをブロックするようになりました
Claude Codeは最近、新しい安全機能を追加しました。これにより、オートモードでの破壊的なgitコマンドがブロックされるようになります。
数ヶ月前、AIエージェントが私の作業を消去しかけたことがありました。古いコードを確認するように頼んだところ、git reset --hardを実行してしまったのです。このコマンドによって、コミットしていなかった変更がすべて消えてしまいました。丸一日分の作業が水の泡となりました。
それ以来、私は設定に拒否ルール(deny rules)を手動で追加してきました。git resetやgit cleanのようなコマンドが、自分の直接的な許可なしに実行されるのを防ぎたかったからです。
現在、Claude Codeはこれを自動的に行います。セーフティ・クラシファイア(safety classifier)を使用してユーザーの意図を推測し、もし作業を破棄しようとしているのではないと判断した場合、コマンドの実行を停止します。
最初は、手動のルールを削除しようかと考えました。ツールがやってくれるなら、なぜわざわざ手間をかける必要があるのでしょうか?しかし、その後、なぜルールを残しておくべきなのかに気づきました。
新しい安全機能は「推論」に基づいています。それはユーザーが何を望んでいるかを推測しようとするモデルです。モデルは間違いを犯すことがあります。モデルが利用できない場合、システムが失敗したり、誤った判断を下したりする可能性があります。
私の手動ルールは異なります。それらは決定論的(deterministic)です。ルールは推測しません。コマンドに一致するか、しないかのどちらかです。意図に基づいて変化することのない、明確な境界線なのです。
私は現在、3層の防御策を使用しています:
• 意図を判別するクラシファイア。ユーザーの目的を理解します。 • 確実性を担保する手動の拒否ルール。特定のコマンドに対して強力な防波堤となります。 • 封じ込めのためのサンドボックス。エージェントをプロジェクトフォルダ内に留めます。
新しいデフォルト設定は素晴らしいものですが、すべてをカバーしているわけではありません。rm -rfを止めることはできませんし、データベースの消去や、メインブランチへの強制プッシュ(force-push)も防げません。
ツールに新しいデフォルト機能が追加されたからといって、カスタムの安全ルールを削除しないでください。新しいデフォルト機能を、自分の設定を監査するきっかけとして利用しましょう。ルールはバックアップとして保持し、ツールがカバーできていない隙間を埋めるために時間を使ってください。
多層防御(Defense in depth)とは、層を重ねることです。最も安全なシステムとは、一つのチェックではなく、3つの異なるチェックがミスを拒絶するシステムなのです。
Source: https://code.claude.com/docs/en/changelog
Optional learning community: https://t.me/GyaanSetuAi
