{"record":{"id":"0db95ed01f25c8c7","repo":"paperclipai/paperclip","slug":"networkallowlist-index-must-not-be-empty","errorCode":null,"errorMessage":"networkAllowlist[${index}] must not be empty.","messagePattern":"networkAllowlist\\[(.+?)\\] must not be empty\\.","errorType":"exception","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"packages/adapter-utils/src/local-process-sandbox.ts","lineNumber":123,"sourceCode":"  let current = path.dirname(candidate);\n  while (current !== path.dirname(current)) {\n    if (await pathExists(path.join(current, \"package.json\"))) return current;\n    current = path.dirname(current);\n  }\n  return path.dirname(candidate);\n}\n\nasync function executableReadPaths(command: string): Promise<string[]> {\n  const paths = new Set<string>();\n  paths.add(path.dirname(command));\n  const realCommand = await fs.realpath(command).catch(() => command);\n  paths.add(await nearestPackageRoot(realCommand));\n  return Array.from(paths);\n}\n\nfunction parseNetworkAllowlistEntry(entry: string, index: number): NetworkAllowlistRule {\n  const trimmed = entry.trim();\n  if (!trimmed) throw new Error(`networkAllowlist[${index}] must not be empty.`);\n  let hostname: string;\n  let port: string | null;\n  try {\n    const parsed = new URL(trimmed.includes(\"://\") ? trimmed : `https://${trimmed}`);\n    if (parsed.username || parsed.password || parsed.pathname !== \"/\" || parsed.search || parsed.hash) {\n      throw new Error(\"path\");\n    }\n    hostname = parsed.hostname.toLowerCase();\n    port = parsed.port || null;\n  } catch {\n    throw new Error(`networkAllowlist[${index}] must be a hostname, hostname:port, or origin URL.`);\n  }\n  if (!hostname || hostname === \"*\" || hostname.startsWith(\"*.\")) {\n    throw new Error(`networkAllowlist[${index}] must use an exact hostname; wildcards are not supported.`);\n  }\n  return { hostname, port };\n}\n","sourceCodeStart":105,"sourceCodeEnd":141,"githubUrl":"https://github.com/paperclipai/paperclip/blob/120ae5428fa29bee300bcf806491cd4d965fbb7c/packages/adapter-utils/src/local-process-sandbox.ts#L105-L141","documentation":"A networkAllowlist array entry trimmed to an empty string at the given index; allowlist entries must name a hostname.","triggerScenarios":"Thrown at packages/adapter-utils/src/local-process-sandbox.ts:123 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Remove empty entries from networkAllowlist or provide a hostname."],"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"}