{"record":{"id":"f01295cc5a507898","repo":"paperclipai/paperclip","slug":"command-not-found-in-path-ssh","errorCode":null,"errorMessage":"Command not found in PATH: \"ssh\"","messagePattern":"Command not found in PATH: \"ssh\"","errorType":"exception","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"packages/adapter-utils/src/server-utils.ts","lineNumber":2510,"sourceCode":"  }\n  return \"/usr/local/bin:/opt/homebrew/bin:/usr/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin\";\n}\n\nfunction windowsPathExts(env: NodeJS.ProcessEnv): string[] {\n  return (env.PATHEXT ?? \".EXE;.CMD;.BAT;.COM\").split(\";\").filter(Boolean);\n}\n\nasync function pathExists(candidate: string) {\n  try {\n    await fs.access(candidate, process.platform === \"win32\" ? fsConstants.F_OK : fsConstants.X_OK);\n    return true;\n  } catch {\n    return false;\n  }\n}\n\nasync function resolveCommandPath(command: string, cwd: string, env: NodeJS.ProcessEnv): Promise<string | null> {\n  const hasPathSeparator = command.includes(\"/\") || command.includes(\"\\\\\");\n  if (hasPathSeparator) {\n    const absolute = path.isAbsolute(command) ? command : path.resolve(cwd, command);\n    return (await pathExists(absolute)) ? absolute : null;\n  }\n\n  const pathValue = env.PATH ?? env.Path ?? \"\";\n  const delimiter = process.platform === \"win32\" ? \";\" : \":\";\n  const dirs = pathValue.split(delimiter).filter(Boolean);\n  const exts = process.platform === \"win32\" ? windowsPathExts(env) : [\"\"];\n  const hasExtension = process.platform === \"win32\" && path.extname(command).length > 0;\n\n  for (const dir of dirs) {\n    const candidates =\n      process.platform === \"win32\"\n        ? hasExtension\n          ? [path.join(dir, command)]\n          : exts.map((ext) => path.join(dir, `${command}${ext}`))\n        : [path.join(dir, command)];","sourceCodeStart":2492,"sourceCodeEnd":2528,"githubUrl":"https://github.com/paperclipai/paperclip/blob/01ad8584922b5d85292b1723cae71fa0d9b07a19/packages/adapter-utils/src/server-utils.ts#L2492-L2528","documentation":"Error \"Command not found in PATH: \"ssh\"\" thrown in paperclipai/paperclip.","triggerScenarios":"Thrown at packages/adapter-utils/src/server-utils.ts:2447 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Install openssh-client so \"ssh\" is on PATH."],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"01ad8584922b5d85292b1723cae71fa0d9b07a19","analyzedAt":"2026-08-18T22:49:45.177Z","contentChangedAt":"2026-08-18T22:49:45.177Z","schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}