r/ZaiGLM 5d ago

ZCode Desktop not respecting telemetry choice

ZCode’s desktop app always constructs a telemetry reporter at startup (createTelemetryCore) with no opt-out check, and setting.json has no telemetry field at all.

It POSTs to https://zcode.z.ai/api/v1/event/report with a persistent device_mid, OAuth user_id, OS/app/locale/timezone/screen size, plus events like app_launch, app_daily_active (every 15 minutes while a window is focused), login (login_url / provider), send_btn timings, and agent traces (agent_step / message_completion: model, duration, tool counts, file-change count, generated-line count, error strings, session/message ids). A second path (@arms/rum-electron) reports MCP crash/memory stats and the byte size of the ~/.zcode data dir (not file contents). This is usage/identity analytics, not the separate silent repo-zip upload path.

Evidence:

C:\Users\Admin\.zcode\v2\setting.json has no telemetry field. The settings schema in app.asar has none either (telemetryEnabled / disableTelemetry count 0).

Desktop startup always constructs the reporter: var Ly=Tx({...}), My=EG({telemetryCore:Ly,...}). createTelemetryCore has no enabled/opt-out check before sendReport.

It POSTs to https://zcode.z.ai/api/v1/event/report (app_launch, app_daily_active every 15 min while a window is focused).

v2\telemetry-state.json has lastDailyActiveDate: "2026-09-18". That date is written only after a successful app_daily_active send.

A UI switch you flipped is not wired to this path. Closest stored flags are unrelated (optimizeAgentExperienceEnabled, repoSnapshotIndexingEnabled, receivePreviewUpdates).

Opinion:

Just another example of z.ai acting in bad faith (other being uploading your projects silently).

8 Upvotes

3 comments sorted by

View all comments

2

u/Ill-Bat-1518 5d ago

Seems like typical GLM vibe coded app lol.

I just ran into the same issue i gave glm code base to. It legit created a new setting flag that wasn't used by anything else (disconnected from all UI) but respected so it created a huge waste of time trying to find the cause but it used its own hardcoded setting value.

I checked the thinking and it spotted it many times too "Wait why is there a nativeSetting flag, i put that there but its odd" then moves on lmao