# Blockers — browser extraction, 2026-08-21 ## 1. Three breaking changes taken now, because now they are free The relay has been switched off since 2026-08-13 and `user_integrations` held **zero** `browser-relay` rows — checked in Postgres, not assumed. Nothing is paired, so nothing can be unpaired. Each of these would cost somebody their pairing on any other day, and each was already recommended in a comment by whoever switched the relay off: - **the signing key** — tokens derived from `getKey('jwt')`, the platform's session key. Now `getKey('browser-relay')`. The old file said to do this on extraction, in those words. - **the storage** — pairing salts lived in the platform's `user_integrations`. Now `browser_pairings`, this plugin's own table. - **the port** — kept at 18792 deliberately, so an extension configured before the extraction still works. It is an input to the token HMAC as well as an address; changing it is silent and the extension reports it as "Relay not reachable", which SETUP.md blames on a wrong address. If any of this is revisited later, it is no longer free. ## 2. The extension is unbranded beyond its name `extension/manifest.json` is "Officer Browser Relay" with the icons it shipped with. The OfficerIcons repository has newer artwork and a naming convention (`OffBrowserAppIcon.png`) that this predates. Left alone rather than half-applied — the icons are a set, and the owner has more of that repository coming. ## 3. Untested end to end The relay ran as a second listener inside the platform and now runs as a sidecar. The rewiring is small — two questions cross the boundary and CDP still goes direct over its own socket — but **no browser has been paired against it since the move**. What is verified: it typechecks, the plugin passes discovery, the schema pushed, and the platform's test suite is green. What is not: an extension actually connecting, which needs a Chrome and a person. ## 4. `/scrape` stayed, and shares a word rather than a mechanism The platform keeps `browser` as an `execution` permission covering `/scrape` — headless chromium via playwright, running as the owner, no sessions. Renamed to "Scraping" in the registry so the two stop looking like one feature split in half. They were never the same thing.