thedotmack/claude-mem · warning
Skipping "${candidate}" (${probe.version}) — too old for cla
Error message
Skipping "${candidate}" (${probe.version}) — too old for claude-mem: ${probe.detail} What it means
During Claude CLI discovery, each discovered candidate is probed with probeCandidate. A binary whose --version parses but is below claude-mem's supported floor returns {kind:'incompatible'}; it is recorded and skipped with this warning. Discovery continues, and if any capable candidate exists the newest version wins (logged at INFO as 'Using Claude CLI v…').
Source
Thrown at src/shared/find-claude-executable.ts:344
}
// --- 2. Probe every discovered candidate ---------------------------------
const capable: Array<{ path: string; version: string; key: [number, number, number]; order: number }> = [];
const incompatible: Array<{ path: string; version: string; detail: string }> = [];
const candidates = discoverCandidates();
for (let order = 0; order < candidates.length; order++) {
const candidate = candidates[order];
const probe = probeCandidate(candidate);
if (probe.kind === 'capable') {
capable.push({ path: candidate, version: probe.version, key: parseVersionKey(probe.version), order });
continue;
}
if (probe.kind === 'incompatible') {
incompatible.push({ path: candidate, version: probe.version, detail: probe.detail });
logger.warn(
logComponent,
`Skipping "${candidate}" (${probe.version}) — too old for claude-mem: ${probe.detail}`
);
continue;
}
if (looksLikeDesktopAppPath(candidate)) {
logger.warn(
logComponent,
`Skipping desktop app at "${candidate}" — it doesn't support headless mode. ` +
`Install Claude Code CLI: npm install -g @anthropic-ai/claude-code`
);
} else {
logger.warn(logComponent, `Skipping "${candidate}" — failed --version check (${probe.detail})`);
}
}
if (capable.length > 0) {View on GitHub (pinned to e2d1df569a)
Solutions
- Update the CLI: npm install -g @anthropic-ai/claude-code (or brew upgrade claude-code).
- List all candidates with `which -a claude` and remove or reorder stale shims.
- Confirm which binary won via the follow-up INFO log 'Using Claude CLI v<version> at <path>'.
- If multiple installs are intentional, put the newest one first on PATH.
Defensive patterns
Strategy: validation
Validate before calling
const probe = probeCandidate(candidate);
if (probe.kind !== 'capable') {
// skip before relying on this binary
continue;
} Type guard
const isCapableProbe = (
p: ProbeResult
): p is { kind: 'capable'; version: string } => p.kind === 'capable'; Prevention
- Keep exactly one claude-code install and upgrade it together with claude-mem.
- Run `which -a claude` after Node/npm version changes to catch stale shims.
- Confirm the winning binary via the 'Using Claude CLI v… at …' INFO log after upgrades.
When it happens
Trigger: discoverCandidates() returns a path (old npm -g install, nvm shim, Homebrew bottle) whose probed version is older than the minimum claude-mem supports.
Common situations: An old @anthropic-ai/claude-code install shadowing a newer one on PATH; per-Node-version binaries under nvm each pinning different claude versions; a bundled CLI ahead of the fresh install in PATH order.
Related errors
- Skipping desktop app at "${candidate}" — it doesn't support
- Skipping "${candidate}" — failed --version check (${probe.de
- Cannot lazy-spawn worker: Bun runtime not found on PATH
- Generator paused for ${abortCategory}; preserving buffered w
- Transcript path missing or file does not exist: ${transcript
AI-assisted analysis of thedotmack/claude-mem@e2d1df569a (2026-08-20).
Data as JSON: /api/errors/bc68a75e004a7861.
Report an issue: GitHub.