thedotmack/claude-mem · warning

Health check failed

Error message

Health check failed

What it means

isHealthy() pings Chroma with chroma_list_collections {limit:1}; any throw is logged and reported as false. It is a cheap gate used to decide whether vector search may be used — false means 'degraded, do not use Chroma now', not a fatal state.

Source

Thrown at src/services/sync/ChromaMcpManager.ts:877

    this.mutationTail = run.then(() => undefined, () => undefined);

    try {
      return await run;
    } finally {
      this.pendingMutationCalls -= 1;
    }
  }

  private static isMutationTool(toolName: string): boolean {
    return CHROMA_MUTATION_TOOL_PATTERN.test(toolName);
  }

  async isHealthy(): Promise<boolean> {
    try {
      await this.callTool('chroma_list_collections', { limit: 1 });
      return true;
    } catch (error) {
      logger.warn('CHROMA_MCP', 'Health check failed', {
        error: error instanceof Error ? error.message : String(error)
      });
      return false;
    }
  }

  async probeSemanticSearch(): Promise<{
    ok: boolean;
    stage: 'connect' | 'list' | 'query' | 'done';
    error?: string;
    collections?: number;
    queryLatencyMs?: number;
  }> {
    let collections: number | undefined;

    try {
      const listResult: any = await this.callTool('chroma_list_collections', { limit: 100 });
      if (Array.isArray(listResult)) {

View on GitHub (pinned to 8bc631a71a)

Solutions

  1. Follow up with probeSemanticSearch() for a staged diagnosis (connect, list, query) when false
  2. Check the chroma-mcp subprocess, uv environment, and recent CHROMA_MCP warnings
  3. Retry after reconnect; treat persistent false as degraded mode and rely on FTS/LIKE fallbacks
Defensive patterns

Strategy: validation

Validate before calling

if (!(await chromaManager.isHealthy())) {
  // skip the vector path now; use FTS/LIKE search
}

Prevention

When it happens

Trigger: Chroma subprocess not started or connectable, MCP handshake failure, a tool-level error during the list call, or the manager being disposed while the check runs.

Common situations: Immediately after startup before first connect; after a chroma-mcp crash; monitoring dashboards polling during shutdown windows.

Related errors


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