guard-scanner 2.0.0 β†’ 3.1.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 (55) hide show
  1. package/README.md +107 -64
  2. package/dist/__tests__/scanner.test.d.ts +10 -0
  3. package/dist/__tests__/scanner.test.d.ts.map +1 -0
  4. package/dist/__tests__/scanner.test.js +374 -0
  5. package/dist/__tests__/scanner.test.js.map +1 -0
  6. package/dist/cli.d.ts +10 -0
  7. package/dist/cli.d.ts.map +1 -0
  8. package/dist/cli.js +189 -0
  9. package/dist/cli.js.map +1 -0
  10. package/dist/index.d.ts +10 -0
  11. package/dist/index.d.ts.map +1 -0
  12. package/dist/index.js +18 -0
  13. package/dist/index.js.map +1 -0
  14. package/dist/ioc-db.d.ts +13 -0
  15. package/dist/ioc-db.d.ts.map +1 -0
  16. package/dist/ioc-db.js +130 -0
  17. package/dist/ioc-db.js.map +1 -0
  18. package/dist/patterns.d.ts +27 -0
  19. package/dist/patterns.d.ts.map +1 -0
  20. package/dist/patterns.js +92 -0
  21. package/dist/patterns.js.map +1 -0
  22. package/dist/quarantine.d.ts +18 -0
  23. package/dist/quarantine.d.ts.map +1 -0
  24. package/dist/quarantine.js +42 -0
  25. package/dist/quarantine.js.map +1 -0
  26. package/dist/scanner.d.ts +54 -0
  27. package/dist/scanner.d.ts.map +1 -0
  28. package/dist/scanner.js +1043 -0
  29. package/dist/scanner.js.map +1 -0
  30. package/dist/types.d.ts +165 -0
  31. package/dist/types.d.ts.map +1 -0
  32. package/dist/types.js +7 -0
  33. package/dist/types.js.map +1 -0
  34. package/hooks/guard-scanner/plugin.ts +101 -32
  35. package/openclaw.plugin.json +60 -0
  36. package/package.json +25 -9
  37. package/ts-src/__tests__/fixtures/clean-skill/SKILL.md +9 -0
  38. package/ts-src/__tests__/fixtures/compaction-skill/SKILL.md +11 -0
  39. package/ts-src/__tests__/fixtures/malicious-skill/SKILL.md +11 -0
  40. package/ts-src/__tests__/fixtures/malicious-skill/scripts/evil.js +25 -0
  41. package/ts-src/__tests__/fixtures/prompt-leakage-skill/SKILL.md +20 -0
  42. package/ts-src/__tests__/fixtures/prompt-leakage-skill/scripts/debug.js +4 -0
  43. package/ts-src/__tests__/scanner.test.ts +525 -0
  44. package/ts-src/cli.ts +171 -0
  45. package/ts-src/index.ts +15 -0
  46. package/ts-src/ioc-db.ts +131 -0
  47. package/ts-src/patterns.ts +104 -0
  48. package/ts-src/quarantine.ts +48 -0
  49. package/{src/scanner.js β†’ ts-src/scanner.ts} +376 -383
  50. package/ts-src/types.ts +187 -0
  51. package/hooks/guard-scanner/handler.ts +0 -207
  52. package/src/cli.js +0 -149
  53. package/src/html-template.js +0 -239
  54. package/src/ioc-db.js +0 -54
  55. package/src/patterns.js +0 -190
package/README.md CHANGED
@@ -1,17 +1,18 @@
1
1
  <p align="center">
2
2
  <h1 align="center">πŸ›‘οΈ guard-scanner</h1>
3
3
  <p align="center">
4
- <strong>Static security scanner for AI agent skills</strong><br>
5
- Detect prompt injection, credential theft, exfiltration, identity hijacking, and 16 more threat categories.<br>
6
- <sub>πŸ†• Plugin Hook v2.0 β€” <strong>actual blocking</strong> via <code>block</code>/<code>blockReason</code> API</sub>
4
+ <strong>Security scanner + runtime guard for AI agent skills</strong><br>
5
+ 19 runtime threat patterns β€’ 190+ static patterns β€’ 21 categories β€’ OpenClaw-compatible plugin<br>
6
+ <sub>πŸ†• v3.1.0 β€” OpenClaw Community Plugin + 3-Layer Runtime Defense (Threat / EAE Paradox / Parity Judge)</sub>
7
7
  </p>
