@probelabs/probe 0.6.0-rc256 → 0.6.0-rc257

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.
@@ -11559,191 +11559,102 @@ var init_bashDefaults = __esm({
11559
11559
  "dir",
11560
11560
  "pwd",
11561
11561
  "cd",
11562
- "cd:*",
11563
11562
  // File reading commands
11564
11563
  "cat",
11565
- "cat:*",
11566
11564
  "head",
11567
- "head:*",
11568
11565
  "tail",
11569
- "tail:*",
11570
11566
  "less",
11571
11567
  "more",
11572
11568
  "view",
11573
11569
  // File information and metadata
11574
11570
  "file",
11575
- "file:*",
11576
11571
  "stat",
11577
- "stat:*",
11578
11572
  "wc",
11579
- "wc:*",
11580
11573
  "du",
11581
- "du:*",
11582
11574
  "df",
11583
- "df:*",
11584
11575
  "realpath",
11585
- "realpath:*",
11586
- // Search and find commands (read-only) - find restricted to safe operations
11576
+ // Search and find commands (read-only)
11577
+ // Note: bare 'find' allows all find variants; dangerous ones (find -exec) are blocked by deny list
11587
11578
  "find",
11588
- "find:-name:*",
11589
- "find:-type:*",
11590
- "find:-size:*",
11591
- "find:-mtime:*",
11592
- "find:-newer:*",
11593
- "find:-path:*",
11594
- "find:-iname:*",
11595
- "find:-maxdepth:*",
11596
- "find:-mindepth:*",
11597
- "find:-print",
11598
11579
  "grep",
11599
- "grep:*",
11600
11580
  "egrep",
11601
- "egrep:*",
11602
11581
  "fgrep",
11603
- "fgrep:*",
11604
11582
  "rg",
11605
- "rg:*",
11606
11583
  "ag",
11607
- "ag:*",
11608
11584
  "ack",
11609
- "ack:*",
11610
11585
  "which",
11611
- "which:*",
11612
11586
  "whereis",
11613
- "whereis:*",
11614
11587
  "locate",
11615
- "locate:*",
11616
11588
  "type",
11617
- "type:*",
11618
11589
  "command",
11619
- "command:*",
11620
11590
  // Tree and structure visualization
11621
11591
  "tree",
11622
- "tree:*",
11623
11592
  // Git read-only operations
11624
11593
  "git:status",
11625
- "git:status:*",
11626
11594
  "git:log",
11627
- "git:log:*",
11628
11595
  "git:diff",
11629
- "git:diff:*",
11630
11596
  "git:show",
11631
- "git:show:*",
11632
11597
  "git:branch",
11633
- "git:branch:*",
11634
11598
  "git:tag",
11635
- "git:tag:*",
11636
11599
  "git:describe",
11637
- "git:describe:*",
11638
11600
  "git:remote",
11639
- "git:remote:*",
11640
- "git:config:*",
11601
+ "git:config",
11641
11602
  "git:blame",
11642
- "git:blame:*",
11643
11603
  "git:shortlog",
11644
- "git:shortlog:*",
11645
11604
  "git:reflog",
11646
- "git:reflog:*",
11647
11605
  "git:ls-files",
11648
- "git:ls-files:*",
11649
11606
  "git:ls-tree",
11650
- "git:ls-tree:*",
11651
11607
  "git:ls-remote",
11652
- "git:ls-remote:*",
11653
11608
  "git:rev-parse",
11654
- "git:rev-parse:*",
11655
11609
  "git:rev-list",
11656
- "git:rev-list:*",
11657
11610
  "git:cat-file",
11658
- "git:cat-file:*",
11659
11611
  "git:diff-tree",
11660
- "git:diff-tree:*",
11661
11612
  "git:diff-files",
11662
- "git:diff-files:*",
11663
11613
  "git:diff-index",
11664
- "git:diff-index:*",
11665
11614
  "git:for-each-ref",
11666
- "git:for-each-ref:*",
11667
11615
  "git:merge-base",
11668
- "git:merge-base:*",
11669
11616
  "git:name-rev",
11670
- "git:name-rev:*",
11671
11617
  "git:count-objects",
11672
- "git:count-objects:*",
11673
11618
  "git:verify-commit",
11674
- "git:verify-commit:*",
11675
11619
  "git:verify-tag",
11676
- "git:verify-tag:*",
11677
11620
  "git:check-ignore",
11678
- "git:check-ignore:*",
11679
11621
  "git:check-attr",
11680
- "git:check-attr:*",
11681
11622
  "git:stash:list",
11682
11623
  "git:stash:show",
11683
- "git:stash:show:*",
11684
11624
  "git:worktree:list",
11685
- "git:worktree:list:*",
11686
11625
  "git:notes:list",
11687
11626
  "git:notes:show",
11688
- "git:notes:show:*",
11689
11627
  "git:--version",
11690
11628
  "git:help",
11691
- "git:help:*",
11692
11629
  // GitHub CLI (gh) read-only operations
11693
11630
  "gh:--version",
11694
11631
  "gh:help",
11695
- "gh:help:*",
11696
11632
  "gh:status",
11697
11633
  "gh:auth:status",
11698
- "gh:auth:status:*",
11699
11634
  "gh:issue:list",
11700
- "gh:issue:list:*",
11701
11635
  "gh:issue:view",
11702
- "gh:issue:view:*",
11703
11636
  "gh:issue:status",
11704
- "gh:issue:status:*",
11705
11637
  "gh:pr:list",
11706
- "gh:pr:list:*",
11707
11638
  "gh:pr:view",
11708
- "gh:pr:view:*",
11709
11639
  "gh:pr:status",
11710
- "gh:pr:status:*",
11711
11640
  "gh:pr:diff",
11712
- "gh:pr:diff:*",
11713
11641
  "gh:pr:checks",
11714
- "gh:pr:checks:*",
11715
11642
  "gh:repo:list",
11716
- "gh:repo:list:*",
11717
11643
  "gh:repo:view",
11718
- "gh:repo:view:*",
11719
11644
  "gh:release:list",
11720
- "gh:release:list:*",
11721
11645
  "gh:release:view",
11722
- "gh:release:view:*",
11723
11646
  "gh:run:list",
11724
- "gh:run:list:*",
11725
11647
  "gh:run:view",
11726
- "gh:run:view:*",
11727
11648
  "gh:workflow:list",
11728
- "gh:workflow:list:*",
11729
11649
  "gh:workflow:view",
11730
- "gh:workflow:view:*",
11731
11650
  "gh:gist:list",
11732
- "gh:gist:list:*",
11733
11651
  "gh:gist:view",
11734
- "gh:gist:view:*",
11735
11652
  "gh:search:issues",
11736
- "gh:search:issues:*",
11737
11653
  "gh:search:prs",
11738
- "gh:search:prs:*",
11739
11654
  "gh:search:repos",
11740
- "gh:search:repos:*",
11741
11655
  "gh:search:code",
11742
- "gh:search:code:*",
11743
11656
  "gh:search:commits",
11744
- "gh:search:commits:*",
11745
11657
  "gh:api",
11746
- "gh:api:*",
11747
11658
  // Package managers (information only)
11748
11659
  "npm:list",
11749
11660
  "npm:ls",
@@ -11804,7 +11715,6 @@ var init_bashDefaults = __esm({
11804
11715
  "sqlite3:--version",
11805
11716
  // System information
11806
11717
  "uname",
11807
- "uname:*",
11808
11718
  "hostname",
11809
11719
  "whoami",
11810
11720
  "id",
@@ -11815,23 +11725,17 @@ var init_bashDefaults = __esm({
11815
11725
  "w",
11816
11726
  "users",
11817
11727
  "sleep",
11818
- "sleep:*",
11819
11728
  // Environment and shell
11820
11729
  "env",
11821
11730
  "printenv",
11822
11731
  "echo",
11823
- "echo:*",
11824
11732
  "printf",
11825
- "printf:*",
11826
11733
  "export",
11827
- "export:*",
11828
11734
  "set",
11829
11735
  "unset",
11830
11736
  // Process information (read-only)
11831
11737
  "ps",
11832
- "ps:*",
11833
11738
  "pgrep",
11834
- "pgrep:*",
11835
11739
  "jobs",
11836
11740
  "top:-n:1",
11837
11741
  // Network information (read-only)
@@ -11846,39 +11750,24 @@ var init_bashDefaults = __esm({
11846
11750
  // Text processing and utilities (awk removed - too powerful)
11847
11751
  "sed:-n:*",
11848
11752
  "cut",
11849
- "cut:*",
11850
11753
  "sort",
11851
- "sort:*",
11852
11754
  "uniq",
11853
- "uniq:*",
11854
11755
  "tr",
11855
- "tr:*",
11856
11756
  "column",
11857
- "column:*",
11858
11757
  "paste",
11859
- "paste:*",
11860
11758
  "join",
11861
- "join:*",
11862
11759
  "comm",
11863
- "comm:*",
11864
11760
  "diff",
11865
- "diff:*",
11866
11761
  "cmp",
11867
- "cmp:*",
11868
11762
  "patch:--dry-run:*",
11869
11763
  // Hashing and encoding (read-only)
11870
11764
  "md5sum",
11871
- "md5sum:*",
11872
11765
  "sha1sum",
11873
- "sha1sum:*",
11874
11766
  "sha256sum",
11875
- "sha256sum:*",
11876
11767
  "base64",
11877
11768
  "base64:-d",
11878
11769
  "od",
11879
- "od:*",
11880
11770
  "hexdump",
11881
- "hexdump:*",
11882
11771
  // Archive and compression (list/view only)
11883
11772
  "tar:-tf:*",
11884
11773
  "tar:-tzf:*",
@@ -11888,15 +11777,11 @@ var init_bashDefaults = __esm({
11888
11777
  "gunzip:-l:*",
11889
11778
  // Help and documentation
11890
11779
  "man",
11891
- "man:*",
11892
11780
  "--help",
11893
11781
  "help",
11894
11782
  "info",
11895
- "info:*",
11896
11783
  "whatis",
11897
- "whatis:*",
11898
11784
  "apropos",
11899
- "apropos:*",
11900
11785
  // Make (dry run and info)
11901
11786
  "make:-n",
11902
11787
  "make:--dry-run",
@@ -11919,36 +11804,30 @@ var init_bashDefaults = __esm({
11919
11804
  "rm:-rf",
11920
11805
  "rm:-f:/",
11921
11806
  "rm:/",
11922
- "rm:-rf:*",
11923
11807
  "rmdir",
11924
11808
  "chmod:777",
11925
11809
  "chmod:-R:777",
11926
11810
  "chown",
11927
11811
  "chgrp",
11928
11812
  "dd",
11929
- "dd:*",
11930
11813
  "shred",
11931
- "shred:*",
11932
11814
  // Dangerous find operations that can execute arbitrary commands
11933
- "find:-exec:*",
11934
- "find:*:-exec:*",
11935
- "find:-execdir:*",
11936
- "find:*:-execdir:*",
11937
- "find:-ok:*",
11938
- "find:*:-ok:*",
11939
- "find:-okdir:*",
11940
- "find:*:-okdir:*",
11815
+ "find:-exec",
11816
+ "find:*:-exec",
11817
+ "find:-execdir",
11818
+ "find:*:-execdir",
11819
+ "find:-ok",
11820
+ "find:*:-ok",
11821
+ "find:-okdir",
11822
+ "find:*:-okdir",
11941
11823
  // Powerful scripting tools that can execute arbitrary commands
11942
11824
  "awk",
11943
- "awk:*",
11944
11825
  "perl",
11945
- "perl:*",
11946
11826
  "python:-c:*",
11947
11827
  "node:-e:*",
11948
11828
  // System administration and modification
11949
- "sudo:*",
11829
+ "sudo",
11950
11830
  "su",
11951
- "su:*",
11952
11831
  "passwd",
11953
11832
  "adduser",
11954
11833
  "useradd",
@@ -11986,11 +11865,11 @@ var init_bashDefaults = __esm({
11986
11865
  "composer:install",
11987
11866
  "composer:update",
11988
11867
  "composer:remove",
11989
- "apt:*",
11990
- "apt-get:*",
11991
- "yum:*",
11992
- "dnf:*",
11993
- "zypper:*",
11868
+ "apt",
11869
+ "apt-get",
11870
+ "yum",
11871
+ "dnf",
11872
+ "zypper",
11994
11873
  "brew:install",
11995
11874
  "brew:uninstall",
11996
11875
  "brew:upgrade",
@@ -11998,11 +11877,11 @@ var init_bashDefaults = __esm({
11998
11877
  "conda:remove",
11999
11878
  "conda:update",
12000
11879
  // Service and system control
12001
- "systemctl:*",
12002
- "service:*",
12003
- "chkconfig:*",
12004
- "initctl:*",
12005
- "upstart:*",
11880
+ "systemctl",
11881
+ "service",
11882
+ "chkconfig",
11883
+ "initctl",
11884
+ "upstart",
12006
11885
  // Network operations that could be dangerous
12007
11886
  "curl:-d:*",
12008
11887
  "curl:--data:*",
@@ -12011,32 +11890,21 @@ var init_bashDefaults = __esm({
12011
11890
  "wget:-O:/",
12012
11891
  "wget:--post-data:*",
12013
11892
  "ssh",
12014
- "ssh:*",
12015
11893
  "scp",
12016
- "scp:*",
12017
11894
  "sftp",
12018
- "sftp:*",
12019
- "rsync:*",
11895
+ "rsync",
12020
11896
  "nc",
12021
- "nc:*",
12022
11897
  "netcat",
12023
- "netcat:*",
12024
11898
  "telnet",
12025
- "telnet:*",
12026
11899
  "ftp",
12027
- "ftp:*",
12028
11900
  // Process control and termination
12029
11901
  "kill",
12030
- "kill:*",
12031
11902
  "killall",
12032
- "killall:*",
12033
11903
  "pkill",
12034
- "pkill:*",
12035
- "nohup:*",
12036
- "disown:*",
11904
+ "nohup",
11905
+ "disown",
12037
11906
  // System control and shutdown
12038
11907
  "shutdown",
12039
- "shutdown:*",
12040
11908
  "reboot",
12041
11909
  "halt",
12042
11910
  "poweroff",
@@ -12044,168 +11912,92 @@ var init_bashDefaults = __esm({
12044
11912
  "telinit",
12045
11913
  // Kernel and module operations
12046
11914
  "insmod",
12047
- "insmod:*",
12048
11915
  "rmmod",
12049
- "rmmod:*",
12050
11916
  "modprobe",
12051
- "modprobe:*",
12052
11917
  "sysctl:-w:*",
12053
11918
  // Dangerous git operations
12054
11919
  "git:push",
12055
- "git:push:*",
12056
11920
  "git:force",
12057
11921
  "git:reset",
12058
- "git:reset:*",
12059
11922
  "git:clean",
12060
- "git:clean:*",
12061
11923
  "git:rm",
12062
- "git:rm:*",
12063
11924
  "git:commit",
12064
- "git:commit:*",
12065
11925
  "git:merge",
12066
- "git:merge:*",
12067
11926
  "git:rebase",
12068
- "git:rebase:*",
12069
11927
  "git:cherry-pick",
12070
- "git:cherry-pick:*",
12071
11928
  "git:stash:drop",
12072
- "git:stash:drop:*",
12073
11929
  "git:stash:pop",
12074
- "git:stash:pop:*",
12075
11930
  "git:stash:push",
12076
- "git:stash:push:*",
12077
11931
  "git:stash:clear",
12078
11932
  "git:branch:-d",
12079
- "git:branch:-d:*",
12080
11933
  "git:branch:-D",
12081
- "git:branch:-D:*",
12082
11934
  "git:branch:--delete",
12083
- "git:branch:--delete:*",
12084
11935
  "git:tag:-d",
12085
- "git:tag:-d:*",
12086
11936
  "git:tag:--delete",
12087
- "git:tag:--delete:*",
12088
11937
  "git:remote:remove",
12089
- "git:remote:remove:*",
12090
11938
  "git:remote:rm",
12091
- "git:remote:rm:*",
12092
11939
  "git:checkout:--force",
12093
- "git:checkout:--force:*",
12094
11940
  "git:checkout:-f",
12095
- "git:checkout:-f:*",
12096
11941
  "git:submodule:deinit",
12097
- "git:submodule:deinit:*",
12098
11942
  "git:notes:add",
12099
- "git:notes:add:*",
12100
11943
  "git:notes:remove",
12101
- "git:notes:remove:*",
12102
11944
  "git:worktree:add",
12103
- "git:worktree:add:*",
12104
11945
  "git:worktree:remove",
12105
- "git:worktree:remove:*",
12106
11946
  // Dangerous GitHub CLI (gh) write operations
12107
11947
  "gh:issue:create",
12108
- "gh:issue:create:*",
12109
11948
  "gh:issue:close",
12110
- "gh:issue:close:*",
12111
11949
  "gh:issue:delete",
12112
- "gh:issue:delete:*",
12113
11950
  "gh:issue:edit",
12114
- "gh:issue:edit:*",
12115
11951
  "gh:issue:reopen",
12116
- "gh:issue:reopen:*",
12117
11952
  "gh:issue:comment",
12118
- "gh:issue:comment:*",
12119
11953
  "gh:pr:create",
12120
- "gh:pr:create:*",
12121
11954
  "gh:pr:close",
12122
- "gh:pr:close:*",
12123
11955
  "gh:pr:merge",
12124
- "gh:pr:merge:*",
12125
11956
  "gh:pr:edit",
12126
- "gh:pr:edit:*",
12127
11957
  "gh:pr:reopen",
12128
- "gh:pr:reopen:*",
12129
11958
  "gh:pr:review",
12130
- "gh:pr:review:*",
12131
11959
  "gh:pr:comment",
12132
- "gh:pr:comment:*",
12133
11960
  "gh:repo:create",
12134
- "gh:repo:create:*",
12135
11961
  "gh:repo:delete",
12136
- "gh:repo:delete:*",
12137
11962
  "gh:repo:fork",
12138
- "gh:repo:fork:*",
12139
11963
  "gh:repo:rename",
12140
- "gh:repo:rename:*",
12141
11964
  "gh:repo:archive",
12142
- "gh:repo:archive:*",
12143
11965
  "gh:repo:clone",
12144
- "gh:repo:clone:*",
12145
11966
  "gh:release:create",
12146
- "gh:release:create:*",
12147
11967
  "gh:release:delete",
12148
- "gh:release:delete:*",
12149
11968
  "gh:release:edit",
12150
- "gh:release:edit:*",
12151
11969
  "gh:run:cancel",
12152
- "gh:run:cancel:*",
12153
11970
  "gh:run:rerun",
12154
- "gh:run:rerun:*",
12155
11971
  "gh:workflow:run",
12156
- "gh:workflow:run:*",
12157
11972
  "gh:workflow:enable",
12158
- "gh:workflow:enable:*",
12159
11973
  "gh:workflow:disable",
12160
- "gh:workflow:disable:*",
12161
11974
  "gh:gist:create",
12162
- "gh:gist:create:*",
12163
11975
  "gh:gist:delete",
12164
- "gh:gist:delete:*",
12165
11976
  "gh:gist:edit",
12166
- "gh:gist:edit:*",
12167
11977
  "gh:secret:set",
12168
- "gh:secret:set:*",
12169
11978
  "gh:secret:delete",
12170
- "gh:secret:delete:*",
12171
11979
  "gh:variable:set",
12172
- "gh:variable:set:*",
12173
11980
  "gh:variable:delete",
12174
- "gh:variable:delete:*",
12175
11981
  "gh:label:create",
12176
- "gh:label:create:*",
12177
11982
  "gh:label:delete",
12178
- "gh:label:delete:*",
12179
11983
  "gh:ssh-key:add",
12180
- "gh:ssh-key:add:*",
12181
11984
  "gh:ssh-key:delete",
12182
- "gh:ssh-key:delete:*",
12183
11985
  // File system mounting and partitioning
12184
11986
  "mount",
12185
- "mount:*",
12186
11987
  "umount",
12187
- "umount:*",
12188
11988
  "fdisk",
12189
- "fdisk:*",
12190
11989
  "parted",
12191
- "parted:*",
12192
11990
  "mkfs",
12193
- "mkfs:*",
12194
11991
  "fsck",
12195
- "fsck:*",
12196
11992
  // Cron and scheduling
12197
11993
  "crontab",
12198
- "crontab:*",
12199
11994
  "at",
12200
- "at:*",
12201
11995
  "batch",
12202
- "batch:*",
12203
11996
  // Compression with potential overwrite
12204
11997
  "tar:-xf:*",
12205
11998
  "unzip",
12206
- "unzip:*",
12207
- "gzip:*",
12208
- "gunzip:*",
11999
+ "gzip",
12000
+ "gunzip",
12209
12001
  // Build and compilation that might modify files
12210
12002
  "make",
12211
12003
  "make:install",
@@ -12218,11 +12010,8 @@ var init_bashDefaults = __esm({
12218
12010
  "gradle:build",
12219
12011
  // Docker operations that could modify state
12220
12012
  "docker:run",
12221
- "docker:run:*",
12222
12013
  "docker:exec",
12223
- "docker:exec:*",
12224
12014
  "docker:build",
12225
- "docker:build:*",
12226
12015
  "docker:pull",
12227
12016
  "docker:push",
12228
12017
  "docker:rm",
@@ -12236,22 +12025,15 @@ var init_bashDefaults = __esm({
12236
12025
  "mongo:--eval:*",
12237
12026
  // Text editors that could modify files
12238
12027
  "vi",
12239
- "vi:*",
12240
12028
  "vim",
12241
- "vim:*",
12242
12029
  "nano",
12243
- "nano:*",
12244
12030
  "emacs",
12245
- "emacs:*",
12246
12031
  "sed:-i:*",
12247
12032
  "perl:-i:*",
12248
12033
  // Potentially dangerous utilities
12249
12034
  "eval",
12250
- "eval:*",
12251
12035
  "exec",
12252
- "exec:*",
12253
12036
  "source",
12254
- "source:*",
12255
12037
  "bash:-c:*",
12256
12038
  "sh:-c:*",
12257
12039
  "zsh:-c:*"
@@ -12530,9 +12312,19 @@ var init_bashPermissions = __esm({
12530
12312
  BashPermissionChecker = class {
12531
12313
  /**
12532
12314
  * Create a permission checker
12315
+ *
12316
+ * Priority order (highest to lowest):
12317
+ * 1. Custom deny — always blocks (user explicitly blocked it)
12318
+ * 2. Custom allow — overrides default deny (user explicitly allowed it)
12319
+ * 3. Default deny — blocks by default
12320
+ * 4. Allow list — allows recognized safe commands
12321
+ *
12322
+ * This means `--bash-allow "git:push"` overrides the default deny for git:push
12323
+ * without requiring `--no-default-bash-deny`.
12324
+ *
12533
12325
  * @param {Object} config - Configuration options
12534
- * @param {string[]} [config.allow] - Additional allow patterns
12535
- * @param {string[]} [config.deny] - Additional deny patterns
12326
+ * @param {string[]} [config.allow] - Additional allow patterns (override default deny)
12327
+ * @param {string[]} [config.deny] - Additional deny patterns (always win)
12536
12328
  * @param {boolean} [config.disableDefaultAllow] - Disable default allow list
12537
12329
  * @param {boolean} [config.disableDefaultDeny] - Disable default deny list
12538
12330
  * @param {boolean} [config.debug] - Enable debug logging
@@ -12541,40 +12333,22 @@ var init_bashPermissions = __esm({
12541
12333
  constructor(config = {}) {
12542
12334
  this.debug = config.debug || false;
12543
12335
  this.tracer = config.tracer || null;
12544
- this.allowPatterns = [];
12545
- if (!config.disableDefaultAllow) {
12546
- this.allowPatterns.push(...DEFAULT_ALLOW_PATTERNS);
12547
- if (this.debug) {
12548
- console.log(`[BashPermissions] Added ${DEFAULT_ALLOW_PATTERNS.length} default allow patterns`);
12549
- }
12550
- }
12551
- if (config.allow && Array.isArray(config.allow)) {
12552
- this.allowPatterns.push(...config.allow);
12553
- if (this.debug) {
12554
- console.log(`[BashPermissions] Added ${config.allow.length} custom allow patterns:`, config.allow);
12555
- }
12556
- }
12557
- this.denyPatterns = [];
12558
- if (!config.disableDefaultDeny) {
12559
- this.denyPatterns.push(...DEFAULT_DENY_PATTERNS);
12560
- if (this.debug) {
12561
- console.log(`[BashPermissions] Added ${DEFAULT_DENY_PATTERNS.length} default deny patterns`);
12562
- }
12563
- }
12564
- if (config.deny && Array.isArray(config.deny)) {
12565
- this.denyPatterns.push(...config.deny);
12566
- if (this.debug) {
12567
- console.log(`[BashPermissions] Added ${config.deny.length} custom deny patterns:`, config.deny);
12568
- }
12569
- }
12336
+ this.defaultAllowPatterns = config.disableDefaultAllow ? [] : [...DEFAULT_ALLOW_PATTERNS];
12337
+ this.customAllowPatterns = config.allow && Array.isArray(config.allow) ? [...config.allow] : [];
12338
+ this.allowPatterns = [...this.defaultAllowPatterns, ...this.customAllowPatterns];
12339
+ this.defaultDenyPatterns = config.disableDefaultDeny ? [] : [...DEFAULT_DENY_PATTERNS];
12340
+ this.customDenyPatterns = config.deny && Array.isArray(config.deny) ? [...config.deny] : [];
12341
+ this.denyPatterns = [...this.defaultDenyPatterns, ...this.customDenyPatterns];
12570
12342
  if (this.debug) {
12343
+ console.log(`[BashPermissions] Default allow: ${this.defaultAllowPatterns.length}, Custom allow: ${this.customAllowPatterns.length}`);
12344
+ console.log(`[BashPermissions] Default deny: ${this.defaultDenyPatterns.length}, Custom deny: ${this.customDenyPatterns.length}`);
12571
12345
  console.log(`[BashPermissions] Total patterns - Allow: ${this.allowPatterns.length}, Deny: ${this.denyPatterns.length}`);
12572
12346
  }
12573
12347
  this.recordBashEvent("permissions.initialized", {
12574
12348
  allowPatternCount: this.allowPatterns.length,
12575
12349
  denyPatternCount: this.denyPatterns.length,
12576
- hasCustomAllowPatterns: !!(config.allow && config.allow.length > 0),
12577
- hasCustomDenyPatterns: !!(config.deny && config.deny.length > 0),
12350
+ hasCustomAllowPatterns: this.customAllowPatterns.length > 0,
12351
+ hasCustomDenyPatterns: this.customDenyPatterns.length > 0,
12578
12352
  disableDefaultAllow: !!config.disableDefaultAllow,
12579
12353
  disableDefaultDeny: !!config.disableDefaultDeny
12580
12354
  });
@@ -12644,8 +12418,11 @@ var init_bashPermissions = __esm({
12644
12418
  console.log(`[BashPermissions] Checking simple command: "${command}"`);
12645
12419
  console.log(`[BashPermissions] Parsed: ${parsed.command} with args: [${parsed.args.join(", ")}]`);
12646
12420
  }
12647
- if (matchesAnyPattern(parsed, this.denyPatterns)) {
12648
- const matchedPatterns = this.denyPatterns.filter((pattern) => matchesPattern(parsed, pattern));
12421
+ if (matchesAnyPattern(parsed, this.customDenyPatterns)) {
12422
+ const matchedPatterns = this.customDenyPatterns.filter((pattern) => matchesPattern(parsed, pattern));
12423
+ if (this.debug) {
12424
+ console.log(`[BashPermissions] DENIED - matches custom deny pattern: ${matchedPatterns[0]}`);
12425
+ }
12649
12426
  const result2 = {
12650
12427
  allowed: false,
12651
12428
  reason: `Command matches deny pattern: ${matchedPatterns[0]}`,
@@ -12658,7 +12435,31 @@ var init_bashPermissions = __esm({
12658
12435
  parsedCommand: parsed.command,
12659
12436
  reason: "matches_deny_pattern",
12660
12437
  matchedPattern: matchedPatterns[0],
12661
- isComplex: false
12438
+ isComplex: false,
12439
+ isCustomDeny: true
12440
+ });
12441
+ return result2;
12442
+ }
12443
+ const matchesCustomAllow = matchesAnyPattern(parsed, this.customAllowPatterns);
12444
+ if (!matchesCustomAllow && matchesAnyPattern(parsed, this.defaultDenyPatterns)) {
12445
+ const matchedPatterns = this.defaultDenyPatterns.filter((pattern) => matchesPattern(parsed, pattern));
12446
+ if (this.debug) {
12447
+ console.log(`[BashPermissions] DENIED - matches default deny pattern: ${matchedPatterns[0]}`);
12448
+ }
12449
+ const result2 = {
12450
+ allowed: false,
12451
+ reason: `Command matches deny pattern: ${matchedPatterns[0]}`,
12452
+ command,
12453
+ parsed,
12454
+ matchedPatterns
12455
+ };
12456
+ this.recordBashEvent("permission.denied", {
12457
+ command,
12458
+ parsedCommand: parsed.command,
12459
+ reason: "matches_deny_pattern",
12460
+ matchedPattern: matchedPatterns[0],
12461
+ isComplex: false,
12462
+ isCustomDeny: false
12662
12463
  });
12663
12464
  return result2;
12664
12465
  }
@@ -12683,15 +12484,21 @@ var init_bashPermissions = __esm({
12683
12484
  allowed: true,
12684
12485
  command,
12685
12486
  parsed,
12686
- isComplex: false
12487
+ isComplex: false,
12488
+ overriddenDeny: matchesCustomAllow && matchesAnyPattern(parsed, this.defaultDenyPatterns)
12687
12489
  };
12688
12490
  if (this.debug) {
12689
- console.log(`[BashPermissions] ALLOWED - command passed all checks`);
12491
+ if (result.overriddenDeny) {
12492
+ console.log(`[BashPermissions] ALLOWED - custom allow overrides default deny`);
12493
+ } else {
12494
+ console.log(`[BashPermissions] ALLOWED - command passed all checks`);
12495
+ }
12690
12496
  }
12691
12497
  this.recordBashEvent("permission.allowed", {
12692
12498
  command,
12693
12499
  parsedCommand: parsed.command,
12694
- isComplex: false
12500
+ isComplex: false,
12501
+ overriddenDeny: result.overriddenDeny || false
12695
12502
  });
12696
12503
  return result;
12697
12504
  }
@@ -12860,9 +12667,19 @@ var init_bashPermissions = __esm({
12860
12667
  deniedReason = parsed.error || "Component contains nested complex constructs";
12861
12668
  break;
12862
12669
  }
12863
- if (matchesAnyPattern(parsed, this.denyPatterns)) {
12670
+ if (matchesAnyPattern(parsed, this.customDenyPatterns)) {
12864
12671
  if (this.debug) {
12865
- console.log(`[BashPermissions] Component "${component}" matches deny pattern`);
12672
+ console.log(`[BashPermissions] Component "${component}" matches custom deny pattern`);
12673
+ }
12674
+ allAllowed = false;
12675
+ deniedComponent = component;
12676
+ deniedReason = "Component matches deny pattern";
12677
+ break;
12678
+ }
12679
+ const componentMatchesCustomAllow = matchesAnyPattern(parsed, this.customAllowPatterns);
12680
+ if (!componentMatchesCustomAllow && matchesAnyPattern(parsed, this.defaultDenyPatterns)) {
12681
+ if (this.debug) {
12682
+ console.log(`[BashPermissions] Component "${component}" matches default deny pattern`);
12866
12683
  }
12867
12684
  allAllowed = false;
12868
12685
  deniedComponent = component;
@@ -12942,6 +12759,10 @@ var init_bashPermissions = __esm({
12942
12759
  return {
12943
12760
  allowPatterns: this.allowPatterns.length,
12944
12761
  denyPatterns: this.denyPatterns.length,
12762
+ customAllowPatterns: this.customAllowPatterns.length,
12763
+ customDenyPatterns: this.customDenyPatterns.length,
12764
+ defaultAllowPatterns: this.defaultAllowPatterns.length,
12765
+ defaultDenyPatterns: this.defaultDenyPatterns.length,
12945
12766
  totalPatterns: this.allowPatterns.length + this.denyPatterns.length
12946
12767
  };
12947
12768
  }
@@ -13323,8 +13144,8 @@ Common reasons:
13323
13144
  2. The command is not in the allow list (not a recognized safe command)
13324
13145
 
13325
13146
  If you believe this command should be allowed, you can:
13326
- - Use the --bash-allow option to add specific patterns
13327
- - Use the --no-default-bash-deny flag to remove default restrictions (not recommended)
13147
+ - Use the --bash-allow option to add specific patterns (overrides default deny list)
13148
+ Example: --bash-allow "git:push" allows git push while keeping all other deny rules
13328
13149
 
13329
13150
  For code exploration, try these safe alternatives:
13330
13151
  - ls, cat, head, tail for file operations
@@ -80696,10 +80517,10 @@ var init_FallbackManager = __esm({
80696
80517
  // Use custom provider list
80697
80518
  };
80698
80519
  DEFAULT_MODELS = {
80699
- anthropic: "claude-sonnet-4-5-20250929",
80700
- openai: "gpt-4o",
80701
- google: "gemini-2.0-flash-exp",
80702
- bedrock: "anthropic.claude-sonnet-4-20250514-v1:0"
80520
+ anthropic: "claude-sonnet-4-6",
80521
+ openai: "gpt-5.2",
80522
+ google: "gemini-2.5-flash",
80523
+ bedrock: "anthropic.claude-sonnet-4-6"
80703
80524
  };
80704
80525
  FallbackManager = class {
80705
80526
  /**
@@ -83219,7 +83040,7 @@ var init_ProbeAgent = __esm({
83219
83040
  }
83220
83041
  this.clientApiProvider = "claude-code";
83221
83042
  this.provider = null;
83222
- this.model = this.clientApiModel || "claude-3-5-sonnet-20241022";
83043
+ this.model = this.clientApiModel || "claude-sonnet-4-6";
83223
83044
  this.apiType = "claude-code";
83224
83045
  } else if (codexAvailable) {
83225
83046
  if (this.debug) {
@@ -83228,7 +83049,7 @@ var init_ProbeAgent = __esm({
83228
83049
  }
83229
83050
  this.clientApiProvider = "codex";
83230
83051
  this.provider = null;
83231
- this.model = this.clientApiModel || "gpt-4o";
83052
+ this.model = this.clientApiModel || "gpt-5.2";
83232
83053
  this.apiType = "codex";
83233
83054
  } else {
83234
83055
  throw new Error("No API key provided and neither claude nor codex command found. Please either:\n1. Set an API key: ANTHROPIC_API_KEY, OPENAI_API_KEY, GOOGLE_GENERATIVE_AI_API_KEY, or AWS credentials\n2. Install claude command from https://docs.claude.com/en/docs/claude-code\n3. Install codex command from https://openai.com/codex");
@@ -83466,7 +83287,7 @@ var init_ProbeAgent = __esm({
83466
83287
  }
83467
83288
  if (this.clientApiProvider === "claude-code" || process.env.USE_CLAUDE_CODE === "true") {
83468
83289
  this.provider = null;
83469
- this.model = modelName || "claude-3-5-sonnet-20241022";
83290
+ this.model = modelName || "claude-sonnet-4-6";
83470
83291
  this.apiType = "claude-code";
83471
83292
  if (this.debug) {
83472
83293
  console.log("[DEBUG] Claude Code engine selected - will use built-in access if available");
@@ -83833,7 +83654,7 @@ var init_ProbeAgent = __esm({
83833
83654
  apiKey,
83834
83655
  ...apiUrl && { baseURL: apiUrl }
83835
83656
  });
83836
- this.model = modelName || "claude-sonnet-4-5-20250929";
83657
+ this.model = modelName || "claude-sonnet-4-6";
83837
83658
  this.apiType = "anthropic";
83838
83659
  if (this.debug) {
83839
83660
  console.log(`Using Anthropic API with model: ${this.model}${apiUrl ? ` (URL: ${apiUrl})` : ""}`);
@@ -83848,7 +83669,7 @@ var init_ProbeAgent = __esm({
83848
83669
  apiKey,
83849
83670
  ...apiUrl && { baseURL: apiUrl }
83850
83671
  });
83851
- this.model = modelName || "gpt-5-thinking";
83672
+ this.model = modelName || "gpt-5.2";
83852
83673
  this.apiType = "openai";
83853
83674
  if (this.debug) {
83854
83675
  console.log(`Using OpenAI API with model: ${this.model}${apiUrl ? ` (URL: ${apiUrl})` : ""}`);
@@ -83952,7 +83773,7 @@ var init_ProbeAgent = __esm({
83952
83773
  config.baseURL = baseURL;
83953
83774
  }
83954
83775
  this.provider = createAmazonBedrock2(config);
83955
- this.model = modelName || "anthropic.claude-sonnet-4-20250514-v1:0";
83776
+ this.model = modelName || "anthropic.claude-sonnet-4-6";
83956
83777
  this.apiType = "bedrock";
83957
83778
  if (this.debug) {
83958
83779
  const authMethod = apiKey ? "API Key" : "AWS Credentials";
@@ -84011,7 +83832,7 @@ var init_ProbeAgent = __esm({
84011
83832
  allowedTools: this.allowedTools,
84012
83833
  // Pass tool filtering configuration
84013
83834
  model: this.model
84014
- // Pass model name (e.g., gpt-4o, o3, etc.)
83835
+ // Pass model name (e.g., gpt-5.2, o3, etc.)
84015
83836
  });
84016
83837
  if (this.debug) {
84017
83838
  console.log("[DEBUG] Using Codex CLI engine with Probe tools");
@@ -85266,9 +85087,7 @@ You are working with a workspace. Available paths: ${workspaceDesc}
85266
85087
  let maxResponseTokens = this.maxResponseTokens;
85267
85088
  if (!maxResponseTokens) {
85268
85089
  maxResponseTokens = 4e3;
85269
- if (this.model && this.model.includes("opus") || this.model && this.model.includes("sonnet") || this.model && this.model.startsWith("gpt-4-")) {
85270
- maxResponseTokens = 8192;
85271
- } else if (this.model && this.model.startsWith("gpt-4o")) {
85090
+ if (this.model && this.model.includes("opus") || this.model && this.model.includes("sonnet") || this.model && this.model.startsWith("gpt-4") || this.model && this.model.startsWith("gpt-5")) {
85272
85091
  maxResponseTokens = 8192;
85273
85092
  } else if (this.model && this.model.startsWith("gemini")) {
85274
85093
  maxResponseTokens = 32e3;