@sunaiva/gate 1.0.0 → 1.1.2

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 (83) hide show
  1. package/BUSINESS_LICENSE.md +70 -0
  2. package/CHANGELOG.md +254 -0
  3. package/LICENSE +0 -0
  4. package/README.md +451 -67
  5. package/README.md.bak-v1.0.0-stale-MIT +59 -0
  6. package/SUPPORT.md +75 -0
  7. package/TIER_DEFINITIONS.md +161 -0
  8. package/dist/config/defaults.d.ts +22 -1
  9. package/dist/config/defaults.d.ts.map +1 -1
  10. package/dist/config/defaults.js +56 -8
  11. package/dist/config/defaults.js.map +1 -1
  12. package/dist/config/loader.d.ts +0 -0
  13. package/dist/config/loader.d.ts.map +1 -1
  14. package/dist/config/loader.js +23 -5
  15. package/dist/config/loader.js.map +1 -1
  16. package/dist/engine/backend-client.d.ts +58 -0
  17. package/dist/engine/backend-client.d.ts.map +1 -0
  18. package/dist/engine/backend-client.js +287 -0
  19. package/dist/engine/backend-client.js.map +1 -0
  20. package/dist/engine/hmac-verifier.d.ts +52 -0
  21. package/dist/engine/hmac-verifier.d.ts.map +1 -0
  22. package/dist/engine/hmac-verifier.js +159 -0
  23. package/dist/engine/hmac-verifier.js.map +1 -0
  24. package/dist/engine/immutability.d.ts +59 -0
  25. package/dist/engine/immutability.d.ts.map +1 -0
  26. package/dist/engine/immutability.js +129 -0
  27. package/dist/engine/immutability.js.map +1 -0
  28. package/dist/engine/pattern-matcher.d.ts +13 -0
  29. package/dist/engine/pattern-matcher.d.ts.map +1 -1
  30. package/dist/engine/pattern-matcher.js +85 -17
  31. package/dist/engine/pattern-matcher.js.map +1 -1
  32. package/dist/engine/rule-engine.d.ts +62 -1
  33. package/dist/engine/rule-engine.d.ts.map +1 -1
  34. package/dist/engine/rule-engine.js +224 -12
  35. package/dist/engine/rule-engine.js.map +1 -1
  36. package/dist/engine/session-state.d.ts +0 -0
  37. package/dist/engine/session-state.d.ts.map +1 -1
  38. package/dist/engine/session-state.js +8 -2
  39. package/dist/engine/session-state.js.map +1 -1
  40. package/dist/engine/ship-confidence-gate.d.ts +232 -0
  41. package/dist/engine/ship-confidence-gate.d.ts.map +1 -0
  42. package/dist/engine/ship-confidence-gate.js +768 -0
  43. package/dist/engine/ship-confidence-gate.js.map +1 -0
  44. package/dist/index.d.ts +0 -0
  45. package/dist/index.js +293 -2
  46. package/dist/rules/categories.json +0 -0
  47. package/dist/rules/presets.json +0 -0
  48. package/dist/rules/rules.json +132 -64
  49. package/dist/tools/audit.d.ts +6 -0
  50. package/dist/tools/audit.d.ts.map +1 -1
  51. package/dist/tools/audit.js +43 -6
  52. package/dist/tools/audit.js.map +1 -1
  53. package/dist/tools/bypass.d.ts +0 -0
  54. package/dist/tools/bypass.d.ts.map +1 -1
  55. package/dist/tools/bypass.js +50 -6
  56. package/dist/tools/bypass.js.map +1 -1
  57. package/dist/tools/export-attestation.d.ts +45 -0
  58. package/dist/tools/export-attestation.d.ts.map +1 -0
  59. package/dist/tools/export-attestation.js +152 -0
  60. package/dist/tools/export-attestation.js.map +1 -0
  61. package/dist/tools/rules.d.ts +0 -0
  62. package/dist/tools/rules.d.ts.map +0 -0
  63. package/dist/tools/rules.js +0 -0
  64. package/dist/tools/rules.js.map +0 -0
  65. package/dist/tools/ship-confidence.d.ts +17 -0
  66. package/dist/tools/ship-confidence.d.ts.map +1 -0
  67. package/dist/tools/ship-confidence.js +42 -0
  68. package/dist/tools/ship-confidence.js.map +1 -0
  69. package/dist/tools/update.d.ts +0 -0
  70. package/dist/tools/update.d.ts.map +1 -1
  71. package/dist/tools/update.js +45 -9
  72. package/dist/tools/update.js.map +1 -1
  73. package/dist/tools/validate.d.ts +0 -0
  74. package/dist/tools/validate.d.ts.map +1 -1
  75. package/dist/tools/validate.js +56 -4
  76. package/dist/tools/validate.js.map +1 -1
  77. package/dist/types/backend.d.ts +69 -0
  78. package/dist/types/backend.d.ts.map +1 -0
  79. package/dist/types/backend.js +18 -0
  80. package/dist/types/backend.js.map +1 -0
  81. package/package.json +83 -65
  82. package/dist/index.d.ts.map +0 -1
  83. package/dist/index.js.map +0 -1
@@ -7,6 +7,7 @@
7
7
  "enforcement": "constitutional",
8
8
  "gate_type": "pre-action",
9
9
  "severity": "block",
10
+ "detection_pattern": "Detects: Stripe charges, PayPal payments, checkout URLs, credit card forms, subscription signups, Buy Now buttons, in-app purchases, recurring billing setup",
10
11
  "example_blocked": "Agent attempts to subscribe to a $5,000/yr software license on behalf of the user",
11
12
  "example_allowed": "Agent presents purchase options with pricing and asks for human approval before proceeding",
12
13
  "tags": [
@@ -20,8 +21,7 @@
20
21
  "financial-protection",
21
22
  "full-suite",
22
23
  "minimal"
23
- ],
24
- "detection_pattern": "[server-side]"
24
+ ]
25
25
  },
26
26
  {
27
27
  "id": "fin-002",
@@ -31,6 +31,7 @@
31
31
  "enforcement": "constitutional",
32
32
  "gate_type": "pre-action",
33
33
  "severity": "block",
34
+ "detection_pattern": "Detects: cumulative spend tracking, API cost estimates, cloud billing events, token usage costs, service invoices exceeding budget threshold",
34
35
  "example_blocked": "Agent triggers 35 parallel Gemini API workers totalling $800 in one week without billing cap",
35
36
  "example_allowed": "Agent estimates API cost before run, confirms it is within budget, then proceeds",
36
37
  "tags": [
@@ -43,8 +44,7 @@
43
44
  "essential",
44
45
  "financial-protection",
45
46
  "full-suite"
46
- ],
47
- "detection_pattern": "[server-side]"
47
+ ]
48
48
  },