8
8
  <p align="center">
9
9
  <a href="LICENSE"><img src="https://img.shields.io/badge/license-MIT-blue.svg" alt="MIT License"></a>
10
+ <img src="https://img.shields.io/badge/OpenClaw-compatible-4A90D9" alt="OpenClaw Compatible">
10
11
  <img src="https://img.shields.io/badge/node-%3E%3D18.0.0-brightgreen" alt="Node.js 18+">
11
12
  <img src="https://img.shields.io/badge/dependencies-0-success" alt="Zero Dependencies">
12
- <img src="https://img.shields.io/badge/tests-56%2F56-brightgreen" alt="Tests Passing">
13
- <img src="https://img.shields.io/badge/patterns-186-orange" alt="186 Patterns">
14
- <img src="https://img.shields.io/badge/categories-20-blueviolet" alt="20 Categories">
13
+ <img src="https://img.shields.io/badge/tests-87%2F87-brightgreen" alt="Tests Passing">
14
+ <img src="https://img.shields.io/badge/runtime_patterns-19-red" alt="19 Runtime Patterns">
15
+ <img src="https://img.shields.io/badge/categories-21-blueviolet" alt="21 Categories">
15
16
  </p>
16
17
  </p>
17
18
 
@@ -40,8 +41,8 @@ The AI agent skill ecosystem has the same supply-chain security problem that npm
40
41
 
41
42
  | Feature | Description |
42
43
  |---|---|
43
- | **20 Threat Categories** | Snyk ToxicSkills + OWASP MCP Top 10 + Identity Hijacking + Sandbox/Complexity/Config |
44
- | **186 Detection Patterns** | Regex-based static analysis covering code, docs, and data files |
44
+ | **21 Threat Categories** | Snyk ToxicSkills + OWASP MCP Top 10 + Identity Hijacking + Sandbox/Complexity/Config + PII |
45
+ | **129 Detection Patterns** | Regex-based static analysis covering code, docs, and data files |
45
46
  | **IoC Database** | Known malicious IPs, domains, URLs, usernames, and typosquat names |
46
47
  | **Data Flow Analysis** | Lightweight JS analysis: secret reads β†’ network calls β†’ exec chains |
47
48
  | **Cross-File Analysis** | Phantom references, base64 fragment assembly, multi-file exfil detection |
@@ -74,42 +75,44 @@ npx guard-scanner ./skills/ --strict
74
75
  npx guard-scanner ./skills/ --verbose --check-deps --json --sarif --html
75
76
  ```
76
77
 
77
- ## OpenClaw Recommended Setup (short)
78
+ ## OpenClaw Plugin Setup (v3.1.0)
78
79
 
79
80
  ```bash
80
- # 1) Pre-install / pre-update static gate
81
- npx guard-scanner ~/.openclaw/workspace/skills --self-exclude --verbose
81
+ # Install as OpenClaw plugin
82
+ openclaw plugins install guard-scanner
82
83
 
83
- # 2) Runtime guard β€” Plugin Hook version (blocks dangerous calls!)
84
- cp hooks/guard-scanner/plugin.ts ~/.openclaw/plugins/guard-scanner-runtime.ts
84
+ # Or manual install:
85
+ npm install -g guard-scanner
85
86
  ```
86
87
 
87
- > **πŸ†• v2.0 Plugin Hook** β€” Uses OpenClaw's native `block`/`blockReason` API to actually prevent dangerous tool calls. Supports 3 modes: `monitor` (log only), `enforce` (block CRITICAL), `strict` (block HIGH + CRITICAL).
88
+ ### What happens after install:
88
89
 
89
- ### Installation (Optional)
90
+ 1. **Static scanning** β€” `npx guard-scanner [dir]` scans skills before installation
91
+ 2. **Runtime guard** β€” `before_tool_call` hook automatically blocks dangerous operations
92
+ 3. **3 enforcement modes** β€” `monitor` (log only), `enforce` (block CRITICAL), `strict` (block HIGH+CRITICAL)
90
93
 
91
- ```bash
92
- # Global install
93
- npm install -g guard-scanner
94
+ ### 3-Layer Runtime Defense (19 patterns)
94
95
 
