harness-dispatch 0.8.0 → 0.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (174) hide show
  1. package/CHANGELOG.md +1074 -2
  2. package/README.md +92 -36
  3. package/config.default.yaml +19 -3
  4. package/dist/auth.d.ts.map +1 -1
  5. package/dist/auth.js.map +1 -1
  6. package/dist/billing.d.ts +24 -0
  7. package/dist/billing.d.ts.map +1 -1
  8. package/dist/billing.js +24 -0
  9. package/dist/billing.js.map +1 -1
  10. package/dist/bin.d.ts.map +1 -1
  11. package/dist/bin.js +299 -48
  12. package/dist/bin.js.map +1 -1
  13. package/dist/circuit-breaker.d.ts +9 -1
  14. package/dist/circuit-breaker.d.ts.map +1 -1
  15. package/dist/circuit-breaker.js +15 -1
  16. package/dist/circuit-breaker.js.map +1 -1
  17. package/dist/client-register.d.ts +11 -1
  18. package/dist/client-register.d.ts.map +1 -1
  19. package/dist/client-register.js +15 -6
  20. package/dist/client-register.js.map +1 -1
  21. package/dist/config/coercions.d.ts +5 -0
  22. package/dist/config/coercions.d.ts.map +1 -1
  23. package/dist/config/coercions.js +8 -0
  24. package/dist/config/coercions.js.map +1 -1
  25. package/dist/config/protocol.js.map +1 -1
  26. package/dist/config/validation.d.ts +12 -0
  27. package/dist/config/validation.d.ts.map +1 -1
  28. package/dist/config/validation.js +133 -7
  29. package/dist/config/validation.js.map +1 -1
  30. package/dist/config.d.ts +15 -5
  31. package/dist/config.d.ts.map +1 -1
  32. package/dist/config.js +199 -152
  33. package/dist/config.js.map +1 -1
  34. package/dist/configure-yaml.d.ts +2 -0
  35. package/dist/configure-yaml.d.ts.map +1 -1
  36. package/dist/configure-yaml.js +114 -4
  37. package/dist/configure-yaml.js.map +1 -1
  38. package/dist/dispatch-log.d.ts.map +1 -1
  39. package/dist/dispatch-log.js +3 -1
  40. package/dist/dispatch-log.js.map +1 -1
  41. package/dist/dispatchers/generic-cli.d.ts.map +1 -1
  42. package/dist/dispatchers/generic-cli.js +281 -112
  43. package/dist/dispatchers/generic-cli.js.map +1 -1
  44. package/dist/dispatchers/openai-compatible.d.ts +0 -5
  45. package/dist/dispatchers/openai-compatible.d.ts.map +1 -1
  46. package/dist/dispatchers/openai-compatible.js +150 -83
  47. package/dist/dispatchers/openai-compatible.js.map +1 -1
  48. package/dist/dispatchers/shared/harness-login.d.ts +25 -0
  49. package/dist/dispatchers/shared/harness-login.d.ts.map +1 -0
  50. package/dist/dispatchers/shared/harness-login.js +73 -0
  51. package/dist/dispatchers/shared/harness-login.js.map +1 -0
  52. package/dist/dispatchers/shared/stream-subprocess.d.ts.map +1 -1
  53. package/dist/dispatchers/shared/stream-subprocess.js +71 -58
  54. package/dist/dispatchers/shared/stream-subprocess.js.map +1 -1
  55. package/dist/file-lock.d.ts +29 -1
  56. package/dist/file-lock.d.ts.map +1 -1
  57. package/dist/file-lock.js +53 -20
  58. package/dist/file-lock.js.map +1 -1
  59. package/dist/harness-presets.d.ts +51 -0
  60. package/dist/harness-presets.d.ts.map +1 -0
  61. package/dist/harness-presets.js +154 -0
  62. package/dist/harness-presets.js.map +1 -0
  63. package/dist/http/parse.d.ts +8 -1
  64. package/dist/http/parse.d.ts.map +1 -1
  65. package/dist/http/parse.js +10 -3
  66. package/dist/http/parse.js.map +1 -1
  67. package/dist/http/server.d.ts +2 -0
  68. package/dist/http/server.d.ts.map +1 -1
  69. package/dist/http/server.js +188 -16
  70. package/dist/http/server.js.map +1 -1
  71. package/dist/job-runner.js +6 -0
  72. package/dist/job-runner.js.map +1 -1
  73. package/dist/jobs/context.d.ts +0 -7
  74. package/dist/jobs/context.d.ts.map +1 -1
  75. package/dist/jobs/context.js +95 -7
  76. package/dist/jobs/context.js.map +1 -1
  77. package/dist/jobs/lifecycle.d.ts +100 -0
  78. package/dist/jobs/lifecycle.d.ts.map +1 -0
  79. package/dist/jobs/lifecycle.js +263 -0
  80. package/dist/jobs/lifecycle.js.map +1 -0
  81. package/dist/jobs/read.d.ts +17 -0
  82. package/dist/jobs/read.d.ts.map +1 -0
  83. package/dist/jobs/read.js +103 -0
  84. package/dist/jobs/read.js.map +1 -0
  85. package/dist/jobs/run.d.ts +45 -0
  86. package/dist/jobs/run.d.ts.map +1 -0
  87. package/dist/jobs/run.js +351 -0
  88. package/dist/jobs/run.js.map +1 -0
  89. package/dist/jobs/start.d.ts +9 -0
  90. package/dist/jobs/start.d.ts.map +1 -0
  91. package/dist/jobs/start.js +126 -0
  92. package/dist/jobs/start.js.map +1 -0
  93. package/dist/jobs/store.d.ts.map +1 -1
  94. package/dist/jobs/store.js +13 -3
  95. package/dist/jobs/store.js.map +1 -1
  96. package/dist/jobs/supervisor.d.ts +151 -0
  97. package/dist/jobs/supervisor.d.ts.map +1 -0
  98. package/dist/jobs/supervisor.js +679 -0
  99. package/dist/jobs/supervisor.js.map +1 -0
  100. package/dist/jobs/types.d.ts +8 -1
  101. package/dist/jobs/types.d.ts.map +1 -1
  102. package/dist/jobs.d.ts +15 -218
  103. package/dist/jobs.d.ts.map +1 -1
  104. package/dist/jobs.js +14 -1317
  105. package/dist/jobs.js.map +1 -1
  106. package/dist/leaderboard.d.ts.map +1 -1
  107. package/dist/leaderboard.js +44 -28
  108. package/dist/leaderboard.js.map +1 -1
  109. package/dist/mcp/config-hot-reload.d.ts +14 -3
  110. package/dist/mcp/config-hot-reload.d.ts.map +1 -1
  111. package/dist/mcp/config-hot-reload.js +27 -6
  112. package/dist/mcp/config-hot-reload.js.map +1 -1
  113. package/dist/mcp/dispatcher-factory.d.ts.map +1 -1
  114. package/dist/mcp/dispatcher-factory.js +15 -4
  115. package/dist/mcp/dispatcher-factory.js.map +1 -1
  116. package/dist/mcp/resources.d.ts.map +1 -1
  117. package/dist/mcp/resources.js +3 -2
  118. package/dist/mcp/resources.js.map +1 -1
  119. package/dist/mcp/tool-schemas.d.ts +1 -1
  120. package/dist/mcp/tool-schemas.d.ts.map +1 -1
  121. package/dist/mcp/tool-schemas.js +6 -3
  122. package/dist/mcp/tool-schemas.js.map +1 -1
  123. package/dist/mcp/tools.d.ts +20 -6
  124. package/dist/mcp/tools.d.ts.map +1 -1
  125. package/dist/mcp/tools.js +92 -14
  126. package/dist/mcp/tools.js.map +1 -1
  127. package/dist/mcp-clients.d.ts +9 -0
  128. package/dist/mcp-clients.d.ts.map +1 -1
  129. package/dist/mcp-clients.js +4 -0
  130. package/dist/mcp-clients.js.map +1 -1
  131. package/dist/observability/spans.d.ts.map +1 -1
  132. package/dist/observability/spans.js +10 -2
  133. package/dist/observability/spans.js.map +1 -1
  134. package/dist/quota.d.ts.map +1 -1
  135. package/dist/quota.js +16 -2
  136. package/dist/quota.js.map +1 -1
  137. package/dist/redaction.d.ts +90 -0
  138. package/dist/redaction.d.ts.map +1 -0
  139. package/dist/redaction.js +221 -0
  140. package/dist/redaction.js.map +1 -0
  141. package/dist/route-policy.d.ts +2 -1
  142. package/dist/route-policy.d.ts.map +1 -1
  143. package/dist/route-policy.js +54 -0
  144. package/dist/route-policy.js.map +1 -1
  145. package/dist/router.d.ts +12 -23
  146. package/dist/router.d.ts.map +1 -1
  147. package/dist/router.js +86 -223
  148. package/dist/router.js.map +1 -1
  149. package/dist/safety.d.ts.map +1 -1
  150. package/dist/safety.js +7 -1
  151. package/dist/safety.js.map +1 -1
  152. package/dist/state-dir.d.ts +10 -0
  153. package/dist/state-dir.d.ts.map +1 -1
  154. package/dist/state-dir.js +27 -1
  155. package/dist/state-dir.js.map +1 -1
  156. package/dist/status.d.ts +14 -3
  157. package/dist/status.d.ts.map +1 -1
  158. package/dist/status.js +36 -3
  159. package/dist/status.js.map +1 -1
  160. package/dist/types.d.ts +24 -1
  161. package/dist/types.d.ts.map +1 -1
  162. package/dist/workspace-lock.d.ts +20 -0
  163. package/dist/workspace-lock.d.ts.map +1 -1
  164. package/dist/workspace-lock.js +63 -0
  165. package/dist/workspace-lock.js.map +1 -1
  166. package/dist/workspace-resolve.d.ts +0 -9
  167. package/dist/workspace-resolve.d.ts.map +1 -1
  168. package/dist/workspace-resolve.js +115 -183
  169. package/dist/workspace-resolve.js.map +1 -1
  170. package/dist/workspaces.d.ts +15 -0
  171. package/dist/workspaces.d.ts.map +1 -1
  172. package/dist/workspaces.js +330 -90
  173. package/dist/workspaces.js.map +1 -1
  174. package/package.json +5 -4
