<feed xmlns='http://www.w3.org/2005/Atom'>
<title>sz-chrome-remote-extension.git/SECURITY.md, branch master</title>
<subtitle>pi-chrome, patched to drive a signed-in browser on another host through a broker, with an MCP server
</subtitle>
<id>https://git.soarez.net/sz/sz-chrome-remote-extension.git/atom?h=master</id>
<link rel='self' href='https://git.soarez.net/sz/sz-chrome-remote-extension.git/atom?h=master'/>
<link rel='alternate' type='text/html' href='https://git.soarez.net/sz/sz-chrome-remote-extension.git/'/>
<updated>2026-09-26T20:37:25+00:00</updated>
<entry>
<title>Absorb fork fixes and features; release 0.15.53</title>
<updated>2026-09-26T20:37:25+00:00</updated>
<author>
<name>Tianren Dong</name>
<email>tianrendong.dtr@gmail.com</email>
</author>
<published>2026-09-26T20:37:25+00:00</published>
<link rel='alternate' type='text/html' href='https://git.soarez.net/sz/sz-chrome-remote-extension.git/commit/?id=c49dc15fa5c33d5b1d210b0185677ce29640e2d5'/>
<id>urn:sha1:c49dc15fa5c33d5b1d210b0185677ce29640e2d5</id>
<content type='text'>
Adapted from community forks (ardhiqii, kkunkunya, nihar-oracle, steimerbyte):

- Abort stalled /next long polls after 45s; time out, retry, and single-post results.
- Fall back to CDP Runtime.evaluate when chrome.scripting is refused (about:blank automation tabs).
- Load pi-chrome in same-process subagent sessions as a bridge client; client chrome_launch reports owner status.
- Add chrome_cdp (validated raw CDP passthrough, background-guarded, payload summarization) and chrome_cdp_targets.
- chrome_type reports before/after values, insertedAt, splice/unchanged warnings; add replace=true.
- includeSnapshot waits for navigations started by the action; tab.new reports the settled tab.
- CDP timeouts surface as timeouts and are not re-sent after the cleanup detach.
- Activate/deactivate chrome_find and chrome_inspect with the rest of the chrome_* tools.
- New unit suites: bridge-resilience, cdp-passthrough, type-evidence.
</content>
</entry>
<entry>
<title>Enforce hard background and release 0.15.48</title>
<updated>2026-09-10T03:48:50+00:00</updated>
<author>
<name>Tianren Dong</name>
<email>tianrendong.dtr@gmail.com</email>
</author>
<published>2026-09-10T03:37:02+00:00</published>
<link rel='alternate' type='text/html' href='https://git.soarez.net/sz/sz-chrome-remote-extension.git/commit/?id=c1f230eeb76aaa50e98d3fe7d838573612b6e36f'/>
<id>urn:sha1:c1f230eeb76aaa50e98d3fe7d838573612b6e36f</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Revert 0.16.x and 0.17.x: restore tree to v0.15.20 state</title>
<updated>2026-05-16T17:13:48+00:00</updated>
<author>
<name>Tianren Dong</name>
<email>tianrendong.dtr@gmail.com</email>
</author>
<published>2026-05-16T17:13:32+00:00</published>
<link rel='alternate' type='text/html' href='https://git.soarez.net/sz/sz-chrome-remote-extension.git/commit/?id=b2ca8f8c343281c0263bda4c043cbe7f0d7d442e'/>
<id>urn:sha1:b2ca8f8c343281c0263bda4c043cbe7f0d7d442e</id>
<content type='text'>
Reverts the pairing + signed-envelopes work (0.16.0-0.16.1), the
standalone daemon refactor (0.17.0-0.17.3), and assorted patches.
These were unpublished from npm; this commit restores the working
tree to match the v0.15.20 release so the branch tip and the npm
'latest' dist-tag are consistent again.

Tags v0.16.0 through v0.17.3 are preserved as recovery anchors;
the work is reachable via 'git checkout v0.17.3' if ever needed.

Tree-equivalent to v0.15.20.
</content>
</entry>
<entry>
<title>0.16.0: mandatory pairing + signed envelopes + cross-process state coherence</title>
<updated>2026-05-16T15:55:27+00:00</updated>
<author>
<name>Tianren Dong</name>
<email>tianrendong.dtr@gmail.com</email>
</author>
<published>2026-05-16T15:55:27+00:00</published>
<link rel='alternate' type='text/html' href='https://git.soarez.net/sz/sz-chrome-remote-extension.git/commit/?id=ad78b41140f9040094295a28c5ab6482483efa4f'/>
<id>urn:sha1:ad78b41140f9040094295a28c5ab6482483efa4f</id>
<content type='text'>
Major security hardening of the Chrome bridge driven by red-team findings.

