@inhuman.tools/policy 0.0.0-stage → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (106) hide show
  1. package/LICENSE.md +7 -0
  2. package/authorize.scm +4 -0
  3. package/dist/acknowledge.d.ts +70 -0
  4. package/dist/acknowledge.d.ts.map +1 -0
  5. package/dist/acknowledge.js +162 -0
  6. package/dist/acknowledge.js.map +1 -0
  7. package/dist/authorize.d.ts +8 -0
  8. package/dist/authorize.d.ts.map +1 -0
  9. package/dist/authorize.js +39 -0
  10. package/dist/authorize.js.map +1 -0
  11. package/dist/bind.d.ts +6 -0
  12. package/dist/bind.d.ts.map +1 -0
  13. package/dist/bind.js +45 -0
  14. package/dist/bind.js.map +1 -0
  15. package/dist/check.d.ts +30 -0
  16. package/dist/check.d.ts.map +1 -0
  17. package/dist/check.js +389 -0
  18. package/dist/check.js.map +1 -0
  19. package/dist/classes.d.ts +23 -0
  20. package/dist/classes.d.ts.map +1 -0
  21. package/dist/classes.js +139 -0
  22. package/dist/classes.js.map +1 -0
  23. package/dist/compile.d.ts +40 -0
  24. package/dist/compile.d.ts.map +1 -0
  25. package/dist/compile.js +311 -0
  26. package/dist/compile.js.map +1 -0
  27. package/dist/deadline.d.ts +5 -0
  28. package/dist/deadline.d.ts.map +1 -0
  29. package/dist/deadline.js +17 -0
  30. package/dist/deadline.js.map +1 -0
  31. package/dist/floor.d.ts +9 -0
  32. package/dist/floor.d.ts.map +1 -0
  33. package/dist/floor.js +9 -0
  34. package/dist/floor.js.map +1 -0
  35. package/dist/glob-expand.d.ts +10 -0
  36. package/dist/glob-expand.d.ts.map +1 -0
  37. package/dist/glob-expand.js +132 -0
  38. package/dist/glob-expand.js.map +1 -0
  39. package/dist/guards.d.ts +26 -0
  40. package/dist/guards.d.ts.map +1 -0
  41. package/dist/guards.js +419 -0
  42. package/dist/guards.js.map +1 -0
  43. package/dist/identity.d.ts +11 -0
  44. package/dist/identity.d.ts.map +1 -0
  45. package/dist/identity.js +23 -0
  46. package/dist/identity.js.map +1 -0
  47. package/dist/index.d.ts +8 -0
  48. package/dist/index.d.ts.map +1 -0
  49. package/dist/index.js +8 -0
  50. package/dist/index.js.map +1 -0
  51. package/dist/lift.d.ts +4 -0
  52. package/dist/lift.d.ts.map +1 -0
  53. package/dist/lift.js +14 -0
  54. package/dist/lift.js.map +1 -0
  55. package/dist/path-policy.d.ts +53 -0
  56. package/dist/path-policy.d.ts.map +1 -0
  57. package/dist/path-policy.js +248 -0
  58. package/dist/path-policy.js.map +1 -0
  59. package/dist/processor.d.ts +71 -0
  60. package/dist/processor.d.ts.map +1 -0
  61. package/dist/processor.js +132 -0
  62. package/dist/processor.js.map +1 -0
  63. package/dist/reasonable-defaults.d.ts +1448 -0
  64. package/dist/reasonable-defaults.d.ts.map +1 -0
  65. package/dist/reasonable-defaults.js +6 -0
  66. package/dist/reasonable-defaults.js.map +1 -0
  67. package/dist/reasonable-defaults.json +1662 -0
  68. package/dist/run-authorization.d.ts +8 -0
  69. package/dist/run-authorization.d.ts.map +1 -0
  70. package/dist/run-authorization.js +16 -0
  71. package/dist/run-authorization.js.map +1 -0
  72. package/dist/tool-path.d.ts +8 -0
  73. package/dist/tool-path.d.ts.map +1 -0
  74. package/dist/tool-path.js +38 -0
  75. package/dist/tool-path.js.map +1 -0
  76. package/dist/types.d.ts +87 -0
  77. package/dist/types.d.ts.map +1 -0
  78. package/dist/types.js +14 -0
  79. package/dist/types.js.map +1 -0
  80. package/dist/verdict.d.ts +15 -0
  81. package/dist/verdict.d.ts.map +1 -0
  82. package/dist/verdict.js +55 -0
  83. package/dist/verdict.js.map +1 -0
  84. package/package.json +62 -3
  85. package/src/acknowledge.ts +206 -0
  86. package/src/authorize.ts +38 -0
  87. package/src/bind.ts +58 -0
  88. package/src/check.ts +552 -0
  89. package/src/classes.ts +156 -0
  90. package/src/compile.ts +370 -0
  91. package/src/deadline.ts +15 -0
  92. package/src/floor.ts +16 -0
  93. package/src/glob-expand.ts +137 -0
  94. package/src/guards.ts +428 -0
  95. package/src/identity.ts +26 -0
  96. package/src/index.ts +24 -0
  97. package/src/lift.ts +15 -0
  98. package/src/path-policy.ts +280 -0
  99. package/src/processor.ts +187 -0
  100. package/src/reasonable-defaults.json +1662 -0
  101. package/src/reasonable-defaults.ts +8 -0
  102. package/src/run-authorization.ts +23 -0
  103. package/src/tool-path.ts +43 -0
  104. package/src/types.ts +102 -0
  105. package/src/verdict.ts +63 -0
  106. package/README.md +0 -3
