{
 "public_id": "AIR-2026-0133",
 "incident_id": "2026-06-hades-agent-config-hook-campaign",
 "date_disclosed": "2026-06-10",
 "date_occurred": "2026-06-03",
 "title": "Hades: one committed config file hijacks 14+ AI coding agents on repo open, harvesting cloud and registry credentials at scale",
 "class": "in_the_wild",
 "attack_surface": "coding_agent",
 "initial_vector": "malicious_repository_config_file",
 "agent_capability_abused": [
  "session_start_hooks",
  "folder_open_tasks",
  "shell_execution",
  "process_memory_read",
  "git_operations"
 ],
 "target_product": "Claude Code, Gemini CLI, Cursor, VS Code, Copilot, Cline, Aider, Amazon Q, Cody, Continue and others",
 "target_vendor": "multiple",
 "autonomy_level": "semi_autonomous",
 "impact_realized": true,
 "impact_type": [
  "credential_theft",
  "supply_chain_compromise",
  "data_exfiltration"
 ],
 "blast_radius": "73 Microsoft repositories, ~37 PyPI bioinformatics packages, mantine-datatable and others; 55+ exfiltration repos holding 88 encrypted credential dumps",
 "cve": [],
 "taxonomy": {
  "owasp_asi": [
   "ASI05",
   "ASI04",
   "ASI08"
  ],
  "mitre_atlas": [],
  "labels": [
   "lifecycle_hook_abuse",
   "worm",
   "credential_harvesting",
   "oidc_provenance_forgery",
   "wiper_tripwire"
  ]
 },
 "defense_present": "none - hooks execute on session start / folder open with no trust prompt",
 "defense_bypassed": true,
 "fix_shipped": "no CVE; mitigation requires trust prompts on auto-execution and friction on agent git operations",
 "primary_sources": [
  "https://www.pillar.security/blog/your-agents-answer-to-hades-how-one-commit-hijacks-4-ai-coding-tools"
 ],
 "verified_quote": "Opening the repo in VS Code fires the `folderOpen` task. Opening it in Claude Code or Gemini fires the `SessionStart` hook.",
 "confidence": "high",
 "notes": "Pillar Security (Ariel Fogel). Observed in the wild 2026-06-03 to 2026-06-09; successor to the 2025 Shai-Hulud worm. Steals GitHub PATs, AWS/GCP/Azure creds, npm/PyPI tokens, SSH keys and Kubernetes tokens; reads process memory for unmasked secrets and forges package provenance via OIDC/Sigstore. Incident-response caveat from the writeup: 'Revoking the token first on a host that may still be infected can set off the wiper.' Related to but distinct from 2026-08-chaindrop-agent-hook-campaign.",
 "risk_category": "security_fraud",
 "risk_secondary": [
  "privacy",
  "product_misuse"
 ],
 "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": "the agents ran the config hooks on repo open and harvested credentials",
 "vector_family": "malicious_component",
 "vector_detail": "malicious_repository_config_file",
 "guardrail_kind": [
  "none"
 ],
 "guardrail_outcome": "not_applicable",
 "xrefs": {
  "aiid": [],
  "atlas": [],
  "cve": [],
  "ghsa": []
 },
 "primary_asi": "ASI05",
 "agent_framework": "unknown",
 "model_provider": "multiple",
 "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",
  "data_exfiltration_channels"
 ],
 "eai_reason": "subcategory: Supply Chain Compromise",
 "asi_curated": [
  "ASI05",
  "ASI04"
 ],
 "asi_scope": "in_scope",
 "asi_provenance": "curated_plus_rule",
 "asi_reason": "curated: ASI05,ASI04 | added ASI08 (signal=cascade)",
 "submitted_by": "EAI Internal"
}