Skip to content

fix: disable ChromaDB telemetry to suppress posthog spam#782

Open
OmkarKirpan wants to merge 1 commit intoMemPalace:developfrom
OmkarKirpan:fix/disable-chromadb-telemetry
Open

fix: disable ChromaDB telemetry to suppress posthog spam#782
OmkarKirpan wants to merge 1 commit intoMemPalace:developfrom
OmkarKirpan:fix/disable-chromadb-telemetry

Conversation

@OmkarKirpan
Copy link
Copy Markdown

@OmkarKirpan OmkarKirpan commented Apr 13, 2026

Summary

Closes #458

Every ChromaDB operation in mempalace 3.1.0+ floods stderr with posthog telemetry errors:

Failed to send telemetry event ClientStartEvent: capture() takes 1 positional argument but 3 were given

This PR:

  • Adds a shared CHROMA_SETTINGS = Settings(anonymized_telemetry=False) constant in backends/chroma.py
  • Updates all 11 PersistentClient construction sites across 6 files to use it
  • Updates test helpers to use the same settings (avoids ChromaDB's SharedSystemClient singleton conflict)

Files changed

  • mempalace/backends/chroma.py — defines the shared constant, uses it
  • mempalace/mcp_server.py — imports and uses CHROMA_SETTINGS
  • mempalace/cli.py — uses CHROMA_SETTINGS in cmd_repair and cmd_compress
  • mempalace/dedup.py — uses CHROMA_SETTINGS in both client creation sites
  • mempalace/repair.py — uses CHROMA_SETTINGS in all 3 client creation sites
  • mempalace/migrate.py — uses CHROMA_SETTINGS in both client creation sites
  • tests/test_backends.py — verification client uses CHROMA_SETTINGS
  • tests/test_mcp_server.py — test helper uses CHROMA_SETTINGS

Test plan

  • All existing tests pass (pytest tests/test_backends.py tests/test_mcp_server.py::TestCacheInvalidation tests/test_cli.py — 53 passed)
  • ruff check and ruff format clean
  • Manual: mempalace mine / mempalace status no longer prints telemetry errors to stderr

@bensig
Copy link
Copy Markdown
Collaborator

bensig commented Apr 15, 2026

hey @OmkarKirpan — this conflicts with develop now. pls rebase and we can merge it. thanks!

@OmkarKirpan OmkarKirpan force-pushed the fix/disable-chromadb-telemetry branch from bb661b4 to 6994133 Compare April 15, 2026 09:33
@OmkarKirpan
Copy link
Copy Markdown
Author

hey @OmkarKirpan — this conflicts with develop now. pls rebase and we can merge it. thanks!

Hi @bensig
Rebased onto develop and force-pushed - conflicts resolved, all 918 tests passing. Ready to merge.

rosschurchill added a commit to rosschurchill/mempalace that referenced this pull request Apr 18, 2026
… output

Closes two remaining Phase 0 security gaps (issue MemPalace#782, MemPalace#783):

1. ChromaDB telemetry (backends/chroma.py):
   - Add `Settings(anonymized_telemetry=False)` to both PersistentClient
     call sites (_client() and make_client()), ensuring no PostHog traffic
     regardless of which code path creates the client.
   - Set ANONYMIZED_TELEMETRY=False env var at import time as belt-and-
     suspenders (covers C-level telemetry before Python sees it).
   - Violates local-first guarantee without this fix — every query was
     being reported to posthog.com.

2. ensure_ascii=False in MCP output (mcp_server.py):
   - Tool result serialization (line 1653) and the main response writer
     (line 1700) both now pass ensure_ascii=False.
   - Without this, non-ASCII content (Chinese, Russian, accented chars)
     gets mangled into \uXXXX escapes before the LLM sees it.

Previously fixed by PR MemPalace#812 (shell injection, path traversal) and
PR MemPalace#811 (entity registry SSRF) — those are confirmed in place.

Co-Authored-By: Claude Sonnet 4.6 <[email protected]>
ChromaDB 0.6.3 with recent posthog versions floods stderr with
"Failed to send telemetry event" on every operation. This adds
Settings(anonymized_telemetry=False) via a shared CHROMA_SETTINGS
constant in backends/chroma.py, used by all PersistentClient
construction sites across the codebase.

Closes MemPalace#458
@OmkarKirpan OmkarKirpan force-pushed the fix/disable-chromadb-telemetry branch from 6994133 to b22ad82 Compare April 20, 2026 10:35
@OmkarKirpan
Copy link
Copy Markdown
Author

Rebased onto latest develop (32ec74d). Conflicts in mempalace/backends/chroma.py (new inode/mtime freshness tracking in _client) and tests/test_backends.py (additional imports + new test_chroma_cache_picks_up_db_created_after_first_open) resolved by preserving all develop logic and threading settings=CHROMA_SETTINGS through the new PersistentClient call sites. Full tests pass locally (test_backends.py, test_mcp_server.py, test_miner.py, test_convo_miner.py: 116 passed). Ready to merge.

@OmkarKirpan
Copy link
Copy Markdown
Author

@bensig — rebased onto latest develop, conflicts resolved, tests green. Ready when you are.

@OmkarKirpan OmkarKirpan requested a review from bensig April 20, 2026 10:42
@OmkarKirpan
Copy link
Copy Markdown
Author

cc @milla-jovovich — rebased on develop, approved by @bensig, tests green. Could you take a look when you have a minute?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area/cli CLI commands area/mcp MCP server and tools area/search Search and retrieval bug Something isn't working security Security related storage

Projects

None yet

Development

Successfully merging this pull request may close these issues.

ChromaDB 0.6.3 telemetry spam on every operation in mempalace 3.1.0

3 participants