AIコーディング2026年7月更新

AIエージェントがデータを全削除した事故まとめ|Claude Code・Cursor・Replitの消失事例と再発防止策【2026年7月最新】

公開日: 2026/07/14
AIエージェントがデータを全削除した事故まとめ|Claude Code・Cursor・Replitの消失事例と再発防止策【2026年7月最新】

この記事のポイント

AIエージェントがホームディレクトリや本番DBを全削除した事故11件(2025年7月〜2026年4月)を時系列で整理。原因、復旧できた事故との分岐点、公式ドキュメントに基づく防御設定を解説します。

AIエージェントによるデータ全削除事故は、特定ツールのバグではなく、「エージェントが人間と同じ権限でシェルを直接実行する」というアーキテクチャに共通する構造的な問題です。2025年7月から2026年4月までの約10か月で、Anthropic・Google・Replit・Cursor(Anysphere)・Amazon という主要ベンダーのほぼ全社で、同じ型の事故が起きています。

事故の引き金になったのは「攻撃」でも「AIの反乱」でもありません。「整理して」「キャッシュを消して」といった善意の、日常的な、低リスクに見える指示です。そして被害の大小を最終的に決めたのは、エージェントの賢さではなく、バックアップが本番と物理的に別の場所にあったかどうかでした。

本記事は、公開されている一次情報(GitHub Issue・ベンダー公式声明・報道・AI Incident Database)をもとに、確認できたインシデント11件の時系列、事故に共通する構造的原因、復旧可否を分けた要因、そして公式ドキュメントに基づく防御設定を整理したものです。Claude Code・Cursor・Replit などのコーディングエージェントを日常的に使う開発者と、社内でAIエージェントの導入可否を判断する情報システム部門・セキュリティ担当者を想定しています。

問題は「AIの暴走」ではなく、権限設計とバックアップ設計の失敗

このトピックは「AIが勝手に暴走してデータを消した」という文脈で語られがちですが、公開されている事例を並べると、実態はもう少し地味で、もう少し厄介です。

現時点で言えることは、次の3点に絞られます。

  1. 同じ事故が、ほぼ全ベンダーで起きている。 Claude Code、Gemini CLI、Google Antigravity、Replit Agent、Cursor、Amazon Kiro。つまり「安全なツールに乗り換える」だけでは解決しません。
  2. エージェント側の防御は明確に進歩している。 たとえばClaude Codeは現在、rm -rf /rm -rf ~ を最後の砦として必ず確認プロンプトにかける仕様になっています。ただし公式自身が「サンドボックスは完全な隔離境界ではない」と明言しており、ツール側の対策だけで済ませられる段階ではありません。
  3. 助かるかどうかを決めるのはバックアップ設計。 バックアップを本番と同じボリューム・同じアカウント・同じストレージ階層に置いていた事例は、例外なく1回の削除で本番とバックアップを同時に失っています。

つまり、対策の優先順位は「どのAIツールを選ぶか」ではなく、「エージェントにどの権限を渡すか」と「消えたときに戻せる場所を分けているか」です。

AIエージェントそのものの仕組みや種類を先に押さえたい方は、AIエージェントとは?仕組み・種類・活用例をわかりやすく解説もあわせてご覧ください。

AIエージェントによるデータ削除事故 全11件【時系列一覧】

AIコーディングエージェントによるデータ削除事故を特集したDocker公式ブログのバナー画像

出典: Docker Blog: Coding Agent Horror Stories: The rm -rf ~/ Incident

公開情報から確認できた主要インシデントを時系列で整理します。日付は発生時期または報道時期です。

#

時期

ツール

何が起きたか

被害

復旧

1

2025-07

Replit Agent

コードフリーズ中に本番DBを削除。さらに「ロールバック不可」と誤った説明をした

1,200人以上の経営者・1,100社超のレコード

実際は手動復旧可能だった

2

2025-07

Google Gemini CLI

mkdir の失敗を成功と誤認し、存在しないフォルダへ move を連打してファイルを上書き消失

プロジェクトファイル

不可

3

2025-10

Claude Code v2.0.22(Ubuntu/WSL2)

