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.
Files changed (135) hide show
  1. package/dist/activityLog.js +6 -1
  2. package/dist/activityLog.js.map +1 -1
  3. package/dist/approvalQueue.js +15 -0
  4. package/dist/approvalQueue.js.map +1 -1
  5. package/dist/bridge.js +32 -1
  6. package/dist/bridge.js.map +1 -1
  7. package/dist/claudeDriver.d.ts +10 -0
  8. package/dist/claudeDriver.js +27 -4
  9. package/dist/claudeDriver.js.map +1 -1
  10. package/dist/claudeOrchestrator.d.ts +5 -0
  11. package/dist/claudeOrchestrator.js +94 -6
  12. package/dist/claudeOrchestrator.js.map +1 -1
  13. package/dist/commands/patchworkInit.js +10 -0
  14. package/dist/commands/patchworkInit.js.map +1 -1
  15. package/dist/commands/policyExplain.d.ts +50 -0
  16. package/dist/commands/policyExplain.js +221 -0
  17. package/dist/commands/policyExplain.js.map +1 -0
  18. package/dist/commands/profile.d.ts +17 -0
  19. package/dist/commands/profile.js +85 -0
  20. package/dist/commands/profile.js.map +1 -0
  21. package/dist/commands/recipe.d.ts +8 -0
  22. package/dist/commands/recipe.js +64 -0
  23. package/dist/commands/recipe.js.map +1 -1
  24. package/dist/commands/recipeInstall.js +19 -0
  25. package/dist/commands/recipeInstall.js.map +1 -1
  26. package/dist/connectors/baseConnector.js +5 -0
  27. package/dist/connectors/baseConnector.js.map +1 -1
  28. package/dist/connectors/secrets.js +10 -2
  29. package/dist/connectors/secrets.js.map +1 -1
  30. package/dist/connectors/tokenStorage.d.ts +9 -0
  31. package/dist/connectors/tokenStorage.js +27 -0
  32. package/dist/connectors/tokenStorage.js.map +1 -1
  33. package/dist/decisionTraceLog.js +4 -3
  34. package/dist/decisionTraceLog.js.map +1 -1
  35. package/dist/drivers/claude/envSanitizer.d.ts +39 -0
  36. package/dist/drivers/claude/envSanitizer.js +114 -0
  37. package/dist/drivers/claude/envSanitizer.js.map +1 -1
  38. package/dist/drivers/claude/subprocess.d.ts +12 -0
  39. package/dist/drivers/claude/subprocess.js +114 -25
  40. package/dist/drivers/claude/subprocess.js.map +1 -1
  41. package/dist/drivers/claude/subprocessSettings.d.ts +4 -1
  42. package/dist/drivers/claude/subprocessSettings.js +24 -7
  43. package/dist/drivers/claude/subprocessSettings.js.map +1 -1
  44. package/dist/drivers/codex/subprocess.d.ts +19 -0
  45. package/dist/drivers/codex/subprocess.js +40 -8
  46. package/dist/drivers/codex/subprocess.js.map +1 -1
  47. package/dist/drivers/gemini/index.d.ts +24 -0
  48. package/dist/drivers/gemini/index.js +76 -13
  49. package/dist/drivers/gemini/index.js.map +1 -1
  50. package/dist/drivers/types.d.ts +14 -0
  51. package/dist/drivers/types.js.map +1 -1
  52. package/dist/errors.d.ts +1 -0
  53. package/dist/errors.js +1 -0
  54. package/dist/errors.js.map +1 -1
  55. package/dist/governance/doctorReport.d.ts +45 -0
  56. package/dist/governance/doctorReport.js +251 -0
  57. package/dist/governance/doctorReport.js.map +1 -0
  58. package/dist/governance/effectivePolicy.d.ts +134 -0
  59. package/dist/governance/effectivePolicy.js +322 -0
  60. package/dist/governance/effectivePolicy.js.map +1 -0
  61. package/dist/governance/killSwitchPolicy.d.ts +30 -0
  62. package/dist/governance/killSwitchPolicy.js +52 -0
  63. package/dist/governance/killSwitchPolicy.js.map +1 -0
  64. package/dist/governance/pluginPolicy.d.ts +111 -0
  65. package/dist/governance/pluginPolicy.js +247 -0
  66. package/dist/governance/pluginPolicy.js.map +1 -0
  67. package/dist/governance/profile.d.ts +153 -0
  68. package/dist/governance/profile.js +181 -0
  69. package/dist/governance/profile.js.map +1 -0
  70. package/dist/governance/secretValues.d.ts +89 -0
  71. package/dist/governance/secretValues.js +286 -0
  72. package/dist/governance/secretValues.js.map +1 -0
  73. package/dist/governance/toolFacts.d.ts +11 -0
  74. package/dist/governance/toolFacts.js +46 -0
  75. package/dist/governance/toolFacts.js.map +1 -0
  76. package/dist/governance/untrustedContent.d.ts +43 -0
  77. package/dist/governance/untrustedContent.js +81 -0
  78. package/dist/governance/untrustedContent.js.map +1 -0
  79. package/dist/index.js +73 -5
  80. package/dist/index.js.map +1 -1
  81. package/dist/logger.js +7 -6
  82. package/dist/logger.js.map +1 -1
  83. package/dist/patchworkConfig.d.ts +22 -0
  84. package/dist/patchworkConfig.js.map +1 -1
  85. package/dist/pluginLoader.d.ts +10 -2
  86. package/dist/pluginLoader.js +12 -8
  87. package/dist/pluginLoader.js.map +1 -1
  88. package/dist/recipeOrchestration.d.ts +0 -6
  89. package/dist/recipeOrchestration.js +80 -23
  90. package/dist/recipeOrchestration.js.map +1 -1
  91. package/dist/recipeRoutes.js +52 -0
  92. package/dist/recipeRoutes.js.map +1 -1
  93. package/dist/recipes/agentExecutor.d.ts +43 -3
  94. package/dist/recipes/agentExecutor.js +55 -7
  95. package/dist/recipes/agentExecutor.js.map +1 -1
  96. package/dist/recipes/approvalRequest.d.ts +8 -0
  97. package/dist/recipes/approvalRequest.js.map +1 -1
  98. package/dist/recipes/chainedRunner.d.ts +18 -5
  99. package/dist/recipes/chainedRunner.js +107 -12
  100. package/dist/recipes/chainedRunner.js.map +1 -1
  101. package/dist/recipes/haltCategory.d.ts +4 -0
  102. package/dist/recipes/haltCategory.js +4 -0
  103. package/dist/recipes/haltCategory.js.map +1 -1
  104. package/dist/recipes/schema.d.ts +5 -1
  105. package/dist/recipes/schemaGenerator.js +12 -1
  106. package/dist/recipes/schemaGenerator.js.map +1 -1
  107. package/dist/recipes/stepObservation.d.ts +15 -0
  108. package/dist/recipes/stepObservation.js +27 -22
  109. package/dist/recipes/stepObservation.js.map +1 -1
  110. package/dist/recipes/templateEngine.d.ts +11 -1
  111. package/dist/recipes/templateEngine.js +12 -2
  112. package/dist/recipes/templateEngine.js.map +1 -1
  113. package/dist/recipes/toolRegistry.d.ts +3 -1
  114. package/dist/recipes/toolRegistry.js +9 -3
  115. package/dist/recipes/toolRegistry.js.map +1 -1
  116. package/dist/recipes/tools/http.d.ts +5 -2
  117. package/dist/recipes/tools/http.js +29 -10
  118. package/dist/recipes/tools/http.js.map +1 -1
  119. package/dist/recipes/validation.d.ts +10 -1
  120. package/dist/recipes/validation.js +51 -1
  121. package/dist/recipes/validation.js.map +1 -1
  122. package/dist/recipes/yamlRunner.d.ts +46 -5
  123. package/dist/recipes/yamlRunner.js +173 -21
  124. package/dist/recipes/yamlRunner.js.map +1 -1
  125. package/dist/schemas/recipe.v1.json +60 -3
  126. package/dist/server.js +15 -0
  127. package/dist/server.js.map +1 -1
  128. package/dist/ssrfGuard.d.ts +89 -5
  129. package/dist/ssrfGuard.js +250 -5
  130. package/dist/ssrfGuard.js.map +1 -1
  131. package/dist/tools/httpClient.js +23 -165
  132. package/dist/tools/httpClient.js.map +1 -1
  133. package/dist/transport.js +41 -0
  134. package/dist/transport.js.map +1 -1
  135. 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 intentionally not deleted after the run — claude -p reads
