OpenChrome MCP v1.12.9
OpenChrome MCP v1.12.9 is a reliability release focused on making parallel MCP sessions safe by default. The release completes the parallel-session stability plan across issues #1499–#1504 and aligns the runtime with the SSOT D3 topology:
Exactly one direct Chrome/CDP owner per
(port, userDataDir), with additional MCP clients connecting through the broker proxy path.
This release does not reintroduce unsafe multi-controller sharing. The --allow-unsafe-shared-attach flag remains the explicit debug escape hatch for that topology.
Highlights
Stable parallel MCP sessions by default
Direct openchrome serve --auto-launch sessions now use coordinated auto-election by default. When multiple MCP clients start against the same Chrome port/profile:
- one process becomes the direct Chrome/CDP owner;
- the owner publishes live broker metadata;
- surplus clients attach as broker clients instead of starting another independent direct controller;
- duplicate direct-owner remediation is preserved when auto-elect is explicitly disabled.
This makes the common multi-client setup safer for Codex, Claude, and other MCP hosts without requiring users to manually preconfigure broker owner/client roles.
CLI entrypoint parity
The package bin wrapper now forwards runtime status commands to the full CLI surface, including:
openchrome checkopenchrome doctoropenchrome serve
This prevents installed-package entrypoints from silently missing the diagnostics needed to understand runtime topology problems.
Broker metadata is live-validated
Broker discovery now validates that discovered metadata points to a live broker before proxying clients through it. Stale broker files are ignored/cleaned instead of being treated as authoritative.
This prevents surplus MCP clients from attaching to dead owner metadata and getting stuck behind a stale proxy target.
Half-zombie owner recovery
Startup failure handling now shares the same owner self-release primitive used by the watchdog path. If a process acquires the controller lock but cannot reach Chrome/CDP, it can release ownership after confirming Chrome is unreachable.
This avoids a half-zombie owner holding the direct-controller lock while no usable Chrome connection exists.
Safer setup/config topology presets
Generated MCP configs now default to the safe coordinated topology:
openchrome serve --auto-launch --auto-electNew/updated presets include:
auto-elect— default safe coordinated mode;single-owner— direct owner with--no-auto-electfor explicit fail-fast behavior;broker-owner— explicit broker owner mode;broker-client— explicit broker client mode;- existing isolated/dev/CI presets retained.
Docs were updated to describe when to use each topology and how to verify parallel behavior.
Topology-aware diagnostics
doctor and duplicate-controller diagnostics now distinguish between unsafe direct-controller conflicts and safe broker-client participation.
Diagnostics now account for:
- wrapper parent/child process collapse;
- broker owners and broker clients;
- auto-elect owner/client classification;
- stale broker metadata;
- independent direct controllers that still need remediation;
--no-auto-electowner command metadata.
This should reduce false positives while still flagging the dangerous case: multiple independent direct CDP owners for the same (port, userDataDir).
Real parallel verification harness
The release adds a real-client verification harness:
npm run verify:parallel-auto-elect
node scripts/verify/parallel-auto-elect.mjs --clients 4The harness uses temporary user data directories and temporary broker registries; it does not mutate the user's MCP config or real Chrome profile.
It verifies that:
N >= 3MCP clients can start against the same port/profile;- exactly one direct owner exists;
N - 1clients proxy through the broker;- all clients complete MCP
initialize; - all clients complete a non-trivial
tools/listcheck; --no-auto-electstill preserves duplicate-controller fail-fast remediation.
Included issue plan
This release completes:
- #1499 — CLI entrypoint parity for
check/doctor/serve - #1500 —
serve --auto-launchcoordinated auto-elect default - #1501 — setup/config topology presets and docs
- #1502 — live broker metadata validation and stale cleanup
- #1503 — startup half-zombie owner self-release
- #1504 — topology-aware diagnostics and real parallel-session verification
Verification
The final release tree was verified before tagging:
npm run buildnpm test -- --runInBandnpm run verify:auto-elect-smokenpm run verify:parallel-auto-electnode scripts/verify/parallel-auto-elect.mjs --clients 4node dist/cli/index.js check --helpnode dist/cli/index.js doctor --helpnpm pack --dry-run- GitHub Actions CI on
main/ release promotion:- Ubuntu Node 18
- Ubuntu Node 20 shards 1/3, 2/3, 3/3
- Ubuntu Node 22
- macOS Node 20
- Windows Node 20
Upgrade notes
For most users, no manual migration is required after installing the new package. Newly generated MCP configs use the safer auto-elect topology by default.
If you maintain a hand-written MCP config, the recommended direct auto-launch command is now:
openchrome serve --auto-launch --auto-electUse --no-auto-elect only when you intentionally want legacy direct-owner fail-fast behavior.
Non-goals / compatibility notes
- This release does not make unsafe multi-controller direct CDP sharing a supported normal mode.
- Existing explicit broker owner/client configurations continue to work.
- Existing isolated/dev/CI topology presets are retained.
- Verification scripts intentionally avoid the user's real Chrome profile and real MCP config files.
Publishing
The GitHub release and tag are prepared for npm publishing. To publish the package manually:
npm publish