{"record":{"id":"c75098839732beb1","repo":"paperclipai/paperclip","slug":"another-managed-install-is-already-running-ownerl","errorCode":null,"errorMessage":"Another managed install is already running${ownerLabel}. If no install process is active, remove the stale lock at ${paths.lockPath} and retry.","messagePattern":"Another managed install is already running(.+?)\\. If no install process is active, remove the stale lock at (.+?) and retry\\.","errorType":"exception","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"cli/src/install-store.ts","lineNumber":181,"sourceCode":"    const temporaryPath = `${paths.lockPath}.${token}.tmp`;\n    try {\n      fs.writeFileSync(temporaryPath, `${token}\\n`, { mode: 0o600, flag: \"wx\" });\n      try {\n        fs.linkSync(temporaryPath, paths.lockPath);\n        return;\n      } catch (error) {\n        if ((error as NodeJS.ErrnoException).code !== \"EEXIST\") throw error;\n      }\n      const owner = fs.readFileSync(paths.lockPath, \"utf8\").trim();\n      const ownerPid = Number.parseInt(owner.split(\":\", 1)[0] ?? \"\", 10);\n      if (Number.isInteger(ownerPid) && ownerPid > 0 && !processIsAlive(ownerPid)) {\n        fs.rmSync(paths.lockPath);\n        fs.rmSync(temporaryPath, { force: true });\n        acquire();\n        return;\n      }\n      const ownerLabel = Number.isInteger(ownerPid) && ownerPid > 0 ? ` (pid ${ownerPid})` : \"\";\n      throw new Error(\n        `Another managed install is already running${ownerLabel}. ` +\n        `If no install process is active, remove the stale lock at ${paths.lockPath} and retry.`,\n      );\n    } finally {\n      fs.rmSync(temporaryPath, { force: true });\n    }\n  };\n\n  acquire();\n  try {\n    return await callback();\n  } finally {\n    try {\n      if (fs.readFileSync(paths.lockPath, \"utf8\").trim() === token) {\n        fs.rmSync(paths.lockPath, { force: true });\n      }\n    } catch (error) {\n      if ((error as NodeJS.ErrnoException).code !== \"ENOENT\") throw error;","sourceCodeStart":163,"sourceCodeEnd":199,"githubUrl":"https://github.com/paperclipai/paperclip/blob/01ad8584922b5d85292b1723cae71fa0d9b07a19/cli/src/install-store.ts#L163-L199","documentation":"The install-store lockfile is held by another process (with a live owner pid, shown in the label). Dead-owner locks are reclaimed automatically, so this means a real concurrent install/update is running.","triggerScenarios":"Thrown at cli/src/install-store.ts:181 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Wait for the running install to finish, then retry.","If no install is active, remove the stale lock at ${paths.lockPath} and retry."],"exampleFix":null,"handlingStrategy":"retry","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"}