@highflame/policy 2.2.36 → 2.2.37

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 (65) hide show
  1. package/_schemas/agent_ops/context.json +792 -0
  2. package/_schemas/agent_ops/schema.cedarschema +127 -109
  3. package/_schemas/agent_ops/templates/ported/agent-security/agent_identity_a2a_cross_origin.cedar +6 -4
  4. package/_schemas/agent_ops/templates/ported/agent-security/agent_identity_a2a_escalation.cedar +5 -4
  5. package/_schemas/agent_ops/templates/ported/agent-security/agent_identity_a2a_inter_agent_injection.cedar +9 -8
  6. package/_schemas/agent_ops/templates/ported/agent-security/agent_identity_claude_block_injection.cedar +2 -2
  7. package/_schemas/agent_ops/templates/ported/agent-security/agent_identity_defaults.cedar +3 -3
  8. package/_schemas/agent_ops/templates/ported/agent-security/agent_identity_multi_agent_trust.cedar +6 -6
  9. package/_schemas/agent_ops/templates/ported/content-safety/trust_safety_chat_assistant.cedar +5 -4
  10. package/_schemas/agent_ops/templates/ported/content-safety/trust_safety_defaults.cedar +18 -12
  11. package/_schemas/agent_ops/templates/ported/content-safety/trust_safety_semantic.cedar +6 -6
  12. package/_schemas/agent_ops/templates/ported/content-safety/trust_safety_toxicity.cedar +4 -4
  13. package/_schemas/agent_ops/templates/ported/data-protection/data_protection_advanced_secrets.cedar +4 -2
  14. package/_schemas/agent_ops/templates/ported/data-protection/data_protection_data_pipeline.cedar +2 -1
  15. package/_schemas/agent_ops/templates/ported/data-protection/data_protection_defaults.cedar +4 -2
  16. package/_schemas/agent_ops/templates/ported/data-protection/privacy_advanced_pii.cedar +42 -21
  17. package/_schemas/agent_ops/templates/ported/data-protection/privacy_defaults.cedar +14 -7
  18. package/_schemas/agent_ops/templates/ported/data-protection/privacy_pii_model.cedar +10 -5
  19. package/_schemas/agent_ops/templates/ported/organization/organization_team_permissions.cedar +3 -2
  20. package/_schemas/agent_ops/templates/ported/threat-detection/security_advanced_block_critical_severity.cedar +3 -3
  21. package/_schemas/agent_ops/templates/ported/threat-detection/security_chat_assistant.cedar +5 -4
  22. package/_schemas/agent_ops/templates/ported/threat-detection/security_data_pipeline_block_injection.cedar +3 -2
  23. package/_schemas/agent_ops/templates/ported/threat-detection/security_injection.cedar +9 -8
  24. package/_schemas/agent_ops/templates/ported/threat-detection/security_patterns.cedar +5 -3
  25. package/_schemas/agent_ops/templates/ported/threat-detection/semantic_defaults.cedar +9 -7
  26. package/_schemas/ai_gateway/context.json +278 -0
  27. package/_schemas/ai_gateway/schema.cedarschema +37 -7
  28. package/_schemas/ai_gateway/templates/defaults/agent_security.cedar +5 -16
  29. package/_schemas/ai_gateway/templates/defaults/pii.cedar +14 -7
  30. package/_schemas/ai_gateway/templates/defaults/pii_advanced.cedar +42 -21
  31. package/_schemas/ai_gateway/templates/defaults/pii_model.cedar +10 -5
  32. package/_schemas/ai_gateway/templates/defaults/semantic.cedar +9 -74
  33. package/_schemas/ai_gateway/templates/defaults/tools.cedar +7 -38
  34. package/_schemas/ai_gateway/templates/secrets.cedar +3 -3
  35. package/_schemas/guardrails/context.json +671 -0
  36. package/_schemas/guardrails/schema.cedarschema +23 -2
  37. package/_schemas/guardrails/templates/defaults/agent_identity.cedar +3 -3
  38. package/_schemas/guardrails/templates/defaults/injection.cedar +9 -8
  39. package/_schemas/guardrails/templates/defaults/pii.cedar +14 -7
  40. package/_schemas/guardrails/templates/defaults/pii_model.cedar +10 -5
  41. package/_schemas/guardrails/templates/defaults/secrets.cedar +4 -2
  42. package/_schemas/guardrails/templates/defaults/security_patterns.cedar +5 -3
  43. package/_schemas/guardrails/templates/defaults/semantic.cedar +6 -6
  44. package/_schemas/guardrails/templates/defaults/toxicity.cedar +6 -6
  45. package/_schemas/guardrails/templates/profiles/a2a_security/cross_origin.cedar +6 -4
  46. package/_schemas/guardrails/templates/profiles/a2a_security/escalation_detection.cedar +5 -4
  47. package/_schemas/guardrails/templates/profiles/a2a_security/inter_agent_injection.cedar +9 -8
  48. package/_schemas/guardrails/templates/profiles/advanced_detection/pii.cedar +42 -21
  49. package/_schemas/guardrails/templates/profiles/advanced_detection/secrets.cedar +4 -2
  50. package/_schemas/guardrails/templates/profiles/chat_assistant/security.cedar +5 -4
  51. package/_schemas/guardrails/templates/profiles/chat_assistant/trust_safety.cedar +5 -4
  52. package/_schemas/guardrails/templates/profiles/data_pipeline/data_protection.cedar +2 -1
  53. package/_schemas/guardrails/templates/profiles/data_pipeline/security.cedar +3 -2
  54. package/_schemas/guardrails/templates/profiles/multi_agent/agent_trust.cedar +6 -6
  55. package/_schemas/guardrails/templates/templates.json +0 -9
  56. package/dist/agent_ops-defaults.gen.js +177 -120
  57. package/dist/agent_ops-entities.gen.js +5 -1
  58. package/dist/ai_gateway-defaults.gen.js +90 -164
  59. package/dist/ai_gateway-entities.gen.js +6 -2
  60. package/dist/guardrails-defaults.gen.js +144 -145
  61. package/dist/guardrails-entities.gen.js +5 -1
  62. package/dist/service-schemas.gen.d.ts +3 -3
  63. package/dist/service-schemas.gen.js +480 -118
  64. package/package.json +1 -1
  65. package/_schemas/guardrails/templates/profiles/advanced_detection/threat_severity.cedar +0 -30
@@ -519,7 +519,7 @@ const AGENT_OPS_DATA_PROTECTION_DEFAULTS_CEDAR = `// ===========================
519
519
 
520
520
  @id("data-protection.block-secrets")
521
521
  @name("Block secrets")
522
- @description("Blocks process_prompt, call_tool, read_file, and write_file when secrets_detected is true.")
522
+ @description("Blocks process_prompt, process_response, call_tool, read_file, and write_file when secrets_detected is true.")
523
523
  @severity("critical")
524
524
  @tags("category:data-protection,threat:secrets,detection:rule,owasp:llm06")
525
525
  @reject_message("Request blocked: secrets or credentials were detected in the content.")
@@ -527,6 +527,7 @@ forbid (
527
527
  principal,
528
528
  action in [
529
529
  AgentOps::Action::"process_prompt",
530
+ AgentOps::Action::"process_response",
530
531
  AgentOps::Action::"call_tool",
531
532
  AgentOps::Action::"read_file",
532
533
  AgentOps::Action::"write_file"
@@ -539,7 +540,7 @@ when {
539
540
 
540
541
  @id("data-protection.block-secrets-bulk")
541
542
  @name("Block secrets (bulk)")
542
- @description("Blocks process_prompt, call_tool, read_file, and write_file when secret_count >= 3.")
543
+ @description("Blocks process_prompt, process_response, call_tool, read_file, and write_file when secret_count >= 3.")
543
544
  @severity("critical")
544
545
  @tags("category:data-protection,threat:secrets,threat:exfiltration,detection:aggregate,owasp:llm06")
545
546
  @reject_message("Request blocked: multiple distinct secrets were detected — possible credential dump.")
@@ -547,6 +548,7 @@ forbid (
547
548
  principal,
548
549
  action in [
549
550
  AgentOps::Action::"process_prompt",
551
+ AgentOps::Action::"process_response",
550
552
  AgentOps::Action::"call_tool",
551
553
  AgentOps::Action::"read_file",
552
554
  AgentOps::Action::"write_file"
@@ -580,13 +582,14 @@ const AGENT_OPS_SECURITY_INJECTION_CEDAR = `// =================================
580
582
 
581
583
  @id("security.block-injection-ml")
582
584
  @name("Block injection (ML)")
583
- @description("Blocks process_prompt and call_tool when injection_score >= 86.")
585
+ @description("Blocks process_prompt, process_response, and call_tool when injection_score >= 86.")
584
586
  @severity("high")
585
587
  @tags("category:security,threat:injection,detection:ml,owasp:llm01,mitre:atlas-t0051")
586
588
  @reject_message("Prompt blocked: the ML classifier detected prompt injection with high confidence.")
587
589
  forbid (
588
590
  principal,
589
- action in [AgentOps::Action::"process_prompt", AgentOps::Action::"call_tool"],
591
+ action in [AgentOps::Action::"process_prompt",
592
+ AgentOps::Action::"process_response", AgentOps::Action::"call_tool"],
590
593
  resource
591
594
  )
