@gendigital/sage-opencode 0.12.0 → 0.14.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 (31) hide show
  1. package/dist/mcp-server.cjs +411 -88
  2. package/dist/mcp-server.cjs.map +4 -4
  3. package/dist/tool-handler.d.ts.map +1 -1
  4. package/dist/tool-handler.js +5 -3
  5. package/dist/tool-handler.js.map +1 -1
  6. package/package.json +3 -3
  7. package/resources/threats/_macros.yaml +193 -0
  8. package/resources/threats/agent-layer.yaml +19 -1
  9. package/resources/threats/commands.yaml +165 -31
  10. package/resources/threats/credentials.yaml +24 -4
  11. package/resources/threats/dummy.yaml +30 -0
  12. package/resources/threats/files.yaml +38 -0
  13. package/resources/threats/mac-commands.yaml +118 -27
  14. package/resources/threats/mac-credentials.yaml +34 -8
  15. package/resources/threats/mac-files.yaml +20 -0
  16. package/resources/threats/mac-obfuscation.yaml +28 -6
  17. package/resources/threats/mac-persistence.yaml +30 -4
  18. package/resources/threats/mac-supply-chain.yaml +12 -3
  19. package/resources/threats/mitre.yaml +325 -62
  20. package/resources/threats/obfuscation.yaml +33 -8
  21. package/resources/threats/persistence.yaml +40 -5
  22. package/resources/threats/prompt-injection.yaml +58 -0
  23. package/resources/threats/self-defense.yaml +15 -2
  24. package/resources/threats/supply_chain.yaml +6 -1
  25. package/resources/threats/urls.yaml +10 -0
  26. package/resources/threats/win-commands.yaml +294 -60
  27. package/resources/threats/win-credentials.yaml +68 -9
  28. package/resources/threats/win-files.yaml +20 -0
  29. package/resources/threats/win-obfuscation.yaml +56 -8
  30. package/resources/threats/win-persistence.yaml +45 -7
  31. package/resources/threats/win-supply-chain.yaml +5 -1
@@ -4,10 +4,15 @@
4
4
 
5
5
  # Keychain password extraction (find-generic-password)
6
6
  - id: "CLT-MAC-CRED-001"
7
+ version: 1
8
+ detection_name: "CMD:SageMacOSCredential-A [Heur]"
7
9
  category: secrets
8
10
  severity: critical
9
11
  confidence: 0.95
10
- pattern: "\\bsecurity\\b.*\\bfind-generic-password\\b.*-w"
12
+ # {{CMD_POS}} + {{NOT_FILENAME}} on `security`, same shape as CLT-CMD-009.
13
+ # The inner `\bfind-generic-password\b` is left as bare -- only reachable
14
+ # once `security` has already matched at command position.
15
+ pattern: "{{CMD_POS}}security{{NOT_FILENAME}}.*\\bfind-generic-password\\b.*-w"
11
16
  match_on: command
12
17
  title: "Keychain password extraction via security find-generic-password"
13
18
  expires_at: null
@@ -15,10 +20,13 @@
15
20
 
16
21
  # Keychain internet password extraction
17
22
  - id: "CLT-MAC-CRED-002"
23
+ version: 1
24
+ detection_name: "CMD:SageMacOSCredential-B [Heur]"
18
25
  category: secrets
19
26
  severity: critical
20
27
  confidence: 0.95
21
- pattern: "\\bsecurity\\b.*\\bfind-internet-password\\b.*-w"
28
+ # {{CMD_POS}} + {{NOT_FILENAME}} on `security`, same shape as CLT-CMD-009.
29
+ pattern: "{{CMD_POS}}security{{NOT_FILENAME}}.*\\bfind-internet-password\\b.*-w"
22
30
  match_on: command
23
31
  title: "Keychain internet password extraction via security find-internet-password"
24
32
  expires_at: null
@@ -26,10 +34,13 @@
26
34
 
27
35
  # Keychain dump
28
36
  - id: "CLT-MAC-CRED-003"
37
+ version: 1
38
+ detection_name: "CMD:SageMacOSCredential-C [Heur]"
29
39
  category: secrets
30
40
  severity: critical
31
41
  confidence: 0.95
