patchwork-os 1.2.0-beta.2.canary.781 → 1.2.0-beta.2.canary.783
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/activityLog.js +6 -1
- package/dist/activityLog.js.map +1 -1
- package/dist/approvalQueue.js +15 -0
- package/dist/approvalQueue.js.map +1 -1
- package/dist/bridge.js +32 -1
- package/dist/bridge.js.map +1 -1
- package/dist/claudeDriver.d.ts +10 -0
- package/dist/claudeDriver.js +27 -4
- package/dist/claudeDriver.js.map +1 -1
- package/dist/claudeOrchestrator.d.ts +5 -0
- package/dist/claudeOrchestrator.js +94 -6
- package/dist/claudeOrchestrator.js.map +1 -1
- package/dist/commands/patchworkInit.js +10 -0
- package/dist/commands/patchworkInit.js.map +1 -1
- package/dist/commands/policyExplain.d.ts +50 -0
- package/dist/commands/policyExplain.js +221 -0
- package/dist/commands/policyExplain.js.map +1 -0
- package/dist/commands/profile.d.ts +17 -0
- package/dist/commands/profile.js +85 -0
- package/dist/commands/profile.js.map +1 -0
- package/dist/commands/recipe.d.ts +8 -0
- package/dist/commands/recipe.js +64 -0
- package/dist/commands/recipe.js.map +1 -1
- package/dist/commands/recipeInstall.js +19 -0
- package/dist/commands/recipeInstall.js.map +1 -1
- package/dist/connectors/baseConnector.js +5 -0
- package/dist/connectors/baseConnector.js.map +1 -1
- package/dist/connectors/secrets.js +10 -2
- package/dist/connectors/secrets.js.map +1 -1
- package/dist/connectors/tokenStorage.d.ts +9 -0
- package/dist/connectors/tokenStorage.js +27 -0
- package/dist/connectors/tokenStorage.js.map +1 -1
- package/dist/decisionTraceLog.js +4 -3
- package/dist/decisionTraceLog.js.map +1 -1
- package/dist/drivers/claude/envSanitizer.d.ts +39 -0
- package/dist/drivers/claude/envSanitizer.js +114 -0
- package/dist/drivers/claude/envSanitizer.js.map +1 -1
- package/dist/drivers/claude/subprocess.d.ts +12 -0
- package/dist/drivers/claude/subprocess.js +114 -25
- package/dist/drivers/claude/subprocess.js.map +1 -1
- package/dist/drivers/claude/subprocessSettings.d.ts +4 -1
- package/dist/drivers/claude/subprocessSettings.js +24 -7
- package/dist/drivers/claude/subprocessSettings.js.map +1 -1
- package/dist/drivers/codex/subprocess.d.ts +19 -0
- package/dist/drivers/codex/subprocess.js +40 -8
- package/dist/drivers/codex/subprocess.js.map +1 -1
- package/dist/drivers/gemini/index.d.ts +24 -0
- package/dist/drivers/gemini/index.js +76 -13
- package/dist/drivers/gemini/index.js.map +1 -1
- package/dist/drivers/types.d.ts +14 -0
- package/dist/drivers/types.js.map +1 -1
- package/dist/errors.d.ts +1 -0
- package/dist/errors.js +1 -0
- package/dist/errors.js.map +1 -1
- package/dist/governance/doctorReport.d.ts +45 -0
- package/dist/governance/doctorReport.js +251 -0
- package/dist/governance/doctorReport.js.map +1 -0
- package/dist/governance/effectivePolicy.d.ts +134 -0
- package/dist/governance/effectivePolicy.js +322 -0
- package/dist/governance/effectivePolicy.js.map +1 -0
- package/dist/governance/killSwitchPolicy.d.ts +30 -0
- package/dist/governance/killSwitchPolicy.js +52 -0
- package/dist/governance/killSwitchPolicy.js.map +1 -0
- package/dist/governance/pluginPolicy.d.ts +111 -0
- package/dist/governance/pluginPolicy.js +247 -0
- package/dist/governance/pluginPolicy.js.map +1 -0
- package/dist/governance/profile.d.ts +153 -0
- package/dist/governance/profile.js +181 -0
- package/dist/governance/profile.js.map +1 -0
- package/dist/governance/secretValues.d.ts +89 -0
- package/dist/governance/secretValues.js +286 -0
- package/dist/governance/secretValues.js.map +1 -0
- package/dist/governance/toolFacts.d.ts +11 -0
- package/dist/governance/toolFacts.js +46 -0
- package/dist/governance/toolFacts.js.map +1 -0
- package/dist/governance/untrustedContent.d.ts +43 -0
- package/dist/governance/untrustedContent.js +81 -0
- package/dist/governance/untrustedContent.js.map +1 -0
- package/dist/index.js +73 -5
- package/dist/index.js.map +1 -1
- package/dist/logger.js +7 -6
- package/dist/logger.js.map +1 -1
- package/dist/patchworkConfig.d.ts +22 -0
- package/dist/patchworkConfig.js.map +1 -1
- package/dist/pluginLoader.d.ts +10 -2
- package/dist/pluginLoader.js +12 -8
- package/dist/pluginLoader.js.map +1 -1
- package/dist/recipeOrchestration.d.ts +0 -6
- package/dist/recipeOrchestration.js +80 -23
- package/dist/recipeOrchestration.js.map +1 -1
- package/dist/recipeRoutes.js +52 -0
- package/dist/recipeRoutes.js.map +1 -1
- package/dist/recipes/agentExecutor.d.ts +43 -3
- package/dist/recipes/agentExecutor.js +55 -7
- package/dist/recipes/agentExecutor.js.map +1 -1
- package/dist/recipes/approvalRequest.d.ts +8 -0
- package/dist/recipes/approvalRequest.js.map +1 -1
- package/dist/recipes/chainedRunner.d.ts +18 -5
- package/dist/recipes/chainedRunner.js +107 -12
- package/dist/recipes/chainedRunner.js.map +1 -1
- package/dist/recipes/haltCategory.d.ts +4 -0
- package/dist/recipes/haltCategory.js +4 -0
- package/dist/recipes/haltCategory.js.map +1 -1
- package/dist/recipes/schema.d.ts +5 -1
- package/dist/recipes/schemaGenerator.js +12 -1
- package/dist/recipes/schemaGenerator.js.map +1 -1
- package/dist/recipes/stepObservation.d.ts +15 -0
- package/dist/recipes/stepObservation.js +27 -22
- package/dist/recipes/stepObservation.js.map +1 -1
- package/dist/recipes/templateEngine.d.ts +11 -1
- package/dist/recipes/templateEngine.js +12 -2
- package/dist/recipes/templateEngine.js.map +1 -1
- package/dist/recipes/toolRegistry.d.ts +3 -1
- package/dist/recipes/toolRegistry.js +9 -3
- package/dist/recipes/toolRegistry.js.map +1 -1
- package/dist/recipes/tools/http.d.ts +5 -2
- package/dist/recipes/tools/http.js +29 -10
- package/dist/recipes/tools/http.js.map +1 -1
- package/dist/recipes/validation.d.ts +10 -1
- package/dist/recipes/validation.js +51 -1
- package/dist/recipes/validation.js.map +1 -1
- package/dist/recipes/yamlRunner.d.ts +46 -5
- package/dist/recipes/yamlRunner.js +173 -21
- package/dist/recipes/yamlRunner.js.map +1 -1
- package/dist/schemas/recipe.v1.json +60 -3
- package/dist/server.js +15 -0
- package/dist/server.js.map +1 -1
- package/dist/ssrfGuard.d.ts +89 -5
- package/dist/ssrfGuard.js +250 -5
- package/dist/ssrfGuard.js.map +1 -1
- package/dist/tools/httpClient.js +23 -165
- package/dist/tools/httpClient.js.map +1 -1
- package/dist/transport.js +41 -0
- package/dist/transport.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { spawn } from "node:child_process";
|
|
2
|
-
import { mkdtempSync, writeFileSync } from "node:fs";
|
|
2
|
+
import { mkdtempSync, rmSync, writeFileSync } from "node:fs";
|
|
3
3
|
import { tmpdir } from "node:os";
|
|
4
4
|
import { join } from "node:path";
|
|
5
5
|
import { treeKill } from "../../processTree.js";
|
|
6
6
|
import { ensureCmdShim } from "../../winShim.js";
|
|
7
7
|
import { truncateToBytes, truncateUtf8Bytes } from "../outputCap.js";
|
|
8
8
|
import { toProviderTaskOutcome } from "../types.js";
|
|
9
|
-
import { sanitizeEnv } from "./envSanitizer.js";
|
|
9
|
+
import { allowlistEnv, passEnvFromProviderOptions, sanitizeEnv, } from "./envSanitizer.js";
|
|
10
10
|
import { parseStreamLine, splitLines } from "./streamParser.js";
|
|
11
11
|
import { createSubprocessSettings } from "./subprocessSettings.js";
|
|
12
12
|
const OUTPUT_CAP = 50 * 1024; // 50KB
|
|
@@ -22,18 +22,28 @@ const OUTPUT_CAP = 50 * 1024; // 50KB
|
|
|
22
22
|
* spawns the shim, the shim auto-discovers the running bridge from
|
|
23
23
|
* `~/.claude/ide/*.lock`, and forwards JSON-RPC over stdin/stdout.
|
|
24
24
|
*
|
|
25
|
-
* The temp file is
|
|
26
|
-
*
|
|
27
|
-
*
|
|
28
|
-
*
|
|
25
|
+
* The temp file is not deleted until the child CLOSES — claude -p reads it
|
|
26
|
+
* asynchronously during MCP init, so unlinking any earlier is racy. The dir
|
|
27
|
+
* is created with `mkdtemp` under `os.tmpdir()` (per-run); the caller
|
|
28
|
+
* removes it on child close (previously it was never removed at all).
|
|
29
29
|
*
|
|
30
|
-
* The
|
|
31
|
-
*
|
|
32
|
-
* file
|
|
30
|
+
* The bridge's port is derived from `mcp.url` and pinned onto the shim via
|
|
31
|
+
* `--port`, so the child attaches to the bridge that SPAWNED it rather than
|
|
32
|
+
* to whichever lock file is newest (the shim's default discovery). The
|
|
33
|
+
* bearer token is never written: the shim reads it from the lock file.
|
|
33
34
|
*/
|
|
34
|
-
function writeMcpConfigFile(
|
|
35
|
+
function writeMcpConfigFile(mcp) {
|
|
35
36
|
const dir = mkdtempSync(join(tmpdir(), "patchwork-mcp-"));
|
|
36
37
|
const path = join(dir, "mcp.json");
|
|
38
|
+
let port;
|
|
39
|
+
try {
|
|
40
|
+
const p = new URL(mcp.url).port;
|
|
41
|
+
if (/^\d+$/.test(p))
|
|
42
|
+
port = p;
|
|
43
|
+
}
|
|
44
|
+
catch {
|
|
45
|
+
/* unparseable url — fall back to shim discovery */
|
|
46
|
+
}
|
|
37
47
|
// claude -p spawns the stdio command itself via Node's child_process, which
|
|
38
48
|
// can't resolve a bare `.cmd` shim on Windows (shell:false; only PATHEXT-
|
|
39
49
|
// listed `.exe` files auto-resolve). Record the `.cmd` form on win32 so
|
|
@@ -43,13 +53,40 @@ function writeMcpConfigFile(_mcp) {
|
|
|
43
53
|
patchwork: {
|
|
44
54
|
type: "stdio",
|
|
45
55
|
command: ensureCmdShim("claude-ide-bridge"),
|
|
46
|
-
args: ["shim"],
|
|
56
|
+
args: port ? ["shim", "--port", port] : ["shim"],
|
|
47
57
|
},
|
|
48
58
|
},
|
|
49
59
|
};
|
|
50
60
|
writeFileSync(path, JSON.stringify(config), { mode: 0o600 });
|
|
51
|
-
return path;
|
|
61
|
+
return { path, dir };
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Accept a containment either typed on the input or repackaged into the
|
|
65
|
+
* untyped providerOptions bag (the orchestrator hop). Shape-checked, never
|
|
66
|
+
* trusted blindly: a malformed object is ignored rather than half-applied.
|
|
67
|
+
*/
|
|
68
|
+
export function containmentFromInput(input) {
|
|
69
|
+
const c = input.containment ?? input.providerOptions?.containment;
|
|
70
|
+
if (!c || typeof c !== "object")
|
|
71
|
+
return undefined;
|
|
72
|
+
const o = c;
|
|
73
|
+
if (typeof o.enforced !== "boolean")
|
|
74
|
+
return undefined;
|
|
75
|
+
const strs = (v) => Array.isArray(v) ? v.filter((t) => typeof t === "string") : [];
|
|
76
|
+
return {
|
|
77
|
+
enforced: o.enforced,
|
|
78
|
+
allowedTools: strs(o.allowedTools),
|
|
79
|
+
deniedTools: strs(o.deniedTools),
|
|
80
|
+
envAllowlist: o.envAllowlist === true,
|
|
81
|
+
mcpAccess: o.mcpAccess === true,
|
|
82
|
+
widenings: strs(o.widenings),
|
|
83
|
+
};
|
|
52
84
|
}
|
|
85
|
+
/** Provider credentials the Claude CLI authenticates with. */
|
|
86
|
+
export const CLAUDE_PROVIDER_ENV_KEYS = Object.freeze([
|
|
87
|
+
"ANTHROPIC_API_KEY",
|
|
88
|
+
"CLAUDE_CODE_OAUTH_TOKEN",
|
|
89
|
+
]);
|
|
53
90
|
/**
|
|
54
91
|
* Scrub secrets from a string before storing or surfacing it.
|
|
55
92
|
*/
|
|
@@ -76,6 +113,8 @@ export class SubprocessDriver {
|
|
|
76
113
|
bridgeMcp;
|
|
77
114
|
name = "subprocess";
|
|
78
115
|
settings;
|
|
116
|
+
/** Contained-run settings files, keyed by their deny set. */
|
|
117
|
+
containedSettings = new Map();
|
|
79
118
|
constructor(binary, antBinary, log, bridgeMcp) {
|
|
80
119
|
this.binary = binary;
|
|
81
120
|
this.antBinary = antBinary;
|
|
@@ -85,6 +124,15 @@ export class SubprocessDriver {
|
|
|
85
124
|
// Best-effort initial write; per-run write in run() is the enforcement gate.
|
|
86
125
|
this.settings.write();
|
|
87
126
|
}
|
|
127
|
+
settingsFor(deniedTools) {
|
|
128
|
+
const key = [...deniedTools].sort().join("\u0000");
|
|
129
|
+
let s = this.containedSettings.get(key);
|
|
130
|
+
if (!s) {
|
|
131
|
+
s = createSubprocessSettings(this.log, deniedTools);
|
|
132
|
+
this.containedSettings.set(key, s);
|
|
133
|
+
}
|
|
134
|
+
return s;
|
|
135
|
+
}
|
|
88
136
|
async run(input) {
|
|
89
137
|
const opts = input.providerOptions ?? {};
|
|
90
138
|
const useAnt = opts.useAnt === true;
|
|
@@ -98,7 +146,14 @@ export class SubprocessDriver {
|
|
|
98
146
|
// Re-write before each run — /tmp may be cleared on long-running servers.
|
|
99
147
|
// M11: abort if write fails — spawning without the settings file would run
|
|
100
148
|
// claude -p without the deny list, bypassing the command block entirely.
|
|
101
|
-
|
|
149
|
+
// Phase 0 step 6: containment resolved by the caller (agentExecutor via
|
|
150
|
+
// `resolveAgentContainment`). Absent ⇒ legacy providerOptions keys below.
|
|
151
|
+
const containment = containmentFromInput(input);
|
|
152
|
+
const contained = containment?.enforced === true;
|
|
153
|
+
const settings = contained
|
|
154
|
+
? this.settingsFor(containment?.deniedTools ?? [])
|
|
155
|
+
: this.settings;
|
|
156
|
+
if (!settings.write()) {
|
|
102
157
|
throw new Error("[SubprocessDriver] Failed to write settings file — cannot spawn claude -p without deny list");
|
|
103
158
|
}
|
|
104
159
|
// Defense-in-depth: reject argv-confusable user-controlled strings. Spawn
|
|
@@ -109,17 +164,30 @@ export class SubprocessDriver {
|
|
|
109
164
|
if (input.prompt.startsWith("-")) {
|
|
110
165
|
throw new Error("[SubprocessDriver] prompt cannot start with '-' (argv injection guard)");
|
|
111
166
|
}
|
|
112
|
-
|
|
167
|
+
// With a containment present, ITS mcpAccess is the decision — a step
|
|
168
|
+
// cannot reach the bridge's tool surface by setting the legacy key alone.
|
|
169
|
+
const mcpAccess = containment
|
|
170
|
+
? containment.mcpAccess
|
|
171
|
+
: opts.mcpAccess === true;
|
|
113
172
|
const mcp = mcpAccess ? this.bridgeMcp?.() : undefined;
|
|
114
173
|
// P0-5 opt-in tool sandbox. Filter argv-injection-confusable values up front
|
|
115
174
|
// (leading `-` could be misread as a flag by the child's parser), then key
|
|
116
175
|
// the sandbox branch off the FILTERED allowlist being non-empty.
|
|
176
|
+
const argvSafe = (list) => (Array.isArray(list) ? list : []).filter((t) => typeof t === "string" && t.length > 0 && !t.startsWith("-"));
|
|
117
177
|
const sandbox = opts.sandbox === true;
|
|
118
|
-
const allowedTools =
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
178
|
+
const allowedTools = contained
|
|
179
|
+
? argvSafe(containment?.allowedTools)
|
|
180
|
+
: argvSafe(opts.allowedTools);
|
|
181
|
+
// Deny is a union: the step's own list plus the containment's. A deny is
|
|
182
|
+
// never dropped by the presence of a containment.
|
|
183
|
+
const disallowedTools = Array.from(new Set([
|
|
184
|
+
...argvSafe(opts.disallowedTools),
|
|
185
|
+
...(contained ? argvSafe(containment?.deniedTools) : []),
|
|
186
|
+
]));
|
|
187
|
+
// Contained: permission mode is dontAsk even with an EMPTY allowlist
|
|
188
|
+
// (every tool call is then refused — the correct contained outcome).
|
|
189
|
+
// Legacy: the sandbox branch keys off a non-empty allowlist, as before.
|
|
190
|
+
const sandboxActive = contained || (sandbox && allowedTools.length > 0);
|
|
123
191
|
const args = [
|
|
124
192
|
"-p",
|
|
125
193
|
input.prompt,
|
|
@@ -129,7 +197,7 @@ export class SubprocessDriver {
|
|
|
129
197
|
// second session to the same bridge via a duplicate user-level entry.
|
|
130
198
|
"--strict-mcp-config",
|
|
131
199
|
"--settings",
|
|
132
|
-
|
|
200
|
+
settings.path,
|
|
133
201
|
"--output-format",
|
|
134
202
|
"stream-json",
|
|
135
203
|
"--verbose",
|
|
@@ -141,9 +209,11 @@ export class SubprocessDriver {
|
|
|
141
209
|
if (mcpAccess && !mcp) {
|
|
142
210
|
this.log("[SubprocessDriver] WARN: mcpAccess requested but bridge MCP endpoint unavailable (port not bound or feature unwired); spawning without MCP");
|
|
143
211
|
}
|
|
212
|
+
let mcpTmpDir;
|
|
144
213
|
if (mcp) {
|
|
145
|
-
const
|
|
146
|
-
|
|
214
|
+
const written = writeMcpConfigFile(mcp);
|
|
215
|
+
mcpTmpDir = written.dir;
|
|
216
|
+
args.push("--mcp-config", written.path);
|
|
147
217
|
}
|
|
148
218
|
if (input.model && !input.model.startsWith("-")) {
|
|
149
219
|
args.push("--model", input.model);
|
|
@@ -165,7 +235,9 @@ export class SubprocessDriver {
|
|
|
165
235
|
// permission rules are honored). --allowed-tools is variadic: push the
|
|
166
236
|
// flag once followed by all (already argv-filtered) tool values.
|
|
167
237
|
args.push("--permission-mode", "dontAsk");
|
|
168
|
-
|
|
238
|
+
if (allowedTools.length > 0) {
|
|
239
|
+
args.push("--allowed-tools", ...allowedTools);
|
|
240
|
+
}
|
|
169
241
|
}
|
|
170
242
|
else {
|
|
171
243
|
// Default (no sandbox): headless subprocesses can't respond to prompts.
|
|
@@ -181,8 +253,16 @@ export class SubprocessDriver {
|
|
|
181
253
|
args.push("--add-dir", f);
|
|
182
254
|
}
|
|
183
255
|
}
|
|
184
|
-
|
|
185
|
-
|
|
256
|
+
// Governed containment: ALLOWLIST the environment (only PATH/HOME/locale/
|
|
257
|
+
// proxy/etc., the Claude credential, and the recipe's declared passEnv).
|
|
258
|
+
// Otherwise the pre-profile denylist, unchanged.
|
|
259
|
+
const env = containment?.envAllowlist
|
|
260
|
+
? allowlistEnv(process.env, {
|
|
261
|
+
providerKeys: CLAUDE_PROVIDER_ENV_KEYS,
|
|
262
|
+
passEnv: passEnvFromProviderOptions(opts),
|
|
263
|
+
})
|
|
264
|
+
: sanitizeEnv(process.env);
|
|
265
|
+
this.log(`[SubprocessDriver] spawning: ${effectiveBinary} -p <prompt> (workspace: ${input.workspace}${contained ? `, contained: allowed=[${allowedTools.join(",")}] denied=[${disallowedTools.join(",")}] widenings=[${(containment?.widenings ?? []).join(",")}]` : ""})`);
|
|
186
266
|
const child = spawn(effectiveBinary, args, {
|
|
187
267
|
cwd: input.workspace,
|
|
188
268
|
env,
|
|
@@ -200,6 +280,15 @@ export class SubprocessDriver {
|
|
|
200
280
|
input.signal.addEventListener("abort", onAbort, { once: true });
|
|
201
281
|
child.once("close", () => {
|
|
202
282
|
input.signal.removeEventListener("abort", onAbort);
|
|
283
|
+
// Safe to remove now: claude -p has finished reading the MCP config.
|
|
284
|
+
if (mcpTmpDir) {
|
|
285
|
+
try {
|
|
286
|
+
rmSync(mcpTmpDir, { recursive: true, force: true });
|
|
287
|
+
}
|
|
288
|
+
catch {
|
|
289
|
+
/* best-effort */
|
|
290
|
+
}
|
|
291
|
+
}
|
|
203
292
|
});
|
|
204
293
|
let lineBuf = "";
|
|
205
294
|
let accumulated = "";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"subprocess.js","sourceRoot":"","sources":["../../../src/drivers/claude/subprocess.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"subprocess.js","sourceRoot":"","sources":["../../../src/drivers/claude/subprocess.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,8 +2,11 @@
|
|
|
2
2
|
* Write a minimal subprocess settings file that suppresses hooks and denies
|
|
3
3
|
* destructive operations. Uses --settings instead of --bare to preserve OAuth
|
|
4
4
|
* auth flows (--bare sets CLAUDE_CODE_SIMPLE=1 which skips OAuth).
|
|
5
|
+
*
|
|
6
|
+
* The file path is keyed on the deny set: a contained run and an uncontained
|
|
7
|
+
* run in the same bridge process must never share (and race on) one file.
|
|
5
8
|
*/
|
|
6
|
-
export declare function createSubprocessSettings(log: (msg: string) => void): {
|
|
9
|
+
export declare function createSubprocessSettings(log: (msg: string) => void, extraDeny?: readonly string[]): {
|
|
7
10
|
path: string;
|
|
8
11
|
write: () => boolean;
|
|
9
12
|
};
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { createHash } from "node:crypto";
|
|
1
2
|
import { writeFileSync } from "node:fs";
|
|
2
3
|
import { tmpdir } from "node:os";
|
|
3
4
|
import { join } from "node:path";
|
|
@@ -43,20 +44,36 @@ const DENY_LIST = [
|
|
|
43
44
|
"Bash(kill -9 *)",
|
|
44
45
|
"Bash(pkill *)",
|
|
45
46
|
];
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
47
|
+
/**
|
|
48
|
+
* Build the settings content. `extraDeny` (Phase 0 step 6) is the
|
|
49
|
+
* containment's denied tool list — under a governed profile that includes
|
|
50
|
+
* bare `WebFetch` / `WebSearch` / `Bash`, written into `permissions.deny` as
|
|
51
|
+
* well as passed via `--disallowed-tools`, so the denial holds even if a
|
|
52
|
+
* future CLI version changes how the argv flag composes with the mode.
|
|
53
|
+
*/
|
|
54
|
+
function settingsContent(extraDeny) {
|
|
55
|
+
return JSON.stringify({
|
|
56
|
+
hooks: {},
|
|
57
|
+
permissions: { deny: Array.from(new Set([...DENY_LIST, ...extraDeny])) },
|
|
58
|
+
});
|
|
59
|
+
}
|
|
50
60
|
/**
|
|
51
61
|
* Write a minimal subprocess settings file that suppresses hooks and denies
|
|
52
62
|
* destructive operations. Uses --settings instead of --bare to preserve OAuth
|
|
53
63
|
* auth flows (--bare sets CLAUDE_CODE_SIMPLE=1 which skips OAuth).
|
|
64
|
+
*
|
|
65
|
+
* The file path is keyed on the deny set: a contained run and an uncontained
|
|
66
|
+
* run in the same bridge process must never share (and race on) one file.
|
|
54
67
|
*/
|
|
55
|
-
export function createSubprocessSettings(log) {
|
|
56
|
-
const
|
|
68
|
+
export function createSubprocessSettings(log, extraDeny = []) {
|
|
69
|
+
const content = settingsContent(extraDeny);
|
|
70
|
+
const suffix = extraDeny.length === 0
|
|
71
|
+
? ""
|
|
72
|
+
: `-${createHash("sha256").update(content).digest("hex").slice(0, 12)}`;
|
|
73
|
+
const path = join(tmpdir(), `claude-ide-bridge-subprocess-settings-${process.pid}${suffix}.json`);
|
|
57
74
|
const write = () => {
|
|
58
75
|
try {
|
|
59
|
-
writeFileSync(path,
|
|
76
|
+
writeFileSync(path, content, "utf-8");
|
|
60
77
|
return true;
|
|
61
78
|
}
|
|
62
79
|
catch (err) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"subprocessSettings.js","sourceRoot":"","sources":["../../../src/drivers/claude/subprocessSettings.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACxC,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,gEAAgE;AAChE,MAAM,SAAS,GAAG;IAChB,uBAAuB;IACvB,oBAAoB;IACpB,oBAAoB;IACpB,qBAAqB;IACrB,qBAAqB;IACrB,6BAA6B;IAC7B,uBAAuB;IACvB,uBAAuB;IACvB,iBAAiB;IACjB,gBAAgB;IAChB,mBAAmB;IACnB,6BAA6B;IAC7B,yBAAyB;IACzB,qBAAqB;IACrB,8EAA8E;IAC9E,mDAAmD;IACnD,qBAAqB;IACrB,0BAA0B;IAC1B,2EAA2E;IAC3E,6EAA6E;IAC7E,mCAAmC;IACnC,gBAAgB;IAChB,gBAAgB;IAChB,gBAAgB;IAChB,eAAe;IACf,uBAAuB;IACvB,uBAAuB;IACvB,cAAc;IACd,kBAAkB;IAClB,2BAA2B;IAC3B,cAAc;IACd,qEAAqE;IACrE,qEAAqE;IACrE,8EAA8E;IAC9E,cAAc;IACd,cAAc;IACd,sBAAsB;IACtB,iBAAiB;IACjB,eAAe;CAChB,CAAC;AAEF,
|
|
1
|
+
{"version":3,"file":"subprocessSettings.js","sourceRoot":"","sources":["../../../src/drivers/claude/subprocessSettings.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACxC,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,gEAAgE;AAChE,MAAM,SAAS,GAAG;IAChB,uBAAuB;IACvB,oBAAoB;IACpB,oBAAoB;IACpB,qBAAqB;IACrB,qBAAqB;IACrB,6BAA6B;IAC7B,uBAAuB;IACvB,uBAAuB;IACvB,iBAAiB;IACjB,gBAAgB;IAChB,mBAAmB;IACnB,6BAA6B;IAC7B,yBAAyB;IACzB,qBAAqB;IACrB,8EAA8E;IAC9E,mDAAmD;IACnD,qBAAqB;IACrB,0BAA0B;IAC1B,2EAA2E;IAC3E,6EAA6E;IAC7E,mCAAmC;IACnC,gBAAgB;IAChB,gBAAgB;IAChB,gBAAgB;IAChB,eAAe;IACf,uBAAuB;IACvB,uBAAuB;IACvB,cAAc;IACd,kBAAkB;IAClB,2BAA2B;IAC3B,cAAc;IACd,qEAAqE;IACrE,qEAAqE;IACrE,8EAA8E;IAC9E,cAAc;IACd,cAAc;IACd,sBAAsB;IACtB,iBAAiB;IACjB,eAAe;CAChB,CAAC;AAEF;;;;;;GAMG;AACH,SAAS,eAAe,CAAC,SAA4B;IACnD,OAAO,IAAI,CAAC,SAAS,CAAC;QACpB,KAAK,EAAE,EAAE;QACT,WAAW,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,SAAS,EAAE,GAAG,SAAS,CAAC,CAAC,CAAC,EAAE;KACzE,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,wBAAwB,CACtC,GAA0B,EAC1B,YAA+B,EAAE;IAKjC,MAAM,OAAO,GAAG,eAAe,CAAC,SAAS,CAAC,CAAC;IAC3C,MAAM,MAAM,GACV,SAAS,CAAC,MAAM,KAAK,CAAC;QACpB,CAAC,CAAC,EAAE;QACJ,CAAC,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;IAC5E,MAAM,IAAI,GAAG,IAAI,CACf,MAAM,EAAE,EACR,yCAAyC,OAAO,CAAC,GAAG,GAAG,MAAM,OAAO,CACrE,CAAC;IACF,MAAM,KAAK,GAAG,GAAY,EAAE;QAC1B,IAAI,CAAC;YACH,aAAa,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;YACtC,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,GAAG,CACD,gEAAgE,IAAI,KAAK,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,uDAAuD,CACjL,CAAC;YACF,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC,CAAC;IACF,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;AACzB,CAAC"}
|
|
@@ -33,6 +33,25 @@ export declare function scrubSecrets(text: string): string;
|
|
|
33
33
|
* (process-group kill, not a direct-child-only kill()) is used from the
|
|
34
34
|
* start, not added later.
|
|
35
35
|
*/
|
|
36
|
+
/**
|
|
37
|
+
* Codex containment (Phase 0 step 6) — what `codex exec` CAN and CANNOT
|
|
38
|
+
* express. Codex has no per-tool allow/deny list at all; its knobs are the
|
|
39
|
+
* OS sandbox (`--sandbox read-only|workspace-write|danger-full-access`),
|
|
40
|
+
* `sandbox.network_access`, and `--search`. So containment is COARSE:
|
|
41
|
+
*
|
|
42
|
+
* - Contained: `--sandbox read-only` is FORCED (a step's own
|
|
43
|
+
* `sandboxMode` escalation is ignored), even when `shell` is widened —
|
|
44
|
+
* shell commands still run, but against a read-only filesystem, which
|
|
45
|
+
* is the narrowest mode that permits them.
|
|
46
|
+
* - Network: `sandbox.network_access=true` and `--search` only when the
|
|
47
|
+
* containment widened network AND the step asked for them.
|
|
48
|
+
* - `allowedTools` is not enforceable (no primitive). `policy explain`
|
|
49
|
+
* should describe Codex containment as "coarse: OS sandbox + network".
|
|
50
|
+
*
|
|
51
|
+
* Provider credential kept under the env allowlist: OPENAI_API_KEY (the
|
|
52
|
+
* subscription path uses codex's own auth file and needs no env at all).
|
|
53
|
+
*/
|
|
54
|
+
export declare const CODEX_PROVIDER_ENV_KEYS: readonly string[];
|
|
36
55
|
export declare class CodexDriver implements ProviderDriver {
|
|
37
56
|
private readonly binary;
|
|
38
57
|
private readonly log;
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { spawn } from "node:child_process";
|
|
2
2
|
import { treeKill } from "../../processTree.js";
|
|
3
3
|
import { ensureCmdShim } from "../../winShim.js";
|
|
4
|
-
import { sanitizeEnv } from "../claude/envSanitizer.js";
|
|
4
|
+
import { allowlistEnv, passEnvFromProviderOptions, sanitizeEnv, } from "../claude/envSanitizer.js";
|
|
5
|
+
import { containmentFromInput } from "../claude/subprocess.js";
|
|
5
6
|
import { truncateToBytes, truncateUtf8Bytes } from "../outputCap.js";
|
|
6
7
|
import { toProviderTaskOutcome } from "../types.js";
|
|
7
8
|
import { parseStreamLine, splitLines } from "./streamParser.js";
|
|
@@ -45,6 +46,27 @@ export function scrubSecrets(text) {
|
|
|
45
46
|
* (process-group kill, not a direct-child-only kill()) is used from the
|
|
46
47
|
* start, not added later.
|
|
47
48
|
*/
|
|
49
|
+
/**
|
|
50
|
+
* Codex containment (Phase 0 step 6) — what `codex exec` CAN and CANNOT
|
|
51
|
+
* express. Codex has no per-tool allow/deny list at all; its knobs are the
|
|
52
|
+
* OS sandbox (`--sandbox read-only|workspace-write|danger-full-access`),
|
|
53
|
+
* `sandbox.network_access`, and `--search`. So containment is COARSE:
|
|
54
|
+
*
|
|
55
|
+
* - Contained: `--sandbox read-only` is FORCED (a step's own
|
|
56
|
+
* `sandboxMode` escalation is ignored), even when `shell` is widened —
|
|
57
|
+
* shell commands still run, but against a read-only filesystem, which
|
|
58
|
+
* is the narrowest mode that permits them.
|
|
59
|
+
* - Network: `sandbox.network_access=true` and `--search` only when the
|
|
60
|
+
* containment widened network AND the step asked for them.
|
|
61
|
+
* - `allowedTools` is not enforceable (no primitive). `policy explain`
|
|
62
|
+
* should describe Codex containment as "coarse: OS sandbox + network".
|
|
63
|
+
*
|
|
64
|
+
* Provider credential kept under the env allowlist: OPENAI_API_KEY (the
|
|
65
|
+
* subscription path uses codex's own auth file and needs no env at all).
|
|
66
|
+
*/
|
|
67
|
+
export const CODEX_PROVIDER_ENV_KEYS = Object.freeze([
|
|
68
|
+
"OPENAI_API_KEY",
|
|
69
|
+
]);
|
|
48
70
|
export class CodexDriver {
|
|
49
71
|
binary;
|
|
50
72
|
log;
|
|
@@ -63,12 +85,17 @@ export class CodexDriver {
|
|
|
63
85
|
throw new Error("[CodexDriver] prompt cannot start with '-' (argv injection guard)");
|
|
64
86
|
}
|
|
65
87
|
const effectiveBinary = ensureCmdShim(this.binary);
|
|
66
|
-
const
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
88
|
+
const containment = containmentFromInput(input);
|
|
89
|
+
const contained = containment?.enforced === true;
|
|
90
|
+
const networkWidened = contained && !(containment?.deniedTools ?? []).includes("WebFetch");
|
|
91
|
+
const sandboxMode = contained
|
|
92
|
+
? "read-only"
|
|
93
|
+
: opts.sandboxMode === "workspace-write" ||
|
|
94
|
+
opts.sandboxMode === "danger-full-access"
|
|
95
|
+
? opts.sandboxMode
|
|
96
|
+
: "read-only";
|
|
97
|
+
const networkAccess = opts.networkAccess === true && (!contained || networkWidened);
|
|
98
|
+
const webSearch = opts.webSearch === true && (!contained || networkWidened);
|
|
72
99
|
const args = [
|
|
73
100
|
"exec",
|
|
74
101
|
input.prompt,
|
|
@@ -89,7 +116,12 @@ export class CodexDriver {
|
|
|
89
116
|
// see envSanitizer.ts's own doc comment). Codex's subscription auth
|
|
90
117
|
// lives in codex's own config/auth file, not an env var, so no
|
|
91
118
|
// `preserve` entry is needed for the default (subscription) auth path.
|
|
92
|
-
const env =
|
|
119
|
+
const env = containment?.envAllowlist
|
|
120
|
+
? allowlistEnv(process.env, {
|
|
121
|
+
providerKeys: CODEX_PROVIDER_ENV_KEYS,
|
|
122
|
+
passEnv: passEnvFromProviderOptions(opts),
|
|
123
|
+
})
|
|
124
|
+
: sanitizeEnv(process.env);
|
|
93
125
|
this.log(`[CodexDriver] spawning: ${effectiveBinary} exec <prompt> (workspace: ${input.workspace}, sandbox: ${sandboxMode})`);
|
|
94
126
|
const child = spawn(effectiveBinary, args, {
|
|
95
127
|
cwd: input.workspace,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"subprocess.js","sourceRoot":"","sources":["../../../src/drivers/codex/subprocess.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,
|
|
1
|
+
{"version":3,"file":"subprocess.js","sourceRoot":"","sources":["../../../src/drivers/codex/subprocess.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,6 +12,30 @@ import type { ProviderDriver, ProviderTaskInput, ProviderTaskResult } from "../t
|
|
|
12
12
|
* schema) so the deny list takes effect across CLI versions.
|
|
13
13
|
*/
|
|
14
14
|
export declare const GEMINI_SHELL_DENY_PATTERNS: string[];
|
|
15
|
+
/**
|
|
16
|
+
* Gemini containment (Phase 0 step 6) — what the CLI CAN and CANNOT express.
|
|
17
|
+
*
|
|
18
|
+
* Gemini CLI has no per-tool ALLOW list and no argv deny flag; the only
|
|
19
|
+
* knobs are `--approval-mode` and the settings-file `tools.exclude` list
|
|
20
|
+
* (tool names, or `run_shell_command(<prefix>)`). So containment is COARSE:
|
|
21
|
+
*
|
|
22
|
+
* - Contained, shell NOT widened: `--approval-mode plan` (read-only mode —
|
|
23
|
+
* no edits, no shell) AND exclude `run_shell_command`, `write_file`,
|
|
24
|
+
* `replace`, `save_memory` by name.
|
|
25
|
+
* - Network NOT widened: exclude `web_fetch` and `google_web_search`.
|
|
26
|
+
* - Shell widened: the operator's approvalMode (default yolo) is kept,
|
|
27
|
+
* since no headless mode exists that permits shell without prompts
|
|
28
|
+
* other than yolo; the shell deny-prefix list still applies.
|
|
29
|
+
* - `allowedTools` from the containment is NOT enforceable here (no
|
|
30
|
+
* allowlist primitive) — `policy explain` should describe Gemini
|
|
31
|
+
* containment as "coarse: mode + exclusions, no allowlist".
|
|
32
|
+
*
|
|
33
|
+
* Provider credentials kept under the env allowlist: GEMINI_API_KEY and
|
|
34
|
+
* the GOOGLE_* auth vars.
|
|
35
|
+
*/
|
|
36
|
+
export declare const GEMINI_CONTAINED_NETWORK_EXCLUDES: readonly string[];
|
|
37
|
+
export declare const GEMINI_CONTAINED_SHELL_EXCLUDES: readonly string[];
|
|
38
|
+
export declare const GEMINI_PROVIDER_ENV_KEYS: readonly string[];
|
|
15
39
|
/**
|
|
16
40
|
* GeminiSubprocessDriver — spawns `gemini -p` with --output-format stream-json.
|
|
17
41
|
* Auth: GEMINI_API_KEY env var (or gcloud ADC / Vertex if configured in ~/.gemini/settings.json).
|