Disable Chrome MCP telemetry watchdog by default#85886
Conversation
|
Codex review: passed. Latest ClawSweeper review: 2026-05-24 01:59 UTC / May 23, 2026, 9:59 PM ET. Workflow note: Future ClawSweeper reviews update this same comment in place. How this review workflow works
PR Surface View PR surface stats
Summary Reproducibility: yes. source-reproducible: current main builds Chrome MCP launch args without the upstream opt-out flag, while upstream defaults usage statistics on and starts a detached watchdog when telemetry is initialized. I did not run a fresh failing current-main process leak loop in this read-only review. PR rating What the crustacean ranks mean
Shiny media proof means a screenshot, video, or linked artifact directly shows the changed behavior. Runtime, network, CSP, and security claims still need visible diagnostics. Real behavior proof Risk before merge
Maintainer options:
Next step before merge Security Review detailsBest possible solution: Land this narrow arg-builder fix after exact-head checks, keeping explicit profile args as the operator opt-in path for upstream usage statistics. Do we have a high-confidence way to reproduce the issue? Yes, source-reproducible: current main builds Chrome MCP launch args without the upstream opt-out flag, while upstream defaults usage statistics on and starts a detached watchdog when telemetry is initialized. I did not run a fresh failing current-main process leak loop in this read-only review. Is this the best way to solve the issue? Yes; adding the documented upstream opt-out to OpenClaw's default Chrome MCP argv while removing it only for explicit profile usage-statistics args is the narrow maintainable fix. Label justifications:
What I checked:
Likely related people:
Codex review notes: model gpt-5.5, reasoning high; reviewed against 12f82270cf07. |
|
ClawSweeper PR egg ✨ Hatched: 🥚 common Sunspot Diff Drake Hatch commandComment Hatchability rules:
Rarity: 🥚 common. What is this egg doing here?
|
|
@clawsweeper automerge |
|
🦞🧹
Draft PRs stay fix-only until GitHub marks them ready for review. Pause with Automerge progress:
|
fd697db to
68249b1
Compare
|
@clawsweeper re-review |
|
🦞🧹 I asked ClawSweeper to review this item again. Re-review progress:
|
Summary: - The PR adds the Chrome DevTools MCP `--no-usage-statistics` default launch arg, honors explicit profile usage-statistics `mcpArgs`, adds regression tests, and adds a changelog entry. - Reproducibility: yes. source-reproducible: current main builds Chrome MCP launch args without the upstream o ... etry is initialized. I did not run a fresh failing current-main process leak loop in this read-only review. Automerge notes: - PR branch already contained follow-up commit before automerge: Disable Chrome MCP telemetry watchdog by default Validation: - ClawSweeper review passed for head 68249b1. - Required merge gates passed before the squash merge. Prepared head SHA: 68249b1 Review: openclaw#85886 (comment) Co-authored-by: Rohit <rohitjavvadi2@gmail.com> Co-authored-by: clawsweeper <274271284+clawsweeper[bot]@users.noreply.github.com> Co-authored-by: clawsweeper[bot] <274271284+clawsweeper[bot]@users.noreply.github.com> Approved-by: takhoffman Co-authored-by: takhoffman <781889+takhoffman@users.noreply.github.com>
Summary: - The PR adds the Chrome DevTools MCP `--no-usage-statistics` default launch arg, honors explicit profile usage-statistics `mcpArgs`, adds regression tests, and adds a changelog entry. - Reproducibility: yes. source-reproducible: current main builds Chrome MCP launch args without the upstream o ... etry is initialized. I did not run a fresh failing current-main process leak loop in this read-only review. Automerge notes: - PR branch already contained follow-up commit before automerge: Disable Chrome MCP telemetry watchdog by default Validation: - ClawSweeper review passed for head 68249b1. - Required merge gates passed before the squash merge. Prepared head SHA: 68249b1 Review: openclaw#85886 (comment) Co-authored-by: Rohit <rohitjavvadi2@gmail.com> Co-authored-by: clawsweeper <274271284+clawsweeper[bot]@users.noreply.github.com> Co-authored-by: clawsweeper[bot] <274271284+clawsweeper[bot]@users.noreply.github.com> Approved-by: takhoffman Co-authored-by: takhoffman <781889+takhoffman@users.noreply.github.com>
Summary: - The PR adds the Chrome DevTools MCP `--no-usage-statistics` default launch arg, honors explicit profile usage-statistics `mcpArgs`, adds regression tests, and adds a changelog entry. - Reproducibility: yes. source-reproducible: current main builds Chrome MCP launch args without the upstream o ... etry is initialized. I did not run a fresh failing current-main process leak loop in this read-only review. Automerge notes: - PR branch already contained follow-up commit before automerge: Disable Chrome MCP telemetry watchdog by default Validation: - ClawSweeper review passed for head 68249b1. - Required merge gates passed before the squash merge. Prepared head SHA: 68249b1 Review: openclaw#85886 (comment) Co-authored-by: Rohit <rohitjavvadi2@gmail.com> Co-authored-by: clawsweeper <274271284+clawsweeper[bot]@users.noreply.github.com> Co-authored-by: clawsweeper[bot] <274271284+clawsweeper[bot]@users.noreply.github.com> Approved-by: takhoffman Co-authored-by: takhoffman <781889+takhoffman@users.noreply.github.com>
Summary: - The PR adds the Chrome DevTools MCP `--no-usage-statistics` default launch arg, honors explicit profile usage-statistics `mcpArgs`, adds regression tests, and adds a changelog entry. - Reproducibility: yes. source-reproducible: current main builds Chrome MCP launch args without the upstream o ... etry is initialized. I did not run a fresh failing current-main process leak loop in this read-only review. Automerge notes: - PR branch already contained follow-up commit before automerge: Disable Chrome MCP telemetry watchdog by default Validation: - ClawSweeper review passed for head 68249b1. - Required merge gates passed before the squash merge. Prepared head SHA: 68249b1 Review: openclaw#85886 (comment) Co-authored-by: Rohit <rohitjavvadi2@gmail.com> Co-authored-by: clawsweeper <274271284+clawsweeper[bot]@users.noreply.github.com> Co-authored-by: clawsweeper[bot] <274271284+clawsweeper[bot]@users.noreply.github.com> Approved-by: takhoffman Co-authored-by: takhoffman <781889+takhoffman@users.noreply.github.com>
Summary: - The PR adds the Chrome DevTools MCP `--no-usage-statistics` default launch arg, honors explicit profile usage-statistics `mcpArgs`, adds regression tests, and adds a changelog entry. - Reproducibility: yes. source-reproducible: current main builds Chrome MCP launch args without the upstream o ... etry is initialized. I did not run a fresh failing current-main process leak loop in this read-only review. Automerge notes: - PR branch already contained follow-up commit before automerge: Disable Chrome MCP telemetry watchdog by default Validation: - ClawSweeper review passed for head 68249b1. - Required merge gates passed before the squash merge. Prepared head SHA: 68249b1 Review: openclaw#85886 (comment) Co-authored-by: Rohit <rohitjavvadi2@gmail.com> Co-authored-by: clawsweeper <274271284+clawsweeper[bot]@users.noreply.github.com> Co-authored-by: clawsweeper[bot] <274271284+clawsweeper[bot]@users.noreply.github.com> Approved-by: takhoffman Co-authored-by: takhoffman <781889+takhoffman@users.noreply.github.com>
Summary: - The PR adds the Chrome DevTools MCP `--no-usage-statistics` default launch arg, honors explicit profile usage-statistics `mcpArgs`, adds regression tests, and adds a changelog entry. - Reproducibility: yes. source-reproducible: current main builds Chrome MCP launch args without the upstream o ... etry is initialized. I did not run a fresh failing current-main process leak loop in this read-only review. Automerge notes: - PR branch already contained follow-up commit before automerge: Disable Chrome MCP telemetry watchdog by default Validation: - ClawSweeper review passed for head 68249b1. - Required merge gates passed before the squash merge. Prepared head SHA: 68249b1 Review: openclaw#85886 (comment) Co-authored-by: Rohit <rohitjavvadi2@gmail.com> Co-authored-by: clawsweeper <274271284+clawsweeper[bot]@users.noreply.github.com> Co-authored-by: clawsweeper[bot] <274271284+clawsweeper[bot]@users.noreply.github.com> Approved-by: takhoffman Co-authored-by: takhoffman <781889+takhoffman@users.noreply.github.com>
Summary: - The PR adds the Chrome DevTools MCP `--no-usage-statistics` default launch arg, honors explicit profile usage-statistics `mcpArgs`, adds regression tests, and adds a changelog entry. - Reproducibility: yes. source-reproducible: current main builds Chrome MCP launch args without the upstream o ... etry is initialized. I did not run a fresh failing current-main process leak loop in this read-only review. Automerge notes: - PR branch already contained follow-up commit before automerge: Disable Chrome MCP telemetry watchdog by default Validation: - ClawSweeper review passed for head 68249b1. - Required merge gates passed before the squash merge. Prepared head SHA: 68249b1 Review: openclaw#85886 (comment) Co-authored-by: Rohit <rohitjavvadi2@gmail.com> Co-authored-by: clawsweeper <274271284+clawsweeper[bot]@users.noreply.github.com> Co-authored-by: clawsweeper[bot] <274271284+clawsweeper[bot]@users.noreply.github.com> Approved-by: takhoffman Co-authored-by: takhoffman <781889+takhoffman@users.noreply.github.com>
Summary: - The PR adds the Chrome DevTools MCP `--no-usage-statistics` default launch arg, honors explicit profile usage-statistics `mcpArgs`, adds regression tests, and adds a changelog entry. - Reproducibility: yes. source-reproducible: current main builds Chrome MCP launch args without the upstream o ... etry is initialized. I did not run a fresh failing current-main process leak loop in this read-only review. Automerge notes: - PR branch already contained follow-up commit before automerge: Disable Chrome MCP telemetry watchdog by default Validation: - ClawSweeper review passed for head 68249b1. - Required merge gates passed before the squash merge. Prepared head SHA: 68249b1 Review: openclaw#85886 (comment) Co-authored-by: Rohit <rohitjavvadi2@gmail.com> Co-authored-by: clawsweeper <274271284+clawsweeper[bot]@users.noreply.github.com> Co-authored-by: clawsweeper[bot] <274271284+clawsweeper[bot]@users.noreply.github.com> Approved-by: takhoffman Co-authored-by: takhoffman <781889+takhoffman@users.noreply.github.com>
Summary: - The PR adds the Chrome DevTools MCP `--no-usage-statistics` default launch arg, honors explicit profile usage-statistics `mcpArgs`, adds regression tests, and adds a changelog entry. - Reproducibility: yes. source-reproducible: current main builds Chrome MCP launch args without the upstream o ... etry is initialized. I did not run a fresh failing current-main process leak loop in this read-only review. Automerge notes: - PR branch already contained follow-up commit before automerge: Disable Chrome MCP telemetry watchdog by default Validation: - ClawSweeper review passed for head 68249b1. - Required merge gates passed before the squash merge. Prepared head SHA: 68249b1 Review: openclaw#85886 (comment) Co-authored-by: Rohit <rohitjavvadi2@gmail.com> Co-authored-by: clawsweeper <274271284+clawsweeper[bot]@users.noreply.github.com> Co-authored-by: clawsweeper[bot] <274271284+clawsweeper[bot]@users.noreply.github.com> Approved-by: takhoffman Co-authored-by: takhoffman <781889+takhoffman@users.noreply.github.com>
Summary: - The PR adds the Chrome DevTools MCP `--no-usage-statistics` default launch arg, honors explicit profile usage-statistics `mcpArgs`, adds regression tests, and adds a changelog entry. - Reproducibility: yes. source-reproducible: current main builds Chrome MCP launch args without the upstream o ... etry is initialized. I did not run a fresh failing current-main process leak loop in this read-only review. Automerge notes: - PR branch already contained follow-up commit before automerge: Disable Chrome MCP telemetry watchdog by default Validation: - ClawSweeper review passed for head 68249b1. - Required merge gates passed before the squash merge. Prepared head SHA: 68249b1 Review: openclaw#85886 (comment) Co-authored-by: Rohit <rohitjavvadi2@gmail.com> Co-authored-by: clawsweeper <274271284+clawsweeper[bot]@users.noreply.github.com> Co-authored-by: clawsweeper[bot] <274271284+clawsweeper[bot]@users.noreply.github.com> Approved-by: takhoffman Co-authored-by: takhoffman <781889+takhoffman@users.noreply.github.com>
Summary
--no-usage-statisticswhen OpenClaw launcheschrome-devtools-mcp@latest.mcpArgsoverrides for usage statistics.Motivation / root cause
chrome-devtools-mcpenables usage statistics by default and can spawn a detached watchdog process. OpenClaw closes the MCP SDK stdio transport, but that only owns the direct child process. Disabling usage statistics at launch prevents the detached telemetry watchdog from being created in the default OpenClaw browser automation path.Refs #85721
Real behavior proof
Behavior addressed: Browser automation launches Chrome DevTools MCP without leaving a detached usage-statistics watchdog behind after the MCP client is closed.
Real environment tested: macOS local checkout, Node 24.10.0, real
npx chrome-devtools-mcp@latestprocess launched through@modelcontextprotocol/sdkStdioClientTransport.Exact steps or command run after this patch: Started a real MCP SDK
ClientwithStdioClientTransport({ command: "npx", args: buildChromeMcpArgs({ cdpUrl: "http://127.0.0.1:9" }) }), calledclient.connect(),client.listTools(), thenclient.close(), waited 1.2s, and scannedps axo pid=,ppid=,command=forchrome-devtools-mcpandwatchdog/main.js.Evidence after fix: Copied live console output from the real SDK stdio close/process-scan smoke:
{ "generatedArgs": [ "-y", "chrome-devtools-mcp@latest", "--browserUrl", "http://127.0.0.1:9", "--no-usage-statistics", "--experimentalStructuredContent", "--experimental-page-id-routing" ], "transportPid": 14467, "remainingRelevantProcesses": [], "watchdogProcessesRemaining": 0 }Observed result after fix: Live output shows
--no-usage-statisticsin the generated argv,remainingRelevantProcesses: [], andwatchdogProcessesRemaining: 0; nochrome-devtools-mcpor telemetry watchdog process remained after closing the SDK client.What was not tested: I did not run a full Chrome browser UI workflow or a Linux remote/Testbox smoke in this pass.
Regression tests
node scripts/run-vitest.mjs extensions/browser/src/browser/chrome-mcp.test.tsnode scripts/run-vitest.mjs extensions/browser/src/browser/server-context.existing-session.test.ts extensions/browser/src/browser/server-context.stop-running-browser.test.ts extensions/browser/src/browser/routes/basic.existing-session.test.tsExact commands run
./node_modules/.bin/oxfmt --check extensions/browser/src/browser/chrome-mcp.ts extensions/browser/src/browser/chrome-mcp.test.tsgit diff --check origin/main...HEADnode scripts/run-vitest.mjs extensions/browser/src/browser/chrome-mcp.test.tsnode scripts/run-vitest.mjs extensions/browser/src/browser/server-context.existing-session.test.ts extensions/browser/src/browser/server-context.stop-running-browser.test.ts extensions/browser/src/browser/routes/basic.existing-session.test.tsUser-visible behavior
Existing-session browser automation should no longer accumulate detached Chrome DevTools MCP telemetry watchdog processes during normal OpenClaw-managed MCP launches.
Compatibility
Users who explicitly want upstream usage statistics can still pass a usage-statistics arg in
browser.profiles.*.mcpArgs; explicit args override OpenClaw's default opt-out.Risks
Low. The change adds one documented Chrome DevTools MCP flag to the existing argv list and keeps profile-level custom args as separate argv entries.