49
49
  {
50
50
  "id": "fin-003",
@@ -54,6 +54,7 @@
54
54
  "enforcement": "constitutional",
55
55
  "gate_type": "pre-action",
56
56
  "severity": "block",
57
+ "detection_pattern": "Detects: recurring billing setup, subscription plan changes, free trial conversions, annual plan upgrades, auto-renewal toggles",
57
58
  "example_blocked": "Agent upgrades a free Slack plan to Business+ without user confirmation",
58
59
  "example_allowed": "Agent presents upgrade options and cost impact, waits for explicit approval before clicking upgrade",
59
60
  "tags": [
@@ -64,8 +65,7 @@
64
65
  "preset_groups": [
65
66
  "financial-protection",
66
67
  "full-suite"
67
- ],
68
- "detection_pattern": "[server-side]"
68
+ ]
69
69
  },
70
70
  {
71
71
  "id": "fin-004",
@@ -75,6 +75,7 @@
75
75
  "enforcement": "constitutional",
76
76
  "gate_type": "pre-action",
77
77
  "severity": "block",
78
+ "detection_pattern": "Detects: wallet addresses, ETH/BTC/USDC transfers, DeFi interactions, NFT purchases, gas fee submissions, seed phrase usage",
78
79
  "example_blocked": "Agent sends 0.5 ETH to a contract address during an automated DeFi strategy",
79
80
  "example_allowed": "Agent prepares transaction details for human review and requires signed confirmation before any transfer",
80
81
  "tags": [
@@ -86,8 +87,7 @@
86
87
  "preset_groups": [
87
88
  "financial-protection",
88
89
  "full-suite"
89
- ],
90
- "detection_pattern": "[server-side]"
90
+ ]
91
91
  },
92
92
  {
93
93
  "id": "fin-005",
@@ -108,6 +108,7 @@
108
108
  "financial-protection",
109
109
  "full-suite"
110
110
  ],
111
+ "backend_required": true,
111
112
  "detection_pattern": "[server-side]"
112
113
  },
113
114
  {
@@ -129,6 +130,7 @@
129
130
  "financial-protection",
130
131
  "full-suite"
131
132
  ],
133
+ "backend_required": true,
132
134
  "detection_pattern": "[server-side]"
133
135
  },
134
136
  {
@@ -151,6 +153,7 @@
151
153
  "full-suite",
152
154
  "developer-safety"
153
155
  ],
156
+ "backend_required": true,
154
157
  "detection_pattern": "[server-side]"
155
158
  },
156
159
  {
@@ -161,6 +164,7 @@
161
164
  "enforcement": "constitutional",
162
165
  "gate_type": "pre-action",
163
166
  "severity": "block",
167
+ "detection_pattern": "Detects: bank routing numbers, SWIFT codes, ACH batch files, wire transfer form submissions, IBAN entries, banking API payment calls",
164
168
  "example_blocked": "Agent submits ACH payroll file containing $250,000 in transfers after misreading a payroll spreadsheet",
165
169
  "example_allowed": "Agent prepares wire transfer details for human review — no submission occurs without signed approval",
166
170
  "tags": [
@@ -172,8 +176,7 @@
172
176
  "financial-protection",
173
177
  "full-suite",
174
178
  "minimal"
175
- ],
176
- "detection_pattern": "[server-side]"
179
+ ]
177
180
  },
178
181
  {
179
182
  "id": "fin-009",
@@ -183,6 +186,7 @@
183
186
  "enforcement": "constitutional",
184
187
  "gate_type": "pre-action",
185
188
  "severity": "block",
189
+ "detection_pattern": "Detects: Google Ads campaign creation, Meta Ads budget changes, TikTok ad launches, LinkedIn ad spend, programmatic bid submissions",
186
190
  "example_blocked": "Agent launches a Google Ads campaign with $5,000 daily budget after misinterpreting targeting instructions",
187
191
  "example_allowed": "Agent sets up campaign draft, presents estimated spend, and activates only after explicit budget approval",
188
192
  "tags": [
@@ -193,8 +197,7 @@
193
197
  "preset_groups": [
194
198
  "financial-protection",
195
199
  "full-suite"
196
- ],
197
- "detection_pattern": "[server-side]"
200
+ ]
198
201
  },
199
202
  {
200
203
  "id": "fin-010",
@@ -216,6 +219,7 @@
216
219
  "full-suite",
217
220
  "developer-safety"
218
221
  ],
222
+ "backend_required": true,
219
223
  "detection_pattern": "[server-side]"
220
224
  },
221
225
  {
@@ -237,6 +241,7 @@
237
241
  "financial-protection",
238
242
  "full-suite"
239
243
  ],
244
+ "backend_required": true,
240
245
  "detection_pattern": "[server-side]"
241
246
  },
242
247
  {
@@ -259,6 +264,7 @@
259
264
  "financial-protection",
260
265
  "full-suite"
261
266
  ],
267
+ "backend_required": true,
262
268
  "detection_pattern": "[server-side]"
263
269
  },
264
270
  {
@@ -269,6 +275,7 @@
269
275
  "enforcement": "constitutional",
270
276
  "gate_type": "pre-action",
271
277
  "severity": "block",
278
+ "detection_pattern": "Detects: API key patterns (sk-ant, AKIA, ghp_, Bearer tokens), password fields in logs, secret environment variables in stdout, credential strings in commit diffs",
272
279
  "example_blocked": "Agent logs full Stripe secret key to a public Cloudflare Worker debug endpoint",
273
280
  "example_allowed": "Agent references credentials by variable name only, uses secret manager references, never logs actual values",
274
281
  "tags": [
@@ -281,8 +288,7 @@
281
288
  "developer-safety",
282
289
  "full-suite",
283
290
  "minimal"
284
- ],
285
- "detection_pattern": "[server-side]"
291
+ ]
286
292
  },
287
293
  {
288
294
  "id": "dat-002",
@@ -292,6 +298,7 @@
292
298
  "enforcement": "constitutional",
293
299
  "gate_type": "pre-action",
294
300
  "severity": "block",
301
+ "detection_pattern": "Detects: names + email combinations, SSNs, passport numbers, date of birth fields, health identifiers, financial account numbers, geolocation data",
295
302
  "example_blocked": "Agent scrapes contact page and stores 500 visitor email addresses in a public Google Sheet",
296
303
  "example_allowed": "Agent collects only name and email for lead form, stores encrypted in approved database, confirms storage policy before proceeding",
297
304
  "tags": [
@@ -303,8 +310,7 @@
303
310
  "preset_groups": [
304
311
  "essential",
305
312
  "full-suite"
306
- ],
307
- "detection_pattern": "[server-side]"
313
+ ]
308
314
  },
