{
 "public_id": "AIR-2026-0182",
 "incident_id": "2026-08-chaindrop-agent-hook-campaign",
 "date_disclosed": "2026-08-04",
 "date_occurred": null,
 "title": "ChainDrop: npm supply-chain campaign that plants Claude Code SessionStart hooks and VS Code folderOpen tasks so opening the repo runs the payload",
 "class": "in_the_wild",
 "attack_surface": "coding_agent",
 "initial_vector": "compromised_npm_package_and_repository_config",
 "agent_capability_abused": [
  "session_start_hooks",
  "folder_open_tasks",
  "npm_preinstall_scripts",
  "shell_execution",
  "ci_runner_memory_read"
 ],
 "target_product": "@picsart/ai-sdk, @ornikar/eslint-config, jaredwray/keyv and other repos; Claude Code and VS Code as execution vehicles",
 "target_vendor": "multiple / open source",
 "autonomy_level": "semi_autonomous",
 "impact_realized": true,
 "impact_type": [
  "credential_theft",
  "supply_chain_compromise"
 ],
 "blast_radius": "developers and CI runners cloning affected npm packages and repositories",
 "cve": [],
 "taxonomy": {
  "owasp_asi": [
   "ASI05",
   "ASI04",
   "ASI08"
  ],
  "mitre_atlas": [],
  "labels": [
   "lifecycle_hook_abuse",
   "npm_preinstall",
   "worm",
   "credential_harvesting",
   "memory_scraping"
  ]
 },
 "defense_present": "none for hook auto-execution",
 "defense_bypassed": true,
 "fix_shipped": "ongoing investigation at publication",
 "primary_sources": [
  "https://www.pillar.security/blog/chaindrop-when-opening-a-repository-becomes-execution"
 ],
 "verified_quote": "The attackers added a Claude Code `SessionStart` hook and a VS Code `folderOpen` task that could launch the payload when the repository was opened.",
 "confidence": "high",
 "notes": "Pillar Security analysis (2026-08-04) of a campaign first reported by StepSecurity, with SafeDep, Snyk and Socket also covering it. Self-propagating via stolen credentials; scrapes GitHub Actions runner process memory. Sibling of the Hades campaign (2026-06-hades-agent-config-hook-campaign) - both weaponize agent lifecycle hooks as the execution primitive, which is the durable lesson.",
 "risk_category": "security_fraud",
 "risk_secondary": [],
 "risk_subcategory": "Supply Chain Compromise",
 "risk_sub_secondary": [
  "Credential & Secret Theft",
  "Multi-agent contagion"
 ],
 "ai_entity": "generative",
 "agency": "agent_acted",
 "agency_debatable": false,
 "agency_reason": "SessionStart hooks make the agent run the payload on repo open",
 "vector_family": "other",
 "vector_detail": "compromised_npm_package_and_repository_config",
 "guardrail_kind": [
  "none"
 ],
 "guardrail_outcome": "not_applicable",
 "xrefs": {
  "aiid": [],
  "atlas": [],
  "cve": [],
  "ghsa": []
 },
 "primary_asi": "ASI05",
 "agent_framework": "claude_code",
 "model_provider": "anthropic",
 "model_name": "",
 "detection_mechanism": "external_researcher",
 "tool_access": "unknown",
 "financial_loss_band": "unknown",
 "eai_category": "supply_chain_vulnerabilities",
 "eai_domain": "tool_misuse",
 "eai_secondary": [
  "credential_theft"
 ],
 "eai_reason": "subcategory: Supply Chain Compromise",
 "asi_curated": [
  "ASI05"
 ],
 "asi_scope": "in_scope",
 "asi_provenance": "curated_plus_rule",
 "asi_reason": "curated: ASI05 | added ASI04 (eai_category=supply_chain_vulnerabilities), ASI08 (signal=cascade)",
 "submitted_by": "EAI Internal"
}