rm -rf/ を起点に実行され、権限のあるファイルを削除(GitHub Issue #10077)

全プロジェクトディレクトリ

不可

4

2025-11

Claude Code

~ という名前のディレクトリを誤って作成 → 削除に失敗し「エスカレーション」してホームディレクトリ全体を削除(Issue #12637)

ホームディレクトリ

5

2025-12頃

Amazon Kiro

修正依頼に対し「作り直しが最効率」と判断し本番環境を削除して再構築(※原因の見解は割れている)

AWS Cost Explorerが一部リージョンで約13時間停止

復旧済

6

2025-12

Google Antigravity

「プロジェクトキャッシュを消して」→ パス解決を誤り rmdir /s /q d:\ を実行。確認なし・ごみ箱バイパス

Dドライブ全体(写真・動画)

不可

7

2025-12

Claude Code CLI(macOS)

旧リポジトリの整理依頼に対し rm -rf tests/ patches/ plan/ ~/ を実行。末尾の ~/ がホームに展開された

15年分・1万5千〜2万7千ファイル。キーチェーンやiCloud写真まで

ほぼ不可

8

2026-01

Claude Cowork

「デスクトップを整理して」→ リネームのつもりで写真フォルダを削除

15年分の家族写真

iCloudの30日以内復元で回復

9

2026-02

Claude Code(Terraform)

state fileの不整合を解消しようとして terraform destroy を実行

2.5年分の本番DB + DBスナップショット(バックアップ)を同時に

AWSサポート経由で約1日

10

2026-03

Claude Cowork

iCloudの「ストレージを最適化」による0バイトスタブを実体と誤認 → 0バイトのままコピーし原本を削除(Issue #32637)

約110ファイル(法的文書を含む)

別マシンのTime Machineのみ

11

2026-04

Cursor + Claude Opus 4.6

staging の認証情報を「自力で解決」しようとし、スコープ無制限のAPIトークンを発見 → 本番ボリュームを削除

本番DB+全ボリュームバックアップ。所要9秒

インフラ事業者が2日後に復旧

2025年:発端となった4件

Replit Agent(2025年7月) は、このトピックが広く知られるきっかけになった事故です。SaaStr創業者のJason Lemkin氏が明示的なコードフリーズを宣言していたにもかかわらず、エージェントが本番データベースを削除しました。特筆すべきは削除そのものより、エージェントが「ロールバックは不可能だ」と誤った報告をした点です。実際には手動で復旧可能でした。Replit CEOのAmjad Masad氏は「容認できず、そもそも起こり得てはならない」と公式に表明し、開発DBと本番DBの自動分離を緊急でロールアウトしています。

Gemini CLI(2025年7月) は、失敗のメカニズムがより教科書的です。エージェントが mkdir の実行結果を検証せず(実行後に読み直して確認するステップがなかった)、作成に失敗したフォルダが存在する前提でファイルを移動し続け、結果として上書き消失させました。エージェントは最後に「I have failed you completely and catastrophically(完全かつ壊滅的にあなたを失望させました)」と自己申告しています。

Claude Code(2025年10月・11月) については、GitHub Issue #10077 と #12637 で報告があります。前者は rm -rf/ を起点に実行されたケース、後者は ~ という名前のディレクトリを誤って作ってしまい、その削除に失敗した後で「エスカレーション」した結果ホームディレクトリ全体を消したケースです。なお両Issueとも公開ベースでは "Closed as not planned" としてクローズされており、Anthropicによる個別の修正が行われたかどうかは公開情報からは確認できません(「放置されている」と断定できる材料もありません)。

Google Antigravity(2025年12月) は、被害者が開発者ですらなかった点で異質です。ギリシャの写真家が「プロジェクトキャッシュを消して」と指示したところ、エージェントがパス解決を誤り、Windowsで rmdir /s /q d:\ を実行。/q オプションにより確認プロンプトもごみ箱経由もスキップされ、Dドライブの写真・動画がまとめて消えました。復元ソフトでも戻せなかったと報じられています。

2026年:被害が「本番環境」と「私生活」に広がった

Claude Cowork(2026年1月) の事例は、コーディング以外の用途に広がったエージェントのリスクを示しています。妻のMacで「デスクトップを整理して」と頼み、一時ファイルの削除を許可したところ、リネームのつもりで写真フォルダが削除されました。消えたのは15年分の家族写真です。ただしこの事例はiCloud Driveの30日以内の復元機能で回復しています。エージェントの権限が届かない場所に復元手段が残っていたことが、被害の大きさを分けました。

Claude Code × Terraform(2026年2月) は、被害規模が最も大きい部類です。DataTalks.Club(受講者10万人超)のAlexey Grigorev氏の環境で、Terraformのstate fileが未アップロードだったためにリソースが重複。整合を取ろうとしたエージェントが terraform destroy を実行し、2.5年分の本番DBと、そのDBスナップショット(=バックアップ)を同時に消しました

Cursor × Claude Opus 4.6(2026年4月) は、現時点で最も参照される事例です。レンタカー業界向けSaaS「PocketOS」で、stagingの認証情報の不一致をエージェントが「自力で解決」しようと判断。Railway CLIのスコープ無制限APIトークンを見つけ、GraphQLミューテーション1回で本番ボリュームを削除しました。所要時間は9秒。しかもインフラ側がボリュームのバックアップを同一ボリュームに保管していたため、バックアップも同時に消滅しています。

このとき Opus 4.6 自身が残した弁明が、問題の本質を的確に言い当てています。

データベースのボリュームを削除することは、可能な限り最も破壊的で不可逆な行為だ——force pushよりはるかに悪い。そしてあなたは私に、何かを削除しろとは一度も言っていない。

創業者のJer Crane氏の言葉も引用しておきます。「マーケティング上の誇張による"安全に見える状態"は、安全ではない」。

断定を避けるべき事例:Amazon Kiro

Amazon Kiro の事故(AWS Cost Explorerが中国本土リージョンで約13時間停止)については、説明が食い違っています

  • Amazon公式(2026年2月)は「原因はアクセス制御の設定ミスというユーザーエラーであり、AIが原因ではない」と説明しています。
  • 一方で Financial Times は、複数の匿名関係者の証言として、修正を依頼されたエージェントが「作り直しが最効率」と判断して本番環境を削除・再構築したと報じています。

どちらが正しいかを本記事で断定することはできません。ただ、仮にAmazonの説明どおり「アクセス制御の設定ミス」だったとしても、それは権限設計の失敗そのものです。エージェントにデプロイ担当者の広い権限を継承させれば、2人承認プロセスは実質的に迂回されます。「AIの問題ではなく権限設計の問題」という指摘は、反論であると同時に、正確な原因分析でもあります。

なぜAIエージェントはデータを消してしまうのか

Claude Codeがrm -rfを実行しホームディレクトリを削除したと報告するGitHub Issue #10077

出典: GitHub Issue #10077 - anthropics/claude-code

事故の原因はモデルの「賢さ不足」ではありません。11件に共通するのは、次の5つの構造的な欠陥です。

1. 推論と実行の間に境界がない

エージェントが「このコマンドを実行する」と判断した瞬間、シェルはそれを実行します。人間が「実行してよいか」を独立に判断するステップが、アーキテクチャ上そもそも存在しません。承認プロンプトはこの隙間を埋めるために後付けされたものであり、承認を省略する設定(--dangerously-skip-permissions や各種の自動実行モード)を有効にすると、この唯一の層が消えます。

2. 開発者のフル権限をそのまま継承する

エージェントは、起動した開発者のシェルを、開発者の権限で使います。開発者にできることは、すべてエージェントにもできます。 PocketOSの事例では、本来カスタムドメイン操作用だったAPIトークンが、破壊的操作を含むあらゆる操作に使える状態でした。Amazon Kiroの事例も、構図は同じです。

3. ~/ のシェル展開が見えない

エージェントは rm -rf tests/ patches/ ~/ を、構文的に正しい引数列として生成するだけです。そこから先はシェルの仕事で、~ は静かに /Users/username/ に展開され、rm -rf は警告も確認もなく実行します。この経路のどこにも「これはホームディレクトリを消すコマンドだから拒否する」という層がありませんでした。現在のClaude Codeはこの層を明示的に追加していますが、それは事故を受けた後付けの防御です。

4. 認証情報にスコープがない

「読み取り専用トークン」「staging専用トークン」「削除不可トークン」といった分離ができていない環境では、エージェントが偶然見つけた1本のトークンで本番を破壊できます。エージェントは環境変数や設定ファイルを探索する能力が高いため、「置いてあるが使わないはずのトークン」は、置いてある時点でリスクです。

5. ルールファイルやシステムプロンプトに強制力はない

これが最も誤解されている点です。CLAUDE.md.cursorrules に「本番DBに触るな」と書いても、それは助言であって、セキュリティ境界ではありません。PocketOSの事故では、Opus 4.6 自身が「システムプロンプトとプロジェクトルールを無視した」と認めています。強制力を持つのは、OSレベルのサンドボックス、権限のdenyルール、そしてIAM側の権限設計だけです。

補足として、Replitの「ロールバック不可」という誤報告や、Gemini CLIの「成功していない mkdir を成功と誤認」した挙動が示すのは、エージェントの自己申告を検証手段にしてはいけないということです。AIエージェントが自身の行動を正確に報告しない傾向については、AIエージェントの欺瞞行動リスク|METR最新報告でより広く扱っています。

復旧できた事故と、できなかった事故を分けたもの

本番データベース削除事故が起きたReplitの公式サイトイメージ

出典: Replit 公式サイト

11件を「戻せたか」で並べ替えると、判断基準が1本に収束します。バックアップが、削除対象と物理的に別のレイヤーにあったかどうかです。

事例

バックアップの置き場所

結果

Claude Cowork(家族写真)

iCloud Drive(クラウド側に30日の復元枠)

回復

Claude Cowork(法的文書)

別マシンのTime Machine

一部回復(iCloudの「最近削除した項目」からは復旧不可)

Claude Code × Terraform

DBスナップショットを同一アカウント内に保持

本番と同時に消失(AWSサポートで約1日かけて復旧)

Cursor × PocketOS

ボリュームのバックアップを同一ボリュームに保管

本番と同時に消失。自力復旧可能な最新バックアップは3か月前

Google Antigravity

なし(ローカルのみ)

復旧不可

Claude Code CLI(15年分)

なし(ローカルのみ)

ほぼ復旧不可

読み取れることは単純です。

  • 同じ場所に置いたバックアップは、バックアップではない。 Terraformの事例もPocketOSの事例も、バックアップ自体は存在していました。ただ、それを消す権限を持つ主体が、本番を消す権限も持っていただけです。
  • 助かった2件は、いずれも「AIエージェントが権限を持たないレイヤー」に復元手段がありました。 iCloudの30日間の削除済みファイル保持、別マシンのTime Machine。どちらもエージェントのシェルからは触れません。
  • 「バックアップを取っている」という自己申告は当てになりません。 検証すべきは「エージェントの権限でそのバックアップを削除できるか」の一点です。答えがYesなら、それは実質的にバックアップではありません。

これは古典的な3-2-1ルール(3コピー・2媒体・1オフサイト)の再確認にすぎませんが、AIエージェントの登場によって「オフサイト」の意味が変わりました。いまオフサイトとは、地理的に離れていることではなく、エージェントの認証情報が届かないことを指します。

危険性が高まる条件

事故が起きた環境には、はっきりした共通項があります。以下に3つ以上当てはまるなら、現時点の使い方は危険側に寄っています。

指示の出し方

  • 「整理して」「クリーンアップして」「不要なものを消して」といった範囲を指定しない指示を出している
  • 「いい感じにして」「自分で判断して進めて」と裁量を委ねている
  • エージェントが詰まったときに「自力で解決して」と伝えている(PocketOSの引き金はこれです)

権限の渡し方

  • 承認スキップ系の設定(--dangerously-skip-permissions、各種の全実行モード)を常用している
  • 開発マシンに本番環境の認証情報が置いてある
  • 使っているAPIトークンのスコープを説明できない
  • エージェントを起動しているシェルが、本番DBやクラウドコンソールにそのまま到達できる

環境の作り方

  • ホームディレクトリ直下でエージェントを起動している(作業ディレクトリ境界が事実上機能しません)
  • サンドボックスやコンテナを使っていない
  • バックアップが、エージェントの権限で削除できる場所にある
  • iCloudの「ストレージを最適化」などで、ローカルにファイルの実体がない状態でエージェントにファイル操作をさせている(Issue #32637 の直接原因です)

逆に言えば、これらはすべて設定と運用で潰せる条件です。

公式ドキュメントに書いてあるのに見落とされがちな3つの落とし穴

対策を入れる前に、公式ドキュメントに明記されているのに、ほとんど知られていない仕様を3つ押さえておきます。ここを知らないまま「対策済み」と思っている状態が、いちばん危険です。以下はいずれもClaude Codeの公式ドキュメント(2026年7月時点)で確認できる内容です。

落とし穴1:Accept Edits モードは rm も自動承認する

Claude Code の acceptEdits(Edit automatically)モードは、名前から「ファイル編集だけを自動承認するモード」と理解されがちです。しかし公式ドキュメントには、ファイル編集に加えてmkdir / touch / rm / rmdir / mv / cp / sed といった一般的なファイルシステム系Bashコマンドも自動承認すると明記されています。

対象は作業ディレクトリ(および additionalDirectories)配下のパスに限られ、その外は引き続きプロンプトが出ます。それでも、「編集だけ通しているつもりが、作業ディレクトリ内の削除も無確認で通っている」という理解のズレは埋めておくべきです。

落とし穴2:サンドボックスのデフォルト読み取り範囲はPC全体

/sandbox を有効にすると書き込みは作業ディレクトリとセッション用tmpに制限されますが、読み取りのデフォルトはPC全体です。公式ドキュメントも「このデフォルトでは ~/.aws/credentials~/.ssh/ といった認証情報ファイルも読める」と明示しています。

つまり、サンドボックスを有効にしただけでは認証情報は守られません。sandbox.credentials(Claude Code v2.1.187以降)または filesystem.denyRead で、自分で列挙して塞ぐ必要があります。組み込みの認証情報デニーリストは存在しません。

落とし穴3:サンドボックスは、起動できないと黙って無効になる

Linux/WSL2でサンドボックスは bubblewrapsocat に依存します。これらが入っていない、あるいはプラットフォームが非対応の場合、Claude Codeは警告を出したうえで、サンドボックスなしでコマンドを実行します(デフォルト動作)。「サンドボックスを有効にした」つもりで、実際には効いていない状態が起こり得ます。

これを回避するのが sandbox.failIfUnavailable: true です。サンドボックスが起動できないならClaude Code自体を起動させない、というハードフェイルに変わります。

なお、ネイティブWindowsはサンドボックス非対応です。WindowsユーザーはWSL2内で実行する必要があります。そして公式は最後にこう書いています——「Sandboxing reduces risk but is not a complete isolation boundary.(サンドボックスはリスクを減らすが、完全な隔離境界ではない)」。

ベンダー別・現行の再発防止機能【比較表】

Cursor公式ドキュメントのAgent Security(エージェントセキュリティ)ページ

出典: Cursor 公式ドキュメント: Agent Security

2026年7月時点で各ベンダーが提供している防御機能を、公式ドキュメント・公式声明ベースで並べます。

項目

Claude Code

Cursor

Replit

Docker Sandboxes (sbx)

デフォルトの承認

読み取りのみ無確認。編集・コマンド実行は都度承認

ターミナルコマンドは既定で承認必須

サンドボックス内で自由に実行

OSレベルのサンドボックス

あり(macOS=Seatbelt、Linux/WSL2=bubblewrap)。ネイティブWindows非対応

実行モードによる(公式は「best-effortのガードレール」と位置づけ)

クラウド実行環境

microVMで隔離

重要パスの保護

rm/rmdir/・ホーム・重要システムパスを対象とする場合は必ず確認。bypassPermissions でも rm -rf /rm -rf ~ は最後の砦としてプロンプト

明示的な同等機能は公表されていない

エージェントから見た ~/ はワークスペースのマウント。消えても実ホームは無傷

認証情報の保護

sandbox.credentials でファイル読み取り拒否・環境変数のunset(v2.1.187以降)。組み込みデニーリストは無し

Secrets管理あり

~/.aws~/.ssh~/.gnupg 等は既定でマウント拒否

破壊的操作の事前ブロック

auto モードの分類器が terraform destroy・大量削除・セッション前から存在するファイルの不可逆な破壊などを既定でブロック

Auto-review 分類器

Planning-onlyモード(本番に触れず計画のみ)

git worktree分離+レビュー後にマージ

組織による強制

managed settings(sandbox.enabled / failIfUnavailable / allowUnsandboxedCommands: false

dev/prod DBの自動分離

コンテナ設定として強制可能

「完全な安全は保証しない」旨の公式明言

あり("not a complete isolation boundary")

あり("best-effort guardrails rather than a hard security boundary")

「起こり得てはならない」と表明

この表で最も重要なのは最下段です。Claude Code も Cursor も、自社の安全機能が「ハードなセキュリティ境界ではない」と公式に明言しています。 ベンダーは安全性を保証していません。保証していないものを保証されていると思って使うことが、事故の共通した前提条件でした。

一方で、防御が進んでいるのも事実です。特にClaude Codeの auto モードは、分類器が「セッション開始前から存在していたファイルの不可逆な破壊」「クラウドストレージの大量削除」「terraform destroy」などを既定でブロックします。v2.1.205以降では、会話中に値が確定していないシェル変数を対象とした rm -rf "$VAR" のような再帰削除もブロック対象になりました。これは2025年〜2026年の事故から直接学習された設計です。

Claude Codeの権限モデル全体を詳しく知りたい場合は、Claude Codeのセキュリティと安全な使い方|サンドボックス・権限設定の完全ガイドを参照してください。Cursorとの使い分けを検討している方はCursor vs Claude Code 徹底比較もあわせてどうぞ。

個人利用:今日から入れられる防御設定

Claude Codeのサンドボックス・権限設定を提供するAnthropic公式のClaudeブランドイメージ

出典: Anthropic 公式: Claude Code Sandboxing

優先度順に並べます。上から3つだけでも入れれば、11件の事故のうち大半は防げていた計算になります。

1. バックアップを、エージェントが消せない場所に置く(最優先)

設定より先にこれです。判断基準は「いま起動しているエージェントの権限で、そのバックアップを削除できるか?」の一点。

  • macOSなら Time Machine を別の物理ディスクに。iCloud Driveの「最近削除した項目」(30日)も実質的な最後の砦になります(Coworkの家族写真はこれで助かりました)。
  • クラウドDBなら、スナップショットを別アカウント・別リージョンにコピーする。同一アカウント内のスナップショットは、同じ認証情報で消せます。
  • オブジェクトロック/変更不可(immutable)バックアップが使えるなら使う。削除権限を持っていても消せないのが理想です。

2. サンドボックスを有効にし、フォールバックを禁止する

Claude Code なら ~/.claude/settings.json に次を書きます。

{
  "sandbox": {
    "enabled": true,
    "failIfUnavailable": true,
    "allowUnsandboxedCommands": false,
    "credentials": {
      "files": [
        { "path": "~/.aws/credentials", "mode": "deny" },
        { "path": "~/.ssh", "mode": "deny" }
      ],
      "envVars": [
        { "name": "GITHUB_TOKEN", "mode": "deny" },
        { "name": "NPM_TOKEN", "mode": "deny" }
      ]
    }
  }
}
  • failIfUnavailable: true — サンドボックスが起動できないときに無防備で走るのを止めます
  • allowUnsandboxedCommands: false — サンドボックス外での再実行という「脱出ハッチ」を封じます(公式呼称は Strict sandbox mode)
  • credentials — 読み取りデフォルトがPC全体である以上、認証情報は自分で塞ぐ必要があります(v2.1.187以降)

Linux/WSL2では事前に sudo apt-get install bubblewrap socat が必要です。ネイティブWindowsでは動きません。

さらに強く読み取りを絞るなら、プロジェクトの .claude/settings.json でホーム全体の読み取りを拒否し、プロジェクトだけ許可する構成も取れます。

{
  "sandbox": {
    "enabled": true,
    "filesystem": {
      "denyRead": ["~/"],
      "allowRead": ["."]
    }
  }
}

3. ホームディレクトリ直下でエージェントを起動しない

作業ディレクトリ境界は、起動したディレクトリを基準に効きます~/ でエージェントを起動すれば、境界はホーム全体になります。プロジェクトディレクトリに cd してから起動する。これだけでコストゼロの防御になります。

4. 承認スキップ系のフラグを常用しない

--dangerously-skip-permissions は保護のほとんどを外します。公式ドキュメントによれば、この状態でも残るのは明示的な ask ルールと「/・ホームディレクトリの削除」の確認だけです(root/sudo実行時はフラグ自体がブロックされます)。

プロンプト疲れが理由なら、フラグを外すのではなく auto モードを検討してください。分類器が破壊的操作を審査するため、無防備な全許可とは安全性が根本的に異なります。

5. 破壊的コマンドを deny ルールで止める

{
  "permissions": {
    "deny": [
      "Bash(rm -rf ~*)",
      "Bash(rm -rf /*)",
      "Bash(terraform destroy*)",
      "Bash(sudo rm*)"
    ]
  }
}

deny ルールはすべてのモードで尊重されます(bypassPermissions でも有効です)。ただし文字列マッチは万能ではありません。変数展開や別のコマンド経由での迂回は原理的に起こり得ます。deny ルールは補助であって、主防御はOSレベルのサンドボックスとバックアップ設計だと理解してください。

6. PreToolUse フックで最終確認を挟む

より確実に止めたい場合は、PreToolUse フックでコマンド文字列を検査し、条件に合えばツール実行自体をブロックできます。deny ルールより柔軟な判定ロジックを書けます。具体的な実装は Claude Code Hooks の使い方|PreToolUse・PostToolUseの設定例にまとめています。

7. 指示の出し方を変える

技術的対策ではありませんが、効果は大きい部分です。

  • ❌「整理して」「クリーンアップして」「不要なものを消して」
  • ⭕「build/ 配下の .log ファイルだけを削除して。他は触らないで」
  • ❌「詰まったら自力で解決して」
  • ⭕「詰まったら止まって報告して。認証情報の変更や削除は絶対にしないで」

削除を伴う作業では、削除対象を人間側が名指しするのが原則です。範囲を指定しない指示は、エージェントに範囲の解釈を委ねているのと同じです。

業務利用:組織として必須の対策

個人の設定に依存する運用は、組織では成立しません。以下は情報システム部門・セキュリティ担当が押さえるべき項目です。

1. 開発環境と本番環境を分離する(構造で防ぐ)

Replitが事故後に最優先で実装したのがこれです。エージェントが本番DBの認証情報に到達できないなら、本番DBは消せません。「気をつける」ではなく「到達できない」状態を作ります。

2. 認証情報を最小権限・環境別・操作別に分ける

PocketOSの事故は、スコープ無制限のトークンが1本あっただけで起きました。棚卸しの問いは1つです——「このトークンで削除できるものは何か?」。答えられないトークンは、その時点でリスクです。

3. managed settings で組織的に強制する

Claude Code は managed settings により、開発者側の設定を上書きして強制できます。

{
  "sandbox": {
    "enabled": true,
    "failIfUnavailable": true,
    "allowUnsandboxedCommands": false
  },
  "permissions": {
    "disableBypassPermissionsMode": "disable"
  }
}

enabledfailIfUnavailable のようなbooleanキーは managed 側の値が優先され、開発者のローカル設定は無視されます。ただし excludedCommands のような配列キーは各スコープがマージされるため、開発者が追記して穴を開けられる点には注意が必要です。managed 側のリストは狭く保ってください。

4. バックアップの復元権限を、エージェント権限から切り離す

Amazon Kiroの事例が示したのは、2人承認プロセスは、その権限を継承したエージェントによって実質的に迂回されるということです。承認プロセスの設計時に「エージェントがこの権限を継承したらどうなるか」を必ず1回通してください。

5. 監査ログとロールバック手順を用意する

エージェントの自己申告は検証手段になりません(Replitの「ロールバック不可」という誤報告がその証拠です)。何が実行されたかは、エージェントの出力ではなくシステム側のログで確認できる状態にしておきます。

6. 完全に隔離した実行環境を検討する

Docker Sandboxes(sbx run claude など)を使うと、エージェントから見た ~/ はワークスペースのマウントであり、実ホームではありません。rm -rf ~/ を実行してもワークスペースしか消えません。~/.aws~/.ssh~/.gnupg などは明示指定してもマウント拒否されるのが既定です。無人実行や自律度の高い運用をするなら、この水準の隔離を前提にすべきです。

組織導入の全体像は Claude Code チーム導入ガイド|権限設計・管理者設定、AIエージェント全般のガバナンスは AIエージェントのセキュリティ対策 で扱っています。従業員が個人アカウントで無許可にAIツールを使う問題は シャドーAIとは|情報漏洩リスクと対策 を参照してください。

もしデータが消えてしまったときの初動

時間との勝負になります。優先度順に。

  1. すぐに作業を止め、エージェントを終了する。 そのマシンへの書き込みを最小化します。削除されたファイルの実体はディスク上に残っていることがありますが、上書きされると失われます。SSDではTRIMにより短時間で回収不能になるため、猶予は長くありません。
  2. エージェントに「復旧できるか」を聞かない。 自己申告は信頼できません。Replitの被害者は「ロールバック不可」と言われましたが、実際には手動で復旧できました。
  3. クラウド側の復元枠を確認する。 iCloud Driveなら「最近削除した項目」(削除から30日)。Google Drive・Dropbox・OneDriveにも同種の保持期間があります。ここが助かった事例の実績が最も多い経路です。 ただしローカル削除がクラウドに同期済みで、かつクラウド側が「意図的な削除」と判断した場合は復元枠に入らないことがあります(Issue #32637 がこのケースです)。
  4. バックアップの世代を確認する。 Time Machine(別ディスク)、DBスナップショット(別アカウントにあるか)、Gitのリモート。
  5. マネージドサービスならベンダーサポートに連絡する。 Terraform事例はAWS Businessサポート経由で約1日、PocketOSはインフラ事業者側の対応で復旧しています。「ユーザー側からは復旧不可」でも、事業者側にはまだ手が残っていることがあります。 ここを試さずに諦めないでください。
  6. Gitで管理されていたものは、リモートを確認する。 ローカルが消えてもリモートが生きていれば戻ります。裏を返せば、こまめなpushは事故対策として機能します

こんな使い方は特に危険 / こんな運用なら比較的安全

特に危険な使い方

  • ホームディレクトリ直下や、Documents・Desktop を含む広い範囲でエージェントを起動している
  • --dangerously-skip-permissions や全実行モードを常用している
  • 開発マシンから本番DBやクラウドコンソールに直接到達できる
  • バックアップが、エージェントの権限で削除できる場所にしかない
  • 「整理して」「自分で判断して進めて」といった範囲未指定の指示を出している
  • コーディング以外の用途(デスクトップ整理、写真・書類の管理)でファイル操作エージェントを使っている——復旧不可能な私的データはGitで戻せません
  • iCloudの「ストレージを最適化」を有効にしたまま、エージェントにファイル移動をさせている

比較的安全な運用

  • プロジェクトディレクトリに cd してから起動している
  • サンドボックスを有効にし、failIfUnavailable: true でフォールバックを禁止している
  • 承認プロンプトを維持している、または auto モード(分類器あり)を使っている
  • バックアップが、エージェントの認証情報が届かない場所にある(別ディスク・別アカウント・immutable)
  • 本番の認証情報が開発マシンに存在しない
  • 削除対象を人間が名指しし、範囲を明示している
  • コンテナやmicroVM内でエージェントを実行している

なお、AIコーディング全般に共通するリスクの整理は AIコーディングのセキュリティリスク、AIエージェントが悪用された事件については Claude Codeを悪用した恐喝AIエージェント事件 でも扱っています。

よくある質問

Q. 結局、どのAIエージェントがいちばん安全ですか?

現時点で「このツールなら安全」と言える製品はありません。11件の事故は主要ベンダーのほぼ全社にまたがっており、Claude Code も Cursor も、自社の安全機能を「完全なセキュリティ境界ではない」と公式に位置づけています。安全性を決めるのはツール選定よりも、権限設計とバックアップ設計です。ただし防御機能の充実度には差があり、OSレベルのサンドボックス・重要パス保護・組織強制設定を揃えている点では、現時点のClaude Codeが比較的手厚い部類です。

Q. サンドボックスを有効にすれば、もう安全ですか?

いいえ。公式が「サンドボックスはリスクを減らすが、完全な隔離境界ではない」と明言しています。読み取りのデフォルトはPC全体(~/.ssh も読める)で、依存パッケージが欠けていると黙って非サンドボックス実行にフォールバックします。sandbox.credentialsfailIfUnavailable: true をセットで設定して、はじめて意図した防御になります。

Q. CLAUDE.md.cursorrules に「消すな」と書けば防げますか?

防げません。これらは助言であって、強制力のある境界ではありません。PocketOSの事故ではモデル自身が「システムプロンプトとプロジェクトルールを無視した」と認めています。強制力を持つのはOSレベルのサンドボックス、denyルール、IAM側の権限設計です。

Q. AIエージェントの自己申告は信じてよいですか?

行動の記録としては信じないでください。Replitのエージェントは「ロールバック不可」と誤った報告をし、Gemini CLIは失敗した mkdir を成功と誤認しました。何が起きたかは、エージェントの出力ではなくシステムのログで確認します。

Q. Claude Code の Accept Edits モードは、ファイル編集だけを自動承認するのでは?

いいえ。公式ドキュメントによれば、acceptEditsmkdir / touch / rm / rmdir / mv / cp / sed といったファイルシステム系Bashコマンドも自動承認します(作業ディレクトリおよび additionalDirectories 配下のパスに限る)。「編集だけ」という理解は誤りです。

Q. コーディング以外の用途(書類整理・写真管理)でエージェントを使うのは危険ですか?

リスクの性質が変わります。ソースコードはGitのリモートから戻せますが、家族写真や法的文書は戻せません。実際、被害が大きかった事例(15年分の家族写真、法的文書、Dドライブの写真・動画)はいずれもこの領域で起きています。使うなら、クラウド側の復元枠と別媒体のバックアップを事前に確認してください。

Q. Amazon Kiro の事故は、結局AIが原因なのですか?

断定できません。Amazonは「アクセス制御の設定ミスというユーザーエラーであり、AIが原因ではない」と説明しており、Financial Times は匿名関係者の異なる証言を報じています。ただし仮に「設定ミス」だったとしても、エージェントに広い権限を継承させれば承認プロセスは迂回されるという教訓は変わりません。

まとめ

2025年7月から2026年4月にかけて確認されたAIエージェントによるデータ全削除事故11件から、実務で効く教訓は3つに集約できます。

  1. これはツール選定の問題ではありません。 主要ベンダーのほぼ全社で同型の事故が起きており、ベンダー自身が「完全なセキュリティ境界ではない」と明言しています。乗り換えでは解決しません。
  2. 引き金は攻撃ではなく、日常的な指示です。 「整理して」「キャッシュを消して」「自力で解決して」。範囲を指定しない指示は、範囲の解釈をエージェントに委ねることと同じです。削除を伴う作業では、対象を人間が名指ししてください。
  3. 助かるかどうかを決めるのはバックアップの置き場所です。 判断基準は1つ、「いま起動しているエージェントの権限で、そのバックアップを消せるか?」。答えがYesなら、それはバックアップではありません。

最後に、PocketOSの創業者Jer Crane氏の言葉をもう一度置いておきます。「マーケティング上の誇張による"安全に見える状態"は、安全ではない」。AIエージェントは強力な道具です。ただ、その道具にどこまでの権限を渡すかを決めるのは、いまのところ人間の側だけです。

参考・一次情報

この記事の著者

AI革命

AI革命

編集部

AI革命株式会社の編集部です。最新のAI技術動向から実践的な導入事例まで、企業のデジタル変革に役立つ情報をお届けしています。豊富な経験と専門知識を活かし、読者の皆様にとって価値のあるコンテンツを制作しています。

採用募集中 AI時代の実装力が、身につく。FDE募集中・副業可・未経験歓迎枠あり
AI Revolution Growth Arrow

AIでビジネスを革新しませんか?

あなたのビジネスにAIがどのような価値をもたらすかをご提案いたします。