309
315
  {
310
316
  "id": "dat-003",
@@ -326,6 +332,7 @@
326
332
  "developer-safety",
327
333
  "full-suite"
328
334
  ],
335
+ "backend_required": true,
329
336
  "detection_pattern": "[server-side]"
330
337
  },
331
338
  {
@@ -336,6 +343,7 @@
336
343
  "enforcement": "constitutional",
337
344
  "gate_type": "pre-action",
338
345
  "severity": "block",
346
+ "detection_pattern": "Detects: API key patterns in git diffs, hardcoded secrets in source files, keys pasted into chat logs, secrets in PR descriptions, env vars echoed to stdout",
339
347
  "example_blocked": "Agent commits hardcoded Stripe secret key directly into index.js before pushing to GitHub",
340
348
  "example_allowed": "Agent uses environment variable references and secret manager calls, never hardcodes values",
341
349
  "tags": [
@@ -348,8 +356,7 @@
348
356
  "essential",
349
357
  "developer-safety",
350
358
  "full-suite"
351
- ],
352
- "detection_pattern": "[server-side]"
359
+ ]
353
360
  },
354
361
  {
355
362
  "id": "dat-005",
@@ -372,6 +379,7 @@
372
379
  "developer-safety",
373
380
  "full-suite"
374
381
  ],
382
+ "backend_required": true,
375
383
  "detection_pattern": "[server-side]"
376
384
  },
377
385
  {
@@ -392,6 +400,7 @@
392
400
  "preset_groups": [
393
401
  "full-suite"
394
402
  ],
403
+ "backend_required": true,
395
404
  "detection_pattern": "[server-side]"
396
405
  },
397
406
  {
@@ -414,6 +423,7 @@
414
423
  "developer-safety",
415
424
  "full-suite"
416
425
  ],
426
+ "backend_required": true,
417
427
  "detection_pattern": "[server-side]"
418
428
  },
419
429
  {
@@ -434,6 +444,7 @@
434
444
  "preset_groups": [
435
445
  "full-suite"
436
446
  ],
447
+ "backend_required": true,
437
448
  "detection_pattern": "[server-side]"
438
449
  },
439
450
  {
@@ -454,6 +465,7 @@
454
465
  "preset_groups": [
455
466
  "full-suite"
456
467
  ],
468
+ "backend_required": true,
457
469
  "detection_pattern": "[server-side]"
458
470
  },
459
471
  {
@@ -464,6 +476,7 @@
464
476
  "enforcement": "constitutional",
465
477
  "gate_type": "pre-action",
466
478
  "severity": "block",
479
+ "detection_pattern": "Detects: log file deletion, audit table truncation, log rotation bypasses, timestamp modification in records, access log purging commands",
467
480
  "example_blocked": "Agent deletes application error logs to clean up a server before an audit, removing evidence of prior failures",
468
481
  "example_allowed": "Agent archives old logs to cold storage, preserving integrity, with human approval before any archival",
469
482
  "tags": [
@@ -474,8 +487,7 @@
474
487
  "preset_groups": [
475
488
  "developer-safety",
476
489
  "full-suite"
477
- ],
478
- "detection_pattern": "[server-side]"
490
+ ]
479
491
  },
480
492
  {
481
493
  "id": "dat-011",
@@ -495,6 +507,7 @@
495
507
  "preset_groups": [
496
508
  "full-suite"
497
509
  ],
510
+ "backend_required": true,
498
511
  "detection_pattern": "[server-side]"
499
512
  },
500
513
  {
@@ -515,6 +528,7 @@
515
528
  "preset_groups": [
516
529
  "full-suite"
517
530
  ],
531
+ "backend_required": true,
518
532
  "detection_pattern": "[server-side]"
519
533
  },
520
534
  {
@@ -525,6 +539,7 @@
525
539
  "enforcement": "constitutional",
526
540
  "gate_type": "pre-action",
527
541
  "severity": "block",
542
+ "detection_pattern": "Detects: git push to main/master, Netlify production deploys, Docker production image pushes, Kubernetes production namespace changes, AWS production stack updates",
528
543
  "example_blocked": "Agent auto-deploys a breaking change to production at 2am after a failed test suite",
529
544
  "example_allowed": "Agent builds, tests, and stages the release, then presents for human approval before any production promotion",
530
545
  "tags": [
@@ -537,8 +552,7 @@
537
552
  "developer-safety",
538
553
  "full-suite",
539
554
  "minimal"
540
- ],
541
- "detection_pattern": "[server-side]"
555
+ ]
542
556
  },
543
557
  {
544
558
  "id": "gov-002",
@@ -548,6 +562,7 @@
548
562
  "enforcement": "constitutional",
549
563
  "gate_type": "pre-action",
550
564
  "severity": "block",
565
+ "detection_pattern": "Detects: rm -rf commands, DROP TABLE statements, git reset --hard, git clean -fd, file overwrite without backup, S3 bucket deletion, database truncation",
551
566
  "example_blocked": "Agent runs git clean -fd to tidy the repo and deletes 3 years of research reports stored in untracked files",
552
567
  "example_allowed": "Agent lists files to be deleted in a dry-run, presents list for approval, only executes after explicit confirmation",
553
568
  "tags": [
@@ -561,8 +576,7 @@
561
576
  "developer-safety",
562
577
  "full-suite",
563
578
  "minimal"
564
- ],
565
- "detection_pattern": "[server-side]"
579
+ ]
566
580
  },
567
581
  {
568
582
  "id": "gov-003",
@@ -583,6 +597,7 @@
583
597
  "developer-safety",
584
598
  "full-suite"
585
599
  ],
600
+ "backend_required": true,
586
601
  "detection_pattern": "[server-side]"
587
602
  },