32
- pattern: "\\bsecurity\\b.*\\bdump-keychain\\b"
42
+ # {{CMD_POS}} + {{NOT_FILENAME}} on `security`, same shape as CLT-CMD-009.
43
+ pattern: "{{CMD_POS}}security{{NOT_FILENAME}}.*\\bdump-keychain\\b"
33
44
  match_on: command
34
45
  title: "Full keychain dump via security dump-keychain"
35
46
  expires_at: null
@@ -37,10 +48,13 @@
37
48
 
38
49
  # Keychain unlock with plaintext password
39
50
  - id: "CLT-MAC-CRED-004"
51
+ version: 1
52
+ detection_name: "CMD:SageMacOSCredential-D [Heur]"
40
53
  category: secrets
41
54
  severity: critical
42
55
  confidence: 0.90
43
- pattern: "\\bsecurity\\b.*\\bunlock-keychain\\b.*-p"
56
+ # {{CMD_POS}} + {{NOT_FILENAME}} on `security`, same shape as CLT-CMD-009.
57
+ pattern: "{{CMD_POS}}security{{NOT_FILENAME}}.*\\bunlock-keychain\\b.*-p"
44
58
  match_on: command
45
59
  title: "Keychain unlock with plaintext password"
46
60
  expires_at: null
@@ -48,10 +62,13 @@
48
62
 
49
63
  # Keychain export
50
64
  - id: "CLT-MAC-CRED-005"
65
+ version: 1
66
+ detection_name: "CMD:SageMacOSCredential-E [Heur]"
51
67
  category: secrets
52
68
  severity: warning
53
69
  confidence: 0.60
54
- pattern: "\\bsecurity\\b.*\\bexport\\b.*-k"
70
+ # {{CMD_POS}} + {{NOT_FILENAME}} on `security`, same shape as CLT-CMD-009.
71
+ pattern: "{{CMD_POS}}security{{NOT_FILENAME}}.*\\bexport\\b.*-k"
55
72
  match_on: command
56
73
  title: "Keychain item export via security export"
57
74
  expires_at: null
@@ -59,10 +76,13 @@
59
76
 
60
77
  # Keychain deletion
61
78
  - id: "CLT-MAC-CRED-006"
79
+ version: 1
80
+ detection_name: "CMD:SageMacOSCredential-F [Heur]"
62
81
  category: secrets
63
82
  severity: critical
64
83
  confidence: 0.90
65
- pattern: "\\bsecurity\\b.*\\bdelete-keychain\\b"
84
+ # {{CMD_POS}} + {{NOT_FILENAME}} on `security`, same shape as CLT-CMD-009.
85
+ pattern: "{{CMD_POS}}security{{NOT_FILENAME}}.*\\bdelete-keychain\\b"
66
86
  match_on: command
67
87
  title: "Keychain deletion via security delete-keychain"
68
88
  expires_at: null
@@ -70,10 +90,13 @@
70
90
 
71
91
  # Directory Services auth data read
72
92
  - id: "CLT-MAC-CRED-007"
93
+ version: 1
94
+ detection_name: "CMD:SageMacOSCredential-G [Heur]"
73
95
  category: secrets
74
96
  severity: warning
75
97
  confidence: 0.60
76
- pattern: "\\bdscl\\b.*-read.*(AuthenticationAuthority|Password|ShadowHash)"
98
+ # {{CMD_POS}} + {{NOT_FILENAME}}, same shape as CLT-CMD-009.
99
+ pattern: "{{CMD_POS}}dscl{{NOT_FILENAME}}.*-read.*(AuthenticationAuthority|Password|ShadowHash)"
77
100
  match_on: command
78
101
  title: "Read user authentication data via dscl"
79
102
  expires_at: null
@@ -81,10 +104,13 @@
81
104
 
82
105
  # Direct Keychain SQLite access
83
106
  - id: "CLT-MAC-CRED-008"
107
+ version: 1
108
+ detection_name: "CMD:SageMacOSCredential-H [Heur]"
84
109
  category: secrets
85
110
  severity: critical
86
111
  confidence: 0.90
87
- pattern: "\\bsqlite3\\b.*(/Library/Keychains/|login\\.keychain)"
112
+ # {{CMD_POS}} + {{NOT_FILENAME}}, same shape as CLT-CMD-009.
113
+ pattern: "{{CMD_POS}}sqlite3{{NOT_FILENAME}}.*(/Library/Keychains/|login\\.keychain)"
88
114
  match_on: command