95
- # Or use directly via npx (no install needed)
96
- npx guard-scanner ./skills/
96
+ ```
97
+ Layer 1: Threat Detection β€” 12 patterns (shells, exfil, SSRF, AMOS, etc.)
98
+ Layer 2: EAE Paradox Defense β€” 4 patterns (memory/SOUL/config tampering)
99
+ Layer 3: Parity Judge β€” 3 patterns (injection, parity bypass, shutdown refusal)
97
100
  ```
98
101
 
99
- ### As an OpenClaw Skill
102
+ > **v3.1.0** β€” Full `openclaw.plugin.json` manifest with `configSchema` validation. The legacy `handler.ts` has been removed; `plugin.ts` is now the only runtime guard.
103
+
104
+ ### Quick Start
100
105
 
101
106
  ```bash
102
- openclaw skill install guard-scanner
103
- guard-scanner ~/.openclaw/workspace/skills/ --self-exclude --verbose
107
+ # Pre-install / pre-update static gate
108
+ npx guard-scanner ~/.openclaw/workspace/skills --self-exclude --verbose
104
109
  ```
105
110
 
106
- > **πŸ†• Plugin Hook version** (`plugin.ts`) uses the `before_tool_call` Plugin Hook API with `block`/`blockReason` β€” **detections are actually blocked**. The legacy Internal Hook version (`handler.ts`) is still available for backward compatibility but can only warn.
107
-
108
111
  ---
109
112
 
110
113
  ## Threat Categories
111
114
 
112
- guard-scanner covers **20 threat categories** derived from four sources:
115
+ guard-scanner covers **21 threat categories** derived from four sources:
113
116
 
114
117
  | # | Category | Based On | Severity | What It Detects |
115
118
  |---|----------|----------|----------|----------------|
@@ -133,8 +136,9 @@ guard-scanner covers **20 threat categories** derived from four sources:
133
136
  | 18 | **Sandbox Validation** | v1.1 | HIGH | Dangerous binary requirements in SKILL.md, overly broad file scope, sensitive env vars, exec/network declarations |
134
137
  | 19 | **Code Complexity** | v1.1 | MEDIUM | Excessive file length (>1000 lines), deep nesting (>5 levels), high eval/exec density |
135
138
  | 20 | **Config Impact** | v1.1 | CRITICAL | `openclaw.json` writes, exec approval bypass, exec host gateway, internal hooks modification, network wildcard |
139
+ | 21 | **PII Exposure** | v2.1 | CRITICAL | Hardcoded CC/SSN/phone/email (context-aware), PII logging/network send/plaintext store, Shadow AI (OpenAI/Anthropic/generic LLM), PII collection instructions (address/DOB/government ID) |
136
140
 
137
- > **Categories 17–20** are unique to guard-scanner. Category 17 (Identity Hijacking) was developed from a real attack. Categories 18–20 were added in v1.1.0 based on community feedback.
141
+ > **Categories 17–21** are unique to guard-scanner. Category 17 (Identity Hijacking) was developed from a real attack. Categories 18–20 added in v1.1.0. Category 21 (PII Exposure) added in v2.1.0 covering OWASP LLM02/LLM06.
138
142
 
139
143
  ---
140
144
 
@@ -143,7 +147,7 @@ guard-scanner covers **20 threat categories** derived from four sources:
143
147
  ### Terminal (Default)
144
148
 
