paperclipai/paperclip · error · Error
Sandbox path alias target
Error message
Sandbox path alias target "${aliasTarget}" does not exist. What it means
The alias target path does not exist on disk, so the sandbox cannot bind the alias; a pre-mount existence check.
Solutions
- Create the alias target "${aliasTarget}" before starting the sandbox, or fix the alias target path.
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at packages/adapter-utils/src/local-process-sandbox.ts:423 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/b7070ea46f32130b.
Report an issue: GitHub.
Appendix: source
Thrown at packages/adapter-utils/src/local-process-sandbox.ts:423
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 ?? [],
input.options.networkTrustedUrls ?? [],
socketPath,
).catch(async (error) => {
await fs.rm(tempDir, { recursive: true, force: true });
throw error;View on GitHub (pinned to 120ae5428f)