Codex reports Chrome extension is not installed when connected in Brave

Open 💬 4 comments Opened May 17, 2026 by jarred-riggall
💡 Likely answer: A maintainer (github-actions[bot], contributor) responded on this thread — see the highlighted reply below.

Codex reports Chrome extension is not installed when connected in Brave

Bug report: Codex reports Chrome extension is not installed even though the extension is connected in Brave

Summary

Codex reports that the browser extension is not installed, but the Codex Chrome Extension is installed and connected in Brave. The extension-backed browser connection works from Codex, but Codex's local detection appears to check only Google Chrome stable paths and Google Chrome profile data.

Expected behavior

Codex should recognize and use the connected Codex Chrome Extension when it is installed and connected in Brave, or the error message should clearly state that the check only supports Google Chrome stable.

Actual behavior

Codex reports that the browser extension is not installed. The extension popup in Brave shows:

  • Status: Connected
  • Extension: Codex
  • Version: v1.1.4

The Codex extension-backed browser runtime can also communicate with the extension and enumerate open tabs.

Environment

  • OS: macOS 26.4.1 (Build 25E253)
  • Browser in use: Brave Browser 148.1.90.122
  • Default browser bundle id: com.brave.browser
  • Google Chrome stable app: not installed at /Applications/Google Chrome.app
  • Brave app: installed at /Applications/Brave Browser.app
  • Codex Chrome Extension ID: hehggadaopoacecdllhhajmbjkdcmajg
  • Codex Chrome Extension version in Brave profile: 1.1.4_0
  • Codex Chrome plugin cache path observed: chrome@openai-bundled version 0.1.7

Diagnostics

Extension-backed connection works

Using the Codex Chrome plugin browser runtime:

{
  "connection": {
    "ok": true,
    "openTabCount": 73,
    "browserType": "extension"
  }
}

No tab URLs are included here for privacy; the important part is that the extension connection succeeds.

Local detector looks for Google Chrome stable

The Chrome DevTools MCP check failed with:

Could not find Google Chrome executable for channel 'stable' at:
 - /Applications/Google Chrome.app/Contents/MacOS/Google Chrome.

Codex helper script outputs

scripts/chrome-is-running.js --json:

{
  "platform": "darwin",
  "running": false,
  "processes": []
}

scripts/installed-browsers.js --json:

{
  "platform": "darwin",
  "default_browser": {
    "source": "LaunchServices",
    "schemes": {
      "https": {
        "scheme": "https",
        "bundle_id": "com.brave.browser",
        "name": null,
        "path": null,
        "version": null
      },
      "http": {
        "scheme": "http",
        "bundle_id": "com.brave.browser",
        "name": null,
        "path": null,
        "version": null
      }
    }
  },
  "installed_browsers": []
}

scripts/check-extension-installed.js --json:

Could not find a Chrome profile directory with Preferences in ~/Library/Application Support/Google/Chrome.

Exit code: 3

scripts/check-native-host-manifest.js --json:

{
  "manifestPath": "~/Library/Application Support/Google/Chrome/NativeMessagingHosts/com.openai.codexextension.json",
  "expectedHostName": "com.openai.codexextension",
  "actualHostName": "com.openai.codexextension",
  "expectedExtensionId": "hehggadaopoacecdllhhajmbjkdcmajg",
  "expectedOrigin": "chrome-extension://hehggadaopoacecdllhhajmbjkdcmajg/",
  "allowedOrigins": [
    "chrome-extension://hehggadaopoacecdllhhajmbjkdcmajg/"
  ],
  "exists": true,
  "nameMatches": true,
  "hasExpectedOrigin": true,
  "registryMatchesManifestPath": true,
  "correct": true,
  "problem": null
}

Additional local observations

Brave has profile preferences at:

~/Library/Application Support/BraveSoftware/Brave-Browser/Profile 1/Preferences
~/Library/Application Support/BraveSoftware/Brave-Browser/Default/Preferences
~/Library/Application Support/BraveSoftware/Brave-Browser/System Profile/Preferences

No Google Chrome profile preferences were found under:

~/Library/Application Support/Google/Chrome

The Codex extension is present in the Brave default profile at:

~/Library/Application Support/BraveSoftware/Brave-Browser/Default/Extensions/hehggadaopoacecdllhhajmbjkdcmajg/1.1.4_0

Suspected cause

The extension-backed runtime is able to connect to Brave, but the installation/health-check path appears to assume Google Chrome stable:

  • /Applications/Google Chrome.app
  • ~/Library/Application Support/Google/Chrome

Because this setup uses Brave only, the detector concludes that Chrome/the extension is missing even though the actual extension backend is connected and working.

Suggested fix

Either:

  1. Support Chromium-family browsers such as Brave in the detector by checking the active connected browser/profile, or
  2. If only Google Chrome stable is intended to be supported, change the user-facing error from "extension not installed" to a more specific message explaining that Google Chrome stable was not found or that Brave is unsupported.

View original on GitHub ↗

4 Comments

github-actions[bot] contributor · 3 months ago

Potential duplicates detected. Please review them and close your issue if it is a duplicate.

  • #22638

Powered by Codex Action

jarred-riggall · 3 months ago

Similar, but not a dupe - this should work for chromium based browsers... not just chrome.

Quest79 · 1 month ago

Honestly this should be supporting all browsers. The irony of having a code generating tool that doesn't have code for accessing any browser mechanism/media the user chooses should not be lost on anyone. Im going to just make it myself but me needing to is just weird.

rezss · 14 days ago

Confirmed on macOS 27 Golden Gate with Brave 151.1.93.136 as the only installed Chromium browser (Google Chrome is not installed).

Observed symptoms:

  • The ChatGPT extension is installed and enabled in Brave with full site access.
  • Selecting the Chrome-specific browser backend failed with Browser is not available: chrome.
  • Selecting the generic extension backend immediately succeeded, identified the selected browser as Brave, and enumerated the live Brave tabs.

The practical workaround is to select the extension backend when the user explicitly asks for the running Brave browser, then verify the selected browser is Brave before accessing tabs:

const browser = await agent.browsers.get("extension");
nodeRepl.write(await browser.documentation()); // verify: Name: Brave

This looks like an intent/selector mismatch: the chrome backend is interpreted as Google Chrome rather than the connected Chromium-family browser, while the working Brave path is the generic extension backend. A Brave-specific selector, or mapping explicit Brave intent directly to its extension connection, would avoid the false unavailable result. If both Brave and Google Chrome have the extension enabled, the generic backend also needs an explicit browser/profile choice (see #32442).