What happened
With the diagnostics panel closed and no client connected, the bundled t3-resource-monitor keeps enumerating every process on the machine every 5 s, holds ~280–290 process handles permanently, and uses ~1.3% of a core around the clock. There is no setting, flag, or environment variable that turns it off.
Diagnosis
resolveNativeSampleIntervalMs (apps/server/src/resourceTelemetry/NativeTelemetryClient.ts) returns 5 s when there is no live subscriber (UNKNOWN_BACKGROUND_SAMPLE_INTERVAL_MS, also on battery), and 15 s only when the host is locked, in low-power mode, or thermally constrained. It never returns "off". docs/internals/resource-telemetry.md says the server "requests continuous snapshots only while diagnostics has live subscribers"; the code does not match that.
- Each sample calls
refresh_processes_specifics(ProcessesToUpdate::All, ...) (native/resource-monitor/src/main.rs:419) and walks every process on the machine (~440 here) to find the T3 subtree. On Windows sysinfo opens a handle per process and, on discovery, reads its command line out of the remote process, so the monitor reads processes it does not report on, including a running game. Only the T3 tree is sent to the server.
- The only related config is
resourceMonitorPath, which is internal. Nothing in Settings, t3 serve --help, or T3CODE_* disables the collector.
Steps to reproduce
- Start the desktop app on Windows, close the diagnostics panel or disconnect all clients.
- Watch
t3-resource-monitor.exe in Process Explorer: handle count, CPU, and OpenProcess / ReadProcessMemory activity every 5 s.
- Lock the screen: the interval becomes 15 s; nothing stops it.
Expected: no sampling without a live subscriber (as documented), or a setting to disable native telemetry; enumeration limited to the T3 process tree.
Actual: whole-system sampling every 5 s for the life of the server.
Version
0.0.41-nightly.20260908.1414 (desktop); code unchanged on main @ 211618f.
Environment
Windows 11 Pro 26200, desktop app hosting the server.
Evidence
Process Explorer over several hours: ~281–293 handles held by t3-resource-monitor.exe, ~1.34% CPU steady, a sample every 5 s (15 s while locked).
Related issues
#4182 / #2679 replaced the process-diagnostics polling on the server side; this is the native collector that remained. #9661 item S16 covers a separate one-second process-table poll for idle terminal prompts. #7736 and #9837 are about the collector not starting on Linux.
Fix applied or workaround
None found. Deleting the binary would stop it, but the server then logs a failed collector on every start.
Filed by
Claude Code (Claude Fable 5.1), following the t3 triage playbook from a checkout of main.
What happened
With the diagnostics panel closed and no client connected, the bundled
t3-resource-monitorkeeps enumerating every process on the machine every 5 s, holds ~280–290 process handles permanently, and uses ~1.3% of a core around the clock. There is no setting, flag, or environment variable that turns it off.Diagnosis
resolveNativeSampleIntervalMs(apps/server/src/resourceTelemetry/NativeTelemetryClient.ts) returns 5 s when there is no live subscriber (UNKNOWN_BACKGROUND_SAMPLE_INTERVAL_MS, also on battery), and 15 s only when the host is locked, in low-power mode, or thermally constrained. It never returns "off".docs/internals/resource-telemetry.mdsays the server "requests continuous snapshots only while diagnostics has live subscribers"; the code does not match that.refresh_processes_specifics(ProcessesToUpdate::All, ...)(native/resource-monitor/src/main.rs:419) and walks every process on the machine (~440 here) to find the T3 subtree. On Windowssysinfoopens a handle per process and, on discovery, reads its command line out of the remote process, so the monitor reads processes it does not report on, including a running game. Only the T3 tree is sent to the server.resourceMonitorPath, which is internal. Nothing in Settings,t3 serve --help, orT3CODE_*disables the collector.Steps to reproduce
t3-resource-monitor.exein Process Explorer: handle count, CPU, andOpenProcess/ReadProcessMemoryactivity every 5 s.Expected: no sampling without a live subscriber (as documented), or a setting to disable native telemetry; enumeration limited to the T3 process tree.
Actual: whole-system sampling every 5 s for the life of the server.
Version
0.0.41-nightly.20260908.1414 (desktop); code unchanged on
main@ 211618f.Environment
Windows 11 Pro 26200, desktop app hosting the server.
Evidence
Process Explorer over several hours: ~281–293 handles held by
t3-resource-monitor.exe, ~1.34% CPU steady, a sample every 5 s (15 s while locked).Related issues
#4182 / #2679 replaced the process-diagnostics polling on the server side; this is the native collector that remained. #9661 item S16 covers a separate one-second process-table poll for idle terminal prompts. #7736 and #9837 are about the collector not starting on Linux.
Fix applied or workaround
None found. Deleting the binary would stop it, but the server then logs a failed collector on every start.
Filed by
Claude Code (Claude Fable 5.1), following the
t3 triageplaybook from a checkout ofmain.