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

  1. Update the CLI: npm install -g @anthropic-ai/claude-code (or brew upgrade claude-code).
  2. List all candidates with `which -a claude` and remove or reorder stale shims.
  3. Confirm which binary won via the follow-up INFO log 'Using Claude CLI v<version> at <path>'.
  4. 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

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


AI-assisted analysis of thedotmack/claude-mem@e2d1df569a (2026-08-20). Data as JSON: /api/errors/bc68a75e004a7861. Report an issue: GitHub.