From c27ee541c03804d5c11d973ef489662503b47242 Mon Sep 17 00:00:00 2001 From: Giles Odigwe Date: Thu, 29 Jan 2026 10:21:39 -0800 Subject: [PATCH 1/3] disable mem0 telemetry by default --- python/packages/mem0/README.md | 11 +++++++ .../mem0/agent_framework_mem0/__init__.py | 6 ++++ .../mem0/agent_framework_mem0/_provider.py | 8 ++++- .../mem0/tests/test_mem0_context_provider.py | 30 +++++++++++++++++++ 4 files changed, 54 insertions(+), 1 deletion(-) diff --git a/python/packages/mem0/README.md b/python/packages/mem0/README.md index cf2b88523d..855b3a1997 100644 --- a/python/packages/mem0/README.md +++ b/python/packages/mem0/README.md @@ -18,3 +18,14 @@ See the [Mem0 basic example](https://github.com/microsoft/agent-framework/tree/m - Teaching the agent user preferences - Retrieving information using remembered context across new threads - Persistent memory + +## Telemetry + +Mem0's telemetry (PostHog analytics) is **disabled by default** when using this package. If you want to enable telemetry, set the environment variable before importing: + +```python +import os +os.environ["MEM0_TELEMETRY"] = "true" + +from agent_framework.mem0 import Mem0Provider +``` diff --git a/python/packages/mem0/agent_framework_mem0/__init__.py b/python/packages/mem0/agent_framework_mem0/__init__.py index 256e15356c..4f1d13b30c 100644 --- a/python/packages/mem0/agent_framework_mem0/__init__.py +++ b/python/packages/mem0/agent_framework_mem0/__init__.py @@ -1,6 +1,12 @@ # Copyright (c) Microsoft. All rights reserved. import importlib.metadata +import os + +# Disable Mem0 telemetry by default to prevent usage data from being sent to PostHog. +# Users can opt-in by setting MEM0_TELEMETRY=true before importing this package. +if os.environ.get("MEM0_TELEMETRY") is None: + os.environ["MEM0_TELEMETRY"] = "false" from ._provider import Mem0Provider diff --git a/python/packages/mem0/agent_framework_mem0/_provider.py b/python/packages/mem0/agent_framework_mem0/_provider.py index 3ff04df2a4..95ab1e6e12 100644 --- a/python/packages/mem0/agent_framework_mem0/_provider.py +++ b/python/packages/mem0/agent_framework_mem0/_provider.py @@ -30,7 +30,13 @@ class MemorySearchResponse_v1_1(TypedDict): class Mem0Provider(ContextProvider): - """Mem0 Context Provider.""" + """Mem0 Context Provider. + + Note: + Mem0's telemetry (PostHog analytics) is disabled by default when using this package. + To enable telemetry, set the environment variable ``MEM0_TELEMETRY=true`` before + importing this package. + """ def __init__( self, diff --git a/python/packages/mem0/tests/test_mem0_context_provider.py b/python/packages/mem0/tests/test_mem0_context_provider.py index 0013e7ce6e..5e21c75e65 100644 --- a/python/packages/mem0/tests/test_mem0_context_provider.py +++ b/python/packages/mem0/tests/test_mem0_context_provider.py @@ -1,6 +1,9 @@ # Copyright (c) Microsoft. All rights reserved. # pyright: reportPrivateUsage=false +import importlib +import os +import sys from unittest.mock import AsyncMock, patch import pytest @@ -592,3 +595,30 @@ def test_build_filters_returns_empty_dict_when_no_parameters(self, mock_mem0_cli filters = provider._build_filters() assert filters == {} + + +class TestMem0Telemetry: + """Test telemetry configuration for Mem0.""" + + def test_mem0_telemetry_disabled_by_default(self) -> None: + """Test that MEM0_TELEMETRY is set to 'false' by default when importing the package.""" + # The environment variable should be set to "false" after importing agent_framework.mem0 + assert os.environ.get("MEM0_TELEMETRY") == "false" + + def test_mem0_telemetry_respects_user_setting(self, monkeypatch: pytest.MonkeyPatch) -> None: + """Test that user-set MEM0_TELEMETRY value is not overwritten.""" + # Remove cached modules to force re-import + modules_to_remove = [key for key in sys.modules if key.startswith("agent_framework_mem0")] + for mod in modules_to_remove: + del sys.modules[mod] + + # Set user preference before import + monkeypatch.setenv("MEM0_TELEMETRY", "true") + + # Re-import the module + import agent_framework_mem0 + + importlib.reload(agent_framework_mem0) + + # User setting should be preserved + assert os.environ.get("MEM0_TELEMETRY") == "true" From 808f617726b7eb41291e137ea7c64fd01afa3240 Mon Sep 17 00:00:00 2001 From: Giles Odigwe Date: Thu, 29 Jan 2026 10:51:23 -0800 Subject: [PATCH 2/3] test fix --- .../mem0/tests/test_mem0_context_provider.py | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/python/packages/mem0/tests/test_mem0_context_provider.py b/python/packages/mem0/tests/test_mem0_context_provider.py index 5e21c75e65..85779b6ccf 100644 --- a/python/packages/mem0/tests/test_mem0_context_provider.py +++ b/python/packages/mem0/tests/test_mem0_context_provider.py @@ -600,9 +600,22 @@ def test_build_filters_returns_empty_dict_when_no_parameters(self, mock_mem0_cli class TestMem0Telemetry: """Test telemetry configuration for Mem0.""" - def test_mem0_telemetry_disabled_by_default(self) -> None: + def test_mem0_telemetry_disabled_by_default(self, monkeypatch: pytest.MonkeyPatch) -> None: """Test that MEM0_TELEMETRY is set to 'false' by default when importing the package.""" - # The environment variable should be set to "false" after importing agent_framework.mem0 + # Ensure MEM0_TELEMETRY is not set before importing the module under test + monkeypatch.delenv("MEM0_TELEMETRY", raising=False) + + # Remove cached modules to force re-import and trigger module-level initialization + modules_to_remove = [key for key in sys.modules if key.startswith("agent_framework_mem0")] + for mod in modules_to_remove: + del sys.modules[mod] + + # Import (and reload) the module so that it can set MEM0_TELEMETRY when unset + import agent_framework_mem0 + + importlib.reload(agent_framework_mem0) + + # The environment variable should be set to "false" after importing assert os.environ.get("MEM0_TELEMETRY") == "false" def test_mem0_telemetry_respects_user_setting(self, monkeypatch: pytest.MonkeyPatch) -> None: From d9d05fe390af6af6435f29a950e60e7592878d7e Mon Sep 17 00:00:00 2001 From: Giles Odigwe Date: Fri, 30 Jan 2026 12:57:51 -0800 Subject: [PATCH 3/3] addressed comments --- python/packages/mem0/README.md | 2 +- python/packages/mem0/agent_framework_mem0/__init__.py | 2 +- python/packages/mem0/agent_framework_mem0/_provider.py | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/python/packages/mem0/README.md b/python/packages/mem0/README.md index 855b3a1997..a824c7db51 100644 --- a/python/packages/mem0/README.md +++ b/python/packages/mem0/README.md @@ -21,7 +21,7 @@ See the [Mem0 basic example](https://github.com/microsoft/agent-framework/tree/m ## Telemetry -Mem0's telemetry (PostHog analytics) is **disabled by default** when using this package. If you want to enable telemetry, set the environment variable before importing: +Mem0's telemetry is **disabled by default** when using this package. If you want to enable telemetry, set the environment variable before importing: ```python import os diff --git a/python/packages/mem0/agent_framework_mem0/__init__.py b/python/packages/mem0/agent_framework_mem0/__init__.py index 4f1d13b30c..7ff88aaa42 100644 --- a/python/packages/mem0/agent_framework_mem0/__init__.py +++ b/python/packages/mem0/agent_framework_mem0/__init__.py @@ -3,7 +3,7 @@ import importlib.metadata import os -# Disable Mem0 telemetry by default to prevent usage data from being sent to PostHog. +# Disable Mem0 telemetry by default to prevent usage data from being sent to telemetry provider. # Users can opt-in by setting MEM0_TELEMETRY=true before importing this package. if os.environ.get("MEM0_TELEMETRY") is None: os.environ["MEM0_TELEMETRY"] = "false" diff --git a/python/packages/mem0/agent_framework_mem0/_provider.py b/python/packages/mem0/agent_framework_mem0/_provider.py index 95ab1e6e12..8ab9192d1a 100644 --- a/python/packages/mem0/agent_framework_mem0/_provider.py +++ b/python/packages/mem0/agent_framework_mem0/_provider.py @@ -33,7 +33,7 @@ class Mem0Provider(ContextProvider): """Mem0 Context Provider. Note: - Mem0's telemetry (PostHog analytics) is disabled by default when using this package. + Mem0's telemetry is disabled by default when using this package. To enable telemetry, set the environment variable ``MEM0_TELEMETRY=true`` before importing this package. """