@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.
@@ -41049,191 +41049,102 @@ var init_bashDefaults = __esm({
41049
41049
  "dir",
41050
41050
  "pwd",
41051
41051
  "cd",
41052
- "cd:*",
41053
41052
  // File reading commands
41054
41053
  "cat",
41055
- "cat:*",
41056
41054
  "head",
41057
- "head:*",
41058
41055
  "tail",
41059
- "tail:*",
41060
41056
  "less",
41061
41057
  "more",
41062
41058
  "view",
41063
41059
  // File information and metadata
41064
41060
  "file",
41065
- "file:*",
41066
41061
  "stat",
41067
- "stat:*",
41068
41062
  "wc",
41069
- "wc:*",
41070
41063
  "du",
41071
- "du:*",
41072
41064
  "df",
41073
- "df:*",
41074
41065
  "realpath",
41075
- "realpath:*",
41076
- // Search and find commands (read-only) - find restricted to safe operations
41066
+ // Search and find commands (read-only)
41067
+ // Note: bare 'find' allows all find variants; dangerous ones (find -exec) are blocked by deny list
41077
41068
  "find",
41078
- "find:-name:*",
41079
- "find:-type:*",
41080
- "find:-size:*",
41081
- "find:-mtime:*",
41082
- "find:-newer:*",
41083
- "find:-path:*",
41084
- "find:-iname:*",
41085
- "find:-maxdepth:*",
41086
- "find:-mindepth:*",
41087
- "find:-print",
41088
41069
  "grep",
41089
- "grep:*",
41090
41070
  "egrep",
41091
- "egrep:*",
41092
41071
  "fgrep",
41093
- "fgrep:*",
41094
41072
  "rg",
41095
- "rg:*",
41096
41073
  "ag",
41097
- "ag:*",
41098
41074
  "ack",
41099
- "ack:*",
41100
41075
  "which",
41101
- "which:*",
41102
41076
  "whereis",
41103
- "whereis:*",
41104
41077
  "locate",
41105
- "locate:*",
41106
41078
  "type",
41107
- "type:*",
41108
41079
  "command",
41109
- "command:*",
41110
41080
  // Tree and structure visualization
41111
41081
  "tree",
41112
- "tree:*",
41113
41082
  // Git read-only operations
41114
41083
  "git:status",
41115
- "git:status:*",
41116
41084
  "git:log",
41117
- "git:log:*",
41118
41085
  "git:diff",
41119
- "git:diff:*",
41120
41086
  "git:show",
41121
- "git:show:*",
41122
41087
  "git:branch",
41123
- "git:branch:*",
41124
41088
  "git:tag",
41125
- "git:tag:*",
41126
41089
  "git:describe",
41127
- "git:describe:*",
41128
41090
  "git:remote",
41129
- "git:remote:*",
41130
- "git:config:*",
41091
+ "git:config",
41131
41092
  "git:blame",
41132
- "git:blame:*",
41133
41093
  "git:shortlog",
41134
- "git:shortlog:*",
41135
41094
  "git:reflog",
41136
- "git:reflog:*",
41137
41095
  "git:ls-files",
41138
- "git:ls-files:*",
41139
41096
  "git:ls-tree",
41140
- "git:ls-tree:*",
41141
41097
  "git:ls-remote",
41142
- "git:ls-remote:*",
41143
41098
  "git:rev-parse",
41144
- "git:rev-parse:*",
41145
41099
  "git:rev-list",
41146
- "git:rev-list:*",
41147
41100
  "git:cat-file",
41148
- "git:cat-file:*",
41149
41101
  "git:diff-tree",
41150
- "git:diff-tree:*",
41151
41102
  "git:diff-files",
41152
- "git:diff-files:*",
41153
41103
  "git:diff-index",
41154
- "git:diff-index:*",
41155
41104
  "git:for-each-ref",
41156
- "git:for-each-ref:*",
41157
41105
  "git:merge-base",
41158
- "git:merge-base:*",
41159
41106
  "git:name-rev",
41160
- "git:name-rev:*",
41161
41107
  "git:count-objects",
41162
- "git:count-objects:*",
41163
41108
  "git:verify-commit",
41164
- "git:verify-commit:*",
41165
41109
  "git:verify-tag",
41166
- "git:verify-tag:*",
41167
41110
  "git:check-ignore",
41168
- "git:check-ignore:*",
41169
41111
  "git:check-attr",
41170
- "git:check-attr:*",
41171
41112
  "git:stash:list",
41172
41113
  "git:stash:show",
41173
- "git:stash:show:*",
41174
41114
  "git:worktree:list",
41175
- "git:worktree:list:*",
41176
41115
  "git:notes:list",
41177
41116
  "git:notes:show",
41178
- "git:notes:show:*",
41179
41117
  "git:--version",
41180
41118
  "git:help",
41181
- "git:help:*",
41182
41119
  // GitHub CLI (gh) read-only operations
41183
41120
  "gh:--version",
41184
41121
  "gh:help",
41185
- "gh:help:*",
41186
41122
  "gh:status",
41187
41123
  "gh:auth:status",
41188
- "gh:auth:status:*",
41189
41124
  "gh:issue:list",
41190
- "gh:issue:list:*",
41191
41125
  "gh:issue:view",
41192
- "gh:issue:view:*",
41193
41126
  "gh:issue:status",
41194
- "gh:issue:status:*",
41195
41127
  "gh:pr:list",
41196
- "gh:pr:list:*",
41197
41128
  "gh:pr:view",
41198
- "gh:pr:view:*",
41199
41129
  "gh:pr:status",
41200
- "gh:pr:status:*",
41201
41130
  "gh:pr:diff",
41202
- "gh:pr:diff:*",
41203
41131
  "gh:pr:checks",
41204
- "gh:pr:checks:*",
41205
41132
  "gh:repo:list",
41206
- "gh:repo:list:*",
41207
41133
  "gh:repo:view",
41208
- "gh:repo:view:*",
41209
41134
  "gh:release:list",
41210
- "gh:release:list:*",
41211
41135
  "gh:release:view",
41212
- "gh:release:view:*",
41213
41136
  "gh:run:list",
41214
- "gh:run:list:*",
41215
41137
  "gh:run:view",
41216
- "gh:run:view:*",
41217
41138
  "gh:workflow:list",
41218
- "gh:workflow:list:*",
41219
41139
  "gh:workflow:view",
41220
- "gh:workflow:view:*",
41221
41140
  "gh:gist:list",
41222
- "gh:gist:list:*",
41223
41141
  "gh:gist:view",
41224
- "gh:gist:view:*",
41225
41142
  "gh:search:issues",
41226
- "gh:search:issues:*",
41227
41143
  "gh:search:prs",
41228
- "gh:search:prs:*",
41229
41144
  "gh:search:repos",
41230
- "gh:search:repos:*",
41231
41145
  "gh:search:code",
41232
- "gh:search:code:*",
41233
41146
  "gh:search:commits",
41234
- "gh:search:commits:*",
41235
41147
  "gh:api",
41236
- "gh:api:*",
41237
41148
  // Package managers (information only)
41238
41149
  "npm:list",
41239
41150
  "npm:ls",
@@ -41294,7 +41205,6 @@ var init_bashDefaults = __esm({
41294
41205
  "sqlite3:--version",
41295
41206
  // System information
41296
41207
  "uname",
41297
- "uname:*",
41298
41208
  "hostname",
41299
41209
  "whoami",
41300
41210
  "id",
@@ -41305,23 +41215,17 @@ var init_bashDefaults = __esm({
41305
41215
  "w",
41306
41216
  "users",
41307
41217
  "sleep",
41308
- "sleep:*",
41309
41218
  // Environment and shell
41310
41219
  "env",
41311
41220
  "printenv",
41312
41221
  "echo",
41313
- "echo:*",
41314
41222
  "printf",
41315
- "printf:*",
41316
41223
  "export",
41317
- "export:*",
41318
41224
  "set",
41319
41225
  "unset",
41320
41226
  // Process information (read-only)
41321
41227
  "ps",
41322
- "ps:*",
41323
41228
  "pgrep",
41324
- "pgrep:*",
41325
41229
  "jobs",
41326
41230
  "top:-n:1",
41327
41231
  // Network information (read-only)
@@ -41336,39 +41240,24 @@ var init_bashDefaults = __esm({
41336
41240
  // Text processing and utilities (awk removed - too powerful)
41337
41241
  "sed:-n:*",
41338
41242
  "cut",
41339
- "cut:*",
41340
41243
  "sort",
41341
- "sort:*",
41342
41244
  "uniq",
41343
- "uniq:*",
41344
41245
  "tr",
41345
- "tr:*",
41346
41246
  "column",
41347
- "column:*",
41348
41247
  "paste",
41349
- "paste:*",
41350
41248
  "join",
41351
- "join:*",
41352
41249
  "comm",
41353
- "comm:*",
41354
41250
  "diff",
41355
- "diff:*",
41356
41251
  "cmp",
41357
- "cmp:*",
41358
41252
  "patch:--dry-run:*",
41359
41253
  // Hashing and encoding (read-only)
41360
41254
  "md5sum",
41361
- "md5sum:*",
41362
41255
  "sha1sum",
41363
- "sha1sum:*",
41364
41256
  "sha256sum",
41365
- "sha256sum:*",
41366
41257
  "base64",
41367
41258
  "base64:-d",
41368
41259
  "od",
41369
- "od:*",
41370
41260
  "hexdump",
41371
- "hexdump:*",
41372
41261
  // Archive and compression (list/view only)
41373
41262
  "tar:-tf:*",
41374
41263
  "tar:-tzf:*",
@@ -41378,15 +41267,11 @@ var init_bashDefaults = __esm({
41378
41267
  "gunzip:-l:*",
41379
41268
  // Help and documentation
41380
41269
  "man",
41381
- "man:*",
41382
41270
  "--help",
41383
41271
  "help",
41384
41272
  "info",
41385
- "info:*",
41386
41273
  "whatis",
41387
- "whatis:*",
41388
41274
  "apropos",
41389
- "apropos:*",
41390
41275
  // Make (dry run and info)
41391
41276
  "make:-n",
41392
41277
  "make:--dry-run",
@@ -41409,36 +41294,30 @@ var init_bashDefaults = __esm({
41409
41294
  "rm:-rf",
41410
41295
  "rm:-f:/",
41411
41296
  "rm:/",
41412
- "rm:-rf:*",
41413
41297
  "rmdir",
41414
41298
  "chmod:777",
41415
41299
  "chmod:-R:777",
41416
41300
  "chown",
41417
41301
  "chgrp",
41418
41302
  "dd",
41419
- "dd:*",
41420
41303
  "shred",
41421
- "shred:*",
41422
41304
  // Dangerous find operations that can execute arbitrary commands
41423
- "find:-exec:*",
41424
- "find:*:-exec:*",
41425
- "find:-execdir:*",
41426
- "find:*:-execdir:*",
41427
- "find:-ok:*",
41428
- "find:*:-ok:*",
41429
- "find:-okdir:*",
41430
- "find:*:-okdir:*",
41305
+ "find:-exec",
41306
+ "find:*:-exec",
41307
+ "find:-execdir",
41308
+ "find:*:-execdir",
41309
+ "find:-ok",
41310
+ "find:*:-ok",
41311
+ "find:-okdir",
41312
+ "find:*:-okdir",
41431
41313
  // Powerful scripting tools that can execute arbitrary commands
41432
41314
  "awk",
41433
- "awk:*",
41434
41315
  "perl",
41435
- "perl:*",
41436
41316
  "python:-c:*",
41437
41317
  "node:-e:*",
41438
41318
  // System administration and modification
41439
- "sudo:*",
41319
+ "sudo",
41440
41320
  "su",
41441
- "su:*",
41442
41321
  "passwd",
41443
41322
  "adduser",
41444
41323
  "useradd",
@@ -41476,11 +41355,11 @@ var init_bashDefaults = __esm({
41476
41355
  "composer:install",
41477
41356
  "composer:update",
41478
41357
  "composer:remove",
41479
- "apt:*",
41480
- "apt-get:*",
41481
- "yum:*",
41482
- "dnf:*",
41483
- "zypper:*",
41358
+ "apt",
41359
+ "apt-get",
41360
+ "yum",
41361
+ "dnf",
41362
+ "zypper",
41484
41363
  "brew:install",
41485
41364
  "brew:uninstall",
41486
41365
  "brew:upgrade",
@@ -41488,11 +41367,11 @@ var init_bashDefaults = __esm({
41488
41367
  "conda:remove",
41489
41368
  "conda:update",
41490
41369
  // Service and system control
41491
- "systemctl:*",
41492
- "service:*",
41493
- "chkconfig:*",
41494
- "initctl:*",
41495
- "upstart:*",
41370
+ "systemctl",
41371
+ "service",
41372
+ "chkconfig",
41373
+ "initctl",
41374
+ "upstart",
41496
41375
  // Network operations that could be dangerous
41497
41376
  "curl:-d:*",
41498
41377
  "curl:--data:*",
@@ -41501,32 +41380,21 @@ var init_bashDefaults = __esm({
41501
41380
  "wget:-O:/",
41502
41381
  "wget:--post-data:*",
41503
41382
  "ssh",
41504
- "ssh:*",
41505
41383
  "scp",
41506
- "scp:*",
41507
41384
  "sftp",
41508
- "sftp:*",
41509
- "rsync:*",
41385
+ "rsync",
41510
41386
  "nc",
41511
- "nc:*",
41512
41387
  "netcat",
41513
- "netcat:*",
41514
41388
  "telnet",
41515
- "telnet:*",
41516
41389
  "ftp",
41517
- "ftp:*",
41518
41390
  // Process control and termination
41519
41391
  "kill",
41520
- "kill:*",
41521
41392
  "killall",
41522
- "killall:*",
41523
41393
  "pkill",
41524
- "pkill:*",
41525
- "nohup:*",
41526
- "disown:*",
41394
+ "nohup",
41395
+ "disown",
41527
41396
  // System control and shutdown
41528
41397
  "shutdown",
41529
- "shutdown:*",
41530
41398
  "reboot",
41531
41399
  "halt",
41532
41400
  "poweroff",
@@ -41534,168 +41402,92 @@ var init_bashDefaults = __esm({
41534
41402
  "telinit",
41535
41403
  // Kernel and module operations
41536
41404
  "insmod",
41537
- "insmod:*",
41538
41405
  "rmmod",
41539
- "rmmod:*",
41540
41406
  "modprobe",
41541
- "modprobe:*",
41542
41407
  "sysctl:-w:*",
41543
41408
  // Dangerous git operations
41544
41409
  "git:push",
41545
- "git:push:*",
41546
41410
  "git:force",
41547
41411
  "git:reset",
41548
- "git:reset:*",
41549
41412
  "git:clean",
41550
- "git:clean:*",
41551
41413
  "git:rm",
41552
- "git:rm:*",
41553
41414
  "git:commit",
41554
- "git:commit:*",
41555
41415
  "git:merge",
41556
- "git:merge:*",
41557
41416
  "git:rebase",
41558
- "git:rebase:*",
41559
41417
  "git:cherry-pick",
41560
- "git:cherry-pick:*",
41561
41418
  "git:stash:drop",
41562
- "git:stash:drop:*",
41563
41419
  "git:stash:pop",
41564
- "git:stash:pop:*",
41565
41420
  "git:stash:push",
41566
- "git:stash:push:*",
41567
41421
  "git:stash:clear",
41568
41422
  "git:branch:-d",
41569
- "git:branch:-d:*",
41570
41423
  "git:branch:-D",
41571
- "git:branch:-D:*",
41572
41424
  "git:branch:--delete",
41573
- "git:branch:--delete:*",
41574
41425
  "git:tag:-d",
41575
- "git:tag:-d:*",
41576
41426
  "git:tag:--delete",
41577
- "git:tag:--delete:*",
41578
41427
  "git:remote:remove",
41579
- "git:remote:remove:*",
41580
41428
  "git:remote:rm",
41581
- "git:remote:rm:*",
41582
41429
  "git:checkout:--force",
41583
- "git:checkout:--force:*",
41584
41430
  "git:checkout:-f",
41585
- "git:checkout:-f:*",
41586
41431
  "git:submodule:deinit",
41587
- "git:submodule:deinit:*",
41588
41432
  "git:notes:add",
41589
- "git:notes:add:*",
41590
41433
  "git:notes:remove",
41591
- "git:notes:remove:*",
41592
41434
  "git:worktree:add",
41593
- "git:worktree:add:*",
41594
41435
  "git:worktree:remove",
41595
- "git:worktree:remove:*",
41596
41436
  // Dangerous GitHub CLI (gh) write operations
41597
41437
  "gh:issue:create",
41598
- "gh:issue:create:*",
41599
41438
  "gh:issue:close",
41600
- "gh:issue:close:*",
41601
41439
  "gh:issue:delete",
41602
- "gh:issue:delete:*",
41603
41440
  "gh:issue:edit",
41604
- "gh:issue:edit:*",
41605
41441
  "gh:issue:reopen",
41606
- "gh:issue:reopen:*",
41607
41442
  "gh:issue:comment",
41608
- "gh:issue:comment:*",
41609
41443
  "gh:pr:create",
41610
- "gh:pr:create:*",
41611
41444
  "gh:pr:close",
41612
- "gh:pr:close:*",
41613
41445
  "gh:pr:merge",
41614
- "gh:pr:merge:*",
41615
41446
  "gh:pr:edit",
41616
- "gh:pr:edit:*",
41617
41447
  "gh:pr:reopen",
41618
- "gh:pr:reopen:*",
41619
41448
  "gh:pr:review",
41620
- "gh:pr:review:*",
41621
41449
  "gh:pr:comment",
41622
- "gh:pr:comment:*",
41623
41450
  "gh:repo:create",
41624
- "gh:repo:create:*",
41625
41451
  "gh:repo:delete",
41626
- "gh:repo:delete:*",
41627
41452
  "gh:repo:fork",
41628
- "gh:repo:fork:*",
41629
41453
  "gh:repo:rename",
41630
- "gh:repo:rename:*",
41631
41454
  "gh:repo:archive",
41632
- "gh:repo:archive:*",
41633
41455
  "gh:repo:clone",
41634
- "gh:repo:clone:*",
41635
41456
  "gh:release:create",
41636
- "gh:release:create:*",
41637
41457
  "gh:release:delete",
41638
- "gh:release:delete:*",
41639
41458
  "gh:release:edit",
41640
- "gh:release:edit:*",
41641
41459
  "gh:run:cancel",
41642
- "gh:run:cancel:*",
41643
41460
  "gh:run:rerun",
41644
- "gh:run:rerun:*",
41645
41461
  "gh:workflow:run",
41646
- "gh:workflow:run:*",
41647
41462
  "gh:workflow:enable",
41648
- "gh:workflow:enable:*",
41649
41463
  "gh:workflow:disable",
41650
- "gh:workflow:disable:*",
41651
41464
  "gh:gist:create",
41652
- "gh:gist:create:*",
41653
41465
  "gh:gist:delete",
41654
- "gh:gist:delete:*",
41655
41466
  "gh:gist:edit",
41656
- "gh:gist:edit:*",
41657
41467
  "gh:secret:set",
41658
- "gh:secret:set:*",
41659
41468
  "gh:secret:delete",
41660
- "gh:secret:delete:*",
41661
41469
  "gh:variable:set",
41662
- "gh:variable:set:*",
41663
41470
  "gh:variable:delete",
41664
- "gh:variable:delete:*",
41665
41471
  "gh:label:create",
41666
- "gh:label:create:*",
41667
41472
  "gh:label:delete",
41668
- "gh:label:delete:*",
41669
41473
  "gh:ssh-key:add",
41670
- "gh:ssh-key:add:*",
41671
41474
  "gh:ssh-key:delete",
41672
- "gh:ssh-key:delete:*",
41673
41475
  // File system mounting and partitioning
41674
41476
  "mount",
41675
- "mount:*",
41676
41477
  "umount",
41677
- "umount:*",
41678
41478
  "fdisk",
41679
- "fdisk:*",
41680
41479
  "parted",
41681
- "parted:*",
41682
41480
  "mkfs",
41683
- "mkfs:*",
41684
41481
  "fsck",
41685
- "fsck:*",
41686
41482
  // Cron and scheduling
41687
41483
  "crontab",
41688
- "crontab:*",
41689
41484
  "at",
41690
- "at:*",
41691
41485
  "batch",
41692
- "batch:*",
41693
41486
  // Compression with potential overwrite
41694
41487
  "tar:-xf:*",
41695
41488
  "unzip",
41696
- "unzip:*",
41697
- "gzip:*",
41698
- "gunzip:*",
41489
+ "gzip",
41490
+ "gunzip",
41699
41491
  // Build and compilation that might modify files
41700
41492
  "make",
41701
41493
  "make:install",
@@ -41708,11 +41500,8 @@ var init_bashDefaults = __esm({
41708
41500
  "gradle:build",
41709
41501
  // Docker operations that could modify state
41710
41502
  "docker:run",
41711
- "docker:run:*",
41712
41503
  "docker:exec",
41713
- "docker:exec:*",
41714
41504
  "docker:build",
41715
- "docker:build:*",
41716
41505
  "docker:pull",
41717
41506
  "docker:push",
41718
41507
  "docker:rm",
@@ -41726,22 +41515,15 @@ var init_bashDefaults = __esm({
41726
41515
  "mongo:--eval:*",
41727
41516
  // Text editors that could modify files
41728
41517
  "vi",
41729
- "vi:*",
41730
41518
  "vim",
41731
- "vim:*",
41732
41519
  "nano",
41733
- "nano:*",
41734
41520
  "emacs",
41735
- "emacs:*",
41736
41521
  "sed:-i:*",
41737
41522
  "perl:-i:*",
41738
41523
  // Potentially dangerous utilities
41739
41524
  "eval",
41740
- "eval:*",
41741
41525
  "exec",
41742
- "exec:*",
41743
41526
  "source",
41744
- "source:*",
41745
41527
  "bash:-c:*",
41746
41528
  "sh:-c:*",
41747
41529
  "zsh:-c:*"
@@ -42020,9 +41802,19 @@ var init_bashPermissions = __esm({
42020
41802
  BashPermissionChecker = class {
42021
41803
  /**
42022
41804
  * Create a permission checker
41805
+ *
41806
+ * Priority order (highest to lowest):
41807
+ * 1. Custom deny — always blocks (user explicitly blocked it)
41808
+ * 2. Custom allow — overrides default deny (user explicitly allowed it)
41809
+ * 3. Default deny — blocks by default
41810
+ * 4. Allow list — allows recognized safe commands
41811
+ *
41812
+ * This means `--bash-allow "git:push"` overrides the default deny for git:push
41813
+ * without requiring `--no-default-bash-deny`.
41814
+ *
42023
41815
  * @param {Object} config - Configuration options
42024
- * @param {string[]} [config.allow] - Additional allow patterns
42025
- * @param {string[]} [config.deny] - Additional deny patterns
41816
+ * @param {string[]} [config.allow] - Additional allow patterns (override default deny)
41817
+ * @param {string[]} [config.deny] - Additional deny patterns (always win)
42026
41818
  * @param {boolean} [config.disableDefaultAllow] - Disable default allow list
42027
41819
  * @param {boolean} [config.disableDefaultDeny] - Disable default deny list
42028
41820
  * @param {boolean} [config.debug] - Enable debug logging
@@ -42031,40 +41823,22 @@ var init_bashPermissions = __esm({
42031
41823
  constructor(config = {}) {
42032
41824
  this.debug = config.debug || false;
42033
41825
  this.tracer = config.tracer || null;
42034
- this.allowPatterns = [];
42035
- if (!config.disableDefaultAllow) {
42036
- this.allowPatterns.push(...DEFAULT_ALLOW_PATTERNS);
42037
- if (this.debug) {
42038
- console.log(`[BashPermissions] Added ${DEFAULT_ALLOW_PATTERNS.length} default allow patterns`);
42039
- }
42040
- }
42041
- if (config.allow && Array.isArray(config.allow)) {
42042
- this.allowPatterns.push(...config.allow);
42043
- if (this.debug) {
42044
- console.log(`[BashPermissions] Added ${config.allow.length} custom allow patterns:`, config.allow);
42045
- }
42046
- }
42047
- this.denyPatterns = [];
42048
- if (!config.disableDefaultDeny) {
42049
- this.denyPatterns.push(...DEFAULT_DENY_PATTERNS);
42050
- if (this.debug) {
42051
- console.log(`[BashPermissions] Added ${DEFAULT_DENY_PATTERNS.length} default deny patterns`);
42052
- }
42053
- }
42054
- if (config.deny && Array.isArray(config.deny)) {
42055
- this.denyPatterns.push(...config.deny);
42056
- if (this.debug) {
42057
- console.log(`[BashPermissions] Added ${config.deny.length} custom deny patterns:`, config.deny);
42058
- }
42059
- }
41826
+ this.defaultAllowPatterns = config.disableDefaultAllow ? [] : [...DEFAULT_ALLOW_PATTERNS];
41827
+ this.customAllowPatterns = config.allow && Array.isArray(config.allow) ? [...config.allow] : [];
41828
+ this.allowPatterns = [...this.defaultAllowPatterns, ...this.customAllowPatterns];
41829
+ this.defaultDenyPatterns = config.disableDefaultDeny ? [] : [...DEFAULT_DENY_PATTERNS];
41830
+ this.customDenyPatterns = config.deny && Array.isArray(config.deny) ? [...config.deny] : [];
41831
+ this.denyPatterns = [...this.defaultDenyPatterns, ...this.customDenyPatterns];
42060
41832
  if (this.debug) {
41833
+ console.log(`[BashPermissions] Default allow: ${this.defaultAllowPatterns.length}, Custom allow: ${this.customAllowPatterns.length}`);
41834
+ console.log(`[BashPermissions] Default deny: ${this.defaultDenyPatterns.length}, Custom deny: ${this.customDenyPatterns.length}`);
42061
41835
  console.log(`[BashPermissions] Total patterns - Allow: ${this.allowPatterns.length}, Deny: ${this.denyPatterns.length}`);
42062
41836
  }
42063
41837
  this.recordBashEvent("permissions.initialized", {
42064
41838
  allowPatternCount: this.allowPatterns.length,
42065
41839
  denyPatternCount: this.denyPatterns.length,
42066
- hasCustomAllowPatterns: !!(config.allow && config.allow.length > 0),
42067
- hasCustomDenyPatterns: !!(config.deny && config.deny.length > 0),
41840
+ hasCustomAllowPatterns: this.customAllowPatterns.length > 0,
41841
+ hasCustomDenyPatterns: this.customDenyPatterns.length > 0,
42068
41842
  disableDefaultAllow: !!config.disableDefaultAllow,
42069
41843
  disableDefaultDeny: !!config.disableDefaultDeny
42070
41844
  });
@@ -42134,8 +41908,11 @@ var init_bashPermissions = __esm({
42134
41908
  console.log(`[BashPermissions] Checking simple command: "${command}"`);
42135
41909
  console.log(`[BashPermissions] Parsed: ${parsed.command} with args: [${parsed.args.join(", ")}]`);
42136
41910
  }
42137
- if (matchesAnyPattern(parsed, this.denyPatterns)) {
42138
- const matchedPatterns = this.denyPatterns.filter((pattern) => matchesPattern(parsed, pattern));
41911
+ if (matchesAnyPattern(parsed, this.customDenyPatterns)) {
41912
+ const matchedPatterns = this.customDenyPatterns.filter((pattern) => matchesPattern(parsed, pattern));
41913
+ if (this.debug) {
41914
+ console.log(`[BashPermissions] DENIED - matches custom deny pattern: ${matchedPatterns[0]}`);
41915
+ }
42139
41916
  const result2 = {
42140
41917
  allowed: false,
42141
41918
  reason: `Command matches deny pattern: ${matchedPatterns[0]}`,
@@ -42148,7 +41925,31 @@ var init_bashPermissions = __esm({
42148
41925
  parsedCommand: parsed.command,
42149
41926
  reason: "matches_deny_pattern",
42150
41927
  matchedPattern: matchedPatterns[0],
42151
- isComplex: false
41928
+ isComplex: false,
41929
+ isCustomDeny: true
41930
+ });
41931
+ return result2;
41932
+ }
41933
+ const matchesCustomAllow = matchesAnyPattern(parsed, this.customAllowPatterns);
41934
+ if (!matchesCustomAllow && matchesAnyPattern(parsed, this.defaultDenyPatterns)) {
41935
+ const matchedPatterns = this.defaultDenyPatterns.filter((pattern) => matchesPattern(parsed, pattern));
41936
+ if (this.debug) {
41937
+ console.log(`[BashPermissions] DENIED - matches default deny pattern: ${matchedPatterns[0]}`);
41938
+ }
41939
+ const result2 = {
41940
+ allowed: false,
41941
+ reason: `Command matches deny pattern: ${matchedPatterns[0]}`,
41942
+ command,
41943
+ parsed,
41944
+ matchedPatterns
41945
+ };
41946
+ this.recordBashEvent("permission.denied", {
41947
+ command,
41948
+ parsedCommand: parsed.command,
41949
+ reason: "matches_deny_pattern",
41950
+ matchedPattern: matchedPatterns[0],
41951
+ isComplex: false,
41952
+ isCustomDeny: false
42152
41953
  });
42153
41954
  return result2;
42154
41955
  }
@@ -42173,15 +41974,21 @@ var init_bashPermissions = __esm({
42173
41974
  allowed: true,
42174
41975
  command,
42175
41976
  parsed,
42176
- isComplex: false
41977
+ isComplex: false,
41978
+ overriddenDeny: matchesCustomAllow && matchesAnyPattern(parsed, this.defaultDenyPatterns)
42177
41979
  };
42178
41980
  if (this.debug) {
42179
- console.log(`[BashPermissions] ALLOWED - command passed all checks`);
41981
+ if (result.overriddenDeny) {
41982
+ console.log(`[BashPermissions] ALLOWED - custom allow overrides default deny`);
41983
+ } else {
41984
+ console.log(`[BashPermissions] ALLOWED - command passed all checks`);
41985
+ }
42180
41986
  }
42181
41987
  this.recordBashEvent("permission.allowed", {
42182
41988
  command,
42183
41989
  parsedCommand: parsed.command,
42184
- isComplex: false
41990
+ isComplex: false,
41991
+ overriddenDeny: result.overriddenDeny || false
42185
41992
  });
42186
41993
  return result;
42187
41994
  }
@@ -42350,9 +42157,19 @@ var init_bashPermissions = __esm({
42350
42157
  deniedReason = parsed.error || "Component contains nested complex constructs";
42351
42158
  break;
42352
42159
  }
42353
- if (matchesAnyPattern(parsed, this.denyPatterns)) {
42160
+ if (matchesAnyPattern(parsed, this.customDenyPatterns)) {
42354
42161
  if (this.debug) {
42355
- console.log(`[BashPermissions] Component "${component}" matches deny pattern`);
42162
+ console.log(`[BashPermissions] Component "${component}" matches custom deny pattern`);
42163
+ }
42164
+ allAllowed = false;
42165
+ deniedComponent = component;
42166
+ deniedReason = "Component matches deny pattern";
42167
+ break;
42168
+ }
42169
+ const componentMatchesCustomAllow = matchesAnyPattern(parsed, this.customAllowPatterns);
42170
+ if (!componentMatchesCustomAllow && matchesAnyPattern(parsed, this.defaultDenyPatterns)) {
42171
+ if (this.debug) {
42172
+ console.log(`[BashPermissions] Component "${component}" matches default deny pattern`);
42356
42173
  }
42357
42174
  allAllowed = false;
42358
42175
  deniedComponent = component;
@@ -42432,6 +42249,10 @@ var init_bashPermissions = __esm({
42432
42249
  return {
42433
42250
  allowPatterns: this.allowPatterns.length,
42434
42251
  denyPatterns: this.denyPatterns.length,
42252
+ customAllowPatterns: this.customAllowPatterns.length,
42253
+ customDenyPatterns: this.customDenyPatterns.length,
42254
+ defaultAllowPatterns: this.defaultAllowPatterns.length,
42255
+ defaultDenyPatterns: this.defaultDenyPatterns.length,
42435
42256
  totalPatterns: this.allowPatterns.length + this.denyPatterns.length
42436
42257
  };
42437
42258
  }
@@ -42814,8 +42635,8 @@ Common reasons:
42814
42635
  2. The command is not in the allow list (not a recognized safe command)
42815
42636
 
42816
42637
  If you believe this command should be allowed, you can:
42817
- - Use the --bash-allow option to add specific patterns
42818
- - Use the --no-default-bash-deny flag to remove default restrictions (not recommended)
42638
+ - Use the --bash-allow option to add specific patterns (overrides default deny list)
42639
+ Example: --bash-allow "git:push" allows git push while keeping all other deny rules
42819
42640
 
42820
42641
  For code exploration, try these safe alternatives:
42821
42642
  - ls, cat, head, tail for file operations
@@ -109753,10 +109574,10 @@ var init_FallbackManager = __esm({
109753
109574
  // Use custom provider list
109754
109575
  };
109755
109576
  DEFAULT_MODELS = {
109756
- anthropic: "claude-sonnet-4-5-20250929",
109757
- openai: "gpt-4o",
109758
- google: "gemini-2.0-flash-exp",
109759
- bedrock: "anthropic.claude-sonnet-4-20250514-v1:0"
109577
+ anthropic: "claude-sonnet-4-6",
109578
+ openai: "gpt-5.2",
109579
+ google: "gemini-2.5-flash",
109580
+ bedrock: "anthropic.claude-sonnet-4-6"
109760
109581
  };
109761
109582
  FallbackManager = class {
109762
109583
  /**
@@ -112275,7 +112096,7 @@ var init_ProbeAgent = __esm({
112275
112096
  }
112276
112097
  this.clientApiProvider = "claude-code";
112277
112098
  this.provider = null;
112278
- this.model = this.clientApiModel || "claude-3-5-sonnet-20241022";
112099
+ this.model = this.clientApiModel || "claude-sonnet-4-6";
112279
112100
  this.apiType = "claude-code";
112280
112101
  } else if (codexAvailable) {
112281
112102
  if (this.debug) {
@@ -112284,7 +112105,7 @@ var init_ProbeAgent = __esm({
112284
112105
  }
112285
112106
  this.clientApiProvider = "codex";
112286
112107
  this.provider = null;
112287
- this.model = this.clientApiModel || "gpt-4o";
112108
+ this.model = this.clientApiModel || "gpt-5.2";
112288
112109
  this.apiType = "codex";
112289
112110
  } else {
112290
112111
  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");
@@ -112522,7 +112343,7 @@ var init_ProbeAgent = __esm({
112522
112343
  }
112523
112344
  if (this.clientApiProvider === "claude-code" || process.env.USE_CLAUDE_CODE === "true") {
112524
112345
  this.provider = null;
112525
- this.model = modelName || "claude-3-5-sonnet-20241022";
112346
+ this.model = modelName || "claude-sonnet-4-6";
112526
112347
  this.apiType = "claude-code";
112527
112348
  if (this.debug) {
112528
112349
  console.log("[DEBUG] Claude Code engine selected - will use built-in access if available");
@@ -112889,7 +112710,7 @@ var init_ProbeAgent = __esm({
112889
112710
  apiKey,
112890
112711
  ...apiUrl && { baseURL: apiUrl }
112891
112712
  });
112892
- this.model = modelName || "claude-sonnet-4-5-20250929";
112713
+ this.model = modelName || "claude-sonnet-4-6";
112893
112714
  this.apiType = "anthropic";
112894
112715
  if (this.debug) {
112895
112716
  console.log(`Using Anthropic API with model: ${this.model}${apiUrl ? ` (URL: ${apiUrl})` : ""}`);
@@ -112904,7 +112725,7 @@ var init_ProbeAgent = __esm({
112904
112725
  apiKey,
112905
112726
  ...apiUrl && { baseURL: apiUrl }
112906
112727
  });
112907
- this.model = modelName || "gpt-5-thinking";
112728
+ this.model = modelName || "gpt-5.2";
112908
112729
  this.apiType = "openai";
112909
112730
  if (this.debug) {
112910
112731
  console.log(`Using OpenAI API with model: ${this.model}${apiUrl ? ` (URL: ${apiUrl})` : ""}`);
@@ -113008,7 +112829,7 @@ var init_ProbeAgent = __esm({
113008
112829
  config.baseURL = baseURL;
113009
112830
  }
113010
112831
  this.provider = createAmazonBedrock(config);
113011
- this.model = modelName || "anthropic.claude-sonnet-4-20250514-v1:0";
112832
+ this.model = modelName || "anthropic.claude-sonnet-4-6";
113012
112833
  this.apiType = "bedrock";
113013
112834
  if (this.debug) {
113014
112835
  const authMethod = apiKey ? "API Key" : "AWS Credentials";
@@ -113067,7 +112888,7 @@ var init_ProbeAgent = __esm({
113067
112888
  allowedTools: this.allowedTools,
113068
112889
  // Pass tool filtering configuration
113069
112890
  model: this.model
113070
- // Pass model name (e.g., gpt-4o, o3, etc.)
112891
+ // Pass model name (e.g., gpt-5.2, o3, etc.)
113071
112892
  });
113072
112893
  if (this.debug) {
113073
112894
  console.log("[DEBUG] Using Codex CLI engine with Probe tools");
@@ -114322,9 +114143,7 @@ You are working with a workspace. Available paths: ${workspaceDesc}
114322
114143
  let maxResponseTokens = this.maxResponseTokens;
114323
114144
  if (!maxResponseTokens) {
114324
114145
  maxResponseTokens = 4e3;
114325
- if (this.model && this.model.includes("opus") || this.model && this.model.includes("sonnet") || this.model && this.model.startsWith("gpt-4-")) {
114326
- maxResponseTokens = 8192;
114327
- } else if (this.model && this.model.startsWith("gpt-4o")) {
114146
+ 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")) {
114328
114147
  maxResponseTokens = 8192;
114329
114148
  } else if (this.model && this.model.startsWith("gemini")) {
114330
114149
  maxResponseTokens = 32e3;