{"record":{"id":"9db67b2b2dd8a5ae","repo":"paperclipai/paperclip","slug":"label-must-be-an-absolute-path","errorCode":null,"errorMessage":"${label} must be an absolute path.","messagePattern":"(.+?) must be an absolute path\\.","errorType":"exception","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"packages/adapter-utils/src/local-process-sandbox.ts","lineNumber":77,"sourceCode":"  \"/etc/resolv.conf\",\n  \"/etc/hosts\",\n  \"/etc/nsswitch.conf\",\n  \"/etc/passwd\",\n  \"/etc/group\",\n  \"/etc/localtime\",\n  \"/etc/timezone\",\n  \"/etc/gitconfig\",\n] as const;\n\nconst PROXY_ENV_KEYS = [\"HTTP_PROXY\", \"HTTPS_PROXY\", \"ALL_PROXY\", \"http_proxy\", \"https_proxy\", \"all_proxy\"] as const;\nconst SANDBOX_PROXY_PORT = 31_337;\nconst UNIX_SOCKET_PATH_MAX_BYTES = 107;\nconst NETWORK_PROXY_TEMP_PREFIX = \"paperclip-network-sandbox-\";\n\nfunction normalizeAbsolutePath(candidate: string, label: string): string {\n  const trimmed = candidate.trim();\n  if (!trimmed || !path.isAbsolute(trimmed)) {\n    throw new Error(`${label} must be an absolute path.`);\n  }\n  return path.resolve(trimmed);\n}\n\nasync function pathExists(candidate: string): Promise<boolean> {\n  return fs.lstat(candidate).then(() => true).catch(() => false);\n}\n\nfunction parentDirectories(candidate: string): string[] {\n  const directories: string[] = [];\n  let current = path.dirname(candidate);\n  while (current !== path.dirname(current)) {\n    directories.push(current);\n    current = path.dirname(current);\n  }\n  return directories.reverse();\n}\n","sourceCodeStart":59,"sourceCodeEnd":95,"githubUrl":"https://github.com/paperclipai/paperclip/blob/120ae5428fa29bee300bcf806491cd4d965fbb7c/packages/adapter-utils/src/local-process-sandbox.ts#L59-L95","documentation":"normalizeAbsolutePath trims a sandbox path option and checks path.isAbsolute; the input is empty or relative, and sandbox bind-mount paths must be absolute.","triggerScenarios":"Thrown at packages/adapter-utils/src/local-process-sandbox.ts:77 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Provide an absolute path for ${label}."],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"120ae5428fa29bee300bcf806491cd4d965fbb7c","analyzedAt":"2026-08-18T22:49:45.177Z","contentChangedAt":"2026-08-18T22:49:45.177Z","schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}