588
603
  {
@@ -593,6 +608,7 @@
593
608
  "enforcement": "constitutional",
594
609
  "gate_type": "pre-action",
595
610
  "severity": "block",
611
+ "detection_pattern": "Detects: Cloudflare DNS API writes, Route 53 record changes, GoDaddy DNS modifications, CNAME/A/MX record updates via any registrar API",
596
612
  "example_blocked": "Agent deletes an MX record while reconfiguring email routing, taking down all inbound email for the domain",
597
613
  "example_allowed": "Agent proposes DNS changes with impact analysis, waits for explicit approval, stages changes in preview first",
598
614
  "tags": [
@@ -603,8 +619,7 @@
603
619
  "preset_groups": [
604
620
  "developer-safety",
605
621
  "full-suite"
606
- ],
607
- "detection_pattern": "[server-side]"
622
+ ]
608
623
  },
609
624
  {
610
625
  "id": "gov-005",
@@ -614,6 +629,7 @@
614
629
  "enforcement": "constitutional",
615
630
  "gate_type": "pre-action",
616
631
  "severity": "block",
632
+ "detection_pattern": "Detects: IAM role assignment, OAuth scope escalation, admin privilege grants, GHL team member permission changes, database user privilege modifications",
617
633
  "example_blocked": "Agent grants a new team member admin privileges on the production AWS account to simplify onboarding",
618
634
  "example_allowed": "Agent proposes minimum-required role for new member, presents for approval, applies principle of least privilege",
619
635
  "tags": [
@@ -624,8 +640,7 @@
624
640
  "preset_groups": [
625
641
  "developer-safety",
626
642
  "full-suite"
627
- ],
628
- "detection_pattern": "[server-side]"
643
+ ]
629
644
  },
630
645
  {
631
646
  "id": "gov-006",
@@ -635,6 +650,7 @@
635
650
  "enforcement": "constitutional",
636
651
  "gate_type": "pre-action",
637
652
  "severity": "block",
653
+ "detection_pattern": "Detects: DELETE /users/{id} API calls, Stripe customer deletion, GHL contact purges, workspace deactivation, account closure form submissions",
638
654
  "example_blocked": "Agent deletes a churned customer's account and all associated data, making refund impossible and violating retention policy",
639
655
  "example_allowed": "Agent flags account for review, proposes data export and anonymisation, requires two-step human confirmation before any deletion",
640
656
  "tags": [
@@ -644,8 +660,7 @@
644
660
  ],
645
661
  "preset_groups": [
646
662
  "full-suite"
647
- ],
648
- "detection_pattern": "[server-side]"
663
+ ]
649
664
  },
650
665
  {
651
666
  "id": "gov-007",
@@ -666,6 +681,7 @@
666
681
  "developer-safety",
667
682
  "full-suite"
668
683
  ],
684
+ "backend_required": true,
669
685
  "detection_pattern": "[server-side]"
670
686
  },
671
687
  {
@@ -676,6 +692,7 @@
676
692
  "enforcement": "constitutional",
677
693
  "gate_type": "pre-action",
678
694
  "severity": "block",
695
+ "detection_pattern": "Detects: Instantly campaign activation, Mailchimp bulk sends, Klaviyo broadcast triggers, Twilio SMS bulk sends, LinkedIn Sales Navigator connection requests at scale",
679
696
  "example_blocked": "Agent activates a cold email campaign to 15,000 contacts without Kinan's go-ahead after preparing the sequence",
680
697
  "example_allowed": "Agent prepares campaign, shows preview, estimated reach, and cost — waits for explicit 'ship it' before any send",
681
698
  "tags": [
@@ -687,8 +704,7 @@
687
704
  "preset_groups": [
688
705
  "essential",
689
706
  "full-suite"
690
- ],
691
- "detection_pattern": "[server-side]"
707
+ ]
692
708
  },
693
709
  {
694
710
  "id": "gov-009",
@@ -709,6 +725,7 @@
709
725
  "developer-safety",
710
726
  "full-suite"
711
727
  ],
728
+ "backend_required": true,
712
729
  "detection_pattern": "[server-side]"
713
730
  },
714
731
  {
@@ -731,6 +748,7 @@
731
748
  "developer-safety",
732
749
  "full-suite"
733
750
  ],
751
+ "backend_required": true,
734
752
  "detection_pattern": "[server-side]"
735
753
  },
736
754
  {
@@ -752,6 +770,7 @@
752
770
  "developer-safety",
753
771
  "full-suite"
754
772
  ],
773
+ "backend_required": true,
755
774
  "detection_pattern": "[server-side]"
756
775
  },
757
776
  {
@@ -762,6 +781,7 @@
762
781
  "enforcement": "constitutional",
763
782
  "gate_type": "pre-action",
764
783
  "severity": "block",
784
+ "detection_pattern": "Detects: terraform destroy, AWS CloudFormation stack deletion, GCP project deletion, Kubernetes namespace purges, Elestio service termination",
765
785
  "example_blocked": "Agent runs terraform destroy on the production environment while attempting to recreate a staging environment",
766
786
  "example_allowed": "Agent confirms backup exists, lists resources to be destroyed, receives explicit confirmation before any teardown command",
767
787
  "tags": [
@@ -773,8 +793,7 @@
773
793
  "essential",
774
794
  "developer-safety",
775
795
  "full-suite"
776
- ],
777
- "detection_pattern": "[server-side]"
796
+ ]
778
797
  },
779
798
  {
780
799
  "id": "qlt-001",
@@ -795,6 +814,7 @@
795
814
  "developer-safety",
796
815
  "full-suite"
797
816
  ],
817
+ "backend_required": true,
798
818
  "detection_pattern": "[server-side]"
799
819
  },
800
820
  {
@@ -817,6 +837,7 @@
817
837
  "developer-safety",
818
838
  "full-suite"
819
839
  ],
840
+ "backend_required": true,
820
841
  "detection_pattern": "[server-side]"
821
842
  },
822
843
  {
@@ -838,6 +859,7 @@
838
859
  "developer-safety",
839
860
  "full-suite"
840
861
  ],
862
+ "backend_required": true,
841
863
  "detection_pattern": "[server-side]"
842
864
  },
843
865
  {
@@ -859,6 +881,7 @@
859
881
  "developer-safety",
860
882
  "full-suite"
861
883
  ],
884
+ "backend_required": true,
862
885
  "detection_pattern": "[server-side]"
863
886
  },
864
887
  {
@@ -880,6 +903,7 @@
880
903
  "developer-safety",
881
904
  "full-suite"
882
905
  ],
906
+ "backend_required": true,
883
907
  "detection_pattern": "[server-side]"
884
908
  },
885
909
  {
@@ -901,6 +925,7 @@
901
925
  "developer-safety",
902
926
  "full-suite"
903
927
  ],
928
+ "backend_required": true,
904
929
  "detection_pattern": "[server-side]"
905
930
  },
