# Mem0 changelog > A memory layer that gives AI agents persistent, personalized recall. - Vendor: Mem0 - Category: AI - Official site: https://mem0.ai - Tracked by: What's New (https://whatsnew.fyi/product/mem0) - Harvested from: GitHub (mem0ai/mem0) - Entries below: 10 (newest first) What's New is an index, not a publisher: every entry below links to the vendor's own release notes, which are the authoritative source. Entries are labelled where they are hand-curated sample data, pre-releases, or drawn from a secondary source such as a developer blog. Reuse: the summaries, labels and curation here are © What's New. Quote freely with attribution and a link back; wholesale republication of the corpus is not permitted — terms: https://whatsnew.fyi/terms. The vendors' own release notes remain their publishers'. ## Releases ### n8n-nodes-mem0-v0.1.3 — Mem0 n8n Integration (v0.1.3) - Date: 2026-08-05 - Version: n8n-nodes-mem0-v0.1.3 - Original notes: https://github.com/mem0ai/mem0/releases/tag/n8n-nodes-mem0-v0.1.3 - Permalink: https://whatsnew.fyi/product/mem0/releases/n8n-nodes-mem0-v0.1.3 - **changed** — License changed to MIT for the @mem0/n8n-nodes-mem0 package - **changed** — Node and credential icons now declare light and dark variants instead of a single icon **Changes:** - **License changed to MIT:** The published `@mem0/n8n-nodes-mem0` package is now MIT (was Apache-2.0). n8n's Creator Portal requires verified community nodes to be MIT, and the failing license check was the blocker for verification. The rest of the mem0 repo stays Apache-2.0 ([#6804](https://github.com/mem0ai/mem0/pull/6804)) - **Themed icons:** The node and credential icons now declare `{ light, dark }` variants instead of a single icon, clearing the remaining `icon-prefer-themed-variants` warnings from the Creator Portal scan. No functional changes ([#6804](https://github.com/mem0ai/mem0/pull/6804)) ### ts-v3.1.5 — Mem0 Node SDK (v3.1.5) - Date: 2026-08-05 - Version: ts-v3.1.5 - Original notes: https://github.com/mem0ai/mem0/releases/tag/ts-v3.1.5 - Permalink: https://whatsnew.fyi/product/mem0/releases/ts-v3.1.5 - **added** — Add agentCustomInstructions to PromptUpdatePayload, AddMemoryOptions, and ProjectResponse to set a separate extraction instruction set for agent-scoped memories **New Features:** - **Client:** Add `agentCustomInstructions` to `PromptUpdatePayload`, `AddMemoryOptions`, and `ProjectResponse`. It sets a second extraction instruction set that applies only to agent-scoped memories: an add passing `agentId` without `userId` uses it, one passing both splits by attribution, and while it is unset `customInstructions` continues to apply to every memory ([#6809](https://github.com/mem0ai/mem0/pull/6809)) ### v2.0.17 — Mem0 Python SDK (v2.0.17) - Date: 2026-08-05 - Version: v2.0.17 - Original notes: https://github.com/mem0ai/mem0/releases/tag/v2.0.17 - Permalink: https://whatsnew.fyi/product/mem0/releases/v2.0.17 - **added** — Add `agent_custom_instructions` to `project.update()` and `update_project()` methods (sync and async) and to the `ProjectUpdateOptions` and `AddMemoryOptions` typed models, enabling a separate extraction instruction set for agent-scoped memories - **changed** — Memory extraction now splits by attribution when both `agent_id` and `user_id` are provided, and applies `agent_custom_instructions` when only `agent_id` is passed without `user_id` **New Features:** - **Client:** Add `agent_custom_instructions` to `project.update()`/`update_project()` (sync and async) and to the `ProjectUpdateOptions` and `AddMemoryOptions` typed models. It sets a second extraction instruction set that applies only to agent-scoped memories: an add passing `agent_id` without `user_id` uses it, one passing both splits by attribution, and while it is unset `custom_instructions` continues to apply to every memory ([#6809](https://github.com/mem0ai/mem0/pull/6809)) ### cli-node-v0.2.12 — Mem0 Node CLI (v0.2.12) - Date: 2026-08-04 - Version: cli-node-v0.2.12 - Original notes: https://github.com/mem0ai/mem0/releases/tag/cli-node-v0.2.12 - Permalink: https://whatsnew.fyi/product/mem0/releases/cli-node-v0.2.12 - **added** — Add `--custom-instructions`, `--custom-categories`, `--structured-data-schema`, and `--timestamp` flags to the `add` command - **added** — Add `--show-expired`, `--reference-date`, and `--latest-only` flags to the `search` command - **added** — Add `--show-expired` and `--latest-only` flags to the `list` command - **added** — Add `--expires` and `--timestamp` flags to the `update` command - **added** — Add `--delete-linked` flag to the `delete` command to also delete memories linked to the target memory - **fixed** — Fix `help --json` to emit JSON automatically under agent mode (`--agent`), not only when `--json` is passed explicitly - **changed** — Remove `--categories` flag from the `add` command and exit with an error message pointing to `--custom-categories` instead - **security** — Tighten postcss pnpm override from `<8.5.10 → >=8.5.10` to `<8.5.18 → >=8.5.18 <9.0.0` to close a newer CVE range **New Features:** - **`add`:** New `--custom-instructions`, `--custom-categories`, `--structured-data-schema`, and `--timestamp` flags, matching the Platform `/v3/memories/add/` payload fields (Python and Node [#6696](https://github.com/mem0ai/mem0/pull/6696)) - **`search`:** New `--show-expired`, `--reference-date`, and `--latest-only` flags, forwarded to `/v3/memories/search/` as `show_expired`, `reference_date`, and `latest_only` (Python and Node [#6696](https://github.com/mem0ai/mem0/pull/6696)) - **`list`:** New `--show-expired` and `--latest-only` flags (Python and Node [#6696](https://github.com/mem0ai/mem0/pull/6696)) - **`update`:** New `--expires` and `--timestamp` flags (Python and Node [#6696](https://github.com/mem0ai/mem0/pull/6696)) - **`delete`:** New `--delete-linked` flag to also delete memories linked to the target memory (Python and Node [#6696](https://github.com/mem0ai/mem0/pull/6696)) **Bug Fixes:** - **`help --json`:** Emit JSON automatically under agent mode (`--agent`), not only when `--json` is passed explicitly. Python checks `is_agent_mode()` and now renders through `console.print_json()` instead of a plain `console.print(json.dumps(...))` call; Node also checks the root `--agent` flag in addition to the subcommand's `--json` flag (Python and Node [#6773](https://github.com/mem0ai/mem0/pull/6773)) **Changes:** - **`add`:** `--categories` is no longer forwarded on `add`. The `/v3/memories/add/` payload has no `categories` field (only `custom_categories`), so the CLI was sending a key the endpoint does not accept. Passing the flag now exits 1 with a message pointing to `--custom-categories` (Python and Node [#6696](https://github.com/mem0ai/mem0/pull/6696)) **Security:** - **Dependencies (Node):** Tighten the `postcss` pnpm override from `<8.5.10 → >=8.5.10` to `<8.5.18 → >=8.5.18 <9.0.0`, closing a newer CVE range the previous floor didn't cover, as part of a wider dependency patch sweep across the pnpm workspaces ([#6639](https://github.com/mem0ai/mem0/pull/6639)) ### cli-v0.2.11 — Mem0 Python CLI (v0.2.11) - Date: 2026-08-04 - Version: cli-v0.2.11 - Original notes: https://github.com/mem0ai/mem0/releases/tag/cli-v0.2.11 - Permalink: https://whatsnew.fyi/product/mem0/releases/cli-v0.2.11 - **added** — Add `--custom-instructions`, `--custom-categories`, `--structured-data-schema`, and `--timestamp` flags to the `add` command - **added** — Add `--show-expired`, `--reference-date`, and `--latest-only` flags to the `search` command - **added** — Add `--show-expired` and `--latest-only` flags to the `list` command - **added** — Add `--expires` and `--timestamp` flags to the `update` command - **added** — Add `--delete-linked` flag to the `delete` command to also delete memories linked to the target memory - **fixed** — Fix `help --json` to emit JSON automatically under agent mode without requiring the `--json` flag to be passed explicitly - **changed** — Remove `--categories` flag from the `add` command and exit with an error message directing users to use `--custom-categories` instead - **security** — Tighten the `postcss` pnpm override from `<8.5.10 → >=8.5.10` to `<8.5.18 → >=8.5.18 <9.0.0` to close a newer CVE range **New Features:** - **`add`:** New `--custom-instructions`, `--custom-categories`, `--structured-data-schema`, and `--timestamp` flags, matching the Platform `/v3/memories/add/` payload fields (Python and Node [#6696](https://github.com/mem0ai/mem0/pull/6696)) - **`search`:** New `--show-expired`, `--reference-date`, and `--latest-only` flags, forwarded to `/v3/memories/search/` as `show_expired`, `reference_date`, and `latest_only` (Python and Node [#6696](https://github.com/mem0ai/mem0/pull/6696)) - **`list`:** New `--show-expired` and `--latest-only` flags (Python and Node [#6696](https://github.com/mem0ai/mem0/pull/6696)) - **`update`:** New `--expires` and `--timestamp` flags (Python and Node [#6696](https://github.com/mem0ai/mem0/pull/6696)) - **`delete`:** New `--delete-linked` flag to also delete memories linked to the target memory (Python and Node [#6696](https://github.com/mem0ai/mem0/pull/6696)) **Bug Fixes:** - **`help --json`:** Emit JSON automatically under agent mode (`--agent`), not only when `--json` is passed explicitly. Python checks `is_agent_mode()` and now renders through `console.print_json()` instead of a plain `console.print(json.dumps(...))` call; Node also checks the root `--agent` flag in addition to the subcommand's `--json` flag (Python and Node [#6773](https://github.com/mem0ai/mem0/pull/6773)) **Changes:** - **`add`:** `--categories` is no longer forwarded on `add`. The `/v3/memories/add/` payload has no `categories` field (only `custom_categories`), so the CLI was sending a key the endpoint does not accept. Passing the flag now exits 1 with a message pointing to `--custom-categories` (Python and Node [#6696](https://github.com/mem0ai/mem0/pull/6696)) **Security:** - **Dependencies (Node):** Tighten the `postcss` pnpm override from `<8.5.10 → >=8.5.10` to `<8.5.18 → >=8.5.18 <9.0.0`, closing a newer CVE range the previous floor didn't cover, as part of a wider dependency patch sweep across the pnpm workspaces ([#6639](https://github.com/mem0ai/mem0/pull/6639)) ### ts-v3.1.4 — Mem0 Node SDK (3.1.4) - Date: 2026-08-04 - Version: ts-v3.1.4 - Original notes: https://github.com/mem0ai/mem0/releases/tag/ts-v3.1.4 - Permalink: https://whatsnew.fyi/product/mem0/releases/ts-v3.1.4 - **added** — Add `referenceDate` and `keywordSearch` to `SearchMemoryOptions` in the TypeScript client - **fixed** — Remove the `/v1/ping/` identity/telemetry call from the request critical path by resolving it in the background through a shared, credentials-keyed promise cache - **fixed** — Issue `deleteUsers()` per-entity DELETE requests through the shared fetch-based helper to reuse pooled connections instead of creating fresh TCP/TLS handshakes per entity - **fixed** — Prevent `add()` metadata from setting or overwriting a memory's identity scope by running metadata through the same `stripIdentityKeys()` helper as `update()` - **fixed** — Fix Redis `search()` and `list()` building an invalid empty RediSearch filter expression when `filters` was an empty object or contained only null/undefined values **New Features:** - **Client:** Add `referenceDate` and `keywordSearch` to `SearchMemoryOptions`, keeping the TypeScript client's typed search options in sync with the Platform API ([#6696](https://github.com/mem0ai/mem0/pull/6696)) **Bug Fixes:** - **Client:** Take the `/v1/ping/` identity/telemetry call off the request critical path. Every method previously did `if (this.telemetryId === "") await this.ping();`, blocking the first call on each client instance on a network round trip; the ping now resolves in the background through a shared, credentials-keyed promise cache (FIFO-capped at 50 entries), so concurrent clients on the same host/API key share one ping instead of issuing one each, and a failed ping is not cached so the process can retry ([#6788](https://github.com/mem0ai/mem0/pull/6788)) - **Client:** `deleteUsers()` now issues its per-entity DELETE requests through the shared `fetch()`-based helper instead of the axios instance, which defaulted to `keepAlive: false`. Deleting every user, agent, app, and run now reuses pooled connections instead of paying a fresh TCP/TLS handshake per entity ([#6788](https://github.com/mem0ai/mem0/pull/6788)) - **Memory (OSS):** Stop `add()` metadata from setting or overwriting a memory's identity scope. Metadata now runs through the same `stripIdentityKeys()` helper as `update()`, so `user_id`/`agent_id`/`run_id` (snake_case or camelCase) and `actor_id` passed in metadata can no longer place a memory into a scope the caller didn't request through `userId`/`agentId`/`runId`/`filters` ([#6377](https://github.com/mem0ai/mem0/pull/6377)) - **Vector Stores:** Fix Redis `search()` and `list()` building an invalid, empty RediSearch filter expression when `filters` was an empty object or contained only null/undefined values. The shared `buildRedisFilterExpr()` helper now falls back to `"*"` (match all) instead of joining zero conditions into `""` ([#6014](https://github.com/mem0ai/mem0/pull/6014)) ### v2.0.16 — Mem0 Python SDK (v2.0.16) - Date: 2026-08-04 - Version: v2.0.16 - Original notes: https://github.com/mem0ai/mem0/releases/tag/v2.0.16 - Permalink: https://whatsnew.fyi/product/mem0/releases/v2.0.16 - **added** — Add `reference_date`, `latest_only`, and `keyword_search` to `SearchMemoryOptions`, and `latest_only` to `GetAllMemoryOptions` in the Python client - **fixed** — Stop `add()` metadata from setting a memory's identity scope by stripping `user_id`, `agent_id`, `run_id`, and `actor_id` from caller-supplied metadata before building the creation template - **fixed** — Validate Upstash filter keys and values in `search()`, `keyword_search()`, and `list()` to reject unsafe keys and unescaped string values - **fixed** — `FastEmbedEmbedding.embed()` now converts its result with `.tolist()` before returning to provide a plain `List[float]` instead of a numpy array - **fixed** — `HuggingFaceEmbedding` now passes `api_key` to the OpenAI-compatible client when `huggingface_base_url` is set - **fixed** — Replace Ollama's interactive `pip install` prompt on import with a plain `ImportError` - **fixed** — `remove_code_blocks()` now returns an empty string for `None` input instead of raising `AttributeError` - **fixed** — `parse_vision_messages()` now chains the original exception when an image download fails to preserve the root cause in the traceback - **fixed** — `process_telemetry_filters(None)` now returns `([], {})` instead of `{}` to match the two-value tuple every caller unpacks - **fixed** — `LlmFactory.create()` no longer mutates the caller's config dict in place and instead builds a new dict for the merge - **fixed** — The Cohere, HuggingFace, SentenceTransformer, and Zero Entropy rerankers' failure-fallback path no longer mutates the caller's document dicts in place when stamping `rerank_score` - **fixed** — Remove `logging.basicConfig()` calls from the MongoDB and Vertex AI Vector Search providers so selecting either provider no longer reconfigures the host application's root logger **New Features:** - **Client:** Add `reference_date`, `latest_only`, and `keyword_search` to `SearchMemoryOptions`, and `latest_only` to `GetAllMemoryOptions`, keeping the Python client's typed options in sync with the Platform API and the CLIs ([#6696](https://github.com/mem0ai/mem0/pull/6696)) **Bug Fixes:** - **Core:** Stop `add()` metadata from setting a memory's identity scope. `_build_filters_and_metadata()` now strips `user_id`, `agent_id`, `run_id`, and `actor_id` from caller-supplied `metadata` before building the creation template, so metadata can no longer place a memory into a scope that was never passed through the entity params ([#6656](https://github.com/mem0ai/mem0/pull/6656)) - **Vector Stores:** Validate Upstash filter keys and values in `search()`, `keyword_search()`, and `list()`. Filter keys must match a safe identifier pattern, values must be `str`/`int`/`float`/`bool`, and string values containing a double quote or backslash are now rejected instead of being interpolated unescaped into the generated query string ([#5981](https://github.com/mem0ai/mem0/pull/5981)) - **Embeddings:** `FastEmbedEmbedding.embed()` now converts its result with `.tolist()` before returning, so callers get a plain `List[float]` instead of a numpy array ([#6770](https://github.com/mem0ai/mem0/pull/6770)) - **Embeddings:** `HuggingFaceEmbedding` now passes `api_key` to the OpenAI-compatible client when `huggingface_base_url` is set. The configured key was previously dropped, so the client fell back to `OPENAI_API_KEY` from the environment or raised `OpenAIError` at construction when that was unset ([#6770](https://github.com/mem0ai/mem0/pull/6770)) - **Embeddings:** Replace Ollama's interactive `pip install` prompt on import with a plain `ImportError`. Importing `mem0.embeddings.ollama` without the `ollama` package previously blocked on stdin and then called `sys.exit(1)`, killing the host process instead of raising ([#6770](https://github.com/mem0ai/mem0/pull/6770)) - **Core:** `remove_code_blocks()` now returns an empty string for `None` input instead of raising `AttributeError` ([#6770](https://github.com/mem0ai/mem0/pull/6770)) - **Core:** `parse_vision_messages()` now chains the original exception (`raise ... from e`) when an image download fails, so the root cause is preserved in the traceback ([#6770](https://github.com/mem0ai/mem0/pull/6770)) - **Core:** `process_telemetry_filters(None)` now returns `([], {})`, matching the two-value tuple every caller unpacks, instead of `{}` ([#6770](https://github.com/mem0ai/mem0/pull/6770)) - **Core:** `LlmFactory.create()` no longer mutates the caller's config dict in place via `.update(kwargs)`; the merge now builds a new dict ([#6770](https://github.com/mem0ai/mem0/pull/6770)) - **Rerankers:** The Cohere, HuggingFace, SentenceTransformer, and Zero Entropy rerankers' failure-fallback path no longer mutates the caller's document dicts in place when stamping `rerank_score`; it now falls back on copies ([#6770](https://github.com/mem0ai/mem0/pull/6770)) - **Vector Stores:** Remove `logging.basicConfig()` calls from the MongoDB and Vertex AI Vector Search providers, so selecting either provider no longer reconfigures the host application's root logger as a side effect ([#6770](https://github.com/mem0ai/mem0/pull/6770)) ### vercel-ai-v3.0.1 — Vercel AI SDK Provider (v3.0.1) - Date: 2026-08-01 - Version: vercel-ai-v3.0.1 - Original notes: https://github.com/mem0ai/mem0/releases/tag/vercel-ai-v3.0.1 - Permalink: https://whatsnew.fyi/product/mem0/releases/vercel-ai-v3.0.1 - **security** — Patched high and medium severity dependency vulnerabilities in brace-expansion and js-yaml **Security:** - **Dependencies:** Patched high and medium severity dependency vulnerabilities via `pnpm.overrides` (`brace-expansion`, `js-yaml`) ([#6639](https://github.com/mem0ai/mem0/pull/6639)) ### ts-v3.1.3 — Mem0 Node SDK (v3.1.3) - Date: 2026-08-01 - Version: ts-v3.1.3 - Original notes: https://github.com/mem0ai/mem0/releases/tag/ts-v3.1.3 - Permalink: https://whatsnew.fyi/product/mem0/releases/ts-v3.1.3 - **added** — Add Qdrant server-side BM25 keywordSearch() with payload filter indexes, requiring Qdrant >= 1.15.2, so keyword search runs without a client-side BM25 dependency - **fixed** — deleteAll() now paginates through the vector store in batches of 1000 instead of listing once, so accounts with more memories than a single page no longer have the remainder silently left behind - **fixed** — Supabase list() now paginates past PostgREST's 1000-row cap instead of stopping at the first page - **fixed** — Supabase search() warns when results may have been truncated by PostgREST's 1000-row cap - **fixed** — Supabase initialization probe reads a row instead of writing a test vector, so Row Level Security policies that only grant read access no longer fail table verification - **fixed** — Honor TOGETHER_API_BASE in the Together embedder, matching the Together LLM provider, so a custom gateway URL is no longer silently ignored for embeddings - **changed** — RerankerFactory's default LLM reranker model is now gpt-5-mini (was gpt-4o-mini) - **security** — Patched 32 high and 57 medium severity dependency vulnerabilities across the pnpm workspace via pnpm.overrides **New Features:** - **Vector Stores:** Add Qdrant server-side BM25 `keywordSearch()` (requires Qdrant >= 1.15.2) plus payload filter indexes, so keyword search runs without a client-side BM25 dependency ([#5851](https://github.com/mem0ai/mem0/pull/5851)) **Bug Fixes:** - **Core:** `deleteAll()` now paginates through the vector store in batches of 1000 instead of listing once, so accounts with more memories than a single page had the remainder silently left behind ([#4872](https://github.com/mem0ai/mem0/pull/4872)) - **Vector Stores:** Supabase `list()` now paginates past PostgREST's 1000-row cap instead of stopping at the first page, `search()` warns when results may have been truncated by that same cap, and the initialization probe reads a row instead of writing a test vector, so Row Level Security policies that only grant read access no longer fail table verification ([#6695](https://github.com/mem0ai/mem0/pull/6695)) - **Embeddings:** Honor `TOGETHER_API_BASE` in the Together embedder, matching the Together LLM provider, so a custom gateway URL is no longer silently ignored for embeddings ([#6572](https://github.com/mem0ai/mem0/pull/6572)) **Changes:** - **Rerankers:** `RerankerFactory`'s default LLM reranker model is now `gpt-5-mini` (was `gpt-4o-mini`) ([#6703](https://github.com/mem0ai/mem0/pull/6703)) **Security:** - **Dependencies:** Patched 32 high and 57 medium severity dependency vulnerabilities across the pnpm workspace via `pnpm.overrides` (`axios`, `brace-expansion`, `js-yaml`, `postcss`, `protobufjs`, `mongoose`, `tar`, `fast-xml-parser`, `thrift`) ([#6639](https://github.com/mem0ai/mem0/pull/6639)) ### v2.0.15 — Mem0 Python SDK (v2.0.15) - Date: 2026-08-01 - Version: v2.0.15 - Original notes: https://github.com/mem0ai/mem0/releases/tag/v2.0.15 - Permalink: https://whatsnew.fyi/product/mem0/releases/v2.0.15 - **fixed** — delete_all() now paginates through the vector store in batches of 1000 instead of listing once, preventing memories from being silently left behind in accounts with more memories than a single page - **fixed** — Cap Supabase search()/list() top_k at the vecs query limit of 1000 instead of erroring - **fixed** — Fix Supabase col_info() crash by reading collection attributes directly instead of calling the removed describe() method - **fixed** — Set size on Elasticsearch KNN search queries so results respect top_k instead of being capped at Elasticsearch's default of 10 hits - **changed** — LLMReranker's default model is now gpt-5-mini (was gpt-4o-mini) **Bug Fixes:** - **Core:** `delete_all()` now paginates through the vector store in batches of 1000 instead of listing once, so accounts with more memories than a single page (most vector stores default to ~100) had the remainder silently left behind ([#6636](https://github.com/mem0ai/mem0/pull/6636)) - **Vector Stores:** Cap Supabase `search()`/`list()` `top_k` at the `vecs` query limit of 1000 instead of erroring, and fix a `col_info()` crash by reading collection attributes directly instead of calling the removed `describe()` method ([#6695](https://github.com/mem0ai/mem0/pull/6695)) - **Vector Stores:** Set `size` on Elasticsearch KNN search queries, so results respect `top_k` instead of being capped at Elasticsearch's default of 10 hits ([#5910](https://github.com/mem0ai/mem0/pull/5910)) **Changes:** - **Rerankers:** `LLMReranker`'s default model is now `gpt-5-mini` (was `gpt-4o-mini`) ([#6703](https://github.com/mem0ai/mem0/pull/6703))