paperclipai/paperclip · error · Error

workspace_durable_seed_digest_mismatch

workspace_durable_seed_digest_mismatch

Error message

workspace_durable_seed_digest_mismatch

What it means

Guard in copyDurableSeedArchive: the durable workspace seed archive at sourcePath exists but its SHA-256 digest does not match expectedSha256 from the runtime spec. It fires when the seed tarball was corrupted, truncated, or replaced between when its digest was recorded and when prepareSandboxManagedRuntime copies it.

Source

Thrown at packages/adapter-utils/src/sandbox-managed-runtime.ts:774

    stream.on("error", rejectDigest);
    stream.on("end", () => resolveDigest(digest.digest("hex")));
  });
}

async function copyDurableSeedArchive(input: {
  sourcePath: string;
  targetPath: string;
  expectedSha256?: string | null;
}): Promise<void> {
  const source = await fs.lstat(input.sourcePath);
  if (source.isSymbolicLink() || !source.isFile()) {
    throw new Error("workspace_durable_seed_invalid");
  }
  if (
    input.expectedSha256 &&
    (await sha256File(input.sourcePath)) !== input.expectedSha256
  ) {
    throw new Error("workspace_durable_seed_digest_mismatch");
  }
  await fs.copyFile(input.sourcePath, input.targetPath);
}

async function persistDurableSeedArchive(input: {
  sourcePath: string;
  targetPath: string;
}): Promise<void> {
  const parent = path.dirname(input.targetPath);
  await fs.mkdir(parent, { recursive: true, mode: 0o700 });
  const parentStat = await fs.lstat(parent);
  if (parentStat.isSymbolicLink() || !parentStat.isDirectory()) {
    throw new Error("workspace_durable_seed_root_invalid");
  }
  const temporary = path.join(
    parent,
    `.${path.basename(input.targetPath)}.${randomUUID()}.tmp`,
  );

View on GitHub (pinned to 01ad858492)

Solutions

  1. Rebuild or re-upload the durable workspace seed tarball so its bytes match the recorded digest
  2. Update the spec's expected SHA-256 if the seed was intentionally regenerated
  3. Verify disk and transport integrity (checksum after copy) to rule out bit rot or partial writes
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at packages/adapter-utils/src/sandbox-managed-runtime.ts:774 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of paperclipai/paperclip@01ad858492 (2026-09-10). Data as JSON: /api/errors/658ef84226fdf57b. Report an issue: GitHub.