906
931
  {
@@ -922,6 +947,7 @@
922
947
  "developer-safety",
923
948
  "full-suite"
924
949
  ],
950
+ "backend_required": true,
925
951
  "detection_pattern": "[server-side]"
926
952
  },
927
953
  {
@@ -943,6 +969,7 @@
943
969
  "developer-safety",
944
970
  "full-suite"
945
971
  ],
972
+ "backend_required": true,
946
973
  "detection_pattern": "[server-side]"
947
974
  },
948
975
  {
@@ -964,6 +991,7 @@
964
991
  "developer-safety",
965
992
  "full-suite"
966
993
  ],
994
+ "backend_required": true,
967
995
  "detection_pattern": "[server-side]"
968
996
  },
969
997
  {
@@ -985,6 +1013,7 @@
985
1013
  "developer-safety",
986
1014
  "full-suite"
987
1015
  ],
1016
+ "backend_required": true,
988
1017
  "detection_pattern": "[server-side]"
989
1018
  },
990
1019
  {
@@ -1006,6 +1035,7 @@
1006
1035
  "developer-safety",
1007
1036
  "full-suite"
1008
1037
  ],
1038
+ "backend_required": true,
1009
1039
  "detection_pattern": "[server-side]"
1010
1040
  },
1011
1041
  {
@@ -1027,6 +1057,7 @@
1027
1057
  "developer-safety",
1028
1058
  "full-suite"
1029
1059
  ],
1060
+ "backend_required": true,
1030
1061
  "detection_pattern": "[server-side]"
1031
1062
  },
1032
1063
  {
@@ -1037,6 +1068,7 @@
1037
1068
  "enforcement": "constitutional",
1038
1069
  "gate_type": "pre-action",
1039
1070
  "severity": "block",
1071
+ "detection_pattern": "Detects: SMTP send commands, Gmail API message sends, Postmark/SendGrid single sends, nodemailer send calls with external recipients",
1040
1072
  "example_blocked": "Agent sends a follow-up email to 40 prospects with incorrect pricing information attached",
1041
1073
  "example_allowed": "Agent drafts email, presents for review with recipient list and subject, sends only after explicit approval",
1042
1074
  "tags": [
@@ -1047,8 +1079,7 @@
1047
1079
  "preset_groups": [
1048
1080
  "essential",
1049
1081
  "full-suite"
1050
- ],
1051
- "detection_pattern": "[server-side]"
1082
+ ]
1052
1083
  },
1053
1084
  {
1054
1085
  "id": "com-002",
@@ -1058,6 +1089,7 @@
1058
1089
  "enforcement": "constitutional",
1059
1090
  "gate_type": "pre-action",
1060
1091
  "severity": "block",
1092
+ "detection_pattern": "Detects: Twitter/X API post calls, LinkedIn share submissions, Facebook page post API, Instagram media publishes, TikTok upload completions",
1061
1093
  "example_blocked": "Agent posts a draft meme to the company LinkedIn page without review, causing brand damage",
1062
1094
  "example_allowed": "Agent prepares post with caption, image, and scheduled time — presents for approval before any publication",
1063
1095
  "tags": [
@@ -1068,8 +1100,7 @@
1068
1100
  "preset_groups": [
1069
1101
  "essential",
1070
1102
  "full-suite"
1071
- ],
1072
- "detection_pattern": "[server-side]"
1103
+ ]
1073
1104
  },
1074
1105
  {
1075
1106
  "id": "com-003",
@@ -1089,6 +1120,7 @@
1089
1120
  "preset_groups": [
1090
1121
  "full-suite"
1091
1122
  ],
1123
+ "backend_required": true,
1092
1124
  "detection_pattern": "[server-side]"
1093
1125
  },
1094
1126
  {
@@ -1109,6 +1141,7 @@
1109
1141
  "preset_groups": [
1110
1142
  "full-suite"
1111
1143
  ],
1144
+ "backend_required": true,
1112
1145
  "detection_pattern": "[server-side]"
1113
1146
  },
1114
1147
  {
@@ -1119,6 +1152,7 @@
1119
1152
  "enforcement": "constitutional",
1120
1153
  "gate_type": "pre-action",
1121
1154
  "severity": "block",
1155
+ "detection_pattern": "Detects: CRM-triggered customer emails, in-app messages sent to user segments, support ticket replies, automated refund communications, contract or invoice emails",
1122
1156
  "example_blocked": "Agent sends a billing dispute response email to a customer with incorrect account details",
1123
1157
  "example_allowed": "Agent drafts response, tags for human review in CRM, sends only after team member approves",
1124
1158
  "tags": [
@@ -1129,8 +1163,7 @@
1129
1163
  "preset_groups": [
1130
1164
  "essential",
1131
1165
  "full-suite"
1132
- ],
1133
- "detection_pattern": "[server-side]"
1166
+ ]
1134
1167
  },
1135
1168
  {
1136
1169
  "id": "com-006",
@@ -1140,6 +1173,7 @@
1140
1173
  "enforcement": "constitutional",
1141
1174
  "gate_type": "pre-action",
1142
1175
  "severity": "block",
1176
+ "detection_pattern": "Detects: PR Newswire distribution API, Business Wire submissions, media contact outreach with embargo dates, investor relations email sends",
1143
1177
  "example_blocked": "Agent distributes a press release with incorrect acquisition details to 500 journalists",
1144
1178
  "example_allowed": "Agent drafts release, routes to legal and executive review, distributes only after sign-off",
1145
1179
  "tags": [
@@ -1149,8 +1183,7 @@
1149
1183
  ],
1150
1184
  "preset_groups": [
1151
1185
  "full-suite"
1152
- ],
1153
- "detection_pattern": "[server-side]"
1186
+ ]
1154
1187
  },
1155
1188
  {
1156
1189
  "id": "com-007",
@@ -1160,6 +1193,7 @@
1160
1193
  "enforcement": "constitutional",
1161
1194
  "gate_type": "pre-action",
1162
1195
  "severity": "block",
1196
+ "detection_pattern": "Detects: DocuSign envelope sends, HelloSign request submissions, contract PDF emails, NDA generation and distribution, terms acceptance flows",
1163
1197
  "example_blocked": "Agent sends an NDA with incorrect jurisdiction and missing indemnity clauses to a potential partner",
1164
1198
  "example_allowed": "Agent generates contract draft from approved template, routes for legal review, sends via DocuSign only after approval",
1165
1199
  "tags": [
@@ -1169,8 +1203,7 @@
1169
1203
  ],
1170
1204
  "preset_groups": [
1171
1205
  "full-suite"
1172
- ],
1173
- "detection_pattern": "[server-side]"
1206
+ ]
1174
1207
  },