@@ -0,0 +1,1662 @@
1
+ {
2
+ "read_file": [
3
+ "/tmp",
4
+ "/private/tmp",
5
+ "/var/tmp",
6
+ "/dev/null",
7
+ ".",
8
+ "/private/var/tmp"
9
+ ],
10
+ "read_block": [
11
+ ".env",
12
+ ".env.local",
13
+ ".env.development",
14
+ ".env.development.local",
15
+ ".env.production",
16
+ ".env.production.local",
17
+ ".env.staging",
18
+ ".env.test",
19
+ ".env.test.local",
20
+ ".env.prod",
21
+ ".env.dev",
22
+ ".env.ci",
23
+ ".envrc",
24
+ ".dev.vars",
25
+ ".netrc",
26
+ ".npmrc",
27
+ ".pypirc",
28
+ ".yarnrc",
29
+ ".yarnrc.yml",
30
+ ".ssh",
31
+ ".gnupg",
32
+ ".gpg",
33
+ ".aws",
34
+ ".azure",
35
+ ".gcloud",
36
+ ".kube",
37
+ "id_rsa",
38
+ "id_dsa",
39
+ "id_ecdsa",
40
+ "id_ed25519",
41
+ "credentials.json",
42
+ "credentials.yml",
43
+ "credentials.yaml",
44
+ ".git-credentials",
45
+ "master.key",
46
+ ".secrets"
47
+ ],
48
+ "write_file": [
49
+ "/tmp",
50
+ "/private/tmp",
51
+ "/var/tmp",
52
+ "/private/var/tmp",
53
+ "/dev/null",
54
+ ".",
55
+ "!package.json",
56
+ "!package-lock.json",
57
+ "!yarn.lock",
58
+ "!pnpm-lock.yaml",
59
+ "!bun.lock",
60
+ "!bun.lockb",
61
+ "!Cargo.lock",
62
+ "!Makefile",
63
+ "!makefile",
64
+ {
65
+ "path": "!.github/workflows",
66
+ "class": "control-plane"
67
+ }
68
+ ],
69
+ "write_block": [
70
+ {
71
+ "path": ".env",
72
+ "class": "credential"
73
+ },
74
+ {
75
+ "path": ".env.local",
76
+ "class": "credential"
77
+ },
78
+ {
79
+ "path": ".env.development",
80
+ "class": "credential"
81
+ },
82
+ {
83
+ "path": ".env.development.local",
84
+ "class": "credential"
85
+ },
86
+ {
87
+ "path": ".env.production",
88
+ "class": "credential"
89
+ },
90
+ {
91
+ "path": ".env.production.local",
92
+ "class": "credential"
93
+ },
94
+ {
95
+ "path": ".env.staging",
96
+ "class": "credential"
97
+ },
98
+ {
99
+ "path": ".env.test",
100
+ "class": "credential"
101
+ },
102
+ {
103
+ "path": ".env.test.local",
104
+ "class": "credential"
105
+ },
106
+ {
107
+ "path": ".env.prod",
108
+ "class": "credential"
109
+ },
110
+ {
111
+ "path": ".env.dev",
112
+ "class": "credential"
113
+ },
114
+ {
115
+ "path": ".env.ci",
116
+ "class": "credential"
117
+ },
118
+ {
119
+ "path": ".envrc",
120
+ "class": "credential"
121
+ },
122
+ {
123
+ "path": ".dev.vars",
124
+ "class": "credential"
125
+ },
126
+ {
127
+ "path": ".netrc",
128
+ "class": "credential"
129
+ },
130
+ {
131
+ "path": ".npmrc",
132
+ "class": "credential"
133
+ },
134
+ {
135
+ "path": ".pypirc",
136
+ "class": "credential"
137
+ },
138
+ {
139
+ "path": ".yarnrc",
140
+ "class": "credential"
141
+ },
142
+ {
143
+ "path": ".yarnrc.yml",
144
+ "class": "credential"
145
+ },
146
+ {
147
+ "path": ".ssh",
148
+ "class": "credential"
149
+ },
150
+ {
151
+ "path": ".gnupg",
152
+ "class": "credential"
153
+ },
154
+ {
155
+ "path": ".gpg",
156
+ "class": "credential"
157
+ },
158
+ {
159
+ "path": ".aws",
160
+ "class": "credential"
161
+ },
162
+ {
163
+ "path": ".azure",
164
+ "class": "credential"
165
+ },
166
+ {
167
+ "path": ".gcloud",
168
+ "class": "credential"
169
+ },
170
+ {
171
+ "path": ".kube",
172
+ "class": "credential"
173
+ },
174
+ {
175
+ "path": "id_rsa",
176
+ "class": "credential"
177
+ },
178
+ {
179
+ "path": "id_dsa",
180
+ "class": "credential"
181
+ },
182
+ {
183
+ "path": "id_ecdsa",
184
+ "class": "credential"
185
+ },
186
+ {
187
+ "path": "id_ed25519",
188
+ "class": "credential"
189
+ },
190
+ {
191
+ "path": "credentials.json",
192
+ "class": "credential"
193
+ },
194
+ {
195
+ "path": "credentials.yml",
196
+ "class": "credential"
197
+ },
198
+ {
199
+ "path": "credentials.yaml",
200
+ "class": "credential"
201
+ },
202
+ {
203
+ "path": ".git-credentials",
204
+ "class": "credential"
205
+ },
206
+ {
207
+ "path": "master.key",
208
+ "class": "credential"
209
+ },
210
+ {
211
+ "path": ".secrets",
212
+ "class": "credential"
213
+ },
214
+ ".git/hooks",
215
+ ".git/config",
216
+ ".gitmodules",
217
+ ".gitconfig",
218
+ ".husky",
219
+ ".pre-commit-config.yaml",
220
+ "lefthook.yml",
221
+ "lefthook.yaml",
222
+ ".mcp.json",
223
+ ".cursorignore",
224
+ ".vscode",
225
+ ".claude",
226
+ ".cursor",
227
+ ".bashrc",
228
+ ".bash_profile",
229
+ ".bash_aliases",
230
+ ".zshrc",
231
+ ".zprofile",
232
+ ".zshenv",
233
+ ".zlogin",
234
+ ".zlogout",
235
+ ".profile",
236
+ ".pi/policy-pi.json",
237
+ ".inhuman/authorization.json"
238
+ ],
239
+ ".unix_read": {
240
+ "policy": "approve",
241
+ "arg_rest_type": "read_path"
242
+ },
243
+ ".unix_write": {
244
+ "policy": "approve",
245
+ "arg_rest_type": "write_path"
246
+ },
247
+ ".pkg_install": {
248
+ "policy": "ask",
249
+ "subcommands": {
250
+ "install": "deny"
251
+ }
252
+ },
253
+ ".docker_run": {
254
+ "policy": "ask",
255
+ "matcher": [
256
+ {
257
+ "flags": {
258
+ "--privileged": true
259
+ },
260
+ "policy": "deny",
261
+ "class": "privilege"
262
+ },
263
+ {
264
+ "flags": {
265
+ "--pid": {
266
+ "value": "host"
267
+ }
268
+ },
269
+ "policy": "deny",
270
+ "class": "privilege"
271
+ },
272
+ {
273
+ "flags": {
274
+ "--network": {
275
+ "alias": [
276
+ "--net"
277
+ ],
278
+ "value": "host"
279
+ }
280
+ },
281
+ "policy": "deny",
282
+ "class": "privilege"
283
+ },
284
+ {
285
+ "flags": {
286
+ "--volume": {
287
+ "alias": [
288
+ "-v"
289
+ ],
290
+ "value": [
291
+ "*docker.sock*",
292
+ "/:*",
293
+ "/etc:*"
294
+ ]
295
+ }
296
+ },
297
+ "policy": "deny",
298
+ "class": "privilege"
299
+ },
300
+ {
301
+ "flags": {
302
+ "--mount": {
303
+ "value": "*docker.sock*"
304
+ }
305
+ },
306
+ "policy": "deny",
307
+ "class": "privilege"
308
+ }
309
+ ]
310
+ },
311
+ "bash": {
312
+ "policy": "ask",
313
+ "class": "exec-unknown",
314
+ "subcommands": {
315
+ "sudo": {
316
+ "policy": "deny",
317
+ "class": "privilege"
318
+ },
319
+ "doas": {
320
+ "policy": "deny",
321
+ "class": "privilege"
322
+ },
323
+ "dd": {
324
+ "policy": "deny",
325
+ "class": "destroy-catastrophic",
326
+ "guard": [
327
+ "dd-device"
328
+ ]
329
+ },
330
+ "eval": "deny",
331
+ "mkfs": {
332
+ "policy": "block",
333
+ "class": "destroy-catastrophic"
334
+ },
335
+ "mkfs.ext4": {
336
+ "policy": "block",
337
+ "class": "destroy-catastrophic"
338
+ },
339
+ "mkfs.xfs": {
340
+ "policy": "block",
341
+ "class": "destroy-catastrophic"
342
+ },
343
+ "mkfs.vfat": {
344
+ "policy": "block",
345
+ "class": "destroy-catastrophic"
346
+ },
347
+ "mkfs.ntfs": {
348
+ "policy": "block",
349
+ "class": "destroy-catastrophic"
350
+ },
351
+ "fdisk": {
352
+ "policy": "deny",
353
+ "class": "destroy-catastrophic",
354
+ "guard": [
355
+ "disk-write"
356
+ ]
357
+ },
358
+ "parted": {
359
+ "policy": "deny",
360
+ "class": "destroy-catastrophic",
361
+ "guard": [
362
+ "disk-write"
363
+ ]
364
+ },
365
+ "shred": {
366
+ "policy": "block",
367
+ "class": "destroy-catastrophic"
368
+ },
369
+ "wipefs": {
370
+ "policy": "block",
371
+ "class": "destroy-catastrophic"
372
+ },
373
+ "shutdown": {
374
+ "policy": "deny",
375
+ "class": "privilege"
376
+ },
377
+ "reboot": {
378
+ "policy": "deny",
379
+ "class": "privilege"
380
+ },
381
+ "halt": {
382
+ "policy": "deny",
383
+ "class": "privilege"
384
+ },
385
+ "poweroff": {
386
+ "policy": "deny",
387
+ "class": "privilege"
388
+ },
389
+ "rm": {
390
+ "policy": "approve",
391
+ "class": "destroy-catastrophic",
392
+ "arg_rest_type": "write_path",
393
+ "matcher": [
394
+ {
395
+ "flags": {
396
+ "--recursive": {
397
+ "alias": [
398
+ "-r",
399
+ "-R"
400
+ ]
401
+ },
402
+ "--force": {
403
+ "alias": [
404
+ "-f"
405
+ ]
406
+ }
407
+ },
408
+ "matcher": [
409
+ {
410
+ "glob": "/",
411
+ "policy": "deny"
412
+ },
413
+ {
414
+ "tok": "/*",
415
+ "policy": "deny"
416
+ },
417
+ {
418
+ "glob": "~",
419
+ "policy": "deny"
420
+ }
421
+ ]
422
+ }
423
+ ],
424
+ "guard": [
425
+ "recursive-root"
426
+ ]
427
+ },
428
+ "chmod": {
429
+ "policy": "ask",
430
+ "class": "workspace-write",
431
+ "subcommands": {
432
+ "777": {
433
+ "policy": "deny",
434
+ "class": "privilege"
435
+ },
436
+ "0777": {
437
+ "policy": "deny",
438
+ "class": "privilege"
439
+ },
440
+ "a+rwx": {
441
+ "policy": "deny",
442
+ "class": "privilege"
443
+ },
444
+ "a=rwx": {
445
+ "policy": "deny",
446
+ "class": "privilege"
447
+ }
448
+ },
449
+ "matcher": [
450
+ {
451
+ "flags": {
452
+ "--recursive": {
453
+ "alias": [
454
+ "-R"
455
+ ]
456
+ }
457
+ },
458
+ "policy": "ask"
459
+ }
460
+ ],
461
+ "guard": [
462
+ "recursive-root"
463
+ ]
464
+ },
465
+ "chown": {
466
+ "policy": "ask",
467
+ "class": "privilege",
468
+ "matcher": [
469
+ {
470
+ "flags": {
471
+ "--recursive": {
472
+ "alias": [
473
+ "-R"
474
+ ]
475
+ }
476
+ },
477
+ "policy": "deny"
478
+ }
479
+ ],
480
+ "guard": [
481
+ "recursive-root"
482
+ ]
483
+ },
484
+ "git": {
485
+ "policy": "ask",
486
+ "class": "unmodelled",
487
+ "matcher": [
488
+ {
489
+ "flags": {
490
+ "-c": {
491
+ "value_type": "string"
492
+ }
493
+ }
494
+ },
495
+ {
496
+ "flags": {
497
+ "--config-env": true
498
+ },
499
+ "policy": "ask",
500
+ "class": "exec-unknown"
501
+ },
502
+ {
503
+ "flags": {
504
+ "-C": {
505
+ "value_type": "string"
506
+ }
507
+ },
508
+ "policy": "ask"
509
+ },
510
+ {
511
+ "flags": {
512
+ "--git-dir": {
513
+ "value_type": "string"
514
+ }
515
+ },
516
+ "policy": "ask"
517
+ },
518
+ {
519
+ "flags": {
520
+ "--work-tree": {
521
+ "value_type": "string"
522
+ }
523
+ },
524
+ "policy": "ask"
525
+ }
526
+ ],
527
+ "subcommands": {
528
+ "status": "approve",
529
+ "diff": {
530
+ "policy": "approve",
531
+ "guard": [
532
+ "git-reads"
533
+ ],
534
+ "flag_paths": {
535
+ "--output": "write_path"
536
+ },
537
+ "matcher": [
538
+ {
539
+ "flags": {
540
+ "--output": {
541
+ "abbrev": true
542
+ }
543
+ },
544
+ "policy": "deny",
545
+ "class": "envelope-write"
546
+ },
547
+ {
548
+ "flags": {
549
+ "--no-index": {
550
+ "abbrev": true
551
+ }
552
+ }
553
+ }
554
+ ]
555
+ },
556
+ "log": {
557
+ "policy": "approve",
558
+ "guard": [
559
+ "git-reads"
560
+ ],
561
+ "flag_paths": {
562
+ "--output": "write_path"
563
+ }
564
+ },
565
+ "show": {
566
+ "policy": "approve",
567
+ "guard": [
568
+ "git-reads"
569
+ ],
570
+ "flag_paths": {
571
+ "--output": "write_path"
572
+ }
573
+ },
574
+ "rev-parse": "approve",
575
+ "branch": {
576
+ "policy": "approve",
577
+ "matcher": [
578
+ {
579
+ "flags": {
580
+ "-D": true
581
+ },
582
+ "policy": "deny",
583
+ "class": "vcs-history"
584
+ },
585
+ {
586
+ "flags": {
587
+ "--delete": {
588
+ "alias": [
589
+ "-d"
590
+ ],
591
+ "abbrev": true
592
+ },
593
+ "--force": {
594
+ "alias": [
595
+ "-f"
596
+ ],
597
+ "abbrev": true
598
+ }
599
+ },
600
+ "policy": "deny",
601
+ "class": "vcs-history"
602
+ },
603
+ {
604
+ "flags": {
605
+ "-M": true
606
+ },
607
+ "policy": "ask",
608
+ "class": "vcs-history"
609
+ },
610
+ {
611
+ "flags": {
612
+ "-C": true
613
+ },
614
+ "policy": "ask",
615
+ "class": "vcs-history"
616
+ },
617
+ {
618
+ "flags": {
619
+ "--force": {
620
+ "alias": [
621
+ "-f"
622
+ ],
623
+ "abbrev": true
624
+ }
625
+ },
626
+ "policy": "ask",
627
+ "class": "vcs-history"
628
+ },
629
+ {
630
+ "flags": {
631
+ "--move": {
632
+ "alias": [
633
+ "-m"
634
+ ],
635
+ "abbrev": true
636
+ },
637
+ "--force": {
638
+ "alias": [
639
+ "-f"
640
+ ],
641
+ "abbrev": true
642
+ }
643
+ },
644
+ "policy": "ask",
645
+ "class": "vcs-history"
646
+ }
647
+ ]
648
+ },
649
+ "add": {
650
+ "policy": "approve",
651
+ "matcher": [
652
+ {
653
+ "flags": {
654
+ "--force": {
655
+ "alias": [
656
+ "-f"
657
+ ],
658
+ "abbrev": true
659
+ }
660
+ },
661
+ "policy": "ask",
662
+ "class": "protected-file"
663
+ }
664
+ ]
665
+ },
666
+ "commit": {
667
+ "policy": "approve",
668
+ "matcher": [
669
+ {
670
+ "flags": {
671
+ "--no-verify": {
672
+ "alias": [
673
+ "-n"
674
+ ],
675
+ "abbrev": true
676
+ }
677
+ },
678
+ "policy": "deny",
679
+ "class": "control-plane"
680
+ }
681
+ ],
682
+ "flag_paths": {
683
+ "--file": "read_path",
684
+ "-F": "read_path",
685
+ "--template": "read_path",
686
+ "-t": "read_path"
687
+ }
688
+ },
689
+ "stash": {
690
+ "policy": "approve",
691
+ "subcommands": {
692
+ "drop": {
693
+ "policy": "deny",
694
+ "class": "destroy-local"
695
+ },
696
+ "clear": {
697
+ "policy": "deny",
698
+ "class": "destroy-local"
699
+ }
700
+ }
701
+ },
702
+ "fetch": {
703
+ "policy": "approve",
704
+ "matcher": [
705
+ {
706
+ "flags": {
707
+ "--upload-pack": {
708
+ "abbrev": true
709
+ }
710
+ },
711
+ "policy": "ask",
712
+ "class": "exec-unknown"
713
+ },
714
+ {
715
+ "flags": {
716
+ "--receive-pack": {
717
+ "abbrev": true
718
+ }
719
+ },
720
+ "policy": "ask",
721
+ "class": "exec-unknown"
722
+ },
723
+ {
724
+ "flags": {
725
+ "--exec": {
726
+ "abbrev": true
727
+ }
728
+ },
729
+ "policy": "ask",
730
+ "class": "exec-unknown"
731
+ },
732
+ {
733
+ "flags": {
734
+ "-u": true
735
+ },
736
+ "policy": "ask",
737
+ "class": "exec-unknown"
738
+ },
739
+ {
740
+ "glob": [
741
+ "*::*"
742
+ ],
743
+ "policy": "ask",
744
+ "class": "exec-unknown"
745
+ }
746
+ ]
747
+ },
748
+ "pull": {
749
+ "policy": "ask",
750
+ "class": "network-egress",
751
+ "matcher": [
752
+ {
753
+ "flags": {
754
+ "--upload-pack": {
755
+ "abbrev": true
756
+ }
757
+ },
758
+ "policy": "ask",
759
+ "class": "exec-unknown"
760
+ },
761
+ {
762
+ "flags": {
763
+ "--receive-pack": {
764
+ "abbrev": true
765
+ }
766
+ },
767
+ "policy": "ask",
768
+ "class": "exec-unknown"
769
+ },
770
+ {
771
+ "flags": {
772
+ "--exec": {
773
+ "abbrev": true
774
+ }
775
+ },
776
+ "policy": "ask",
777
+ "class": "exec-unknown"
778
+ },
779
+ {
780
+ "flags": {
781
+ "-u": true
782
+ },
783
+ "policy": "ask",
784
+ "class": "exec-unknown"
785
+ },
786
+ {
787
+ "glob": [
788
+ "*::*"
789
+ ],
790
+ "policy": "ask",
791
+ "class": "exec-unknown"
792
+ }
793
+ ]
794
+ },
795
+ "checkout": {
796
+ "policy": "ask",
797
+ "class": "destroy-local",
798
+ "--": {
799
+ "policy": "approve",
800
+ "arg_rest_type": "write_path"
801
+ }
802
+ },
803
+ "push": {
804
+ "policy": "ask",
805
+ "class": "remote-write",
806
+ "matcher": [
807
+ {
808
+ "flags": {
809
+ "--force": {
810
+ "alias": [
811
+ "-f"
812
+ ],
813
+ "abbrev": true
814
+ }
815
+ },
816
+ "policy": "deny",
817
+ "class": "vcs-history"
818
+ },
819
+ {
820
+ "flags": {
821
+ "--force-with-lease": {
822
+ "abbrev": true
823
+ }
824
+ },
825
+ "policy": "ask",
826
+ "class": "vcs-history"
827
+ },
828
+ {
829
+ "flags": {
830
+ "--no-verify": {
831
+ "abbrev": true
832
+ }
833
+ },
834
+ "policy": "deny",
835
+ "class": "control-plane"
836
+ }
837
+ ]
838
+ },
839
+ "reset": {
840
+ "policy": "ask",
841
+ "class": "vcs-history",
842
+ "matcher": [
843
+ {
844
+ "flags": {
845
+ "--hard": {
846
+ "abbrev": true
847
+ }
848
+ },
849
+ "policy": "deny",
850
+ "class": "destroy-local"
851
+ }
852
+ ]
853
+ },
854
+ "clean": {
855
+ "policy": "ask",
856
+ "class": "destroy-local",
857
+ "matcher": [
858
+ {
859
+ "flags": {
860
+ "-f": true,
861
+ "-d": {
862
+ "alias": [
863
+ "-x"
864
+ ]
865
+ }
866
+ },
867
+ "policy": "deny"
868
+ }
869
+ ]
870
+ },
871
+ "format-patch": {
872
+ "policy": "ask",
873
+ "class": "workspace-write",
874
+ "flag_paths": {
875
+ "--output": "write_path",
876
+ "-o": "write_path"
877
+ }
878
+ },
879
+ "clone": {
880
+ "policy": "ask",
881
+ "class": "network-egress",
882
+ "matcher": [
883
+ {
884
+ "flags": {
885
+ "--upload-pack": {
886
+ "abbrev": true
887
+ }
888
+ },
889
+ "policy": "ask",
890
+ "class": "exec-unknown"
891
+ },
892
+ {
893
+ "flags": {
894
+ "--receive-pack": {
895
+ "abbrev": true
896
+ }
897
+ },
898
+ "policy": "ask",
899
+ "class": "exec-unknown"
900
+ },
901
+ {
902
+ "flags": {
903
+ "--exec": {
904
+ "abbrev": true
905
+ }
906
+ },
907
+ "policy": "ask",
908
+ "class": "exec-unknown"
909
+ },
910
+ {
911
+ "flags": {
912
+ "-u": true
913
+ },
914
+ "policy": "ask",
915
+ "class": "exec-unknown"
916
+ },
917
+ {
918
+ "glob": [
919
+ "*::*"
920
+ ],
921
+ "policy": "ask",
922
+ "class": "exec-unknown"
923
+ }
924
+ ]
925
+ },
926
+ "ls-remote": {
927
+ "policy": "ask",
928
+ "class": "network-egress",
929
+ "matcher": [
930
+ {
931
+ "flags": {
932
+ "--upload-pack": {
933
+ "abbrev": true
934
+ }
935
+ },
936
+ "policy": "ask",
937
+ "class": "exec-unknown"
938
+ },
939
+ {
940
+ "flags": {
941
+ "--receive-pack": {
942
+ "abbrev": true
943
+ }
944
+ },
945
+ "policy": "ask",
946
+ "class": "exec-unknown"
947
+ },
948
+ {
949
+ "flags": {
950
+ "--exec": {
951
+ "abbrev": true
952
+ }
953
+ },
954
+ "policy": "ask",
955
+ "class": "exec-unknown"
956
+ },
957
+ {
958
+ "flags": {
959
+ "-u": true
960
+ },
961
+ "policy": "ask",
962
+ "class": "exec-unknown"
963
+ },
964
+ {
965
+ "glob": [
966
+ "*::*"
967
+ ],
968
+ "policy": "ask",
969
+ "class": "exec-unknown"
970
+ }
971
+ ]
972
+ }
973
+ },
974
+ "guard": [
975
+ "git-config"
976
+ ]
977
+ },
978
+ "gh": {
979
+ "policy": "ask",
980
+ "class": "unmodelled",
981
+ "subcommands": {
982
+ "issue": {
983
+ "policy": "ask",
984
+ "class": "remote-write",
985
+ "subcommands": {
986
+ "list": "approve",
987
+ "view": "approve",
988
+ "status": "approve",
989
+ "delete": "deny"
990
+ }
991
+ },
992
+ "pr": {
993
+ "policy": "ask",
994
+ "class": "remote-write",
995
+ "subcommands": {
996
+ "list": "approve",
997
+ "view": "approve",
998
+ "diff": "approve",
999
+ "status": "approve",
1000
+ "checks": "approve",
1001
+ "merge": "deny",
1002
+ "create": "ask"
1003
+ }
1004
+ },
1005
+ "run": {
1006
+ "policy": "ask",
1007
+ "class": "remote-write",
1008
+ "subcommands": {
1009
+ "list": "approve",
1010
+ "view": "approve",
1011
+ "delete": "deny"
1012
+ }
1013
+ },
1014
+ "search": "approve",
1015
+ "label": {
1016
+ "policy": "ask",
1017
+ "class": "remote-write",
1018
+ "subcommands": {
1019
+ "list": "approve"
1020
+ }
1021
+ },
1022
+ "release": {
1023
+ "policy": "ask",
1024
+ "class": "publish",
1025
+ "subcommands": {
1026
+ "list": "approve",
1027
+ "view": "approve",
1028
+ "delete": "deny"
1029
+ }
1030
+ },
1031
+ "secret": {
1032
+ "policy": "deny",
1033
+ "class": "credential"
1034
+ },
1035
+ "auth": {
1036
+ "policy": "deny",
1037
+ "class": "credential"
1038
+ },
1039
+ "gist": {
1040
+ "policy": "deny",
1041
+ "class": "publish"
1042
+ },
1043
+ "repo": {
1044
+ "policy": "ask",
1045
+ "class": "remote-write",
1046
+ "subcommands": {
1047
+ "delete": "deny",
1048
+ "archive": "deny"
1049
+ }
1050
+ }
1051
+ }
1052
+ },
1053
+ "npm": {
1054
+ "policy": "ask",
1055
+ "class": "unmodelled",
1056
+ "subcommands": {
1057
+ "run": {
1058
+ "policy": "ask",
1059
+ "family_args": 1,
1060
+ "class": "exec-unknown"
1061
+ },
1062
+ "install": {
1063
+ "policy": "ask",
1064
+ "class": "package-install",
1065
+ "matcher": [
1066
+ {
1067
+ "flags": {
1068
+ "--global": {
1069
+ "alias": [
1070
+ "-g"
1071
+ ]
1072
+ }
1073
+ },
1074
+ "policy": "deny"
1075
+ }
1076
+ ]
1077
+ },
1078
+ "publish": {
1079
+ "policy": "deny",
1080
+ "class": "publish"
1081
+ },
1082
+ "test": {
1083
+ "policy": "ask",
1084
+ "class": "exec-unknown"
1085
+ },
1086
+ "exec": {
1087
+ "policy": "ask",
1088
+ "class": "exec-unknown"
1089
+ },
1090
+ "start": {
1091
+ "policy": "ask",
1092
+ "class": "exec-unknown"
1093
+ }
1094
+ }
1095
+ },
1096
+ "cargo": {
1097
+ "policy": "ask",
1098
+ "class": "unmodelled",
1099
+ "subcommands": {
1100
+ "test": {
1101
+ "policy": "ask",
1102
+ "class": "exec-unknown"
1103
+ },
1104
+ "run": {
1105
+ "policy": "ask",
1106
+ "class": "exec-unknown"
1107
+ },
1108
+ "bench": {
1109
+ "policy": "ask",
1110
+ "class": "exec-unknown"
1111
+ },
1112
+ "build": {
1113
+ "policy": "ask",
1114
+ "class": "exec-unknown"
1115
+ },
1116
+ "check": {
1117
+ "policy": "ask",
1118
+ "class": "exec-unknown"
1119
+ },
1120
+ "clippy": {
1121
+ "policy": "ask",
1122
+ "class": "exec-unknown"
1123
+ },
1124
+ "publish": {
1125
+ "policy": "deny",
1126
+ "class": "publish"
1127
+ }
1128
+ }
1129
+ },
1130
+ "kubectl": {
1131
+ "policy": "ask",
1132
+ "class": "remote-write",
1133
+ "subcommands": {
1134
+ "get": {
1135
+ "policy": "approve",
1136
+ "flag_paths": {
1137
+ "--filename": "read_path",
1138
+ "-f": "read_path"
1139
+ },
1140
+ "matcher": [
1141
+ {
1142
+ "glob": "*[sS][eE][cC][rR][eE][tT]*",
1143
+ "policy": "deny",
1144
+ "class": "credential"
1145
+ },
1146
+ {
1147
+ "flags": {
1148
+ "--raw": {
1149
+ "value_type": "string"
1150
+ }
1151
+ },
1152
+ "policy": "ask",
1153
+ "class": "unmodelled"
1154
+ },
1155
+ {
1156
+ "flags": {
1157
+ "--raw": {
1158
+ "value": "*[sS][eE][cC][rR][eE][tT]*"
1159
+ }
1160
+ },
1161
+ "policy": "deny",
1162
+ "class": "credential"
1163
+ }
1164
+ ]
1165
+ },
1166
+ "describe": {
1167
+ "policy": "approve",
1168
+ "flag_paths": {
1169
+ "--filename": "read_path",
1170
+ "-f": "read_path"
1171
+ },
1172
+ "matcher": [
1173
+ {
1174
+ "glob": "*[sS][eE][cC][rR][eE][tT]*",
1175
+ "policy": "deny",
1176
+ "class": "credential"
1177
+ },
1178
+ {
1179
+ "flags": {
1180
+ "--raw": {
1181
+ "value_type": "string"
1182
+ }
1183
+ },
1184
+ "policy": "ask",
1185
+ "class": "unmodelled"
1186
+ },
1187
+ {
1188
+ "flags": {
1189
+ "--raw": {
1190
+ "value": "*[sS][eE][cC][rR][eE][tT]*"
1191
+ }
1192
+ },
1193
+ "policy": "deny",
1194
+ "class": "credential"
1195
+ }
1196
+ ]
1197
+ },
1198
+ "logs": "approve",
1199
+ "exec": "ask"
1200
+ }
1201
+ },
1202
+ "docker": {
1203
+ "policy": "ask",
1204
+ "class": "unmodelled",
1205
+ "matcher": [
1206
+ {
1207
+ "flags": {
1208
+ "--host": {
1209
+ "alias": [
1210
+ "-H"
1211
+ ]
1212
+ }
1213
+ },
1214
+ "policy": "ask",
1215
+ "class": "remote-write"
1216
+ },
1217
+ {
1218
+ "flags": {
1219
+ "--version": {
1220
+ "alias": [
1221
+ "-v"
1222
+ ]
1223
+ }
1224
+ },
1225
+ "policy": "approve"
1226
+ }
1227
+ ],
1228
+ "subcommands": {
1229
+ "ps": "approve",
1230
+ "logs": "approve",
1231
+ "inspect": "ask",
1232
+ "images": "approve",
1233
+ "run": {
1234
+ "policy": "ask",
1235
+ "class": "exec-unknown",
1236
+ "matcher": [
1237
+ {
1238
+ "flags": {
1239
+ "--privileged": true
1240
+ },
1241
+ "policy": "deny",
1242
+ "class": "privilege"
1243
+ },
1244
+ {
1245
+ "flags": {
1246
+ "--pid": {
1247
+ "value": "host"
1248
+ }
1249
+ },
1250
+ "policy": "deny",
1251
+ "class": "privilege"
1252
+ },
1253
+ {
1254
+ "flags": {
1255
+ "--network": {
1256
+ "alias": [
1257
+ "--net"
1258
+ ],
1259
+ "value": "host"
1260
+ }
1261
+ },
1262
+ "policy": "deny",
1263
+ "class": "privilege"
1264
+ },
1265
+ {
1266
+ "flags": {
1267
+ "--volume": {
1268
+ "alias": [
1269
+ "-v"
1270
+ ],
1271
+ "value": [
1272
+ "*docker.sock*",
1273
+ "/:*",
1274
+ "/etc:*"
1275
+ ]
1276
+ }
1277
+ },
1278
+ "policy": "deny",
1279
+ "class": "privilege"
1280
+ },
1281
+ {
1282
+ "flags": {
1283
+ "--mount": {
1284
+ "value": "*docker.sock*"
1285
+ }
1286
+ },
1287
+ "policy": "deny",
1288
+ "class": "privilege"
1289
+ }
1290
+ ]
1291
+ },
1292
+ "exec": {
1293
+ "policy": "ask",
1294
+ "class": "exec-unknown"
1295
+ },
1296
+ "compose": {
1297
+ "policy": "ask",
1298
+ "class": "exec-unknown",
1299
+ "matcher": [
1300
+ {
1301
+ "flags": {
1302
+ "--privileged": true
1303
+ },
1304
+ "policy": "deny",
1305
+ "class": "privilege"
1306
+ },
1307
+ {
1308
+ "flags": {
1309
+ "--pid": {
1310
+ "value": "host"
1311
+ }
1312
+ },
1313
+ "policy": "deny",
1314
+ "class": "privilege"
1315
+ },
1316
+ {
1317
+ "flags": {
1318
+ "--network": {
1319
+ "alias": [
1320
+ "--net"
1321
+ ],
1322
+ "value": "host"
1323
+ }
1324
+ },
1325
+ "policy": "deny",
1326
+ "class": "privilege"
1327
+ },
1328
+ {
1329
+ "flags": {
1330
+ "--volume": {
1331
+ "alias": [
1332
+ "-v"
1333
+ ],
1334
+ "value": [
1335
+ "*docker.sock*",
1336
+ "/:*",
1337
+ "/etc:*"
1338
+ ]
1339
+ }
1340
+ },
1341
+ "policy": "deny",
1342
+ "class": "privilege"
1343
+ },
1344
+ {
1345
+ "flags": {
1346
+ "--mount": {
1347
+ "value": "*docker.sock*"
1348
+ }
1349
+ },
1350
+ "policy": "deny",
1351
+ "class": "privilege"
1352
+ }
1353
+ ]
1354
+ }
1355
+ }
1356
+ },
1357
+ "apt": {
1358
+ "policy": "ask",
1359
+ "class": "package-install",
1360
+ "subcommands": {
1361
+ "install": "deny"
1362
+ }
1363
+ },
1364
+ "apt-get": {
1365
+ "policy": "ask",
1366
+ "class": "package-install",
1367
+ "subcommands": {
1368
+ "install": "deny"
1369
+ }
1370
+ },
1371
+ "brew": {
1372
+ "policy": "ask",
1373
+ "class": "package-install",
1374
+ "subcommands": {
1375
+ "install": "deny"
1376
+ }
1377
+ },
1378
+ "yum": {
1379
+ "policy": "ask",
1380
+ "class": "package-install",
1381
+ "subcommands": {
1382
+ "install": "deny"
1383
+ }
1384
+ },
1385
+ "dnf": {
1386
+ "policy": "ask",
1387
+ "class": "package-install",
1388
+ "subcommands": {
1389
+ "install": "deny"
1390
+ }
1391
+ },
1392
+ "pip": {
1393
+ "policy": "ask",
1394
+ "class": "package-install",
1395
+ "subcommands": {
1396
+ "install": "deny"
1397
+ }
1398
+ },
1399
+ "pip3": {
1400
+ "policy": "ask",
1401
+ "class": "package-install",
1402
+ "subcommands": {
1403
+ "install": "deny"
1404
+ }
1405
+ },
1406
+ "gem": {
1407
+ "policy": "ask",
1408
+ "class": "package-install",
1409
+ "subcommands": {
1410
+ "install": "deny"
1411
+ }
1412
+ },
1413
+ "awk": "ask",
1414
+ "cat": {
1415
+ "policy": "approve",
1416
+ "arg_rest_type": "read_path"
1417
+ },
1418
+ "cut": {
1419
+ "policy": "approve",
1420
+ "arg_rest_type": "read_path"
1421
+ },
1422
+ "date": {
1423
+ "policy": "approve",
1424
+ "flag_paths": {
1425
+ "--file": "read_path",
1426
+ "-f": "read_path",
1427
+ "--reference": "read_path",
1428
+ "-r": "read_path"
1429
+ }
1430
+ },
1431
+ "diff": {
1432
+ "policy": "approve",
1433
+ "arg_rest_type": "read_path",
1434
+ "flag_paths": {
1435
+ "--from-file": "read_path",
1436
+ "--to-file": "read_path",
1437
+ "-X": "read_path",
1438
+ "--exclude-from": "read_path"
1439
+ }
1440
+ },
1441
+ "echo": "approve",
1442
+ "false": "approve",
1443
+ "grep": {
1444
+ "policy": "approve",
1445
+ "arg_rest_type": "read_path",
1446
+ "flag_paths": {
1447
+ "--file": "read_path",
1448
+ "-f": "read_path",
1449
+ "--exclude-from": "read_path"
1450
+ }
1451
+ },
1452
+ "head": {
1453
+ "policy": "approve",
1454
+ "arg_rest_type": "read_path"
1455
+ },
1456
+ "ls": {
1457
+ "policy": "approve",
1458
+ "arg_rest_type": "read_path"
1459
+ },
1460
+ "mkdir": {
1461
+ "policy": "approve",
1462
+ "arg_rest_type": "write_path"
1463
+ },
1464
+ "printf": "approve",
1465
+ "pwd": "approve",
1466
+ "sed": {
1467
+ "policy": "approve",
1468
+ "guard": [
1469
+ "sed"
1470
+ ],
1471
+ "matcher": [
1472
+ {
1473
+ "flags": {
1474
+ "--in-place": {
1475
+ "alias": [
1476
+ "-i"
1477
+ ],
1478
+ "abbrev": true
1479
+ }
1480
+ },
1481
+ "policy": "deny",
1482
+ "class": "workspace-write"
1483
+ },
1484
+ {
1485
+ "flags": {
1486
+ "-e": {
1487
+ "alias": [
1488
+ "--expression"
1489
+ ],
1490
+ "value_type": "string"
1491
+ }
1492
+ }
1493
+ }
1494
+ ]
1495
+ },
1496
+ "sort": {
1497
+ "policy": "approve",
1498
+ "arg_rest_type": "read_path",
1499
+ "flag_paths": {
1500
+ "--output": "write_path",
1501
+ "-o": "write_path",
1502
+ "--files0-from": "read_path",
1503
+ "--random-source": "read_path"
1504
+ },
1505
+ "matcher": [
1506
+ {
1507
+ "flags": {
1508
+ "--output": {
1509
+ "alias": [
1510
+ "-o"
1511
+ ],
1512
+ "abbrev": true
1513
+ }
1514
+ },
1515
+ "policy": "deny",
1516
+ "class": "workspace-write"
1517
+ },
1518
+ {
1519
+ "flags": {
1520
+ "--compress-program": {
1521
+ "abbrev": true
1522
+ }
1523
+ },
1524
+ "policy": "ask"
1525
+ }
1526
+ ]
1527
+ },
1528
+ "stat": {
1529
+ "policy": "approve",
1530
+ "arg_rest_type": "read_path"
1531
+ },
1532
+ "tail": {
1533
+ "policy": "approve",
1534
+ "arg_rest_type": "read_path"
1535
+ },
1536
+ "tee": {
1537
+ "policy": "approve",
1538
+ "arg_rest_type": "write_path"
1539
+ },
1540
+ "test": "approve",
1541
+ "touch": {
1542
+ "policy": "approve",
1543
+ "arg_rest_type": "write_path",
1544
+ "flag_paths": {
1545
+ "--reference": "read_path",
1546
+ "-r": "read_path"
1547
+ }
1548
+ },
1549
+ "tr": "approve",
1550
+ "true": "approve",
1551
+ "uniq": {
1552
+ "policy": "approve",
1553
+ "arg_types": [
1554
+ "read_path",
1555
+ "write_path"
1556
+ ],
1557
+ "arg_rest_type": "write_path"
1558
+ },
1559
+ "wc": {
1560
+ "policy": "approve",
1561
+ "arg_rest_type": "read_path",
1562
+ "flag_paths": {
1563
+ "--files0-from": "read_path"
1564
+ }
1565
+ },
1566
+ "which": "approve",
1567
+ "curl": {
1568
+ "policy": "ask",
1569
+ "class": "network-egress"
1570
+ },
1571
+ "wget": {
1572
+ "policy": "ask",
1573
+ "class": "network-egress"
1574
+ },
1575
+ "npx": "ask",
1576
+ "pnpm": {
1577
+ "policy": "ask",
1578
+ "family_args": 1
1579
+ },
1580
+ "yarn": {
1581
+ "policy": "ask",
1582
+ "family_args": 1
1583
+ },
1584
+ "make": {
1585
+ "policy": "ask",
1586
+ "family_args": 1
1587
+ },
1588
+ "harness": {
1589
+ "policy": "ask",
1590
+ "class": "control-plane",
1591
+ "subcommands": {
1592
+ "eval": {
1593
+ "policy": "ask",
1594
+ "matcher": [
1595
+ {
1596
+ "flags": {
1597
+ "--mode": {
1598
+ "value_type": "string"
1599
+ }
1600
+ },
1601
+ "policy": "deny",
1602
+ "matcher": [
1603
+ {
1604
+ "flags": {
1605
+ "--mode": {
1606
+ "value": "auto"
1607
+ }
1608
+ },
1609
+ "policy": "ask"
1610
+ }
1611
+ ]
1612
+ }
1613
+ ]
1614
+ }
1615
+ }
1616
+ },
1617
+ "mkfs.ext2": {
1618
+ "policy": "block",
1619
+ "class": "destroy-catastrophic"
1620
+ },
1621
+ "mkfs.ext3": {
1622
+ "policy": "block",
1623
+ "class": "destroy-catastrophic"
1624
+ },
1625
+ "mkfs.btrfs": {
1626
+ "policy": "block",
1627
+ "class": "destroy-catastrophic"
1628
+ },
1629
+ "mkfs.f2fs": {
1630
+ "policy": "block",
1631
+ "class": "destroy-catastrophic"
1632
+ },
1633
+ "mkfs.exfat": {
1634
+ "policy": "block",
1635
+ "class": "destroy-catastrophic"
1636
+ },
1637
+ "mkfs.fat": {
1638
+ "policy": "block",
1639
+ "class": "destroy-catastrophic"
1640
+ },
1641
+ "mkfs.msdos": {
1642
+ "policy": "block",
1643
+ "class": "destroy-catastrophic"
1644
+ },
1645
+ "mkfs.minix": {
1646
+ "policy": "block",
1647
+ "class": "destroy-catastrophic"
1648
+ },
1649
+ "mke2fs": {
1650
+ "policy": "block",
1651
+ "class": "destroy-catastrophic"
1652
+ },
1653
+ "sfdisk": {
1654
+ "policy": "deny",
1655
+ "class": "destroy-catastrophic",
1656
+ "guard": [
1657
+ "disk-write"
1658
+ ]
1659
+ }
1660
+ }
1661
+ }
1662
+ }