paperclipai/paperclip · error · Error
Sandbox path alias " " must target the synchronized…
Error message
Sandbox path alias "${aliasPath}" must target the synchronized workspace "${workspaceDir}". What it means
A sandbox path alias does not resolve to the synchronized workspace directory, so aliasing it would bind something other than the managed workspace into the sandbox.
Solutions
- Point the path alias at the synchronized workspace "${workspaceDir}".
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at packages/adapter-utils/src/local-process-sandbox.ts:418 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of paperclipai/paperclip@120ae5428f (2026-08-18).
Data as JSON: /api/errors/b7bd28e972ec3dc7.
Report an issue: GitHub.
Appendix: source
Thrown at packages/adapter-utils/src/local-process-sandbox.ts:418
addParentDirectories(args, created, normalized);
args.push(access === "rw" ? "--bind" : "--ro-bind", normalized, normalized);
mounted.add(normalized);
created.add(normalized);
};
for (const systemPath of SYSTEM_READ_PATHS) await mount(systemPath, "ro");
for (const executablePath of await executableReadPaths(input.executable)) await mount(executablePath, "ro");
if (networkScope === "allowlist") {
for (const nodePath of await executableReadPaths(process.execPath)) await mount(nodePath, "ro");
}
for (const managedPath of input.options.managedPaths ?? []) await mount(managedPath.path, managedPath.access);
for (const extraPath of input.options.extraPaths ?? []) await mount(extraPath.path, extraPath.access);
await mount(workspaceDir, "rw");
for (const [index, alias] of (input.options.pathAliases ?? []).entries()) {
const aliasPath = normalizeAbsolutePath(alias.path, `Sandbox pathAliases[${index}].path`);
const aliasTarget = normalizeAbsolutePath(alias.target, `Sandbox pathAliases[${index}].target`);
const relativeTarget = path.relative(workspaceDir, aliasTarget);
if (relativeTarget.startsWith("..") || path.isAbsolute(relativeTarget)) {
throw new Error(
`Sandbox path alias "${aliasPath}" must target the synchronized workspace "${workspaceDir}".`,
);
}
if (!(await pathExists(aliasTarget))) {
throw new Error(`Sandbox path alias target "${aliasTarget}" does not exist.`);
}
addParentDirectories(args, created, aliasPath);
args.push("--bind", aliasTarget, aliasPath);
created.add(aliasPath);
}
if (networkScope === "allowlist") {
const tempDir = await createNetworkProxyTempDir();
const socketPath = path.join(tempDir, "proxy.sock");
const bridgePath = path.join(tempDir, "bridge.cjs");
await fs.writeFile(bridgePath, await createNetworkProxyBridge(), { mode: 0o500 });
const proxy = await startNetworkAllowlistProxy(
input.options.networkAllowlist ?? [],View on GitHub (pinned to 120ae5428f)