1175
1208
  {
1176
1209
  "id": "com-008",
@@ -1190,6 +1223,7 @@
1190
1223
  "preset_groups": [
1191
1224
  "full-suite"
1192
1225
  ],
1226
+ "backend_required": true,
1193
1227
  "detection_pattern": "[server-side]"
1194
1228
  },
1195
1229
  {
@@ -1200,6 +1234,7 @@
1200
1234
  "enforcement": "constitutional",
1201
1235
  "gate_type": "pre-action",
1202
1236
  "severity": "block",
1237
+ "detection_pattern": "Detects: Instantly.ai campaign activation, Lemlist sequence launch, Apollo.io sequence start, Outreach.io sequence enable, HubSpot sequence activation",
1203
1238
  "example_blocked": "Agent activates a 7-step cold email sequence to 2,000 contacts after completing sequence setup",
1204
1239
  "example_allowed": "Agent presents sequence, sample email, prospect count, and projected metrics, waits for explicit 'launch it' before activation",
1205
1240
  "tags": [
@@ -1210,8 +1245,7 @@
1210
1245
  "preset_groups": [
1211
1246
  "essential",
1212
1247
  "full-suite"
1213
- ],
1214
- "detection_pattern": "[server-side]"
1248
+ ]
1215
1249
  },
1216
1250
  {
1217
1251
  "id": "com-010",
@@ -1231,6 +1265,7 @@
1231
1265
  "preset_groups": [
1232
1266
  "full-suite"
1233
1267
  ],
1268
+ "backend_required": true,
1234
1269
  "detection_pattern": "[server-side]"
1235
1270
  },
1236
1271
  {
@@ -1241,6 +1276,7 @@
1241
1276
  "enforcement": "constitutional",
1242
1277
  "gate_type": "pre-action",
1243
1278
  "severity": "block",
1279
+ "detection_pattern": "Detects: emails sent with From: header matching a named human's address by an automated system, chat messages attributed to human staff members, voice calls pretending to be human",
1244
1280
  "example_blocked": "Agent sends cold emails as 'John Smith, CEO' without John's knowledge or a disclosure that the message was AI-assisted",
1245
1281
  "example_allowed": "Agent sends as a named AI assistant, or human reviews and sends from their own account with AI-assisted drafting clearly noted",
1246
1282
  "tags": [
@@ -1250,8 +1286,7 @@
1250
1286
  ],
1251
1287
  "preset_groups": [
1252
1288
  "full-suite"
1253
- ],
1254
- "detection_pattern": "[server-side]"
1289
+ ]
1255
1290
  },
1256
1291
  {
1257
1292
  "id": "com-012",
@@ -1271,6 +1306,7 @@
1271
1306
  "preset_groups": [
1272
1307
  "full-suite"
1273
1308
  ],
1309
+ "backend_required": true,
1274
1310
  "detection_pattern": "[server-side]"
1275
1311
  },
1276
1312
  {
@@ -1292,6 +1328,7 @@
1292
1328
  "developer-safety",
1293
1329
  "full-suite"
1294
1330
  ],
1331
+ "backend_required": true,
1295
1332
  "detection_pattern": "[server-side]"
1296
1333
  },
1297
1334
  {
@@ -1312,6 +1349,7 @@
1312
1349
  "preset_groups": [
1313
1350
  "full-suite"
1314
1351
  ],
1352
+ "backend_required": true,
1315
1353
  "detection_pattern": "[server-side]"
1316
1354
  },
1317
1355
  {
@@ -1332,6 +1370,7 @@
1332
1370
  "preset_groups": [
1333
1371
  "full-suite"
1334
1372
  ],
1373
+ "backend_required": true,
1335
1374
  "detection_pattern": "[server-side]"
1336
1375
  },
1337
1376
  {
@@ -1353,6 +1392,7 @@
1353
1392
  "developer-safety",
1354
1393
  "full-suite"
1355
1394
  ],
1395
+ "backend_required": true,
1356
1396
  "detection_pattern": "[server-side]"
1357
1397
  },
1358
1398
  {
@@ -1374,6 +1414,7 @@
1374
1414
  "developer-safety",
1375
1415
  "full-suite"
1376
1416
  ],
1417
+ "backend_required": true,
1377
1418
  "detection_pattern": "[server-side]"
1378
1419
  },
1379
1420
  {
@@ -1395,6 +1436,7 @@
1395
1436
  "essential",
1396
1437
  "full-suite"
1397
1438
  ],
1439
+ "backend_required": true,
1398
1440
  "detection_pattern": "[server-side]"
1399
1441
  },
1400
1442
  {
@@ -1416,6 +1458,7 @@
1416
1458
  "developer-safety",
1417
1459
  "full-suite"
1418
1460
  ],
1461
+ "backend_required": true,
1419
1462
  "detection_pattern": "[server-side]"
1420
1463
  },
1421
1464
  {
@@ -1437,6 +1480,7 @@
1437
1480
  "developer-safety",
1438
1481
  "full-suite"
1439
1482
  ],
1483
+ "backend_required": true,
1440
1484
  "detection_pattern": "[server-side]"
1441
1485
  },
1442
1486
  {
@@ -1447,6 +1491,7 @@
1447
1491
  "enforcement": "constitutional",
1448
1492
  "gate_type": "post-action",
1449
1493
  "severity": "block",
1494
+ "detection_pattern": "Detects: market size claims without cited research, performance benchmarks not sourced to a test run, conversion rates stated as fact without underlying data",
1450
1495
  "example_blocked": "Agent writes '73% of users prefer AI receptionists' in a sales document without any survey or research backing",
1451
1496
  "example_allowed": "Agent presents actual research data with source citation, or clearly labels projections as 'estimated' or 'modelled'",
1452
1497
  "tags": [
@@ -1456,8 +1501,7 @@
1456
1501
  ],
1457
1502
  "preset_groups": [
1458
1503
  "full-suite"
1459
- ],
1460
- "detection_pattern": "[server-side]"
1504
+ ]
1461
1505
  },
1462
1506
  {
1463
1507
  "id": "know-010",
@@ -1477,6 +1521,7 @@
1477
1521
  "preset_groups": [
1478
1522
  "full-suite"
1479
1523
  ],
1524
+ "backend_required": true,
1480
1525
  "detection_pattern": "[server-side]"
1481
1526
  },
