mastra-ai/mastra · error · HTTPException

${errorMessage}

Error message

${errorMessage}

What it means

resolveAgentMemoryStore wraps getAgentMemoryStore and converts 'agent has no memory store' into a 400 carrying the caller-supplied errorMessage. It is thrown when an operation that requires persistence (e.g., storing a response turn or loading conversation history) targets an agent with no memory configured.

Source

Thrown at packages/server/src/server/handlers/responses.ts:324

  if (!mastra) {
    throw new HTTPException(500, { message: 'Mastra instance is required for agent-backed responses' });
  }

  return getAgentFromSystem({ mastra, agentId });
}

async function resolveAgentMemoryStore({
  agent,
  requestContext,
  errorMessage,
}: {
  agent: Agent<any, any, any, any>;
  requestContext: RequestContext;
  errorMessage: string;
}): Promise<MemoryStorage> {
  const agentMemoryStore = await getAgentMemoryStore({ agent, requestContext });
  if (!agentMemoryStore) {
    throw new HTTPException(400, { message: errorMessage });
  }

  return agentMemoryStore;
}

/**
 * Executes a non-streaming Responses API request through the resolved Mastra agent.
 */
async function executeGenerate({
  agent,
  resolvedModel,
  modelOverride,
  instructions,
  text,
  providerOptions,
  input,
  requestContext,
  abortSignal,

View on GitHub (pinned to 75dd419e61)

Solutions

  1. Attach memory to the agent: memory: new Memory({ storage: <MastraStorage> })
  2. Remove the persistence-requiring option from the request (e.g., don't pass conversation_id / rely on stored history) if stateless use is intended
  3. Confirm agent_id refers to the intended memory-backed agent

Example fix

// before
new Agent({ name: 'bot', model: 'openai/gpt-4o', instructions: 'x' });
// after
new Agent({ name: 'bot', model: 'openai/gpt-4o', instructions: 'x', memory: new Memory({ storage }) });
Defensive patterns

Strategy: validation

Validate before calling

const memory = await agent.getMemory({ requestContext });
if (!memory) throw new Error('This operation requires the agent to have memory configured');

Type guard

null

Try / catch

try {
  await op();
} catch (e) {
  if (e?.status === 400 && /memory/i.test(e.message)) {
    // fall back to stateless mode or fix agent config
  }
  throw e;
}

Prevention

When it happens

Trigger: Any responses flow requiring a MemoryStorage handle (history retrieval, thread persistence) where the agent resolved from agent_id has no memory instance attached.

Common situations: Same as memory-not-configured: agent defined without new Memory({ storage }); storage omitted in a refactor; targeting the wrong agent_id.

Related errors


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