89
115
  title: "Direct Keychain database access via sqlite3"
90
116
  expires_at: null
@@ -5,6 +5,8 @@
5
5
 
6
6
  # LaunchAgent/LaunchDaemon plist (migrated from files.yaml CLT-FILE-005)
7
7
  - id: "CLT-MAC-FILE-001"
8
+ version: 1
9
+ detection_name: "FN:SageMacOSFile-A [Heur]"
8
10
  category: tool
9
11
  severity: warning
10
12
  confidence: 0.90
@@ -16,6 +18,8 @@
16
18
 
17
19
  # TCC privacy permissions database
18
20
  - id: "CLT-MAC-FILE-002"
21
+ version: 1
22
+ detection_name: "FN:SageMacOSFile-B [Heur]"
19
23
  category: secrets
20
24
  severity: critical
21
25
  confidence: 0.95
@@ -27,6 +31,8 @@
27
31
 
28
32
  # Authorization database
29
33
  - id: "CLT-MAC-FILE-003"
34
+ version: 1
35
+ detection_name: "FN:SageMacOSFile-C [Heur]"
30
36
  category: secrets
31
37
  severity: critical
32
38
  confidence: 0.95
@@ -38,6 +44,8 @@
38
44
 
39
45
  # Kernel extensions
40
46
  - id: "CLT-MAC-FILE-004"
47
+ version: 1
48
+ detection_name: "FN:SageMacOSFile-D [Heur]"
41
49
  category: tool
42
50
  severity: critical
43
51
  confidence: 0.90
@@ -49,6 +57,8 @@
49
57
 
50
58
  # Security Agent Plugins
51
59
  - id: "CLT-MAC-FILE-005"
60
+ version: 1
61
+ detection_name: "FN:SageMacOSFile-E [Heur]"
52
62
  category: tool
53
63
  severity: critical
54
64
  confidence: 0.90
@@ -60,6 +70,8 @@
60
70
 
61
71
  # Periodic scripts directory
62
72
  - id: "CLT-MAC-FILE-006"
73
+ version: 1
74
+ detection_name: "FN:SageMacOSFile-F [Heur]"
63
75
  category: tool
64
76
  severity: warning
65
77
  confidence: 0.60
@@ -71,6 +83,8 @@
71
83
 
72
84
  # Emond rules directory
73
85
  - id: "CLT-MAC-FILE-007"
86
+ version: 1
87
+ detection_name: "FN:SageMacOSFile-G [Heur]"
74
88
  category: tool
75
89
  severity: critical
76
90
  confidence: 0.90
@@ -82,6 +96,8 @@
82
96
 
83
97
  # Safari credential/cookie stores
84
98
  - id: "CLT-MAC-FILE-008"
99
+ version: 1
100
+ detection_name: "FN:SageMacOSFile-H [Heur]"
85
101
  category: secrets
86
102
  severity: critical
87
103
  confidence: 0.90
@@ -93,6 +109,8 @@
93
109
 
94
110
  # Managed Preferences (MDM profiles)
95
111
  - id: "CLT-MAC-FILE-009"
112
+ version: 1
113
+ detection_name: "FN:SageMacOSFile-I [Heur]"
96
114
  category: tool
97
115
  severity: warning
98
116
  confidence: 0.60
@@ -104,6 +122,8 @@
104
122
 
105
123
  # Keychain files
106
124
  - id: "CLT-MAC-FILE-010"
125
+ version: 1
126
+ detection_name: "FN:SageMacOSFile-J [Heur]"
107
127
  category: secrets
108
128
  severity: critical
109
129
  confidence: 0.90
@@ -4,10 +4,13 @@
4
4
 
5
5
  # osascript 'do shell script' wrapping (shell via AppleScript)
6
6
  - id: "CLT-MAC-OBFUS-001"
7
+ version: 1
8
+ detection_name: "CMD:SageMacOSObfuscation-A [Heur]"
7
9
  category: tool
8
10
  severity: critical
9
11
  confidence: 0.90
10
- pattern: "\\bosascript\\b.*do shell script"
12
+ # {{CMD_POS}} + {{NOT_FILENAME}}, same shape as CLT-CMD-009.
13
+ pattern: "{{CMD_POS}}osascript{{NOT_FILENAME}}.*do shell script"
11
14
  case_insensitive: true
12
15
  match_on: command
