{"record":{"id":"bc68a75e004a7861","repo":"thedotmack/claude-mem","slug":"skipping-candidate-probe-version-too-o","errorCode":null,"errorMessage":"Skipping \"${candidate}\" (${probe.version}) — too old for claude-mem: ${probe.detail}","messagePattern":"Skipping \"(.+?)\" \\((.+?)\\) — too old for claude-mem: (.+?)","errorType":"console","errorClass":null,"httpStatus":null,"severity":"warning","filePath":"src/shared/find-claude-executable.ts","lineNumber":344,"sourceCode":"  }\n\n  // --- 2. Probe every discovered candidate ---------------------------------\n  const capable: Array<{ path: string; version: string; key: [number, number, number]; order: number }> = [];\n  const incompatible: Array<{ path: string; version: string; detail: string }> = [];\n\n  const candidates = discoverCandidates();\n  for (let order = 0; order < candidates.length; order++) {\n    const candidate = candidates[order];\n    const probe = probeCandidate(candidate);\n\n    if (probe.kind === 'capable') {\n      capable.push({ path: candidate, version: probe.version, key: parseVersionKey(probe.version), order });\n      continue;\n    }\n\n    if (probe.kind === 'incompatible') {\n      incompatible.push({ path: candidate, version: probe.version, detail: probe.detail });\n      logger.warn(\n        logComponent,\n        `Skipping \"${candidate}\" (${probe.version}) — too old for claude-mem: ${probe.detail}`\n      );\n      continue;\n    }\n\n    if (looksLikeDesktopAppPath(candidate)) {\n      logger.warn(\n        logComponent,\n        `Skipping desktop app at \"${candidate}\" — it doesn't support headless mode. ` +\n        `Install Claude Code CLI: npm install -g @anthropic-ai/claude-code`\n      );\n    } else {\n      logger.warn(logComponent, `Skipping \"${candidate}\" — failed --version check (${probe.detail})`);\n    }\n  }\n\n  if (capable.length > 0) {","sourceCodeStart":326,"sourceCodeEnd":362,"githubUrl":"https://github.com/thedotmack/claude-mem/blob/e2d1df569a8f04075d40e92461128ece7cf04c82/src/shared/find-claude-executable.ts#L326-L362","documentation":"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…').","triggerScenarios":"discoverCandidates() returns a path (old npm -g install, nvm shim, Homebrew bottle) whose probed version is older than the minimum claude-mem supports.","commonSituations":"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.","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."],"exampleFix":null,"handlingStrategy":"validation","validationCode":"const probe = probeCandidate(candidate);\nif (probe.kind !== 'capable') {\n  // skip before relying on this binary\n  continue;\n}","typeGuard":"const isCapableProbe = (\n  p: ProbeResult\n): p is { kind: 'capable'; version: string } => p.kind === 'capable';","tryCatchPattern":null,"preventionTips":["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."],"tags":["cli-discovery","version-incompatibility","path","claude-mem"],"backgroundTag":"version-incompatible","analyzedSha":"e2d1df569a8f04075d40e92461128ece7cf04c82","analyzedAt":"2026-08-20T23:58:13.836Z","contentChangedAt":"2026-08-20T23:58:13.836Z","schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}