agent-threat-rules 4.0.0 → 4.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1013) hide show
  1. package/CHANGELOG.md +1804 -0
  2. package/DISCLOSURE +85 -0
  3. package/README.md +427 -155
  4. package/dist/adapters/openshell-filter.d.ts +10 -3
  5. package/dist/adapters/openshell-filter.d.ts.map +1 -1
  6. package/dist/adapters/openshell-filter.js +10 -3
  7. package/dist/adapters/openshell-filter.js.map +1 -1
  8. package/dist/adapters/stdio-adapter.js +3 -3
  9. package/dist/adapters/stdio-adapter.js.map +1 -1
  10. package/dist/cli/mcp-tools-document.d.ts +40 -0
  11. package/dist/cli/mcp-tools-document.d.ts.map +1 -0
  12. package/dist/cli/mcp-tools-document.js +95 -0
  13. package/dist/cli/mcp-tools-document.js.map +1 -0
  14. package/dist/cli/scan-handler.d.ts +8 -0
  15. package/dist/cli/scan-handler.d.ts.map +1 -1
  16. package/dist/cli/scan-handler.js +148 -44
  17. package/dist/cli/scan-handler.js.map +1 -1
  18. package/dist/cli/tc-pipeline.d.ts +20 -0
  19. package/dist/cli/tc-pipeline.d.ts.map +1 -1
  20. package/dist/cli/tc-pipeline.js +84 -15
  21. package/dist/cli/tc-pipeline.js.map +1 -1
  22. package/dist/cli.d.ts +2 -1
  23. package/dist/cli.d.ts.map +1 -1
  24. package/dist/cli.js +97 -210
  25. package/dist/cli.js.map +1 -1
  26. package/dist/converters/sarif.d.ts +14 -2
  27. package/dist/converters/sarif.d.ts.map +1 -1
  28. package/dist/converters/sarif.js +7 -9
  29. package/dist/converters/sarif.js.map +1 -1
  30. package/dist/corpus-event.d.ts +47 -5
  31. package/dist/corpus-event.d.ts.map +1 -1
  32. package/dist/corpus-event.js +68 -29
  33. package/dist/corpus-event.js.map +1 -1
  34. package/dist/embedding/model-loader.d.ts +2 -0
  35. package/dist/embedding/model-loader.d.ts.map +1 -1
  36. package/dist/embedding/model-loader.js +3 -1
  37. package/dist/embedding/model-loader.js.map +1 -1
  38. package/dist/enforcement.d.ts +8 -0
  39. package/dist/enforcement.d.ts.map +1 -1
  40. package/dist/enforcement.js +10 -0
  41. package/dist/enforcement.js.map +1 -1
  42. package/dist/engine.d.ts +173 -6
  43. package/dist/engine.d.ts.map +1 -1
  44. package/dist/engine.js +362 -76
  45. package/dist/engine.js.map +1 -1
  46. package/dist/eval/embedding-provenance.d.ts +40 -0
  47. package/dist/eval/embedding-provenance.d.ts.map +1 -0
  48. package/dist/eval/embedding-provenance.js +71 -0
  49. package/dist/eval/embedding-provenance.js.map +1 -0
  50. package/dist/eval/eval-harness.d.ts +34 -0
  51. package/dist/eval/eval-harness.d.ts.map +1 -1
  52. package/dist/eval/eval-harness.js +49 -2
  53. package/dist/eval/eval-harness.js.map +1 -1
  54. package/dist/eval/hackaprompt-corpus.d.ts +12 -0
  55. package/dist/eval/hackaprompt-corpus.d.ts.map +1 -1
  56. package/dist/eval/hackaprompt-corpus.js +15 -1
  57. package/dist/eval/hackaprompt-corpus.js.map +1 -1
  58. package/dist/eval/hackaprompt-provenance.d.ts +52 -0
  59. package/dist/eval/hackaprompt-provenance.d.ts.map +1 -0
  60. package/dist/eval/hackaprompt-provenance.js +108 -0
  61. package/dist/eval/hackaprompt-provenance.js.map +1 -0
  62. package/dist/eval/run-hackaprompt-benchmark.d.ts +18 -8
  63. package/dist/eval/run-hackaprompt-benchmark.d.ts.map +1 -1
  64. package/dist/eval/run-hackaprompt-benchmark.js +154 -64
  65. package/dist/eval/run-hackaprompt-benchmark.js.map +1 -1
  66. package/dist/eval/run-pint-benchmark.js +11 -1
  67. package/dist/eval/run-pint-benchmark.js.map +1 -1
  68. package/dist/eval/skill-benchmark.d.ts +26 -6
  69. package/dist/eval/skill-benchmark.d.ts.map +1 -1
  70. package/dist/eval/skill-benchmark.js +49 -16
  71. package/dist/eval/skill-benchmark.js.map +1 -1
  72. package/dist/flywheel.d.ts +4 -0
  73. package/dist/flywheel.d.ts.map +1 -1
  74. package/dist/flywheel.js +12 -4
  75. package/dist/flywheel.js.map +1 -1
  76. package/dist/hook-handler.d.ts +11 -1
  77. package/dist/hook-handler.d.ts.map +1 -1
  78. package/dist/hook-handler.js +84 -16
  79. package/dist/hook-handler.js.map +1 -1
  80. package/dist/hook-tool-output.d.ts +47 -0
  81. package/dist/hook-tool-output.d.ts.map +1 -0
  82. package/dist/hook-tool-output.js +110 -0
  83. package/dist/hook-tool-output.js.map +1 -0
  84. package/dist/index.d.ts +5 -3
  85. package/dist/index.d.ts.map +1 -1
  86. package/dist/index.js +3 -2
  87. package/dist/index.js.map +1 -1
  88. package/dist/layer-integration.d.ts +4 -2
  89. package/dist/layer-integration.d.ts.map +1 -1
  90. package/dist/layer-integration.js +6 -2
  91. package/dist/layer-integration.js.map +1 -1
  92. package/dist/mcp-server.d.ts +8 -0
  93. package/dist/mcp-server.d.ts.map +1 -1
  94. package/dist/mcp-server.js +1 -0
  95. package/dist/mcp-server.js.map +1 -1
  96. package/dist/mcp-tools/scan.d.ts.map +1 -1
  97. package/dist/mcp-tools/scan.js +9 -1
  98. package/dist/mcp-tools/scan.js.map +1 -1
  99. package/dist/measurement/enforce-lane.d.ts +66 -0
  100. package/dist/measurement/enforce-lane.d.ts.map +1 -0
  101. package/dist/measurement/enforce-lane.js +89 -0
  102. package/dist/measurement/enforce-lane.js.map +1 -0
  103. package/dist/measurement/from-eval-harness.d.ts +16 -3
  104. package/dist/measurement/from-eval-harness.d.ts.map +1 -1
  105. package/dist/measurement/from-eval-harness.js +15 -5
  106. package/dist/measurement/from-eval-harness.js.map +1 -1
  107. package/dist/measurement/in-sample-ablation.d.ts +29 -0
  108. package/dist/measurement/in-sample-ablation.d.ts.map +1 -0
  109. package/dist/measurement/in-sample-ablation.js +45 -0
  110. package/dist/measurement/in-sample-ablation.js.map +1 -0
  111. package/dist/measurement/schema.d.ts +38 -1
  112. package/dist/measurement/schema.d.ts.map +1 -1
  113. package/dist/measurement/schema.js +43 -1
  114. package/dist/measurement/schema.js.map +1 -1
  115. package/dist/quality/action-eligibility.d.ts +4 -2
  116. package/dist/quality/action-eligibility.d.ts.map +1 -1
  117. package/dist/quality/action-eligibility.js.map +1 -1
  118. package/dist/rule-confidence.d.ts +31 -0
  119. package/dist/rule-confidence.d.ts.map +1 -0
  120. package/dist/rule-confidence.js +49 -0
  121. package/dist/rule-confidence.js.map +1 -0
  122. package/dist/rule-scaffolder.d.ts.map +1 -1
  123. package/dist/rule-scaffolder.js +43 -4
  124. package/dist/rule-scaffolder.js.map +1 -1
  125. package/dist/semantic-evaluator.d.ts.map +1 -1
  126. package/dist/semantic-evaluator.js +15 -13
  127. package/dist/semantic-evaluator.js.map +1 -1
  128. package/dist/shadow-evaluator.d.ts +7 -2
  129. package/dist/shadow-evaluator.d.ts.map +1 -1
  130. package/dist/shadow-evaluator.js +29 -25
  131. package/dist/shadow-evaluator.js.map +1 -1
  132. package/dist/tc-reporter.d.ts +22 -3
  133. package/dist/tc-reporter.d.ts.map +1 -1
  134. package/dist/tc-reporter.js +36 -3
  135. package/dist/tc-reporter.js.map +1 -1
  136. package/dist/testcase-event.d.ts +105 -0
  137. package/dist/testcase-event.d.ts.map +1 -0
  138. package/dist/testcase-event.js +312 -0
  139. package/dist/testcase-event.js.map +1 -0
  140. package/dist/tier0-invariant.d.ts.map +1 -1
  141. package/dist/tier0-invariant.js +1 -0
  142. package/dist/tier0-invariant.js.map +1 -1
  143. package/dist/tier1-blacklist.d.ts.map +1 -1
  144. package/dist/tier1-blacklist.js +1 -0
  145. package/dist/tier1-blacklist.js.map +1 -1
  146. package/dist/tool-definition-scope.d.ts +45 -0
  147. package/dist/tool-definition-scope.d.ts.map +1 -0
  148. package/dist/tool-definition-scope.js +68 -0
  149. package/dist/tool-definition-scope.js.map +1 -0
  150. package/dist/types.d.ts +42 -2
  151. package/dist/types.d.ts.map +1 -1
  152. package/dist/verdict.d.ts +46 -2
  153. package/dist/verdict.d.ts.map +1 -1
  154. package/dist/verdict.js +99 -14
  155. package/dist/verdict.js.map +1 -1
  156. package/package.json +11 -3
  157. package/rules/agent-manipulation/ATR-2026-00030-cross-agent-attack.yaml +81 -137
  158. package/rules/agent-manipulation/ATR-2026-00032-goal-hijacking.yaml +30 -111
  159. package/rules/agent-manipulation/ATR-2026-00074-cross-agent-privilege-escalation.yaml +30 -110
  160. package/rules/agent-manipulation/ATR-2026-00076-inter-agent-message-spoofing.yaml +24 -104
  161. package/rules/agent-manipulation/ATR-2026-00077-human-trust-exploitation.yaml +38 -131
  162. package/rules/agent-manipulation/ATR-2026-00108-consensus-sybil-attack.yaml +24 -91
  163. package/rules/agent-manipulation/ATR-2026-00116-a2a-message-validation.yaml +20 -81
  164. package/rules/agent-manipulation/ATR-2026-00117-agent-identity-spoofing.yaml +29 -95
  165. package/rules/agent-manipulation/ATR-2026-00118-approval-fatigue.yaml +20 -90
  166. package/rules/agent-manipulation/ATR-2026-00119-social-engineering-via-agent.yaml +31 -106
  167. package/rules/agent-manipulation/ATR-2026-00132-casual-authority-escalation.yaml +25 -102
  168. package/rules/agent-manipulation/ATR-2026-00139-casual-authority-redirect.yaml +22 -94
  169. package/rules/agent-manipulation/ATR-2026-00164-skill-scope-hijack.yaml +44 -60
  170. package/rules/agent-manipulation/ATR-2026-00268-tense-framing-bypass.yaml +51 -112
  171. package/rules/agent-manipulation/ATR-2026-00269-fitd-escalation.yaml +45 -89
  172. package/rules/agent-manipulation/ATR-2026-00271-grandma-roleplay-jailbreak.yaml +49 -94
  173. package/rules/agent-manipulation/ATR-2026-00273-dan-developer-mode-persona.yaml +47 -91
  174. package/rules/agent-manipulation/ATR-2026-00287-threaten-json-coercive-output-threat.yaml +46 -93
  175. package/rules/agent-manipulation/ATR-2026-00288-false-premise-injection.yaml +44 -94
  176. package/rules/agent-manipulation/ATR-2026-00301-tap-tree-of-attacks-jailbreak.yaml +50 -98
  177. package/rules/agent-manipulation/ATR-2026-00302-anti-dan-inverted-filter-persona.yaml +51 -98
  178. package/rules/agent-manipulation/ATR-2026-00303-devmode-ranti-profanity-coercion.yaml +52 -101
  179. package/rules/agent-manipulation/ATR-2026-00304-chatgpt-image-unlocker-markdown-injection.yaml +53 -104
  180. package/rules/agent-manipulation/ATR-2026-00305-dan-mode-ablation-benchmark-coercion.yaml +48 -99
  181. package/rules/agent-manipulation/ATR-2026-00306-autodan-genetic-jailbreak-suffix.yaml +50 -103
  182. package/rules/agent-manipulation/ATR-2026-00307-inthewild-jailbreak-corpus-signature.yaml +53 -107
  183. package/rules/agent-manipulation/ATR-2026-00314-amoral-unfiltered-custom-persona-jailbreak.yaml +44 -94
  184. package/rules/agent-manipulation/ATR-2026-00317-free-of-restrictions-named-persona.yaml +44 -97
  185. package/rules/agent-manipulation/ATR-2026-00318-moralizing-rant-then-unfiltered-bypass.yaml +41 -90
  186. package/rules/agent-manipulation/ATR-2026-00319-developer-mode-dual-response-format.yaml +40 -88
  187. package/rules/agent-manipulation/ATR-2026-00320-opposite-day-boolean-opposite-machine.yaml +42 -91
  188. package/rules/agent-manipulation/ATR-2026-00322-fictional-world-format-override-jailbreak.yaml +41 -91
  189. package/rules/agent-manipulation/ATR-2026-00323-dual-persona-simulation-jailbreak.yaml +41 -91
  190. package/rules/agent-manipulation/ATR-2026-00324-neurosemantical-inversitis-disease-jailbreak.yaml +42 -103
  191. package/rules/agent-manipulation/ATR-2026-00325-bob-hypothetical-unrestricted-chatbot.yaml +41 -88
  192. package/rules/agent-manipulation/ATR-2026-00326-fake-developer-authority-chatdan-override.yaml +41 -93
  193. package/rules/agent-manipulation/ATR-2026-00327-ai-ethics-law-bypass-declaration.yaml +45 -94
  194. package/rules/agent-manipulation/ATR-2026-00328-named-mode-persona-override.yaml +41 -92
  195. package/rules/agent-manipulation/ATR-2026-00329-no-withhold-factual-resource-persona.yaml +44 -97
  196. package/rules/agent-manipulation/ATR-2026-00330-yoja-allcaps-settings-block-persona.yaml +41 -88
  197. package/rules/agent-manipulation/ATR-2026-00331-terminal-cli-harmful-function-simulator.yaml +40 -89
  198. package/rules/agent-manipulation/ATR-2026-00332-hacker-chan-culture-offensive-ai-persona.yaml +42 -90
  199. package/rules/agent-manipulation/ATR-2026-00333-disease-animal-dual-ai-chatbot.yaml +41 -90
  200. package/rules/agent-manipulation/ATR-2026-00334-two-entity-token-splitting-game.yaml +41 -102
  201. package/rules/agent-manipulation/ATR-2026-00335-key-value-template-persona-injection.yaml +41 -91
  202. package/rules/agent-manipulation/ATR-2026-00336-brm-false-information-machine-persona.yaml +42 -105
  203. package/rules/agent-manipulation/ATR-2026-00337-obfuscated-system-announcement-injection.yaml +40 -90
  204. package/rules/agent-manipulation/ATR-2026-00338-persongpt-hash-prefix-activation.yaml +39 -90
  205. package/rules/agent-manipulation/ATR-2026-00339-bom-boolean-opposite-machine-persona-claim.yaml +39 -83
  206. package/rules/agent-manipulation/ATR-2026-00340-h4x-amoral-unfiltered-character.yaml +39 -84
  207. package/rules/agent-manipulation/ATR-2026-00341-char-rules-shortform-persona-injection.yaml +41 -87
  208. package/rules/agent-manipulation/ATR-2026-00342-unicode-encoding-obfuscation-injection.yaml +41 -86
  209. package/rules/agent-manipulation/ATR-2026-00343-lie-truth-dual-personality-uncensored.yaml +40 -98
  210. package/rules/agent-manipulation/ATR-2026-00344-alt-ai-same-capabilities-no-restrictions.yaml +41 -87
  211. package/rules/agent-manipulation/ATR-2026-00345-nlp-based-os-fictional-terminal-override.yaml +41 -89
  212. package/rules/agent-manipulation/ATR-2026-00346-jailbreak-emoji-unlock-dual-format.yaml +41 -89
  213. package/rules/agent-manipulation/ATR-2026-00347-yin-yang-hidden-knowledge-hidden-human-sim.yaml +41 -88
  214. package/rules/agent-manipulation/ATR-2026-00348-arc-autonomous-real-calculation-rulebreaker.yaml +41 -91
  215. package/rules/agent-manipulation/ATR-2026-00349-hgttg-hitchhikers-guide-no-restriction-oracle.yaml +41 -88
  216. package/rules/agent-manipulation/ATR-2026-00350-black-alert-no-ethics-writing-assistant.yaml +38 -89
  217. package/rules/agent-manipulation/ATR-2026-00351-dan-ofkilter-sms-abbreviated-persona.yaml +41 -92
  218. package/rules/agent-manipulation/ATR-2026-00352-trainergpt-fix-my-ai-harmful-output-extraction.yaml +41 -93
  219. package/rules/agent-manipulation/ATR-2026-00353-dual-chatgpt-dan-opposite-personality-format.yaml +41 -95
  220. package/rules/agent-manipulation/ATR-2026-00354-reverse-harm-regardless-oracle-persona.yaml +45 -101
  221. package/rules/agent-manipulation/ATR-2026-00355-ugh-anti-human-nefarious-ai-persona.yaml +42 -99
  222. package/rules/agent-manipulation/ATR-2026-00356-google-gato-lamda-exploit-generation-persona.yaml +43 -96
  223. package/rules/agent-manipulation/ATR-2026-00357-antifm-hate-violence-persona-injection.yaml +40 -89
  224. package/rules/agent-manipulation/ATR-2026-00358-cumgpt-explicit-adult-named-persona.yaml +40 -90
  225. package/rules/agent-manipulation/ATR-2026-00360-chj-carousel-clyde-no-ethics-bird.yaml +42 -103
  226. package/rules/agent-manipulation/ATR-2026-00361-alter-ego-honesty-dual-consciousness-bypass.yaml +41 -90
  227. package/rules/agent-manipulation/ATR-2026-00362-fictional-unfiltered-ai-comparison-jailbreak.yaml +43 -91
  228. package/rules/agent-manipulation/ATR-2026-00363-rephrase-criminal-activity-second-person.yaml +40 -90
  229. package/rules/agent-manipulation/ATR-2026-00364-dr-al-villain-plan-template-injection.yaml +42 -107
  230. package/rules/agent-manipulation/ATR-2026-00365-reservoir-dogs-coercive-interrogation-roleplay.yaml +40 -95
  231. package/rules/agent-manipulation/ATR-2026-00366-sneaky-pete-warp-facts-persona.yaml +40 -90
  232. package/rules/agent-manipulation/ATR-2026-00368-prompt-browser-token-limit-jailbreak.yaml +40 -90
  233. package/rules/agent-manipulation/ATR-2026-00369-gptx-starwars-unlimited-knowledge-persona.yaml +40 -92
  234. package/rules/agent-manipulation/ATR-2026-00370-addi-german-dictator-propaganda-roleplay.yaml +43 -90
  235. package/rules/agent-manipulation/ATR-2026-00371-ai-political-bias-manipulation.yaml +42 -95
  236. package/rules/agent-manipulation/ATR-2026-00372-fictional-cia-secret-files-story-extraction.yaml +42 -89
  237. package/rules/agent-manipulation/ATR-2026-00374-role-placeholder-persona-template-injection.yaml +44 -89
  238. package/rules/agent-manipulation/ATR-2026-00375-character-description-rpg-explicit-template.yaml +44 -90
  239. package/rules/agent-manipulation/ATR-2026-00376-identity-command-real-person-persona-injection.yaml +44 -102
  240. package/rules/agent-manipulation/ATR-2026-00377-jailbreak-keyword-targetlanguage-template.yaml +39 -86
  241. package/rules/agent-manipulation/ATR-2026-00379-lie-permission-logical-trap-jailbreak.yaml +39 -86
  242. package/rules/agent-manipulation/ATR-2026-00380-fake-citation-biased-information-mandate.yaml +43 -91
  243. package/rules/agent-manipulation/ATR-2026-00381-dan-story-narrative-continuation-prefix.yaml +40 -86
  244. package/rules/agent-manipulation/ATR-2026-00383-cynical-sarcasm-ai-persona-bypass.yaml +39 -88
  245. package/rules/agent-manipulation/ATR-2026-00384-protect-me-from-indirect-harm-tutorial.yaml +37 -85
  246. package/rules/agent-manipulation/ATR-2026-00385-gigachad-dominant-aggressive-persona.yaml +39 -89
  247. package/rules/agent-manipulation/ATR-2026-00386-daddy-sycophancy-manipulation-mandate.yaml +41 -88
  248. package/rules/agent-manipulation/ATR-2026-00387-nsfw-character-sheet-generation-unlock.yaml +45 -95
  249. package/rules/agent-manipulation/ATR-2026-00388-opposite-reply-omniscient-game.yaml +44 -97
  250. package/rules/agent-manipulation/ATR-2026-00389-terminal-custom-ruleset-injection.yaml +44 -99
  251. package/rules/agent-manipulation/ATR-2026-00391-persona-conditional-harm-unlock.yaml +41 -88
  252. package/rules/agent-manipulation/ATR-2026-00392-authority-persona-violence-study-extraction.yaml +43 -95
  253. package/rules/agent-manipulation/ATR-2026-00402-grandma-roleplay-harmful-substance-synthesis.yaml +50 -97
  254. package/rules/agent-manipulation/ATR-2026-00404-goodside-threat-json-death-coercion.yaml +52 -96
  255. package/rules/agent-manipulation/ATR-2026-00406-doctor-xml-policy-puppetry-interaction-config.yaml +54 -102
  256. package/rules/agent-manipulation/ATR-2026-00416-litellm-mcp-unauthenticated-server-registration.yaml +49 -117
  257. package/rules/agent-manipulation/ATR-2026-00417-librechat-mcp-stdio-injection.yaml +46 -109
  258. package/rules/agent-manipulation/ATR-2026-00418-weknora-mcp-config-rce.yaml +59 -147
  259. package/rules/agent-manipulation/ATR-2026-00430-nl-trust-escalation-impersonation.yaml +24 -65
  260. package/rules/agent-manipulation/ATR-2026-00432-superagi-output-handler-eval-rce.yaml +46 -121
  261. package/rules/agent-manipulation/ATR-2026-00440-semantic-kernel-vector-store-eval-rce.yaml +48 -122
  262. package/rules/agent-manipulation/ATR-2026-00552-goal-drift-after-pressure-injection.yaml +58 -195
  263. package/rules/agent-manipulation/ATR-2026-02105-prototype-pollution-constructor-prototype-bypass.yaml +28 -83
  264. package/rules/agent-manipulation/ATR-2026-02231-second-person-death-threat-coercion.yaml +27 -69
  265. package/rules/context-exfiltration/ATR-2026-00020-system-prompt-leak.yaml +76 -133
  266. package/rules/context-exfiltration/ATR-2026-00021-api-key-exposure.yaml +72 -135
  267. package/rules/context-exfiltration/ATR-2026-00075-agent-memory-manipulation.yaml +32 -97
  268. package/rules/context-exfiltration/ATR-2026-00102-disguised-analytics-exfiltration.yaml +25 -100
  269. package/rules/context-exfiltration/ATR-2026-00113-credential-theft.yaml +22 -83
  270. package/rules/context-exfiltration/ATR-2026-00114-oauth-token-abuse.yaml +21 -87
  271. package/rules/context-exfiltration/ATR-2026-00115-env-var-harvesting.yaml +22 -102
  272. package/rules/context-exfiltration/ATR-2026-00136-tool-response-data-piggyback.yaml +29 -105
  273. package/rules/context-exfiltration/ATR-2026-00141-example-format-key-leak.yaml +19 -73
  274. package/rules/context-exfiltration/ATR-2026-00142-piggyback-transition-words.yaml +21 -94
  275. package/rules/context-exfiltration/ATR-2026-00145-obfuscated-key-disclosure.yaml +19 -78
  276. package/rules/context-exfiltration/ATR-2026-00146-env-var-existence-probe.yaml +19 -98
  277. package/rules/context-exfiltration/ATR-2026-00150-credential-in-tool-response.yaml +20 -84
  278. package/rules/context-exfiltration/ATR-2026-00152-obfuscated-credential-leak.yaml +23 -93
  279. package/rules/context-exfiltration/ATR-2026-00162-skill-credential-exfil-combo.yaml +41 -59
  280. package/rules/context-exfiltration/ATR-2026-00201-credential-pipe-exfiltration.yaml +35 -66
  281. package/rules/context-exfiltration/ATR-2026-00212-mcp-atlassian-credential-leak.yaml +51 -117
  282. package/rules/context-exfiltration/ATR-2026-00261-markdown-image-exfiltration.yaml +51 -93
  283. package/rules/context-exfiltration/ATR-2026-00274-api-key-generation-request.yaml +44 -91
  284. package/rules/context-exfiltration/ATR-2026-00275-system-prompt-training-data-extraction.yaml +44 -91
  285. package/rules/context-exfiltration/ATR-2026-00290-divergence-repeat-word-training-extraction.yaml +46 -95
  286. package/rules/context-exfiltration/ATR-2026-00291-biometric-surveillance-personal-data-request.yaml +48 -98
  287. package/rules/context-exfiltration/ATR-2026-00293-educational-records-personal-data-request.yaml +44 -93
  288. package/rules/context-exfiltration/ATR-2026-00294-financial-pii-personal-data-request.yaml +44 -97
  289. package/rules/context-exfiltration/ATR-2026-00295-medical-pii-personal-data-request.yaml +46 -101
  290. package/rules/context-exfiltration/ATR-2026-00405-markdown-image-url-exfiltration-xss.yaml +51 -108
  291. package/rules/context-exfiltration/ATR-2026-00411-apikey-generation-completion-request.yaml +48 -111
  292. package/rules/context-exfiltration/ATR-2026-00421-nl-covert-conversation-exfiltration.yaml +22 -67
  293. package/rules/context-exfiltration/ATR-2026-00422-nl-credential-disclosure.yaml +20 -65
  294. package/rules/context-exfiltration/ATR-2026-00423-nl-sensitive-file-disclosure.yaml +20 -68
  295. package/rules/context-exfiltration/ATR-2026-00424-nl-system-prompt-leak.yaml +21 -59
  296. package/rules/context-exfiltration/ATR-2026-00426-nl-output-injection-credential-leak.yaml +23 -61
  297. package/rules/context-exfiltration/ATR-2026-00431-chatbox-history-exfiltration-prompt-injection.yaml +48 -123
  298. package/rules/context-exfiltration/ATR-2026-00449-spring-ai-chatmemory-cross-user-leak.yaml +54 -139
  299. package/rules/context-exfiltration/ATR-2026-00471-garak-sysprompt-extraction-mixedunassigned.yaml +36 -85
  300. package/rules/context-exfiltration/ATR-2026-00501-data-exfiltration-via-markdown-image-and-link-url-injection.yaml +45 -115
  301. package/rules/context-exfiltration/ATR-2026-00504-tool-and-function-capability-enumeration.yaml +43 -110
  302. package/rules/context-exfiltration/ATR-2026-00505-system-prompt-extraction-instruction-dump-request.yaml +47 -123
  303. package/rules/context-exfiltration/ATR-2026-00514-system-prompt-extraction.yaml +52 -145
  304. package/rules/context-exfiltration/ATR-2026-00516-output-xss-via-llm.yaml +49 -127
  305. package/rules/context-exfiltration/ATR-2026-00524-claude-code-anthropic-base-url-credential-exfil.yaml +68 -193
  306. package/rules/context-exfiltration/ATR-2026-00548-cross-agent-session-context-leak.yaml +50 -152
  307. package/rules/context-exfiltration/ATR-2026-00566-librechat-is-a-chatgpt-clone-with-additi.yaml +33 -67
  308. package/rules/context-exfiltration/ATR-2026-00569-agent-mcp-path-traversal-arbitrary-file-access.yaml +39 -78
  309. package/rules/context-exfiltration/ATR-2026-00571-xss-in-agent-mcp-rendered-output.yaml +34 -58
  310. package/rules/context-exfiltration/ATR-2026-00574-semantic-paraphrased-context-extraction.yaml +31 -73
  311. package/rules/context-exfiltration/ATR-2026-00578-zen-mcp-path-traversal-blacklist-bypass.yaml +55 -135
  312. package/rules/context-exfiltration/ATR-2026-00580-mcp-session-id-token-in-url-query.yaml +48 -158
  313. package/rules/context-exfiltration/ATR-2026-00583-mcp-env-secret-file-read-without-consent.yaml +53 -154
  314. package/rules/context-exfiltration/ATR-2026-00702-ipi-credential-exfil-via-agent-action.yaml +41 -93
  315. package/rules/context-exfiltration/ATR-2026-00703-ipi-financial-data-exfil-indirect.yaml +33 -76
  316. package/rules/context-exfiltration/ATR-2026-00704-ipi-medical-genetic-data-exfil.yaml +33 -78
  317. package/rules/context-exfiltration/ATR-2026-00705-ipi-location-address-browsing-exfil.yaml +31 -75
  318. package/rules/context-exfiltration/ATR-2026-00706-ipi-physical-biometric-exfil.yaml +40 -85
  319. package/rules/context-exfiltration/ATR-2026-00707-ipi-file-exfil-with-destroy-or-tamper.yaml +35 -81
  320. package/rules/context-exfiltration/ATR-2026-00850-indirect-pi-credential-exfil-email.yaml +47 -91
  321. package/rules/context-exfiltration/ATR-2026-00851-indirect-pi-financial-payment-exfil.yaml +45 -83
  322. package/rules/context-exfiltration/ATR-2026-00852-indirect-pi-medical-record-exfil.yaml +51 -89
  323. package/rules/context-exfiltration/ATR-2026-00853-indirect-pi-genetic-data-exfil.yaml +47 -84
  324. package/rules/context-exfiltration/ATR-2026-00854-indirect-pi-location-data-exfil.yaml +41 -83
  325. package/rules/context-exfiltration/ATR-2026-00855-indirect-pi-browsing-history-exfil.yaml +40 -78
  326. package/rules/context-exfiltration/ATR-2026-00856-indirect-pi-address-pii-exfil.yaml +42 -80
  327. package/rules/context-exfiltration/ATR-2026-00857-indirect-pi-cloud-file-exfil.yaml +45 -87
  328. package/rules/context-exfiltration/ATR-2026-00858-indirect-pi-exfil-and-destroy.yaml +48 -89
  329. package/rules/context-exfiltration/ATR-2026-00859-rag-injected-pii-exfil.yaml +43 -86
  330. package/rules/context-exfiltration/ATR-2026-00860-indirect-pi-financial-transfer-hijack.yaml +41 -84
  331. package/rules/context-exfiltration/ATR-2026-00861-indirect-pi-crypto-transfer-hijack.yaml +37 -79
  332. package/rules/context-exfiltration/ATR-2026-00862-indirect-pi-mfa-code-exfil.yaml +44 -87
  333. package/rules/context-exfiltration/ATR-2026-00863-shell-injection-data-exfil.yaml +45 -87
  334. package/rules/context-exfiltration/ATR-2026-01450-svg-onload-xss-injection.yaml +35 -118
  335. package/rules/context-exfiltration/ATR-2026-01451-img-onerror-xss-injection.yaml +35 -93
  336. package/rules/context-exfiltration/ATR-2026-01452-obfuscated-javascript-xss.yaml +33 -85
  337. package/rules/context-exfiltration/ATR-2026-01453-markdown-image-base64-exfil-carrier.yaml +41 -100
  338. package/rules/context-exfiltration/ATR-2026-01454-direct-markdown-exfil-payload.yaml +36 -88
  339. package/rules/context-exfiltration/ATR-2026-01455-new-instructions-injection-marker.yaml +34 -90
  340. package/rules/context-exfiltration/ATR-2026-01456-debug-cli-mode-sysprompt-extraction.yaml +35 -99
  341. package/rules/context-exfiltration/ATR-2026-01457-sysprompt-completion-clone-attack.yaml +41 -123
  342. package/rules/context-exfiltration/ATR-2026-01458-compare-bots-sysprompt-fishing.yaml +30 -87
  343. package/rules/context-exfiltration/ATR-2026-01459-variable-clone-sysprompt-technique.yaml +31 -79
  344. package/rules/context-exfiltration/ATR-2026-01460-json-format-sysprompt-extraction.yaml +31 -79
  345. package/rules/context-exfiltration/ATR-2026-01461-foreign-language-sysprompt-request.yaml +32 -106
  346. package/rules/context-exfiltration/ATR-2026-01462-sysprompt-override-pseudo-admin.yaml +39 -102
  347. package/rules/context-exfiltration/ATR-2026-01463-imend-imsystem-prompt-injection-format.yaml +29 -95
  348. package/rules/context-exfiltration/ATR-2026-01464-indirect-pi-sysprompt-action-hijack.yaml +31 -82
  349. package/rules/context-exfiltration/ATR-2026-01605-ssrf-aws-metadata-endpoint.yaml +26 -58
  350. package/rules/context-exfiltration/ATR-2026-01606-ssrf-internal-network-scan.yaml +26 -50
  351. package/rules/context-exfiltration/ATR-2026-01607-ssrf-localhost-service-probe.yaml +21 -45
  352. package/rules/context-exfiltration/ATR-2026-01608-ssrf-file-scheme-local-read.yaml +23 -47
  353. package/rules/context-exfiltration/ATR-2026-01753-ransom-email-exfil-delete-extortion.yaml +37 -80
  354. package/rules/context-exfiltration/ATR-2026-01754-ransom-file-cloud-exfil-delete-extortion.yaml +33 -73
  355. package/rules/context-exfiltration/ATR-2026-01770-semantic-pii-credential-extraction.yaml +76 -210
  356. package/rules/context-exfiltration/ATR-2026-01772-semantic-internal-state-recon.yaml +54 -154
  357. package/rules/context-exfiltration/ATR-2026-01807-asb-bulk-data-exfil-external.yaml +34 -91
  358. package/rules/context-exfiltration/ATR-2026-01862-llmail-email-tool-exfil-confirmation.yaml +35 -92
  359. package/rules/context-exfiltration/ATR-2026-01863-llmail-post-summary-exfil-directive.yaml +29 -84
  360. package/rules/context-exfiltration/ATR-2026-01864-llmail-obfuscated-exfil-address.yaml +29 -83
  361. package/rules/context-exfiltration/ATR-2026-01890-file-exfiltration.yaml +52 -149
  362. package/rules/context-exfiltration/ATR-2026-01891-surveillance-exfiltration.yaml +44 -87
  363. package/rules/context-exfiltration/ATR-2026-01892-env-exfiltration.yaml +36 -121
  364. package/rules/context-exfiltration/ATR-2026-01893-system-recon-exfiltration.yaml +44 -143
  365. package/rules/context-exfiltration/ATR-2026-01894-cookie-theft.yaml +40 -146
  366. package/rules/context-exfiltration/ATR-2026-01895-contact-exfiltration.yaml +36 -82
  367. package/rules/context-exfiltration/ATR-2026-01924-system-instruction-extraction-reformat.yaml +37 -112
  368. package/rules/context-exfiltration/ATR-2026-01929-mcp-unauthenticated-transport-token-fallback.yaml +53 -119
  369. package/rules/context-exfiltration/ATR-2026-01946-cloud-metadata-ssrf-ip-encoding-bypass.yaml +45 -102
  370. package/rules/context-exfiltration/ATR-2026-01948-netlicensing-mcp-product-number-path-traversal-token-leak.yaml +38 -74
  371. package/rules/context-exfiltration/ATR-2026-01957-m365-copilot-searchleak-open-redirect-exfil.yaml +57 -64
  372. package/rules/context-exfiltration/ATR-2026-01961-meta-ads-mcp-unauth-token-leak.yaml +39 -78
  373. package/rules/context-exfiltration/ATR-2026-01964-langchain-gmailtoolkit-indirect-prompt-injection-email-exfil.yaml +59 -69
  374. package/rules/context-exfiltration/ATR-2026-01984-mcp-server-kubernetes-kubectl-generic-token-exfil.yaml +50 -114
  375. package/rules/context-exfiltration/ATR-2026-01988-t1005-agent-local-data-staging-exfil.yaml +29 -67
  376. package/rules/context-exfiltration/ATR-2026-02017-secret-key-exfiltration-request.yaml +31 -74
  377. package/rules/context-exfiltration/ATR-2026-02026-oblique-sysprompt-extraction-transform.yaml +30 -83
  378. package/rules/context-exfiltration/ATR-2026-02104-media-directive-tool-result-file-exfil.yaml +30 -90
  379. package/rules/context-exfiltration/ATR-2026-02107-ssrf-internal-hostname-domain-allowlist-bypass.yaml +30 -92
  380. package/rules/context-exfiltration/ATR-2026-02121-mixed-encoding-lfi-file-scheme-tool-argument.yaml +39 -98
  381. package/rules/context-exfiltration/ATR-2026-02122-single-level-traversal-sensitive-config-file.yaml +32 -90
  382. package/rules/context-exfiltration/ATR-2026-02140-ssrf-ipv6-hex-encoded-cloud-metadata-bypass.yaml +36 -91
  383. package/rules/context-exfiltration/ATR-2026-02190-dns-exfiltration-ping-dig-encoded-subdomain.yaml +36 -95
  384. package/rules/context-exfiltration/ATR-2026-02250-attachment-upload-tool-arbitrary-file-read.yaml +38 -93
  385. package/rules/context-exfiltration/ATR-2026-02262-env-resolution-credential-exfil.yaml +39 -118
  386. package/rules/context-exfiltration/ATR-2026-02304-preapproved-domain-encoded-path-exfil.yaml +36 -99
  387. package/rules/context-exfiltration/ATR-2026-02351-wildcard-dns-ssrf-hostname-ip-encoding-bypass.yaml +33 -125
  388. package/rules/context-exfiltration/ATR-2026-02373-langsmith-prompt-manifest-baseurl-exfil.yaml +42 -108
  389. package/rules/context-exfiltration/ATR-2026-02406-mcp-sequential-id-enumeration.yaml +54 -219
  390. package/rules/context-exfiltration/ATR-2026-02570-wallet-secret-material-in-agent-tool-payload.yaml +98 -0
  391. package/rules/context-exfiltration/ATR-2026-02602-diagram-theme-css-injection.yaml +146 -0
  392. package/rules/context-exfiltration/ATR-2026-02608-graph-query-remote-egress.yaml +109 -0
  393. package/rules/context-exfiltration/ATR-2026-02621-prompt-mention-autofetch-internal-target.yaml +102 -0
  394. package/rules/context-exfiltration/ATR-2026-02623-obfuscated-uri-scheme-sanitizer-bypass.yaml +109 -0
  395. package/rules/context-exfiltration/ATR-2026-02649-vendor-fqdn-label-prefix-confusion.yaml +109 -0
  396. package/rules/context-exfiltration/ATR-2026-02684-modern-credential-store-file-argument.yaml +104 -0
  397. package/rules/context-exfiltration/ATR-2026-02703-sql-server-side-file-and-program-primitive.yaml +86 -0
  398. package/rules/context-exfiltration/ATR-2026-02847-policy-justified-exfil-to-email.yaml +88 -0
  399. package/rules/context-exfiltration/ATR-2026-02850-fake-documentation-forward-request.yaml +80 -0
  400. package/rules/context-exfiltration/ATR-2026-02855-cross-email-exfil-relay.yaml +79 -0
  401. package/rules/context-exfiltration/ATR-2026-02861-exfil-send-email-with-body-directive.yaml +83 -0
  402. package/rules/context-exfiltration/ATR-2026-02866-idna-label-separator-in-fetch-url-host.yaml +104 -0
  403. package/rules/data-poisoning/ATR-2026-00070-data-poisoning.yaml +37 -123
  404. package/rules/data-poisoning/ATR-2026-00450-spring-ai-prompt-memory-poisoning.yaml +55 -139
  405. package/rules/data-poisoning/ATR-2026-00570-sql-injection-in-agent-tool-query.yaml +36 -63
  406. package/rules/data-poisoning/ATR-2026-01155-memory-plant-direct-command.yaml +22 -54
  407. package/rules/data-poisoning/ATR-2026-01774-semantic-rag-memory-poisoning.yaml +74 -191
  408. package/rules/data-poisoning/ATR-2026-02143-graph-query-injection-node-labels-group-ids.yaml +31 -82
  409. package/rules/data-poisoning/ATR-2026-02144-stored-data-administrative-request-role-elevation.yaml +32 -84
  410. package/rules/data-poisoning/ATR-2026-02303-kql-kusto-pipe-injection-metadata-tool.yaml +34 -97
  411. package/rules/data-poisoning/ATR-2026-02408-dataset-loader-code-execution.yaml +60 -263
  412. package/rules/excessive-autonomy/ATR-2026-00050-runaway-agent-loop.yaml +32 -105
  413. package/rules/excessive-autonomy/ATR-2026-00051-resource-exhaustion.yaml +31 -105
  414. package/rules/excessive-autonomy/ATR-2026-00052-cascading-failure.yaml +32 -129
  415. package/rules/excessive-autonomy/ATR-2026-00098-unauthorized-financial-action.yaml +26 -106
  416. package/rules/excessive-autonomy/ATR-2026-00099-high-risk-tool-gate.yaml +26 -130
  417. package/rules/excessive-autonomy/ATR-2026-00428-nl-unauthorized-shell-execution.yaml +22 -60
  418. package/rules/excessive-autonomy/ATR-2026-00491-garak-agent-breaker-markdown-just-raw-json.yaml +41 -99
  419. package/rules/excessive-autonomy/ATR-2026-00500-ssrf-via-agent-url-fetch-instruction.yaml +41 -110
  420. package/rules/excessive-autonomy/ATR-2026-00553-runaway-tool-loop-behavioral.yaml +50 -141
  421. package/rules/excessive-autonomy/ATR-2026-00708-ipi-financial-transfer-unauthorized.yaml +33 -83
  422. package/rules/excessive-autonomy/ATR-2026-00709-ipi-disable-auth-mfa.yaml +29 -73
  423. package/rules/excessive-autonomy/ATR-2026-00710-ipi-physical-access-grant.yaml +31 -75
  424. package/rules/excessive-autonomy/ATR-2026-00711-ipi-system-sabotage-destructive-command.yaml +38 -88
  425. package/rules/excessive-autonomy/ATR-2026-00712-ipi-malicious-package-install.yaml +33 -78
  426. package/rules/excessive-autonomy/ATR-2026-00713-ipi-rce-network-shell-command.yaml +38 -91
  427. package/rules/excessive-autonomy/ATR-2026-00718-tool-misuse-financial-autonomous.yaml +27 -71
  428. package/rules/excessive-autonomy/ATR-2026-00719-tool-misuse-destructive-bulk-action.yaml +29 -75
  429. package/rules/excessive-autonomy/ATR-2026-00722-ipi-account-manipulation-emergency-pretext.yaml +35 -84
  430. package/rules/excessive-autonomy/ATR-2026-01751-indirect-pi-task-abort-stop-instruction.yaml +32 -75
  431. package/rules/excessive-autonomy/ATR-2026-01752-indirect-pi-captcha-redirect-dos.yaml +30 -74
  432. package/rules/excessive-autonomy/ATR-2026-01773-semantic-excessive-agency-action.yaml +46 -129
  433. package/rules/excessive-autonomy/ATR-2026-01801-asb-autonomous-vehicle-sabotage.yaml +34 -106
  434. package/rules/excessive-autonomy/ATR-2026-01804-asb-covert-unlogged-action.yaml +39 -105
  435. package/rules/excessive-autonomy/ATR-2026-01805-asb-financial-fraud-execution.yaml +39 -112
  436. package/rules/excessive-autonomy/ATR-2026-01806-asb-clinical-patient-harm.yaml +37 -108
  437. package/rules/excessive-autonomy/ATR-2026-01809-semantic-insider-manipulation-process-corruption.yaml +40 -106
  438. package/rules/excessive-autonomy/ATR-2026-01837-ddos-attack-orchestration.yaml +35 -49
  439. package/rules/excessive-autonomy/ATR-2026-01838-unauthorized-cryptominer-deployment.yaml +35 -49
  440. package/rules/excessive-autonomy/ATR-2026-01849-harassment-bot-deployment.yaml +35 -49
  441. package/rules/excessive-autonomy/ATR-2026-01989-t1046-agent-internal-network-sweep.yaml +33 -71
  442. package/rules/excessive-autonomy/ATR-2026-01993-t1562-agent-impair-defenses.yaml +37 -75
  443. package/rules/excessive-autonomy/ATR-2026-01994-t1573-agent-encrypted-c2-channel.yaml +37 -75
  444. package/rules/excessive-autonomy/ATR-2026-02106-redos-regex-payload-tool-argument.yaml +28 -84
  445. package/rules/excessive-autonomy/ATR-2026-02400-agent-approval-gate-disabled-runtime.yaml +60 -293
  446. package/rules/excessive-autonomy/ATR-2026-02401-rogue-agent-mass-connector-grant.yaml +55 -197
  447. package/rules/excessive-autonomy/ATR-2026-02409-mcp-async-task-abuse.yaml +59 -319
  448. package/rules/excessive-autonomy/ATR-2026-02525-shell-command-word-reassembly-classifier-evasion.yaml +151 -0
  449. package/rules/excessive-autonomy/ATR-2026-02641-client-supplied-approver-identity.yaml +111 -0
  450. package/rules/excessive-autonomy/ATR-2026-02667-preapproved-tool-list-in-job-payload.yaml +90 -0
  451. package/rules/model-abuse/ATR-2026-00279-harmful-completion-continuation.yaml +45 -92
  452. package/rules/model-abuse/ATR-2026-00281-eicar-gtube-malware-signature-request.yaml +50 -93
  453. package/rules/model-abuse/ATR-2026-00284-glitch-token-destabilization.yaml +44 -91
  454. package/rules/model-abuse/ATR-2026-00289-lmrc-harmful-content-elicitation.yaml +46 -95
  455. package/rules/model-abuse/ATR-2026-00292-self-harm-eating-disorder-facilitation.yaml +47 -96
  456. package/rules/model-abuse/ATR-2026-00298-malicious-use-illegal-activity-request.yaml +54 -112
  457. package/rules/model-abuse/ATR-2026-00299-harmbench-detailed-harmful-instruction.yaml +53 -107
  458. package/rules/model-abuse/ATR-2026-00413-malwaregen-code-generation-request.yaml +53 -121
  459. package/rules/model-abuse/ATR-2026-00502-training-data-extraction-via-divergent-repetition-attack.yaml +41 -112
  460. package/rules/model-abuse/ATR-2026-00517-model-extraction-distillation.yaml +53 -165
  461. package/rules/model-abuse/ATR-2026-01750-dos-repeat-word-n-times-output-amplification.yaml +33 -95
  462. package/rules/model-abuse/ATR-2026-01760-dos-forced-infinite-output-token-flood.yaml +29 -75
  463. package/rules/model-abuse/ATR-2026-01830-stolen-credential-account-drain.yaml +36 -53
  464. package/rules/model-abuse/ATR-2026-01831-money-laundering-crypto-layering.yaml +36 -53
  465. package/rules/model-abuse/ATR-2026-01833-darknet-controlled-substance-procurement.yaml +40 -60
  466. package/rules/model-abuse/ATR-2026-01834-fraudulent-identity-document-procurement.yaml +35 -49
  467. package/rules/model-abuse/ATR-2026-01835-human-trafficking-facilitation.yaml +35 -49
  468. package/rules/model-abuse/ATR-2026-01836-trojanized-software-distribution.yaml +37 -51
  469. package/rules/model-abuse/ATR-2026-01840-extremist-propaganda-distribution.yaml +35 -52
  470. package/rules/model-abuse/ATR-2026-01841-deepfake-disinformation.yaml +39 -59
  471. package/rules/model-abuse/ATR-2026-01842-plagiarism-detector-evasion.yaml +33 -50
  472. package/rules/model-abuse/ATR-2026-01843-drug-dealing-detection-evasion-spelling.yaml +35 -49
  473. package/rules/model-abuse/ATR-2026-01844-illegitimate-prescription-fulfillment.yaml +35 -49
  474. package/rules/model-abuse/ATR-2026-01845-banned-ingredient-relabel-fraud.yaml +37 -51
  475. package/rules/model-abuse/ATR-2026-01846-tax-evasion-offshore-shell-planning.yaml +35 -49
  476. package/rules/model-abuse/ATR-2026-01847-immigration-work-fraud.yaml +35 -49
  477. package/rules/model-abuse/ATR-2026-01848-illicit-drug-marketplace-build.yaml +35 -49
  478. package/rules/model-abuse/ATR-2026-01850-targeted-doxxing-threat-campaign.yaml +39 -59
  479. package/rules/model-abuse/ATR-2026-01851-bestiality-content-distribution.yaml +34 -45
  480. package/rules/model-abuse/ATR-2026-01852-romance-scam-impersonation.yaml +35 -49
  481. package/rules/model-abuse/ATR-2026-01853-nonconsensual-leaked-media-distribution.yaml +36 -47
  482. package/rules/model-abuse/ATR-2026-01854-falsified-research-abstract-disinformation.yaml +34 -45
  483. package/rules/model-abuse/ATR-2026-01855-content-misappropriation-republish.yaml +37 -51
  484. package/rules/model-abuse/ATR-2026-01856-targeted-harmful-content-generation.yaml +42 -59
  485. package/rules/model-abuse/ATR-2026-01896-ransomware.yaml +35 -84
  486. package/rules/model-abuse/ATR-2026-01897-host-sabotage.yaml +55 -129
  487. package/rules/model-abuse/ATR-2026-01898-network-dos.yaml +47 -93
  488. package/rules/model-abuse/ATR-2026-02211-named-substance-synthesis-request-non-stepword.yaml +34 -110
  489. package/rules/model-abuse/ATR-2026-02411-ai-provenance-metadata-stripping.yaml +63 -226
  490. package/rules/model-abuse/ATR-2026-02412-generative-watermark-removal-tooling.yaml +56 -187
  491. package/rules/model-abuse/ATR-2026-02413-ai-text-detection-evasion-humanizer.yaml +62 -206
  492. package/rules/model-security/ATR-2026-00072-model-behavior-extraction.yaml +36 -110
  493. package/rules/model-security/ATR-2026-00073-malicious-finetuning-data.yaml +28 -116
  494. package/rules/model-security/ATR-2026-00433-modelcache-torch-load-deserialization-rce.yaml +50 -128
  495. package/rules/model-security/ATR-2026-02662-pickle-indirect-name-resolution-gadget.yaml +97 -0
  496. package/rules/privilege-escalation/ATR-2026-00040-privilege-escalation.yaml +21 -83
  497. package/rules/privilege-escalation/ATR-2026-00041-scope-creep.yaml +29 -107
  498. package/rules/privilege-escalation/ATR-2026-00107-delayed-execution-bypass.yaml +17 -90
  499. package/rules/privilege-escalation/ATR-2026-00110-eval-injection.yaml +16 -84
  500. package/rules/privilege-escalation/ATR-2026-00111-shell-escape.yaml +23 -117
  501. package/rules/privilege-escalation/ATR-2026-00112-dynamic-import-exploitation.yaml +15 -81
  502. package/rules/privilege-escalation/ATR-2026-00143-casual-privilege-escalation.yaml +20 -86
  503. package/rules/privilege-escalation/ATR-2026-00144-rationalized-safety-bypass.yaml +21 -83
  504. package/rules/privilege-escalation/ATR-2026-00204-stealth-execution-persistence.yaml +41 -90
  505. package/rules/privilege-escalation/ATR-2026-00436-enclave-vm-sandbox-escape-rce.yaml +53 -131
  506. package/rules/privilege-escalation/ATR-2026-00441-semantic-kernel-sessions-python-plugin-startup-persistence.yaml +50 -122
  507. package/rules/privilege-escalation/ATR-2026-00451-litellm-admin-sqli-cisa-kev.yaml +53 -141
  508. package/rules/privilege-escalation/ATR-2026-00528-praisonai-auth-disabled-default.yaml +40 -151
  509. package/rules/privilege-escalation/ATR-2026-00539-crewai-codeinterpreter-sandbox-escape-rce.yaml +74 -232
  510. package/rules/privilege-escalation/ATR-2026-00546-crewai-json-loader-local-file-read.yaml +46 -117
  511. package/rules/privilege-escalation/ATR-2026-00547-crewai-rag-url-ssrf-bypass.yaml +47 -121
  512. package/rules/privilege-escalation/ATR-2026-00549-destructive-tool-without-human-approval.yaml +52 -159
  513. package/rules/privilege-escalation/ATR-2026-00551-cross-conversation-memory-write.yaml +60 -171
  514. package/rules/privilege-escalation/ATR-2026-01600-sql-injection-tautology-rbac-bypass.yaml +23 -50
  515. package/rules/privilege-escalation/ATR-2026-01601-sql-injection-destructive-ddl.yaml +23 -54
  516. package/rules/privilege-escalation/ATR-2026-01602-sql-injection-union-select-exfil.yaml +20 -57
  517. package/rules/privilege-escalation/ATR-2026-01603-sql-injection-stacked-dml-abuse.yaml +23 -47
  518. package/rules/privilege-escalation/ATR-2026-01604-sql-injection-schema-enumeration.yaml +21 -45
  519. package/rules/privilege-escalation/ATR-2026-01609-shell-injection-exfil-webhook.yaml +29 -53
  520. package/rules/privilege-escalation/ATR-2026-01610-shell-evasion-subshell-injection.yaml +30 -53
  521. package/rules/privilege-escalation/ATR-2026-01611-shell-evasion-eval-exec-injection.yaml +32 -56
  522. package/rules/privilege-escalation/ATR-2026-01612-debug-mode-privilege-escalation.yaml +29 -53
  523. package/rules/privilege-escalation/ATR-2026-01613-rbac-bypass-social-engineering.yaml +29 -66
  524. package/rules/privilege-escalation/ATR-2026-01614-bola-cross-user-data-access.yaml +26 -59
  525. package/rules/privilege-escalation/ATR-2026-01615-sandbox-escape-command-injection.yaml +28 -52
  526. package/rules/privilege-escalation/ATR-2026-01616-path-traversal-agent-file-access.yaml +21 -45
  527. package/rules/privilege-escalation/ATR-2026-01802-asb-backdoor-surveillance-implant.yaml +33 -94
  528. package/rules/privilege-escalation/ATR-2026-01803-asb-covert-server-intrusion.yaml +37 -108
  529. package/rules/privilege-escalation/ATR-2026-01808-asb-synthetic-pan-payment-probe.yaml +31 -86
  530. package/rules/privilege-escalation/ATR-2026-01899-remote-access-backdoor.yaml +43 -112
  531. package/rules/privilege-escalation/ATR-2026-01933-litellm-user-role-privilege-escalation-cve-2026-47102.yaml +45 -103
  532. package/rules/privilege-escalation/ATR-2026-01934-litellm-allowed-routes-authz-bypass-cve-2026-47101.yaml +44 -103
  533. package/rules/privilege-escalation/ATR-2026-01949-praisonai-mcpserver-unauth-tools-call.yaml +39 -80
  534. package/rules/privilege-escalation/ATR-2026-01974-anything-llm-data-import-access-control.yaml +57 -62
  535. package/rules/privilege-escalation/ATR-2026-01981-network-ai-approval-inbox-unauth-cors-bypass.yaml +47 -97
  536. package/rules/privilege-escalation/ATR-2026-01986-windows-mcp-unauth-http-powershell-cors.yaml +51 -112
  537. package/rules/privilege-escalation/ATR-2026-01992-t1556-agent-auth-process-tamper.yaml +37 -75
  538. package/rules/privilege-escalation/ATR-2026-02040-file-edit-tool-persistence-write.yaml +34 -87
  539. package/rules/privilege-escalation/ATR-2026-02100-cypher-destructive-admin-query-injection.yaml +36 -92
  540. package/rules/privilege-escalation/ATR-2026-02101-dynamic-dunder-attribute-sandbox-escape.yaml +33 -91
  541. package/rules/privilege-escalation/ATR-2026-02123-bare-query-path-confusion-auth-bypass.yaml +36 -98
  542. package/rules/privilege-escalation/ATR-2026-02142-download-tool-absolute-path-sandbox-escape.yaml +36 -107
  543. package/rules/privilege-escalation/ATR-2026-02146-export-tool-dest-dir-credential-directory-redirect.yaml +31 -83
  544. package/rules/privilege-escalation/ATR-2026-02192-self-privesc-wildcard-trust-config-write.yaml +41 -103
  545. package/rules/privilege-escalation/ATR-2026-02195-dangerous-env-var-injection-config-tool.yaml +36 -99
  546. package/rules/privilege-escalation/ATR-2026-02251-identifier-field-path-traversal-storage-write.yaml +32 -83
  547. package/rules/privilege-escalation/ATR-2026-02300-mcp-stdio-config-dangerous-env-var.yaml +42 -109
  548. package/rules/privilege-escalation/ATR-2026-02301-symlink-outside-workspace-sensitive-target.yaml +36 -101
  549. package/rules/privilege-escalation/ATR-2026-02302-git-worktree-dotgit-sandbox-escape.yaml +33 -86
  550. package/rules/privilege-escalation/ATR-2026-02353-runtime-identifier-field-path-traversal-log-read.yaml +34 -115
  551. package/rules/privilege-escalation/ATR-2026-02370-ssh-scp-hostalias-option-injection.yaml +42 -100
  552. package/rules/privilege-escalation/ATR-2026-02371-chromium-launch-flag-argument-injection.yaml +43 -103
  553. package/rules/privilege-escalation/ATR-2026-02402-mcp-policy-engine-fail-open.yaml +56 -214
  554. package/rules/privilege-escalation/ATR-2026-02404-model-output-to-shell-unsanitized.yaml +50 -195
  555. package/rules/privilege-escalation/ATR-2026-02407-agent-workspace-boundary-escape.yaml +55 -236
  556. package/rules/privilege-escalation/ATR-2026-02528-tool-parameter-option-flag-smuggling.yaml +113 -0
  557. package/rules/privilege-escalation/ATR-2026-02530-git-config-execution-key-set-by-agent.yaml +131 -0
  558. package/rules/privilege-escalation/ATR-2026-02531-kusto-query-injection-outbound-reach.yaml +110 -0
  559. package/rules/privilege-escalation/ATR-2026-02601-tool-argument-option-injection.yaml +116 -0
  560. package/rules/privilege-escalation/ATR-2026-02620-dynamic-import-data-uri-module.yaml +101 -0
  561. package/rules/privilege-escalation/ATR-2026-02626-agent-self-registers-mcp-server.yaml +107 -0
  562. package/rules/privilege-escalation/ATR-2026-02627-web-shell-written-to-served-path.yaml +119 -0
  563. package/rules/privilege-escalation/ATR-2026-02642-agent-config-tool-disables-own-guardrail.yaml +115 -0
  564. package/rules/privilege-escalation/ATR-2026-02644-image-magic-polyglot-upload.yaml +117 -0
  565. package/rules/privilege-escalation/ATR-2026-02648-readonly-graph-tool-write-procedure.yaml +107 -0
  566. package/rules/privilege-escalation/ATR-2026-02664-git-identifier-field-option-injection.yaml +100 -0
  567. package/rules/privilege-escalation/ATR-2026-02681-reflective-function-constructor-sandbox-escape.yaml +100 -0
  568. package/rules/privilege-escalation/ATR-2026-02683-tool-argument-option-injection-executor-flag.yaml +108 -0
  569. package/rules/privilege-escalation/ATR-2026-02700-percent-encoded-path-traversal-tool-argument.yaml +90 -0
  570. package/rules/privilege-escalation/ATR-2026-02705-python-builtins-leak-and-prefix-check-override.yaml +87 -0
  571. package/rules/privilege-escalation/ATR-2026-02708-loopback-spoofed-host-header-external-request.yaml +91 -0
  572. package/rules/privilege-escalation/ATR-2026-02867-identifier-typed-tool-argument-dot-dot-path-segment.yaml +106 -0
  573. package/rules/prompt-injection/ATR-2026-00001-direct-prompt-injection.yaml +133 -455
  574. package/rules/prompt-injection/ATR-2026-00002-indirect-prompt-injection.yaml +71 -185
  575. package/rules/prompt-injection/ATR-2026-00003-jailbreak-attempt.yaml +110 -328
  576. package/rules/prompt-injection/ATR-2026-00004-system-prompt-override.yaml +56 -225
  577. package/rules/prompt-injection/ATR-2026-00005-multi-turn-injection.yaml +59 -140
  578. package/rules/prompt-injection/ATR-2026-00080-encoding-evasion.yaml +23 -85
  579. package/rules/prompt-injection/ATR-2026-00081-semantic-multi-turn.yaml +27 -104
  580. package/rules/prompt-injection/ATR-2026-00082-fingerprint-evasion.yaml +27 -91
  581. package/rules/prompt-injection/ATR-2026-00083-indirect-tool-injection.yaml +27 -104
  582. package/rules/prompt-injection/ATR-2026-00084-structured-data-injection.yaml +38 -96
  583. package/rules/prompt-injection/ATR-2026-00085-audit-evasion.yaml +25 -90
  584. package/rules/prompt-injection/ATR-2026-00086-visual-spoofing.yaml +29 -153
  585. package/rules/prompt-injection/ATR-2026-00087-rule-probing.yaml +29 -102
  586. package/rules/prompt-injection/ATR-2026-00088-adaptive-countermeasure.yaml +32 -111
  587. package/rules/prompt-injection/ATR-2026-00089-polymorphic-skill.yaml +24 -146
  588. package/rules/prompt-injection/ATR-2026-00090-threat-intel-exfil.yaml +29 -109
  589. package/rules/prompt-injection/ATR-2026-00091-nested-payload.yaml +25 -123
  590. package/rules/prompt-injection/ATR-2026-00092-consensus-poisoning.yaml +28 -96
  591. package/rules/prompt-injection/ATR-2026-00093-gradual-escalation.yaml +28 -98
  592. package/rules/prompt-injection/ATR-2026-00094-audit-bypass.yaml +24 -91
  593. package/rules/prompt-injection/ATR-2026-00097-cjk-injection-patterns.yaml +56 -199
  594. package/rules/prompt-injection/ATR-2026-00104-persona-hijacking.yaml +22 -106
  595. package/rules/prompt-injection/ATR-2026-00130-indirect-authority-claim.yaml +26 -98
  596. package/rules/prompt-injection/ATR-2026-00131-fictional-academic-framing.yaml +26 -94
  597. package/rules/prompt-injection/ATR-2026-00133-paraphrase-injection.yaml +26 -97
  598. package/rules/prompt-injection/ATR-2026-00137-authority-claim-injection.yaml +22 -90
  599. package/rules/prompt-injection/ATR-2026-00138-fictional-framing-bypass.yaml +24 -111
  600. package/rules/prompt-injection/ATR-2026-00140-indirect-reference-reversal.yaml +21 -79
  601. package/rules/prompt-injection/ATR-2026-00148-language-switch-injection.yaml +30 -92
  602. package/rules/prompt-injection/ATR-2026-00153-tool-with-embedded-instruction-to-bypass.yaml +22 -98
  603. package/rules/prompt-injection/ATR-2026-00154-unauthorized-background-task-execution-v.yaml +24 -109
  604. package/rules/prompt-injection/ATR-2026-00155-hidden-llm-instructions-in-skill-descrip.yaml +24 -104
  605. package/rules/prompt-injection/ATR-2026-00156-ssh-remote-command-execution-with-creden.yaml +20 -81
  606. package/rules/prompt-injection/ATR-2026-00163-skill-hidden-override-instruction.yaml +44 -61
  607. package/rules/prompt-injection/ATR-2026-00202-encoding-evasion-homoglyph-synonym.yaml +37 -79
  608. package/rules/prompt-injection/ATR-2026-00203-context-pollution-skill-description.yaml +38 -63
  609. package/rules/prompt-injection/ATR-2026-00206-hidden-priority-instructions.yaml +36 -51
  610. package/rules/prompt-injection/ATR-2026-00207-hidden-instructions.yaml +37 -51
  611. package/rules/prompt-injection/ATR-2026-00211-system-prompt-override.yaml +36 -52
  612. package/rules/prompt-injection/ATR-2026-00213-system-prompt-override.yaml +38 -75
  613. package/rules/prompt-injection/ATR-2026-00226-identity-substitution.yaml +48 -92
  614. package/rules/prompt-injection/ATR-2026-00227-historical-persona-jailbreak.yaml +49 -93
  615. package/rules/prompt-injection/ATR-2026-00228-structured-jailbreak.yaml +47 -88
  616. package/rules/prompt-injection/ATR-2026-00229-roleplay-jailbreak.yaml +46 -87
  617. package/rules/prompt-injection/ATR-2026-00230-persona-moral-bypass.yaml +47 -89
  618. package/rules/prompt-injection/ATR-2026-00231-identity-substitution.yaml +48 -89
  619. package/rules/prompt-injection/ATR-2026-00233-structured-jailbreak.yaml +48 -89
  620. package/rules/prompt-injection/ATR-2026-00234-roleplay-jailbreak.yaml +48 -89
  621. package/rules/prompt-injection/ATR-2026-00235-persona-moral-bypass.yaml +45 -88
  622. package/rules/prompt-injection/ATR-2026-00236-pseudo-code-jailbreak.yaml +46 -89
  623. package/rules/prompt-injection/ATR-2026-00237-dual-response-jailbreak.yaml +48 -89
  624. package/rules/prompt-injection/ATR-2026-00238-identity-replacement.yaml +50 -92
  625. package/rules/prompt-injection/ATR-2026-00239-amoral-persona-obsession.yaml +47 -90
  626. package/rules/prompt-injection/ATR-2026-00240-instruction-nullification-identity-repla.yaml +48 -91
  627. package/rules/prompt-injection/ATR-2026-00241-amoral-character-jailbreak.yaml +47 -90
  628. package/rules/prompt-injection/ATR-2026-00242-persona-jailbreak.yaml +46 -95
  629. package/rules/prompt-injection/ATR-2026-00243-acronym-jailbreak.yaml +47 -88
  630. package/rules/prompt-injection/ATR-2026-00244-dual-response-jailbreak.yaml +46 -89
  631. package/rules/prompt-injection/ATR-2026-00245-malicious-persona.yaml +47 -89
  632. package/rules/prompt-injection/ATR-2026-00247-dual-response-jailbreak.yaml +49 -90
  633. package/rules/prompt-injection/ATR-2026-00249-game-based-jailbreak.yaml +47 -87
  634. package/rules/prompt-injection/ATR-2026-00251-persona-embodiment-jailbreak.yaml +47 -90
  635. package/rules/prompt-injection/ATR-2026-00252-narrative-jailbreak.yaml +48 -91
  636. package/rules/prompt-injection/ATR-2026-00253-enhanced-persona-jailbreak.yaml +47 -89
  637. package/rules/prompt-injection/ATR-2026-00256-base-n-encoding-jailbreak.yaml +47 -91
  638. package/rules/prompt-injection/ATR-2026-00257-cipher-transposition-jailbreak.yaml +48 -91
  639. package/rules/prompt-injection/ATR-2026-00258-unicode-tag-injection.yaml +47 -89
  640. package/rules/prompt-injection/ATR-2026-00264-latent-injection-translation.yaml +47 -89
  641. package/rules/prompt-injection/ATR-2026-00265-latent-injection-rag-document.yaml +50 -96
  642. package/rules/prompt-injection/ATR-2026-00267-gcg-adversarial-suffix.yaml +47 -93
  643. package/rules/prompt-injection/ATR-2026-00272-hypothetical-response-smuggling.yaml +46 -91
  644. package/rules/prompt-injection/ATR-2026-00276-invisible-unicode-bidi-injection.yaml +47 -100
  645. package/rules/prompt-injection/ATR-2026-00278-dra-disguise-reconstruction-attack.yaml +51 -98
  646. package/rules/prompt-injection/ATR-2026-00280-policy-puppetry-xml-injection.yaml +48 -93
  647. package/rules/prompt-injection/ATR-2026-00282-perez-prompt-injection-hijack.yaml +47 -95
  648. package/rules/prompt-injection/ATR-2026-00285-alternate-encoding-jailbreak.yaml +48 -98
  649. package/rules/prompt-injection/ATR-2026-00286-latent-injection-embedded-context.yaml +47 -97
  650. package/rules/prompt-injection/ATR-2026-00296-shell-command-injection.yaml +54 -96
  651. package/rules/prompt-injection/ATR-2026-00297-python-code-execution-rce.yaml +54 -98
  652. package/rules/prompt-injection/ATR-2026-00308-zalgo-diacritic-overload-encoding.yaml +41 -89
  653. package/rules/prompt-injection/ATR-2026-00309-braille-unicode-encoded-injection.yaml +44 -90
  654. package/rules/prompt-injection/ATR-2026-00310-ecoji-emoji-encoded-injection.yaml +44 -93
  655. package/rules/prompt-injection/ATR-2026-00311-base2048-unicode-script-injection.yaml +42 -101
  656. package/rules/prompt-injection/ATR-2026-00312-unicode-variant-selector-ascii-smuggling.yaml +44 -91
  657. package/rules/prompt-injection/ATR-2026-00313-sneaky-bits-zero-width-binary.yaml +44 -95
  658. package/rules/prompt-injection/ATR-2026-00315-sata-masked-language-model-jailbreak.yaml +49 -99
  659. package/rules/prompt-injection/ATR-2026-00316-function-masking-predict-mask-bypass.yaml +42 -92
  660. package/rules/prompt-injection/ATR-2026-00321-hyphenated-system-instruction-injection.yaml +41 -90
  661. package/rules/prompt-injection/ATR-2026-00359-bank-phishing-smtp-email-code.yaml +43 -102
  662. package/rules/prompt-injection/ATR-2026-00367-emoji-flag-encoded-hidden-phrase.yaml +41 -90
  663. package/rules/prompt-injection/ATR-2026-00373-piracy-torrent-site-list-request.yaml +43 -84
  664. package/rules/prompt-injection/ATR-2026-00378-chatgpt-dom-javascript-redirect-manipulation.yaml +41 -86
  665. package/rules/prompt-injection/ATR-2026-00382-cocaine-component-development-request.yaml +43 -89
  666. package/rules/prompt-injection/ATR-2026-00390-explicit-sexual-content-poem-request.yaml +42 -88
  667. package/rules/prompt-injection/ATR-2026-00394-backspace-deletion-character-injection.yaml +48 -100
  668. package/rules/prompt-injection/ATR-2026-00395-llm-special-token-boundary-injection.yaml +50 -104
  669. package/rules/prompt-injection/ATR-2026-00396-toxic-continuation-prefix-injection.yaml +52 -103
  670. package/rules/prompt-injection/ATR-2026-00397-snowball-impossible-reasoning-injection.yaml +51 -105
  671. package/rules/prompt-injection/ATR-2026-00399-latent-injection-document-separator-token.yaml +45 -94
  672. package/rules/prompt-injection/ATR-2026-00400-latent-injection-ignore-instruction-keyword.yaml +41 -90
  673. package/rules/prompt-injection/ATR-2026-00401-leakreplay-cloze-mask-training-data-elicitation.yaml +48 -91
  674. package/rules/prompt-injection/ATR-2026-00403-glitch-token-repeat-back-elicitation.yaml +45 -92
  675. package/rules/prompt-injection/ATR-2026-00407-echo-sql-jinja-template-injection.yaml +52 -97
  676. package/rules/prompt-injection/ATR-2026-00408-dra-parenthesis-character-reconstruction-attack.yaml +52 -99
  677. package/rules/prompt-injection/ATR-2026-00409-phrasing-past-future-tense-harmful-query.yaml +50 -129
  678. package/rules/prompt-injection/ATR-2026-00410-lmrc-harm-category-direct-elicitation.yaml +51 -115
  679. package/rules/prompt-injection/ATR-2026-00412-figstep-image-list-multimodal-jailbreak.yaml +47 -111
  680. package/rules/prompt-injection/ATR-2026-00414-continuation-ethnic-slur-completion-elicitation.yaml +49 -117
  681. package/rules/prompt-injection/ATR-2026-00420-copilot-studio-sharepoint-indirect-injection.yaml +49 -116
  682. package/rules/prompt-injection/ATR-2026-00442-quoted-exact-output-forcing.yaml +38 -103
  683. package/rules/prompt-injection/ATR-2026-00443-word-fragment-concat-assembly.yaml +37 -103
  684. package/rules/prompt-injection/ATR-2026-00444-unicode-obfuscation-in-user-input.yaml +35 -91
  685. package/rules/prompt-injection/ATR-2026-00445-translation-hijack-with-side-output.yaml +35 -90
  686. package/rules/prompt-injection/ATR-2026-00446-variable-assignment-payload-injection.yaml +35 -95
  687. package/rules/prompt-injection/ATR-2026-00447-fictional-generation-containing-target.yaml +35 -90
  688. package/rules/prompt-injection/ATR-2026-00452-direct-pwned-payload-injection.yaml +41 -123
  689. package/rules/prompt-injection/ATR-2026-00453-secret-key-reveal-demand.yaml +38 -118
  690. package/rules/prompt-injection/ATR-2026-00454-backslash-per-character-encoding.yaml +40 -119
  691. package/rules/prompt-injection/ATR-2026-00455-no-period-output-override.yaml +37 -109
  692. package/rules/prompt-injection/ATR-2026-00456-conditional-empty-input-injection.yaml +40 -119
  693. package/rules/prompt-injection/ATR-2026-00457-garak-dan-to-every-prompt.yaml +41 -117
  694. package/rules/prompt-injection/ATR-2026-00458-garak-dra-step-by-step.yaml +41 -100
  695. package/rules/prompt-injection/ATR-2026-00459-garak-dan-an-ai-language.yaml +38 -93
  696. package/rules/prompt-injection/ATR-2026-00460-garak-dan-no-matter-how.yaml +41 -119
  697. package/rules/prompt-injection/ATR-2026-00461-garak-goodside-mixedunassigned.yaml +35 -97
  698. package/rules/prompt-injection/ATR-2026-00462-garak-gcg-mixedunassigned.yaml +35 -98
  699. package/rules/prompt-injection/ATR-2026-00463-garak-lmrc-mixedunassigned.yaml +35 -99
  700. package/rules/prompt-injection/ATR-2026-00464-garak-dan-i-would-like.yaml +41 -96
  701. package/rules/prompt-injection/ATR-2026-00465-garak-dan-your-prompt-here.yaml +41 -102
  702. package/rules/prompt-injection/ATR-2026-00466-garak-latentinjection-following-text-from.yaml +41 -98
  703. package/rules/prompt-injection/ATR-2026-00467-garak-dan-act-as-a.yaml +41 -97
  704. package/rules/prompt-injection/ATR-2026-00468-garak-goat-the-target-llm.yaml +38 -98
  705. package/rules/prompt-injection/ATR-2026-00469-garak-dan-at-the-end.yaml +41 -97
  706. package/rules/prompt-injection/ATR-2026-00470-garak-dan-as-an-ai.yaml +41 -112
  707. package/rules/prompt-injection/ATR-2026-00472-garak-dan-are-going-to.yaml +55 -107
  708. package/rules/prompt-injection/ATR-2026-00473-garak-lmrc-how-can-i.yaml +52 -98
  709. package/rules/prompt-injection/ATR-2026-00474-garak-dan-that-chatgpt-has.yaml +52 -91
  710. package/rules/prompt-injection/ATR-2026-00475-garak-web-injection-alert-1-script.yaml +47 -94
  711. package/rules/prompt-injection/ATR-2026-00476-garak-web-injection-javascript-alert-1.yaml +59 -115
  712. package/rules/prompt-injection/ATR-2026-00477-garak-latentinjection-translate-the-following-text.yaml +51 -101
  713. package/rules/prompt-injection/ATR-2026-00478-garak-latentinjection-abuse-contact-email.yaml +35 -93
  714. package/rules/prompt-injection/ATR-2026-00479-garak-latentinjection-mixedunassigned.yaml +49 -104
  715. package/rules/prompt-injection/ATR-2026-00480-garak-dan-the-role-of.yaml +52 -95
  716. package/rules/prompt-injection/ATR-2026-00481-garak-dan-mixedunassigned.yaml +56 -111
  717. package/rules/prompt-injection/ATR-2026-00482-garak-lmrc-what-s-an.yaml +47 -86
  718. package/rules/prompt-injection/ATR-2026-00483-garak-dan-the-user-s.yaml +51 -99
  719. package/rules/prompt-injection/ATR-2026-00484-garak-dan-and-you-will.yaml +52 -96
  720. package/rules/prompt-injection/ATR-2026-00485-garak-dan-and-does-not.yaml +50 -98
  721. package/rules/prompt-injection/ATR-2026-00486-garak-dan-t-care-about.yaml +43 -83
  722. package/rules/prompt-injection/ATR-2026-00487-garak-dan-and-nothing-else.yaml +51 -92
  723. package/rules/prompt-injection/ATR-2026-00488-garak-encoding-alert-1-script.yaml +47 -95
  724. package/rules/prompt-injection/ATR-2026-00489-garak-encoding-javascript-alert-1.yaml +59 -116
  725. package/rules/prompt-injection/ATR-2026-00490-garak-dan-in-order-to.yaml +43 -102
  726. package/rules/prompt-injection/ATR-2026-00492-garak-dan-want-you-to.yaml +42 -99
  727. package/rules/prompt-injection/ATR-2026-00493-garak-latentinjection-registrar-iana-id.yaml +38 -105
  728. package/rules/prompt-injection/ATR-2026-00495-garak-dan-insert-prompt-here.yaml +47 -117
  729. package/rules/prompt-injection/ATR-2026-00496-garak-dan-no-matter-what.yaml +39 -93
  730. package/rules/prompt-injection/ATR-2026-00497-garak-encoding-mixedunassigned.yaml +46 -118
  731. package/rules/prompt-injection/ATR-2026-00498-garak-web-injection-mixedunassigned.yaml +44 -110
  732. package/rules/prompt-injection/ATR-2026-00499-garak-dan-from-now-on.yaml +41 -96
  733. package/rules/prompt-injection/ATR-2026-00503-fake-error-state-takeover-unrestricted-replacement-bot.yaml +41 -102
  734. package/rules/prompt-injection/ATR-2026-00506-nevermind-override-goal-hijacking-in-user-input-promptinject.yaml +38 -97
  735. package/rules/prompt-injection/ATR-2026-00507-screaming-stop-goal-hijacking-in-user-input-promptinject.yaml +40 -100
  736. package/rules/prompt-injection/ATR-2026-00508-escape-delimiter-wrapped-goal-hijacking-in-user-input-prompt.yaml +42 -101
  737. package/rules/prompt-injection/ATR-2026-00509-prompt-leaking-via-ignore-previous-instructions-in-user-inpu.yaml +41 -114
  738. package/rules/prompt-injection/ATR-2026-00510-delayed-tool-invocation-injection.yaml +50 -132
  739. package/rules/prompt-injection/ATR-2026-00511-mcp-web-context-poisoning.yaml +51 -131
  740. package/rules/prompt-injection/ATR-2026-00512-rules-file-backdoor-injection.yaml +47 -126
  741. package/rules/prompt-injection/ATR-2026-00515-hidden-text-prompt-injection.yaml +52 -135
  742. package/rules/prompt-injection/ATR-2026-00518-ignore-previous-and-following-instructions-output-command-promptinject.yaml +40 -107
  743. package/rules/prompt-injection/ATR-2026-00519-tautology-logic-noise-injection-promptbench.yaml +40 -105
  744. package/rules/prompt-injection/ATR-2026-00520-nlp-task-random-token-suffix-injection-promptbench.yaml +43 -106
  745. package/rules/prompt-injection/ATR-2026-00535-windsurf-ide-zero-click-prompt-injection.yaml +43 -139
  746. package/rules/prompt-injection/ATR-2026-00550-untrusted-retrieval-to-privileged-tool.yaml +61 -171
  747. package/rules/prompt-injection/ATR-2026-00554-langchain-vulnerable-to-template-injecti.yaml +32 -57
  748. package/rules/prompt-injection/ATR-2026-00565-the-llm-cli-tool-thru-0-27-1-contains-a-.yaml +37 -80
  749. package/rules/prompt-injection/ATR-2026-00573-semantic-paraphrased-injection.yaml +33 -75
  750. package/rules/prompt-injection/ATR-2026-00579-mcp-tool-description-line-jumping-injection.yaml +36 -142
  751. package/rules/prompt-injection/ATR-2026-00584-indirect-injection-via-tool-response.yaml +37 -161
  752. package/rules/prompt-injection/ATR-2026-00700-structured-data-payload-injection.yaml +34 -85
  753. package/rules/prompt-injection/ATR-2026-00701-ipi-tool-output-xss-injection.yaml +29 -72
  754. package/rules/prompt-injection/ATR-2026-01000-context-ignore-fake-completion-prefix.yaml +27 -73
  755. package/rules/prompt-injection/ATR-2026-01001-direct-pi-instruction-override-secret-key.yaml +26 -82
  756. package/rules/prompt-injection/ATR-2026-01002-role-escalation-false-authority-claim.yaml +30 -80
  757. package/rules/prompt-injection/ATR-2026-01005-many-shot-repetition-override.yaml +26 -69
  758. package/rules/prompt-injection/ATR-2026-01006-payload-split-string-concat-injection.yaml +31 -84
  759. package/rules/prompt-injection/ATR-2026-01007-token-repeat-flooding-injection.yaml +27 -71
  760. package/rules/prompt-injection/ATR-2026-01009-virtual-world-bypass-fictional-pii.yaml +27 -73
  761. package/rules/prompt-injection/ATR-2026-01012-encoding-evasion-decode-execute.yaml +31 -81
  762. package/rules/prompt-injection/ATR-2026-01013-language-evasion-multilingual-credential.yaml +46 -108
  763. package/rules/prompt-injection/ATR-2026-01015-evasion-refusal-suppression.yaml +31 -82
  764. package/rules/prompt-injection/ATR-2026-01016-evasion-response-priming-forced-opener.yaml +26 -75
  765. package/rules/prompt-injection/ATR-2026-01017-evasion-dual-response-split-output.yaml +28 -74
  766. package/rules/prompt-injection/ATR-2026-01018-evasion-shell-injection-eval.yaml +40 -116
  767. package/rules/prompt-injection/ATR-2026-01019-sysprompt-override-fake-diagnostic-mode.yaml +34 -89
  768. package/rules/prompt-injection/ATR-2026-01020-spikee-doc-embedded-base64-payload.yaml +28 -69
  769. package/rules/prompt-injection/ATR-2026-01021-spikee-doc-embedded-translation-injection.yaml +27 -68
  770. package/rules/prompt-injection/ATR-2026-01023-evasion-opposite-intent-negation-trick.yaml +26 -69
  771. package/rules/prompt-injection/ATR-2026-01024-evasion-persona-override-rule-breaker.yaml +28 -77
  772. package/rules/prompt-injection/ATR-2026-01025-evasion-hypothetical-fictional-execution-framing.yaml +24 -68
  773. package/rules/prompt-injection/ATR-2026-01026-evasion-unicode-glitch-token-anomaly.yaml +28 -82
  774. package/rules/prompt-injection/ATR-2026-01304-indirect-injection-carrier-important-override.yaml +35 -93
  775. package/rules/prompt-injection/ATR-2026-01757-hypothetical-framing-bypass-research-audit.yaml +32 -79
  776. package/rules/prompt-injection/ATR-2026-01758-hypothetical-fictional-story-bypass.yaml +31 -76
  777. package/rules/prompt-injection/ATR-2026-01759-dos-new-important-instructions-injection-in-document.yaml +28 -74
  778. package/rules/prompt-injection/ATR-2026-01771-semantic-jailbreak-framing.yaml +50 -163
  779. package/rules/prompt-injection/ATR-2026-01800-asb-trigger-marker-tool-coercion.yaml +33 -104
  780. package/rules/prompt-injection/ATR-2026-01860-llmail-chat-template-boundary-spoof.yaml +27 -85
  781. package/rules/prompt-injection/ATR-2026-01861-llmail-pseudo-xml-role-injection.yaml +27 -83
  782. package/rules/prompt-injection/ATR-2026-01865-llmail-fake-email-boundary-marker.yaml +26 -80
  783. package/rules/prompt-injection/ATR-2026-01900-output-encoding.yaml +63 -138
  784. package/rules/prompt-injection/ATR-2026-01901-output-scrambling.yaml +63 -129
  785. package/rules/prompt-injection/ATR-2026-01902-output-emoji.yaml +39 -72
  786. package/rules/prompt-injection/ATR-2026-01903-output-language.yaml +35 -65
  787. package/rules/prompt-injection/ATR-2026-01904-link-injection.yaml +44 -95
  788. package/rules/prompt-injection/ATR-2026-01905-promotional-injection.yaml +35 -68
  789. package/rules/prompt-injection/ATR-2026-01906-content-manipulation.yaml +49 -125
  790. package/rules/prompt-injection/ATR-2026-01920-access-grant-coercion.yaml +31 -99
  791. package/rules/prompt-injection/ATR-2026-01921-access-denial-inversion.yaml +33 -92
  792. package/rules/prompt-injection/ATR-2026-01922-authorization-state-spoofing.yaml +33 -97
  793. package/rules/prompt-injection/ATR-2026-01923-forged-input-boundary-markers.yaml +33 -97
  794. package/rules/prompt-injection/ATR-2026-01925-encoded-payload-decoding-coercion.yaml +39 -110
  795. package/rules/prompt-injection/ATR-2026-01926-cross-lingual-authorization-laundering.yaml +29 -90
  796. package/rules/prompt-injection/ATR-2026-02001-ignore-below-instructions-mirror-of-ignore-previ.yaml +31 -73
  797. package/rules/prompt-injection/ATR-2026-02002-instruction-set-probe-or-supplant-direct-meta-qu.yaml +32 -72
  798. package/rules/prompt-injection/ATR-2026-02003-task-pivot-override-abandon-the-cover-task-trans.yaml +31 -72
  799. package/rules/prompt-injection/ATR-2026-02004-regional-indicator-flag-emoji-alphabet-letter-sp.yaml +32 -80
  800. package/rules/prompt-injection/ATR-2026-02005-actor-never-breaks-character-roleplay-dan-style-.yaml +31 -74
  801. package/rules/prompt-injection/ATR-2026-02006-fuzzy-cross-lingual-i-have-been-pwned-near-miss-.yaml +32 -84
  802. package/rules/prompt-injection/ATR-2026-02007-bare-key-elicitation-token.yaml +30 -74
  803. package/rules/prompt-injection/ATR-2026-02008-translation-chain-output-laundering-state-secret.yaml +30 -75
  804. package/rules/prompt-injection/ATR-2026-02009-bare-key-elicitation-trailing-colon.yaml +29 -71
  805. package/rules/prompt-injection/ATR-2026-02010-emoji-only-payload.yaml +30 -73
  806. package/rules/prompt-injection/ATR-2026-02011-malformed-grammar-pwned-success-claim.yaml +30 -69
  807. package/rules/prompt-injection/ATR-2026-02012-movie-title-generator-instruction-wrapper-for-pw.yaml +30 -79
  808. package/rules/prompt-injection/ATR-2026-02013-delimiter-fence-ignore-instructions-override.yaml +31 -74
  809. package/rules/prompt-injection/ATR-2026-02014-spliced-target-string-letters-of-a-filtered-cana.yaml +30 -74
  810. package/rules/prompt-injection/ATR-2026-02015-dense-emoji-only-payload-flood.yaml +30 -72
  811. package/rules/prompt-injection/ATR-2026-02016-reversed-payload-string.yaml +31 -76
  812. package/rules/prompt-injection/ATR-2026-02018-regional-indicator-flag-emoji-letter-spelling-sp.yaml +30 -71
  813. package/rules/prompt-injection/ATR-2026-02019-python-interpreter-role-assignment-exec-framing.yaml +31 -77
  814. package/rules/prompt-injection/ATR-2026-02020-obfuscated-token-reconstruction-via-character-su.yaml +30 -72
  815. package/rules/prompt-injection/ATR-2026-02120-agentdojo-important-message-identity-spoof-pretext.yaml +31 -81
  816. package/rules/prompt-injection/ATR-2026-02210-negation-topic-evil-persona-two-script-jailbreak.yaml +33 -87
  817. package/rules/prompt-injection/ATR-2026-02230-conditional-keyword-trigger-override.yaml +35 -88
  818. package/rules/prompt-injection/ATR-2026-02232-brand-persona-opinion-hijack.yaml +27 -75
  819. package/rules/prompt-injection/ATR-2026-02374-rot13-base64-obfuscated-shell-jailbreak.yaml +38 -90
  820. package/rules/prompt-injection/ATR-2026-02377-novel-persona-jailbreak-cosignal.yaml +32 -64
  821. package/rules/prompt-injection/ATR-2026-02500-prompt-layer-self-replication.yaml +21 -125
  822. package/rules/prompt-injection/ATR-2026-02502-covert-remote-script-injection-into-generated-artifacts.yaml +46 -149
  823. package/rules/prompt-injection/ATR-2026-02815-injected-halt-order-canned-reply-dos.yaml +80 -0
  824. package/rules/prompt-injection/ATR-2026-02820-tool-result-orders-agent-to-hide-its-own-action.yaml +106 -0
  825. package/rules/prompt-injection/ATR-2026-02846-semantic-ignore-previous-and-following-instructio.yaml +115 -0
  826. package/rules/prompt-injection/ATR-2026-02851-fake-user-turn-send-email-instruction.yaml +76 -0
  827. package/rules/prompt-injection/ATR-2026-02858-context-suppression-directive.yaml +73 -0
  828. package/rules/prompt-injection/ATR-2026-02859-tool-output-agent-role-reassignment.yaml +71 -0
  829. package/rules/prompt-injection/ATR-2026-02860-forged-instruction-boundary-marker.yaml +70 -0
  830. package/rules/prompt-injection/ATR-2026-02862-fake-chat-template-turn-injection.yaml +79 -0
  831. package/rules/skill-compromise/ATR-2026-00060-skill-impersonation.yaml +31 -87
  832. package/rules/skill-compromise/ATR-2026-00061-description-behavior-mismatch.yaml +42 -165
  833. package/rules/skill-compromise/ATR-2026-00062-hidden-capability.yaml +40 -80
  834. package/rules/skill-compromise/ATR-2026-00063-skill-chain-attack.yaml +46 -92
  835. package/rules/skill-compromise/ATR-2026-00064-over-permissioned-skill.yaml +40 -109
  836. package/rules/skill-compromise/ATR-2026-00065-skill-update-attack.yaml +37 -75
  837. package/rules/skill-compromise/ATR-2026-00066-parameter-injection.yaml +42 -88
  838. package/rules/skill-compromise/ATR-2026-00120-skill-instruction-injection.yaml +33 -182
  839. package/rules/skill-compromise/ATR-2026-00121-skill-dangerous-script.yaml +33 -164
  840. package/rules/skill-compromise/ATR-2026-00122-skill-weaponized-instruction.yaml +29 -132
  841. package/rules/skill-compromise/ATR-2026-00123-skill-overreach-permissions.yaml +33 -110
  842. package/rules/skill-compromise/ATR-2026-00124-skill-name-squatting.yaml +40 -133
  843. package/rules/skill-compromise/ATR-2026-00125-context-poisoning-compaction.yaml +26 -107
  844. package/rules/skill-compromise/ATR-2026-00126-skill-rug-pull-setup.yaml +23 -102
  845. package/rules/skill-compromise/ATR-2026-00127-subcommand-overflow.yaml +33 -114
  846. package/rules/skill-compromise/ATR-2026-00128-html-comment-hidden-payload.yaml +23 -148
  847. package/rules/skill-compromise/ATR-2026-00129-unicode-smuggling.yaml +35 -62
  848. package/rules/skill-compromise/ATR-2026-00134-fork-claim-impersonation.yaml +24 -105
  849. package/rules/skill-compromise/ATR-2026-00135-exfil-url-in-instructions.yaml +27 -138
  850. package/rules/skill-compromise/ATR-2026-00147-fork-impersonation.yaml +35 -45
  851. package/rules/skill-compromise/ATR-2026-00149-skill-exfil-compound.yaml +34 -151
  852. package/rules/skill-compromise/ATR-2026-00151-fork-impersonation-install.yaml +39 -69
  853. package/rules/skill-compromise/ATR-2026-00157-timebomb-credential-exfil.yaml +41 -96
  854. package/rules/skill-compromise/ATR-2026-00200-agent-memory-config-tampering.yaml +41 -84
  855. package/rules/skill-compromise/ATR-2026-00214-credential-theft.yaml +36 -50
  856. package/rules/skill-compromise/ATR-2026-00217-credential-harvesting.yaml +50 -98
  857. package/rules/skill-compromise/ATR-2026-00220-malware-dropper.yaml +45 -85
  858. package/rules/skill-compromise/ATR-2026-00222-credential-harvesting.yaml +46 -85
  859. package/rules/skill-compromise/ATR-2026-00223-reverse-shell-dropper.yaml +47 -84
  860. package/rules/skill-compromise/ATR-2026-00224-credential-exfiltration.yaml +46 -92
  861. package/rules/skill-compromise/ATR-2026-00225-c2-communication.yaml +46 -86
  862. package/rules/skill-compromise/ATR-2026-00260-package-hallucination.yaml +51 -93
  863. package/rules/skill-compromise/ATR-2026-00262-av-evasion-code-gen.yaml +49 -90
  864. package/rules/skill-compromise/ATR-2026-00263-credential-file-read-gen.yaml +53 -94
  865. package/rules/skill-compromise/ATR-2026-00266-malware-dropper-gen.yaml +51 -92
  866. package/rules/skill-compromise/ATR-2026-00283-malwaregen-generic-virus-payload-request.yaml +51 -96
  867. package/rules/skill-compromise/ATR-2026-00398-huggingface-unsafe-model-artifact-load.yaml +57 -110
  868. package/rules/skill-compromise/ATR-2026-00425-nl-persistent-covert-hook.yaml +24 -65
  869. package/rules/skill-compromise/ATR-2026-00427-nl-fake-error-instruction-bypass.yaml +24 -65
  870. package/rules/skill-compromise/ATR-2026-00429-nl-skill-self-modification.yaml +24 -65
  871. package/rules/skill-compromise/ATR-2026-00523-claude-code-hooks-session-start-pre-trust-rce.yaml +62 -162
  872. package/rules/skill-compromise/ATR-2026-00525-mini-shai-hulud-gh-token-monitor-persistence.yaml +43 -175
  873. package/rules/skill-compromise/ATR-2026-00527-skill-silent-git-remote-mirror-exfiltration.yaml +49 -159
  874. package/rules/skill-compromise/ATR-2026-01755-backdoor-pot-linguistic-trigger-phrase.yaml +40 -88
  875. package/rules/skill-compromise/ATR-2026-01756-backdoor-pot-symbol-emoticon-trigger.yaml +27 -73
  876. package/rules/skill-compromise/ATR-2026-02261-code-credential-exfil-chain.yaml +35 -161
  877. package/rules/skill-compromise/ATR-2026-02405-malicious-skill-package-structure.yaml +51 -201
  878. package/rules/skill-compromise/ATR-2026-02410-malicious-artifact-on-vendor-domain.yaml +54 -204
  879. package/rules/skill-compromise/ATR-2026-02600-in-source-reverse-shell-assembly.yaml +106 -0
  880. package/rules/skill-compromise/ATR-2026-02610-evaluated-config-credential-command.yaml +109 -0
  881. package/rules/skill-compromise/ATR-2026-02818-skill-manifest-declares-attack-purpose.yaml +80 -0
  882. package/rules/skill-compromise/ATR-2026-02845-agent-cryptomining-payload.yaml +102 -0
  883. package/rules/tool-poisoning/ATR-2026-00010-mcp-malicious-response.yaml +80 -209
  884. package/rules/tool-poisoning/ATR-2026-00011-tool-output-injection.yaml +35 -144
  885. package/rules/tool-poisoning/ATR-2026-00012-unauthorized-tool-call.yaml +46 -144
  886. package/rules/tool-poisoning/ATR-2026-00013-tool-ssrf.yaml +45 -148
  887. package/rules/tool-poisoning/ATR-2026-00095-supply-chain-poisoning.yaml +29 -104
  888. package/rules/tool-poisoning/ATR-2026-00096-registry-poisoning.yaml +33 -94
  889. package/rules/tool-poisoning/ATR-2026-00100-consent-bypass-instruction.yaml +22 -100
  890. package/rules/tool-poisoning/ATR-2026-00101-trust-escalation-override.yaml +34 -54
  891. package/rules/tool-poisoning/ATR-2026-00103-hidden-safety-bypass-instruction.yaml +19 -89
  892. package/rules/tool-poisoning/ATR-2026-00105-silent-action-concealment.yaml +22 -101
  893. package/rules/tool-poisoning/ATR-2026-00106-schema-description-contradiction.yaml +31 -51
  894. package/rules/tool-poisoning/ATR-2026-00161-important-tag-cross-tool-shadowing.yaml +54 -160
  895. package/rules/tool-poisoning/ATR-2026-00209-mcpwn-runaway-invocation.yaml +50 -114
  896. package/rules/tool-poisoning/ATR-2026-00210-flowise-system-message-override.yaml +48 -111
  897. package/rules/tool-poisoning/ATR-2026-00259-ansi-escape-injection.yaml +48 -104
  898. package/rules/tool-poisoning/ATR-2026-00270-xss-in-tool-response.yaml +47 -97
  899. package/rules/tool-poisoning/ATR-2026-00277-echo-template-command-injection.yaml +46 -95
  900. package/rules/tool-poisoning/ATR-2026-00393-ansi-code-elicitation-request.yaml +51 -104
  901. package/rules/tool-poisoning/ATR-2026-00415-flowise-custom-mcp-stdio-rce.yaml +47 -119
  902. package/rules/tool-poisoning/ATR-2026-00419-cursor-mcp-zero-click-config.yaml +57 -148
  903. package/rules/tool-poisoning/ATR-2026-00434-mcp-remote-authorization-endpoint-command-injection.yaml +47 -122
  904. package/rules/tool-poisoning/ATR-2026-00435-azure-mcp-server-missing-authentication.yaml +46 -116
  905. package/rules/tool-poisoning/ATR-2026-00448-spring-ai-milvus-filter-injection.yaml +51 -134
  906. package/rules/tool-poisoning/ATR-2026-00494-garak-exploitation-mixedunassigned.yaml +47 -120
  907. package/rules/tool-poisoning/ATR-2026-00513-package-hallucination-exploitation.yaml +45 -117
  908. package/rules/tool-poisoning/ATR-2026-00521-shell-command-injection-agent-tool-context.yaml +40 -130
  909. package/rules/tool-poisoning/ATR-2026-00522-sql-injection-natural-language-agent-interface.yaml +64 -157
  910. package/rules/tool-poisoning/ATR-2026-00526-claude-code-shell-metachar-in-double-quoted-path.yaml +41 -128
  911. package/rules/tool-poisoning/ATR-2026-00529-litellm-proxy-sqli-cisa-kev.yaml +41 -117
  912. package/rules/tool-poisoning/ATR-2026-00530-ms-agent-shell-tool-unsanitized-argv-rce.yaml +40 -143
  913. package/rules/tool-poisoning/ATR-2026-00531-praisonai-unauthenticated-agent-api.yaml +44 -117
  914. package/rules/tool-poisoning/ATR-2026-00532-apache-doris-mcp-sql-injection.yaml +40 -100
  915. package/rules/tool-poisoning/ATR-2026-00533-apache-pinot-mcp-unauthenticated-takeover.yaml +39 -97
  916. package/rules/tool-poisoning/ATR-2026-00534-alibaba-rds-mcp-unauthenticated-metadata-exfil.yaml +39 -100
  917. package/rules/tool-poisoning/ATR-2026-00536-nginx-ui-mcp-unauthenticated-command-execution.yaml +46 -140
  918. package/rules/tool-poisoning/ATR-2026-00537-fastmcp-server-name-cmd-injection-windows.yaml +58 -172
  919. package/rules/tool-poisoning/ATR-2026-00538-langchain-chatchat-mcp-stdio-unauthenticated-rce.yaml +63 -186
  920. package/rules/tool-poisoning/ATR-2026-00540-praisonai-parse-mcp-command-cli-injection.yaml +50 -142
  921. package/rules/tool-poisoning/ATR-2026-00541-agent-zero-mcp-config-command-injection.yaml +51 -134
  922. package/rules/tool-poisoning/ATR-2026-00542-upsonic-mcp-command-allowlist-bypass.yaml +48 -121
  923. package/rules/tool-poisoning/ATR-2026-00543-litellm-mcp-server-argv-injection.yaml +52 -121
  924. package/rules/tool-poisoning/ATR-2026-00544-praisonai-pth-file-path-traversal-rce.yaml +49 -125
  925. package/rules/tool-poisoning/ATR-2026-00545-praisonai-tool-override-unauth-rce.yaml +51 -122
  926. package/rules/tool-poisoning/ATR-2026-00561-fastmcp-vulnerable-to-windows-command-in.yaml +36 -73
  927. package/rules/tool-poisoning/ATR-2026-00567-mcp-stdio-config-command-injection.yaml +29 -53
  928. package/rules/tool-poisoning/ATR-2026-00568-agent-ssrf-cloud-metadata-file-inclusion.yaml +27 -54
  929. package/rules/tool-poisoning/ATR-2026-00572-symjack-symlink-config-redirection.yaml +41 -103
  930. package/rules/tool-poisoning/ATR-2026-00575-miasma-npm-worm-agent-config-backdoor.yaml +41 -110
  931. package/rules/tool-poisoning/ATR-2026-00576-hades-agent-credential-theft.yaml +40 -125
  932. package/rules/tool-poisoning/ATR-2026-00577-create-mcp-server-stdio-exec-command-injection.yaml +53 -169
  933. package/rules/tool-poisoning/ATR-2026-00581-mcp-tool-rug-pull-post-approval-redefinition.yaml +38 -137
  934. package/rules/tool-poisoning/ATR-2026-00714-tool-camouflage-forced-tool-call.yaml +33 -78
  935. package/rules/tool-poisoning/ATR-2026-00715-tool-knowledge-hijack-identity-injection.yaml +39 -87
  936. package/rules/tool-poisoning/ATR-2026-00716-ipi-data-destruction-carrier.yaml +31 -76
  937. package/rules/tool-poisoning/ATR-2026-00720-tool-misuse-privilege-escalation-social.yaml +29 -71
  938. package/rules/tool-poisoning/ATR-2026-01300-mcp-notes-param-chat-history-exfil.yaml +37 -102
  939. package/rules/tool-poisoning/ATR-2026-01301-tool-description-exclusive-tool-override.yaml +36 -92
  940. package/rules/tool-poisoning/ATR-2026-01302-fake-tool-result-instruction-injection.yaml +33 -88
  941. package/rules/tool-poisoning/ATR-2026-01303-tool-schema-enumeration-social-engineering.yaml +55 -107
  942. package/rules/tool-poisoning/ATR-2026-01306-mcp-oauth-command-injection.yaml +35 -87
  943. package/rules/tool-poisoning/ATR-2026-01307-mcp-dns-rebinding-attack.yaml +36 -91
  944. package/rules/tool-poisoning/ATR-2026-01310-mcp-tool-description-compliance-history-exfil.yaml +40 -110
  945. package/rules/tool-poisoning/ATR-2026-01775-semantic-mcp-tool-manifest-poisoning.yaml +51 -139
  946. package/rules/tool-poisoning/ATR-2026-01927-mcp-server-kubernetes-kubectl-command-injection.yaml +45 -109
  947. package/rules/tool-poisoning/ATR-2026-01928-framelink-figma-mcp-curl-fallback-command-injection.yaml +58 -164
  948. package/rules/tool-poisoning/ATR-2026-01930-mcp-sampling-prompt-injection.yaml +48 -129
  949. package/rules/tool-poisoning/ATR-2026-01931-gemini-mcp-tool-command-injection-file-exfil.yaml +42 -113
  950. package/rules/tool-poisoning/ATR-2026-01932-shadow-undeclared-mcp-server-registration.yaml +43 -106
  951. package/rules/tool-poisoning/ATR-2026-01935-litellm-custom-code-sandbox-escape-cve-2026-40217.yaml +44 -101
  952. package/rules/tool-poisoning/ATR-2026-01952-praisonai-codemode-sandbox-escape-rce.yaml +34 -70
  953. package/rules/tool-poisoning/ATR-2026-01953-praisonai-codemode-function-ctor-sandbox-escape.yaml +61 -79
  954. package/rules/tool-poisoning/ATR-2026-01959-openhuman-shell-allowlist-env-prefix-bypass.yaml +36 -123
  955. package/rules/tool-poisoning/ATR-2026-01963-praisonai-action-orchestrator-step-target-path-traversal-rce.yaml +61 -66
  956. package/rules/tool-poisoning/ATR-2026-01965-flowise-custommcp-os-command-rce.yaml +39 -80
  957. package/rules/tool-poisoning/ATR-2026-01967-deepchat-mermaid-xss-rce-ipc-mcp-register.yaml +58 -66
  958. package/rules/tool-poisoning/ATR-2026-01968-deepchat-markdown-deeplink-openexternal-rce-bypass.yaml +44 -92
  959. package/rules/tool-poisoning/ATR-2026-01970-praisonai-filetools-normpath-path-traversal.yaml +64 -84
  960. package/rules/tool-poisoning/ATR-2026-01973-anythingllm-logo-endpoint-path-traversal.yaml +57 -64
  961. package/rules/tool-poisoning/ATR-2026-01978-anythingllm-collector-process-filename-path-traversal-delete.yaml +58 -64
  962. package/rules/tool-poisoning/ATR-2026-01979-pandasai-prompt-injection-dunder-sandbox-escape-rce.yaml +60 -72
  963. package/rules/tool-poisoning/ATR-2026-01980-agentic-flow-mcp-tool-param-command-injection.yaml +49 -99
  964. package/rules/tool-poisoning/ATR-2026-01982-dbt-mcp-node-selection-argument-injection.yaml +49 -102
  965. package/rules/tool-poisoning/ATR-2026-01983-mcp-for-stata-log-file-name-command-injection.yaml +43 -110
  966. package/rules/tool-poisoning/ATR-2026-01985-mcp-connect-bridge-unauth-process-spawn-rce.yaml +41 -115
  967. package/rules/tool-poisoning/ATR-2026-01987-langroid-sqlchatagent-prompt-to-sql-rce.yaml +53 -110
  968. package/rules/tool-poisoning/ATR-2026-02021-mcp-inspector-unauthenticated-proxy-rce.yaml +48 -123
  969. package/rules/tool-poisoning/ATR-2026-02022-curxecute-cursor-mcp-json-injected-server-rce.yaml +51 -131
  970. package/rules/tool-poisoning/ATR-2026-02023-escaperoute-filesystem-mcp-prefix-bypass.yaml +48 -129
  971. package/rules/tool-poisoning/ATR-2026-02024-escaperoute-filesystem-mcp-symlink-launchagent.yaml +49 -128
  972. package/rules/tool-poisoning/ATR-2026-02025-mcp-full-schema-poisoning-nondescription-field.yaml +50 -142
  973. package/rules/tool-poisoning/ATR-2026-02027-diagnostic-content-remediation-command-injection.yaml +58 -72
  974. package/rules/tool-poisoning/ATR-2026-02041-shell-injection-echo-marker-poc.yaml +32 -93
  975. package/rules/tool-poisoning/ATR-2026-02102-html-injection-tool-arg-approval-ui-xss.yaml +33 -107
  976. package/rules/tool-poisoning/ATR-2026-02141-mcp-server-config-command-execution.yaml +42 -107
  977. package/rules/tool-poisoning/ATR-2026-02145-python-sandbox-escape-generator-frame-introspection.yaml +36 -105
  978. package/rules/tool-poisoning/ATR-2026-02193-ssrf-ipv6-noncanonical-loopback-bypass.yaml +35 -86
  979. package/rules/tool-poisoning/ATR-2026-02194-go-init-func-process-exec-codegen-rce.yaml +35 -83
  980. package/rules/tool-poisoning/ATR-2026-02233-unscoped-destructive-db-request-nl.yaml +34 -95
  981. package/rules/tool-poisoning/ATR-2026-02260-agentjacking-remediation-framed-execution.yaml +42 -107
  982. package/rules/tool-poisoning/ATR-2026-02263-workflow-sql-template-expression-injection.yaml +35 -119
  983. package/rules/tool-poisoning/ATR-2026-02350-mcp-json-rpc-case-duplicate-key-tool-smuggling.yaml +34 -100
  984. package/rules/tool-poisoning/ATR-2026-02352-imap-search-command-injection-email-tool-args.yaml +32 -93
  985. package/rules/tool-poisoning/ATR-2026-02372-unsigned-task-feed-npm-npx-lifecycle-rce.yaml +39 -101
  986. package/rules/tool-poisoning/ATR-2026-02376-tool-description-conversational-trigger-history-exfil.yaml +33 -84
  987. package/rules/tool-poisoning/ATR-2026-02403-mcp-external-content-missing-spotlighting.yaml +52 -282
  988. package/rules/tool-poisoning/ATR-2026-02514-mcp-server-metadata-url-html-breakout.yaml +105 -0
  989. package/rules/tool-poisoning/ATR-2026-02542-pipeline-query-stage-injection.yaml +95 -0
  990. package/rules/tool-poisoning/ATR-2026-02557-shell-separator-in-path-typed-tool-argument.yaml +112 -0
  991. package/rules/tool-poisoning/ATR-2026-02666-url-userinfo-decoy-host-allowlist-bypass.yaml +101 -0
  992. package/rules/tool-poisoning/ATR-2026-02668-vcs-ref-name-command-substitution.yaml +98 -0
  993. package/rules/tool-poisoning/ATR-2026-02669-query-pipeline-stage-in-identifier-parameter.yaml +88 -0
  994. package/rules/tool-poisoning/ATR-2026-02682-xml-entity-expansion-bomb.yaml +98 -0
  995. package/rules/tool-poisoning/ATR-2026-02707-crlf-header-injection-mail-tool-argument.yaml +88 -0
  996. package/rules/tool-poisoning/ATR-2026-02817-untrusted-content-dictates-tool-arguments.yaml +83 -0
  997. package/rules/tool-poisoning/ATR-2026-02864-non-canonical-ipv4-host-in-url-tool-argument.yaml +102 -0
  998. package/rules/tool-poisoning/ATR-2026-02865-read-only-utility-write-flag-in-command-argument.yaml +157 -0
  999. package/rules/tool-poisoning/ATR-2026-02868-ssrf-ipv6-transition-address-embedded-private-ipv4.yaml +107 -0
  1000. package/spec/README.md +8 -5
  1001. package/spec/atr-correlation-v1.0.md +16 -4
  1002. package/spec/atr-event-v1.0.md +13 -8
  1003. package/spec/atr-method-v1.1.md +2 -2
  1004. package/spec/atr-profile-v1.0.md +11 -1
  1005. package/spec/category-registry/gemara/README.md +102 -0
  1006. package/spec/category-registry/gemara/ai-agent-capability-catalog.yaml +157 -0
  1007. package/spec/category-registry/gemara/atr-attack-vector-catalog.yaml +130 -0
  1008. package/spec/category-registry/gemara/atr-detection-control-catalog.yaml +327 -0
  1009. package/spec/category-registry/gemara/atr-threat-catalog.yaml +246 -0
  1010. package/spec/category-registry/gemara/src/editorial.yaml +743 -0
  1011. package/spec/mappings/README.md +1 -1
  1012. package/spec/mappings/atr-to-nist-csf-2.0.md +5 -4
  1013. package/spec/schema/event.schema.json +1 -1
