{"record":{"id":"f6863f2695d08c17","repo":"paperclipai/paperclip","slug":"sandbox-callback-bridge-did-not-report-a-listening","errorCode":null,"errorMessage":"Sandbox callback bridge did not report a listening port.","messagePattern":"Sandbox callback bridge did not report a listening port\\.","errorType":"exception","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"packages/adapter-utils/src/sandbox-callback-bridge.ts","lineNumber":1810,"sourceCode":"}): Promise<StartedSandboxCallbackBridgeServer> {\n  const timeoutMs = normalizeTimeoutMs(input.timeoutMs, DEFAULT_BRIDGE_RESPONSE_TIMEOUT_MS);\n  const shellCommand = preferredShellForSandbox(input.shellCommand);\n  const directories = sandboxCallbackBridgeDirectories(input.queueDir);\n  let remoteEntrypoint = path.posix.join(input.assetRemoteDir, SANDBOX_CALLBACK_BRIDGE_ENTRYPOINT);\n  if (input.bridgeAsset) {\n    const assetSync = await syncSandboxCallbackBridgeEntrypoint({\n      runner: input.runner,\n      remoteCwd: input.remoteCwd,\n      assetRemoteDir: input.assetRemoteDir,\n      bridgeAsset: input.bridgeAsset,\n      timeoutMs,\n      shellCommand,\n    });\n    remoteEntrypoint = assetSync.remoteEntrypoint;\n  }\n  const env = buildSandboxCallbackBridgeEnv({\n    queueDir: input.queueDir,\n    bridgeToken: input.bridgeToken,\n    host: input.host,\n    port: input.port,\n    pollIntervalMs: input.pollIntervalMs,\n    responseTimeoutMs: input.responseTimeoutMs,\n    maxQueueDepth: input.maxQueueDepth,\n    maxBodyBytes: input.maxBodyBytes,\n  });\n  const nodeCommand = input.nodeCommand?.trim() || \"node\";\n  const startResult = await input.runner.execute({\n    command: shellCommand,\n    args: shellCommandArgs(\n      [\n        `mkdir -p ${shellQuote(directories.requestsDir)} ${shellQuote(directories.responsesDir)} ${shellQuote(directories.logsDir)}`,\n        `rm -f ${shellQuote(directories.readyFile)} ${shellQuote(directories.pidFile)}`,\n        `nohup ${shellQuote(nodeCommand)} ${shellQuote(remoteEntrypoint)} ` +\n          `>> ${shellQuote(directories.logFile)} 2>&1 < /dev/null &`,\n        \"pid=$!\",\n        `printf '%s\\\\n' \\\"$pid\\\" > ${shellQuote(directories.pidFile)}`,","sourceCodeStart":1792,"sourceCodeEnd":1828,"githubUrl":"https://github.com/paperclipai/paperclip/blob/3f1d897a7c018d76563a21c6e39c3c9b03933622/packages/adapter-utils/src/sandbox-callback-bridge.ts#L1792-L1828","documentation":"Startup validation of the sandbox callback bridge: the readiness JSON parsed but contained no usable listening port (and no valid host/baseUrl), so the host cannot target the bridge inside the sandbox.","triggerScenarios":"Thrown at packages/adapter-utils/src/sandbox-callback-bridge.ts:1670 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Retry starting the bridge; check logs for why no listening port was reported."],"exampleFix":null,"handlingStrategy":"retry","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"3f1d897a7c018d76563a21c6e39c3c9b03933622","analyzedAt":"2026-08-18T22:49:45.177Z","contentChangedAt":"2026-08-18T22:49:45.177Z","schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}