Chrome plugin silently selects Brave when extension is enabled in both Chrome and Brave
What version of the Codex App are you using (From “About Codex” dialog)?
26.707.3748.0
What subscription do you have?
ChatGPT Plus/Pro (please verify before submitting)
What platform is your computer?
Microsoft Windows NT 10.0.26200.0 x64
What issue are you seeing?
When the ChatGPT/Codex Chrome Extension is enabled in both Google Chrome and Brave, an explicit request to use the Chrome plugin can silently bind to Brave instead.
In my environment, the generic extension backend returned approximately 42 open Brave tabs rather than the 3 development tabs open in Google Chrome. This persisted after explicitly requesting Chrome, confirming Chrome Profile 1 was running, validating the Chrome extension/native-host setup, and opening a fresh Chrome Profile 1 window with the bundled diagnostic helper.
No browser or profile identity was exposed before tab enumeration. This risks inspecting or interacting with the wrong logged-in browser session. My intended separation is personal browsing in Brave and development sessions in Chrome.
What steps can reproduce the bug?
- Install and enable extension ID
hehggadaopoacecdllhhajmbjkdcmajgin Google Chrome. - Install and enable the same extension in Brave.
- Keep both browsers running with different tab sets. Brave is the default HTTP/HTTPS browser in this reproduction.
- Explicitly ask Codex Desktop to use the Chrome plugin.
- Initialize the bundled browser client and select the extension backend:
const { setupBrowserRuntime } = await import("<bundled chrome plugin>/scripts/browser-client.mjs");
await setupBrowserRuntime({ globals: globalThis });
const browser = await agent.browsers.get("extension");
const tabs = await browser.user.openTabs();
- Observe that
openTabs()returns Brave's tab set instead of Google Chrome's. - Open a new Chrome Profile 1 window using the bundled
open-chrome-window.jshelper and reacquire the backend; it still selects Brave. - Disable the Codex extension only in Brave and reacquire the backend.
- Observe that
openTabs()now immediately returns the expected Google Chrome tabs.
Tab titles and URLs are intentionally omitted.
What is the expected behavior?
Explicit Chrome intent should select Google Chrome, not an arbitrary Chromium extension connection.
Preferably, browser identity and profile identity should be first-class backend metadata. If multiple compatible connections exist, Codex should either:
- expose separate backends such as Google Chrome / Profile 1 and Brave / Default;
- ask which browser to control; or
- honor a persistent preferred-browser setting.
At minimum, the runtime should not silently enumerate tabs from a different browser than the one explicitly requested.
Additional information
Environment:
- Google Chrome 150.0.7871.115, Profile 1
- Brave 150.1.92.139, Default profile
- ChatGPT/Codex Chrome Extension 1.2.27203.26575
- Bundled Chrome plugin build 26.707.31428
- Same extension ID enabled in both browsers
Diagnostics:
- Chrome running: yes
- Extension installed and enabled in Chrome Profile 1: yes
- Native messaging manifest and Windows registry mapping: correct
- Same extension ID installed in Brave Default: yes
- Before disabling in Brave: backend returned Brave tabs
- After disabling in Brave: backend returned Chrome tabs
Current workaround: enable the extension in only one Chromium browser at a time.
Related:
This issue has 1 comment on GitHub. Read the full discussion on GitHub ↗