paperclipai/paperclip · error
Could not read managed install manifest at
Error message
Could not read managed install manifest at ${paths.manifestPath}: ${String(error)} What it means
readInstallManifest could not read or parse install.json (missing, invalid JSON, or unsupported shape) and the underlying error is wrapped with the manifest path; callers treat this as no manifest.
Solutions
- Check permissions and contents of ${paths.manifestPath} and retry.
- Re-install the payload so a readable manifest is written.
Defensive patterns
Strategy: try-catch
When it happens
Trigger: Thrown at cli/src/install-store.ts:229 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of paperclipai/paperclip@01ad858492 (2026-08-18).
Data as JSON: /api/errors/43810274a12844d1.
Report an issue: GitHub.
Appendix: source
Thrown at cli/src/install-store.ts:229
}
return path.join(paths.installsRoot, source, identifier);
}
export function readInstallManifest(paths = resolveInstallStorePaths()): InstallManifest | null {
try {
const value = JSON.parse(fs.readFileSync(paths.manifestPath, "utf8")) as InstallManifest;
if (
value.schemaVersion !== INSTALL_MANIFEST_VERSION ||
(value.source !== "npm" && value.source !== "git") ||
!Array.isArray(value.previous) ||
typeof value.payloadPath !== "string"
) {
throw new Error("unsupported manifest shape");
}
return value;
} catch (error) {
if ((error as NodeJS.ErrnoException).code === "ENOENT") return null;
throw new Error(`Could not read managed install manifest at ${paths.manifestPath}: ${String(error)}`);
}
}
export function writeInstallManifestAtomic(
manifest: InstallManifest,
paths = resolveInstallStorePaths(),
): void {
ensurePrivateDirectory(paths.cliRoot);
const temporaryPath = `${paths.manifestPath}.tmp-${process.pid}-${Date.now()}`;
try {
fs.writeFileSync(temporaryPath, `${JSON.stringify(manifest, null, 2)}\n`, { mode: 0o600 });
fs.renameSync(temporaryPath, paths.manifestPath);
} finally {
fs.rmSync(temporaryPath, { force: true });
}
}
function assertPayloadPath(payloadPath: string, paths: InstallStorePaths): void {View on GitHub (pinned to 01ad858492)