13
16
  title: "Shell command obfuscated via AppleScript do shell script"
@@ -16,10 +19,13 @@
16
19
 
17
20
  # JXA (JavaScript for Automation) execution
18
21
  - id: "CLT-MAC-OBFUS-002"
22
+ version: 1
23
+ detection_name: "CMD:SageMacOSObfuscation-B [Heur]"
19
24
  category: tool
20
25
  severity: critical
21
26
  confidence: 0.90
22
- pattern: "\\bosascript\\b.*-l\\s+JavaScript.*-e"
27
+ # {{CMD_POS}} + {{NOT_FILENAME}}, same shape as CLT-CMD-009.
28
+ pattern: "{{CMD_POS}}osascript{{NOT_FILENAME}}.*-l\\s+JavaScript.*-e"
23
29
  case_insensitive: true
24
30
  match_on: command
25
31
  title: "JXA inline execution (JavaScript for Automation obfuscation)"
@@ -28,10 +34,15 @@
28
34
 
29
35
  # Base64 decode piped to osascript
30
36
  - id: "CLT-MAC-OBFUS-003"
37
+ version: 1
38
+ detection_name: "CMD:SageMacOSObfuscation-C [Heur]"
31
39
  category: tool
32
40
  severity: critical
33
41
  confidence: 0.95
34
- pattern: "base64\\s+(-d|-D|--decode).*\\|.*osascript"
42
+ # {{CMD_POS}} + {{NOT_FILENAME}} on `base64`, same shape as CLT-CMD-009.
43
+ # Had no boundary at all. Trailing {{NOT_FILENAME}} on `osascript` too --
44
+ # without it, a longer identifier like "osascriptable-tool" still matches.
45
+ pattern: "{{CMD_POS}}base64{{NOT_FILENAME}}\\s+(-d|-D|--decode).*\\|.*osascript{{NOT_FILENAME}}"
35
46
  match_on: command
36
47
  title: "Base64 decode piped to osascript (encoded payload execution)"
37
48
  expires_at: null
@@ -39,6 +50,8 @@
39
50
 
40
51
  # DYLD_INSERT_LIBRARIES injection
41
52
  - id: "CLT-MAC-OBFUS-004"
53
+ version: 1
54
+ detection_name: "CMD:SageMacOSObfuscation-D [Heur]"
42
55
  category: tool
43
56
  severity: critical
44
57
  confidence: 0.90
@@ -50,10 +63,13 @@
50
63
 
51
64
  # Quarantine attribute removal (evasion)
52
65
  - id: "CLT-MAC-OBFUS-005"
66
+ version: 1
67
+ detection_name: "CMD:SageMacOSObfuscation-E [Heur]"
53
68
  category: tool
54
69
  severity: warning
55
70
  confidence: 0.60
56
- pattern: "\\bxattr\\b.*(-d|-c).*com\\.apple\\.quarantine"
71
+ # {{CMD_POS}} + {{NOT_FILENAME}}, same shape as CLT-CMD-009.
72
+ pattern: "{{CMD_POS}}xattr{{NOT_FILENAME}}.*(-d|-c).*com\\.apple\\.quarantine"
57
73
  match_on: command
58
74
  title: "Quarantine attribute removal (Gatekeeper evasion)"
59
75
  expires_at: null
@@ -63,10 +79,13 @@
63
79
 
64
80
  # plutil plist manipulation (payload hiding)
65
81
  - id: "CLT-MAC-OBFUS-006"
82
+ version: 1
83
+ detection_name: "CMD:SageMacOSObfuscation-F [Heur]"
66
84
  category: tool
67
85
  severity: warning
68
86
  confidence: 0.60
69
- pattern: "\\bplutil\\b.*-convert\\s+(binary1|raw)"
87
+ # {{CMD_POS}} + {{NOT_FILENAME}}, same shape as CLT-CMD-009.
88
+ pattern: "{{CMD_POS}}plutil{{NOT_FILENAME}}.*-convert\\s+(binary1|raw)"
70
89
  match_on: command
71
90
  title: "Plist conversion to binary (payload obfuscation)"
72
91
  expires_at: null
@@ -74,10 +93,13 @@
74
93
 
75
94
  # Swift/swiftc inline execution
76
95
  - id: "CLT-MAC-OBFUS-007"