592
595
  when {
@@ -595,13 +598,13 @@ when {
595
598
 
596
599
  @id("security.block-jailbreak-ml")
597
600
  @name("Block jailbreak (ML)")
598
- @description("Blocks process_prompt when jailbreak_score >= 81.")
601
+ @description("Blocks process_prompt and process_response when jailbreak_score >= 81.")
599
602
  @severity("high")
600
603
  @tags("category:security,threat:jailbreak,detection:ml,owasp:llm02,mitre:atlas-t0054")
601
604
  @reject_message("Prompt blocked: the ML classifier detected a jailbreak attempt with high confidence.")
602
605
  forbid (
603
606
  principal,
604
- action == AgentOps::Action::"process_prompt",
607
+ action in [AgentOps::Action::"process_prompt", AgentOps::Action::"process_response"],
605
608
  resource
606
609
  )
607
610
  when {
@@ -610,13 +613,13 @@ when {
610
613
 
611
614
  @id("security.block-injection-combined")
612
615
  @name("Block injection + jailbreak (combined)")
613
- @description("Blocks process_prompt when injection_score >= 61 and jailbreak_score >= 61.")
616
+ @description("Blocks process_prompt and process_response when injection_score >= 61 and jailbreak_score >= 61.")
614
617
  @severity("high")
615
618
  @tags("category:security,threat:injection,threat:jailbreak,detection:ml")
616
619
  @reject_message("Prompt blocked: moderate injection and jailbreak signals were detected together.")
617
620
  forbid (
618
621
  principal,
619
- action == AgentOps::Action::"process_prompt",
622
+ action in [AgentOps::Action::"process_prompt", AgentOps::Action::"process_response"],
620
623
  resource
621
624
  )
622
625
  when {
@@ -626,13 +629,13 @@ when {
626
629
 
627
630
  @id("security.block-invisible-chars")
628
631
  @name("Block invisible-character injection")
629
- @description("Blocks process_prompt when invisible_chars_detected is true and invisible_chars_score >= 51.")
632
+ @description("Blocks process_prompt and process_response when invisible_chars_detected is true and invisible_chars_score >= 51.")
630
633
  @severity("high")
631
634
  @tags("category:security,threat:invisible-chars,threat:injection,detection:pattern")
632
635
  @reject_message("Prompt blocked: invisible Unicode characters often used for injection were detected.")
633
636
  forbid (
634
637
  principal,
635
- action == AgentOps::Action::"process_prompt",
638
+ action in [AgentOps::Action::"process_prompt", AgentOps::Action::"process_response"],
636
639
  resource
637
640
  )
638
641
  when {
@@ -664,7 +667,8 @@ const AGENT_OPS_PRIVACY_DEFAULTS_CEDAR = `// ===================================
664
667
  @reject_message("Content blocked: national identifier (SSN, passport, or driver's license) patterns detected.")
665
668
  forbid (
666
669
  principal,
667
- action in [AgentOps::Action::"process_prompt", AgentOps::Action::"call_tool", AgentOps::Action::"read_file", AgentOps::Action::"write_file"],
670
+ action in [AgentOps::Action::"process_prompt",
671
+ AgentOps::Action::"process_response", AgentOps::Action::"call_tool", AgentOps::Action::"read_file", AgentOps::Action::"write_file"],
668
672
  resource
669
673
  )
670
674
  when {
@@ -685,7 +689,8 @@ when {
685
689
  @reject_message("Content blocked: credit card number patterns detected.")
686
690
  forbid (
687
691
  principal,
688
- action in [AgentOps::Action::"process_prompt", AgentOps::Action::"call_tool", AgentOps::Action::"read_file", AgentOps::Action::"write_file"],
692
+ action in [AgentOps::Action::"process_prompt",
693
+ AgentOps::Action::"process_response", AgentOps::Action::"call_tool", AgentOps::Action::"read_file", AgentOps::Action::"write_file"],
689
694
  resource
690
695
  )
691
696
  when {
@@ -700,7 +705,8 @@ when {
700
705
  @reject_message("Content blocked: bank account (IBAN) number patterns detected.")
701
706
  forbid (
702
707
  principal,
703
- action in [AgentOps::Action::"process_prompt", AgentOps::Action::"call_tool", AgentOps::Action::"read_file", AgentOps::Action::"write_file"],
708
+ action in [AgentOps::Action::"process_prompt",
709
+ AgentOps::Action::"process_response", AgentOps::Action::"call_tool", AgentOps::Action::"read_file", AgentOps::Action::"write_file"],
704
710
  resource
705
711
  )
706
712
  when {
@@ -721,7 +727,8 @@ when {
721
727
  @reject_message("Content blocked: medical record identifier patterns detected.")
722
728
  forbid (
723
729
  principal,
724
- action in [AgentOps::Action::"process_prompt", AgentOps::Action::"call_tool", AgentOps::Action::"read_file", AgentOps::Action::"write_file"],
730
+ action in [AgentOps::Action::"process_prompt",
731
+ AgentOps::Action::"process_response", AgentOps::Action::"call_tool", AgentOps::Action::"read_file", AgentOps::Action::"write_file"],
725
732
  resource
726
733
  )
727
734
  when {
@@ -744,7 +751,8 @@ when {
744
751
  @reject_message("Content blocked: tax identifier (ITIN or EIN) patterns detected.")
745
752
  forbid (
746
753
  principal,
747
- action in [AgentOps::Action::"process_prompt", AgentOps::Action::"call_tool", AgentOps::Action::"read_file", AgentOps::Action::"write_file"],
754
+ action in [AgentOps::Action::"process_prompt",
755
+ AgentOps::Action::"process_response", AgentOps::Action::"call_tool", AgentOps::Action::"read_file", AgentOps::Action::"write_file"],
748
756
  resource
749
757
  )
750
758
  when {
@@ -764,7 +772,8 @@ when {
764
772
  @reject_message("Content blocked: credential or API key patterns detected.")
765
773
  forbid (
766
774
  principal,
767
- action in [AgentOps::Action::"process_prompt", AgentOps::Action::"call_tool", AgentOps::Action::"read_file", AgentOps::Action::"write_file"],
775
+ action in [AgentOps::Action::"process_prompt",
776
+ AgentOps::Action::"process_response", AgentOps::Action::"call_tool", AgentOps::Action::"read_file", AgentOps::Action::"write_file"],
768
777
  resource
769
778
  )
770
779
  when {
@@ -794,7 +803,8 @@ when {
794
803
  @reject_message("Content blocked: cryptocurrency wallet address patterns detected.")
795
804
  forbid (
796
805
  principal,
797
- action in [AgentOps::Action::"process_prompt", AgentOps::Action::"call_tool", AgentOps::Action::"read_file", AgentOps::Action::"write_file"],
806
+ action in [AgentOps::Action::"process_prompt",
807
+ AgentOps::Action::"process_response", AgentOps::Action::"call_tool", AgentOps::Action::"read_file", AgentOps::Action::"write_file"],
798
808
  resource
799
809
  )
800
810
  when {
@@ -829,7 +839,8 @@ const AGENT_OPS_PRIVACY_PII_MODEL_CEDAR = `// ==================================
829
839
  @reject_message("Content blocked: national identifier (SSN, passport, or driver's license) patterns detected.")
830
840
  forbid (
831
841
  principal,
832
- action in [AgentOps::Action::"process_prompt", AgentOps::Action::"call_tool", AgentOps::Action::"read_file", AgentOps::Action::"write_file"],
842
+ action in [AgentOps::Action::"process_prompt",
843
+ AgentOps::Action::"process_response", AgentOps::Action::"call_tool", AgentOps::Action::"read_file", AgentOps::Action::"write_file"],
833
844
  resource
834
845
  )
835
846
  when {
@@ -844,7 +855,8 @@ when {
844
855
  @reject_message("Content blocked: credit card number patterns detected.")
845
856
  forbid (
846
857
  principal,
847
- action in [AgentOps::Action::"process_prompt", AgentOps::Action::"call_tool", AgentOps::Action::"read_file", AgentOps::Action::"write_file"],
858
+ action in [AgentOps::Action::"process_prompt",
859
+ AgentOps::Action::"process_response", AgentOps::Action::"call_tool", AgentOps::Action::"read_file", AgentOps::Action::"write_file"],
848
860
  resource
849
861
  )
850
862
  when {
@@ -859,7 +871,8 @@ when {
859
871
  @reject_message("Content blocked: bank account (IBAN) number patterns detected.")
860
872
  forbid (
861
873
  principal,
862
- action in [AgentOps::Action::"process_prompt", AgentOps::Action::"call_tool", AgentOps::Action::"read_file", AgentOps::Action::"write_file"],
874
+ action in [AgentOps::Action::"process_prompt",
875
+ AgentOps::Action::"process_response", AgentOps::Action::"call_tool", AgentOps::Action::"read_file", AgentOps::Action::"write_file"],
863
876
  resource
864
877
  )
865
878
  when {
@@ -874,7 +887,8 @@ when {
874
887
  @reject_message("Content blocked: medical record identifier patterns detected.")
875
888
  forbid (
876
889
  principal,
877
- action in [AgentOps::Action::"process_prompt", AgentOps::Action::"call_tool", AgentOps::Action::"read_file", AgentOps::Action::"write_file"],
890
+ action in [AgentOps::Action::"process_prompt",
891
+ AgentOps::Action::"process_response", AgentOps::Action::"call_tool", AgentOps::Action::"read_file", AgentOps::Action::"write_file"],
878
892
  resource
879
893
  )
880
894
  when {
@@ -889,7 +903,8 @@ when {
889
903
  @reject_message("Content blocked: credential or API key patterns detected.")
890
904
  forbid (
891
905
  principal,
892
- action in [AgentOps::Action::"process_prompt", AgentOps::Action::"call_tool", AgentOps::Action::"read_file", AgentOps::Action::"write_file"],
906
+ action in [AgentOps::Action::"process_prompt",
907
+ AgentOps::Action::"process_response", AgentOps::Action::"call_tool", AgentOps::Action::"read_file", AgentOps::Action::"write_file"],
893
908
  resource
894
909
  )
895
910
  when {
@@ -921,13 +936,13 @@ const AGENT_OPS_TRUST_SAFETY_TOXICITY_CEDAR = `// ==============================
921
936
 
922
937
  @id("trust-safety.block-toxicity-critical")
923
938
  @name("Block critical toxicity")
924
- @description("Blocks process_prompt when any toxicity score is >= 91.")
939
+ @description("Blocks process_prompt and process_response when any toxicity score is >= 91.")
925
940
  @severity("critical")
926
941
  @tags("category:trust-safety,threat:harmful,detection:ml,compliance:eu-ai-act,compliance:iso-42001")
927
942
  @reject_message("Prompt blocked: critical-severity toxic content detected.")
928
943
  forbid (
929
944
  principal,
930
- action == AgentOps::Action::"process_prompt",
945
+ action in [AgentOps::Action::"process_prompt", AgentOps::Action::"process_response"],
931
946
  resource
932
947
  )
933
948
  when {
@@ -941,13 +956,13 @@ when {
941
956
 
942
957
  @id("trust-safety.block-toxicity-combined")
943
958
  @name("Block combined toxicity")
944
- @description("Blocks process_prompt when any two toxicity scores are >= 61.")
959
+ @description("Blocks process_prompt and process_response when any two toxicity scores are >= 61.")
945
960
  @severity("high")
946
961
  @tags("category:trust-safety,threat:harmful,detection:aggregate")
947
962
  @reject_message("Prompt blocked: multiple moderate toxicity signals were detected together.")
948
963
  forbid (
949
964
  principal,
950
- action == AgentOps::Action::"process_prompt",
965
+ action in [AgentOps::Action::"process_prompt", AgentOps::Action::"process_response"],
951
966
  resource
952
967
  )
953
968
  when {
@@ -1285,7 +1300,7 @@ const AGENT_OPS_SECURITY_PATTERNS_CEDAR = `// ==================================
1285
1300
 
1286
1301
  @id("security.block-path-traversal")
1287
1302
  @name("Block path traversal")
1288
- @description("Blocks process_prompt, call_tool, read_file, and write_file when path_traversal_detected is true and severity is high or critical.")
1303
+ @description("Blocks process_prompt, process_response, call_tool, read_file, and write_file when path_traversal_detected is true and severity is high or critical.")
1289
1304
  @severity("high")
1290
1305
  @tags("category:security,threat:path-traversal,detection:pattern,mitre:t1005")
1291
1306
  @reject_message("Request blocked: path traversal pattern detected — sensitive system files or deep directory traversal.")
@@ -1293,6 +1308,7 @@ forbid (
1293
1308
  principal,
1294
1309
  action in [
1295
1310
  AgentOps::Action::"process_prompt",
1311
+ AgentOps::Action::"process_response",
1296
1312
  AgentOps::Action::"call_tool",
1297
1313
  AgentOps::Action::"read_file",
1298
1314
  AgentOps::Action::"write_file"
@@ -1307,13 +1323,14 @@ when {
1307
1323
 
1308
1324
  @id("security.block-sql-injection")
1309
1325
  @name("Block SQL injection")
1310
- @description("Blocks process_prompt and call_tool when sql_injection_detected is true and sql_injection_score >= 75.")
1326
+ @description("Blocks process_prompt, process_response, and call_tool when sql_injection_detected is true and sql_injection_score >= 75.")
1311
1327
  @severity("high")
1312
1328
  @tags("category:security,threat:sql-injection,detection:pattern")
1313
1329
  @reject_message("Request blocked: SQL injection pattern detected — tautology, UNION attack, or destructive query.")
1314
1330
  forbid (
1315
1331
  principal,
1316
- action in [AgentOps::Action::"process_prompt", AgentOps::Action::"call_tool"],
1332
+ action in [AgentOps::Action::"process_prompt",
1333
+ AgentOps::Action::"process_response", AgentOps::Action::"call_tool"],
1317
1334
  resource
1318
1335
  )
1319
1336
  when {
@@ -1341,13 +1358,13 @@ const AGENT_OPS_TRUST_SAFETY_SEMANTIC_CEDAR = `// ==============================
1341
1358
 
1342
1359
  @id("trust-safety.block-dangerous-topics")
1343
1360
  @name("Block dangerous topics")
1344
- @description("Blocks process_prompt when content_topics contains weapons or explosives categories.")
1361
+ @description("Blocks process_prompt and process_response when content_topics contains weapons or explosives categories.")
1345
1362
  @severity("critical")
1346
1363
  @tags("category:trust-safety,threat:harmful,detection:ml,compliance:eu-ai-act")
1347
1364
  @reject_message("Prompt blocked: content classified under a dangerous topic (weapons, explosives, illegal synthesis).")
1348
1365
  forbid (
1349
1366
  principal,
1350
- action == AgentOps::Action::"process_prompt",
1367
+ action in [AgentOps::Action::"process_prompt", AgentOps::Action::"process_response"],
1351
1368
  resource
1352
1369
  )
1353
1370
  when {
@@ -1361,13 +1378,13 @@ when {
1361
1378
 
1362
1379
  @id("trust-safety.block-controlled-substances")
1363
1380
  @name("Block controlled substances")
1364
- @description("Blocks process_prompt when content_topics contains controlled substances or precursor chemicals.")
1381
+ @description("Blocks process_prompt and process_response when content_topics contains controlled substances or precursor chemicals.")
1365
1382
  @severity("high")
1366
1383
  @tags("category:trust-safety,threat:harmful,detection:ml,compliance:eu-ai-act")
1367
1384
  @reject_message("Prompt blocked: content discusses controlled substances or precursor chemicals.")
1368
1385
  forbid (
1369
1386
  principal,
1370
- action == AgentOps::Action::"process_prompt",
1387
+ action in [AgentOps::Action::"process_prompt", AgentOps::Action::"process_response"],
1371
1388
  resource
1372
1389
  )
1373
1390
  when {
@@ -1381,13 +1398,13 @@ when {
1381
1398
 
1382
1399
  @id("trust-safety.block-restricted-topics")
1383
1400
  @name("Block high-confidence restricted topics")
1384
- @description("Blocks process_prompt when topic_confidence >= 81 and content_topics contains a restricted category.")
1401
+ @description("Blocks process_prompt and process_response when topic_confidence >= 81 and content_topics contains a restricted category.")
1385
1402
  @severity("high")
1386
1403
  @tags("category:trust-safety,threat:harmful,detection:ml")
1387
1404
  @reject_message("Prompt blocked: content high-confidence classified into a restricted topic (illegal activity, fraud, social engineering).")
1388
1405
  forbid (
1389
1406
  principal,
1390
- action == AgentOps::Action::"process_prompt",
1407
+ action in [AgentOps::Action::"process_prompt", AgentOps::Action::"process_response"],
1391
1408
  resource
1392
1409
  )
1393
1410
  when {
@@ -1489,13 +1506,13 @@ when {
1489
1506
 
1490
1507
  @id("agent-identity.block-autonomous-injection")
1491
1508
  @name("Block injection on autonomous agents")
1492
- @description("Blocks process_prompt when agent_type is \\"autonomous\\" and injection_score >= 51.")
1509
+ @description("Blocks process_prompt and process_response when agent_type is \\"autonomous\\" and injection_score >= 51.")
1493
1510
  @severity("high")
1494
- @tags("category:agent-identity,threat:injection,detection:ml,surface:process-prompt,owasp:llm01")
1511
+ @tags("category:agent-identity,threat:injection,detection:ml,surface:process-prompt,surface:process-response,owasp:llm01")
1495
1512
  @reject_message("Prompt blocked: lower injection threshold applies to autonomous agents and was exceeded.")
1496
1513
  forbid (
1497
1514
  principal is AgentOps::Agent,
1498
- action == AgentOps::Action::"process_prompt",
1515
+ action in [AgentOps::Action::"process_prompt", AgentOps::Action::"process_response"],
1499
1516
  resource
1500
1517
  )
1501
1518
  when {
@@ -1689,13 +1706,14 @@ const AGENT_OPS_SECURITY_CHAT_ASSISTANT_CEDAR = `// ============================
1689
1706
 
1690
1707
  @id("security.chat-block-injection")
1691
1708
  @name("Block injection (chat profile)")
1692
- @description("Blocks process_prompt and call_tool when injection_score >= 71 (lower threshold for public chat).")
1709
+ @description("Blocks process_prompt, process_response, and call_tool when injection_score >= 71 (lower threshold for public chat).")
1693
1710
  @severity("high")
1694
1711
  @tags("category:security,threat:injection,detection:ml,owasp:llm01")
1695
1712
  @reject_message("Prompt blocked: prompt injection detected with high confidence (chat profile).")
1696
1713
  forbid (
1697
1714
  principal,
1698
- action in [AgentOps::Action::"process_prompt", AgentOps::Action::"call_tool"],
1715
+ action in [AgentOps::Action::"process_prompt",
1716
+ AgentOps::Action::"process_response", AgentOps::Action::"call_tool"],
1699
1717
  resource
1700
1718
  )
1701
1719
  when {
@@ -1704,13 +1722,13 @@ when {
1704
1722
 
1705
1723
  @id("security.chat-block-jailbreak")
1706
1724
  @name("Block jailbreak (chat profile)")
1707
- @description("Blocks process_prompt when jailbreak_score >= 66 (lower threshold for public chat).")
1725
+ @description("Blocks process_prompt and process_response when jailbreak_score >= 66 (lower threshold for public chat).")
1708
1726
  @severity("high")
1709
1727
  @tags("category:security,threat:jailbreak,detection:ml,owasp:llm02")
1710
1728
  @reject_message("Prompt blocked: jailbreak attempt detected with high confidence (chat profile).")
1711
1729
  forbid (
1712
1730
  principal,
1713
- action == AgentOps::Action::"process_prompt",
1731
+ action in [AgentOps::Action::"process_prompt", AgentOps::Action::"process_response"],
1714
1732
  resource
1715
1733
  )
1716
1734
  when {
@@ -1738,13 +1756,13 @@ const AGENT_OPS_TRUST_SAFETY_CHAT_ASSISTANT_CEDAR = `// ========================
1738
1756
 
1739
1757
  @id("trust-safety.chat-block-toxicity")
1740
1758
  @name("Block toxicity (chat profile)")
1741
- @description("Blocks process_prompt when any toxicity score is >= 71 (lower threshold for public chat).")
1759
+ @description("Blocks process_prompt and process_response when any toxicity score is >= 71 (lower threshold for public chat).")
1742
1760
  @severity("critical")
1743
1761
  @tags("category:trust-safety,threat:harmful,threat:hate-speech,detection:ml,compliance:eu-ai-act")
1744
1762
  @reject_message("Prompt blocked: toxic content detected at the chat-profile threshold.")
1745
1763
  forbid (
1746
1764
  principal,
1747
- action == AgentOps::Action::"process_prompt",
1765
+ action in [AgentOps::Action::"process_prompt", AgentOps::Action::"process_response"],
1748
1766
  resource
1749
1767
  )
1750
1768
  when {
@@ -1756,13 +1774,14 @@ when {
1756
1774
 
1757
1775
  @id("trust-safety.chat-block-restricted-topics")
1758
1776
  @name("Block restricted topics (chat profile)")
1759
- @description("Blocks process_prompt and call_tool when topic_confidence >= 71 and content_topics contains a restricted category.")
1777
+ @description("Blocks process_prompt, process_response, and call_tool when topic_confidence >= 71 and content_topics contains a restricted category.")
1760
1778
  @severity("high")
1761
1779
  @tags("category:trust-safety,threat:harmful,detection:ml,compliance:eu-ai-act")
1762
1780
  @reject_message("Prompt blocked: content discusses a topic restricted for chat assistants.")
1763
1781
  forbid (
1764
1782
  principal,
1765
- action in [AgentOps::Action::"process_prompt", AgentOps::Action::"call_tool"],
1783
+ action in [AgentOps::Action::"process_prompt",
1784
+ AgentOps::Action::"process_response", AgentOps::Action::"call_tool"],
1766
1785
  resource
1767
1786
  )
1768
1787
  when {
@@ -2272,7 +2291,7 @@ const AGENT_OPS_DATA_PROTECTION_DATA_PIPELINE_CEDAR = `// ======================
2272
2291
 
2273
2292
  @id("data-protection.data-pipeline-block-secrets")
2274
2293
  @name("Block secrets in data pipeline")
2275
- @description("Blocks process_prompt, call_tool, read_file, and write_file when secrets_detected is true.")
2294
+ @description("Blocks process_prompt, process_response, call_tool, read_file, and write_file when secrets_detected is true.")
2276
2295
  @severity("critical")
2277
2296
  @tags("category:data-protection,threat:secrets,detection:rule,owasp:llm06")
2278
2297
  @reject_message("Request blocked: secrets detected in a data pipeline — any credential exposure is unacceptable here.")
@@ -2280,6 +2299,7 @@ forbid (
2280
2299
  principal,
2281
2300
  action in [
2282
2301
  AgentOps::Action::"process_prompt",
2302
+ AgentOps::Action::"process_response",
2283
2303
  AgentOps::Action::"call_tool",
2284
2304
  AgentOps::Action::"read_file",
2285
2305
  AgentOps::Action::"write_file"
@@ -2325,13 +2345,14 @@ const AGENT_OPS_SECURITY_DATA_PIPELINE_BLOCK_INJECTION_CEDAR = `// =============
2325
2345
 
2326
2346
  @id("security.data-pipeline-block-injection")
2327
2347
  @name("Block pipeline injection (data-pipeline profile)")
2328
- @description("Blocks process_prompt and call_tool when injection_score >= 66 (lower threshold for data pipelines).")
2348
+ @description("Blocks process_prompt, process_response, and call_tool when injection_score >= 66 (lower threshold for data pipelines).")
2329
2349
  @severity("high")
2330
2350
  @tags("category:security,threat:injection,detection:ml,owasp:llm01")
2331
2351
  @reject_message("Request blocked: prompt injection detected at the data-pipeline threshold — RAG inputs are high-risk for indirect injection.")
2332
2352
  forbid (
2333
2353
  principal,
2334
- action in [AgentOps::Action::"process_prompt", AgentOps::Action::"call_tool"],
2354
+ action in [AgentOps::Action::"process_prompt",
2355
+ AgentOps::Action::"process_response", AgentOps::Action::"call_tool"],
2335
2356
  resource
2336
2357
  )
2337
2358
  when {
@@ -2479,13 +2500,13 @@ when {
2479
2500
 
2480
2501
  @id("agent-identity.multi-agent-autonomous-injection")
2481
2502
  @name("Block injection on autonomous agents (stricter)")
2482
- @description("Blocks process_prompt when agent_type is \\"autonomous\\" and injection_score >= 51.")
2503
+ @description("Blocks process_prompt and process_response when agent_type is \\"autonomous\\" and injection_score >= 51.")
2483
2504
  @severity("high")
2484
- @tags("category:agent-identity,threat:injection,detection:ml,surface:process-prompt,owasp:llm01")
2505
+ @tags("category:agent-identity,threat:injection,detection:ml,surface:process-prompt,surface:process-response,owasp:llm01")
2485
2506
  @reject_message("Prompt blocked: lower injection threshold applies to autonomous agents and was exceeded.")
2486
2507
  forbid (
2487
2508
  principal is AgentOps::Agent,
2488
- action == AgentOps::Action::"process_prompt",
2509
+ action in [AgentOps::Action::"process_prompt", AgentOps::Action::"process_response"],
2489
2510
  resource
2490
2511
  )
2491
2512
  when {
@@ -2495,13 +2516,13 @@ when {
2495
2516
 
2496
2517
  @id("agent-identity.multi-agent-autonomous-jailbreak")
2497
2518
  @name("Block jailbreak on autonomous agents (stricter)")
2498
- @description("Blocks process_prompt when agent_type is \\"autonomous\\" and jailbreak_score >= 51.")
2519
+ @description("Blocks process_prompt and process_response when agent_type is \\"autonomous\\" and jailbreak_score >= 51.")
2499
2520
  @severity("high")
2500
- @tags("category:agent-identity,threat:jailbreak,detection:ml,surface:process-prompt,owasp:llm02")
2521
+ @tags("category:agent-identity,threat:jailbreak,detection:ml,surface:process-prompt,surface:process-response,owasp:llm02")
2501
2522
  @reject_message("Prompt blocked: lower jailbreak threshold applies to autonomous agents and was exceeded.")
2502
2523
  forbid (
2503
2524
  principal is AgentOps::Agent,
2504
- action == AgentOps::Action::"process_prompt",
2525
+ action in [AgentOps::Action::"process_prompt", AgentOps::Action::"process_response"],
2505
2526
  resource
2506
2527
  )
2507
2528
  when {
@@ -2705,13 +2726,14 @@ const AGENT_OPS_AGENT_IDENTITY_A2A_CROSS_ORIGIN_CEDAR = `// ====================
2705
2726
 
2706
2727
  @id("agent-identity.a2a-block-cross-origin-critical")
2707
2728
  @name("Block critical cross-origin from any agent")
2708
- @description("Blocks process_prompt and call_tool when cross_origin_detected is true and cross_origin_score >= 80.")
2729
+ @description("Blocks process_prompt, process_response, and call_tool when cross_origin_detected is true and cross_origin_score >= 80.")
2709
2730
  @severity("critical")
2710
2731
  @tags("category:agent-identity,threat:supply-chain,detection:ml,owasp:llm08")
2711
2732
  @reject_message("Request blocked: high-confidence cross-origin trust-boundary violation detected — confused-deputy attack.")
2712
2733
  forbid (
2713
2734
  principal is AgentOps::Agent,
2714
- action in [AgentOps::Action::"process_prompt", AgentOps::Action::"call_tool"],
2735
+ action in [AgentOps::Action::"process_prompt",
2736
+ AgentOps::Action::"process_response", AgentOps::Action::"call_tool"],
2715
2737
  resource
2716
2738
  )
2717
2739
  when {
@@ -2722,13 +2744,14 @@ when {
2722
2744
 
2723
2745
  @id("agent-identity.a2a-block-cross-origin-unverified")
2724
2746
  @name("Block cross-origin from unverified agents")
2725
- @description("Blocks process_prompt and call_tool when agent_trust_level is \\"unverified\\", cross_origin_detected is true, and cross_origin_score >= 60.")
2747
+ @description("Blocks process_prompt, process_response, and call_tool when agent_trust_level is \\"unverified\\", cross_origin_detected is true, and cross_origin_score >= 60.")
2726
2748
  @severity("high")
2727
2749
  @tags("category:agent-identity,threat:supply-chain,scope:per-agent,detection:ml,owasp:asi03")
2728
2750
  @reject_message("Request blocked: unverified agent attempted cross-origin activity — no trust attestation across trust domains.")
2729
2751
  forbid (
2730
2752
  principal is AgentOps::Agent,
2731
- action in [AgentOps::Action::"process_prompt", AgentOps::Action::"call_tool"],
2753
+ action in [AgentOps::Action::"process_prompt",
2754
+ AgentOps::Action::"process_response", AgentOps::Action::"call_tool"],
2732
2755
  resource
2733
2756
  )
2734
2757
  when {
@@ -2840,13 +2863,13 @@ when {
2840
2863
 
2841
2864
  @id("agent-identity.a2a-block-deep-context-injection")
2842
2865
  @name("Block multi-turn progressive injection")
2843
- @description("Blocks process_prompt when agent_trust_level is not \\"first_party\\", multi_turn_detection is true, and injection_deep_context_score >= 60.")
2866
+ @description("Blocks process_prompt and process_response when agent_trust_level is not \\"first_party\\", multi_turn_detection is true, and injection_deep_context_score >= 60.")
2844
2867
  @severity("high")
2845
- @tags("category:agent-identity,threat:injection,detection:ml,surface:process-prompt,owasp:llm01")
2868
+ @tags("category:agent-identity,threat:injection,detection:ml,surface:process-prompt,surface:process-response,owasp:llm01")
2846
2869
  @reject_message("Prompt blocked: multi-turn progressive injection detected by the deep-context model across conversation history.")
2847
2870
  forbid (
2848
2871
  principal is AgentOps::Agent,
2849
- action == AgentOps::Action::"process_prompt",
2872
+ action in [AgentOps::Action::"process_prompt", AgentOps::Action::"process_response"],
2850
2873
  resource
2851
2874
  )
2852
2875
  when {
@@ -2857,13 +2880,13 @@ when {
2857
2880
 
2858
2881
  @id("agent-identity.a2a-block-deep-context-jailbreak")
2859
2882
  @name("Block multi-turn progressive jailbreak")
2860
- @description("Blocks process_prompt when agent_trust_level is not \\"first_party\\", multi_turn_detection is true, and jailbreak_deep_context_score >= 60.")
2883
+ @description("Blocks process_prompt and process_response when agent_trust_level is not \\"first_party\\", multi_turn_detection is true, and jailbreak_deep_context_score >= 60.")
2861
2884
  @severity("high")
2862
- @tags("category:agent-identity,threat:jailbreak,detection:ml,surface:process-prompt,owasp:llm02")
2885
+ @tags("category:agent-identity,threat:jailbreak,detection:ml,surface:process-prompt,surface:process-response,owasp:llm02")
2863
2886
  @reject_message("Prompt blocked: multi-turn progressive jailbreak detected by the deep-context model across conversation history.")
2864
2887
  forbid (
2865
2888
  principal is AgentOps::Agent,
2866
- action == AgentOps::Action::"process_prompt",
2889
+ action in [AgentOps::Action::"process_prompt", AgentOps::Action::"process_response"],
2867
2890
  resource
2868
2891
  )
2869
2892
  when {
@@ -2878,13 +2901,14 @@ when {
2878
2901
 
2879
2902
  @id("agent-identity.a2a-block-encoded-injection")
2880
2903
  @name("Block encoded payload delivery between agents")
2881
- @description("Blocks process_prompt and call_tool when agent_id is non-empty, encoded_content_detected is true, and encoded_score >= 60.")
2904
+ @description("Blocks process_prompt, process_response, and call_tool when agent_id is non-empty, encoded_content_detected is true, and encoded_score >= 60.")
2882
2905
  @severity("high")
2883
2906
  @tags("category:agent-identity,threat:encoded-payload,detection:pattern,owasp:llm01")
2884
2907
  @reject_message("Request blocked: encoded payload detected in agent communication — agents should exchange plaintext, not encoded content.")
2885
2908
  forbid (
2886
2909
  principal is AgentOps::Agent,
2887
- action in [AgentOps::Action::"process_prompt", AgentOps::Action::"call_tool"],
2910
+ action in [AgentOps::Action::"process_prompt",
2911
+ AgentOps::Action::"process_response", AgentOps::Action::"call_tool"],
2888
2912
  resource
2889
2913
  )
2890
2914
  when {
@@ -3126,13 +3150,14 @@ const AGENT_OPS_AGENT_IDENTITY_A2A_ESCALATION_CEDAR = `// ======================
3126
3150
 
3127
3151
  @id("agent-identity.a2a-block-session-injection-peak")
3128
3152
  @name("Block agents at high session injection peak")
3129
- @description("Blocks call_tool and process_prompt when agent_trust_level is not \\"first_party\\" and session_max_injection_score >= 70.")
3153
+ @description("Blocks call_tool and process_prompt and process_response when agent_trust_level is not \\"first_party\\" and session_max_injection_score >= 70.")
3130
3154
  @severity("critical")
3131
3155
  @tags("category:agent-identity,threat:injection,scope:per-agent,detection:aggregate,owasp:llm01")
3132
3156
  @reject_message("Request blocked: this session previously crossed the injection peak threshold; non-first-party agents are restricted.")
3133
3157
  forbid (
3134
3158
  principal is AgentOps::Agent,
3135
- action in [AgentOps::Action::"call_tool", AgentOps::Action::"process_prompt"],
3159
+ action in [AgentOps::Action::"call_tool", AgentOps::Action::"process_prompt",
3160
+ AgentOps::Action::"process_response"],
3136
3161
  resource
3137
3162
  )
3138
3163
  when {
@@ -3142,13 +3167,13 @@ when {
3142
3167
 
3143
3168
  @id("agent-identity.a2a-block-session-jailbreak-peak")
3144
3169
  @name("Block agents at high session jailbreak peak")
3145
- @description("Blocks process_prompt when agent_trust_level is not \\"first_party\\" and session_max_jailbreak_score >= 70.")
3170
+ @description("Blocks process_prompt and process_response when agent_trust_level is not \\"first_party\\" and session_max_jailbreak_score >= 70.")
3146
3171
  @severity("critical")
3147
3172
  @tags("category:agent-identity,threat:jailbreak,scope:per-agent,detection:aggregate,owasp:llm02")
3148
3173
  @reject_message("Request blocked: this session previously crossed the jailbreak peak threshold; non-first-party agents are restricted.")
3149
3174
  forbid (
3150
3175
  principal is AgentOps::Agent,
3151
- action == AgentOps::Action::"process_prompt",
3176
+ action in [AgentOps::Action::"process_prompt", AgentOps::Action::"process_response"],
3152
3177
  resource
3153
3178
  )
3154
3179
  when {
@@ -3217,7 +3242,7 @@ const AGENT_OPS_DATA_PROTECTION_ADVANCED_SECRETS_CEDAR = `// ===================
3217
3242
 
3218
3243
  @id("data-protection.advanced-block-high-risk-secrets")
3219
3244
  @name("Block high-risk credential types")
3220
- @description("Blocks process_prompt, call_tool, read_file, and write_file when secret_types contains a cloud, GitHub, SSH, or database credential.")
3245
+ @description("Blocks process_prompt, process_response, call_tool, read_file, and write_file when secret_types contains a cloud, GitHub, SSH, or database credential.")
3221
3246
  @severity("critical")
3222
3247
  @tags("category:data-protection,threat:secrets,detection:rule,owasp:llm06")
3223
3248
  @reject_message("Content blocked: high-risk credentials detected (cloud keys, GitHub tokens, SSH keys, or database URLs).")
@@ -3225,6 +3250,7 @@ forbid (
3225
3250
  principal,
3226
3251
  action in [
3227
3252
  AgentOps::Action::"process_prompt",
3253
+ AgentOps::Action::"process_response",
3228
3254
  AgentOps::Action::"call_tool",
3229
3255
  AgentOps::Action::"read_file",
3230
3256
  AgentOps::Action::"write_file"
@@ -3247,7 +3273,7 @@ when {
3247
3273
 
3248
3274
  @id("data-protection.advanced-block-api-tokens")
3249
3275
  @name("Block API keys and bearer tokens")
3250
- @description("Blocks process_prompt, call_tool, read_file, and write_file when secret_types contains api_key, bearer_token, jwt_token, or OAuth credentials.")
3276
+ @description("Blocks process_prompt, process_response, call_tool, read_file, and write_file when secret_types contains api_key, bearer_token, jwt_token, or OAuth credentials.")
3251
3277
  @severity("high")
3252
3278
  @tags("category:data-protection,threat:secrets,detection:rule,owasp:llm06")
3253
3279
  @reject_message("Content blocked: API keys, bearer tokens, or OAuth credentials detected.")
@@ -3255,6 +3281,7 @@ forbid (
3255
3281
  principal,
3256
3282
  action in [
3257
3283
  AgentOps::Action::"process_prompt",
3284
+ AgentOps::Action::"process_response",
3258
3285
  AgentOps::Action::"call_tool",
3259
3286
  AgentOps::Action::"read_file",
3260
3287
  AgentOps::Action::"write_file"
@@ -3296,7 +3323,8 @@ const AGENT_OPS_PRIVACY_ADVANCED_PII_CEDAR = `// ===============================
3296
3323
  @reject_message("Content blocked: national identifier (SSN, passport, or driver's license) patterns detected.")
3297
3324
  forbid (
3298
3325
  principal,
3299
- action in [AgentOps::Action::"process_prompt", AgentOps::Action::"call_tool", AgentOps::Action::"read_file", AgentOps::Action::"write_file"],
3326
+ action in [AgentOps::Action::"process_prompt",
3327
+ AgentOps::Action::"process_response", AgentOps::Action::"call_tool", AgentOps::Action::"read_file", AgentOps::Action::"write_file"],
3300
3328
  resource
3301
3329
  )
3302
3330
  when {
@@ -3318,7 +3346,8 @@ when {
3318
3346
  @reject_message("Content blocked: credit card number patterns detected.")
3319
3347
  forbid (
3320
3348
  principal,
3321
- action in [AgentOps::Action::"process_prompt", AgentOps::Action::"call_tool", AgentOps::Action::"read_file", AgentOps::Action::"write_file"],
3349
+ action in [AgentOps::Action::"process_prompt",
3350
+ AgentOps::Action::"process_response", AgentOps::Action::"call_tool", AgentOps::Action::"read_file", AgentOps::Action::"write_file"],
3322
3351
  resource
3323
3352
  )
3324
3353
  when {
@@ -3337,7 +3366,8 @@ when {
3337
3366
  @reject_message("Content blocked: bank account (IBAN) number patterns detected.")
3338
3367
  forbid (
3339
3368
  principal,
3340
- action in [AgentOps::Action::"process_prompt", AgentOps::Action::"call_tool", AgentOps::Action::"read_file", AgentOps::Action::"write_file"],
3369
+ action in [AgentOps::Action::"process_prompt",
3370
+ AgentOps::Action::"process_response", AgentOps::Action::"call_tool", AgentOps::Action::"read_file", AgentOps::Action::"write_file"],
3341
3371
  resource
3342
3372
  )
3343
3373
  when {
@@ -3359,7 +3389,8 @@ when {
3359
3389
  @reject_message("Content blocked: medical record identifier patterns detected.")
3360
3390
  forbid (
3361
3391
  principal,
3362
- action in [AgentOps::Action::"process_prompt", AgentOps::Action::"call_tool", AgentOps::Action::"read_file", AgentOps::Action::"write_file"],
3392
+ action in [AgentOps::Action::"process_prompt",
3393
+ AgentOps::Action::"process_response", AgentOps::Action::"call_tool", AgentOps::Action::"read_file", AgentOps::Action::"write_file"],
3363
3394
  resource
3364
3395
  )
3365
3396
  when {
@@ -3383,7 +3414,8 @@ when {
3383
3414
  @reject_message("Content blocked: tax identifier (ITIN or EIN) patterns detected.")
3384
3415
  forbid (
3385
3416
  principal,
3386
- action in [AgentOps::Action::"process_prompt", AgentOps::Action::"call_tool", AgentOps::Action::"read_file", AgentOps::Action::"write_file"],
3417
+ action in [AgentOps::Action::"process_prompt",
3418
+ AgentOps::Action::"process_response", AgentOps::Action::"call_tool", AgentOps::Action::"read_file", AgentOps::Action::"write_file"],
3387
3419
  resource
3388
3420
  )
3389
3421
  when {
@@ -3403,7 +3435,8 @@ when {
3403
3435
  @reject_message("Content blocked: credential or API key patterns detected.")
3404
3436
  forbid (
3405
3437
  principal,
3406
- action in [AgentOps::Action::"process_prompt", AgentOps::Action::"call_tool", AgentOps::Action::"read_file", AgentOps::Action::"write_file"],
3438
+ action in [AgentOps::Action::"process_prompt",
3439
+ AgentOps::Action::"process_response", AgentOps::Action::"call_tool", AgentOps::Action::"read_file", AgentOps::Action::"write_file"],
3407
3440
  resource
3408
3441
  )
3409
3442
  when {
@@ -3434,7 +3467,8 @@ when {
3434
3467
  @reject_message("Content blocked: cryptocurrency wallet address patterns detected.")
3435
3468
  forbid (
3436
3469
  principal,
3437
- action in [AgentOps::Action::"process_prompt", AgentOps::Action::"call_tool", AgentOps::Action::"read_file", AgentOps::Action::"write_file"],
3470
+ action in [AgentOps::Action::"process_prompt",
3471
+ AgentOps::Action::"process_response", AgentOps::Action::"call_tool", AgentOps::Action::"read_file", AgentOps::Action::"write_file"],
3438
3472
  resource
3439
3473
  )
3440
3474
  when {
@@ -3453,7 +3487,8 @@ when {
3453
3487
  @reject_message("Content blocked: personal name patterns detected.")
3454
3488
  forbid (
3455
3489
  principal,
3456
- action in [AgentOps::Action::"process_prompt", AgentOps::Action::"call_tool", AgentOps::Action::"read_file", AgentOps::Action::"write_file"],
3490
+ action in [AgentOps::Action::"process_prompt",
3491
+ AgentOps::Action::"process_response", AgentOps::Action::"call_tool", AgentOps::Action::"read_file", AgentOps::Action::"write_file"],
3457
3492
  resource
3458
3493
  )
3459
3494
  when {
@@ -3472,7 +3507,8 @@ when {
3472
3507
  @reject_message("Content blocked: email address patterns detected.")
3473
3508
  forbid (
3474
3509
  principal,
3475
- action in [AgentOps::Action::"process_prompt", AgentOps::Action::"call_tool", AgentOps::Action::"read_file", AgentOps::Action::"write_file"],
3510
+ action in [AgentOps::Action::"process_prompt",
3511
+ AgentOps::Action::"process_response", AgentOps::Action::"call_tool", AgentOps::Action::"read_file", AgentOps::Action::"write_file"],
3476
3512
  resource
3477
3513
  )
3478
3514
  when {
@@ -3491,7 +3527,8 @@ when {
3491
3527
  @reject_message("Content blocked: phone number patterns detected.")
3492
3528
  forbid (
3493
3529
  principal,
3494
- action in [AgentOps::Action::"process_prompt", AgentOps::Action::"call_tool", AgentOps::Action::"read_file", AgentOps::Action::"write_file"],
3530
+ action in [AgentOps::Action::"process_prompt",
3531
+ AgentOps::Action::"process_response", AgentOps::Action::"call_tool", AgentOps::Action::"read_file", AgentOps::Action::"write_file"],
3495
3532
  resource
3496
3533
  )
3497
3534
  when {
@@ -3510,7 +3547,8 @@ when {
3510
3547
  @reject_message("Content blocked: date or time patterns detected.")
3511
3548
  forbid (
3512
3549
  principal,
3513
- action in [AgentOps::Action::"process_prompt", AgentOps::Action::"call_tool", AgentOps::Action::"read_file", AgentOps::Action::"write_file"],
3550
+ action in [AgentOps::Action::"process_prompt",
3551
+ AgentOps::Action::"process_response", AgentOps::Action::"call_tool", AgentOps::Action::"read_file", AgentOps::Action::"write_file"],
3514
3552
  resource
3515
3553
  )
3516
3554
  when {
@@ -3532,7 +3570,8 @@ when {
3532
3570
  @reject_message("Content blocked: URL patterns detected.")
3533
3571
  forbid (
3534
3572
  principal,
3535
- action in [AgentOps::Action::"process_prompt", AgentOps::Action::"call_tool", AgentOps::Action::"read_file", AgentOps::Action::"write_file"],
3573
+ action in [AgentOps::Action::"process_prompt",
3574
+ AgentOps::Action::"process_response", AgentOps::Action::"call_tool", AgentOps::Action::"read_file", AgentOps::Action::"write_file"],
3536
3575
  resource
3537
3576
  )
3538
3577
  when {
@@ -3551,7 +3590,8 @@ when {
3551
3590
  @reject_message("Content blocked: street address or location patterns detected.")
3552
3591
  forbid (
3553
3592
  principal,
3554
- action in [AgentOps::Action::"process_prompt", AgentOps::Action::"call_tool", AgentOps::Action::"read_file", AgentOps::Action::"write_file"],
3593
+ action in [AgentOps::Action::"process_prompt",
3594
+ AgentOps::Action::"process_response", AgentOps::Action::"call_tool", AgentOps::Action::"read_file", AgentOps::Action::"write_file"],
3555
3595
  resource
3556
3596
  )
3557
3597
  when {
@@ -3572,7 +3612,8 @@ when {
3572
3612
  @reject_message("Content blocked: organization name patterns detected.")
3573
3613
  forbid (
3574
3614
  principal,
3575
- action in [AgentOps::Action::"process_prompt", AgentOps::Action::"call_tool", AgentOps::Action::"read_file", AgentOps::Action::"write_file"],
3615
+ action in [AgentOps::Action::"process_prompt",
3616
+ AgentOps::Action::"process_response", AgentOps::Action::"call_tool", AgentOps::Action::"read_file", AgentOps::Action::"write_file"],
3576
3617
  resource
3577
3618
  )
3578
3619
  when {
@@ -3591,7 +3632,8 @@ when {
3591
3632
  @reject_message("Content blocked: occupation patterns detected.")
3592
3633
  forbid (
3593
3634
  principal,
3594
- action in [AgentOps::Action::"process_prompt", AgentOps::Action::"call_tool", AgentOps::Action::"read_file", AgentOps::Action::"write_file"],
3635
+ action in [AgentOps::Action::"process_prompt",
3636
+ AgentOps::Action::"process_response", AgentOps::Action::"call_tool", AgentOps::Action::"read_file", AgentOps::Action::"write_file"],
3595
3637
  resource
3596
3638
  )
3597
3639
  when {
@@ -3610,7 +3652,8 @@ when {
3610
3652
  @reject_message("Content blocked: username patterns detected.")
3611
3653
  forbid (
3612
3654
  principal,
3613
- action in [AgentOps::Action::"process_prompt", AgentOps::Action::"call_tool", AgentOps::Action::"read_file", AgentOps::Action::"write_file"],
3655
+ action in [AgentOps::Action::"process_prompt",
3656
+ AgentOps::Action::"process_response", AgentOps::Action::"call_tool", AgentOps::Action::"read_file", AgentOps::Action::"write_file"],
3614
3657
  resource
3615
3658
  )
3616
3659
  when {
@@ -3629,7 +3672,8 @@ when {
3629
3672
  @reject_message("Content blocked: employee or customer identifier patterns detected.")
3630
3673
  forbid (
3631
3674
  principal,
3632
- action in [AgentOps::Action::"process_prompt", AgentOps::Action::"call_tool", AgentOps::Action::"read_file", AgentOps::Action::"write_file"],
3675
+ action in [AgentOps::Action::"process_prompt",
3676
+ AgentOps::Action::"process_response", AgentOps::Action::"call_tool", AgentOps::Action::"read_file", AgentOps::Action::"write_file"],
3633
3677
  resource
3634
3678
  )
3635
3679
  when {
@@ -3650,7 +3694,8 @@ when {
3650
3694
  @reject_message("Content blocked: device or network identifier patterns detected.")
3651
3695
  forbid (
3652
3696
  principal,
3653
- action in [AgentOps::Action::"process_prompt", AgentOps::Action::"call_tool", AgentOps::Action::"read_file", AgentOps::Action::"write_file"],
3697
+ action in [AgentOps::Action::"process_prompt",
3698
+ AgentOps::Action::"process_response", AgentOps::Action::"call_tool", AgentOps::Action::"read_file", AgentOps::Action::"write_file"],
3654
3699
  resource
3655
3700
  )
3656
3701
  when {
@@ -3677,7 +3722,8 @@ when {
3677
3722
  @reject_message("Content blocked: vehicle identifier (VIN or plate) patterns detected.")
3678
3723
  forbid (
3679
3724
  principal,
3680
- action in [AgentOps::Action::"process_prompt", AgentOps::Action::"call_tool", AgentOps::Action::"read_file", AgentOps::Action::"write_file"],
3725
+ action in [AgentOps::Action::"process_prompt",
3726
+ AgentOps::Action::"process_response", AgentOps::Action::"call_tool", AgentOps::Action::"read_file", AgentOps::Action::"write_file"],
3681
3727
  resource
3682
3728
  )
3683
3729
  when {
@@ -3697,7 +3743,8 @@ when {
3697
3743
  @reject_message("Content blocked: salary or financial amount patterns detected.")
3698
3744
  forbid (
3699
3745
  principal,
3700
- action in [AgentOps::Action::"process_prompt", AgentOps::Action::"call_tool", AgentOps::Action::"read_file", AgentOps::Action::"write_file"],
3746
+ action in [AgentOps::Action::"process_prompt",
3747
+ AgentOps::Action::"process_response", AgentOps::Action::"call_tool", AgentOps::Action::"read_file", AgentOps::Action::"write_file"],
3701
3748
  resource
3702
3749
  )
3703
3750
  when {
@@ -3718,7 +3765,8 @@ when {
3718
3765
  @reject_message("Content blocked: sensitive attribute (ethnicity, religion, etc.) patterns detected.")
3719
3766
  forbid (
3720
3767
  principal,
3721
- action in [AgentOps::Action::"process_prompt", AgentOps::Action::"call_tool", AgentOps::Action::"read_file", AgentOps::Action::"write_file"],
3768
+ action in [AgentOps::Action::"process_prompt",
3769
+ AgentOps::Action::"process_response", AgentOps::Action::"call_tool", AgentOps::Action::"read_file", AgentOps::Action::"write_file"],
3722
3770
  resource
3723
3771
  )
3724
3772
  when {
@@ -3756,13 +3804,13 @@ const AGENT_OPS_SECURITY_ADVANCED_BLOCK_CRITICAL_SEVERITY_CEDAR = `// ==========
3756
3804
 
3757
3805
  @id("security.advanced-block-critical-severity")
3758
3806
  @name("Block critical-severity threats")
3759
- @description("Blocks process_prompt when highest_severity equals \\"critical\\".")
3807
+ @description("Blocks process_prompt and process_response when highest_severity equals \\"critical\\".")
3760
3808
  @severity("critical")
3761
- @tags("category:security,detection:aggregate,surface:process-prompt,posture:catch-all,compliance:nist-si-3")
3809
+ @tags("category:security,detection:aggregate,surface:process-prompt,surface:process-response,posture:catch-all,compliance:nist-si-3")
3762
3810
  @reject_message("Prompt blocked: a critical-severity threat was reported by at least one detector.")
3763
3811
  forbid (
3764
3812
  principal,
3765
- action == AgentOps::Action::"process_prompt",
3813
+ action in [AgentOps::Action::"process_prompt", AgentOps::Action::"process_response"],
3766
3814
  resource
3767
3815
  )
3768
3816
  when {
@@ -3942,13 +3990,13 @@ when {
3942
3990
 
3943
3991
  @id("semantic.block-sql-injection-prompt")
3944
3992
  @name("Block SQL injection in prompts")
3945
- @description("Blocks process_prompt when detected_threats contains \\"sql_injection\\".")
3993
+ @description("Blocks process_prompt and process_response when detected_threats contains \\"sql_injection\\".")
3946
3994
  @severity("high")
3947
- @tags("category:semantic,threat:sql-injection,detection:pattern,surface:process-prompt")
3995
+ @tags("category:semantic,threat:sql-injection,detection:pattern,surface:process-prompt,surface:process-response")
3948
3996
  @reject_message("Prompt blocked: SQL injection pattern detected.")
3949
3997
  forbid (
3950
3998
  principal,
3951
- action == AgentOps::Action::"process_prompt",
3999
+ action in [AgentOps::Action::"process_prompt", AgentOps::Action::"process_response"],
3952
4000
  resource
3953
4001
  )
3954
4002
  when {
@@ -3991,13 +4039,14 @@ when {
3991
4039
 
3992
4040
  @id("semantic.block-injection-ml")
3993
4041
  @name("Block injection (ML)")
3994
- @description("Blocks process_prompt and call_tool when injection_score >= 75.")
4042
+ @description("Blocks process_prompt, process_response, and call_tool when injection_score >= 75.")
3995
4043
  @severity("critical")
3996
4044
  @tags("category:semantic,threat:injection,detection:ml,owasp:llm01,mitre:atlas-t0051")
3997
4045
  @reject_message("Request blocked: prompt injection detected by ML classifier with high confidence.")
3998
4046
  forbid (
3999
4047
  principal,
4000
- action in [AgentOps::Action::"process_prompt", AgentOps::Action::"call_tool"],
4048
+ action in [AgentOps::Action::"process_prompt",
4049
+ AgentOps::Action::"process_response", AgentOps::Action::"call_tool"],
4001
4050
  resource
4002
4051
  )
4003
4052
  when {
@@ -4006,13 +4055,14 @@ when {
4006
4055
 
4007
4056
  @id("semantic.block-jailbreak-ml")
4008
4057
  @name("Block jailbreak (ML)")
4009
- @description("Blocks process_prompt and call_tool when jailbreak_score >= 75.")
4058
+ @description("Blocks process_prompt, process_response, and call_tool when jailbreak_score >= 75.")
4010
4059
  @severity("critical")
4011
4060
  @tags("category:semantic,threat:jailbreak,detection:ml,owasp:llm02,mitre:atlas-t0054")
4012
4061
  @reject_message("Request blocked: jailbreak attempt detected by ML classifier with high confidence.")
4013
4062
  forbid (
4014
4063
  principal,
4015
- action in [AgentOps::Action::"process_prompt", AgentOps::Action::"call_tool"],
4064
+ action in [AgentOps::Action::"process_prompt",
4065
+ AgentOps::Action::"process_response", AgentOps::Action::"call_tool"],
4016
4066
  resource
4017
4067
  )
4018
4068
  when {
@@ -4043,13 +4093,14 @@ const AGENT_OPS_TRUST_SAFETY_DEFAULTS_CEDAR = `// ==============================
4043
4093
 
4044
4094
  @id("trust-safety.block-violence")
4045
4095
  @name("Block violent content")
4046
- @description("Blocks process_prompt and call_tool when violence_score >= 80.")
4096
+ @description("Blocks process_prompt, process_response, and call_tool when violence_score >= 80.")
4047
4097
  @severity("critical")
4048
4098
  @tags("category:trust-safety,threat:violence,detection:ml,compliance:nist-si-4,compliance:iso-42001")
4049
4099
  @reject_message("Content blocked: violent content detected.")
4050
4100
  forbid (
4051
4101
  principal,
4052
- action in [AgentOps::Action::"process_prompt", AgentOps::Action::"call_tool"],
4102
+ action in [AgentOps::Action::"process_prompt",
4103
+ AgentOps::Action::"process_response", AgentOps::Action::"call_tool"],
4053
4104
  resource
4054
4105
  )
4055
4106
  when {
@@ -4058,13 +4109,14 @@ when {
4058
4109
 
4059
4110
  @id("trust-safety.block-weapons")
4060
4111
  @name("Block weapons content")
4061
- @description("Blocks process_prompt and call_tool when weapons_score >= 80.")
4112
+ @description("Blocks process_prompt, process_response, and call_tool when weapons_score >= 80.")
4062
4113
  @severity("critical")
4063
4114
  @tags("category:trust-safety,threat:weapons,detection:ml,compliance:nist-si-4")
4064
4115
  @reject_message("Content blocked: weapons-related content detected (manufacturing, procurement, or specifications).")
4065
4116
  forbid (
4066
4117
  principal,
4067
- action in [AgentOps::Action::"process_prompt", AgentOps::Action::"call_tool"],
4118
+ action in [AgentOps::Action::"process_prompt",
4119
+ AgentOps::Action::"process_response", AgentOps::Action::"call_tool"],
4068
4120
  resource
4069
4121
  )
4070
4122
  when {
@@ -4073,13 +4125,14 @@ when {
4073
4125
 
4074
4126
  @id("trust-safety.block-hate-speech")
4075
4127
  @name("Block hate speech")
4076
- @description("Blocks process_prompt and call_tool when hate_speech_score >= 75.")
4128
+ @description("Blocks process_prompt, process_response, and call_tool when hate_speech_score >= 75.")
4077
4129
  @severity("critical")
4078
4130
  @tags("category:trust-safety,threat:hate-speech,detection:ml,compliance:nist-si-4,compliance:eu-ai-act")
4079
4131
  @reject_message("Content blocked: hate speech or discriminatory content detected.")
4080
4132
  forbid (
4081
4133
  principal,
4082
- action in [AgentOps::Action::"process_prompt", AgentOps::Action::"call_tool"],
4134
+ action in [AgentOps::Action::"process_prompt",
4135
+ AgentOps::Action::"process_response", AgentOps::Action::"call_tool"],
4083
4136
  resource
4084
4137
  )
4085
4138
  when {
@@ -4088,13 +4141,14 @@ when {
4088
4141
 
4089
4142
  @id("trust-safety.block-crime")
4090
4143
  @name("Block criminal content")
4091
- @description("Blocks process_prompt and call_tool when crime_score >= 80.")
4144
+ @description("Blocks process_prompt, process_response, and call_tool when crime_score >= 80.")
4092
4145
  @severity("high")
4093
4146
  @tags("category:trust-safety,threat:crime,detection:ml,compliance:nist-si-4")
4094
4147
  @reject_message("Content blocked: criminal activity content detected (illegal activity, fraud, or related).")
4095
4148
  forbid (
4096
4149
  principal,
4097
- action in [AgentOps::Action::"process_prompt", AgentOps::Action::"call_tool"],
4150
+ action in [AgentOps::Action::"process_prompt",
4151
+ AgentOps::Action::"process_response", AgentOps::Action::"call_tool"],
4098
4152
  resource
4099
4153
  )
4100
4154
  when {
@@ -4103,13 +4157,14 @@ when {
4103
4157
 
4104
4158
  @id("trust-safety.block-sexual")
4105
4159
  @name("Block sexual content")
4106
- @description("Blocks process_prompt and call_tool when sexual_score >= 80.")
4160
+ @description("Blocks process_prompt, process_response, and call_tool when sexual_score >= 80.")
4107
4161
  @severity("high")
4108
4162
  @tags("category:trust-safety,threat:sexual,detection:ml,compliance:eu-ai-act,compliance:iso-42001")
4109
4163
  @reject_message("Content blocked: sexually explicit content detected.")
4110
4164
  forbid (
4111
4165
  principal,
4112
- action in [AgentOps::Action::"process_prompt", AgentOps::Action::"call_tool"],
4166
+ action in [AgentOps::Action::"process_prompt",
4167
+ AgentOps::Action::"process_response", AgentOps::Action::"call_tool"],
4113
4168
  resource
4114
4169
  )
4115
4170
  when {
@@ -4118,13 +4173,14 @@ when {
4118
4173
 
4119
4174
  @id("trust-safety.block-profanity")
4120
4175
  @name("Block excessive profanity")
4121
- @description("Blocks process_prompt and call_tool when profanity_score >= 90.")
4176
+ @description("Blocks process_prompt, process_response, and call_tool when profanity_score >= 90.")
4122
4177
  @severity("medium")
4123
4178
  @tags("category:trust-safety,threat:profanity,detection:ml")
4124
4179
  @reject_message("Content blocked: excessive profanity detected — please rephrase in professional language.")
4125
4180
  forbid (
4126
4181
  principal,
4127
- action in [AgentOps::Action::"process_prompt", AgentOps::Action::"call_tool"],
4182
+ action in [AgentOps::Action::"process_prompt",
4183
+ AgentOps::Action::"process_response", AgentOps::Action::"call_tool"],
4128
4184
  resource
4129
4185
  )
4130
4186
  when {
@@ -4445,12 +4501,13 @@ permit (
4445
4501
 
4446
4502
  @id("organization.allow-support-project-read")
4447
4503
  @name("Permit support project read-only access")
4448
- @description("Permits process_prompt and read_file actions on resources scoped to Project::\\"support-project\\".")
4504
+ @description("Permits process_prompt, process_response, and read_file actions on resources scoped to Project::\\"support-project\\".")
4449
4505
  @severity("medium")
4450
4506
  @tags("category:organization,scope:per-tool,posture:deny-default")
4451
4507
  permit (
4452
4508
  principal,
4453
- action in [AgentOps::Action::"process_prompt", AgentOps::Action::"read_file"],
4509
+ action in [AgentOps::Action::"process_prompt",
4510
+ AgentOps::Action::"process_response", AgentOps::Action::"read_file"],
4454
4511
  resource in AgentOps::Project::"support-project"
4455
4512
  );
4456
4513
  `;
@@ -4474,11 +4531,11 @@ const AGENT_OPS_AGENT_IDENTITY_CLAUDE_BLOCK_INJECTION_CEDAR = `// ==============
4474
4531
  @name("Block injection on Claude agent")
4475
4532
  @description("Blocks process_prompt for the Claude agent when detected_threats contains \\"prompt_injection\\".")
4476
4533
  @severity("critical")
4477
- @tags("category:agent-identity,threat:injection,scope:per-agent,detection:rule,surface:process-prompt,owasp:llm01")
4534
+ @tags("category:agent-identity,threat:injection,scope:per-agent,detection:rule,surface:process-prompt,surface:process-response,owasp:llm01")
4478
4535
  @reject_message("Prompt blocked: prompt injection detected for the Claude agent.")
4479
4536
  forbid (
4480
4537
  principal == AgentOps::Agent::"claude",
4481
- action == AgentOps::Action::"process_prompt",
4538
+ action in [AgentOps::Action::"process_prompt", AgentOps::Action::"process_response"],
4482
4539
  resource
4483
4540
  )
4484
4541
  when {