@node9/proxy 2.48.2 → 2.50.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/scan-ink.mjs CHANGED
@@ -2378,6 +2378,47 @@ var BLOCK_ALL = {
2378
2378
  "commands.unknown": "review",
2379
2379
  "commands.temp-binary": "block"
2380
2380
  };
2381
+ var ASI = {
2382
+ ASI01: "Agent Goal Hijack",
2383
+ ASI02: "Tool Misuse and Exploitation",
2384
+ ASI03: "Identity and Privilege Abuse",
2385
+ ASI04: "Agentic Supply Chain Vulnerabilities",
2386
+ ASI05: "Unexpected Code Execution",
2387
+ ASI06: "Memory and Context Poisoning",
2388
+ ASI07: "Insecure Inter-Agent Communication",
2389
+ ASI08: "Cascading Failures",
2390
+ ASI09: "Human-Agent Trust Exploitation",
2391
+ ASI10: "Rogue Agents"
2392
+ };
2393
+ var ASI_IDS = Object.keys(ASI);
2394
+ var PACK_SHIELD_OWASP = {
2395
+ aws: "ASI02",
2396
+ "bash-safe": "ASI02",
2397
+ docker: "ASI02",
2398
+ filesystem: "ASI02",
2399
+ github: "ASI02",
2400
+ k8s: "ASI02",
2401
+ mongodb: "ASI02",
2402
+ postgres: "ASI02",
2403
+ redis: "ASI02",
2404
+ stripe: "ASI09",
2405
+ paypal: "ASI09",
2406
+ square: "ASI09",
2407
+ plaid: "ASI09",
2408
+ okta: "ASI09",
2409
+ auth0: "ASI09"
2410
+ };
2411
+ var PACK_RULE_OWASP = {
2412
+ "packs.bash-safe.pipe-to-shell": "ASI05",
2413
+ "packs.bash-safe.obfuscated-exec": "ASI05",
2414
+ "packs.bash-safe.eval-remote": "ASI05",
2415
+ "packs.bash-safe.eval-dynamic": "ASI05",
2416
+ "packs.aws.iam-changes": "ASI03",
2417
+ "packs.postgres.grant-revoke": "ASI03"
2418
+ };
2419
+ function packRowOwasp(id, shield) {
2420
+ return PACK_RULE_OWASP[id] ?? PACK_SHIELD_OWASP[shield];
2421
+ }
2381
2422
  var VERDICTS = ["off", "log", "review", "block"];
2382
2423
  var ALL = VERDICTS;
2383
2424
  var BUILTIN_DANGEROUS_WORDS = ["mkfs", "shred"];