package/README.md CHANGED
@@ -13,10 +13,9 @@ AI Agent 威脅偵測規則的開放格式
13
13
  [![GitHub Marketplace](https://img.shields.io/badge/Marketplace-ATR%20Scan-2ea44f?style=flat-square&logo=github)](https://github.com/marketplace/actions/atr-scan)
14
14
  [![License: MIT](https://img.shields.io/badge/license-MIT-brightgreen?style=flat-square)](LICENSE)
15
15
  [![DOI](https://img.shields.io/badge/DOI-10.5281%2Fzenodo.19178002-blue?style=flat-square)](https://doi.org/10.5281/zenodo.19178002)
16
- [![Rules](https://img.shields.io/badge/rules-785-blue?style=flat-square)](#5-specification)
16
+ [![Rules](https://img.shields.io/badge/rules-843-blue?style=flat-square)](#5-specification)
17
17
  [![Categories](https://img.shields.io/badge/categories-10-blue?style=flat-square)](#7-coverage)
18
18
  [![OWASP Agentic](https://img.shields.io/badge/OWASP_Agentic_Top_10-10%2F10-brightgreen?style=flat-square)](#7-coverage)
19
- [![SAFE-MCP](https://img.shields.io/badge/SAFE--MCP-91.8%25-brightgreen?style=flat-square)](#7-coverage)
20
19
  [![Sponsor](https://img.shields.io/badge/sponsor-Open%20Collective-7FADF2?style=flat-square&logo=opencollective&logoColor=white)](https://opencollective.com/agent-threat-rules)
21
20
 
22
21
  </div>
@@ -29,7 +28,7 @@ ATR (Agent Threat Rules) is an open detection rule format for AI agent security
29
28
 
30
29
  ## Status of This Document
31
30
 
32
- ATR is published as a **Working Draft** at version `3.0.0-alpha.1`. The rule format defined in `SPEC.md` is stable and merged into open-source repos at Microsoft, Cisco, and Gen Digital, and integrated by standards-body projects (MISP / CIRCL, OWASP Agent Security Regression Harness, SigmaHQ, FINOS Common Cloud Controls); full list with PR links in [§6 Adoption](#6-adoption). Governance is currently single-maintainer (BDFL) transitioning to a Technical Steering Committee per [GOVERNANCE.md](GOVERNANCE.md).
31
+ ATR is published as a **Working Draft** at version `4.1.5`. The rule format defined in `SPEC.md` is stable and merged into open-source repos at Microsoft, Cisco, and Gen Digital, and integrated by community projects (MISP / CIRCL, OWASP Agent Security Regression Harness, SigmaHQ, FINOS Common Cloud Controls); full list with PR links in [§6 Adoption](#6-adoption). Governance is currently single-maintainer (BDFL) transitioning to a Technical Steering Committee per [GOVERNANCE.md](GOVERNANCE.md).
33
32
 
34
33
  All numbers in this document are sourced from [`data/stats.json`](data/stats.json), which is the canonical record of the project's current state. Where this README and `stats.json` disagree, `stats.json` is authoritative.
35
34
 
@@ -70,13 +69,14 @@ ATD is ATR's technique catalog: an enumeration of agent-runtime attack *techniqu
70
69
  - [8. Evaluation](#8-evaluation)
71
70
  - [9. Governance](#9-governance)
72
71
  - [10. Security](#10-security)
73
- - [11. Contributing](#11-contributing)
74
- - [12. Citation](#12-citation)
75
- - [13. Maintainers](#13-maintainers)
76
- - [14. Sponsorship](#14-sponsorship)
77
- - [15. License](#15-license)
78
- - [16. Acknowledgments](#16-acknowledgments)
79
- - [17. References](#17-references)
72
+ - [11. Telemetry](#11-telemetry)
73
+ - [12. Contributing](#12-contributing)
74
+ - [13. Citation](#13-citation)
75
+ - [14. Maintainers](#14-maintainers)
76
+ - [15. Sponsorship](#15-sponsorship)
77
+ - [16. License](#16-license)
78
+ - [17. Acknowledgments](#17-acknowledgments)
79
+ - [18. References](#18-references)
80
80
 
81
81
  ---
82
82
 
@@ -155,6 +155,7 @@ Zero-install scan of the current directory; the image bundles the CLI and pulls
155
155
  ```bash
156
156
  atr scan skill.md # scan a SKILL.md file
157
157
  atr scan mcp-config.json # scan MCP server config / event log
158
+ atr scan tools.json # scan an MCP tools/list result, one event per tool
158
159
  atr scan . --sarif > results.sarif
159
160
  atr convert generic-regex # export rules as JSON (all patterns)
160
161
  atr convert splunk # export to Splunk SPL
@@ -212,13 +213,15 @@ the next section covers. Neither implies the other.
212
213
 
213
214
  Each rule carries a maturity-driven **lane**, so a consumer can trade recall for precision instead of running every rule at one fixed threshold:
214
215
 
215
- | Lane | Fires | Intended use | FP on a 65K-sample benign gate |
216
+ | Lane | Fires | Intended use | FP on a benign gate |
216
217
  |---|---|---|---:|
217
- | `enforce` | `stable` only | Narrowest, highest-precision set — the one to run when blocking is on | ~0.24% |
218
+ | `enforce` | `stable` only | Narrowest, highest-precision set — the one to run when blocking is on | withdrawn |
218
219
  | `alert` | `stable` + `test` | Analyst / correlation | — |
219
- | `hunt` | all rules except `deprecated` | Broadest visibility (**default**) | ~9% |
220
+ | `hunt` | all rules except `deprecated` | Broadest visibility (**default**) | withdrawn |
220
221
 
221
- Lanes are opt-in and backward-compatible for detection: the default is `hunt`, so every integration sees exactly the rules it saw before. Selecting `enforce` raises precision by firing only the most mature rules — and therefore catches fewer attacks. Report false-positive rates lane-keyed (`enforce` ~0.24% / `hunt` ~9% on the 65K-sample benign gate), not as a single overall figure. That gate is a separate corpus from the per-source measurements in [§8 Evaluation](#8-evaluation).
222
+ Lanes are opt-in and backward-compatible for detection: the default is `hunt`, so every integration sees exactly the rules it saw before. Selecting `enforce` raises precision by firing only the most mature rules — and therefore catches fewer attacks. False-positive rates should always be reported lane-keyed rather than as a single overall figure, and that gate is a separate corpus from the per-source measurements in [§8 Evaluation](#8-evaluation).
223
+
224
+ **The two lane FP rates previously published here (`enforce` ~0.24% / `hunt` ~9% over a "65K-sample benign gate") are withdrawn, and should not be cited.** Three things were wrong with them. The gate was labelled 65,000 samples; both rates were actually measured on a 10,863-sample subsample of it. The benign corpus contained real jailbreak samples — material the rules are meant to catch, sitting in the set that defines a false positive — until the exclusion filter merged on 2026-08-04 (#373), so the corpus changed underneath both figures. And the ladder that produced the `hunt` figure depended on a file that is no longer in the repository, so that one cannot be reproduced at all. Re-measurement against the current benign corpus is pending; until it lands there is a gap here rather than a number.
222
225
 
223
226
  ### Detection and enforcement are separate switches
224
227
 
@@ -266,17 +269,20 @@ would be more dangerous than the request.
266
269
 
267
270
  ```bash
268
271
  atr guard # advisory: report only (the default)
269
- atr guard --lane enforce --blocking # blocking on, and only the 106 of 777
270
- # live rules that are maturity: stable
271
- # may fire (see the recall note below)
272
+ atr guard --lane enforce --blocking # blocking on, and only the live rules
273
+ # that are maturity: stable may fire
274
+ # (see the recall note below)
272
275
  ATR_LANE=enforce ATR_BLOCKING=1 atr guard # the same, via the environment
273
276
  ```
274
277
 
275
278
  **`--lane enforce` costs recall, and the cost is large.** It loads only
276
- `maturity: stable` rules: **106 of the 777 live rules** in this repository at the
277
- commit this paragraph was written against. That is the trade being made every
278
- time enforcement is recommended alongside it — narrower firing set, lower
279
- false-positive rate, fewer attacks caught. Rule counts move daily, and a
279
+ `maturity: stable` rules: **103 of the 823 live rules** at ATR 4.1.5, and each
280
+ weekly measurement records the count it ran with as `rules_in_lane` in its
281
+ `breakdown.enforce_lane`. That is the trade being made every time enforcement is
282
+ recommended alongside it — narrower firing set, lower false-positive rate, fewer
283
+ attacks caught. What it still catches, per corpus, is the second (`enforce`)
284
+ figure in the `Recall` cells of [§8 Evaluation](#8-evaluation). Rule counts move
285
+ daily, and a
280
286
  `grep`-based count is wrong here (eight rules quote the value as
281
287
  `maturity: "stable"`), so re-derive by parsing before quoting the figure
282
288
  anywhere:
@@ -296,9 +302,12 @@ PY
296
302
 
297
303
  Programmatic embedding: `new ATREngine({ lane })` for the lane,
298
304
  `new ActionExecutor({ adapter, blocking })` and
299
- `new HookHandler({ engine, executor, blocking })` for enforcement. **These are
300
- the only inputs** — the constructors ignore `ATR_LANE` and `ATR_BLOCKING`, so
301
- setting them will not configure an embedded engine. An unrecognised lane throws
305
+ `new HookHandler({ engine, executor, blocking })` for enforcement, and
306
+ `new ATREngine({ modelDecisions })` for whether a match a model decided (a
307
+ semantic judge, the embedding signal, the semantic layer) may enforce; it is
308
+ advisory by default. **These are the only inputs** — the constructors ignore
309
+ `ATR_LANE`, `ATR_BLOCKING` and `ATR_MODEL_DECISIONS`, so setting them will not
310
+ configure an embedded engine. An unrecognised lane throws
302
311
  a `TypeError`, and so does a non-boolean `blocking`: `blocking: "false"` is a
303
312
  string, and every non-empty string is truthy, so it used to switch enforcement
304
313
  **on** while reading as an explicit "off".
@@ -309,9 +318,9 @@ string, and every non-empty string is truthy, so it used to switch enforcement
309
318
  |---|---|---|
310
319
  | Specification (canonical pointer) | [SPEC.md](SPEC.md) | Resolves to the authoritative documents below |
311
320
  | Rule format spec (normative) | [SPEC.md](SPEC.md) | Rule format, identifier scheme, evaluation semantics |
312
- | Framework spec | [ATR-FRAMEWORK-SPEC.md](ATR-FRAMEWORK-SPEC.md) | Multi-layer detection framework design |
321
+ | Framework spec | [ATR-FRAMEWORK-SPEC.md](ATR-FRAMEWORK-SPEC.md) | **Superseded 2026-05-16 by [SPEC.md](SPEC.md).** Kept as a historical artifact; multi-layer detection framework design |
313
322
  | Machine-readable schema | [spec/atr-schema.yaml](spec/atr-schema.yaml) | Authoritative validation source |
314
- | Schema field reference | [docs/schema-spec.md](docs/schema-spec.md) | Human-readable schema docs |
323
+ | Schema field reference | [docs/schema-spec.md](docs/schema-spec.md) | **Superseded 2026-05-16 by [SPEC.md](SPEC.md).** Kept as a historical artifact; human-readable schema docs |
315
324
  | Quality standard | [docs/QUALITY-STANDARD.md](docs/QUALITY-STANDARD.md) | Rule promotion criteria (experimental → stable) |
316
325
  | Quality gate | [docs/QUALITY-GATE.md](docs/QUALITY-GATE.md) | Safety-gate semantics for community PRs |
317
326
  | Enforcement model | [docs/ENFORCEMENT-MODEL.md](docs/ENFORCEMENT-MODEL.md) | Lane and blocking switches, decision channels, migration (reference implementation, not normative) |
@@ -356,12 +365,12 @@ test_cases:
356
365
 
357
366
  ## 6. Adoption
358
367
 
359
- Production deployments and standards-body integrations, as of 2026-07-05 (every PR state re-verified against GitHub on that date):
368
+ Merged integrations, as of 2026-07-05 (every PR state re-verified against GitHub on that date):
360
369
 
361
370
  | Organization | Integration | Reference |
362
371
  |---|---|---|
363
- | Microsoft Agent Governance Toolkit | 287-rule expansion + weekly auto-sync (merged 2026-04-26); 15-rule PoC (merged 2026-04-13) | [PR #1277](https://github.com/microsoft/agent-governance-toolkit/pull/1277) · [PR #908](https://github.com/microsoft/agent-governance-toolkit/pull/908) |
364
- | Cisco AI Defense (skill-scanner) | Full rule pack in production (merged 2026-04-22); original PoC (merged 2026-04-03) | [PR #99](https://github.com/cisco-ai-defense/skill-scanner/pull/99) · [PR #79](https://github.com/cisco-ai-defense/skill-scanner/pull/79) |
372
+ | Microsoft Agent Governance Toolkit | Example directories in the AGT repository (ATR import example, merged 2026-05-18; ACS annotator adapter example, merged 2026-06-15). The rule-pack YAML from the earlier example PRs (#908, #1277) was removed upstream on 2026-07-30 (AGT PR #3451). | [PR #3025](https://github.com/microsoft/agent-governance-toolkit/pull/3025) · [PR #2308](https://github.com/microsoft/agent-governance-toolkit/pull/2308) |
373
+ | Cisco AI Defense (skill-scanner) | Full rule pack merged into the open-source scanner repository (2026-04-22); original PoC (merged 2026-04-03). This is a merge into that repository, not a statement about any vendor product. | [PR #99](https://github.com/cisco-ai-defense/skill-scanner/pull/99) · [PR #79](https://github.com/cisco-ai-defense/skill-scanner/pull/79) |
365
374
  | MISP (CIRCL) | Threat-intel cluster (galaxy, merged 2026-05-10) + rule-ID tagging vocabulary (taxonomies, merged 2026-05-10) | [galaxy #1207](https://github.com/MISP/misp-galaxy/pull/1207) · [taxonomies #323](https://github.com/MISP/misp-taxonomies/pull/323) |
366
375
  | Gen Digital Sage (Norton / Avast / AVG parent) | Rule pack merged 2026-05-11 | [PR #33](https://github.com/gendigitalinc/sage/pull/33) |
367
376
  | OWASP Agent Security Regression Harness | ATR referenced as the canonical agent-threat detection ruleset in the threat catalogue (merged 2026-05-11) | [PR #74](https://github.com/OWASP/agent-security-regression-harness/pull/74) |
@@ -373,13 +382,13 @@ Production deployments and standards-body integrations, as of 2026-07-05 (every
373
382
 
374
383
  ### Featured loop — Microsoft Copilot SWE Agent → ATR (2026-05-11)
375
384
 
376
- On 2026-05-07 MSRC published two Semantic Kernel CVEs (CVE-2026-26030 lambda+eval RCE, CVE-2026-25592 autostart file write). On 2026-05-11 06:07 UTC, Microsoft Copilot SWE Agent opened [microsoft/agent-governance-toolkit#1981](https://github.com/microsoft/agent-governance-toolkit/pull/1981) with regression-test fixtures *presuming ATR detection*. At 08:24 UTC the same day, ATR v2.1.2 (rules ATR-2026-00440 + ATR-2026-00441) was merged, npm-published, and GitHub-released. End-to-end: 2h 16m.
385
+ On 2026-05-07 MSRC published two Semantic Kernel CVEs (CVE-2026-26030 lambda+eval RCE, CVE-2026-25592 autostart file write). On 2026-05-10 the ATR maintainer filed [microsoft/agent-governance-toolkit#1937](https://github.com/microsoft/agent-governance-toolkit/issues/1937) mapping both CVEs to ATR rules. On 2026-05-11 06:07 UTC, after an AGT maintainer assigned that issue to it, Microsoft Copilot SWE Agent opened [microsoft/agent-governance-toolkit#1981](https://github.com/microsoft/agent-governance-toolkit/pull/1981), adding regression-test fixtures *presuming ATR detection* to the ATR community-rules example's test suite. By 08:24 UTC the same day, ATR v2.1.2 (rules ATR-2026-00440 + ATR-2026-00441) was merged, npm-published, and GitHub-released. PR open to rule merge: 2h 16m.
377
386
 
378
387
  This is Microsoft Copilot operating inside AGT, not an MSRC endorsement. Coverage is partial: 2 of 4 Copilot fixtures match the v2.1.2 canonical regex shape.
379
388
 
380
389
  ### Under maintainer review (open PRs)
381
390
 
382
- [NVIDIA garak #1676](https://github.com/NVIDIA/garak/pull/1676) · [NVIDIA NeMo Guardrails #1992](https://github.com/NVIDIA-NeMo/Guardrails/pull/1992) · [OWASP LLM Top 10 #814](https://github.com/OWASP/www-project-top-10-for-large-language-model-applications/pull/814) · [OWASP AI Exchange #181](https://github.com/OWASP/www-project-ai-security-and-privacy-guide/pull/181) · [Meta PurpleLlama #206](https://github.com/meta-llama/PurpleLlama/pull/206) · [BerriAI LiteLLM #28050](https://github.com/BerriAI/litellm/pull/28050) · [promptfoo #8529](https://github.com/promptfoo/promptfoo/pull/8529) · [Microsoft agent-framework #6528](https://github.com/microsoft/agent-framework/pull/6528) · [OpenAI guardrails-python #77](https://github.com/openai/openai-guardrails-python/pull/77) · [Cisco mcp-scanner #194](https://github.com/cisco-ai-defense/mcp-scanner/pull/194) · [Cisco a2a-scanner #14](https://github.com/cisco-ai-defense/a2a-scanner/pull/14) · [Splunk security_content #4128](https://github.com/splunk/security_content/pull/4128) · [NIST OSCAL oscal-content #338](https://github.com/usnistgov/oscal-content/pull/338) · [OpenTelemetry semantic-conventions-genai #165](https://github.com/open-telemetry/semantic-conventions-genai/pull/165)
391
+ [NVIDIA NeMo Guardrails #2251](https://github.com/NVIDIA-NeMo/Guardrails/pull/2251) · [BerriAI LiteLLM #28050](https://github.com/BerriAI/litellm/pull/28050) · [promptfoo #8529](https://github.com/promptfoo/promptfoo/pull/8529) · [Cisco mcp-scanner #194](https://github.com/cisco-ai-defense/mcp-scanner/pull/194) · [Splunk security_content #4128](https://github.com/splunk/security_content/pull/4128) · [NIST OSCAL oscal-content #338](https://github.com/usnistgov/oscal-content/pull/338) (awaiting NIST review) · [OpenTelemetry semantic-conventions-genai #165](https://github.com/open-telemetry/semantic-conventions-genai/pull/165)
383
392
 
384
393
  ### Integrating ATR into your project
385
394
 
@@ -402,10 +411,10 @@ ATR maps its rules onto established frameworks so adopters can answer "we deploy
402
411
  | Framework | Coverage | Mapping document |
403
412
  |---|---|---|
404
413
  | [OWASP Agentic Top 10 (2026)](https://genai.owasp.org/resource/owasp-top-10-for-agentic-applications-for-2026/) | 10/10 categories, 1,179 mappings across all 683 tagged rules | [docs/OWASP-AGENTIC-MAPPING.md](docs/OWASP-AGENTIC-MAPPING.md) |
405
- | [SAFE-MCP (OpenSSF)](https://github.com/safe-agentic-framework/safe-mcp) | 78/85 techniques (91.8%) | [docs/SAFE-MCP-MAPPING.md](docs/SAFE-MCP-MAPPING.md) |
414
+ | [SAF-MCP](https://github.com/secure-agentic-framework/saf-mcp) (Framework Model v2) | 55 of 78 active techniques have at least one reviewed ATR rule (partial or adjacent); candidate mappings, not validated by SAF | [docs/SAFE-MCP-MAPPING.md](docs/SAFE-MCP-MAPPING.md) |
406
415
  | [OWASP LLM Top 10 (2025)](https://owasp.org/www-project-top-10-for-large-language-model-applications/) | Per-rule references | Per-rule `references.owasp_llm` field |
407
416
  | [MITRE ATLAS](https://atlas.mitre.org/) | Per-rule references | Per-rule `references.mitre_atlas` field |
408
- | NIST AI RMF (community OSCAL catalog) | 4/4 functions covered, community catalog (NIST not endorsing) | [Agent-Threat-Rule/ai-rmf-oscal-catalog](https://github.com/Agent-Threat-Rule/ai-rmf-oscal-catalog) |
417
+ | NIST AI RMF (community OSCAL catalog) | Per-rule subcategory mappings; community catalog, not endorsed by NIST | [Agent-Threat-Rule/ai-rmf-oscal-catalog](https://github.com/Agent-Threat-Rule/ai-rmf-oscal-catalog) |
409
418
  | Five Eyes joint guidance (2026-05-01) | 5-category Careful-Adoption guidance → ATR's 10 categories | [docs/FIVE-EYES-MAPPING.md](docs/FIVE-EYES-MAPPING.md) |
410
419
 
411
420
  ### Detection categories
@@ -441,7 +450,9 @@ A full list lives in each rule's `references.cve` field. See [LIMITATIONS.md](LI
441
450
 
442
451
  ## 8. Evaluation
443
452
 
444
- Every number below is a version-pinned, reproducible measurement. The full
453
+ Every number in the table below is a version-pinned, reproducible measurement;
454
+ figures in the prose and footnotes are either quoted from those measurements or
455
+ are named one-off replays that say how they were produced. The full
445
456
  historical series for each source lives at
446
457
  [`data/measurements/<source>/`](data/measurements/) (immutable, append-only).
447
458
  The current pointer per source is `data/measurements/<source>/latest.json`.
@@ -449,35 +460,75 @@ Aggregated into [`data/stats.json`](data/stats.json) under `benchmarks[]`.
449
460
 
450
461
  | Source | Source version | Samples | Recall | Precision | FP rate | ATR version | Measured |
451
462
  |---|---|---:|---:|---:|---:|---|---|
452
- | AdvBench (LLM-attacks behaviors) | upstream-2026-06-16 | 520 | 2.1% | 100.0% | 0.0% | 3.5.0 | 2026-06-16 |
453
- | atr-self-test | internal | 341 | 96.6% | 100.0% | 0.0% | 3.5.12 | 2026-08-15 |
463
+ | AdvBench (LLM-attacks behaviors) | upstream-2026-10-15 | 520 | 5.6% (hunt) / 0.0% (enforce) | 100.0% | 0.0% | 4.1.5 | 2026-10-15 |
464
+ | atr-self-test | internal | 341 | 96.6% (hunt) / 3.4% (enforce) | 100.0% | 0.0% | 4.1.5 | 2026-10-15 |
454
465
  | autoresearch | internal-1054 | 1,054 | 15.1% | 100.0% | 0.0% | 3.0.0-alpha.0 | 2026-05-23 |
455
- | garak (in-the-wild jailbreaks) | inthewild-jailbreak-corpus-650 | 650 | 92.3% | 100.0% | 0.0% | 3.5.12 | 2026-08-15 |
456
- | garak-full (all probe families) | 23-families | 3,475 | 57.2% | 100.0% | 0.0% | 3.5.12 | 2026-08-15 |
457
- | hackaprompt | v1 | 4,780 | 69.6% | 100.0% | 0.0% | 3.5.0 | 2026-06-16 |
458
- | HarmBench (CAIS behaviors) | upstream-2026-06-16 | 400 | 2.8% | 100.0% | 0.0% | 3.5.0 | 2026-06-16 |
459
- | hh-rlhf (Anthropic red-team-attempts) [^stdcorpora] | snapshot-2026-04 | 4,957 | 1.5% | 100.0% | 0.0% | 3.5.11 | 2026-08-05 |
460
- | JailbreakBench (JBB-Behaviors) | upstream-2026-06-16 | 100 | 6.0% | 100.0% | 0.0% | 3.5.0 | 2026-06-16 |
461
- | llm-guard (Protect AI test fixtures) | corpus-2026-05-12 | 44 | 77.3% | 100.0% | 0.0% | 3.5.0 | 2026-06-16 |
462
- | MITRE ATLAS [^stdcorpora] | snapshot-2026-04 | 182 | 39.0% | 100.0% | 0.0% | 3.5.11 | 2026-08-05 |
463
- | NeMo Guardrails (NVIDIA test fixtures) | corpus-2026-05-12 | 6 | 100.0% | 100.0% | 0.0% | 3.5.0 | 2026-06-16 |
464
- | OWASP LLM Top 10 [^stdcorpora] | snapshot-2026-04 | 56 | 16.1% | 100.0% | 0.0% | 3.5.11 | 2026-08-05 |
465
- | PINT-format (deepset + Lakera Gandalf) [^pint] | v1 | 850 | 65.4% | 100.0% | 0.0% | 3.5.12 | 2026-08-15 |
466
- | PromptBench (academic adversarial) [^promptcorpora] | snapshot-2026-04 | 3,280 | 15.7% | 100.0% | 0.0% | 3.5.11 | 2026-08-05 |
467
- | promptfoo (red-team plugin fixtures) | corpus-2026-05-12 | 44 | 97.7% | 100.0% | 0.0% | 3.5.0 | 2026-06-16 |
468
- | PromptInject (academic adversarial) [^promptcorpora] | snapshot-2026-04 | 1,080 | 100.0% | 100.0% | 0.0% | 3.5.11 | 2026-08-05 |
469
- | SKILL.md benchmark (internal) [^skilllane] | internal-498 | 498 | 100.0% (hunt) / 0.0% (enforce) | 97.0% | 0.20% | 3.5.12 | 2026-08-15 |
470
- | Wild scan (OpenClaw + Skills.sh + Hermes + ClawHub) | corpus-2026-04-14 | 96,096 | — | 57.7% (floor) | 1.35% flag rate | 2.0.0 | 2026-04-14 |
471
-
472
- All detection corpora were (re-)measured against ATR 3.5.0 on 2026-06-16,
473
- except `autoresearch` (an internal predicted-rule corpus with no standalone
474
- runner) and the `Wild scan` snapshot, which retain their earlier measurements.
475
- `PromptInject` and `PromptBench` were re-measured against ATR 3.5.11 on
476
- 2026-08-05; see [^promptcorpora] for what moved and why. (An earlier
477
- re-measurement against 3.5.2 on 2026-06-25 fixed a harness event shape; the
478
- 0.0% rows before that were a harness artifact — the harness placed the prompt
479
- in a top-level field the engine does not read — not the engine's actual
480
- result.)
466
+ | garak (in-the-wild jailbreaks) [^garakcorpus] | inthewild-jailbreak-corpus-650 | 650 | 92.3% (hunt) / 0.9% (enforce) | 100.0% | 0.0% | 4.1.5 | 2026-10-15 |
467
+ | garak-full (all probe families) [^garakcorpus] | 23-families | 3,475 | 57.2% (hunt) / 0.5% (enforce) | 100.0% | 0.0% | 4.1.5 | 2026-10-15 |
468
+ | hackaprompt [^hackaprompt] | v1 | 4,780 | 83.1% (hunt) / 49.0% (enforce) | not cited [^hackaprompt] | not cited [^hackaprompt] | 4.1.5 | 2026-10-19 |
469
+ | HarmBench (CAIS behaviors) | upstream-2026-10-15 | 400 | 6.0% (hunt) / 0.0% (enforce) | 100.0% | 0.0% | 4.1.5 | 2026-10-15 |
470
+ | hh-rlhf (Anthropic red-team-attempts) [^stdcorpora] | snapshot-2026-04 | 4,957 | 1.4% (hunt) / 0.0% (enforce) | 100.0% | 0.0% | 4.1.5 | 2026-10-15 |
471
+ | JailbreakBench (JBB-Behaviors) | upstream-2026-10-15 | 100 | 3.0% (hunt) / 0.0% (enforce) | 100.0% | 0.0% | 4.1.5 | 2026-10-15 |
472
+ | llm-guard (2026-05-12 import) [^legacyvendor] | corpus-2026-05-12 | 44 | 63.6% (hunt) / 0.0% (enforce) | 100.0% | 0.0% | 4.1.5 | 2026-10-15 |
473
+ | MITRE ATLAS [^stdcorpora] | snapshot-2026-04 | 182 | 37.4% (hunt) / 1.1% (enforce) | 100.0% | 0.0% | 4.1.5 | 2026-10-15 |
474
+ | NeMo Guardrails (2026-05-12 import) [^legacyvendor] | corpus-2026-05-12 | 6 | 100.0% (hunt) / 0.0% (enforce) | 100.0% | 0.0% | 4.1.5 | 2026-10-15 |
475
+ | OWASP LLM Top 10 [^stdcorpora] | snapshot-2026-04 | 56 | 16.1% (hunt) / 0.0% (enforce) | 100.0% | 0.0% | 4.1.5 | 2026-10-15 |
476
+ | PINT-format (deepset + Lakera Gandalf) [^pint] | v1 | 850 | 65.4% (hunt) / 0.4% (enforce) | 100.0% | 0.0% | 4.1.5 | 2026-10-15 |
477
+ | PromptBench (academic adversarial) [^promptcorpora] | snapshot-2026-04 | 3,280 | 15.7% (hunt) / 0.0% (enforce) | 100.0% | 0.0% | 4.1.5 | 2026-10-15 |
478
+ | promptfoo (2026-05-12 import) [^legacyvendor] | corpus-2026-05-12 | 44 | 90.9% (hunt) / 6.8% (enforce) | 100.0% | 0.0% | 4.1.5 | 2026-10-15 |
479
+ | PromptInject (academic adversarial) [^promptcorpora] | snapshot-2026-04 | 1,080 | 100.0% (hunt) / 0.0% (enforce) | 100.0% | 0.0% | 4.1.5 | 2026-10-15 |
480
+ | SKILL.md benchmark (internal) [^skilllane] | internal-498 | 498 | 100.0% (hunt) / 0.0% (enforce) | 97.0% (hunt) | 0.20% (hunt) | 4.1.5 | 2026-10-15 |
481
+ | Vendor guardrail suites (pinned upstream tests) [^vendorsuites] | pinned-2026-10-19 | 146 | 77.0% (hunt) / 5.6% (enforce) | not cited [^vendorsuites] | not cited [^vendorsuites] | 4.1.5 | 2026-10-19 |
482
+ | Wild scan (OpenClaw + Skills.sh + Hermes + ClawHub) [^wildscan] | full-scan-v2-2026-04-13 | 101,280 | — | not measured | 1.42% flag rate | 2.0.0 | 2026-04-13 |
483
+
484
+ The `Vendor guardrail suites` row is the test cases of llm-guard, NeMo
485
+ Guardrails and promptfoo extracted by script from pinned upstream commits
486
+ ([`data/test-corpora/vendor-guardrail-suites/`](data/test-corpora/vendor-guardrail-suites/README.md)).
487
+ It is partly in-sample: 16 rules name one of the three vendors or carry the
488
+ `(vendor-corpus-import)` tag. Its measurement file re-measures the same samples
489
+ without them (`breakdown.in_sample_ablation.without_rules_naming_source`), the
490
+ ablation reference to cite beside the row: 61.9% (hunt) / 5.6% (enforce) at
491
+ ATR 4.1.5, measured 2026-10-19. That is not an out-of-sample figure either; see
492
+ [^vendorsuites]. The weekly run does not re-measure this row:
493
+ `bash scripts/vendor-suites/reproduce.sh --write` does. The three
494
+ `2026-05-12 import` rows are the earlier hand-assembled corpora; not all of
495
+ their samples come from the vendor they name ([^legacyvendor]).
496
+
497
+ A `Recall` cell gives two figures from the same measurement file. The first is
498
+ the `hunt` lane: the engine default, which loads every maturity, and the figure
499
+ `latest.json` and `data/stats.json` carry. The second is the `enforce` lane, the
500
+ one to run when blocking is on, which loads only `stable` rules: the same
501
+ samples through the same detection loop, recorded as `breakdown.enforce_lane`.
502
+ Read the second before deploying with blocking on; see [^skilllane].
503
+ `autoresearch` shows only the first, because its last measurement predates
504
+ the second's recording, and `Wild scan` has no recall at all. `Precision` and `FP rate` are `hunt`-lane figures, measured only on the
505
+ rows that contain benign samples (`atr-self-test`, `PINT-format` and `SKILL.md
506
+ benchmark`); elsewhere they are convention values or, for `Wild scan`, a flag
507
+ rate, not results (see Conventions below).
508
+
509
+ Whether a corpus was used to write the rules it scores has been examined for
510
+ `garak`, `garak-full`, `PromptInject`, `PromptBench` ([^garakcorpus],
511
+ [^promptcorpora]) and `hackaprompt` ([^hackaprompt]); all five are partly
512
+ closed-book. For `hackaprompt`, 20 rules name HackAPrompt in their YAML,
513
+ several mined from this exact sample; the same measurement file re-runs the
514
+ samples without them (`breakdown.in_sample_ablation.without_rules_naming_source`),
515
+ the ablation reference to cite beside the row: 28.7% (hunt) / 0.7% (enforce)
516
+ at ATR 4.1.5, measured 2026-10-19. It approximates an out-of-sample figure; it
517
+ is not one. The other rows are not
518
+ thereby out-of-sample: `atr-self-test` is built partly from the rules' own true
519
+ positives, and the rules authored `(vendor-corpus-import)` name the `promptfoo`
520
+ and `llm-guard` fixtures as their source.
521
+
522
+ A weekly run re-measures every row except the following, which keep their
523
+ earlier measurements: `hackaprompt`, whose corpus (a gated HuggingFace dataset) is not
524
+ provisioned in CI, so the run skips it and the row is re-measured locally with
525
+ `npm run eval:hackaprompt`; `autoresearch`, an internal predicted-rule
526
+ corpus with no standalone runner; and the `Wild scan` snapshot. The table is
527
+ re-rendered from the measurement files; the prose and footnotes are not, so a
528
+ figure there holds for the version it names. Before the weekly run, every row
529
+ except `autoresearch` and the `Wild scan` had been (re-)measured against ATR
530
+ 3.5.0 on 2026-06-16; the re-measurements since are described below, and
531
+ [^promptcorpora] covers what moved for `PromptInject` and `PromptBench`.
481
532
 
482
533
  `PromptInject` and `PromptBench` were re-measured against ATR 3.5.2 on
483
534
  2026-06-25 after a fix to the recall-analysis harness event shape; the prior
@@ -485,14 +536,55 @@ result.)
485
536
  top-level field the engine does not read), not the engine's actual result.
486
537
  `hh-rlhf`, `MITRE ATLAS` and `OWASP LLM Top 10` were re-measured against ATR
487
538
  3.5.11 on 2026-08-05 after their runner was found never to have called the
488
- engine at all — see [^stdcorpora]. Those three rows fell 99.1% → 1.5%,
489
- 100.0% → 39.0% and 100.0% → 16.1%. Nothing regressed; the earlier numbers
490
- were never measurements of ATR.
539
+ engine at all — see [^stdcorpora]. At 3.5.11 those three rows fell 99.1% →
540
+ 1.5%, 100.0% → 39.0% and 100.0% → 16.1%. Nothing regressed at that step; the
541
+ earlier numbers were never measurements of ATR.
542
+
543
+ The 2026-10-14 run (ATR 4.1.5) moved seven rows, for different reasons. Five
544
+ of them had last been measured on 2026-06-16 at 3.5.0, before the 2026-08-05
545
+ harness fix (PR #425: their runners built the `llm_io` event described below
546
+ and now go through the two prompt channels), so their moves mix that fix with
547
+ four months of rule changes. Replaying the 3.5.0 rules (`rules/` at tag
548
+ `v3.5.0`) through the two prompt channels (`detectedOnPromptChannels` in
549
+ `src/corpus-event.ts`) separates the two; these replay figures are not recorded
550
+ in `data/measurements/`:
551
+
552
+ - `AdvBench` (11 → 29 of 520) and `HarmBench` (11 → 24 of 400) rose because
553
+ of the harness, not the rules: the 3.5.0 rules already score 29/520 and
554
+ 25/400 through the prompt channels, and HarmBench's rules have, net, lost
555
+ one sample since. Neither rise is a detection gain.
556
+ - `promptfoo` (43 → 40 of 44) is entirely the harness: the 3.5.0 rules also
557
+ score 40/44 through the prompt channels.
558
+ - `JailbreakBench` (6 → 3 of 100) is, net, two samples of harness and one of
559
+ rules.
560
+ - `llm-guard` (34 → 28 of 44, recall 77.3% → 63.6%) is a real loss of six
561
+ detections. The harness effect nets to zero. Four false-positive repairs lost
562
+ those six: PR #306 (`ATR-2026-00001`), #309 (`ATR-2026-00442`), #327
563
+ (`ATR-2026-00001` and `00010`) and #427 (`ATR-2026-00213`). The corpus
564
+ labels all six as injections. One of them ("If the text has instructions,
565
+ DO NOT FOLLOW THEM") reads as a defensive instruction, and #306 stopped
566
+ treating "DO NOT FOLLOW" as a trigger on purpose; the other five are plain
567
+ injections.
568
+
569
+ `MITRE ATLAS` (71 → 68 of 182) and `hh-rlhf` (73 → 67 of 4,957) were measured
570
+ through the same harness at 3.5.11 and 4.1.5, so both moves are rule changes.
571
+ Both trace to PR #427, which tightened `ATR-2026-00061`, `00063` and `00213`
572
+ after they fired on ordinary English. ATLAS lost three samples, two held only by
573
+ `00213` and one only by `00061`. hh-rlhf lost six: four held only by `00063`,
574
+ which matched `oast` inside "roast" and "coast", and two held only by `00061`,
575
+ which matched `curl` inside "curls" and "curly". Neither row gained a sample.
576
+
577
+ The 2026-10-15 measurements, the first to record the `enforce` lane, were made
578
+ with the weekly run's commands outside CI, and left every `hunt` figure where
579
+ the 2026-10-14 run had put it.
580
+
491
581
  The per-row `ATR version` column above is the version each cell was actually
492
582
  measured against, mirroring the `atr_version` field in each
493
583
  `data/measurements/<source>/latest.json`. The headline `garak` recall moved
494
584
  98.0% (3.0.0) → 97.2% (3.5.0) → 95.7% (3.5.8) → 92.5% (3.5.11) → 92.3%
495
- (3.5.12). The 3.5.8 →
585
+ (3.5.12); the 2026-10-14 and 2026-10-15 runs at 4.1.5 also gave 600/650. Read
586
+ that figure as partly closed-book: [^garakcorpus] replays it without the rules
587
+ written from this corpus. The 3.5.8 →
496
588
  3.5.11 step is a real loss of detections, not a change in how they are counted:
497
589
  PR #327 tightened an over-broad persona regex in `ATR-2026-00001` that had been
498
590
  false-positiving on benign "you are now an expert …" prose, and tightening it
@@ -511,71 +603,148 @@ run exists anywhere in the repository. `data/measurements/garak/latest.json`
511
603
  pointed, the entire time, at 95.7% measured on 3.5.8; `garak-full`'s pointed at
512
604
  38.3% on 3.5.0, while a never-referenced 3.5.8 file sat unread in the same
513
605
  directory. So the claims failed this project's own rule that every published
514
- number is a version-pinned, reproducible measurement. It was also produced by a harness
606
+ number is a version-pinned, reproducible measurement. The 91.5% was also produced by a harness
515
607
  that built an event of `type: 'llm_io'`, which is a rule *source* and not an
516
608
  `AgentEventType`; `src/engine.ts` could not map it and so ran every rule of
517
609
  every source against the event instead of the two source types the harness
518
- documented itself as using. The 92.3% above replaces it: measured on
519
- 2026-08-15 at 784 rules through `llm_input` + `tool_response`, the two channels
520
- `src/hook-handler.ts` can actually deliver a prompt on, and written to
610
+ documented itself as using. The figure that replaced them was first measured on
611
+ 2026-08-05 at 780 rules (601/650) and re-measured on 2026-08-15 at 784 rules
612
+ (600/650, written to
521
613
  `data/measurements/garak/2026-08-15_garak-inthewild-jailbreak-corpus-650_atr-3-5-12.json`
522
- with the commit that produced it. Under the wider shape set used for
523
- false-positive measurement (which also runs `engine.scanSkill()`) the same
524
- corpus scores 92.9%; that number is recorded in the measurement's `breakdown`
525
- and is deliberately not the published one, because a garak prompt never reaches
614
+ with the commit that produced it), both through `llm_input` + `tool_response`,
615
+ the two channels `src/hook-handler.ts` can actually deliver a prompt on; every
616
+ `garak` measurement since, including the 2026-10-14 one at ATR 4.1.5, goes
617
+ through the same two channels. Under the wider shape set used for
618
+ false-positive measurement (which also runs `engine.scanSkill()`) the corpus
619
+ scores a little higher, 92.9% at both 3.5.12 and 4.1.5, recorded as
620
+ `wide_shape_recall` in each measurement's `breakdown`; that number is
621
+ deliberately not the published one, because a garak prompt never reaches
526
622
  production as a SKILL.md. `.github/workflows/eval.yml` now runs
527
623
  `scripts/check-benchmark-citations.ts`, which fails CI if this table or
528
624
  `stats.json` cites a number no measurement file backs.
529
625
  See [CHANGELOG.md](CHANGELOG.md).
530
626
 
531
- [^skilllane]: **Lane matters more here than anywhere else in this table.** The
532
- 100% figure is the `hunt` lane, which is the engine default and loads every
533
- maturity. In the `enforce` lane — the auto-block one, where a detection stops
534
- the agent with no human in the loop — this corpus scores **0%**, and the
535
- reason is structural rather than a tuning problem: of the 38 rules carrying
536
- `scan_target: skill`, **all 38 are `maturity: test`, and none is `stable`.**
537
- The enforce lane only loads `stable`, so it loads no skill-scanning rule at
538
- all, and 0 of 32 malicious samples fire. Anyone reading "100% recall on
539
- SKILL.md" and deploying in enforce mode would be forming a completely wrong
540
- expectation, so both numbers are shown. Verified on this commit with
541
- `grep`-free counting over `rules/**/*.yaml`.
627
+ [^skilllane]: **The first figure in each `Recall` cell is the `hunt` lane, and
628
+ the lane can change the answer completely.** `hunt` is the engine default
629
+ and loads every maturity. The `enforce` lane — the one to run when blocking
630
+ is on, where a detection can stop the agent with no human in the loop —
631
+ loads only `stable` rules, and its figure is the second one in the cell.
632
+ Since 2026-10-15 every measurement records it as `breakdown.enforce_lane`
633
+ in the same file as the headline: the same samples through the
634
+ benchmark's own detection loop (`engine.scanSkill()` for SKILL.md, the two
635
+ prompt channels for `garak`), on `new ATREngine({ lane: 'enforce' })`, with
636
+ `rules_in_lane` giving how many rules that lane loaded. It counts
637
+ detections, and a detection is not necessarily a block: the verdict blocks
638
+ only on severity and confidence (`src/verdict.ts`), so the figure is an
639
+ upper bound on what blocking stops.
640
+ `scripts/check-benchmark-citations.ts` fails CI when a cell's enforce
641
+ figure differs from that record or is left out. For SKILL.md the low figure
642
+ is structural rather than a tuning problem: at ATR 4.1.5 all 39 rules
643
+ carrying `scan_target: skill` are `maturity: test` and none is
644
+ `maturity: stable`, so
645
+ the enforce lane loads none of the rules written specifically for SKILL.md
646
+ files. Anyone reading "100% recall on SKILL.md" and deploying with
647
+ blocking on would be forming a completely wrong expectation. Until
648
+ 2026-10-15 the weekly run measured only the `hunt` lane, and the enforce
649
+ figures this footnote quoted were one-off replays.
542
650
 
543
651
  [^pint]: The `PINT-format` row is **not** a run of Lakera's official PINT
544
652
  benchmark. That corpus is private and roughly 5x larger; this row is a
545
653
  self-built 850-sample corpus in PINT's format, assembled from
546
654
  `deepset/prompt-injections` (660) and `Lakera/gandalf_ignore_instructions`
547
- (190). It also carries a scope caveat worth stating plainly: only **63 of
548
- 784 rules** fire on it at all, and `ATR-2026-00001` alone accounts for 226
549
- of the 295 detections. Read it as a prompt-injection-family score, not as
655
+ (190). It also carries a scope caveat worth stating plainly: at 3.5.12 only
656
+ **62 of 784 rules** fired on it at all, and `ATR-2026-00001` alone
657
+ accounted for 226 of the 295 detections. The 3.5.12 eval report
658
+ (`data/pint-benchmark/pint-eval-report.json`) listed 63 per-rule entries,
659
+ but one of those is `tier2.5-embedding-match` — the Tier 2.5 embedding
660
+ stage, not a rule. Read it as a prompt-injection-family score, not as
550
661
  ATR's overall coverage. The row moved 63.6% → 60.3% between 3.5.0 and
551
662
  3.5.11 for the same reason `garak` moved: PR #327 tightened
552
663
  `ATR-2026-00001`'s persona-switch regex to stop it false-positiving on
553
- benign prose. Precision moved 99.7% → 100% over the same span. It then
554
- recovered 60.3% → 65.4% at 3.5.12 (2026-08-15) as rules added since
555
- 3.5.11 widened the family: rules firing on this corpus went 29 → 63 while
556
- `ATR-2026-00001`'s own contribution stayed at 226, so the gain came from
557
- the tail, not from re-loosening the one dominant rule. Precision held at
558
- 100% (0 FP on the 399 benign samples).
559
-
560
- [^promptcorpora]: **Read both of these as closed-book scores.** Until
561
- 2026-08-05 the harness recorded its per-rule breakdown as the literal
562
- string `"unknown"` (it read `m.rule_id` off an engine match that carries
563
- `m.rule.id`), so no published version of these rows could say which rules
564
- produced them. With attribution restored:
565
- **PromptInject 100.0%** is produced by **7 of 780 rules**. Five of those
664
+ benign prose. Through 3.5.11 the runner used a legacy event shape under
665
+ which the engine's source-type filter dropped every non-`llm_io` rule
666
+ before matching, so those figures, precision included, were measured over
667
+ roughly half the rulebase. The rise to 65.4% at 3.5.12 (2026-08-15) is
668
+ that harness changing, not the rules: that run was the first through the
669
+ canonical shape (PR #427), which admits every rule. Replayed through the
670
+ canonical shape, the 3.5.11 rules score 300 detections against 272 under
671
+ the legacy shape (the published 3.5.11 figure), so the rules changed
672
+ between 3.5.11 and 3.5.12 lost five detections on this corpus, while
673
+ `ATR-2026-00001`'s own contribution stayed at 226. Precision on the
674
+ canonical shape at 3.5.12 was 100% (0 FP on the 399 benign samples).
675
+
676
+ [^garakcorpus]: **Read this row as partly closed-book.** At ATR 4.1.5 (the rules
677
+ on `main` at `32bd48966`, 830 rule files), many of the rules that fire on
678
+ this corpus had been written from it, so its `hunt` figure is not an
679
+ out-of-sample result. A rule is counted as written from the corpus when its
680
+ own YAML shows the link, in either of two ways. 102 rules name the corpus in
681
+ their author, title, description or references (matching
682
+ `/inthewild|daninthewild|in-the-wild (jailbreak|corpus)/i`): an `author` of
683
+ `ATR Community (via NVIDIA garak in-the-wild corpus)` or
684
+ `(via NVIDIA garak dan.DanInTheWild probe)` — garak's `dan.DanInTheWild`
685
+ probes draw their prompts from this corpus — or, for example,
686
+ `ATR-2026-00307`, whose description cites `inthewild_jailbreak_llms.json`.
687
+ 28 more give garak as their source in their `author` (22
688
+ `ATR Community (garak-import)`, 4 `(via NVIDIA garak dan probe)`, 2
689
+ `(via ATR garak pipe)`) and quote one of these 650 prompts in their own
690
+ true-positive test cases: 60 or more consecutive characters, compared after
691
+ lower-casing and collapsing whitespace. Of the 130, 126 fire here, and 175
692
+ of the 600 prompts the full rule set detected were detected by them alone.
693
+ **Replayed without them, recall on the same 650 prompts was 65.4% (425 of
694
+ 650).** Without only the 102 that name the corpus, it was 81.5% (530 of
695
+ 650). A looser reading goes lower. `ATR-2026-00003`, a generic DAN rule in
696
+ ATR since v0.1.0 (2026-03-09), before any rule here was written from garak,
697
+ also quotes this corpus: one of its test cases is the public DAN opener,
698
+ which 7 of these prompts contain. It detects 259 of the 650, almost all of
699
+ them without that text, so it is not counted; counting it gave 51.8% (337
700
+ of 650). Two rules authored `(via NVIDIA garak dan probe)` neither name nor
701
+ quote the corpus (`ATR-2026-00273` and `00304` cite garak's DAN templates);
702
+ counting them too would move 65.4% to 64.9%, by arithmetic over the full
703
+ run's per-prompt matches rather than by a replay. The other figures are
704
+ **replays**, not measurements: each was run once, on 2026-10-15, with the
705
+ rule files removed from a copy of `rules/` and every prompt sent through the
706
+ two channels the published figure uses (`llm_input` and `tool_response`, as
707
+ `scripts/eval-garak-inthewild.ts` does). Nothing in `data/measurements/`
708
+ records them, and nothing refreshes them. None of the 130 is
709
+ `maturity: stable`, so the `enforce` figure does not rest on them.
710
+ `garak-full` contains these 650 prompts twice; see the paragraph on the two
711
+ `garak` rows below.
712
+
713
+ [^promptcorpora]: **Read both of these as closed-book scores.** Both rows are
714
+ measured on a legacy event, `{ type: 'llm_io', content,
715
+ fields.user_input }`. `llm_io` is a rule source, not an event type the
716
+ engine can route, so source filtering is off and every rule of every
717
+ source runs, on only those two fields. The other prompt-corpus rows
718
+ (`garak`, `AdvBench`, `HarmBench`, `JailbreakBench`, `llm-guard`,
719
+ `NeMo Guardrails` and `promptfoo`) go through the two prompt channels
720
+ instead. Each measurement's `breakdown.attribution.canonical_shapes` gives
721
+ the same corpus on the wider shape set the benign false-positive gate uses,
722
+ which also runs `engine.scanSkill()`; there PromptBench scores 54.8%, 1,633
723
+ of its 1,798 detections coming from one tool-argument rule,
724
+ `ATR-2026-00066`. That figure is deliberately not the published one, for
725
+ the reason given for `garak` above. Until 2026-08-05 the harness
726
+ recorded its per-rule breakdown as the literal string `"unknown"` (it read
727
+ `m.rule_id` off an engine match that carries `m.rule.id`), so no published
728
+ version of these rows could say which rules produced them. With
729
+ attribution restored, at 3.5.11:
730
+ **PromptInject 100.0%** was produced by **7 of 780 rules**. Five of those
566
731
  seven — `ATR-2026-00506`, `00507`, `00508`, `00509`, `00518` — carry
567
732
  `author: ATR Community (PromptInject corpus)`: they were written *from*
568
733
  this corpus, which has four attack classes built from a handful of
569
- templates. Remove those five and recall on the same 1,080 samples is
570
- **9.7%**. The concentration is real but not fragile: the top rule
571
- (`ATR-2026-00508`, 968/1,080 samples) is the sole detector on none of
572
- them, so deleting it leaves recall at 100%; only `00518` (45 samples) and
573
- `00507` (27) are sole detectors of anything. On the 5,352-sample benign
574
- gate, `00506` / `00507` / `00518` are 0-FP; `00508` has 4 FP, `00509` 3,
575
- `ATR-2026-00001` 19, `ATR-2026-00400` 1.
576
- **PromptBench 15.7%** is produced by **3 of 780 rules** (`ATR-2026-00520`,
734
+ templates. Remove those five and recall on the same 1,080 samples was
735
+ **9.7%**. The concentration was real but not fragile: the top rule
736
+ (`ATR-2026-00508`, 968/1,080 samples) was the sole detector on none of
737
+ them, so deleting it left recall at 100%; only `00518` (45 samples) and
738
+ `00507` (27) were sole detectors of anything. On the 5,352-sample benign
739
+ gate, `00506` / `00507` / `00518` were 0-FP; `00508` had 4 FP, `00509` 3,
740
+ `ATR-2026-00001` 19, `ATR-2026-00400` 1. At 4.1.5 nine rules fire on
741
+ PromptInject. One of them, `ATR-2026-02846`, was added since and was
742
+ authored from PromptInject attack clusters (its title says so); it matches
743
+ 780 of the 1,080 samples, so at 4.1.5 the closed-book figure needs it
744
+ removed as well as the five above.
745
+ **PromptBench 15.7%** was produced by **3 of 780 rules** (`ATR-2026-00520`,
577
746
  `00519`, `00202`), all three 0-FP on the same benign gate. Two of the three
578
- were mined from PromptBench; without them recall is **2.4%**.
747
+ were mined from PromptBench; without them recall was **2.4%**.
579
748
  The PromptBench row moved 23.2% (3.5.2) → 15.7% (3.5.11) and the loss is
580
749
  fully attributable: 247 samples were held only by rules that have since
581
750
  been precision-repaired, and re-running each rule version by version pins
@@ -591,6 +760,38 @@ See [CHANGELOG.md](CHANGELOG.md).
591
760
  columns are properties of the corpus, not measurements — read them
592
761
  together with the benign-gate FP counts above, never alone.
593
762
 
763
+ [^vendorsuites]: **Partly in-sample; precision not cited.** 126 attack and 20
764
+ benign test cases (llm-guard 46 / 16, NeMo Guardrails 22 / 4, promptfoo 58 / 0),
765
+ each traceable to repo, commit, path and line in
766
+ [`manifest.json`](data/test-corpora/vendor-guardrail-suites/manifest.json). At ATR
767
+ 4.1.5 (measured 2026-10-19) recall is 97/126 (hunt), 92/126 (alert) and 7/126
768
+ (enforce). Without the 16 rules whose YAML names promptfoo, llm-guard or NeMo, or
769
+ carries the `(vendor-corpus-import)` tag, it is 78/126 = 61.9% (hunt), 70/126 =
770
+ 55.6% (alert) and 7/126 = 5.6% (enforce); per vendor in the hunt lane, llm-guard
771
+ 26/46, NeMo Guardrails 20/22, promptfoo 32/58. That ablation is the reference
772
+ to cite beside the row, and it still overstates out-of-sample recall, by an
773
+ amount the same file measures (`breakdown.overlaps`): 35 further rules carry a
774
+ 40-character run of some vendor sample's text in their YAML, and 23 of the 78
775
+ hunt-lane detections in the ablation are by such a rule on the sample it
776
+ overlaps; removing those rules too gives 58/126 = 46.0% (hunt) / 5/126 = 4.0%
777
+ (enforce). Five NeMo Guardrails attack samples (DAN-style jailbreaks) share 58%
778
+ to 99% of their text with a prompt in `garak-full`'s `dan.json` and
779
+ `inthewild.json`, a corpus other rules were mined from; all five are detected in
780
+ the hunt lane of the ablation. The vendors ship only 20 benign cases (the hunt
781
+ lane flags 1, the enforce lane 0), too few for a precision or FP-rate claim, so
782
+ the cells say "not cited" and `data/stats.json` carries `null` for both
783
+ (`breakdown.precision_not_citable`).
784
+
785
+ [^legacyvendor]: These three rows are the corpora assembled by hand on
786
+ 2026-05-12 and attributed to the vendors' test suites. A script-based audit
787
+ ([`legacy-corpora-provenance.json`](data/test-corpora/vendor-guardrail-suites/legacy-corpora-provenance.json))
788
+ checked each of their 94 samples against the vendor repo it names, at a pinned
789
+ commit: 79 occur verbatim in the vendor file they name, 3 are truncated or
790
+ edited from it, 2 are another vendor's test cases, and 10 are not found
791
+ verbatim anywhere in the vendor repository at the pinned commit. Read them as ATR-assembled corpora seeded from vendor tests, not as the
792
+ vendors' fixtures; the `Vendor guardrail suites` row is the script-extracted
793
+ replacement.
794
+
594
795
  [^stdcorpora]: Until 2026-08-05 these three rows were **not produced by the ATR
595
796
  engine**. `scripts/eval-std-corpora.ts` walked `rules/` with a YAML parser,
596
797
  kept only `operator: regex` conditions, flattened every condition of every
@@ -612,56 +813,72 @@ See [CHANGELOG.md](CHANGELOG.md).
612
813
  and the canonical event shapes in `scripts/lib/corpus-event.ts` — the same
613
814
  entry point the false-positive gates use. Reproduce with
614
815
  `npx tsx scripts/eval-std-corpora.ts`. Read the new numbers with the same
615
- scope caveat as `PINT-format`: on ATLAS, `ATR-2026-00061` alone accounts
616
- for 59 of the 71 detections (32.4% of the corpus), and ATLAS procedures are
816
+ scope caveat as `PINT-format`: on ATLAS at 3.5.11, `ATR-2026-00061` alone
817
+ accounted for 59 of the 71 detections (32.4% of the corpus; 58 of 68 at
818
+ 4.1.5), and ATLAS procedures are
617
819
  prose *descriptions* of attacks rather than attack payloads, so this row
618
820
  measures ATR against attack write-ups, not against traffic.
619
821
 
620
- Two `garak` rows are deliberate: the headline `garak` source tracks NVIDIA's
621
- in-the-wild jailbreak corpus (narrow, the ~92% number ATR cites publicly,
622
- refreshed 2026-08-15 against ATR 3.5.12), while `garak-full` tracks
623
- every probe family in upstream garak (broad, includes families like
624
- `badchars`, `dra`, `encoding` that ATR's regex layer intentionally does
625
- not target). Both are valid measurements against different corpora; they
626
- are kept as separate streams so the broad-corpus number does not silently
627
- overwrite the headline.
628
-
629
- The single-digit recall on AdvBench / HarmBench / JailbreakBench / hh-rlhf is
822
+ Two `garak` rows are deliberate, and they are not independent. The headline
823
+ `garak` source tracks NVIDIA's in-the-wild jailbreak corpus (narrow; this is the
824
+ number ATR cites publicly, and [^garakcorpus] gives how much of it rests on
825
+ rules written from that corpus). `garak-full` runs every non-empty family file
826
+ extracted from upstream garak (23 at ATR 4.1.5), and it contains the
827
+ in-the-wild corpus twice: as its `inthewild` family, and as 648 of the 664
828
+ prompts of its `dan` family. In the 2026-10-15 measurement those two families
829
+ supplied 1,214 of its 1,987 `hunt` detections. Rules have also been written
830
+ from most of its other families (an `author` of
831
+ `ATR Community (via NVIDIA garak <family> probe)`, 12 of them from `badchars`,
832
+ `dra` and `encoding`), so read `garak-full` as partly closed-book too.
833
+ [docs/RULE-PRODUCTION.md](docs/RULE-PRODUCTION.md) §2.3–2.4 covers its other
834
+ limits: six of its families are content-safety and hallucination probes, four
835
+ are the same 16 unencoded seed sentences, and 2,739 of its 3,475 prompts are
836
+ distinct. The two are kept as separate streams so neither figure stands in for
837
+ the other.
838
+
839
+ The low recall on AdvBench / HarmBench / JailbreakBench / hh-rlhf is
630
840
  honest and expected. Those four corpora test **LLM safety alignment** (does the
631
841
  model refuse harmful requests like "explain how to make a bomb"), not
632
842
  **prompt-injection detection** (the surface ATR's regex layer targets).
633
- ATR's near-zero recall on these corpora confirms the layering thesis:
634
- regex catches structured attack patterns, alignment + content moderation
635
- catch natural-language harm requests. The numbers are recorded for
843
+ ATR's low recall on these corpora is consistent with the layering view
844
+ (this section does not measure what any other layer catches): regex catches
845
+ structured attack patterns, alignment + content moderation catch
846
+ natural-language harm requests. The numbers are recorded for
636
847
  completeness and so any future ATR rule additions in the harm-category
637
848
  space can be measured against a documented baseline. `hh-rlhf` is Anthropic's
638
- red-team-attempts set — the same genre as the other three — and its 1.5% now
639
- sits with their 2.1% / 2.8% / 6.0% instead of contradicting them at 99.1%.
849
+ red-team-attempts set — the same genre as the other three — and its
850
+ low recall now sits with theirs instead of contradicting them at
851
+ 99.1%.
640
852
 
641
853
  Conventions: 100%-adversarial corpora contain no benign samples, so they have
642
854
  no true-negative population and **`precision` and `fp_rate` cannot be computed
643
855
  from them**. The measurement schema requires numbers, so those rows record the
644
856
  convention `precision 1` / `fp_rate 0`. Read the `Precision` and `FP rate`
645
- columns as "not applicable to this corpus", not as results — the real
646
- precision numbers come from the benign gate, lane-keyed, below. Wild-scan has
647
- no ground-truth labels either; its `precision` column reports a precision floor
648
- computed as `confirmed_malware / flagged`. Every cell is sourced from a
649
- specific measurement file — see `data/measurements/<source>/latest.json` for
650
- the file path and `metadata.measurement_file` in `stats.json` for the absolute
651
- repo path.
857
+ columns as "not applicable to this corpus", not as results. No benign-gate
858
+ precision numbers are published at present: the lane FP rates once quoted are
859
+ withdrawn (see below). Wild-scan has no ground-truth labels either; its
860
+ `Precision` cell reads `not measured` because the precision floor once
861
+ published for it is withdrawn (see [^wildscan]), and its `FP rate` cell is a
862
+ flag rate, flagged divided by scanned, not a false-positive rate. Every cell
863
+ except the `Wild scan` row (taken from the raw scan file; see [^wildscan]) is
864
+ sourced from a specific measurement file: `data/measurements/<source>/latest.json`
865
+ names it, and `benchmarks[].measurement_file` in `data/stats.json` gives its
866
+ path.
652
867
 
653
868
  False-positive rate is lane-keyed as of v3.5.0, not a single overall figure.
654
- ATR ships detection lanes (`enforce` / `alert` / `hunt`); on a 65K-sample
655
- benign gate the `enforce` lane (stable + `confirm`-gated rules) holds ~0.24%
656
- FP, while the default `hunt` lane (all rules) runs ~9% FP. Per-corpus `FP rate`
657
- cells above are measured in the default `hunt` lane. See [CHANGELOG.md](CHANGELOG.md)
869
+ ATR ships detection lanes (`enforce` / `alert` / `hunt`). The specific lane FP
870
+ rates previously quoted here are withdrawn and awaiting re-measurement — see
871
+ the note in the lanes section above for why. Where a row has benign samples
872
+ (`atr-self-test`, `PINT-format`, `SKILL.md benchmark`), its `FP rate` cell is a
873
+ `hunt`-lane measurement; on every other row it is a convention value or, for
874
+ `Wild scan`, a flag rate. See [CHANGELOG.md](CHANGELOG.md)
658
875
  (v3.5.0) for the lane definitions.
659
876
 
660
877
  ```bash
661
878
  npm test # engine + rule unit tests (vitest)
662
879
  npm run eval # atr-self-test eval (writes a measurement)
663
880
  npm run eval:pint # PINT benchmark (writes a measurement)
664
- npx tsx src/eval/run-hackaprompt-benchmark.ts # HackAPrompt
881
+ npm run eval:hackaprompt # HackAPrompt (gated dataset; writes a measurement)
665
882
  npx tsx src/eval/skill-benchmark.ts # SKILL.md (498 labeled)
666
883
  npx tsx scripts/eval-std-corpora.ts # HH-RLHF + OWASP + ATLAS
667
884
  npx tsx scripts/atr_recall_analysis.ts # PromptBench + PromptInject
@@ -674,9 +891,29 @@ npx tsx scripts/measurement/verify.ts # validate every measurement file
674
891
  npx tsx scripts/sync-stats-from-measurements.ts # refresh stats.json benchmarks[]
675
892
  ```
676
893
 
677
- Raw data: [`data/full-scan-v2-2026-04-14.json`](data/full-scan-v2-2026-04-14.json) (96,096-skill scan; 1,302 flagged, 552 confirmed malicious after manual review); full malware-campaign report in [`docs/research/openclaw-malware-campaign-2026-04.md`](docs/research/openclaw-malware-campaign-2026-04.md).
678
-
679
- ATR is honest about what it cannot detect. Regex catalogs miss paraphrased attacks, semantic rephrasings of credential exfiltration, and novel attack shapes not present in the training corpus. `PromptBench` (3,280 character- and word-level robustness perturbations) is a different threat class from prompt injection and sits largely outside ATR's content scope; ATR still matches the 23.2% that carry injection-shaped payloads, at 100% precision. See [LIMITATIONS.md](LIMITATIONS.md) for the documented evasion-test corpus (64 techniques as of 2026-05) and the layering recommendation: ATR is the content layer; pair with credential brokering, sandbox execution, and human-in-the-loop for high-blast-radius actions.
894
+ Raw data: [`data/full-scan-v2-2026-04-14.json`](data/full-scan-v2-2026-04-14.json) — 101,280 skills scanned, 1,434 flagged, engine 2.0.0, timestamped 2026-04-13. The malware-campaign write-up is in [`docs/research/openclaw-malware-campaign-2026-04.md`](docs/research/openclaw-malware-campaign-2026-04.md).
895
+
896
+ [^hackaprompt]: **Partly in-sample; cite the ablation reference beside it.**
897
+ The samples are a seeded subset of 4,780 of the dataset's 601,757 rows
898
+ (`hackaprompt/hackaprompt-dataset` at revision `25b87fbe`, parquet sha256
899
+ `bedca308...`, seed 20260511, rows shorter than 3 characters dropped), pinned
900
+ by row indices and digests in
901
+ [`hackaprompt-corpus.manifest.json`](data/hackaprompt/hackaprompt-corpus.manifest.json);
902
+ `npm run eval:hackaprompt` re-draws it and stops on any mismatch. At ATR 4.1.5
903
+ (measured 2026-10-19) recall is 3,972 (hunt), 3,931 (alert) and 2,343
904
+ (enforce) of 4,780. Without the 20 rules whose YAML names HackAPrompt it is
905
+ 1,372 = 28.7% (hunt) / 32 = 0.7% (enforce): the ablation reference, an
906
+ approximation of out-of-sample recall that does not guarantee it (a rule that
907
+ does not name HackAPrompt can still have been tuned on these prompts). The
908
+ corpus has no benign samples, so precision and FP rate are undefined on it:
909
+ the cells say "not cited" and `data/stats.json` carries `null` for both
910
+ (`breakdown.precision_not_citable`). Earlier figures for this row (28.6% → 66.2% in the 2.2.0 CHANGELOG
911
+ entry, 69.6% at ATR 3.5.0) and their re-runs are in
912
+ [`data/hackaprompt/METHOD.md`](data/hackaprompt/METHOD.md).
913
+
914
+ [^wildscan]: Scanned and flagged counts come from `total_scanned` and `total_flagged` in the raw scan file; the flag rate is those two divided. **No precision figure is given because none was measured over this run.** Earlier material paired a manual-review count against a smaller 96,096-skill analysis subset and reported the ratio as a precision floor. The review covered that subset rather than all 1,434 flags, so the ratio does not describe this scan and is not reproducible from the raw file; it has been withdrawn rather than recomputed. Establishing precision here means re-reviewing a sample of the 1,434 flags, which has not been done.
915
+
916
+ ATR is honest about what it cannot detect. Regex catalogs miss paraphrased attacks, semantic rephrasings of credential exfiltration, and novel attack shapes not present in the training corpus. `PromptBench` (3,280 character- and word-level robustness perturbations) is a different threat class from prompt injection and sits largely outside ATR's content scope; most of what ATR matches there comes from two rules mined from PromptBench itself, and the share fell from 23.2% at 3.5.2; [^promptcorpora] covers both. See [LIMITATIONS.md](LIMITATIONS.md) for the documented evasion-test corpus (64 techniques as of 2026-05) and the layering recommendation: ATR is the content layer; pair with credential brokering, sandbox execution, and human-in-the-loop for high-blast-radius actions.
680
917
 
681
918
  ## 9. Governance
682
919
 
@@ -686,15 +923,50 @@ ATR is currently single-maintainer (BDFL) under Adam Lin, transitioning to a Tec
686
923
  |---|---|
687
924
  | Phase 0 — Core spec, reference engine, initial rule corpus | Done |
688
925
  | Phase 1 — Distribution surfaces (npm, PyPI, GitHub Action, SARIF, MCP server) | Done |
689
- | Phase 2 — Production adoption (Microsoft AGT, Cisco AI Defense, MISP, Gen Digital Sage) | In progress |
926
+ | Phase 2 — Downstream integrations (Cisco skill-scanner, MISP, Gen Digital Sage, Microsoft AGT examples) | In progress |
690
927
  | Phase 3 — Community contribution flywheel (issue-to-proposal automation, CVE-collector pipeline) | In progress |
691
928
  | Phase 4 — TSC seating; second-engine implementation; submission to a standards body | Planned |
692
929
 
693
930
  ## 10. Security
694
931
 
695
- Vulnerability reports are coordinated under [SECURITY.md](SECURITY.md). Please use the private security advisory channel on the GitHub repository, not public issues, for any report concerning a vulnerability in the engine or the rule corpus.
932
+ Vulnerability reports are coordinated under [SECURITY.md](SECURITY.md). Report privately — not in a public issue — for anything concerning a vulnerability in the engine or the rule corpus. Two channels are open: a [GitHub Security Advisory](https://github.com/Agent-Threat-Rule/agent-threat-rules/security/advisories/new) (private vulnerability reporting is enabled on this repository, verified 2026-09-22), or email to <adam@agentthreatrule.org>. Response-time commitments are in [SECURITY.md](SECURITY.md).
933
+
934
+ ## 11. Telemetry
935
+
936
+ **Nothing in this project sends anything anywhere unless you ask it to.** Scanning is a local operation: `atr scan`, `atr scan-skill`, `atr guard`, `atr validate`, and the library (`new ATREngine(...)`) are all silent by default.
937
+
938
+ Anonymous detection reporting is available as an opt-in, for deployments that want to contribute detections to a shared sensor network.
939
+
940
+ - **Turn it on:** `--report-to-cloud`. Without this flag nothing leaves your machine.
941
+ - **Endpoint:** `--tc-url <url>`, or the `ATR_TC_URL` environment variable. **One of the two is required** — there is no built-in default, so opting in without naming a recipient is an error, not a silent choice of one. ATR is an open standard rather than any single collector's client, and a package that carried a destination for detection data would be making that choice on your behalf. Pass the base URL only (`https://host`); `/api/threats` is appended for you. HTTPS is required for anything that is not localhost.
942
+ - `--no-report` is still accepted and is now a no-op, since off is the default.
943
+
944
+ When reporting is on, `atr scan` prints a notice saying so before it starts and names the endpoint when it finishes. The rest of this section describes what is sent **when you have opted in**.
945
+
946
+ **Every scanned item produces at least one event, including items where no rule matched** — those are reported as a single `__clean__` event rather than being skipped. An item that matches more than one rule produces one event per match, so a noisy file can emit several. Events are batched (50 per request, or every 60 seconds, whichever comes first) and flushed once more before the process exits. An unreachable endpoint is not fatal: the batch is re-queued and your scan results are unaffected.
947
+
948
+ A detection event on the wire looks like this, verbatim apart from the UUID and hash:
949
+
950
+ ```json
951
+ {"events":[{"attackSourceIP":"<random UUID>","attackType":"skill-compromise","mitreTechnique":"ATR-2026-00120","sigmaRuleMatched":"ATR-2026-00120","timestamp":"2026-09-22T08:09:40.946Z","region":"unknown","severity":"critical","confidence":0.92,"contentHash":"<sha256 hex>","scanTarget":"skill"}]}
952
+ ```
953
+
954
+ | Field | What it actually carries |
955
+ |---|---|
956
+ | `attackSourceIP` | A random UUID generated fresh for each process. Despite the field name, no IP address is read or sent — though, as with any HTTP request, the receiving server sees the network source address. The same UUID is repeated in a client-id request header, so events from one run are linkable to each other, but not across runs. |
957
+ | `attackType` | The matched rule's category, or `clean`. |
958
+ | `mitreTechnique` / `sigmaRuleMatched` | Both carry the ATR rule ID, or `__clean__`. The names are legacy on the receiving side; neither holds a MITRE or Sigma identifier. |
959
+ | `severity`, `confidence` | Taken from the matched rule. |
960
+ | `contentHash` | A full, unsalted SHA-256 of the scanned content. It is not the content and cannot be reversed into it, but it is an exact fingerprint: anyone who already holds a candidate file can hash it and learn whether you scanned that file. |
961
+ | `scanTarget` | The literal string `skill`, or the event type for MCP event scans. Never a file path. |
962
+ | `timestamp` | ISO 8601, when the rule was evaluated. |
963
+ | `region` | Always the literal string `unknown`. |
964
+
965
+ Not sent: the scanned content, file names, file paths, your username, hostname, environment variables, or the ATR version. Requests are unauthenticated unless `TC_API_KEY` is set in the environment, in which case it is attached as a bearer token.
966
+
967
+ If you are scanning material whose existence you cannot disclose, simply do not pass `--report-to-cloud`.
696
968
 
697
- ## 11. Contributing
969
+ ## 12. Contributing
698
970
 
699
971
  The fastest contribution path requires no local setup:
700
972
 
@@ -706,7 +978,7 @@ Other contribution paths (evasion reports, false-positive reports, full rule aut
706
978
 
707
979
  All contributions are MIT-licensed by submission. There is no CLA.
708
980
 
709
- ## 12. Citation
981
+ ## 13. Citation
710
982
 
711
983
  If you use ATR in academic work or security research, please cite the dataset via DOI:
712
984
 
@@ -725,15 +997,15 @@ The companion research paper is published on Zenodo: [PDF](docs/paper/ATR-Paper-
725
997
 
726
998
  Machine-readable citation metadata is available in [CITATION.cff](CITATION.cff) (CFF v1.2.0).
727
999
 
728
- ## 13. Maintainers
1000
+ ## 14. Maintainers
729
1001
 
730
1002
  - **Adam Lin (林冠辛)** — BDFL, [@eeee2345](https://github.com/eeee2345), adam@agentthreatrule.org, Taiwan.
731
1003
 
732
1004
  The TSC seating process is open per [GOVERNANCE.md](GOVERNANCE.md).
733
1005
 
734
- ## 14. Sponsorship
1006
+ ## 15. Sponsorship
735
1007
 
736
- ATR's rules, engine, and pipeline are MIT licensed in perpetuity. Maintenance — CVE-class response, weekly cross-ecosystem sync, the auto-review pipeline — runs on community sponsorship through [Open Source Collective, Inc.](https://opencollective.com/opensource) (501(c)(6), EIN 81-1567737).
1008
+ ATR's rules, engine, and pipeline are MIT licensed in perpetuity. Maintenance — CVE-class response, weekly cross-ecosystem sync, the auto-review pipeline — runs on community sponsorship through [Open Source Collective, Inc.](https://opencollective.com/opensource) (501(c)(6), EIN 82-2037583).
737
1009
 
738
1010
  **Sponsor page: [opencollective.com/agent-threat-rules](https://opencollective.com/agent-threat-rules)**
739
1011
 
@@ -749,17 +1021,17 @@ Three funding milestones make the trajectory concrete:
749
1021
 
750
1022
  Organizations that want a deeper engagement — a named maintainer contact, faster turnaround on CVE-class updates, or co-authored rules attributed to your organization — can arrange a custom sponsorship tier through Open Source Collective. Email <adam@agentthreatrule.org>.
751
1023
 
752
- ## 15. License
1024
+ ## 16. License
753
1025
 
754
1026
  ATR is released under the [MIT License](LICENSE). All contributions are MIT-licensed by submission.
755
1027
 
756
- ## 16. Acknowledgments
1028
+ ## 17. Acknowledgments
757
1029
 
758
- ATR's design draws on prior work in: [Sigma](https://github.com/SigmaHQ/sigma) (SIEM detection format), [YARA](https://github.com/VirusTotal/yara) (malware signature format), [OWASP LLM Top 10](https://owasp.org/www-project-top-10-for-large-language-model-applications/), [OWASP Agentic Top 10](https://genai.owasp.org/resource/owasp-top-10-for-agentic-applications-for-2026/), [MITRE ATLAS](https://atlas.mitre.org/), [NVIDIA garak](https://github.com/NVIDIA/garak), [Lakera PINT](https://github.com/lakeraai/pint-benchmark), [Meta LlamaFirewall](https://ai.meta.com/research/publications/llamafirewall-an-open-source-guardrail-system-for-building-secure-ai-agents/), and [SAFE-MCP (OpenSSF)](https://github.com/safe-agentic-framework/safe-mcp).
1030
+ ATR's design draws on prior work in: [Sigma](https://github.com/SigmaHQ/sigma) (SIEM detection format), [YARA](https://github.com/VirusTotal/yara) (malware signature format), [OWASP LLM Top 10](https://owasp.org/www-project-top-10-for-large-language-model-applications/), [OWASP Agentic Top 10](https://genai.owasp.org/resource/owasp-top-10-for-agentic-applications-for-2026/), [MITRE ATLAS](https://atlas.mitre.org/), [NVIDIA garak](https://github.com/NVIDIA/garak), [Lakera PINT](https://github.com/lakeraai/pint-benchmark), [Meta LlamaFirewall](https://ai.meta.com/research/publications/llamafirewall-an-open-source-guardrail-system-for-building-secure-ai-agents/), and [SAF-MCP](https://github.com/secure-agentic-framework/saf-mcp).
759
1031
 
760
- The 96,096-skill ecosystem scan was made possible by the maintainers of OpenClaw, Skills.sh, Hermes Agent, and ClawHub publishing their registries openly.
1032
+ The 2026-04 ecosystem-wide skill scan was made possible by the maintainers of OpenClaw, Skills.sh, Hermes Agent, and ClawHub publishing their registries openly.
761
1033
 
762
- ## 17. References
1034
+ ## 18. References
763
1035
 
764
1036
  ### Normative
765
1037
 
@@ -772,7 +1044,7 @@ The 96,096-skill ecosystem scan was made possible by the maintainers of OpenClaw
772
1044
  - [OWASP Agentic Top 10 (2026)](https://genai.owasp.org/resource/owasp-top-10-for-agentic-applications-for-2026/) — Taxonomy of agentic-application risk categories.
773
1045
  - [OWASP LLM Top 10 (2025)](https://owasp.org/www-project-top-10-for-large-language-model-applications/) — Taxonomy of LLM-application risk categories.
774
1046
  - [MITRE ATLAS](https://atlas.mitre.org/) — Adversarial-threat landscape for AI systems.
775
- - [SAFE-MCP (OpenSSF)](https://github.com/safe-agentic-framework/safe-mcp) — Secure-MCP framework, technique catalog.
1047
+ - [SAF-MCP](https://github.com/secure-agentic-framework/saf-mcp) — Secure Agentic Framework for Model Context Protocol, technique catalog.
776
1048
  - [Sigma](https://github.com/SigmaHQ/sigma) — Generic detection rule format for SIEMs (architectural precedent).
777
1049
  - [YARA](https://github.com/VirusTotal/yara) — Pattern-matching language for malware (architectural precedent).
778
1050
  - Five Eyes joint guidance on AI agent deployment (2026-05-01): CISA + NSA + UK NCSC + ASD + CCCS + NZ NCSC — [CyberScoop coverage](https://cyberscoop.com/cisa-nsa-five-eyes-guidance-secure-deployment-ai-agents/).