thedotmack/claude-mem · critical · InstallAbortError
${ctx.component} failed during ${ctx.phase}: ${causeMessage(
Error message
${ctx.component} failed during ${ctx.phase}: ${causeMessage(ctx.cause)} What it means
The message of InstallAbortError thrown by installerError() when severity is ABORT — the single, central abort path for the installer. It aggregates the failing component and phase (e.g. 'bun-install' / 'setup-runtime') with the underlying cause message, and attaches a remediation + category for the top-level handler to print. Any ABORT-severity failure anywhere in install flows surfaces here.
Source
Thrown at src/npx-cli/install/error-reporter.ts:123
* The single decision point. ABORT throws InstallAbortError (the top-level
* handler prints + exits 1). Every other severity records to the summary and
* returns.
*/
export function installerError(
severity: ErrorSeverity,
ctx: ErrorContext,
summary: InstallSummary,
): void {
const dataDir = resolveDataDir();
const category = classifyError(ctx.cause, { component: ctx.component, phase: ctx.phase });
const remediation =
ctx.remediation ??
category.remediation({ platform: process.platform, dataDir });
switch (severity) {
case ErrorSeverity.ABORT: {
writeLastInstallError(category, ctx, remediation, dataDir);
throw new InstallAbortError(
`${ctx.component} failed during ${ctx.phase}: ${causeMessage(ctx.cause)}`,
{ category, remediation, cause: ctx.cause },
);
}
case ErrorSeverity.FAIL_LOUD_PER_IDE: {
const ide = ctx.ide ?? ctx.component;
if (!summary.failedIDEs.includes(ide)) summary.failedIDEs.push(ide);
summary.warnings.push({
component: ide,
message: ctx.details ? `${causeMessage(ctx.cause)}\n${ctx.details}` : causeMessage(ctx.cause),
remediation,
});
return;
}
case ErrorSeverity.WARN_CONTINUE: {
summary.warnings.push({
component: ctx.component,
message: causeMessage(ctx.cause),View on GitHub (pinned to d768ba3643)
Solutions
- Read the component/phase in the message to localize the failing step, then read ~/.claude-mem/last-install-error.json for the categorized remediation.
- Address the underlying cause (e.g. install bun/uv manually, free disk, fix permissions) per the remediation hint.
- Re-run the installer; if the same ABORT recurs, capture last-install-error.json and report it.
Defensive patterns
Strategy: try-catch
Type guard
function isInstallAbortError(e: unknown): e is Error {
return e instanceof Error && /failed during/.test(e.message);
} Try / catch
try {
await runInstall();
} catch (e) {
if (e instanceof InstallAbortError) {
console.error(e.message);
console.error('Remediation:', e.remediation);
process.exit(1);
}
throw e;
} Prevention
- Always read ~/.claude-mem/last-install-error.json after an ABORT for the categorized remediation.
- Pre-install mandatory runtimes (bun/uv) manually in restricted networks to avoid ABORT.
- Surface component/phase in logs so ABORTs are immediately localizable.
When it happens
Trigger: Any installerError(ErrorSeverity.ABORT, ...) call site: bun auto-install failure, uv auto-install failure (when vector search isn't opted out), bun/uv binary missing after install, or any component that calls installerError with ABORT. The error fires after writeLastInstallError persists diagnostics to ~/.claude-mem/last-install-error.json.
Common situations: Network-restricted environment where bun/uv can't be fetched. A partial install where the runtime binary isn't on PATH. Disk-full or permission errors during install. Any unrecoverable installer step.
Related errors
- ${timeoutMessage} (timed out after ${timeoutMs}ms)
- Bun installation completed but binary not found. Please rest
- Failed to install Bun. Please install manually: ${manualInst
- uv installation completed but binary not found. Please resta
- Failed to install uv. Please install manually: ${manualInstr
AI-assisted analysis of thedotmack/claude-mem@d768ba3643 (2026-08-12).
Data as JSON: /api/errors/7dd623bb5d9fffd5.
Report an issue: GitHub.