jorgex-stack 1.9.40 → 1.9.41
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.
- package/dist/cli.js +33 -23
- package/package.json +1 -1
- package/stack/agents/README.md +3 -3
- package/stack/config/defaults.json +618 -12
package/dist/cli.js
CHANGED
|
@@ -830,19 +830,6 @@ function upsertNativeHooks(existing, canonical, scriptsDir, mapMatcher = (m) =>
|
|
|
830
830
|
});
|
|
831
831
|
}
|
|
832
832
|
|
|
833
|
-
// src/lib/git-guard.ts
|
|
834
|
-
var DESTRUCTIVE_GIT_DENY = [
|
|
835
|
-
"git reset*",
|
|
836
|
-
"git clean*",
|
|
837
|
-
"git checkout -- *",
|
|
838
|
-
"git restore*",
|
|
839
|
-
"git push*--force*",
|
|
840
|
-
// posición libre: caza "git push origin main --force[-with-lease]"
|
|
841
|
-
"git push -f*",
|
|
842
|
-
"git switch*--discard-changes*"
|
|
843
|
-
];
|
|
844
|
-
var GIT_GUARD_SCRIPT = "block-destructive-git.cjs";
|
|
845
|
-
|
|
846
833
|
// src/lib/quality-capabilities.ts
|
|
847
834
|
var QUALITY_CAPABILITY_NAMESPACE = "jorgex.quality.capabilities";
|
|
848
835
|
var QUALITY_CAPABILITY_VERSION = 1;
|
|
@@ -917,6 +904,15 @@ function localQualityStatus(profile, status) {
|
|
|
917
904
|
}
|
|
918
905
|
|
|
919
906
|
// src/adapters/opencode.ts
|
|
907
|
+
var gitReadPrefix = "git --no-pager -c core.fsmonitor=false -c log.showSignature=false";
|
|
908
|
+
var gitReadCommands = [
|
|
909
|
+
"diff",
|
|
910
|
+
"diff --stat",
|
|
911
|
+
"diff --name-only",
|
|
912
|
+
"diff --cached",
|
|
913
|
+
"log",
|
|
914
|
+
"log --oneline -10"
|
|
915
|
+
].map((action) => `${gitReadPrefix} ${action} --no-ext-diff --no-textconv --end-of-options`);
|
|
920
916
|
function yamlString(value) {
|
|
921
917
|
return JSON.stringify(value);
|
|
922
918
|
}
|
|
@@ -1015,15 +1011,20 @@ var opencodeAdapter = {
|
|
|
1015
1011
|
const tierModel = resolveAgentModel(models, agent.name, agent.tier);
|
|
1016
1012
|
lines.push(`model: ${tierModel.model}`);
|
|
1017
1013
|
if (tierModel.variant) lines.push(`variant: ${tierModel.variant}`);
|
|
1018
|
-
lines.push("permission:");
|
|
1019
|
-
lines.push(
|
|
1014
|
+
if (agent.readonly || agent.bash !== "full" || !agent.spawn) lines.push("permission:");
|
|
1015
|
+
if (agent.readonly) lines.push(" edit: deny");
|
|
1020
1016
|
if (agent.bash === "none") lines.push(" bash: deny");
|
|
1021
|
-
else if (agent.bash === "git-read")
|
|
1022
|
-
|
|
1023
|
-
const
|
|
1024
|
-
|
|
1025
|
-
|
|
1026
|
-
|
|
1017
|
+
else if (agent.bash === "git-read") {
|
|
1018
|
+
lines.push(' bash:\n "*": deny');
|
|
1019
|
+
for (const command of gitReadCommands) {
|
|
1020
|
+
lines.push(` ${yamlString(command)}: allow`, ` ${yamlString(`${command} *`)}: allow`);
|
|
1021
|
+
}
|
|
1022
|
+
const permission = objectValue(loadCanonicalDefaults(stackRoot())["opencode"]?.permission);
|
|
1023
|
+
const bash = objectValue(permission?.bash);
|
|
1024
|
+
if (bash === null) throw new Error("OpenCode: canonical Bash policy is required for git-read agents.");
|
|
1025
|
+
for (const [pattern, decision] of Object.entries(bash)) {
|
|
1026
|
+
if (decision === "deny") lines.push(` ${yamlString(pattern)}: deny`);
|
|
1027
|
+
}
|
|
1027
1028
|
}
|
|
1028
1029
|
if (!agent.spawn) lines.push(" task: deny");
|
|
1029
1030
|
}
|
|
@@ -1033,7 +1034,11 @@ ${deny}`);
|
|
|
1033
1034
|
content: `---
|
|
1034
1035
|
${lines.join("\n")}
|
|
1035
1036
|
---
|
|
1036
|
-
${agent.body}
|
|
1037
|
+
${agent.body}${agent.bash === "git-read" ? `
|
|
1038
|
+
|
|
1039
|
+
Use only these read-only Git command prefixes; put refs and paths after --end-of-options:
|
|
1040
|
+
${gitReadCommands.map((command) => `- \`${command}\``).join("\n")}
|
|
1041
|
+
` : ""}`,
|
|
1037
1042
|
kind: "agent"
|
|
1038
1043
|
}
|
|
1039
1044
|
];
|
|
@@ -1145,7 +1150,7 @@ ${agent.body}`,
|
|
|
1145
1150
|
if (isFreshConfig && defaults?.["permission"] !== void 0) {
|
|
1146
1151
|
root["permission"] = defaults["permission"];
|
|
1147
1152
|
ctx.warnings.push(
|
|
1148
|
-
"OpenCode: fresh config
|
|
1153
|
+
"OpenCode: fresh config allows ordinary reads, edits, web access and Bash; sensitive operations ask, while protected paths and obvious destruction are denied. Native matching is not a universal filesystem sandbox."
|
|
1149
1154
|
);
|
|
1150
1155
|
}
|
|
1151
1156
|
const mcp = root["mcp"] ??= {};
|
|
@@ -1318,6 +1323,11 @@ ${agent.body}`,
|
|
|
1318
1323
|
import path10 from "path";
|
|
1319
1324
|
import fs7 from "fs";
|
|
1320
1325
|
import { isDeepStrictEqual as isDeepStrictEqual2 } from "util";
|
|
1326
|
+
|
|
1327
|
+
// src/lib/git-guard.ts
|
|
1328
|
+
var GIT_GUARD_SCRIPT = "block-destructive-git.cjs";
|
|
1329
|
+
|
|
1330
|
+
// src/adapters/claude-code.ts
|
|
1321
1331
|
function yamlString2(value) {
|
|
1322
1332
|
return JSON.stringify(value);
|
|
1323
1333
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "jorgex-stack",
|
|
3
|
-
"version": "1.9.
|
|
3
|
+
"version": "1.9.41",
|
|
4
4
|
"description": "Harness multi-agente portable: instala la config JorgeX (agentes, skills, hooks, Engram, MCPs) en Claude Code, Codex CLI, OpenCode y Pi",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
package/stack/agents/README.md
CHANGED
|
@@ -13,7 +13,7 @@ Una sola fuente por agente. El instalador los traduce al formato de cada runtime
|
|
|
13
13
|
| `mode` | `primary` \| `subagent` | Agente principal o subagente delegable |
|
|
14
14
|
| `tier` | `strong` \| `standard` \| `cheap` | Se resuelve a un modelo concreto por runtime vía model-map (PRD §6.1) |
|
|
15
15
|
| `readonly` | `true` \| `false` | `true` → sin edición ni escritura de archivos |
|
|
16
|
-
| `bash` | `none` \| `git-read` \| `full` | `none`: sin shell · `git-read`: solo
|
|
16
|
+
| `bash` | `none` \| `git-read` \| `full` | `none`: sin shell · `git-read`: solo los prefijos Git de lectura validados · `full`: Bash sujeto a la política general |
|
|
17
17
|
| `spawn` | `false` (opcional) | `false` → no puede lanzar subagentes (default: puede) |
|
|
18
18
|
|
|
19
19
|
## Traducción por adapter (en install)
|
|
@@ -22,11 +22,11 @@ Una sola fuente por agente. El instalador los traduce al formato de cada runtime
|
|
|
22
22
|
|---|---|---|---|
|
|
23
23
|
| `tier` | alias `fable`/`opus`/`sonnet`/`haiku` según model-map | `model` + `model_reasoning_effort` | `provider/model` del model-map |
|
|
24
24
|
| `readonly: true` | `tools: Read, Grep, Glob` (+Bash si aplica) | `sandbox_mode = "read-only"` | `permission: { edit: deny }` |
|
|
25
|
-
| `bash: git-read` | `Bash` completo en tools — la restricción a
|
|
25
|
+
| `bash: git-read` | `Bash` completo en tools — la restricción a Git read es un contrato de prompt en Claude Code | con `readonly: true` el sandbox read-only impide escrituras; con `readonly: false` la restricción es solo de prompt | catch-all `deny` y allow solo para `diff`, `diff --stat`, `diff --name-only`, `diff --cached`, `log` y `log --oneline -10`, con prefijos que desactivan pager, fsmonitor, firmas, ext-diff y textconv y colocan `--end-of-options` antes de refs/rutas |
|
|
26
26
|
| `bash: none` | sin `Bash` en tools | sandbox read-only | `permission: { bash: deny }` |
|
|
27
27
|
| `spawn: false` | sin tool `Agent`/`Task` | n/a | `permission: { task: deny }` |
|
|
28
28
|
|
|
29
|
-
> Ojo: solo OpenCode aplica `git-read` de verdad. En Claude Code y Codex la combinación `readonly: false` + `bash: git-read` (p.ej. `docs-maintainer`) se degrada a shell completo guiado por prompt.
|
|
29
|
+
> Ojo: entre estos tres adapters, solo OpenCode aplica `git-read` de verdad. En Claude Code y Codex la combinación `readonly: false` + `bash: git-read` (p.ej. `docs-maintainer`) se degrada a shell completo guiado por prompt. En OpenCode, `full` hereda la política global y `none` deniega Bash. Pi mantiene su propia proyección validada.
|
|
30
30
|
|
|
31
31
|
## Convenciones de contenido
|
|
32
32
|
|
|
@@ -1,8 +1,22 @@
|
|
|
1
1
|
{
|
|
2
|
-
"$comment": "Permisos por defecto del stack: cada bloque se escribe SOLO en config fresca o vacía; una config existente no se auto-expande jamás. OpenCode
|
|
2
|
+
"$comment": "Permisos por defecto del stack: cada bloque se escribe SOLO en config fresca o vacía; una config existente no se auto-expande jamás. OpenCode fresco permite trabajo ordinario; pide permiso para operaciones sensibles, deniega rutas protegidas y destrucción evidente, y conserva configuraciones existentes.",
|
|
3
3
|
"opencode": {
|
|
4
4
|
"permission": {
|
|
5
|
-
"
|
|
5
|
+
"*": "ask",
|
|
6
|
+
"edit": {
|
|
7
|
+
"*": "allow",
|
|
8
|
+
"*.env": "deny",
|
|
9
|
+
"*.env.*": "deny",
|
|
10
|
+
"*.env.example": "allow",
|
|
11
|
+
"*/.ssh/*": "deny",
|
|
12
|
+
"*/.aws/credentials": "deny",
|
|
13
|
+
"*/.npmrc": "deny",
|
|
14
|
+
"*/.git-credentials": "deny",
|
|
15
|
+
"*/id_rsa": "deny",
|
|
16
|
+
"*/id_ed25519": "deny",
|
|
17
|
+
"*.pem": "deny",
|
|
18
|
+
"*.key": "deny"
|
|
19
|
+
},
|
|
6
20
|
"read": {
|
|
7
21
|
"*": "allow",
|
|
8
22
|
"*.env": "deny",
|
|
@@ -24,22 +38,614 @@
|
|
|
24
38
|
"grep": "allow",
|
|
25
39
|
"list": "allow",
|
|
26
40
|
"lsp": "allow",
|
|
27
|
-
"webfetch": "
|
|
28
|
-
"websearch": "
|
|
41
|
+
"webfetch": "allow",
|
|
42
|
+
"websearch": "allow",
|
|
43
|
+
"task": "allow",
|
|
44
|
+
"skill": "allow",
|
|
45
|
+
"todowrite": "allow",
|
|
46
|
+
"todoread": "allow",
|
|
47
|
+
"question": "allow",
|
|
29
48
|
"bash": {
|
|
30
|
-
"*": "
|
|
31
|
-
"
|
|
32
|
-
"git log*": "allow",
|
|
33
|
-
"git status*": "allow",
|
|
49
|
+
"*": "allow",
|
|
50
|
+
"rm": "ask",
|
|
34
51
|
"rm *": "ask",
|
|
35
|
-
"
|
|
52
|
+
"*/rm": "ask",
|
|
53
|
+
"*/rm *": "ask",
|
|
54
|
+
"rmdir": "ask",
|
|
36
55
|
"rmdir *": "ask",
|
|
37
|
-
"
|
|
56
|
+
"*/rmdir": "ask",
|
|
57
|
+
"*/rmdir *": "ask",
|
|
58
|
+
"del": "ask",
|
|
59
|
+
"del *": "ask",
|
|
60
|
+
"*/del": "ask",
|
|
61
|
+
"*/del *": "ask",
|
|
62
|
+
"unlink": "ask",
|
|
63
|
+
"unlink *": "ask",
|
|
64
|
+
"*/unlink": "ask",
|
|
65
|
+
"*/unlink *": "ask",
|
|
66
|
+
"sudo": "ask",
|
|
67
|
+
"sudo *": "ask",
|
|
68
|
+
"*/sudo": "ask",
|
|
69
|
+
"*/sudo *": "ask",
|
|
70
|
+
"doas": "ask",
|
|
71
|
+
"doas *": "ask",
|
|
72
|
+
"*/doas": "ask",
|
|
73
|
+
"*/doas *": "ask",
|
|
74
|
+
"runas": "ask",
|
|
75
|
+
"runas *": "ask",
|
|
76
|
+
"*/runas": "ask",
|
|
77
|
+
"*/runas *": "ask",
|
|
78
|
+
"su": "ask",
|
|
79
|
+
"su *": "ask",
|
|
80
|
+
"*/su": "ask",
|
|
81
|
+
"*/su *": "ask",
|
|
82
|
+
"env": "ask",
|
|
83
|
+
"env *": "ask",
|
|
84
|
+
"*/env": "ask",
|
|
85
|
+
"*/env *": "ask",
|
|
86
|
+
"eval": "ask",
|
|
87
|
+
"eval *": "ask",
|
|
88
|
+
"*/eval": "ask",
|
|
89
|
+
"*/eval *": "ask",
|
|
90
|
+
"exec": "ask",
|
|
91
|
+
"exec *": "ask",
|
|
92
|
+
"*/exec": "ask",
|
|
93
|
+
"*/exec *": "ask",
|
|
94
|
+
"command": "ask",
|
|
95
|
+
"command *": "ask",
|
|
96
|
+
"*/command": "ask",
|
|
97
|
+
"*/command *": "ask",
|
|
98
|
+
"xargs": "ask",
|
|
99
|
+
"xargs *": "ask",
|
|
100
|
+
"*/xargs": "ask",
|
|
101
|
+
"*/xargs *": "ask",
|
|
102
|
+
"sh": "ask",
|
|
103
|
+
"sh *": "ask",
|
|
104
|
+
"*/sh": "ask",
|
|
105
|
+
"*/sh *": "ask",
|
|
106
|
+
"bash": "ask",
|
|
107
|
+
"bash *": "ask",
|
|
108
|
+
"*/bash": "ask",
|
|
109
|
+
"*/bash *": "ask",
|
|
110
|
+
"zsh": "ask",
|
|
111
|
+
"zsh *": "ask",
|
|
112
|
+
"*/zsh": "ask",
|
|
113
|
+
"*/zsh *": "ask",
|
|
114
|
+
"fish": "ask",
|
|
115
|
+
"fish *": "ask",
|
|
116
|
+
"*/fish": "ask",
|
|
117
|
+
"*/fish *": "ask",
|
|
118
|
+
"pwsh": "ask",
|
|
119
|
+
"pwsh *": "ask",
|
|
120
|
+
"*/pwsh": "ask",
|
|
121
|
+
"*/pwsh *": "ask",
|
|
122
|
+
"powershell": "ask",
|
|
123
|
+
"powershell *": "ask",
|
|
124
|
+
"*/powershell": "ask",
|
|
125
|
+
"*/powershell *": "ask",
|
|
126
|
+
"python": "ask",
|
|
127
|
+
"python *": "ask",
|
|
128
|
+
"*/python": "ask",
|
|
129
|
+
"*/python *": "ask",
|
|
130
|
+
"python3": "ask",
|
|
131
|
+
"python3 *": "ask",
|
|
132
|
+
"*/python3": "ask",
|
|
133
|
+
"*/python3 *": "ask",
|
|
134
|
+
"node": "ask",
|
|
135
|
+
"node *": "ask",
|
|
136
|
+
"*/node": "ask",
|
|
137
|
+
"*/node *": "ask",
|
|
138
|
+
"ruby": "ask",
|
|
139
|
+
"ruby *": "ask",
|
|
140
|
+
"*/ruby": "ask",
|
|
141
|
+
"*/ruby *": "ask",
|
|
142
|
+
"perl": "ask",
|
|
143
|
+
"perl *": "ask",
|
|
144
|
+
"*/perl": "ask",
|
|
145
|
+
"*/perl *": "ask",
|
|
146
|
+
"deno": "ask",
|
|
147
|
+
"deno *": "ask",
|
|
148
|
+
"*/deno": "ask",
|
|
149
|
+
"*/deno *": "ask",
|
|
150
|
+
"git *reset*": "ask",
|
|
151
|
+
"*/git *reset*": "ask",
|
|
152
|
+
"git.exe *reset*": "ask",
|
|
153
|
+
"*/git.exe *reset*": "ask",
|
|
154
|
+
"*\\git.exe *reset*": "ask",
|
|
155
|
+
"git *clean*": "ask",
|
|
156
|
+
"*/git *clean*": "ask",
|
|
157
|
+
"git.exe *clean*": "ask",
|
|
158
|
+
"*/git.exe *clean*": "ask",
|
|
159
|
+
"*\\git.exe *clean*": "ask",
|
|
160
|
+
"git *push*": "ask",
|
|
161
|
+
"*/git *push*": "ask",
|
|
162
|
+
"git.exe *push*": "ask",
|
|
163
|
+
"*/git.exe *push*": "ask",
|
|
164
|
+
"*\\git.exe *push*": "ask",
|
|
165
|
+
"git -c *": "ask",
|
|
166
|
+
"*/git -c *": "ask",
|
|
167
|
+
"git.exe -c *": "ask",
|
|
168
|
+
"*/git.exe -c *": "ask",
|
|
169
|
+
"*\\git.exe -c *": "ask",
|
|
170
|
+
"git * -c *": "ask",
|
|
171
|
+
"*/git * -c *": "ask",
|
|
172
|
+
"git.exe * -c *": "ask",
|
|
173
|
+
"*/git.exe * -c *": "ask",
|
|
174
|
+
"*\\git.exe * -c *": "ask",
|
|
175
|
+
"git --config-env*": "ask",
|
|
176
|
+
"*/git --config-env*": "ask",
|
|
177
|
+
"git.exe --config-env*": "ask",
|
|
178
|
+
"*/git.exe --config-env*": "ask",
|
|
179
|
+
"*\\git.exe --config-env*": "ask",
|
|
180
|
+
"git *--output*": "ask",
|
|
181
|
+
"*/git *--output*": "ask",
|
|
182
|
+
"git.exe *--output*": "ask",
|
|
183
|
+
"*/git.exe *--output*": "ask",
|
|
184
|
+
"*\\git.exe *--output*": "ask",
|
|
185
|
+
"git *--ext-diff*": "ask",
|
|
186
|
+
"*/git *--ext-diff*": "ask",
|
|
187
|
+
"git.exe *--ext-diff*": "ask",
|
|
188
|
+
"*/git.exe *--ext-diff*": "ask",
|
|
189
|
+
"*\\git.exe *--ext-diff*": "ask",
|
|
190
|
+
"git *--textconv*": "ask",
|
|
191
|
+
"*/git *--textconv*": "ask",
|
|
192
|
+
"git.exe *--textconv*": "ask",
|
|
193
|
+
"*/git.exe *--textconv*": "ask",
|
|
194
|
+
"*\\git.exe *--textconv*": "ask",
|
|
195
|
+
"git *--show-signature*": "ask",
|
|
196
|
+
"*/git *--show-signature*": "ask",
|
|
197
|
+
"git.exe *--show-signature*": "ask",
|
|
198
|
+
"*/git.exe *--show-signature*": "ask",
|
|
199
|
+
"*\\git.exe *--show-signature*": "ask",
|
|
200
|
+
"git *%G*": "ask",
|
|
201
|
+
"*/git *%G*": "ask",
|
|
202
|
+
"git.exe *%G*": "ask",
|
|
203
|
+
"*/git.exe *%G*": "ask",
|
|
204
|
+
"*\\git.exe *%G*": "ask",
|
|
205
|
+
"pnpm exec*": "ask",
|
|
206
|
+
"pnpm dlx*": "ask",
|
|
207
|
+
"truncate": "ask",
|
|
208
|
+
"truncate *": "ask",
|
|
209
|
+
"*/truncate": "ask",
|
|
210
|
+
"*/truncate *": "ask",
|
|
211
|
+
"Remove-Item": "ask",
|
|
212
|
+
"Remove-Item *": "ask",
|
|
213
|
+
"*/Remove-Item": "ask",
|
|
214
|
+
"*/Remove-Item *": "ask",
|
|
215
|
+
"remove-item": "ask",
|
|
216
|
+
"remove-item *": "ask",
|
|
217
|
+
"*/remove-item": "ask",
|
|
218
|
+
"*/remove-item *": "ask",
|
|
219
|
+
"ri": "ask",
|
|
220
|
+
"ri *": "ask",
|
|
221
|
+
"*/ri": "ask",
|
|
222
|
+
"*/ri *": "ask",
|
|
223
|
+
"erase": "ask",
|
|
224
|
+
"erase *": "ask",
|
|
225
|
+
"*/erase": "ask",
|
|
226
|
+
"*/erase *": "ask",
|
|
227
|
+
"rd": "ask",
|
|
228
|
+
"rd *": "ask",
|
|
229
|
+
"*/rd": "ask",
|
|
230
|
+
"*/rd *": "ask",
|
|
231
|
+
"Clear-Content": "ask",
|
|
232
|
+
"Clear-Content *": "ask",
|
|
233
|
+
"*/Clear-Content": "ask",
|
|
234
|
+
"*/Clear-Content *": "ask",
|
|
235
|
+
"clear-content": "ask",
|
|
236
|
+
"clear-content *": "ask",
|
|
237
|
+
"*/clear-content": "ask",
|
|
238
|
+
"*/clear-content *": "ask",
|
|
239
|
+
"find *-delete*": "ask",
|
|
240
|
+
"find *-exec*": "ask",
|
|
241
|
+
"find *-ok*": "ask",
|
|
242
|
+
"*/find *-delete*": "ask",
|
|
243
|
+
"*/find *-exec*": "ask",
|
|
244
|
+
"*/find *-ok*": "ask",
|
|
245
|
+
"* rm": "ask",
|
|
246
|
+
"* rm *": "ask",
|
|
247
|
+
"* rmdir": "ask",
|
|
248
|
+
"* rmdir *": "ask",
|
|
249
|
+
"* del": "ask",
|
|
250
|
+
"* del *": "ask",
|
|
251
|
+
"* unlink": "ask",
|
|
252
|
+
"* unlink *": "ask",
|
|
253
|
+
"* sudo": "ask",
|
|
254
|
+
"* sudo *": "ask",
|
|
255
|
+
"* doas": "ask",
|
|
256
|
+
"* doas *": "ask",
|
|
257
|
+
"* runas": "ask",
|
|
258
|
+
"* runas *": "ask",
|
|
259
|
+
"* su": "ask",
|
|
260
|
+
"* su *": "ask",
|
|
261
|
+
"* env": "ask",
|
|
262
|
+
"* env *": "ask",
|
|
263
|
+
"* eval": "ask",
|
|
264
|
+
"* eval *": "ask",
|
|
265
|
+
"* exec": "ask",
|
|
266
|
+
"* exec *": "ask",
|
|
267
|
+
"* command": "ask",
|
|
268
|
+
"* command *": "ask",
|
|
269
|
+
"* xargs": "ask",
|
|
270
|
+
"* xargs *": "ask",
|
|
271
|
+
"* sh": "ask",
|
|
272
|
+
"* sh *": "ask",
|
|
273
|
+
"* bash": "ask",
|
|
274
|
+
"* bash *": "ask",
|
|
275
|
+
"* zsh": "ask",
|
|
276
|
+
"* zsh *": "ask",
|
|
277
|
+
"* fish": "ask",
|
|
278
|
+
"* fish *": "ask",
|
|
279
|
+
"* pwsh": "ask",
|
|
280
|
+
"* pwsh *": "ask",
|
|
281
|
+
"* powershell": "ask",
|
|
282
|
+
"* powershell *": "ask",
|
|
283
|
+
"* python": "ask",
|
|
284
|
+
"* python *": "ask",
|
|
285
|
+
"* python3": "ask",
|
|
286
|
+
"* python3 *": "ask",
|
|
287
|
+
"* node": "ask",
|
|
288
|
+
"* node *": "ask",
|
|
289
|
+
"* ruby": "ask",
|
|
290
|
+
"* ruby *": "ask",
|
|
291
|
+
"* perl": "ask",
|
|
292
|
+
"* perl *": "ask",
|
|
293
|
+
"* deno": "ask",
|
|
294
|
+
"* deno *": "ask",
|
|
295
|
+
"* git *reset*": "ask",
|
|
296
|
+
"* git.exe *reset*": "ask",
|
|
297
|
+
"* git *clean*": "ask",
|
|
298
|
+
"* git.exe *clean*": "ask",
|
|
299
|
+
"* git *push*": "ask",
|
|
300
|
+
"* git.exe *push*": "ask",
|
|
301
|
+
"* git -c *": "ask",
|
|
302
|
+
"* git.exe -c *": "ask",
|
|
303
|
+
"* git * -c *": "ask",
|
|
304
|
+
"* git.exe * -c *": "ask",
|
|
305
|
+
"* git --config-env*": "ask",
|
|
306
|
+
"* git.exe --config-env*": "ask",
|
|
307
|
+
"* git *--output*": "ask",
|
|
308
|
+
"* git.exe *--output*": "ask",
|
|
309
|
+
"* git *--ext-diff*": "ask",
|
|
310
|
+
"* git.exe *--ext-diff*": "ask",
|
|
311
|
+
"* git *--textconv*": "ask",
|
|
312
|
+
"* git.exe *--textconv*": "ask",
|
|
313
|
+
"* git *--show-signature*": "ask",
|
|
314
|
+
"* git.exe *--show-signature*": "ask",
|
|
315
|
+
"* git *%G*": "ask",
|
|
316
|
+
"* git.exe *%G*": "ask",
|
|
317
|
+
"* pnpm exec*": "ask",
|
|
318
|
+
"* pnpm dlx*": "ask",
|
|
319
|
+
"* truncate": "ask",
|
|
320
|
+
"* truncate *": "ask",
|
|
321
|
+
"* Remove-Item": "ask",
|
|
322
|
+
"* Remove-Item *": "ask",
|
|
323
|
+
"* remove-item": "ask",
|
|
324
|
+
"* remove-item *": "ask",
|
|
325
|
+
"* ri": "ask",
|
|
326
|
+
"* ri *": "ask",
|
|
327
|
+
"* erase": "ask",
|
|
328
|
+
"* erase *": "ask",
|
|
329
|
+
"* rd": "ask",
|
|
330
|
+
"* rd *": "ask",
|
|
331
|
+
"* Clear-Content": "ask",
|
|
332
|
+
"* Clear-Content *": "ask",
|
|
333
|
+
"* clear-content": "ask",
|
|
334
|
+
"* clear-content *": "ask",
|
|
335
|
+
"* find *-delete*": "ask",
|
|
336
|
+
"* find *-exec*": "ask",
|
|
337
|
+
"* find *-ok*": "ask",
|
|
338
|
+
"format": "deny",
|
|
38
339
|
"format *": "deny",
|
|
340
|
+
"*/format": "deny",
|
|
341
|
+
"*/format *": "deny",
|
|
342
|
+
"mkfs": "deny",
|
|
39
343
|
"mkfs *": "deny",
|
|
344
|
+
"*/mkfs": "deny",
|
|
345
|
+
"*/mkfs *": "deny",
|
|
346
|
+
"dd": "deny",
|
|
40
347
|
"dd *": "deny",
|
|
41
|
-
"
|
|
42
|
-
|
|
348
|
+
"*/dd": "deny",
|
|
349
|
+
"*/dd *": "deny",
|
|
350
|
+
"shred": "deny",
|
|
351
|
+
"shred *": "deny",
|
|
352
|
+
"*/shred": "deny",
|
|
353
|
+
"*/shred *": "deny",
|
|
354
|
+
"mkfs.*": "deny",
|
|
355
|
+
"*/mkfs.*": "deny",
|
|
356
|
+
"rm /": "deny",
|
|
357
|
+
"rm * /": "deny",
|
|
358
|
+
"rm * / *": "deny",
|
|
359
|
+
"rm /etc": "deny",
|
|
360
|
+
"rm * /etc": "deny",
|
|
361
|
+
"rm * /etc *": "deny",
|
|
362
|
+
"rm /usr": "deny",
|
|
363
|
+
"rm * /usr": "deny",
|
|
364
|
+
"rm * /usr *": "deny",
|
|
365
|
+
"rm /bin": "deny",
|
|
366
|
+
"rm * /bin": "deny",
|
|
367
|
+
"rm * /bin *": "deny",
|
|
368
|
+
"rm /sbin": "deny",
|
|
369
|
+
"rm * /sbin": "deny",
|
|
370
|
+
"rm * /sbin *": "deny",
|
|
371
|
+
"rm /boot": "deny",
|
|
372
|
+
"rm * /boot": "deny",
|
|
373
|
+
"rm * /boot *": "deny",
|
|
374
|
+
"rm /dev": "deny",
|
|
375
|
+
"rm * /dev": "deny",
|
|
376
|
+
"rm * /dev *": "deny",
|
|
377
|
+
"rm /proc": "deny",
|
|
378
|
+
"rm * /proc": "deny",
|
|
379
|
+
"rm * /proc *": "deny",
|
|
380
|
+
"rm /sys": "deny",
|
|
381
|
+
"rm * /sys": "deny",
|
|
382
|
+
"rm * /sys *": "deny",
|
|
383
|
+
"*/rm /": "deny",
|
|
384
|
+
"*/rm * /": "deny",
|
|
385
|
+
"*/rm * / *": "deny",
|
|
386
|
+
"*/rm /etc": "deny",
|
|
387
|
+
"*/rm * /etc": "deny",
|
|
388
|
+
"*/rm * /etc *": "deny",
|
|
389
|
+
"*/rm /usr": "deny",
|
|
390
|
+
"*/rm * /usr": "deny",
|
|
391
|
+
"*/rm * /usr *": "deny",
|
|
392
|
+
"*/rm /bin": "deny",
|
|
393
|
+
"*/rm * /bin": "deny",
|
|
394
|
+
"*/rm * /bin *": "deny",
|
|
395
|
+
"*/rm /sbin": "deny",
|
|
396
|
+
"*/rm * /sbin": "deny",
|
|
397
|
+
"*/rm * /sbin *": "deny",
|
|
398
|
+
"*/rm /boot": "deny",
|
|
399
|
+
"*/rm * /boot": "deny",
|
|
400
|
+
"*/rm * /boot *": "deny",
|
|
401
|
+
"*/rm /dev": "deny",
|
|
402
|
+
"*/rm * /dev": "deny",
|
|
403
|
+
"*/rm * /dev *": "deny",
|
|
404
|
+
"*/rm /proc": "deny",
|
|
405
|
+
"*/rm * /proc": "deny",
|
|
406
|
+
"*/rm * /proc *": "deny",
|
|
407
|
+
"*/rm /sys": "deny",
|
|
408
|
+
"*/rm * /sys": "deny",
|
|
409
|
+
"*/rm * /sys *": "deny",
|
|
410
|
+
"rmdir /": "deny",
|
|
411
|
+
"rmdir * /": "deny",
|
|
412
|
+
"rmdir * / *": "deny",
|
|
413
|
+
"rmdir /etc": "deny",
|
|
414
|
+
"rmdir * /etc": "deny",
|
|
415
|
+
"rmdir * /etc *": "deny",
|
|
416
|
+
"rmdir /usr": "deny",
|
|
417
|
+
"rmdir * /usr": "deny",
|
|
418
|
+
"rmdir * /usr *": "deny",
|
|
419
|
+
"rmdir /bin": "deny",
|
|
420
|
+
"rmdir * /bin": "deny",
|
|
421
|
+
"rmdir * /bin *": "deny",
|
|
422
|
+
"rmdir /sbin": "deny",
|
|
423
|
+
"rmdir * /sbin": "deny",
|
|
424
|
+
"rmdir * /sbin *": "deny",
|
|
425
|
+
"rmdir /boot": "deny",
|
|
426
|
+
"rmdir * /boot": "deny",
|
|
427
|
+
"rmdir * /boot *": "deny",
|
|
428
|
+
"rmdir /dev": "deny",
|
|
429
|
+
"rmdir * /dev": "deny",
|
|
430
|
+
"rmdir * /dev *": "deny",
|
|
431
|
+
"rmdir /proc": "deny",
|
|
432
|
+
"rmdir * /proc": "deny",
|
|
433
|
+
"rmdir * /proc *": "deny",
|
|
434
|
+
"rmdir /sys": "deny",
|
|
435
|
+
"rmdir * /sys": "deny",
|
|
436
|
+
"rmdir * /sys *": "deny",
|
|
437
|
+
"*/rmdir /": "deny",
|
|
438
|
+
"*/rmdir * /": "deny",
|
|
439
|
+
"*/rmdir * / *": "deny",
|
|
440
|
+
"*/rmdir /etc": "deny",
|
|
441
|
+
"*/rmdir * /etc": "deny",
|
|
442
|
+
"*/rmdir * /etc *": "deny",
|
|
443
|
+
"*/rmdir /usr": "deny",
|
|
444
|
+
"*/rmdir * /usr": "deny",
|
|
445
|
+
"*/rmdir * /usr *": "deny",
|
|
446
|
+
"*/rmdir /bin": "deny",
|
|
447
|
+
"*/rmdir * /bin": "deny",
|
|
448
|
+
"*/rmdir * /bin *": "deny",
|
|
449
|
+
"*/rmdir /sbin": "deny",
|
|
450
|
+
"*/rmdir * /sbin": "deny",
|
|
451
|
+
"*/rmdir * /sbin *": "deny",
|
|
452
|
+
"*/rmdir /boot": "deny",
|
|
453
|
+
"*/rmdir * /boot": "deny",
|
|
454
|
+
"*/rmdir * /boot *": "deny",
|
|
455
|
+
"*/rmdir /dev": "deny",
|
|
456
|
+
"*/rmdir * /dev": "deny",
|
|
457
|
+
"*/rmdir * /dev *": "deny",
|
|
458
|
+
"*/rmdir /proc": "deny",
|
|
459
|
+
"*/rmdir * /proc": "deny",
|
|
460
|
+
"*/rmdir * /proc *": "deny",
|
|
461
|
+
"*/rmdir /sys": "deny",
|
|
462
|
+
"*/rmdir * /sys": "deny",
|
|
463
|
+
"*/rmdir * /sys *": "deny",
|
|
464
|
+
"*.env*": "deny",
|
|
465
|
+
"*/.ssh*": "deny",
|
|
466
|
+
"*/.aws/credentials*": "deny",
|
|
467
|
+
"*.npmrc*": "deny",
|
|
468
|
+
"*.git-credentials*": "deny",
|
|
469
|
+
"*id_rsa*": "deny",
|
|
470
|
+
"*id_ed25519*": "deny",
|
|
471
|
+
"*.pem*": "deny",
|
|
472
|
+
"*.key*": "deny",
|
|
473
|
+
"*rm /etc/*": "deny",
|
|
474
|
+
"*rm * /etc/*": "deny",
|
|
475
|
+
"*rm /usr/*": "deny",
|
|
476
|
+
"*rm * /usr/*": "deny",
|
|
477
|
+
"*rm /bin/*": "deny",
|
|
478
|
+
"*rm * /bin/*": "deny",
|
|
479
|
+
"*rm /sbin/*": "deny",
|
|
480
|
+
"*rm * /sbin/*": "deny",
|
|
481
|
+
"*rm /boot/*": "deny",
|
|
482
|
+
"*rm * /boot/*": "deny",
|
|
483
|
+
"*rm /dev/*": "deny",
|
|
484
|
+
"*rm * /dev/*": "deny",
|
|
485
|
+
"*rm /proc/*": "deny",
|
|
486
|
+
"*rm * /proc/*": "deny",
|
|
487
|
+
"*rm /sys/*": "deny",
|
|
488
|
+
"*rm * /sys/*": "deny",
|
|
489
|
+
"*rm /": "deny",
|
|
490
|
+
"*rm * /": "deny",
|
|
491
|
+
"*rm * / *": "deny",
|
|
492
|
+
"*rmdir /etc/*": "deny",
|
|
493
|
+
"*rmdir * /etc/*": "deny",
|
|
494
|
+
"*rmdir /usr/*": "deny",
|
|
495
|
+
"*rmdir * /usr/*": "deny",
|
|
496
|
+
"*rmdir /bin/*": "deny",
|
|
497
|
+
"*rmdir * /bin/*": "deny",
|
|
498
|
+
"*rmdir /sbin/*": "deny",
|
|
499
|
+
"*rmdir * /sbin/*": "deny",
|
|
500
|
+
"*rmdir /boot/*": "deny",
|
|
501
|
+
"*rmdir * /boot/*": "deny",
|
|
502
|
+
"*rmdir /dev/*": "deny",
|
|
503
|
+
"*rmdir * /dev/*": "deny",
|
|
504
|
+
"*rmdir /proc/*": "deny",
|
|
505
|
+
"*rmdir * /proc/*": "deny",
|
|
506
|
+
"*rmdir /sys/*": "deny",
|
|
507
|
+
"*rmdir * /sys/*": "deny",
|
|
508
|
+
"*rmdir /": "deny",
|
|
509
|
+
"*rmdir * /": "deny",
|
|
510
|
+
"*rmdir * / *": "deny",
|
|
511
|
+
"find / *-delete*": "deny",
|
|
512
|
+
"find * / *-delete*": "deny",
|
|
513
|
+
"find //* *-delete*": "deny",
|
|
514
|
+
"find * //* *-delete*": "deny",
|
|
515
|
+
"find /etc *-delete*": "deny",
|
|
516
|
+
"find * /etc *-delete*": "deny",
|
|
517
|
+
"find /etc/* *-delete*": "deny",
|
|
518
|
+
"find * /etc/* *-delete*": "deny",
|
|
519
|
+
"find /usr *-delete*": "deny",
|
|
520
|
+
"find * /usr *-delete*": "deny",
|
|
521
|
+
"find /usr/* *-delete*": "deny",
|
|
522
|
+
"find * /usr/* *-delete*": "deny",
|
|
523
|
+
"find /bin *-delete*": "deny",
|
|
524
|
+
"find * /bin *-delete*": "deny",
|
|
525
|
+
"find /bin/* *-delete*": "deny",
|
|
526
|
+
"find * /bin/* *-delete*": "deny",
|
|
527
|
+
"find /sbin *-delete*": "deny",
|
|
528
|
+
"find * /sbin *-delete*": "deny",
|
|
529
|
+
"find /sbin/* *-delete*": "deny",
|
|
530
|
+
"find * /sbin/* *-delete*": "deny",
|
|
531
|
+
"find /boot *-delete*": "deny",
|
|
532
|
+
"find * /boot *-delete*": "deny",
|
|
533
|
+
"find /boot/* *-delete*": "deny",
|
|
534
|
+
"find * /boot/* *-delete*": "deny",
|
|
535
|
+
"find /dev *-delete*": "deny",
|
|
536
|
+
"find * /dev *-delete*": "deny",
|
|
537
|
+
"find /dev/* *-delete*": "deny",
|
|
538
|
+
"find * /dev/* *-delete*": "deny",
|
|
539
|
+
"find /proc *-delete*": "deny",
|
|
540
|
+
"find * /proc *-delete*": "deny",
|
|
541
|
+
"find /proc/* *-delete*": "deny",
|
|
542
|
+
"find * /proc/* *-delete*": "deny",
|
|
543
|
+
"find /sys *-delete*": "deny",
|
|
544
|
+
"find * /sys *-delete*": "deny",
|
|
545
|
+
"find /sys/* *-delete*": "deny",
|
|
546
|
+
"find * /sys/* *-delete*": "deny",
|
|
547
|
+
"* format": "deny",
|
|
548
|
+
"* format *": "deny",
|
|
549
|
+
"* mkfs": "deny",
|
|
550
|
+
"* mkfs *": "deny",
|
|
551
|
+
"* dd": "deny",
|
|
552
|
+
"* dd *": "deny",
|
|
553
|
+
"* shred": "deny",
|
|
554
|
+
"* shred *": "deny",
|
|
555
|
+
"* mkfs.*": "deny",
|
|
556
|
+
"* rm /": "deny",
|
|
557
|
+
"* rm * /": "deny",
|
|
558
|
+
"* rm * / *": "deny",
|
|
559
|
+
"* rm /etc": "deny",
|
|
560
|
+
"* rm * /etc": "deny",
|
|
561
|
+
"* rm * /etc *": "deny",
|
|
562
|
+
"* rm /usr": "deny",
|
|
563
|
+
"* rm * /usr": "deny",
|
|
564
|
+
"* rm * /usr *": "deny",
|
|
565
|
+
"* rm /bin": "deny",
|
|
566
|
+
"* rm * /bin": "deny",
|
|
567
|
+
"* rm * /bin *": "deny",
|
|
568
|
+
"* rm /sbin": "deny",
|
|
569
|
+
"* rm * /sbin": "deny",
|
|
570
|
+
"* rm * /sbin *": "deny",
|
|
571
|
+
"* rm /boot": "deny",
|
|
572
|
+
"* rm * /boot": "deny",
|
|
573
|
+
"* rm * /boot *": "deny",
|
|
574
|
+
"* rm /dev": "deny",
|
|
575
|
+
"* rm * /dev": "deny",
|
|
576
|
+
"* rm * /dev *": "deny",
|
|
577
|
+
"* rm /proc": "deny",
|
|
578
|
+
"* rm * /proc": "deny",
|
|
579
|
+
"* rm * /proc *": "deny",
|
|
580
|
+
"* rm /sys": "deny",
|
|
581
|
+
"* rm * /sys": "deny",
|
|
582
|
+
"* rm * /sys *": "deny",
|
|
583
|
+
"* rmdir /": "deny",
|
|
584
|
+
"* rmdir * /": "deny",
|
|
585
|
+
"* rmdir * / *": "deny",
|
|
586
|
+
"* rmdir /etc": "deny",
|
|
587
|
+
"* rmdir * /etc": "deny",
|
|
588
|
+
"* rmdir * /etc *": "deny",
|
|
589
|
+
"* rmdir /usr": "deny",
|
|
590
|
+
"* rmdir * /usr": "deny",
|
|
591
|
+
"* rmdir * /usr *": "deny",
|
|
592
|
+
"* rmdir /bin": "deny",
|
|
593
|
+
"* rmdir * /bin": "deny",
|
|
594
|
+
"* rmdir * /bin *": "deny",
|
|
595
|
+
"* rmdir /sbin": "deny",
|
|
596
|
+
"* rmdir * /sbin": "deny",
|
|
597
|
+
"* rmdir * /sbin *": "deny",
|
|
598
|
+
"* rmdir /boot": "deny",
|
|
599
|
+
"* rmdir * /boot": "deny",
|
|
600
|
+
"* rmdir * /boot *": "deny",
|
|
601
|
+
"* rmdir /dev": "deny",
|
|
602
|
+
"* rmdir * /dev": "deny",
|
|
603
|
+
"* rmdir * /dev *": "deny",
|
|
604
|
+
"* rmdir /proc": "deny",
|
|
605
|
+
"* rmdir * /proc": "deny",
|
|
606
|
+
"* rmdir * /proc *": "deny",
|
|
607
|
+
"* rmdir /sys": "deny",
|
|
608
|
+
"* rmdir * /sys": "deny",
|
|
609
|
+
"* rmdir * /sys *": "deny",
|
|
610
|
+
"* find / *-delete*": "deny",
|
|
611
|
+
"* find * / *-delete*": "deny",
|
|
612
|
+
"* find //* *-delete*": "deny",
|
|
613
|
+
"* find * //* *-delete*": "deny",
|
|
614
|
+
"* find /etc *-delete*": "deny",
|
|
615
|
+
"* find * /etc *-delete*": "deny",
|
|
616
|
+
"* find /etc/* *-delete*": "deny",
|
|
617
|
+
"* find * /etc/* *-delete*": "deny",
|
|
618
|
+
"* find /usr *-delete*": "deny",
|
|
619
|
+
"* find * /usr *-delete*": "deny",
|
|
620
|
+
"* find /usr/* *-delete*": "deny",
|
|
621
|
+
"* find * /usr/* *-delete*": "deny",
|
|
622
|
+
"* find /bin *-delete*": "deny",
|
|
623
|
+
"* find * /bin *-delete*": "deny",
|
|
624
|
+
"* find /bin/* *-delete*": "deny",
|
|
625
|
+
"* find * /bin/* *-delete*": "deny",
|
|
626
|
+
"* find /sbin *-delete*": "deny",
|
|
627
|
+
"* find * /sbin *-delete*": "deny",
|
|
628
|
+
"* find /sbin/* *-delete*": "deny",
|
|
629
|
+
"* find * /sbin/* *-delete*": "deny",
|
|
630
|
+
"* find /boot *-delete*": "deny",
|
|
631
|
+
"* find * /boot *-delete*": "deny",
|
|
632
|
+
"* find /boot/* *-delete*": "deny",
|
|
633
|
+
"* find * /boot/* *-delete*": "deny",
|
|
634
|
+
"* find /dev *-delete*": "deny",
|
|
635
|
+
"* find * /dev *-delete*": "deny",
|
|
636
|
+
"* find /dev/* *-delete*": "deny",
|
|
637
|
+
"* find * /dev/* *-delete*": "deny",
|
|
638
|
+
"* find /proc *-delete*": "deny",
|
|
639
|
+
"* find * /proc *-delete*": "deny",
|
|
640
|
+
"* find /proc/* *-delete*": "deny",
|
|
641
|
+
"* find * /proc/* *-delete*": "deny",
|
|
642
|
+
"* find /sys *-delete*": "deny",
|
|
643
|
+
"* find * /sys *-delete*": "deny",
|
|
644
|
+
"* find /sys/* *-delete*": "deny",
|
|
645
|
+
"* find * /sys/* *-delete*": "deny"
|
|
646
|
+
},
|
|
647
|
+
"engram_*": "allow",
|
|
648
|
+
"context7_*": "allow"
|
|
43
649
|
}
|
|
44
650
|
},
|
|
45
651
|
"claude-code": {
|