Skip to main content
Recall does not load everything in the account. It searches eligible, scoped candidates and returns a bounded set. Knowledge bases, assets, and research collections are separate tools. Broad recall does not query them for you.

What a request can include

  • durable memories that pass channel, agent, project, and archive filters
  • a bounded message lane over recent short-term messages
  • explicit filters you pass: stores, categories, tags, channel, session, project
  • a mode preset, which prefers some stores and categories and sets a default limit
Mode preferences are not hard filters. An explicit store, category, or tag filter is.

What actually runs

A request does not always do one vector lookup. The response includes retrieval diagnostics: requested limit, final hits, message-match counts, filters that applied, and whether an early return was taken. Message coverage is bounded. Unscoped message-lane reads start at 50 rows, continue at 100, and the recent-message fallback pages at 200. A deadline can stop the lane before the window is exhausted. retrieval.messageScan reports that coverage. Session scope drops memories and messages that belong to another session when you ask for it. Channel and project scope are applied before ranking. See Scoping and access. Injection, where the host supports it, uses this same bounded path. It is off by default. Set MEMORY_CRYSTAL_INJECT_RECALL=1 or true, or set injectRecall: true in config. A non-empty environment variable takes precedence over config. Grok cannot inject.

Ranking signals

Scope and eligibility determine which candidates can compete. Ranking then uses: Metadata preferences are bounded: they do not make a weak topical match relevant. Results below the relevance floor are omitted, and duplicate text is collapsed. Knowledge-base ranking can also use the base’s agent priority when you explicitly query a knowledge base; broad recall does not search bases.

Common mistakes

  • Using a mode as a filter: decision prefers decisions; use categories when you need only decisions.
  • Expecting every transcript match: the message lane is bounded. Use message search and follow pagination for exact wording or a date range.
  • Assuming empty recall means deleted data: check channel, session, and project scope first. Query knowledge bases separately.
  • Treating degraded recall as normal vector search: check the response diagnostics and your embedding-provider settings.