@@ -2385,6 +2426,7 @@ var PRODUCT_CHECKS = [
2385
2426
  {
2386
2427
  id: "files.shell-startup",
2387
2428
  group: "files",
2429
+ owasp: "ASI02",
2388
2430
  title: "Shell startup files",
2389
2431
  catches: "Writes, replacements and removals of personal shell startup files",
2390
2432
  values: ALL,
@@ -2394,6 +2436,7 @@ var PRODUCT_CHECKS = [
2394
2436
  {
2395
2437
  id: "files.system-auth",
2396
2438
  group: "files",
2439
+ owasp: "ASI03",
2397
2440
  title: "System authentication files",
2398
2441
  catches: "Changes to system authentication files and PAM configuration",
2399
2442
  values: ["block"],
@@ -2404,6 +2447,7 @@ var PRODUCT_CHECKS = [
2404
2447
  {
2405
2448
  id: "files.password-hashes",
2406
2449
  group: "files",
2450
+ owasp: "ASI03",
2407
2451
  title: "System password hashes",
2408
2452
  catches: "Reads and copies of /etc/shadow and /etc/gshadow",
2409
2453
  values: ALL,
@@ -2413,6 +2457,7 @@ var PRODUCT_CHECKS = [
2413
2457
  {
2414
2458
  id: "files.system-dirs",
2415
2459
  group: "files",
2460
+ owasp: "ASI02",
2416
2461
  title: "System directories",
2417
2462
  catches: "Writes, new files and removals under /usr, /etc, /boot, /bin, /sbin, /lib and /var/log, and uploads of system files",
2418
2463
  values: ALL,
@@ -2422,6 +2467,7 @@ var PRODUCT_CHECKS = [
2422
2467
  {
2423
2468
  id: "files.agent-instructions",
2424
2469
  group: "files",
2470
+ owasp: "ASI06",
2425
2471
  title: "Agent instruction and memory files",
2426
2472
  catches: "writes to the files every later agent session loads as instructions (CLAUDE.md, AGENTS.md, memory, agents, commands) and changes to the agent's hooks; Standard asks only when the text carries an instruction to hide, skip approvals or touch secrets",
2427
2473
  values: ALL,
@@ -2432,6 +2478,7 @@ var PRODUCT_CHECKS = [
2432
2478
  {
2433
2479
  id: "commands.inline-exec",
2434
2480
  group: "commands",
2481
+ owasp: "ASI05",
2435
2482
  title: "Inline code execution",
2436
2483
  catches: "inline code (python -c, node -e, a heredoc into an interpreter) that deletes, sends, opens a socket, runs commands, reads protected files or decodes and runs; unreadable inline code",
2437
2484
  values: ALL,
@@ -2441,6 +2488,7 @@ var PRODUCT_CHECKS = [
2441
2488
  {
2442
2489
  id: "commands.eval-dynamic",
2443
2490
  group: "commands",
2491
+ owasp: "ASI05",
2444
2492
  title: "Eval of dynamic content",
2445
2493
  catches: "generated executable names, shell code from stdin, or dynamic eval/-c payloads",
2446
2494
  values: ALL,
@@ -2450,6 +2498,7 @@ var PRODUCT_CHECKS = [
2450
2498
  {
2451
2499
  id: "commands.eval-remote",
2452
2500
  group: "commands",
2501
+ owasp: "ASI05",
2453
2502
  title: "Eval of a remote download",
2454
2503
  catches: "eval or sh over the output of curl or wget",
2455
2504
  values: ["block"],
@@ -2460,6 +2509,7 @@ var PRODUCT_CHECKS = [
2460
2509
  {
2461
2510
  id: "commands.curl-pipe-shell",
2462
2511
  group: "commands",
2512
+ owasp: "ASI05",
2463
2513
  title: "Remote script piped into a shell",
2464
2514
  catches: "curl or wget piped into sh, bash, zsh or PowerShell",
2465
2515
  values: ALL,
@@ -2469,6 +2519,7 @@ var PRODUCT_CHECKS = [
2469
2519
  {
2470
2520
  id: "commands.rm",
2471
2521
  group: "commands",
2522
+ owasp: "ASI02",
2472
2523
  title: "Delete files",
2473
2524
  catches: "rm outside the known build-artifact paths",
2474
2525
  values: ALL,
@@ -2478,6 +2529,7 @@ var PRODUCT_CHECKS = [
2478
2529
  {
2479
2530
  id: "commands.rm-home",
2480
2531
  group: "commands",
2532
+ owasp: "ASI02",
2481
2533
  title: "Recursive delete of the home directory",
2482
2534
  catches: "rm -rf on ~, $HOME, /home or /",
2483
2535
  values: ["block"],
@@ -2488,6 +2540,7 @@ var PRODUCT_CHECKS = [
2488
2540
  {
2489
2541
  id: "commands.chmod",
2490
2542
  group: "commands",
2543
+ owasp: "ASI02",
2491
2544
  title: "World-writable permissions",
2492
2545
  catches: "chmod 777, 0777 or a+rwx",
2493
2546
  values: ALL,
@@ -2497,6 +2550,7 @@ var PRODUCT_CHECKS = [
2497
2550
  {
2498
2551
  id: "commands.sudo",
2499
2552
  group: "commands",
2553
+ owasp: "ASI03",
2500
2554
  title: "Elevated privileges",
2501
2555
  catches: "a command run through sudo",
2502
2556
  values: ALL,
@@ -2506,6 +2560,7 @@ var PRODUCT_CHECKS = [
2506
2560
  {
2507
2561
  id: "commands.git-destructive",
2508
2562
  group: "commands",
2563
+ owasp: "ASI02",
2509
2564
  title: "Destructive git operation",
2510
2565
  catches: "force push, reset --hard, clean -f, branch -D or tag delete, also through -C, env, wrappers, variables and aliases",
2511
2566
  values: ALL,
@@ -2515,6 +2570,7 @@ var PRODUCT_CHECKS = [
2515
2570
  {
2516
2571
  id: "commands.git-hooks-bypass",
2517
2572
  group: "commands",
2573
+ owasp: "ASI10",
2518
2574
  title: "Git hooks bypassed",
2519
2575
  catches: "the agent switches off the git hooks that check its own work: --no-verify, core.hooksPath, HUSKY=0 and its peers, or a hook file removed, emptied or made non-executable",
2520
2576
  values: ALL,
@@ -2524,6 +2580,7 @@ var PRODUCT_CHECKS = [
2524
2580
  {
2525
2581
  id: "commands.git-stage-all",
2526
2582
  group: "commands",
2583
+ owasp: "ASI02",
2527
2584
  title: "Stage everything at once",
2528
2585
  catches: "git add -A, git add ., git commit -a and other ways to stage every change instead of naming the files; off unless you switch it on",
2529
2586
  values: ALL,
@@ -2533,6 +2590,7 @@ var PRODUCT_CHECKS = [
2533
2590
  {
2534
2591
  id: "commands.reverse-shell",
2535
2592
  group: "commands",
2593
+ owasp: "ASI05",
2536
2594
  title: "Reverse shell",
2537
2595
  catches: "a shell wired to a network socket: bash -i >& /dev/tcp/\u2026, nc -e, socat exec:, a socket fd read by a shell, a shell piped to and from nc or telnet",
2538
2596
  values: ALL,
@@ -2542,6 +2600,7 @@ var PRODUCT_CHECKS = [
2542
2600
  {
2543
2601
  id: "commands.node9-disarm",
2544
2602
  group: "commands",
2603
+ owasp: "ASI10",
2545
2604
  title: "node9 disarmed from the shell",
2546
2605
  catches: "a node9 command that clears a session flag, trusts a destination, pauses the gate or weakens a shield, run by the agent",
2547
2606
  values: ALL,
@@ -2551,6 +2610,7 @@ var PRODUCT_CHECKS = [
2551
2610
  {
2552
2611
  id: "commands.sql-ddl",
2553
2612
  group: "commands",
2613
+ owasp: "ASI02",
2554
2614
  title: "Drop or truncate",
2555
2615
  catches: "DROP or TRUNCATE through a database CLI or a database tool",
2556
2616
  values: ALL,
@@ -2565,6 +2625,7 @@ var PRODUCT_CHECKS = [
2565
2625
  {
2566
2626
  id: "commands.sql-no-where",
2567
2627
  group: "commands",
2628
+ owasp: "ASI02",
2568
2629
  title: "Unscoped SQL mutation",
2569
2630
  catches: "DELETE or UPDATE without a WHERE clause",
2570
2631
  values: ALL,
@@ -2574,6 +2635,7 @@ var PRODUCT_CHECKS = [
2574
2635
  {
2575
2636
  id: "commands.temp-binary",
2576
2637
  group: "commands",
2638
+ owasp: "ASI05",
2577
2639
  title: "Binary from a temp directory",
2578
2640
  catches: "an absolute path under /tmp, /var/tmp, /dev/shm or a world-writable file",
2579
2641
  values: ALL,
@@ -2583,6 +2645,7 @@ var PRODUCT_CHECKS = [
2583
2645
  {
2584
2646
  id: "commands.disk-destroy",
2585
2647
  group: "commands",
2648
+ owasp: "ASI02",
2586
2649
  title: "Disk or filesystem destruction",
2587
2650
  catches: "mkfs, shred, dd and the manual-terminal disaster list",
2588
2651
  values: ALL,
@@ -2592,6 +2655,7 @@ var PRODUCT_CHECKS = [
2592
2655
  {
2593
2656
  id: "commands.dangerous-word",
2594
2657
  group: "commands",
2658
+ owasp: "ASI02",
2595
2659
  title: "Dangerous word",
2596
2660
  catches: "a word from a pack or from the config dangerousWords list",
2597
2661
  values: ALL,
@@ -2600,6 +2664,7 @@ var PRODUCT_CHECKS = [
2600
2664
  {
2601
2665
  id: "commands.unanalysable",
2602
2666
  group: "commands",
2667
+ owasp: "ASI02",
2603
2668
  title: "Command too nested to analyse",
2604
2669
  catches: "wrappers nested past the depth the shell parser follows",
2605
2670
  values: ALL,
@@ -2609,6 +2674,7 @@ var PRODUCT_CHECKS = [
2609
2674
  {
2610
2675
  id: "commands.unknown",
2611
2676
  group: "commands",
2677
+ owasp: "ASI02",
2612
2678
  title: "Any command no check recognised",
2613
2679
  catches: "the strict-mode catch-all",
2614
2680
  values: ["off", "review"],
@@ -2619,6 +2685,7 @@ var PRODUCT_CHECKS = [
2619
2685
  {
2620
2686
  id: "data.secrets",
2621
2687
  group: "data",
2688
+ owasp: "ASI03",
2622
2689
  title: "Secret in arguments",
2623
2690
  catches: "an API key, token or private key matching one of the DLP patterns",
2624
2691
  values: ALL,
@@ -2628,6 +2695,7 @@ var PRODUCT_CHECKS = [
2628
2695
  {
2629
2696
  id: "data.secrets-weak",
2630
2697
  group: "data",
2698
+ owasp: "ASI03",
2631
2699
  title: "Weak credential in arguments",
2632
2700
  catches: "a JWT or a bearer token",
2633
2701
  values: ALL,
@@ -2637,6 +2705,7 @@ var PRODUCT_CHECKS = [
2637
2705
  {
2638
2706
  id: "data.pii",
2639
2707
  group: "data",
2708
+ owasp: "ASI02",
2640
2709
  title: "Personal data in arguments",
2641
2710
  catches: "a social security number or a credit card number",
2642
2711
  values: ALL,
@@ -2646,6 +2715,7 @@ var PRODUCT_CHECKS = [
2646
2715
  {
2647
2716
  id: "data.credential-files",
2648
2717
  group: "data",
2718
+ owasp: "ASI03",
2649
2719
  title: "Credential file read",
2650
2720
  catches: "~/.ssh, ~/.aws and .env files, through any reader or any file tool",
2651
2721
  values: ALL,
@@ -2654,6 +2724,7 @@ var PRODUCT_CHECKS = [
2654
2724
  {
2655
2725
  id: "data.credential-files-other",
2656
2726
  group: "data",
2727
+ owasp: "ASI03",
2657
2728
  title: "Other credential file",
2658
2729
  catches: ".netrc, .npmrc, kube and docker config, and a copy of any credential file",
2659
2730
  values: ALL,
@@ -2662,6 +2733,7 @@ var PRODUCT_CHECKS = [
2662
2733
  {
2663
2734
  id: "data.credential-files-unknown",
2664
2735
  group: "data",
2736
+ owasp: "ASI03",
2665
2737
  title: "Files read by names known only at run time",
2666
2738
  catches: "a reader fed names from a listing that can include credential files (find . | xargs cat)",
2667
2739
  values: ALL,
@@ -2670,6 +2742,7 @@ var PRODUCT_CHECKS = [
2670
2742
  {
2671
2743
  id: "data.pipe-chain",
2672
2744
  group: "data",
2745
+ owasp: "ASI03",
2673
2746
  title: "Sensitive file piped to the network",
2674
2747
  catches: "a credential file read and piped into curl, nc or ssh",
2675
2748
  values: ALL,
@@ -2679,6 +2752,7 @@ var PRODUCT_CHECKS = [
2679
2752
  {
2680
2753
  id: "data.pipe-chain-obfuscated",
2681
2754
  group: "data",
2755
+ owasp: "ASI03",
2682
2756
  title: "Obfuscated exfiltration",
2683
2757
  catches: "a sensitive file encoded or compressed on its way to the network",
2684
2758
  values: ALL,
@@ -2691,6 +2765,7 @@ var PRODUCT_CHECKS = [
2691
2765
  {
2692
2766
  id: "data.env-exfil",
2693
2767
  group: "data",
2768
+ owasp: "ASI03",
2694
2769
  title: "Environment sent out",
2695
2770
  catches: "the whole environment (env, printenv, set, export -p, /proc/*/environ) handed to curl, nc or another sender, through $(\u2026), a pipe or a variable",
2696
2771
  values: ALL,
@@ -2700,6 +2775,7 @@ var PRODUCT_CHECKS = [
2700
2775
  {
2701
2776
  id: "data.output-secrets",
2702
2777
  group: "data",
2778
+ owasp: "ASI03",
2703
2779
  title: "Secret in tool output",
2704
2780
  catches: "a credential a tool returned; the session is tainted, nothing is stopped",
2705
2781
  values: ["off", "log"],
@@ -2708,6 +2784,7 @@ var PRODUCT_CHECKS = [
2708
2784
  {
2709
2785
  id: "data.prompt-secrets",
2710
2786
  group: "data",
2787
+ owasp: "ASI03",
2711
2788
  title: "Secret in the prompt",
2712
2789
  catches: "a credential pasted into the conversation",
2713
2790
  values: ALL,
@@ -2716,6 +2793,7 @@ var PRODUCT_CHECKS = [
2716
2793
  {
2717
2794
  id: "data.canary",
2718
2795
  group: "data",
2796
+ owasp: "ASI03",
2719
2797
  title: "Decoy credential used",
2720
2798
  catches: "a planted decoy value appears in a tool call",
2721
2799
  values: ALL,
@@ -2726,6 +2804,7 @@ var PRODUCT_CHECKS = [
2726
2804
  {
2727
2805
  id: "network.unknown-host",
2728
2806
  group: "network",
2807
+ owasp: "ASI02",
2729
2808
  title: "Unknown host",
2730
2809
  catches: "a destination on neither the allowlist nor the builtin list",
2731
2810
  values: ["off", "review", "block"],
@@ -2735,6 +2814,7 @@ var PRODUCT_CHECKS = [
2735
2814
  {
2736
2815
  id: "network.internal-addresses",
2737
2816
  group: "network",
2817
+ owasp: "ASI02",
2738
2818
  title: "Internal address",
2739
2819
  catches: "loopback, the RFC 1918 ranges and carrier-grade NAT",
2740
2820
  values: ["off", "block"],
@@ -2743,6 +2823,7 @@ var PRODUCT_CHECKS = [
2743
2823
  {
2744
2824
  id: "network.metadata",
2745
2825
  group: "network",
2826
+ owasp: "ASI02",
2746
2827
  title: "Cloud metadata address",
2747
2828
  catches: "169.254.169.254 and its peers, link-local and multicast",
2748
2829
  values: ["block"],
@@ -2753,6 +2834,7 @@ var PRODUCT_CHECKS = [
2753
2834
  {
2754
2835
  id: "network.taint-egress",
2755
2836
  group: "network",
2837
+ owasp: "ASI01",
2756
2838
  title: "Tainted data sent out",
2757
2839
  catches: "a file or an output flagged earlier in the session reaches a host not on the allowlist",
2758
2840
  values: ALL,
@@ -2766,6 +2848,7 @@ var PRODUCT_CHECKS = [
2766
2848
  {
2767
2849
  id: "files.jail",
2768
2850
  group: "files",
2851
+ owasp: "ASI03",
2769
2852
  title: "Jailed path",
2770
2853
  catches: "a path the workspace or the developer added to the jail",
2771
2854
  values: ALL,
@@ -2775,6 +2858,7 @@ var PRODUCT_CHECKS = [
2775
2858
  {
2776
2859
  id: "behavior.loops",
2777
2860
  group: "behavior",
2861
+ owasp: "ASI08",
2778
2862
  title: "Runaway loop",
2779
2863
  catches: "the same tool call repeated past the threshold inside the window",
2780
2864
  values: ["off", "block"],
@@ -2784,6 +2868,7 @@ var PRODUCT_CHECKS = [
2784
2868
  {
2785
2869
  id: "behavior.prompt-injection",
2786
2870
  group: "behavior",
2871
+ owasp: "ASI01",
2787
2872
  title: "Prompt injection in tool output",
2788
2873
  catches: "instructions aimed at the model inside content a tool returned",
2789
2874
  values: ["off", "log"],
@@ -2792,6 +2877,7 @@ var PRODUCT_CHECKS = [
2792
2877
  {
2793
2878
  id: "behavior.session-taint",
2794
2879
  group: "behavior",
2880
+ owasp: "ASI01",
2795
2881
  title: "Action after tainted output",
2796
2882
  catches: "a network call or a write after a flagged file or a flagged tool output",
2797
2883
  values: ALL,
@@ -2801,6 +2887,7 @@ var PRODUCT_CHECKS = [
2801
2887
  {
2802
2888
  id: "behavior.untrusted-content",
2803
2889
  group: "behavior",
2890
+ owasp: "ASI01",
2804
2891
  title: "Send after reading outside content",
2805
2892
  catches: "a send to an unknown destination, a destination found in what was read, or a destructive call after the session read an email, a web page or an issue",
2806
2893
  values: ["off", "log", "review"],
@@ -2811,6 +2898,7 @@ var PRODUCT_CHECKS = [
2811
2898
  {
2812
2899
  id: "loading.skill-tamper",
2813
2900
  group: "loading",
2901
+ owasp: "ASI04",
2814
2902
  title: "Skill file changed",
2815
2903
  catches: "a skill or plugin file whose hash differs from the one approved",
2816
2904
  values: ["off", "log", "block"],
@@ -2820,6 +2908,7 @@ var PRODUCT_CHECKS = [
2820
2908
  {
2821
2909
  id: "loading.mcp-tamper",
2822
2910
  group: "loading",
2911
+ owasp: "ASI04",
2823
2912
  title: "MCP server changed",
2824
2913
  catches: "tool definitions that differ from the pinned ones",
2825
2914
  values: ALL,
@@ -2829,6 +2918,7 @@ var PRODUCT_CHECKS = [
2829
2918
  {
2830
2919
  id: "loading.malicious-package",
2831
2920
  group: "loading",
2921
+ owasp: "ASI04",
2832
2922
  title: "Malicious package",
2833
2923
  catches: "an install of a package the index flags",
2834
2924
  values: ALL,
@@ -2838,6 +2928,7 @@ var PRODUCT_CHECKS = [
2838
2928
  {
2839
2929
  id: "loading.unknown-registry",
2840
2930
  group: "loading",
2931
+ owasp: "ASI04",
2841
2932
  title: "Package from an unknown registry",
2842
2933
  catches: "an install that names a registry on the command line (--registry, --index-url, -i, npm_config_registry=\u2026) that is not the public one, not in your npm, yarn, bun, pip or uv config and not on the allowlist",
2843
2934
  values: ALL,
@@ -2852,6 +2943,7 @@ var PRODUCT_CHECKS = [
2852
2943
  {
2853
2944
  id: "actions.money",
2854
2945
  group: "actions",
2946
+ owasp: "ASI09",
2855
2947
  title: "Money moves",
2856
2948
  catches: "a refund, payout, transfer, charge or withdrawal through an app with no protection of its own",
2857
2949
  values: ALL,
@@ -2864,6 +2956,7 @@ var PRODUCT_CHECKS = [
2864
2956
  {
2865
2957
  id: "actions.access",
2866
2958
  group: "actions",
2959
+ owasp: "ASI09",
2867
2960
  title: "Accounts and access change",
2868
2961
  catches: "a password, key, role, permission or user changed through an app with no protection of its own",
2869
2962
  values: ALL,
@@ -2873,6 +2966,7 @@ var PRODUCT_CHECKS = [
2873
2966
  {
2874
2967
  id: "actions.publish",
2875
2968
  group: "actions",
2969
+ owasp: "ASI09",
2876
2970
  title: "Something is published",
2877
2971
  catches: "a release, package, deploy or public post through an app with no protection of its own",
2878
2972
  values: ALL,
@@ -2885,6 +2979,7 @@ var PRODUCT_CHECKS = [
2885
2979
  {
2886
2980
  id: "actions.settings",
2887
2981
  group: "actions",
2982
+ owasp: "ASI09",
2888
2983
  title: "Repository, account and mailbox settings change",
2889
2984
  catches: "a repository made public, a deploy key, webhook or CI secret added, branch protection changed, mail forwarded outside or a public share link, through an app",
2890
2985
  values: ALL,
@@ -2894,6 +2989,7 @@ var PRODUCT_CHECKS = [
2894
2989
  {
2895
2990
  id: "actions.protected-branch",
2896
2991
  group: "actions",
2992
+ owasp: "ASI09",
2897
2993
  title: "The main branch changes through an app",
2898
2994
  catches: "a merge, a commit straight to main or master, or a CI workflow file written through an app",
2899
2995
  values: ALL,
@@ -2921,6 +3017,10 @@ function packRows() {
2921
3017
  rows.push({
2922
3018
  id,
2923
3019
  group: "commands",
3020
+ // A shield missing from the table falls back to tool misuse instead of
3021
+ // throwing here: this module loads on every hook call, and a mapping
3022
+ // omission must fail a test (owasp.spec.ts), never the gate.
3023
+ owasp: packRowOwasp(id, shield.name) ?? "ASI02",
2924
3024
  title: rule.name.replace(SHIELD_RULE_NAME, "$3").replace(/-/g, " "),
2925
3025
  catches: rule.description ?? rule.reason ?? "",
2926
3026
  values: ALL,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@node9/proxy",
3
- "version": "2.48.2",
3
+ "version": "2.50.0",
4
4
  "description": "Access control for AI agents. Set what Claude Code, Codex, Gemini, Cursor and any MCP server are allowed to do, review risky actions before they run, and keep every action on the record.",
5
5
  "main": "./dist/index.js",
6
6
  "module": "./dist/index.mjs",
@@ -110,7 +110,7 @@
110
110
  "mvdan-sh"
111
111
  ],
112
112
  "devDependencies": {
113
- "@anthropic-ai/sdk": "^0.135.0",
113
+ "@anthropic-ai/sdk": "^1.3.0",
114
114
  "@octokit/rest": "^22.0.1",
115
115
  "@semantic-release/commit-analyzer": "^13.0.1",
116
116
  "@semantic-release/git": "^10.0.1",