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
- Read the returned error string — it is chroma's own message
- Check permissions and free space on the chroma data directory
- Retry the probe after a clean restart
- 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
- Keep the chroma data directory on a healthy local disk with free space
- Never let two instances share one chroma storage directory
- Act on the returned error string — it is chroma's own diagnosis
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
- Health check failed
- Deep probe failed at query stage
- failed to kill prior chroma-mcp tree (best-effort)
- failed to kill in-flight chroma-mcp prewarm tree (best-effor
- Backfill failed: ${error instanceof Error ? error.message :
AI-assisted analysis of thedotmack/claude-mem@8bc631a71a (2026-08-20).
Data as JSON: /api/errors/733115c3a34e3056.
Report an issue: GitHub.