Skip to main content
The quality gate runs before extraction. It decides whether an add() request should be queued at all. If a request is blocked, MemoryOS still returns HTTP 200. Check the response body: status and blocked_reason explain what happened.

Gate layers

Example blocked response

What is not a gate block

A request can pass the quality gate and still produce no permanent memory. That is handled by the extraction quality loop: For example, this should usually pass the gate but not become a memory:
It is temporary session context, not long-term user memory.

How to keep block rates low

  • Send coherent conversation turns, not single-word fragments.
  • Do not send the same fact repeatedly on every turn.
  • Use Idempotency-Key for application retries.
  • Watch blocked_reason, budget_remaining_pct, and processing_status on add() responses.
  • Check job status when you need to know whether extraction stored, buffered, or ignored a signal.

Dashboard visibility

Tenant Dashboard -> Quality Log shows gate blocks and extraction quality signals in one place:
  • block layer counts
  • pending weak signals
  • reinforced signals
  • retrieval feedback events
  • correction jobs