A community-driven registry for Claude, Cursor, Windsurf, Cline & more. Not affiliated with Anthropic.
Are you the author? Sign in to claim
Enable Claude in Chrome extension to work with alternative Chromium-based browsers (Brave, Arc, Vivaldi, Edge, Genspark,
Use Claude AI browser extension with Brave, Arc, Vivaldi, Edge, Opera, Genspark, Helium, and other Chromium-based browsers
Enable Claude in Chrome extension to work with alternative Chromium-based browsers. Connect Claude Desktop and Claude Code to your favorite browser!
macOS / Linux:
git clone https://github.com/stolot0mt0m/claude-chromium-native-messaging.git
cd claude-chromium-native-messaging
./setup.sh
Windows (PowerShell):
git clone https://github.com/stolot0mt0m/claude-chromium-native-messaging.git
cd claude-chromium-native-messaging
.\setup.ps1
On Linux, Claude Code CLI provides the native messaging host. This tool extends Claude Code's browser support to additional Chromium browsers that Claude Code doesn't configure automatically.
git clone https://github.com/stolot0mt0m/claude-chromium-native-messaging.git
cd claude-chromium-native-messaging
./install-linux.sh
This script:
./setup.sh
The interactive setup lets you select specific browsers and provides more control.
Claude Code CLI installs its native messaging host at ~/.claude/chrome/chrome-native-host and registers it for Google Chrome and Microsoft Edge. This tool copies that registration to additional browsers:
Claude Code CLI
└── installs native host at ~/.claude/chrome/chrome-native-host
└── registers for: Chrome, Edge (automatic)
This tool
└── registers for: Brave, Vivaldi, Chromium, Opera, 25+ more browsers
ps aux | grep chrome to verify no processes remain)See docs/linux-setup.md for detailed instructions and troubleshooting.
Claude's official browser extension only supports Google Chrome. But many developers prefer browsers like Brave, Arc, Vivaldi, or Microsoft Edge.
The extension actually works fine in these browsers — it's just the Native Messaging Host configuration that's missing. Without it:
/chrome command doesn't detect the extensiongraph LR
EXT["Claude Extension"] -->|"Native Messaging"| CHROME["Chrome ✅"]
EXT -.-x BRAVE["Brave ❌"]
EXT -.-x ARC["Arc ❌"]
EXT -.-x EDGE["Edge ❌"]
EXT -.-x MORE["25+ more ❌"]
EXT -.-x INCOMPAT["Orion, Falkon, Colibri ❌"]
style CHROME fill:#d4edda,stroke:#28a745,color:#000
style BRAVE fill:#f8d7da,stroke:#dc3545,color:#000
style ARC fill:#f8d7da,stroke:#dc3545,color:#000
style EDGE fill:#f8d7da,stroke:#dc3545,color:#000
style MORE fill:#f8d7da,stroke:#dc3545,color:#000
style INCOMPAT fill:#e2e3e5,stroke:#6c757d,color:#000
style EXT fill:#e8daef,stroke:#8e44ad,color:#000
This tool automatically configures Native Messaging Host for your Chromium browser, enabling:
/chrome)graph LR
EXT["Claude Extension"] -->|"Native Messaging"| CHROME["Chrome ✅"]
EXT -->|"Manifest created"| CONFIRMED["Brave, Arc, Edge, Genspark, Helium, Opera ✅"]
EXT -->|"Manifest created"| PARTIAL["Vivaldi ⚠️ (blank panel on macOS)"]
EXT -->|"Manifest created"| UNCONFIRMED["13+ more Chromium browsers ⬜"]
EXT -.-x INCOMPAT["Orion, Falkon, Colibri ❌"]
style CHROME fill:#d4edda,stroke:#28a745,color:#000
style CONFIRMED fill:#d4edda,stroke:#28a745,color:#000
style PARTIAL fill:#fff3cd,stroke:#ffc107,color:#000
style UNCONFIRMED fill:#fff3cd,stroke:#ffc107,color:#000
style INCOMPAT fill:#f8d7da,stroke:#dc3545,color:#000
style EXT fill:#e8daef,stroke:#8e44ad,color:#000
All browsers listed below are Chromium-based and support the Chrome Extensions API including Native Messaging. The setup script auto-detects installed browsers and configures the necessary manifest files.
These browsers have been tested and confirmed working by users or maintainers:
| Browser | Engine | macOS | Linux | Windows | Notes |
|---|---|---|---|---|---|
| Google Chrome | Chromium | ✅ | ✅ | ✅ | Official target |
| Google Chrome Canary | Chromium | ✅ | ✅ | ✅ | Dev channel (#3) |
| Google Chrome Beta | Chromium | ✅ | ✅ | ✅ | |
| Google Chrome Dev | Chromium | ✅ | ✅ | ✅ | |
| Chromium | Chromium | ✅ | ✅ | ✅ | Base project |
| Microsoft Edge | Chromium | ✅ | ✅ | ✅ | |
| Brave | Chromium | ✅ | ✅ | ✅ | |
| Arc | Chromium | ✅* | — | ✅* | No side panel (details) Modified version of the extension working in Arc (link here) |
| Opera / Opera GX | Chromium | ✅ | ✅ | ✅ | |
| Helium | Chromium | ✅ | ✅ | ✅ | #2 |
| Genspark | Chromium | ✅ | — | ✅ | Confirmed by maintainer |
| Ungoogled Chromium | Chromium | ✅ | ⬜ | ⬜ | Via Homebrew; requires Developer Mode + manual CRX install (#18) |
These browsers work with native messaging but have known caveats:
| Browser | Engine | macOS | Linux | Windows | Notes |
|---|---|---|---|---|---|
| Vivaldi | Chromium | ⚠️ | ⬜ | ⬜ | Blank side panel on macOS (details) |
| Chromium (Snap) | Chromium | — | ❌ | — | Snap sandbox blocks native messaging (details) |
These are genuine Chromium/Blink-based browsers with full Chrome extension support. They should work based on their architecture, but haven't been explicitly confirmed by users yet. If you use any of these browsers, please open an issue to let us know if it works!
| Browser | Engine | macOS | Linux | Windows |
|---|---|---|---|---|
| Yandex Browser | Chromium | ⬜ | ⬜ | ⬜ |
| Naver Whale | Chromium | ⬜ | ⬜ | ⬜ |
| Coc Coc | Chromium | ⬜ | ⬜ | ⬜ |
| Comodo Dragon | Chromium | ⬜ | ⬜ | ⬜ |
| Avast Secure Browser | Chromium | ⬜ | ⬜ | ⬜ |
| AVG Secure Browser | Chromium | ⬜ | ⬜ | ⬜ |
| Epic Privacy Browser | Chromium | ⬜ | ⬜ | ⬜ |
| SRWare Iron | Chromium | ⬜ | ⬜ | ⬜ |
| Slimjet | Chromium | ⬜ | ⬜ | ⬜ |
| Cent Browser | Chromium | ⬜ | ⬜ | ⬜ |
| Maxthon | Chromium | ⬜ | ⬜ | ⬜ |
| Iridium | Chromium | ⬜ | ⬜ | ⬜ |
| Sidekick | Chromium | ⬜ | ⬜ | ⬜ |
Help us verify! If you successfully use this tool with any of the browsers above, please report it so we can move it to the confirmed list.
| Browser | Engine | Why |
|---|---|---|
| Orion (Kagi) | WebKit | Not Chromium-based. Supports Chrome extensions via compatibility layer, but Native Messaging / Chrome DevTools API is not fully implemented. Confirmed non-functional in #10. |
| Falkon (KDE) | QtWebEngine | Uses Chromium internally via Qt, but does not support Chrome extensions or WebExtensions. Has its own limited extension API. |
| Colibri | Electron/Chromium | Chromium-based but does not support browser extensions at all. |
| Torch | Chromium | Was Chromium-based with Chrome extension support, but discontinued since November 2022. No longer available for download. |
Your browser not listed? The script supports custom paths — any Chromium-based browser with Chrome extension support should work.
Before running the setup:
| Platform | Requirements |
|---|---|
| macOS | Claude Desktop installed |
| Windows | Claude Desktop installed |
| Linux | Claude Code CLI installed |
All platforms also need:
brew install bash)# Clone the repository
git clone https://github.com/stolot0mt0m/claude-chromium-native-messaging.git
cd claude-chromium-native-messaging
# Run the interactive setup
./setup.sh
# Clone the repository
git clone https://github.com/stolot0mt0m/claude-chromium-native-messaging.git
cd claude-chromium-native-messaging
# Run the interactive setup
.\setup.ps1
The script will:
| Option | Bash | PowerShell | Description |
|---|---|---|---|
| Uninstall | --uninstall, -u | -Uninstall | Remove configuration |
| Custom Path | --path PATH, -p | -Path PATH | Specify browser path |
| Dry Run | --dry-run, -n | -DryRun | Preview without changes |
| Verbose | --verbose, -v | -Verbose | Detailed output |
| Quiet | --quiet, -q | -Quiet | Minimal output |
| Backup | --backup, -b | -Backup | Backup before overwrite |
| Version | --version, -V | -Version | Show version |
| Help | --help, -h | -Help | Show help |
# Preview what would be changed (dry-run)
./setup.sh --dry-run
# Install with automatic backups
./setup.sh --backup
# Install for a specific browser path
./setup.sh --path ~/Library/Application\ Support/MyBrowser
# Uninstall with verbose output
./setup.sh --uninstall --verbose
If your browser stores its data in a non-standard location, use the --path / -Path flag to point the setup script directly at the browser's data directory (not the executable).
The data directory is where the browser stores profiles, preferences, and extensions. Common locations:
| Platform | Base Directory | Example |
|---|---|---|
| macOS | ~/Library/Application Support/ | ~/Library/Application Support/Google/Chrome Canary |
| Linux | ~/.config/ | ~/.config/google-chrome-unstable |
| Windows | %LOCALAPPDATA%\ | %LOCALAPPDATA%\Google\Chrome SxS\User Data |
macOS example — Chrome Canary:
./setup.sh --path "$HOME/Library/Application Support/Google/Chrome Canary"
Linux example — Chrome Canary (dev channel):
./setup.sh --path "$HOME/.config/google-chrome-unstable"
Windows example — Chrome Canary:
.\setup.ps1 -Path "$env:LOCALAPPDATA\Google\Chrome SxS\User Data"
Custom Chromium build:
# Point to wherever your Chromium stores its user data
./setup.sh --path "/opt/my-chromium/user-data"
Tip: To find your browser's data directory, navigate to
chrome://versionin the address bar and look at the Profile Path. The data directory is the parent of the profile folder (e.g., if Profile Path is~/.config/google-chrome-unstable/Default, the data directory is~/.config/google-chrome-unstable).
See the detailed Manual Setup Guide if you prefer to configure things yourself.
After running the setup:
/chrome in your terminalChrome extensions communicate with native applications through the Native Messaging API. This requires JSON manifest files that tell the browser where to find the native host binary.
graph TB
subgraph BROWSER ["Your Browser"]
EXT["Claude Extension"]
end
EXT <-->|"Native Messaging API"| MANIFEST
MANIFEST["NativeMessagingHosts/\ncom.anthropic.claude*.json"]
MANIFEST -->|"points to"| HOST["Claude Native Host Binary\n(installed by Claude Desktop)"]
HOST <--> CD["Claude Desktop"]
HOST <--> CC["Claude Code"]
SETUP["setup.sh / setup.ps1"] -.->|"creates"| MANIFEST
style BROWSER fill:#f0f4ff,stroke:#4a90d9,color:#000
style SETUP fill:#fff3cd,stroke:#ffc107,color:#000
style MANIFEST fill:#e8f5e9,stroke:#4caf50,color:#000
style HOST fill:#fce4ec,stroke:#e91e63,color:#000
style CD fill:#e8daef,stroke:#8e44ad,color:#000
style CC fill:#e8daef,stroke:#8e44ad,color:#000
On Linux, Claude Code CLI provides the native messaging host. Claude Desktop is not available for Linux.
graph TB
subgraph BROWSER ["Your Browser (Brave, Vivaldi, etc.)"]
EXT["Claude Extension"]
end
EXT <-->|"Native Messaging API"| MANIFEST
MANIFEST["NativeMessagingHosts/\ncom.anthropic.claude_code_browser_extension.json"]
MANIFEST -->|"points to"| HOST["~/.claude/chrome/chrome-native-host\n(installed by Claude Code CLI)"]
HOST <--> CC["Claude Code"]
SETUP["install-linux.sh / setup.sh"] -.->|"creates"| MANIFEST
style BROWSER fill:#f0f4ff,stroke:#4a90d9,color:#000
style SETUP fill:#fff3cd,stroke:#ffc107,color:#000
style MANIFEST fill:#e8f5e9,stroke:#4caf50,color:#000
style HOST fill:#fce4ec,stroke:#e91e63,color:#000
style CC fill:#e8daef,stroke:#8e44ad,color:#000
Claude Code automatically registers its native host for Google Chrome and Microsoft Edge. This tool extends that registration to additional Chromium browsers.
The script creates manifests in your browser's data directory:
macOS:
~/Library/Application Support/YOUR_BROWSER/NativeMessagingHosts/
Linux:
~/.config/YOUR_BROWSER/NativeMessagingHosts/
Windows:
%LOCALAPPDATA%\YOUR_BROWSER\User Data\NativeMessagingHosts\
claude-chromium-native-messaging/
├── setup.sh # macOS/Linux interactive setup
├── setup.ps1 # Windows setup
├── install-linux.sh # Linux quick installer (extends Claude Code)
├── uninstall-linux.sh # Linux uninstaller
├── config/
│ └── browsers.json # Browser paths & extension IDs
├── tests/
│ ├── test_setup.sh # Bash test suite (52 tests)
│ ├── test_browser_detection.sh # Browser detection tests (76 tests)
│ ├── test_setup.ps1 # PowerShell tests
│ ├── setup.Tests.ps1 # Pester tests (Windows)
│ └── fixtures/ # Test data files
├── docs/
│ ├── manual-setup.md # Manual setup guide
│ └── linux-setup.md # Linux-specific guide
├── CHANGELOG.md
├── CONTRIBUTING.md
├── TESTING.md # Test suite documentation
├── VERSION
├── LICENSE
└── README.md
Arc Browser Limitations
Arc does not implement Chrome's chrome.sidePanel API. This means:
chrome-extension://fcoeoabgfenejglbffodgkkbkcdhcgfn/sidepanel.htmlWhat works in Arc: Claude as a chat interface (ask questions, generate code, all AI features). What doesn't work in Arc: Side panel integration, browser automation, tab orchestration.
Tip: You can pin the extension URL as a sidebar entry in Arc for quick access, or use Arc's Split View to have the chat next to a webpage — but there is no cross-tab interaction.
Vivaldi Blank Side Panel
Native messaging installs correctly in Vivaldi on macOS, but clicking the Claude extension icon opens a blank side panel. This is a Vivaldi-specific bug — Vivaldi's chrome.sidePanel API implementation does not render extension content. The extension itself is fully functional; it just can't render through Vivaldi's native side panel mechanism.
Confirmed workaround: use Vivaldi's Web Panel
chrome-extension://fcoeoabgfenejglbffodgkkbkcdhcgfn/sidepanel.html
What works in Vivaldi: Full Claude interface, Claude Desktop native messaging, all AI features — via the Web Panel workaround above.
What doesn't work: Opening Claude via the extension toolbar icon (the chrome.sidePanel API is broken in Vivaldi).
Chromium Snap on Linux
When Chromium is installed as a Snap package (default on Ubuntu), native messaging does not work due to Snap's sandbox:
~/.config/chromium/NativeMessagingHosts/, but Snap Chromium reads from ~/snap/chromium/common/chromium/NativeMessagingHosts//tmp: Snap runs Chromium with a private /tmp filesystem. The native messaging host socket in /tmp/claude-mcp-browser-bridge-<user>/ is invisible to the sandboxed browser — even if the manifest path is fixed, socket communication still fails.Workaround: Use a non-Snap Chromium-based browser instead. Brave, Chrome, Edge, and other browsers installed via .deb/APT work without issues.
How to check if your Chromium is a Snap:
which chromium-browser && snap list chromium 2>/dev/null && echo "Snap detected — use a different browser"
Extension not connecting after restart
fcoeoabgfenejglbffodgkkbkcdhcgfnClaude Code /chrome doesn't work with non-Chrome browsers
This is a known limitation with a deeper cause than just process detection. Our technical analysis found that Claude Code's /chrome MCP integration communicates through a remote WebSocket bridge (wss://bridge.claudeusercontent.com), not through local sockets. The Chrome extension connects to this bridge, Claude Code's MCP server connects to the same bridge, and they are matched by user account.
The problem: the extension checks a server-side feature flag (chrome_ext_bridge_enabled) before connecting to the bridge. This flag currently returns false for non-Chrome browsers, which means the extension never opens the bridge WebSocket — so Claude Code's MCP server can't find it.
What this tool fixes: Native messaging manifests (extension ↔ native host communication). This enables the side panel, extension login, and Claude Desktop integration.
What this tool cannot fix: The /chrome MCP integration (browser automation via Claude Code). This requires Anthropic to unlock the bridge feature flag for non-Chrome browsers.
See Issue #34364 for the full technical analysis and Issue #18075 for the feature request.
Linux: Native host not found
Make sure Claude Code CLI is installed and has been run at least once:
npm install -g @anthropic-ai/claude-code
claude
# Then use /chrome inside Claude Code
The native host should appear at ~/.claude/chrome/chrome-native-host.
Bash version error on macOS
macOS ships with Bash 3.2. Install a newer version:
brew install bash
/opt/homebrew/bin/bash ./setup.sh
Permission errors (macOS/Linux)
chmod +x setup.sh
chmod 644 ~/Library/Application\ Support/YOUR_BROWSER/NativeMessagingHosts/*.json
Browser not detected
The setup script detects browsers by checking for data directories (not executables) and validating that they contain Chromium profile markers (e.g., a Default/ folder, Local State file, or Preferences file). If your browser is installed but not detected:
macOS/Linux:
./setup.sh --path "/path/to/your/browser/data"
Windows:
.\setup.ps1 -Path "C:\path\to\browser\User Data"
Tip: Use
--dry-run --verboseto see exactly which paths the script checks and why a browser might be skipped.
The setup script uses filesystem-based validation to detect browsers. It does not search for browser executables — instead, it looks for the browser's data directory (where profiles and settings are stored) and checks for Chromium-specific markers like Default/, Local State, or Preferences.
A browser won't be detected if:
Solution: Launch the browser at least once, then re-run the setup script. If the browser still isn't detected, use the --path flag to specify the data directory manually (see Custom Browser Paths).
Chrome Canary is fully supported. The script auto-detects it at these locations:
| Platform | Data Directory |
|---|---|
| macOS | ~/Library/Application Support/Google/Chrome Canary |
| Linux | ~/.config/google-chrome-unstable |
| Windows | %LOCALAPPDATA%\Google\Chrome SxS\User Data |
If auto-detection doesn't find it, specify the path manually:
# macOS
./setup.sh --path "$HOME/Library/Application Support/Google/Chrome Canary"
# Linux (Canary uses the dev channel package "google-chrome-unstable")
./setup.sh --path "$HOME/.config/google-chrome-unstable"
# Windows (Canary is stored under "Chrome SxS")
.\setup.ps1 -Path "$env:LOCALAPPDATA\Google\Chrome SxS\User Data"
Note: On Linux, Chrome Canary and Chrome Dev share the same data directory (
google-chrome-unstable) because they both use thegoogle-chrome-unstablepackage. The setup script will configure the directory once for whichever is detected first.
On Linux, Claude Code CLI provides the native messaging host — Claude Desktop is not available for Linux.
When you install Claude Code and run it, it creates a native host at ~/.claude/chrome/chrome-native-host and registers it for Google Chrome and Microsoft Edge. This tool extends that registration to additional Chromium browsers (Brave, Vivaldi, Opera, etc.).
Requirements:
npm install -g @anthropic-ai/claude-codeclaude at least once, then use /chrome to initialize the native hostSee docs/linux-setup.md for detailed instructions.
Use the --path flag (Bash) or -Path parameter (PowerShell) to point the script at your browser's data directory:
# macOS/Linux
./setup.sh --path "/absolute/path/to/browser/data-directory"
# Windows
.\setup.ps1 -Path "C:\path\to\browser\User Data"
The path must be:
./browser or ../data)To find the correct path, open your browser and navigate to chrome://version — the Profile Path shows where data is stored. Use the parent directory of the profile folder.
macOS / Linux:
./setup.sh --uninstall
Linux (quick uninstall):
./uninstall-linux.sh
Windows:
.\setup.ps1 -Uninstall
# Bash tests
./tests/test_setup.sh
# PowerShell tests
.\tests\test_setup.ps1
Contributions are welcome! Please read our Contributing Guide for details.
Areas where help is needed:
CLAUDE_CODE_CHROME_PATH env varMIT License - See LICENSE for details.
This is an unofficial workaround. The official Claude in Chrome extension is designed for Google Chrome only. Anthropic may change the native messaging implementation at any time. Use at your own risk.
An AI-powered custom node for ComfyUI designed to enhance workflow automation and provide intelligent assistance
Deterministic multi-agent pipeline for end-to-end software development, orchestrating CLI-based AI tools (e.g. Gemini, C
💻 A curated list of papers and resources for multi-modal Graphical User Interface (GUI) agents.
Native macOS app to monitor Claude AI usage limits and watch your coding sessions live