- Mandatory pairing via /chrome onboard (one-time per machine). Bridge pins exact
  chrome-extension:// origin and derives HMAC keys via HKDF. Until paired, the
  bridge returns idle responses and refuses to deliver commands.
- Signed envelopes on /next, /result, /command. HMAC-SHA256 over protocol version,
  direction, method, path, extension ID, bridge ID, timestamp, fresh nonce, and
  SHA-256 of the body. +/-30s clock window; 5-min LRU nonce replay defense on
  both request and response directions; constant-time MAC compare.
- Peer Pi sessions sharing the bridge sign each /command with a broker HKDF key
  (no bearer token transmitted) and verify the owner's signed response.
- Global loopback enforcement. PI_CHROME_BRIDGE_HOST=0.0.0.0 ignored unless
  PI_CHROME_BRIDGE_DANGEROUS_REMOTE=1; loopback check still applies per-endpoint.
- Cross-process state coherence: fs.watch + per-request mtime check on
  ~/.config/pi/chrome-bridge.json. A peer Pi's unpair (or any external rm/edit)
  propagates to the owner's in-memory state before the next privileged verify;
  replay caches reset on key rotation.
- Body cap 1 MiB -&gt; 413. Queue/pending/waiter caps. Malformed JSON -&gt; 400.
  Non-object JSON bodies -&gt; 400 instead of being trusted.
- page.navigate initScript: try/finally around tabs.update, per-call onCommitted
  listener with bounded commit-wait window, one-shot delete in global onCommitted.
  No more stale init scripts firing on later unrelated navigations.
- crypto.randomUUID() command IDs.
- Manifest diet (dropped activeTab); added popup.html/popup.js for the pair UI.

UX:

- /chrome onboard runs install + pair in one interactive flow.
- /chrome help reorganized into First-time / Day-to-day / Maintenance.
- Status bar lights up as green dot only when authorized.
- Early console/network capture at document_start so boot-time React errors and
  initial API calls aren't dropped (ported from DaniBedz/pi-chrome fork).

Docs:

- SECURITY.md threat model rewritten with in-scope / out-of-scope sections.
- README rewritten with the install-then-pair flow front and center.
- CHANGELOG 0.16.0 entry with full patch list.
</content>
</entry>
<entry>
<title>Restore terminal Chrome authorization</title>
<updated>2026-05-15T02:09:07+00:00</updated>
<author>
<name>Tianren Dong</name>
<email>tianrendong.dtr@gmail.com</email>
</author>
<published>2026-05-15T02:09:07+00:00</published>
<link rel='alternate' type='text/html' href='https://git.soarez.net/sz/sz-chrome-remote-extension.git/commit/?id=a13b6e4b51daf687e0cb16ef8fbc7040fde415a9'/>
<id>urn:sha1:a13b6e4b51daf687e0cb16ef8fbc7040fde415a9</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Migrate to standalone repo: update URLs</title>
<updated>2026-05-13T11:30:44+00:00</updated>
<author>
<name>tianrendong</name>
<email>tianrendong@users.noreply.github.com</email>
</author>
<published>2026-05-13T11:30:44+00:00</published>
<link rel='alternate' type='text/html' href='https://git.soarez.net/sz/sz-chrome-remote-extension.git/commit/?id=2ede6e18abb593c255bd25db95ee323a7eff6bcd'/>
<id>urn:sha1:2ede6e18abb593c255bd25db95ee323a7eff6bcd</id>
<content type='text'>
</content>
</entry>
<entry>
<title>pi-chrome: snapshot pre-migration state</title>
<updated>2026-05-13T11:29:41+00:00</updated>
<author>
<name>Tianren Dong</name>
<email>tianrendong.dtr@gmail.com</email>
</author>
<published>2026-05-13T11:29:41+00:00</published>
<link rel='alternate' type='text/html' href='https://git.soarez.net/sz/sz-chrome-remote-extension.git/commit/?id=4c54b05dc15b81e449dc8ac53da8bae536fa2798'/>
<id>urn:sha1:4c54b05dc15b81e449dc8ac53da8bae536fa2798</id>
<content type='text'>
</content>
</entry>
</feed>