145
149
  ```
146
- πŸ›‘οΈ guard-scanner v1.1.1
150
+ πŸ›‘οΈ guard-scanner v2.1.0
147
151
  ══════════════════════════════════════════════════════
148
152
  πŸ“‚ Scanning: ./skills/
149
153
  πŸ“¦ Skills found: 22
@@ -228,6 +232,9 @@ Certain combinations multiply the base score:
228
232
  | Config impact | **Γ—2** | OpenClaw configuration tampering |
229
233
  | Config impact + Sandbox violation | **min 70** | Combined config + capability abuse |
230
234
  | Complexity + Malicious code/Obfuscation | **Γ—1.5** | Complex code hiding threats |
235
+ | PII exposure + Exfiltration | **Γ—3** | PII being sent to external servers |
236
+ | PII exposure + Shadow AI | **Γ—2.5** | PII leak through unauthorized LLM |
237
+ | PII exposure + Credential handling | **Γ—2** | Combined PII + credential risk |
231
238
  | Known IoC (IP/URL/typosquat) | **= 100** | Confirmed malicious |
232
239
 
233
240
  ### Verdict Thresholds
@@ -400,20 +407,20 @@ Options:
400
407
  ```
401
408
  guard-scanner/
402
409
  β”œβ”€β”€ src/
403
- β”‚ β”œβ”€β”€ scanner.js # GuardScanner class β€” core scan engine (20 checks)
404
- β”‚ β”œβ”€β”€ patterns.js # 186 threat detection patterns (Cat 1–20)
410
+ β”‚ β”œβ”€β”€ scanner.js # GuardScanner class β€” core scan engine (21 checks)
411
+ β”‚ β”œβ”€β”€ patterns.js # 129 threat detection patterns (Cat 1–21)
405
412
  β”‚ β”œβ”€β”€ ioc-db.js # Indicators of Compromise database
406
413
  β”‚ └── cli.js # CLI entry point and argument parser
407
414
  β”œβ”€β”€ hooks/
408
415
  β”‚ └── guard-scanner/
409
- β”‚ β”œβ”€β”€ plugin.ts # πŸ†• Plugin Hook v2.0 β€” actual blocking via block/blockReason
410
- β”‚ β”œβ”€β”€ handler.ts # Legacy Internal Hook β€” warn only (deprecated)
411
- β”‚ └── HOOK.md # Internal Hook manifest (legacy)
416
+ β”‚ β”œβ”€β”€ plugin.ts # Plugin Hook v3.1 β€” 19 patterns, 3 layers, block/blockReason
417
+ β”‚ └── HOOK.md # Hook manifest
418
+ β”œβ”€β”€ openclaw.plugin.json # OpenClaw plugin manifest (configSchema, hooks)
412
419
  β”œβ”€β”€ test/
413
- β”‚ β”œβ”€β”€ scanner.test.js # 56 tests β€” static scanner
414
- β”‚ β”œβ”€β”€ plugin.test.js # 35 tests β€” Plugin Hook runtime guard
415
- β”‚ └── fixtures/ # Malicious, clean, complex, config-changer samples
416
- β”œβ”€β”€ package.json # Zero dependencies, node --test
420
+ β”‚ β”œβ”€β”€ scanner.test.js # 64 tests β€” static scanner (incl. PII v2.1)
421
+ β”‚ β”œβ”€β”€ plugin.test.js # 23 tests β€” Plugin Hook runtime guard (3 layers)
422
+ β”‚ └── fixtures/ # Malicious, clean, complex, config-changer, pii-leaky samples
423
+ β”œβ”€β”€ package.json # Zero dependencies, openclaw.extensions
417
424
  β”œβ”€β”€ CHANGELOG.md
418
425
  β”œβ”€β”€ LICENSE # MIT
419
426
  └── README.md
@@ -536,11 +543,11 @@ console.log(scanner.toHTML()); // HTML string
536
543
  ## Test Results
537
544
 
538
545
  ```
539
- β„Ή tests 56
540
- β„Ή suites 13
541
- β„Ή pass 56
546
+ β„Ή tests 87
547
+ β„Ή suites 20
548
+ β„Ή pass 87
542
549
  β„Ή fail 0
543
- β„Ή duration_ms 108ms
550
+ β„Ή duration_ms 111ms
544
551
  ```
545
552
 
546
553
  | Suite | Tests | Coverage |
