mastra-ai/mastra · error

Observational memory requires @mastra/core support for reque

Error message

Observational memory requires @mastra/core support for request-response-id-rotation. Please bump @mastra/core to a newer version.

What it means

Observational memory depends on @mastra/core's 'request-response-id-rotation' capability to safely rotate request/response ids during observation processing. If the installed core lacks that feature flag, Memory throws before using OM. Unlike the previous two gates, there is no config opt-out — a newer core is required.

Source

Thrown at packages/memory/src/index.ts:1936

    const coreSupportsOM = coreFeatures.has('observationalMemory');
    if (!coreSupportsOM) {
      throw new Error(
        'Observational memory is enabled but the installed version of @mastra/core does not support it. ' +
          'Please upgrade @mastra/core to a version that includes observational memory support.',
      );
    }

    if (omConfig.observation?.bufferTokens !== false && !coreFeatures.has('asyncBuffering')) {
      throw new Error(
        'Observational memory async buffering is enabled by default but the installed version of @mastra/core does not support it. ' +
          'Either upgrade @mastra/core, @mastra/memory, and your storage adapter (@mastra/libsql, @mastra/pg, @mastra/mongodb, or @mastra/convex) to the latest version, ' +
          'or explicitly disable async buffering by setting `observation: { bufferTokens: false }` in your observationalMemory config.',
      );
    }

    if (!coreFeatures.has('request-response-id-rotation')) {
      throw new Error(
        'Observational memory requires @mastra/core support for request-response-id-rotation. Please bump @mastra/core to a newer version.',
      );
    }

    if (omConfig.experimental_subconscious) {
      await this.getKnowledgeStore();
    }

    const { ObservationalMemory: OMClass } = await import('./processors/observational-memory');

    const onIndexObservations = this.hasRetrievalSearch(omConfig.retrieval)
      ? async (observation: {
          text: string;
          groupId: string;
          range: string;
          threadId: string;
          resourceId: string;
          observedAt?: Date;

View on GitHub (pinned to 75dd419e61)

Solutions

  1. Bump @mastra/core to the latest version that includes request-response-id-rotation support.
  2. Deduplicate @mastra/core in your workspace (pnpm dedupe / check the lockfile) so a single current version is used everywhere.
  3. If upgrading is impossible, disable observationalMemory.

Example fix

// before (lockfile has @mastra/core 0.x older)
"@mastra/core": "0.10.0"
// after
"@mastra/core": "latest" // or the release line matching @mastra/memory
// then: pnpm install && pnpm dedupe
Defensive patterns

Strategy: validation

Validate before calling

import { features } from '@mastra/core';
if (memoryConfig.observationalMemory?.enabled && !features.has('request-response-id-rotation')) {
  throw new Error('request-response-id-rotation requires a newer @mastra/core');
}

Type guard

function coreSupportsIdRotation(coreFeatures: Set<string>): boolean {
  return coreFeatures.has('request-response-id-rotation');
}

Try / catch

try {
  await initMemory();
} catch (e) {
  if (e instanceof Error && e.message.includes('request-response-id-rotation')) {
    logger.error('Bump @mastra/core; there is no config opt-out for this requirement.');
  }
  throw e;
}

Prevention

When it happens

Trigger: Enabling observationalMemory with an @mastra/core version that supports observationalMemory and asyncBuffering but predates the request-response-id-rotation feature.

Common situations: Running an intermediate core version (new enough to pass the earlier checks but still missing this flag); frozen lockfiles in CI resolving stale core; mixed @mastra/* versions in a monorepo.

Related errors


AI-assisted analysis of mastra-ai/mastra@75dd419e61 (2026-08-30). Data as JSON: /api/errors/a617613ee7d3ace5. Report an issue: GitHub.