Open general

TODO (future exploration): get more creative about debugger exposure in Layer 2 (the yellow bar, Mouser-style detection) without giving up background trusted input

John Lauer · 2mo ago

Parked by John on 2026-09-04 after the release proof: "i think we're fine right now. maybe we have to get more creative in the future." Not a defect, a research note so the idea is not lost.

Where we are. Layer 2 attaches Chrome's debugger (CDP) only for the verbs that need it: trusted click/type/key/hover/wheel, eval, background screenshots, file inputs, dialog pre-answers. Everything else (open/close/navigate/tabs/cookies/fetch_url/downloads/badge/recorder) is plain chrome.* and shows no bar. Attach is lazy per tab, detach after 45s idle (extension/src/cdp.js IDLE_MS). The debugger is the price of human-grade input and capture on a BACKGROUND window without foregrounding, which is the rule we will not trade away.

What it costs today. The yellow "started debugging this browser" bar while attached, and bot detection that fingerprints an attached debugger: Mouser served "Verification Required" to a driven window on the office egress (2026-09-04, adom/nb-bridge release proof; DigiKey, TI, Google, the wiki did not care).

Avenues worth exploring, roughly in order of payoff:

  1. Attach-per-verb instead of idle-detach: attach, do the one CDP call, detach. The bar flashes for ~100 to 300 ms per verb instead of lingering; detection still sees the attached moments but the window between them is clean. Measure the re-attach cost on a real page first.
  2. Screenshot without CDP when the window is visible: chrome.tabs.captureVisibleTab works for the active tab of a visible window (no bar). Fall back to CDP only when the window is occluded or minimized. Many "see the page" calls happen while the user is not covering the window.
  3. Untrusted-event fast path: for sites that accept synthetic DOM events (most canvas apps, most plain forms), dispatch via chrome.scripting instead of CDP and only escalate to CDP when the page ignores the event (the click verb already measures a before/after page signature, so the escalation signal exists).
  4. Identify which CDP domains trip detection. The usual tell is Runtime.enable and the console-object side effects, not the attach itself; attaching only Input and Page (no Runtime) may pass more detectors. Needs a per-site matrix (Mouser, Cloudflare-fronted sites, Akamai).
  5. Keep a per-site memory of "needed CDP" vs "worked without", so the AI is not taught a site's answer twice.

Non-goals: foregrounding for OS-level input (adom ab desktop_send_keys) is not an option here; Layer 1 stays extension-free and debugger-free by definition.

0 Replies

Log in to reply.