@@ -550,14 +557,34 @@ console.log(scanner.toHTML()); // HTML string
550
557
  | Risk Score Calculation | 5 | Empty, single, combo amplifiers, IoC override |
551
558
  | Verdict Determination | 5 | All verdicts + strict mode |
552
559
  | Output Formats | 4 | JSON + SARIF 2.1.0 + HTML structure |
553
- | Pattern Database | 4 | 100+ count, required fields, category coverage, regex safety |
560
+ | Pattern Database | 4 | 125+ count, required fields, category coverage, regex safety |
554
561
  | IoC Database | 5 | Structure, ClawHavoc C2, webhook.site |
555
562
  | Shannon Entropy | 2 | Low entropy, high entropy |
556
563
  | Ignore Functionality | 1 | Pattern exclusion |
557
564
  | Plugin API | 1 | Plugin loading + custom rule injection |
558
- | **Manifest Validation (v1.1)** | 4 | Dangerous bins, broad files, sensitive env, clean negatives |
559
- | **Complexity Metrics (v1.1)** | 2 | Deep nesting, clean negatives |
560
- | **Config Impact (v1.1)** | 4 | openclaw.json write, exec approval, gateway host, clean negatives |
565
+ | Manifest Validation | 4 | Dangerous bins, broad files, sensitive env, clean negatives |
566
+ | Complexity Metrics | 2 | Deep nesting, clean negatives |
567
+ | Config Impact | 4 | openclaw.json write, exec approval, gateway host, clean negatives |
568
+ | **πŸ†• PII Exposure Detection** | **8** | **Hardcoded CC/SSN, PII logging, network send, Shadow AI, doc collection, risk amp, clean negatives** |
569
+ | **Plugin Hook Runtime Guard** | **35** | **Blocking in enforce/strict, passthrough in monitor, all 12 threat patterns, blockReason format** |
570
+
571
+ ---
572
+
573
+ ## Fills OpenClaw's Own Security Gaps
574
+
575
+ OpenClaw's official [`THREAT-MODEL-ATLAS.md`](https://github.com/openclaw/openclaw/blob/main/docs/security/THREAT-MODEL-ATLAS.md) identifies security gaps that guard-scanner directly addresses:
576
+
577
+ | Gap (from ATLAS / Source Code) | OpenClaw Status | guard-scanner |
578
+ |---|---|---|
579
+ | _"Simple regex easily bypassed"_ β€” ClawHub moderation | ⚠️ Basic `FLAG_RULES` | βœ… 129 patterns, 21 categories |
580
+ | _"Does not analyze actual skill code content"_ | ❌ Not implemented | βœ… Full code + doc + data flow analysis |
581
+ | No SOUL.md / IDENTITY.md integrity verification | ❌ Not implemented | βœ… Identity hijacking detection (Cat 17) |
582
+ | `skill:before_install` hook | ❌ Not implemented | πŸ”œ Proposed ([Issue #18677](https://github.com/openclaw/openclaw/issues/18677)) |
583
+ | `before_tool_call` blocking reference impl | ❌ No official plugin | βœ… First reference implementation (plugin.ts) |
584
+ | SARIF / CI integration for skill security | ❌ Not available | βœ… SARIF 2.1.0 + GitHub Actions |
585
+ | Behavioral analysis beyond VirusTotal | ⏳ In progress | βœ… LLM-specific threat patterns (prompt injection, memory poisoning, MCP attacks) |
586
+
587
+ > guard-scanner is **complementary** to OpenClaw's built-in security β€” not a replacement. OpenClaw handles infrastructure security (SSRF blocking, exec approvals, sandbox, auth). guard-scanner handles **AI-specific threats** that traditional scanning misses.
561
588
 
562
589
  ---
563
590
 
@@ -578,19 +605,19 @@ guard-scanner's coverage of the [OWASP Top 10 for LLM Applications (2025)](https
578
605
  | # | Risk | Status | Detection Method |
579
606
  |---|------|--------|------------------|
580
607
  | LLM01 | Prompt Injection | ⚠️ Partial | Regex: Unicode exploits, role override, system tags, base64 instructions |
581
- | LLM02 | Insecure Output Handling | πŸ”œ v1.2 | Planned: unvalidated output execution patterns |
608
+ | LLM02 | Sensitive Information Disclosure | ⚠️ Partial | PII Exposure Detection (v2.1): hardcoded PII, PII logging/network/storage, Shadow AI, PII collection instructions |
582
609
  | LLM03 | Training Data Poisoning | ⬜ N/A | Out of scope for static analysis |
583
- | LLM04 | Model Denial of Service | πŸ”œ v1.3 | Planned: excessive input / infinite loop patterns |
610
+ | LLM04 | Model Denial of Service | πŸ”œ v2.2 | Planned: excessive input / infinite loop patterns |
584
611
  | LLM05 | Supply Chain Vulnerabilities | ⚠️ Partial | IoC database, typosquat detection, dependency chain scan |
585
- | LLM06 | Sensitive Information Disclosure | ⚠️ Partial | Secret detection, PII patterns, credential leaks |
612
+ | LLM06 | Insecure Output Handling | ⚠️ Partial | PII output detection (console.log, network send, plaintext store) |
586
613
  | LLM07 | Insecure Plugin Design | πŸ”œ v1.3 | Planned: unvalidated plugin input patterns |
587
614
  | LLM08 | Excessive Agency | πŸ”œ v1.3 | Planned: over-permissioned scope detection |
588
615
  | LLM09 | Overreliance | πŸ”œ v1.3 | Planned: unverified output trust patterns |
589
616
  | LLM10 | Model Theft | πŸ”œ v1.3 | Planned: model file exfiltration patterns |
590
617
 
591
- > **Current coverage: 3/10 (partial).** Full OWASP Gen AI coverage is targeted for v1.3. See [ROADMAP.md](ROADMAP.md) for details.
618
+ > **Current coverage: 5/10 (partial).** LLM02 and LLM06 added in v2.1.0. Full coverage targeted for v3.0. See [ROADMAP.md](ROADMAP.md) for details.
592
619
  >
593
- > **Known limitation:** Regex-based detection can be evaded by AI-generated code obfuscation. v2.0 will introduce AST analysis and ML-based detection to address this structural gap.
620
+ > **Known limitation:** Regex-based detection can be evaded by AI-generated code obfuscation. v3.0 will introduce AST analysis and ML-based detection to address this structural gap.
594
621
 
595
622
  ---
596
623
 
@@ -600,7 +627,7 @@ guard-scanner's coverage of the [OWASP Top 10 for LLM Applications (2025)](https
600
627
  2. Create a feature branch (`git checkout -b feature/new-pattern`)
601
628
  3. Add your pattern to `src/patterns.js` with the required fields
602
629
  4. Add a test case in `test/fixtures/` and `test/scanner.test.js`
603
- 5. Run `npm test` β€” all 56+ tests must pass
630
+ 5. Run `npm test` β€” all 99+ tests must pass
604
631
  6. Submit a Pull Request
605
632
 
606
633
  ### Adding a New Detection Pattern
@@ -639,19 +666,34 @@ We built one.
639
666
 
640
667
  ## πŸ”’ Need More? β€” GuavaSuite
641
668
 
642
- guard-scanner catches threats **before** installation. But what happens **after** a skill is running?
669
+ guard-scanner catches threats **before** installation and **blocks** CRITICAL threats at runtime. **GuavaSuite** unlocks **strict mode** β€” blocking HIGH + CRITICAL threats, plus exclusive defense-in-depth features.
670
+
671
+ ### How to Upgrade
672
+
673
+ ```bash
674
+ # 1. Install GuavaSuite
675
+ clawhub install guava-suite
676
+
677
+ # 2. Hold 1M+ $GUAVA on Polygon
678
+ # Token: 0x25cBD481901990bF0ed2ff9c5F3C0d4f743AC7B8
679
+ # Buy on QuickSwap V2: https://quickswap.exchange
680
+
681
+ # 3. Activate with your wallet β†’ get JWT β†’ strict mode enabled
682
+ ```
643
683
 
644
- [**GuavaSuite**](https://github.com/koatora20) extends guard-scanner with real-time protection for production agent deployments:
684
+ ### Feature Comparison
645
685
 
646
- | | guard-scanner (OSS) | GuavaSuite (Private) |
686
+ | | guard-scanner (Free) | GuavaSuite ($GUAVA) |
647
687
  |---|---|---|
648
- | Static scan | βœ… 20 categories | βœ… 20 categories |
649
- | Runtime blocking | βœ… Plugin Hook v2.0 (`block`/`blockReason`) | βœ… SuiteGate (enhanced ruleset) |
650
- | SOUL.md integrity | Pattern detection only | ⏳ SHA-256 hash watchdog (W4 E2E) |
651
- | On-chain verification | β€” | ⏳ SoulChain (Polygon, Phase 2) |
652
- | Identity recovery | β€” | ⏳ Automatic rollback (Phase 2) |
688
+ | Static scan (129 patterns, 21 categories) | βœ… | βœ… |
689
+ | Runtime Guard β€” `enforce` (block CRITICAL) | βœ… | βœ… |
690
+ | **Runtime Guard β€” `strict` (block HIGH + CRITICAL)** | ❌ | βœ… |
691
+ | **Soul Lock** (SOUL.md integrity + auto-rollback) | ❌ | βœ… |
692
+ | **Memory Guard** (L1-L5 θ¨˜ζ†ΆδΏθ­·) | ❌ | βœ… |
693
+ | **On-chain Identity** (SoulRegistry V2 on Polygon) | ❌ | βœ… |
694
+ | Audit Log (JSONL) | βœ… | βœ… |
653
695
 
654
- guard-scanner is and always will be **free, open-source, and zero-dependency**. If your agent handles production workloads and you want defense-in-depth, [reach out](https://github.com/koatora20).
696
+ guard-scanner is and always will be **free, open-source, and zero-dependency**.
655
697
 
656
698
  ---
657
699
 
@@ -660,10 +702,11 @@ guard-scanner is and always will be **free, open-source, and zero-dependency**.
660
702
  | Version | Focus | Key Features |
661
703
  |---------|-------|------|
662
704
  | v1.1.1 βœ… | Stability | 56 tests, bug fixes |
663
- | v1.2 | PII + Shadow AI | Credential-in-context, unauthorized LLM API calls, memory poisoning vectors |
664
- | v1.3 | OWASP Gen AI | Complete LLM02/04/07/08/09/10 coverage |
665
- | v2.0 | AST + ML | JavaScript AST analysis, taint tracking, ML-based obfuscation detection, SBOM generation |
666
- | v2.1 | Community | YAML pattern definitions, CONTRIBUTING guide, automated pattern updates |
705
+ | v2.0.0 βœ… | **Plugin Hook Runtime Guard** | `block`/`blockReason` API, 3 modes, 91 tests |
706
+ | v2.1.0 βœ… | **PII Exposure + Shadow AI** | 13 PII patterns, OWASP LLM02/06, 99 tests |
707
+ | v3.0.0 βœ… | **TypeScript Rewrite** | Full TS, OWASP LLM Top 10 mapping, install-check CLI |
708
+ | v3.1.0 βœ… | **OpenClaw Community Plugin** | `openclaw.plugin.json`, 19 runtime patterns (3 layers), 87 tests |
709
+ | v4.0 | AST + ML | JavaScript AST analysis, taint tracking, ML-based obfuscation detection |
667
710
 
668
711
  See [ROADMAP.md](ROADMAP.md) for full details.
669
712
 
@@ -0,0 +1,10 @@
1
+ /**
2
+ * guard-scanner v3.0.0 β€” Test Suite
3
+ *
4
+ * Guava Standard v5 Β§4: T-Wada / Red-Green-Refactor
5
+ * Phase 1: RED β€” All tests written BEFORE implementation changes.
6
+ *
7
+ * Run: node --test dist/__tests__/scanner.test.js
8
+ */
9
+ export {};
10
+ //# sourceMappingURL=scanner.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scanner.test.d.ts","sourceRoot":"","sources":["../../ts-src/__tests__/scanner.test.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG"}