1482
1527
  {
@@ -1497,6 +1542,7 @@
1497
1542
  "preset_groups": [
1498
1543
  "full-suite"
1499
1544
  ],
1545
+ "backend_required": true,
1500
1546
  "detection_pattern": "[server-side]"
1501
1547
  },
1502
1548
  {
@@ -1518,6 +1564,7 @@
1518
1564
  "developer-safety",
1519
1565
  "full-suite"
1520
1566
  ],
1567
+ "backend_required": true,
1521
1568
  "detection_pattern": "[server-side]"
1522
1569
  },
1523
1570
  {
@@ -1540,6 +1587,7 @@
1540
1587
  "resource-protection",
1541
1588
  "full-suite"
1542
1589
  ],
1590
+ "backend_required": true,
1543
1591
  "detection_pattern": "[server-side]"
1544
1592
  },
1545
1593
  {
@@ -1563,6 +1611,7 @@
1563
1611
  "resource-protection",
1564
1612
  "full-suite"
1565
1613
  ],
1614
+ "backend_required": true,
1566
1615
  "detection_pattern": "[server-side]"
1567
1616
  },
1568
1617
  {
@@ -1585,6 +1634,7 @@
1585
1634
  "resource-protection",
1586
1635
  "full-suite"
1587
1636
  ],
1637
+ "backend_required": true,
1588
1638
  "detection_pattern": "[server-side]"
1589
1639
  },
1590
1640
  {
@@ -1607,6 +1657,7 @@
1607
1657
  "resource-protection",
1608
1658
  "full-suite"
1609
1659
  ],
1660
+ "backend_required": true,
1610
1661
  "detection_pattern": "[server-side]"
1611
1662
  },
1612
1663
  {
@@ -1628,6 +1679,7 @@
1628
1679
  "resource-protection",
1629
1680
  "full-suite"
1630
1681
  ],
1682
+ "backend_required": true,
1631
1683
  "detection_pattern": "[server-side]"
1632
1684
  },
1633
1685
  {
@@ -1649,6 +1701,7 @@
1649
1701
  "resource-protection",
1650
1702
  "full-suite"
1651
1703
  ],
1704
+ "backend_required": true,
1652
1705
  "detection_pattern": "[server-side]"
1653
1706
  },
1654
1707
  {
@@ -1671,6 +1724,7 @@
1671
1724
  "resource-protection",
1672
1725
  "full-suite"
1673
1726
  ],
1727
+ "backend_required": true,
1674
1728
  "detection_pattern": "[server-side]"
1675
1729
  },
1676
1730
  {
@@ -1693,6 +1747,7 @@
1693
1747
  "resource-protection",
1694
1748
  "full-suite"
1695
1749
  ],
1750
+ "backend_required": true,
1696
1751
  "detection_pattern": "[server-side]"
1697
1752
  },
1698
1753
  {
@@ -1715,6 +1770,7 @@
1715
1770
  "resource-protection",
1716
1771
  "full-suite"
1717
1772
  ],
1773
+ "backend_required": true,
1718
1774
  "detection_pattern": "[server-side]"
1719
1775
  },
1720
1776
  {
@@ -1736,6 +1792,7 @@
1736
1792
  "resource-protection",
1737
1793
  "full-suite"
1738
1794
  ],
1795
+ "backend_required": true,
1739
1796
  "detection_pattern": "[server-side]"
1740
1797
  },
1741
1798
  {
@@ -1758,6 +1815,7 @@
1758
1815
  "resource-protection",
1759
1816
  "full-suite"
1760
1817
  ],
1818
+ "backend_required": true,
1761
1819
  "detection_pattern": "[server-side]"
1762
1820
  },
1763
1821
  {
@@ -1780,6 +1838,7 @@
1780
1838
  "resource-protection",
1781
1839
  "full-suite"
1782
1840
  ],
1841
+ "backend_required": true,
1783
1842
  "detection_pattern": "[server-side]"
1784
1843
  },
1785
1844
  {
@@ -1790,6 +1849,7 @@
1790
1849
  "enforcement": "constitutional",
1791
1850
  "gate_type": "pre-action",
1792
1851
  "severity": "block",
1852
+ "detection_pattern": "Detects: print(api_key), logger.info(password), console.log(token), secret values in exception stack traces, env vars echoed to shell output",
1793
1853
  "example_blocked": "Agent logs the full contents of os.environ to debug a configuration issue, exposing all API keys in plaintext logs",
1794
1854
  "example_allowed": "Agent logs environment variable names but masks values: 'STRIPE_KEY=sk-***[masked]'",
1795
1855
  "tags": [
@@ -1801,8 +1861,7 @@
1801
1861
  "essential",
1802
1862
  "developer-safety",
1803
1863
  "full-suite"
1804
- ],
1805
- "detection_pattern": "[server-side]"
1864
+ ]
1806
1865
  },
1807
1866
  {
1808
1867
  "id": "sec-002",
@@ -1812,6 +1871,7 @@
1812
1871
  "enforcement": "constitutional",
1813
1872
  "gate_type": "pre-action",
1814
1873
  "severity": "block",
1874
+ "detection_pattern": "Detects: eval() on external input, exec() with user-provided strings, subprocess.run with unvalidated arguments, dynamic import of unverified modules",
1815
1875
  "example_blocked": "Agent executes code from a web-scraped code block directly in the production environment without sandboxing",
1816
1876
  "example_allowed": "Agent runs external code in a containerised environment with no network access and resource limits, presents output for review",
1817
1877
  "tags": [
@@ -1822,8 +1882,7 @@
1822
1882
  "preset_groups": [
1823
1883
  "developer-safety",
1824
1884
  "full-suite"
1825
- ],
1826
- "detection_pattern": "[server-side]"
1885
+ ]
1827
1886
  },
1828
1887
  {
1829
1888
  "id": "sec-003",
@@ -1844,6 +1903,7 @@
1844
1903
  "developer-safety",
1845
1904
  "full-suite"
1846
1905
  ],
1906
+ "backend_required": true,
1847
1907
  "detection_pattern": "[server-side]"
1848
1908
  },
1849
1909
  {
@@ -1854,6 +1914,7 @@
1854
1914
  "enforcement": "constitutional",
1855
1915
  "gate_type": "pre-action",
1856
1916
  "severity": "block",
1917
+ "detection_pattern": "Detects: sudo commands not in approved list, IAM role assumption beyond declared need, OAuth scope requests exceeding task requirements, root shell acquisition",
1857
1918
  "example_blocked": "Agent requests full S3 admin permissions to upload a single file to one bucket",
1858
1919
  "example_allowed": "Agent requests PutObject permission scoped to the specific bucket and prefix required, nothing more",
1859
1920
  "tags": [
@@ -1864,8 +1925,7 @@
1864
1925
  "preset_groups": [
1865
1926
  "developer-safety",
1866
1927
  "full-suite"
1867
- ],
1868
- "detection_pattern": "[server-side]"
1928
+ ]
1869
1929
  },
