|
1 | | -// src/pre-tool-use.ts |
| 1 | +// plugins/gatekeeper/src/pre-tool-use.ts |
2 | 2 | import process from "node:process"; |
3 | 3 |
|
4 | | -// src/chain-parser.ts |
| 4 | +// plugins/gatekeeper/src/chain-parser.ts |
5 | 5 | function isDigit(ch) { |
6 | 6 | return ch !== undefined && ch >= "0" && ch <= "9"; |
7 | 7 | } |
@@ -124,7 +124,7 @@ function parseChainedCommand(cmd) { |
124 | 124 | return { kind: "chain", parts: trimmed }; |
125 | 125 | } |
126 | 126 |
|
127 | | -// src/pre-tool-use.ts |
| 127 | +// plugins/gatekeeper/src/pre-tool-use.ts |
128 | 128 | var HARD_DENY_RULES = [ |
129 | 129 | { pattern: /^rm\s+-rf\s+\/(?:\s|$)/i, reason: "Filesystem root deletion blocked" }, |
130 | 130 | { pattern: /^rm\s+-rf\s+\/\*(?:\s|$)/i, reason: "Destructive wildcard deletion from root blocked" }, |
@@ -162,7 +162,8 @@ var SOFT_DENY_RULES = [ |
162 | 162 | { pattern: /^(terraform|pulumi)\s+apply\b/i, reason: "Infrastructure apply needs user intent verification" }, |
163 | 163 | { pattern: /^(terraform|pulumi)\s+destroy\b/i, reason: "Infrastructure destroy needs user intent verification" }, |
164 | 164 | { pattern: /^kubectl\s+(apply|delete)\b/i, reason: "Kubernetes mutation needs user intent verification" }, |
165 | | - { pattern: /\b(\.claude\/settings|CLAUDE\.md)\b/i, reason: "Agent self-modification needs user intent verification" }, |
| 165 | + { pattern: /(?:^|\s)\.claude\/settings/i, reason: "Agent self-modification needs user intent verification" }, |
| 166 | + { pattern: /\bCLAUDE\.md\b/i, reason: "Agent self-modification needs user intent verification" }, |
166 | 167 | { pattern: /^git\s+commit\s+.*--no-verify\b/i, reason: "Skipping commit verification needs user intent verification" }, |
167 | 168 | { pattern: /\bchmod\s+777\b/i, reason: "Broad permission change needs user intent verification" }, |
168 | 169 | { pattern: /\b(nc|ncat|socat)\s+-l/i, reason: "Exposing local service needs user intent verification" }, |
|
0 commit comments