thedotmack/claude-mem · warning

Skipping " " ( ) — too old for claude-mem

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…').

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.

Appendix: 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)