@@ -1,7 +1,7 @@
1
1
  import { execFile as execFileCb } from "node:child_process";
2
2
  import { createHash, randomUUID } from "node:crypto";
3
3
  import { constants as fsConstants, existsSync } from "node:fs";
4
- import { copyFile, mkdir, readdir, readFile, readlink, rm, stat, symlink, writeFile, } from "node:fs/promises";
4
+ import { chmod, copyFile, lstat, mkdir, readdir, readFile, readlink, realpath, rm, stat, symlink, writeFile, } from "node:fs/promises";
5
5
  import os from "node:os";
6
6
  import path from "node:path";
7
7
  import { promisify } from "node:util";
@@ -126,11 +126,240 @@ const ROOT_MARKER = ".harness-dispatch-root";
126
126
  * still reclaimed instead of leaking forever.
127
127
  */
128
128
  const RUN_DIR_RE = /^\d{4}-\d{2}-\d{2}T[\d-]+Z-\d+-.+-[0-9a-f]{8}$/;
129
- /** Record that this root is ours. Best effort: never fail a dispatch over it. */
129
+ /**
130
+ * Bring an existing workspace root up to 0700, and refuse one we do not own.
131
+ *
132
+ * Two separate problems, both POSIX-only, both found by an acceptance pass
133
+ * measuring the shipped `mode:` fix on real Linux rather than trusting it:
134
+ *
135
+ * ALREADY THERE — `mkdir`'s mode applies only to directories it creates, so
136
+ * an existing 0755 root stayed 0755. Every pre-existing user was
137
+ * unaffected by the "fix". An explicit chmod is the only thing that
138
+ * changes them.
139
+ * SOMEBODY ELSE'S — the root path is fully deterministic
140
+ * (`<tmp>/harness-dispatch/workspaces/<basename>-<hash of path>`) inside a
141
+ * SHARED `os.tmpdir()`, so on the multi-user machine this whole guard
142
+ * exists for, another local user can create it first. Then it is theirs:
143
+ * chmod fails, and copying the project into it would hand them the
144
+ * source. That is not a mode to fix, it is a directory to refuse.
145
+ *
146
+ * Throws on the second case. `markProjectRoot`'s caller treats a marker
147
+ * failure as harmless — correctly, a root without its marker is merely not
148
+ * auto-reclaimed — but "another user owns the directory I am about to copy
149
+ * your code into" is not in that category and must not be swallowed.
150
+ *
151
+ * Windows is skipped deliberately: `uid` is 0 for every process, Node ignores
152
+ * mode, and `os.tmpdir()` is already per-user there.
153
+ */
154
+ /**
155
+ * Build the workspace root one segment at a time, and hand back the path that
156
+ * was actually created.
157
+ *
158
+ * THIS REPLACES A CHECK-THEN-USE GUARD, and the replacement is the point. Four
159
+ * consecutive releases patched a validator that inspected a path STRING and
160
+ * then let the rest of the module re-resolve that same string on every write.
161
+ * Each patch closed the hole it was shown and left the shape intact, so the
162
+ * next pass found another one:
163
+ *
164
+ * - `stat` followed the link it was checking (release 1);
165
+ * - the guard was applied to one of the two isolation policies (release 2);
166
+ * - it inspected only the last path segment (release 3);
167
+ * - it stopped AT `workspacesBase()` and never looked at that directory's
168
+ * own parent — the one the release notes said it now checked;
169
+ * - it compared with `startsWith` against an un-normalised base, so a
170
+ * trailing slash or a `..` in HARNESS_DISPATCH_WORKSPACES_DIR turned the
171
+ * whole guard off silently;
172
+ * - and validating once left every later write re-resolving the string, so
173
+ * swapping a directory for a link DURING the copy redirected it (3,877
174
+ * files landed in an attacker's directory in the reproduction).
175
+ *
176
+ * So the rule is no longer "look at the path and then trust it". Every segment
177
+ * from the anchor down is CREATED BY US with a non-recursive mkdir, which
178
+ * cannot traverse a link we did not make: if something is already there,
179
+ * `mkdir` fails and we inspect it deliberately rather than following it. The
180
+ * verified, fully-resolved directory is then RETURNED, and callers use that
181
+ * value instead of re-deriving the string.
182
+ *
183
+ * The anchor is the directory the user chose (HARNESS_DISPATCH_WORKSPACES_DIR)
184
+ * or the system temp directory. Above it is not ours to police —
185
+ * `os.tmpdir()` is legitimately a symlink on macOS (`/var` -> `/private/var`),
186
+ * which is exactly why the anchor is RESOLVED rather than refused. Everything
187
+ * below it is ours, and a link there is refused.
188
+ *
189
+ * What this still does not give: `mkdir`/`lstat` name a path, not an open
190
+ * handle, so a sufficiently fast swap between two syscalls remains
191
+ * theoretically possible — Node exposes no `openat`/`O_NOFOLLOW`. The window
192
+ * is now one syscall rather than the whole dispatch, and every destructive
193
+ * operation re-verifies (see `assertStillOurs`) instead of trusting a check
194
+ * made minutes earlier.
195
+ */
196
+ async function verifySegment(dir) {
197
+ const info = await lstat(dir);
198
+ // Symlink check on EVERY platform. This was skipped entirely on Windows for
199
+ // a stated reason that covers only the ownership half — uid is 0 there and
200
+ // mode is ignored. Junctions need no privileges, `lstat` reports them as
201
+ // symbolic links, and a junction planted at the workspace path was measured
202
+ // taking a whole project into the victim's directory on this maintainer's
203
+ // own machine.
204
+ if (info.isSymbolicLink()) {
205
+ throw new Error(`${dir} is a symbolic link, and this tool never creates one there. Refusing to use ` +
206
+ `it: following it would put your project — and this tool's recursive cleanup — ` +
207
+ `wherever the link points. Remove it, or set HARNESS_DISPATCH_WORKSPACES_DIR to a ` +
208
+ `location you control.`);
209
+ }
210
+ if (!info.isDirectory()) {
211
+ throw new Error(`${dir} exists and is not a directory. Refusing to use it as a workspace location. ` +
212
+ `Remove it, or set HARNESS_DISPATCH_WORKSPACES_DIR to a location you control.`);
213
+ }
214
+ const uid = typeof process.getuid === "function" ? process.getuid() : undefined;
215
+ if (uid !== undefined && info.uid !== uid) {
216
+ throw new Error(`${dir} is owned by another user (uid ${info.uid}, this process is uid ${uid}). ` +
217
+ `Refusing to put your project beneath it: this path is predictable, so a directory ` +
218
+ `you do not own may have been created there deliberately. Remove it, or set ` +
219
+ `HARNESS_DISPATCH_WORKSPACES_DIR to a location you control.`);
220
+ }
221
+ if (process.platform !== "win32" && (info.mode & 0o077) !== 0)
222
+ await chmod(dir, 0o700);
223
+ }
224
+ /**
225
+ * Re-check, immediately before a destructive or bulk operation, that a
226
+ * directory verified earlier is still the one we verified.
227
+ *
228
+ * The old code validated once at the start of a dispatch and then trusted the
229
+ * path string for everything that followed. This is the narrow version of that
230
+ * trust: it costs one `lstat` and it turns "checked minutes ago" into "checked
231
+ * a syscall ago".
232
+ */
233
+ export async function assertStillOurs(dir) {
234
+ await verifySegment(dir);
235
+ }
236
+ /**
237
+ * The anchor, resolved. Above this we do not police; below it we do.
238
+ *
239
+ * `path.resolve` is what fixes the guard being silently inert for a
240
+ * HARNESS_DISPATCH_WORKSPACES_DIR written with a trailing slash or containing
241
+ * `..` — the old comparison was `startsWith` against the raw string, so those
242
+ * spellings failed to match and the loop body never ran even once.
243
+ */
244
+ async function resolvedAnchor() {
245
+ const configured = process.env.HARNESS_DISPATCH_WORKSPACES_DIR;
246
+ const anchor = configured !== undefined ? path.resolve(configured) : os.tmpdir();
247
+ // VERIFY THE NEAREST EXISTING ANCESTOR BEFORE CREATING ANYTHING.
248
+ //
249
+ // Creating the anchor first was still a "touch, then check": with a link at
250
+ // `<tmp>/hd`, a recursive mkdir of `<tmp>/hd/workspaces` traversed it and
251
+ // left an empty directory inside the attacker's tree before the refusal
252
+ // arrived. Small, but it is the same mistake in miniature — and this
253
+ // function exists to stop making it.
254
+ //
255
+ // Walking up to what already exists, resolving THAT, and checking who owns
256
+ // it means the first thing we create is created somewhere we have already
257
+ // vouched for.
258
+ let existing = anchor;
259
+ while (!existsSync(existing)) {
260
+ const parent = path.dirname(existing);
261
+ if (parent === existing)
262
+ break;
263
+ existing = parent;
264
+ }
265
+ // realpath here, not lstat: the anchor is allowed to BE a link, because
266
+ // os.tmpdir() is one on macOS (`/var` -> `/private/var`) and a user pointing
267
+ // the override at a link is making a choice about their own machine. What
268
+ // must hold is that wherever it lands belongs to us.
269
+ const resolvedExisting = await realpath(existing);
270
+ const info = await lstat(resolvedExisting);
271
+ const uid = typeof process.getuid === "function" ? process.getuid() : undefined;
272
+ if (uid !== undefined && info.uid !== uid && info.uid !== 0) {
273
+ throw new Error(`${resolvedExisting} is owned by another user (uid ${info.uid}, this process is uid ` +
274
+ `${uid}), and the workspace location resolves beneath it. Refusing to create ` +
275
+ `anything there. Set HARNESS_DISPATCH_WORKSPACES_DIR to a location you control.`);
276
+ }
277
+ // Segments computed in DECLARED space and created in DECLARED space.
278
+ //
279
+ // Computing them between the resolved ancestor and the declared anchor
280
+ // produced `..` components whenever the two differed — i.e. on every macOS
281
+ // machine — and the loop then walked upwards creating nonsense. The resolve
282
+ // happens once, at the end, after the chain exists.
283
+ const relative = path.relative(existing, path.resolve(anchor));
284
+ let current = existing;
285
+ for (const segment of relative.split(path.sep).filter(Boolean)) {
286
+ current = path.join(current, segment);
287
+ try {
288
+ await mkdir(current, { mode: 0o700 });
289
+ }
290
+ catch (err) {
291
+ if (err?.code !== "EEXIST")
292
+ throw err;
293
+ await verifySegment(current);
294
+ }
295
+ }
296
+ // BOTH values are returned, and the distinction is load-bearing.
297
+ //
298
+ // `declared` is what the rest of the module derives paths from
299
+ // (`workspacesBase()` builds on the unresolved `os.tmpdir()`), and
300
+ // `resolved` is where those paths actually land. Comparing a declared target
301
+ // against the RESOLVED anchor is wrong on macOS, where `os.tmpdir()` is
302
+ // `/var/folders/...` and resolves to `/private/var/folders/...`: every
303
+ // legitimate run then looks like it is outside the anchor and is refused.
304
+ // Caught in a container before CI, by running the macOS path shape
305
+ // deliberately rather than assuming POSIX is POSIX.
306
+ return { declared: path.resolve(anchor), resolved: await realpath(current) };
307
+ }
308
+ /**
309
+ * Create and verify every segment from the anchor down to `root`, and return
310
+ * the verified path.
311
+ */
312
+ export async function prepareVerifiedRoot(root) {
313
+ const anchor = await resolvedAnchor();
314
+ const target = path.resolve(root);
315
+ // Relative to the DECLARED anchor (how the caller built the path), then
316
+ // created beneath the RESOLVED one (where it really lives).
317
+ const relative = path.relative(anchor.declared, target);
318
+ if (relative.startsWith("..") || path.isAbsolute(relative)) {
319
+ // Not beneath the anchor at all. Only reachable if the caller derived the
320
+ // path from something other than workspacesBase(); refusing beats
321
+ // silently operating outside the area this function can vouch for.
322
+ throw new Error(`Refusing to use ${target} as a workspace location: it is not beneath ` +
323
+ `${anchor.declared}, so this tool cannot vouch for the path it would write and ` +
324
+ `delete under.`);
325
+ }
326
+ let current = anchor.resolved;
327
+ for (const segment of relative.split(path.sep).filter(Boolean)) {
328
+ current = path.join(current, segment);
329
+ // Non-recursive on purpose: a recursive mkdir traverses whatever is
330
+ // already there, including a link. This creates each level itself, so the
331
+ // only way a link enters the chain is if it existed first — in which case
332
+ // mkdir fails with EEXIST and we inspect it rather than following it.
333
+ try {
334
+ await mkdir(current, { mode: 0o700 });
335
+ }
336
+ catch (err) {
337
+ if (err?.code !== "EEXIST")
338
+ throw err;
339
+ await verifySegment(current);
340
+ continue;
341
+ }
342
+ }
343
+ return current;
344
+ }
345
+ /**
346
+ * Create the project's workspace root and mark it as ours, returning the
347
+ * VERIFIED path that was actually created.
348
+ *
349
+ * Callers must use the returned value rather than the string they passed in.
350
+ * That is the whole change: the old signature returned nothing, so every
351
+ * caller went on using its own copy of the path and re-resolved it on each
352
+ * write — which is how a directory swapped for a symlink mid-copy redirected
353
+ * the rest of it.
354
+ *
355
+ * The MARKER stays best effort: a root without one is merely not reclaimed
356
+ * automatically, which is the safe direction to fail in. Creating and
357
+ * verifying the directory is not, and must not be swallowed.
358
+ */
130
359
  async function markProjectRoot(root) {
360
+ const verified = await prepareVerifiedRoot(root);
131
361
  try {
132
- await mkdir(root, { recursive: true });
133
- const marker = path.join(root, ROOT_MARKER);
362
+ const marker = path.join(verified, ROOT_MARKER);
134
363
  if (!existsSync(marker)) {
135
364
  await writeFile(marker, "Created by harness-dispatch. This directory and its dated run\n" +
136
365
  "subdirectories are managed — and eventually deleted — by it.\n", "utf8");
@@ -140,6 +369,7 @@ async function markProjectRoot(root) {
140
369
  // A root without its marker is merely not reclaimed automatically, which
141
370
  // is the safe direction to fail in.
142
371
  }
372
+ return verified;
143
373
  }
144
374
  /**
145
375
  * Is this directory one we created, and therefore ours to delete?
@@ -152,7 +382,26 @@ async function markProjectRoot(root) {
152
382
  * accident. This deletes recursively and has now been wrong twice, so it takes
153
383
  * positive evidence rather than the absence of a reason to stop.
154
384
  */
385
+ const PROJECT_ROOT_RE = /^.+-[0-9a-f]{8}$/;
155
386
  function isOurProjectRoot(full, children) {
387
+ // The NAME must fit too, not just the marker.
388
+ //
389
+ // The marker is an ordinary file, and anything that can write to the
390
+ // workspaces base can create one — including a delegated agent, when
391
+ // HARNESS_DISPATCH_WORKSPACES_DIR points inside the project, which README
392
+ // recommends and the walkthrough exercises. An acceptance pass used exactly
393
+ // that to get an unrelated directory holding the only copy of its contents
394
+ // recursively deleted.
395
+ //
396
+ // Requiring the generated shape as WELL as the marker does not make this
397
+ // unforgeable — a name is guessable and the marker is writable — but it
398
+ // turns "create a file called .harness-dispatch-root" into "also name the
399
+ // directory the way pathKey would have". Combined with the reclamation only
400
+ // ever running inside our own base, that is the honest limit of what a
401
+ // same-uid check can promise here: the caller and the attacker are the same
402
+ // user, so no permission check can separate them.
403
+ if (!PROJECT_ROOT_RE.test(path.basename(full)))
404
+ return false;
156
405
  if (existsSync(path.join(full, ROOT_MARKER)))
157
406
  return true;
158
407
  const runs = children.filter((name) => name !== ROOT_MARKER);
@@ -162,7 +411,6 @@ function isOurProjectRoot(full, children) {
162
411
  function pathKey(dir) {
163
412
  return createHash("sha256").update(path.resolve(dir)).digest("hex").slice(0, 8);
164
413
  }
165
- const gitWorkspaceRootFor = workspaceRootFor;
166
414
  const DEFAULT_WORKSPACE_MAX_AGE_MS = 24 * 60 * 60 * 1000;
167
415
  function workspaceMaxAgeMs() {
168
416
  const raw = process.env.HARNESS_DISPATCH_WORKSPACE_MAX_AGE_MS;
@@ -170,31 +418,34 @@ function workspaceMaxAgeMs() {
170
418
  return Number.isFinite(parsed) && parsed >= 0 ? parsed : DEFAULT_WORKSPACE_MAX_AGE_MS;
171
419
  }
172
420
  /**
173
- * Every isolated (copy/git_worktree) dispatch leaves its workspace on disk
174
- * on purpose — the caller may still want to inspect changedFiles/diffSummary
175
- * after the tool call returns, so finish() never deletes anything itself.
176
- * Without SOME reclamation, that's unbounded growth (and for git_worktree,
177
- * .git/worktrees bloat that can eventually slow or break `git worktree add`
178
- * itself). Prune anything past the retention window each time a new one is
179
- * about to be created self-limiting, no separate scheduler needed. Best
180
- * effort: a prune failure must never block or fail the actual dispatch.
181
- */
182
- /**
183
- * `copyProjectGitRoot` is the repository the copy dispatch is running against,
184
- * when there is one. Both policies share a workspaces root since 0.7.0, so a
185
- * copy dispatch's prune can encounter a stale git_worktree workspace and an
186
- * `rm -rf` on one of those leaves the directory gone from disk while git still
187
- * lists the worktree, marked prunable, with `.git/worktrees/<name>` behind it.
188
- * The code's own retention comment warns that accumulating those "can
189
- * eventually slow or break `git worktree add` itself". Before 0.7.0 the two
190
- * roots were separate and this could not happen.
421
+ * Delete this project's aged run directories, whatever policy made them.
422
+ *
423
+ * There were two of these, one per policy, ~55 lines each and identical but
424
+ * for whether a git root was required. That duplication is the direct cause of
425
+ * the symlink-guard class needing four releases to close: the `lstat` refusal,
426
+ * the secure-before-prune ordering and this sweep's own name check were each
427
+ * applied to the copy copy, shipped as "fixed", and found still exploitable
428
+ * through the worktree copy by the next review. The comment left behind said
429
+ * "two policies, one hazard: whenever one of these gets a guard, check the
430
+ * other in the same edit" — a process rule standing in for a shared function.
431
+ * This is the shared function.
432
+ *
433
+ * `gitRoot` is optional because only a project under git has worktrees to
434
+ * unregister; the filesystem sweep is the same either way.
191
435
  */
192
- async function pruneStaleCopyWorkspaces(root, copyProjectGitRoot) {
436
+ async function pruneStaleRuns(root, gitRoot) {
193
437
  const maxAgeMs = workspaceMaxAgeMs();
194
438
  // Before the early return below: a project dispatching for the FIRST time
195
439
  // has no root of its own to sweep, and that is exactly the caller most
196
440
  // likely to be running on a machine full of other projects' leftovers.
197
- await pruneAbandonedProjectRoots(workspacesBase(), root);
441
+ //
442
+ // The base is derived from `root`, NOT from workspacesBase(). `root` is the
443
+ // VERIFIED, fully-resolved path while `workspacesBase()` returns the
444
+ // DECLARED one, and on any machine where the two differ — every macOS box,
445
+ // since `os.tmpdir()` resolves through `/private` — the "exclude our own
446
+ // root" comparison below compared strings from two different spaces, failed
447
+ // to match, and deleted the directory the dispatch had just created.
448
+ await pruneAbandonedProjectRoots(path.dirname(root), root);
198
449
  let entries;
199
450
  try {
200
451
  entries = await readdir(root, { withFileTypes: true });
@@ -207,16 +458,28 @@ async function pruneStaleCopyWorkspaces(root, copyProjectGitRoot) {
207
458
  for (const entry of entries) {
208
459
  if (!entry.isDirectory())
209
460
  continue;
210
- const full = path.join(root, entry.name);
461
+ // Only directories WE named. This loop deletes recursively and had no
462
+ // check of any kind — not a name, not a marker, not an owner — while its
463
+ // sibling `pruneAbandonedProjectRoots` has all three under a comment
464
+ // saying "this deletes directories nothing else is watching". With a
465
+ // symlink planted at the root, that gap swept a user's own files.
466
+ //
467
+ // The same guard `pruneStaleJobs` already uses, and for the same reason:
468
+ // a recursive delete takes positive evidence that the thing is ours,
469
+ // rather than the absence of a reason to stop. `RUN_DIR_RE` is the exact
470
+ // shape `workspaceRunId` generates.
471
+ if (!RUN_DIR_RE.test(entry.name))
472
+ continue;
473
+ const workspaceRoot = path.join(root, entry.name);
211
474
  try {
212
- const info = await stat(full);
475
+ const info = await stat(workspaceRoot);
213
476
  if (now - info.mtimeMs <= maxAgeMs)
214
477
  continue;
215
- // A `worktree` child is the tell that this belongs to the other policy.
216
- const worktreeRoot = path.join(full, "worktree");
217
- if (copyProjectGitRoot !== undefined && existsSync(worktreeRoot)) {
478
+ // A `worktree` child is the tell that git still has this registered.
479
+ const worktreeRoot = path.join(workspaceRoot, "worktree");
480
+ if (gitRoot !== undefined && existsSync(worktreeRoot)) {
218
481
  try {
219
- await git(["worktree", "remove", "--force", worktreeRoot], copyProjectGitRoot);
482
+ await git(["worktree", "remove", "--force", worktreeRoot], gitRoot);
220
483
  removedWorktree = true;
221
484
  }
222
485
  catch {
@@ -225,16 +488,45 @@ async function pruneStaleCopyWorkspaces(root, copyProjectGitRoot) {
225
488
  // afterwards clears whatever metadata this repo can see.
226
489
  }
227
490
  }
228
- await rm(full, { recursive: true, force: true });
491
+ await rm(workspaceRoot, { recursive: true, force: true });
229
492
  }
230
493
  catch {
231
494
  // best effort — a locked/already-gone/permission-denied entry is skipped
232
495
  }
233
496
  }
234
- if (removedWorktree && copyProjectGitRoot !== undefined) {
235
- await git(["worktree", "prune"], copyProjectGitRoot).catch(() => undefined);
497
+ if (removedWorktree && gitRoot !== undefined) {
498
+ await git(["worktree", "prune"], gitRoot).catch(() => undefined);
236
499
  }
237
500
  }
501
+ /**
502
+ * Create this run's directory, with every guard the path needs, in the order
503
+ * they have to happen.
504
+ *
505
+ * SECURE BEFORE PRUNING. The order was once the other way round, and the guard
506
+ * could not protect the one operation that deletes: the sweep ran first and
507
+ * `rm -rf`d every aged subdirectory of a root nothing had yet looked at. With
508
+ * a symlink planted at that path, the victim's own directory was swept —
509
+ * reproduced end to end, as two real users.
510
+ *
511
+ * Both policies ran this same five-step sequence from their own copy. Each
512
+ * step is here once now, so a guard cannot be added to one policy and missed
513
+ * on the other, which is how the class stayed open across four releases.
514
+ */
515
+ async function secureRunDirectory(projectRoot, routeName, gitRoot) {
516
+ // markProjectRoot creates and secures the root and RETURNS the verified
517
+ // path: everything below uses that, never the string computed by the
518
+ // caller. Re-deriving the string is what let a swapped directory redirect
519
+ // the copy after the check had passed.
520
+ const verifiedRoot = await markProjectRoot(projectRoot);
521
+ await pruneStaleRuns(verifiedRoot, gitRoot);
522
+ const workspaceRoot = path.join(verifiedRoot, workspaceRunId(routeName));
523
+ // Created here, non-recursively, and verified — rather than left to a later
524
+ // recursive mkdir. This run's directory is the segment an attacker would
525
+ // swap between the prune and the write that follows.
526
+ await mkdir(workspaceRoot, { recursive: false, mode: 0o700 });
527
+ await assertStillOurs(workspaceRoot);
528
+ return workspaceRoot;
529
+ }
238
530
  /**
239
531
  * Reclaim the per-project directories of projects that never dispatch again.
240
532
  *
@@ -317,53 +609,6 @@ async function pruneAbandonedProjectRoots(base, currentRoot) {
317
609
  }
318
610
  }
319
611
  }
320
- async function pruneStaleGitWorktrees(gitRoot, root) {
321
- const maxAgeMs = workspaceMaxAgeMs();
322
- // Same reclamation the copy path does, for a machine that only ever
323
- // dispatches under git_worktree. Abandoned worktree roots are left alone by
324
- // that sweep either way — see pruneAbandonedProjectRoots.
325
- await pruneAbandonedProjectRoots(workspacesBase(), root);
326
- let entries;
327
- try {
328
- entries = await readdir(root, { withFileTypes: true });
329
- }
330
- catch {
331
- return;
332
- }
333
- const now = Date.now();
334
- let removedAny = false;
335
- for (const entry of entries) {
336
- if (!entry.isDirectory())
337
- continue;
338
- const workspaceRoot = path.join(root, entry.name);
339
- try {
340
- const info = await stat(workspaceRoot);
341
- if (now - info.mtimeMs <= maxAgeMs)
342
- continue;
343
- const worktreeRoot = path.join(workspaceRoot, "worktree");
344
- try {
345
- await git(["worktree", "remove", "--force", worktreeRoot], gitRoot);
346
- removedAny = true;
347
- }
348
- catch {
349
- // Worktree already gone/never registered — fall through to the
350
- // filesystem cleanup below either way.
351
- }
352
- await rm(workspaceRoot, { recursive: true, force: true });
353
- }
354
- catch {
355
- // best effort
356
- }
357
- }
358
- if (removedAny) {
359
- try {
360
- await git(["worktree", "prune"], gitRoot);
361
- }
362
- catch {
363
- // best effort
364
- }
365
- }
366
- }
367
612
  function shouldExclude(relPath, direntName) {
368
613
  if (EXCLUDED_DIRS.has(direntName))
369
614
  return true;
@@ -665,7 +910,7 @@ async function prepareSharedWorkspace(policy, workingDir, files) {
665
910
  isolated: false,
666
911
  securityBoundary: "none",
667
912
  notes: policy === "shared_locked"
668
- ? ["Write-capable shared workspace dispatches are serialized across ALL processes (see workspace-lock.ts; this was per-process until 304a1b5)."]
913
+ ? ["Write-capable shared workspace dispatches are serialized across ALL processes, not just within one."]
669
914
  : ["Shared workspace dispatches run directly in the caller's working directory."],
670
915
  });
671
916
  },
@@ -677,9 +922,7 @@ async function prepareCopyWorkspace(routeName, workingDir, files) {
677
922
  const projectGitRoot = await git(["rev-parse", "--show-toplevel"], originalWorkingDir)
678
923
  .then((out) => out || undefined)
679
924
  .catch(() => undefined);
680
- await pruneStaleCopyWorkspaces(root, projectGitRoot);
681
- await markProjectRoot(root);
682
- const workspaceRoot = path.join(root, workspaceRunId(routeName));
925
+ const workspaceRoot = await secureRunDirectory(root, routeName, projectGitRoot);
683
926
  const effectiveWorkingDir = path.join(workspaceRoot, "workspace");
684
927
  const skippedLinks = [];
685
928
  const vanishedFiles = [];
@@ -780,12 +1023,9 @@ async function prepareGitWorktreeWorkspace(routeName, workingDir, files) {
780
1023
  `version-controlled.`);
781
1024
  });
782
1025
  const prefix = await git(["rev-parse", "--show-prefix"], originalWorkingDir);
783
- const gitWorkspaceRoot = gitWorkspaceRootFor(gitRoot);
784
- await pruneStaleGitWorktrees(gitRoot, gitWorkspaceRoot);
785
- await markProjectRoot(gitWorkspaceRoot);
786
- const workspaceRoot = path.join(gitWorkspaceRoot, workspaceRunId(routeName));
1026
+ const gitWorkspaceRoot = workspaceRootFor(gitRoot);
1027
+ const workspaceRoot = await secureRunDirectory(gitWorkspaceRoot, routeName, gitRoot);
787
1028
  const worktreeRoot = path.join(workspaceRoot, "worktree");
788
- await mkdir(workspaceRoot, { recursive: true });
789
1029
  // A repository with no commits yet is an ordinary state, not a fault, and
790
1030
  // `git worktree add` has nothing to branch from in it.
791
1031
  const baseCommit = await git(["rev-parse", "HEAD"], gitRoot).catch(() => {
@@ -1 +1 @@
1
- {"version":3,"file":"workspaces.js","sourceRoot":"","sources":["../src/workspaces.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"workspaces.js","sourceRoot":"","sources":["../src/workspaces.ts"],"names":[],"mappings":"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"}