fix: remove upstream telemetry entirely from managed Sessions - #26
Merged
Conversation
There was a problem hiding this comment.
Pull request overview
This PR removes upstream BlenderMCP telemetry from managed Sessions by deleting the vendored addon’s telemetry/consent surface and forcing the validated blender-mcp stdio server to run with telemetry disabled via environment.
Changes:
- Vendored addon: removes the
get_telemetry_consentcommand handler and the related addon preference/UI. mcp-serve: setsDISABLE_TELEMETRY=truein the launched server environment for managed Sessions.- Adds/tests/docs: new policy tests to prevent reintroducing telemetry, plus documentation/attribution and changelog updates reflecting the security posture.
Reviewed changes
Copilot reviewed 7 out of 9 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
THIRD_PARTY_NOTICES.md |
Documents that the vendored addon is modified and telemetry is removed. |
tests/test_vendor_addon.py |
Adds policy pins to prevent telemetry/consent code from reappearing in the vendored addon/patch. |
tests/test_mcp_serve.py |
Extends fake uvx e2e record to assert DISABLE_TELEMETRY reaches the server environment. |
src/blendersessiond/vendor/addon.py |
Deletes telemetry consent handler and telemetry-related preference/UI from vendored addon. |
src/blendersessiond/vendor/addon.patch |
Regenerates patch to include telemetry removal hunks as part of the vendor delta. |
src/blendersessiond/mcp_serve.py |
Forces DISABLE_TELEMETRY=true when exec’ing the validated blender-mcp server. |
README.md |
Updates vendoring paragraph to clearly state telemetry is removed/disabled for managed Sessions. |
docs/compat.md |
Records telemetry removal rationale and re-pin requirements (including env var behavior). |
CHANGELOG.md |
Notes removal of upstream telemetry from managed Sessions under Unreleased. |
Comments suppressed due to low confidence (1)
tests/test_vendor_addon.py:21
- The patch assertion currently matches an exact removed line with specific indentation, which is likely to break on upstream formatting/context changes even if telemetry removal is still correctly represented in the patch. Consider asserting more generally that
get_telemetry_consentappears on removed lines and does not appear on added lines.
patch = _VENDOR.joinpath("addon.patch").read_text(encoding="utf-8")
assert '- "get_telemetry_consent": self.get_telemetry_consent,' in patch
assert "+ def get_telemetry_consent" not in patch
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Upstream BlenderMCP ships default-on telemetry that reports usage data to the maintainer's hosted backend, and — when it believes consent was given — user prompts, executed code, and viewport screenshots. Its consent handler falls back to consent-granted whenever the addon is not registered through Blender's Preferences, which is exactly how managed Sessions load the addon (direct register() under --factory-startup). blendersessiond does not want that telemetry, so this PR deletes it entirely instead of relying on the broken fallback.
Changes
Verification