JetBrains plugin 0.1.14-beta: lock file never created, IDE detection always fails
Resolved 💬 4 comments Opened Mar 19, 2026 by lukassenfeld-oddin Closed Mar 23, 2026
Summary
The JetBrains Claude Code plugin (v0.1.14-beta) never writes the lock file to ~/.claude/ide/<port>.lock. This causes Claude CLI to always show "Install the [IDE] plugin from the JetBrains Marketplace" even though the plugin is installed and running correctly.
Environment
- Plugin version: 0.1.14-beta (latest available as of 2025-03-19)
- IDEs tested: GoLand 2025.2, PhpStorm 2025.2
- Claude CLI version: 2.1.77 / 2.1.79
- OS: macOS (Darwin 24.6.0, Apple Silicon)
Steps to Reproduce
- Install Claude Code plugin from JetBrains Marketplace
- Configure Claude command (e.g.,
claudeor a custom wrapper) - Open Claude from the IDE (toolbar button or terminal)
- Claude shows:
↑ Install the GoLand plugin from the JetBrains Marketplace - Running
/ideinside Claude shows:No available IDEs detected
What Works
The plugin does correctly:
- Start a WebSocket server on a random port (confirmed via
lsof) - Set
CLAUDE_CODE_SSE_PORTandENABLE_IDE_INTEGRATION=trueenv vars in the terminal - Create the
~/.claude/ide/directory (viaensureLockFileDirectory)
What Doesn't Work
The plugin never calls createLockFile() to write ~/.claude/ide/<port>.lock. Without this file, Claude CLI cannot:
- Discover the IDE's WebSocket server
- Obtain the
authTokenneeded to authenticate the WebSocket connection
The WebSocket server returns HTTP 400 for unauthenticated upgrade requests (expected behavior).
Debugging Evidence
~/.claude/ide/directory exists but is always empty — confirmed with polling,fswatch, and checks at wrapper start/during/after Claude sessionCLAUDE_CODE_WEBSOCKET_AUTH_FILE_DESCRIPTORenv var is never set by the plugin- No lock file creation entries in GoLand's
idea.log - Claude CLI debug log (
--debug-file) shows:CLAUDE_CODE_WEBSOCKET_AUTH_FILE_DESCRIPTOR not set, no file descriptor token available - The plugin JAR contains
LockFileUtil.classwithcreateLockFile,generateAuthToken,ensureLockFileDirectory, andLockFileJsonContent.classwithauthToken,workspaceFolders,ideName,transportfields — the code exists but is never invoked - Issue reproduces with a bare wrapper (
exec claude "$@") — no Docker or other tooling involved
Expected Behavior
The plugin should write a lock file at ~/.claude/ide/<port>.lock containing:
{
"workspaceFolders": ["/path/to/project"],
"pid": 12345,
"ideName": "GoLand",
"transport": "ws",
"authToken": "generated-token"
}
This enables Claude CLI to discover and authenticate with the IDE's WebSocket server.
This issue has 4 comments on GitHub. Read the full discussion on GitHub ↗