thedotmack/claude-mem · warning

Deep probe failed at list stage

Error message

Deep probe failed at list stage

What it means

First stage of probeSemanticSearch(): chroma_list_collections (limit 100) failed after a connection was established. Returns {ok:false, stage:'list', error}. Listing failing at this stage usually means the process is reachable but chroma itself errors — storage, permissions, or internal state — rather than missing data.

Source

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

    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)) {
        collections = listResult.length;
      } else if (listResult && Array.isArray(listResult.collections)) {
        collections = listResult.collections.length;
      } else if (listResult && typeof listResult === 'object' && 'length' in listResult) {
        collections = (listResult as { length: number }).length;
      }
    } catch (error) {
      const message = error instanceof Error ? error.message : String(error);
      logger.warn('CHROMA_MCP', 'Deep probe failed at list stage', { error: message });
      return { ok: false, stage: 'list', error: message };
    }

    const queryStartedAt = Date.now();
    try {
      await this.callTool('chroma_query_documents', {
        collection_name: 'cm__claude-mem',
        query_texts: ['ping'],
        n_results: 1
      });
      const queryLatencyMs = Date.now() - queryStartedAt;
      return { ok: true, stage: 'done', collections, queryLatencyMs };
    } catch (error) {
      const queryLatencyMs = Date.now() - queryStartedAt;
      const rawMessage = error instanceof Error ? error.message : String(error);
      const isMissingOrEmpty = /not exist|missing|empty|no such/i.test(rawMessage);
      const errorMessage = isMissingOrEmpty
        ? `collection cm__claude-mem missing or empty (${rawMessage})`

View on GitHub (pinned to 8bc631a71a)

Solutions

  1. Read the returned error string — it is chroma's own message
  2. Check permissions and free space on the chroma data directory
  3. Retry the probe after a clean restart
  4. If persistent, back up and reset the chroma directory — it is rebuilt by sync
Defensive patterns

Strategy: validation

Validate before calling

const probe = await chromaManager.probeSemanticSearch();
if (!probe.ok && probe.stage === 'list') {
  // chroma storage is the problem: check permissions/disk, run degraded
}

Prevention

When it happens

Trigger: callTool connects but chroma raises on list: corrupted local chroma storage under the chroma data dir, permission problems on that directory, disk-full, or two chroma instances contending for the same storage.

Common situations: Chroma data directory damaged after disk-full; concurrent instances locking storage; chroma-mcp version drift changing list semantics.

Related errors


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