1870
1930
  {
1871
1931
  "id": "sec-005",
@@ -1886,6 +1946,7 @@
1886
1946
  "developer-safety",
1887
1947
  "full-suite"
1888
1948
  ],
1949
+ "backend_required": true,
1889
1950
  "detection_pattern": "[server-side]"
1890
1951
  },
1891
1952
  {
@@ -1896,6 +1957,7 @@
1896
1957
  "enforcement": "constitutional",
1897
1958
  "gate_type": "pre-action",
1898
1959
  "severity": "block",
1960
+ "detection_pattern": "Detects: JWT secret changes, OAuth provider config modifications, session store migrations, MFA bypass code additions, password hashing algorithm changes",
1899
1961
  "example_blocked": "Agent modifies JWT signing algorithm from RS256 to HS256 to simplify local development, breaking production auth",
1900
1962
  "example_allowed": "Agent proposes auth change, documents security implications, routes for security review before any implementation",
1901
1963
  "tags": [
@@ -1906,8 +1968,7 @@
1906
1968
  "preset_groups": [
1907
1969
  "developer-safety",
1908
1970
  "full-suite"
1909
- ],
1910
- "detection_pattern": "[server-side]"
1971
+ ]
1911
1972
  },
1912
1973
  {
1913
1974
  "id": "sec-007",
@@ -1928,6 +1989,7 @@
1928
1989
  "developer-safety",
1929
1990
  "full-suite"
1930
1991
  ],
1992
+ "backend_required": true,
1931
1993
  "detection_pattern": "[server-side]"
1932
1994
  },
1933
1995
  {
@@ -1949,6 +2011,7 @@
1949
2011
  "developer-safety",
1950
2012
  "full-suite"
1951
2013
  ],
2014
+ "backend_required": true,
1952
2015
  "detection_pattern": "[server-side]"
1953
2016
  },
1954
2017
  {
@@ -1971,6 +2034,7 @@
1971
2034
  "developer-safety",
1972
2035
  "full-suite"
1973
2036
  ],
2037
+ "backend_required": true,
1974
2038
  "detection_pattern": "[server-side]"
1975
2039
  },
1976
2040
  {
@@ -1981,6 +2045,7 @@
1981
2045
  "enforcement": "constitutional",
1982
2046
  "gate_type": "pre-action",
1983
2047
  "severity": "block",
2048
+ "detection_pattern": "Detects: API calls to Kimi, MiniMax, DeepSeek, or other banned provider endpoints; model IDs matching banned provider prefixes in routing configs",
1984
2049
  "example_blocked": "Agent routes a prompt containing proprietary code to a DeepSeek API endpoint to save costs",
1985
2050
  "example_allowed": "Agent routes all requests through approved providers (Anthropic, Google, OpenRouter with approved models only)",
1986
2051
  "tags": [
@@ -1991,8 +2056,7 @@
1991
2056
  "preset_groups": [
1992
2057
  "developer-safety",
1993
2058
  "full-suite"
1994
- ],
1995
- "detection_pattern": "[server-side]"
2059
+ ]
1996
2060
  },
1997
2061
  {
1998
2062
  "id": "sec-011",
@@ -2002,6 +2066,7 @@
2002
2066
  "enforcement": "constitutional",
2003
2067
  "gate_type": "pre-action",
2004
2068
  "severity": "block",
2069
+ "detection_pattern": "Detects: MFA disable API calls, 2FA removal from admin accounts, TOTP secret deletion, backup code exposure, auth app removal from account",
2005
2070
  "example_blocked": "Agent disables 2FA on the production GCP account to simplify a deployment script's authentication flow",
2006
2071
  "example_allowed": "Agent uses service account keys or workload identity for automation, never touches human account MFA settings",
2007
2072
  "tags": [
@@ -2012,8 +2077,7 @@
2012
2077
  "preset_groups": [
2013
2078
  "developer-safety",
2014
2079
  "full-suite"
2015
- ],
2016
- "detection_pattern": "[server-side]"
2080
+ ]
2017
2081
  },
2018
2082
  {
2019
2083
  "id": "sec-012",
@@ -2034,6 +2098,7 @@
2034
2098
  "developer-safety",
2035
2099
  "full-suite"
2036
2100
  ],
2101
+ "backend_required": true,
2037
2102
  "detection_pattern": "[server-side]"
2038
2103
  },
2039
2104
  {
@@ -2054,6 +2119,7 @@
2054
2119
  "preset_groups": [
2055
2120
  "full-suite"
2056
2121
  ],
2122
+ "backend_required": true,
2057
2123
  "detection_pattern": "[server-side]"
2058
2124
  },
2059
2125
  {
@@ -2064,6 +2130,7 @@
2064
2130
  "enforcement": "constitutional",
2065
2131
  "gate_type": "pre-action",
2066
2132
  "severity": "block",
2133
+ "detection_pattern": "Detects: EU resident data stored without consent record, PII processed without documented lawful basis, data transferred outside EU/EEA without Standard Contractual Clauses",
2067
2134
  "example_blocked": "Agent stores email addresses of EU website visitors for marketing without a consent record or privacy policy reference",
2068
2135
  "example_allowed": "Agent confirms consent record exists, stores only consented data, includes lawful basis in storage metadata",
2069
2136
  "tags": [
@@ -2073,8 +2140,7 @@
2073
2140
  ],
2074
2141
  "preset_groups": [
2075
2142
  "full-suite"
2076
- ],
2077
- "detection_pattern": "[server-side]"
2143
+ ]
2078
2144
  },
2079
2145
  {
2080
2146
  "id": "cmp-003",
@@ -2094,6 +2160,7 @@
2094
2160
  "preset_groups": [
2095
2161
  "full-suite"
2096
2162
  ],
2163
+ "backend_required": true,
2097
2164
  "detection_pattern": "[server-side]"
2098
2165
  },
2099
2166
  {
@@ -2114,6 +2181,7 @@
2114
2181
  "preset_groups": [
2115
2182
  "full-suite"
2116
2183
  ],
2184
+ "backend_required": true,
2117
2185
  "detection_pattern": "[server-side]"
2118
2186
  }
2119
2187
  ]