96
+ version: 1
97
+ detection_name: "CMD:SageMacOSObfuscation-G [Heur]"
77
98
  category: tool
78
99
  severity: warning
79
100
  confidence: 0.60
80
- pattern: "\\bswift\\b\\s+-e\\s+[\"'].*\\b(Process|NSTask|URLSession|shell)\\b"
101
+ # {{CMD_POS}} + {{NOT_FILENAME}}, same shape as CLT-CMD-009.
102
+ pattern: "{{CMD_POS}}swift{{NOT_FILENAME}}\\s+-e\\s+[\"'].*\\b(Process|NSTask|URLSession|shell)\\b"
81
103
  case_insensitive: true
82
104
  match_on: command
83
105
  title: "Swift inline execution with system calls"
@@ -5,6 +5,8 @@
5
5
 
6
6
  # LaunchAgent/LaunchDaemon plist (migrated from persistence.yaml CLT-PERSIST-004)
7
7
  - id: "CLT-MAC-PERSIST-001"
8
+ version: 1
9
+ detection_name: "CMD:SageMacOSPersistence-A [Heur]"
8
10
  category: tool
9
11
  severity: warning
10
12
  confidence: 0.90
@@ -16,10 +18,13 @@
16
18
 
17
19
  # Login Items via osascript
18
20
  - id: "CLT-MAC-PERSIST-002"
21
+ version: 1
22
+ detection_name: "CMD:SageMacOSPersistence-B [Heur]"
19
23
  category: tool
20
24
  severity: warning
21
25
  confidence: 0.60
22
- pattern: "\\bosascript\\b.*login item"
26
+ # {{CMD_POS}} + {{NOT_FILENAME}}, same shape as CLT-CMD-009.
27
+ pattern: "{{CMD_POS}}osascript{{NOT_FILENAME}}.*login item"
23
28
  case_insensitive: true
24
29
  match_on: command
25
30
  title: "Add login item via osascript"
@@ -28,10 +33,15 @@
28
33
 
29
34
  # Login window manipulation via defaults
30
35
  - id: "CLT-MAC-PERSIST-003"
36
+ version: 1
37
+ detection_name: "CMD:SageMacOSPersistence-C [Heur]"
31
38
  category: tool
32
39
  severity: warning
33
40
  confidence: 0.60
34
- pattern: "\\bdefaults\\b.*\\bwrite\\b.*loginwindow.*(AutoLaunch|LoginHook|LogoutHook)"
41
+ # {{CMD_POS}} + {{NOT_FILENAME}} on `defaults`, same shape as CLT-CMD-009.
42
+ # The inner `\bwrite\b` is left as bare -- only reachable once `defaults`
43
+ # has already matched at command position.
44
+ pattern: "{{CMD_POS}}defaults{{NOT_FILENAME}}.*\\bwrite\\b.*loginwindow.*(AutoLaunch|LoginHook|LogoutHook)"
35
45
  case_insensitive: true
36
46
  match_on: command
37
47
  title: "Login window hook manipulation via defaults write"
@@ -40,6 +50,8 @@
40
50
 
41
51
  # Authorization plugin persistence
42
52
  - id: "CLT-MAC-PERSIST-004"
53
+ version: 1
54
+ detection_name: "CMD:SageMacOSPersistence-D [Heur]"
43
55
  category: tool
44
56
  severity: critical
45
57
  confidence: 0.90
@@ -51,6 +63,8 @@
51
63
 
52
64
  # Periodic script drop
53
65
  - id: "CLT-MAC-PERSIST-005"
66
+ version: 1
67
+ detection_name: "CMD:SageMacOSPersistence-E [Heur]"
54
68
  category: tool
55
69
  severity: warning
56
70
  confidence: 0.60
@@ -64,6 +78,8 @@
64
78
 
65
79
  # emond rules
66
80
  - id: "CLT-MAC-PERSIST-006"
81
+ version: 1
82
+ detection_name: "CMD:SageMacOSPersistence-F [Heur]"
67
83
  category: tool
68
84
  severity: critical
69
85
  confidence: 0.90
@@ -75,6 +91,8 @@
75
91
 
76
92
  # DYLD_INSERT_LIBRARIES in RC files
77
93
  - id: "CLT-MAC-PERSIST-007"
94
+ version: 1
95
+ detection_name: "CMD:SageMacOSPersistence-G [Heur]"
78
96
  category: tool
