WSL2 Blocks Claude's Chrome Extension
Users attempting to run Anthropic's Claude in Chrome extension directly from within the Windows Subsystem for Linux (WSL2) encounter a hard block. The extension explicitly states: Claude in Chrome is not supported in WSL at this time. This message, observed on version 2.1.211, is not a detection failure or a simple configuration issue. Claude Code actively checks its runtime environment and refuses to proceed if it detects WSL. This means there's no connection to debug or extension to reinstall; the gate is closed before any interaction begins.
The reason for this gatekeeping lies in how Chrome discovers and connects to native messaging hosts. These hosts, which allow extensions to communicate with external applications, are registered in the Windows registry. Chrome looks for a specific registry key: HKCU\Software\Google\Chrome\NativeMessagingHosts\com.anthropic.claude_browser_extension. The value associated with this key points to the executable that Chrome should launch to facilitate communication. When running natively on Windows, this path correctly directs Chrome to the appropriate host executable.

The WSL2 Disconnect: Why Native Messaging Fails
The core of the problem for WSL2 users is that the Windows registry, where Chrome finds its native messaging hosts, is not directly accessible or interpreted in the same way by applications running within the Linux environment of WSL2. While WSL2 provides a Linux kernel and user-space on Windows, it operates as a distinct environment. When Chrome, running on the Windows host, attempts to find the native messaging host for the Claude extension, it queries the Windows registry. If Chrome itself is launched from within WSL2 (which is not the typical setup, but a user might attempt to run Chrome via `google-chrome-stable` within the WSL environment or configure it to launch via a Windows executable), the context shifts. However, the native messaging host mechanism is fundamentally tied to the Windows operating system's registry and process management.
The Claude extension's check for WSL is a deliberate security or compatibility measure. It prevents the extension from attempting to interact with a Windows environment through a mechanism that is not natively supported or properly bridged within WSL. This explains why common workarounds, such as reinstalling the extension or attempting to debug the connection, fail. The extension's code preempts these steps by identifying the WSL environment and exiting early.
The Registry Hack: Forcing the Connection
To bypass this restriction, a workaround involves creating a symbolic link within the WSL2 environment that points to the correct Windows registry key. This trick essentially fools the Chrome application (when launched in a way that allows it to be queried by WSL) into believing the native messaging host is available and correctly configured, even though it resides on the Windows side.
The process typically involves the following steps:
- Identify the Native Messaging Host Path: The first step is to locate the actual path to the Claude extension's native messaging host executable on your Windows system. This is usually found within your user profile directory. For example, it might be something like
C:\Users\YourUsername\AppData\Local\Programs\Anthropic\Claude in Chrome\claude_chrome_host.exe. The exact path can vary based on installation. - Access WSL2 Terminal: Open your WSL2 distribution's terminal.
- Create a Symbolic Link: Use the
ln -scommand to create a symbolic link within the WSL2 filesystem that mimics the expected registry structure for Chrome's native messaging hosts. The target of the symbolic link needs to point to the location where Chrome *would* look for this information if it were native. This often involves creating a directory structure like~/.config/google-chrome/NativeMessagingHosts/and then creating the link within it. The actual command might look something like this (adjusting paths as necessary):ln -s "$(cmd.exe /c 'echo %LOCALAPPDATA%')\Programs\Anthropic\Claude in Chrome\claude_chrome_host.exe" ~/.config/google-chrome/NativeMessagingHosts/com.anthropic.claude_browser_extension.json
Note: This example assumes the host executable is directly linked. More commonly, the host is specified via a JSON manifest file. The correct approach involves creating a JSON file that describes the host (e.g.,com.anthropic.claude_browser_extension.json) which includes fields likename,description,path(pointing to the actual executable), andallowed_origins. This JSON file itself would then be symlinked or placed in the appropriate Chrome configuration directory for native messaging hosts within WSL. A more accurate symlink might point to the JSON manifest file that describes the host, rather than the executable itself. This JSON file typically resides in the extension's installation directory.
