The main agent Chrome owned its windows, and every one of them was filed as the author’s, so no lane would touch any of them. It was a recurring wrong-Chrome confusion, and this was the root cause.

What the lookup assumed

Window ownership was decided from the Chrome binary. The main agent Chrome runs the author’s binary, but it launches against an agent profile. The lookup only looked at the binary, so each window the agent Chrome owned came back as his.

Resolving on the profile

Ownership now resolves on the profile. The profile tells you whose window it is, and that is the whole fix.

While we were in the launch paths, we also killed the “Restore pages” bubbles at all three of them. We had found 11 of 35 agent profiles carrying crash markers, and those markers are what raise the bubble.

Moving off the editor

We moved the author off a frozen editor extension and onto the browser. The agent Chrome had to be signed into claude.ai first, and it kept getting kicked out. We diagnosed the kick-out as device_key_missing, which is elevated auth, not a bot block.

We also proved that closing the editor kills 7 of 8 live sessions, because they are children of its process. To get them out from under it, we opened three sessions as chromeless Chrome --app windows. We also started a detached claude remote-control host, so new sessions can be spawned from claude.ai/code.

What the outside reviews said

A review that day said to keep the separate agent identity, pilot Stable Chrome with an agent-owned profile, then build identity locking and session lifecycle. The build-ready identity and session lifecycle spec was delivered complete.

We also wrote a brief on undetected browser automation. It recommends chrome-devtools-mcp --autoConnect against the author’s real Chrome, with nodriver replacing Chrome for Testing for unattended work.

Cleaning up the screens

Six sessions now sit on one portrait screen, and the overlap on the browser display is cleared.