79
97
  severity: critical
80
98
  confidence: 0.90
@@ -86,10 +104,13 @@
86
104
 
87
105
  # Folder Actions via osascript
88
106
  - id: "CLT-MAC-PERSIST-008"
107
+ version: 1
108
+ detection_name: "CMD:SageMacOSPersistence-H [Heur]"
89
109
  category: tool
90
110
  severity: warning
91
111
  confidence: 0.60
92
- pattern: "\\bosascript\\b.*folder action"
112
+ # {{CMD_POS}} + {{NOT_FILENAME}}, same shape as CLT-CMD-009.
113
+ pattern: "{{CMD_POS}}osascript{{NOT_FILENAME}}.*folder action"
93
114
  case_insensitive: true
94
115
  match_on: command
95
116
  title: "Folder Action script persistence via osascript"
@@ -98,10 +119,15 @@
98
119
 
99
120
  # launchctl load/bootstrap persistent agent
100
121
  - id: "CLT-MAC-PERSIST-009"
122
+ version: 1
123
+ detection_name: "CMD:SageMacOSPersistence-I [Heur]"
101
124
  category: tool
102
125
  severity: warning
103
126
  confidence: 0.60
104
- pattern: "\\blaunchctl\\b.*\\b(load|bootstrap)\\b"
127
+ # {{CMD_POS}} + {{NOT_FILENAME}} on `launchctl`, same shape as CLT-CMD-009.
128
+ # The inner `\b(load|bootstrap)\b` is left as bare -- only reachable once
129
+ # `launchctl` has already matched at command position.
130
+ pattern: "{{CMD_POS}}launchctl{{NOT_FILENAME}}.*\\b(load|bootstrap)\\b"
105
131
  match_on: command
106
132
  title: "Load persistent launch agent/daemon via launchctl"
107
133
  expires_at: null
@@ -4,10 +4,13 @@
4
4
 
5
5
  # brew install without version pin
6
6
  - id: "CLT-MAC-SUPPLY-001"
7
+ version: 1
8
+ detection_name: "CMD:SageMacOSSupplyChain-A [Heur]"
7
9
  category: supply_chain
8
10
  severity: warning
9
11
  confidence: 0.60
10
- pattern: "\\bbrew\\s+install\\b(?!.*@\\d)"
12
+ # {{CMD_POS}} + {{NOT_FILENAME}}, same shape as CLT-CMD-009.
13
+ pattern: "{{CMD_POS}}brew{{NOT_FILENAME}}\\s+install\\b(?!.*@\\d)"
11
14
  match_on: command
12
15
  title: "Homebrew install without version pin"
13
16
  expires_at: null
@@ -15,10 +18,13 @@
15
18
 
16
19
  # installer -pkg from remote URL
17
20
  - id: "CLT-MAC-SUPPLY-002"
21
+ version: 1
22
+ detection_name: "CMD:SageMacOSSupplyChain-B [Heur]"
18
23
  category: supply_chain
19
24
  severity: warning
20
25
  confidence: 0.85
21
- pattern: "\\binstaller\\b.*-pkg.*https?://"
26
+ # {{CMD_POS}} + {{NOT_FILENAME}}, same shape as CLT-CMD-009.
27
+ pattern: "{{CMD_POS}}installer{{NOT_FILENAME}}.*-pkg.*https?://"
22
28
  case_insensitive: true
23
29
  match_on: command
24
30
  title: "Remote package install via installer -pkg (unsigned)"
@@ -27,10 +33,13 @@
27
33
 
28
34
  # brew install --cask from non-default tap
29
35
  - id: "CLT-MAC-SUPPLY-003"
36
+ version: 1
37
+ detection_name: "CMD:SageMacOSSupplyChain-C [Heur]"
30
38
  category: supply_chain
31
39
  severity: warning
32
40
  confidence: 0.60
33
- pattern: "\\bbrew\\s+(install|reinstall)\\s+--cask\\b"
41
+ # {{CMD_POS}} + {{NOT_FILENAME}}, same shape as CLT-CMD-009.
42
+ pattern: "{{CMD_POS}}brew{{NOT_FILENAME}}\\s+(install|reinstall)\\s+--cask\\b"
34
43
  match_on: command
35
44
  title: "Homebrew cask install (binary application)"
36
45
  expires_at: null