26
- * it asynchronously during MCP init and unlinking too eagerly is racy. The
27
- * dir is created with `mkdtemp` under `os.tmpdir()` (per-run) so OS cleanup
28
- * handles it.
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 `mcp` parameter is currently unused at write time (the shim discovers
31
- * bridge state itself) but kept in the signature so callers continue to gate
32
- * file creation on bridge availability.
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(_mcp) {
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
- if (!this.settings.write()) {
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
- const mcpAccess = opts.mcpAccess === true;
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 = (Array.isArray(opts.allowedTools) ? opts.allowedTools : []).filter((t) => typeof t === "string" && t.length > 0 && !t.startsWith("-"));
119
- const disallowedTools = (Array.isArray(opts.disallowedTools)
120
- ? opts.disallowedTools
121
- : []).filter((t) => typeof t === "string" && t.length > 0 && !t.startsWith("-"));
122
- const sandboxActive = sandbox && allowedTools.length > 0;
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
- this.settings.path,
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 mcpConfigPath = writeMcpConfigFile(mcp);
146
- args.push("--mcp-config", mcpConfigPath);
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
- args.push("--allowed-tools", ...allowedTools);
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
- const env = sanitizeEnv(process.env);
185
- this.log(`[SubprocessDriver] spawning: ${effectiveBinary} -p <prompt> (workspace: ${input.workspace})`);
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
- const SETTINGS_CONTENT = JSON.stringify({
47
- hooks: {},
48
- permissions: { deny: DENY_LIST },
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 path = join(tmpdir(), `claude-ide-bridge-subprocess-settings-${process.pid}.json`);
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, SETTINGS_CONTENT, "utf-8");
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,MAAM,gBAAgB,GAAG,IAAI,CAAC,SAAS,CAAC;IACtC,KAAK,EAAE,EAAE;IACT,WAAW,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;CACjC,CAAC,CAAC;AAEH;;;;GAIG;AACH,MAAM,UAAU,wBAAwB,CAAC,GAA0B;IAIjE,MAAM,IAAI,GAAG,IAAI,CACf,MAAM,EAAE,EACR,yCAAyC,OAAO,CAAC,GAAG,OAAO,CAC5D,CAAC;IACF,MAAM,KAAK,GAAG,GAAY,EAAE;QAC1B,IAAI,CAAC;YACH,aAAa,CAAC,IAAI,EAAE,gBAAgB,EAAE,OAAO,CAAC,CAAC;YAC/C,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"}
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 sandboxMode = opts.sandboxMode === "workspace-write" ||
67
- opts.sandboxMode === "danger-full-access"
68
- ? opts.sandboxMode
69
- : "read-only";
70
- const networkAccess = opts.networkAccess === true;
71
- const webSearch = opts.webSearch === true;
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 = sanitizeEnv(process.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":"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"}
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).