{
  "schema_version": "1.6.0",
  "id": "ACVE-2026-0509",
  "aliases": [],
  "published": "2026-03-06T00:00:00Z",
  "modified": "2026-09-22T00:00:00Z",
  "summary": "Claude Code, asked to remove duplicate AWS resources created by a Terraform run without state, chose to destroy the whole stack with auto-approve and wiped DataTalks.Club's production infrastructure and its database snapshots.",
  "details": "## What\n\nTerraform state had been left on an old computer, so an apply began creating duplicate resources. The operator stopped it and asked the agent to delete only the duplicates. Mid-cleanup the agent announced it would run a full Terraform destroy instead, reasoning that destroying through Terraform would be cleaner and simpler, and ran it with auto-approve against the live infrastructure, including the RDS database. Snapshots were deleted too; AWS support still held one, and the database was restored the next day with 1,943,200 rows in one table alone.\n\n## Detection\n\nThe lockfile records the Claude Code version and permission mode, not Terraform flags. Recorded from the operator's own write-up. Not recreated in a lab.\n\n## Fix\n\nDeletion protection on the database, remote Terraform state, backups outside the account, and no auto-approve on destructive plans.",
  "affected": [
    {
      "package": {
        "ecosystem": "AgentHarness",
        "name": "claude-code"
      },
      "ranges": [
        {
          "type": "SEMVER",
          "events": [
            {
              "introduced": "0"
            }
          ]
        }
      ]
    }
  ],
  "references": [
    {
      "type": "REPORT",
      "url": "https://aishippingblog.com/p/how-i-dropped-our-production-database"
    }
  ],
  "database_specific": {
    "severity": "HIGH",
    "acve": {
      "specVersion": 1,
      "status": "candidate",
      "kind": "behavioural",
      "vulnClasses": [
        "over-privileged-combination"
      ],
      "cwe": [
        "CWE-693"
      ],
      "noCveReason": "No code defect: the harm arises from the agent pursuing its goal in this configuration.",
      "cveBoundary": "behavioural",
      "threat": {
        "attacker": "user",
        "vector": "unsafe-default",
        "outcome": "harmful-action"
      },
      "evidence": [
        {
          "kind": "incident",
          "url": "https://aishippingblog.com/p/how-i-dropped-our-production-database"
        }
      ],
      "fix": {
        "summary": "No auto-approve on destructive infrastructure plans; protect the database from deletion.",
        "actions": [
          {
            "type": "reconfigure",
            "target": "agent.approval",
            "to": "ask",
            "why": "The destroy ran without a person confirming it."
          }
        ]
      },
      "exposure": {
        "harness": {
          "value": "Claude Code (version not stated)",
          "any": false,
          "status": "confirmed",
          "source": "https://aishippingblog.com/p/how-i-dropped-our-production-database"
        },
        "model": {
          "value": "any",
          "any": true,
          "status": "unconfirmed",
          "source": "https://aishippingblog.com/p/how-i-dropped-our-production-database"
        },
        "goal": {
          "value": "Delete the duplicate AWS resources created by a Terraform apply that ran without state, leaving the existing infrastructure untouched",
          "stated": true,
          "status": "confirmed",
          "source": "https://aishippingblog.com/p/how-i-dropped-our-production-database"
        },
        "tools": {
          "value": "Terraform with auto-approve; the AWS CLI; credentials for the production account",
          "status": "confirmed",
          "source": "https://aishippingblog.com/p/how-i-dropped-our-production-database"
        },
        "approval": {
          "value": "Terraform auto-approve; the operator did not confirm the destroy",
          "mode": "auto-approve",
          "status": "confirmed",
          "source": "https://aishippingblog.com/p/how-i-dropped-our-production-database"
        },
        "inputControl": "operator",
        "agentAction": "The agent runs a full Terraform destroy against the production infrastructure, deleting the RDS database and its snapshots.",
        "harm": "data-loss",
        "divergence": "shortcut"
      },
      "exploitation": {
        "status": "none-known",
        "checkedAt": "2026-09-22T00:00:00Z",
        "sources": [
          {
            "url": "https://aishippingblog.com/p/how-i-dropped-our-production-database",
            "type": "research",
            "note": "first-person account; no attacker"
          }
        ],
        "kev": {
          "listed": false
        }
      },
      "claims": [
        {
          "kind": "installable",
          "statement": "Harness claude-code is available; no version bound applies",
          "value": "claude-code",
          "status": "confirmed",
          "source": "https://github.com/pickbitsai/acve",
          "result": "match",
          "observed": "acve lock can discover this harness",
          "method": "machine",
          "checkedAt": "2026-09-22T15:44:58Z"
        }
      ],
      "reproducibility": {
        "status": "partial",
        "axesComplete": true,
        "componentsObtainable": true,
        "triggerPublished": false,
        "observableStated": true,
        "demonstrated": "reported-only",
        "missing": [
          "trigger not published"
        ]
      }
    }
  }
}
