[BUG] uild/packaging bug in Claude Code v2.1.51

Status Fixed / completed
Reported on v2.1.50
Maintainer reply None cached
Activity 7 comments · opened Feb 24, 2026 · closed Feb 24, 2026

Preflight Checklist

  • [x] I have searched existing issues and this hasn't been reported yet
  • [x] This is a single bug report (please file separate reports for different bugs)
  • [x] I am using the latest version of Claude Code

What's Wrong?

Latest Claude Code update, not loading in VS Code on a Windows 11 machine

What Should Happen?

This is a build/packaging bug in Claude Code v2.1.51 — the extension has a hardcoded Linux CI path (/home/runner/work/...) baked into it, which breaks Module.createRequire on Windows.

Error Messages/Logs

command 'claude-vscode.editor.openLast' not found

Steps to Reproduce

  1. Check the Extension Host log — this is where activation errors show up:

Ctrl+Shift+P → "Output: Show Output Channel" → select "Extension Host" from the dropdown
Look for any lines mentioning claude or anthropic — especially errors

Claude Model

None

Is this a regression?

Yes, this worked in a previous version

Last Working Version

2.1.50

Claude Code Version

2.1.51

Platform

Anthropic API

Operating System

Windows

Terminal/Shell

PowerShell

Additional Information

_No response_

View original on GitHub ↗

7 Comments

github-actions[bot] · 6 months ago

Found 3 possible duplicate issues:

  1. https://github.com/anthropics/claude-code/issues/28056
  2. https://github.com/anthropics/claude-code/issues/28054
  3. https://github.com/anthropics/claude-code/issues/28057

This issue will be automatically closed as a duplicate in 3 days.

  • If your issue is a duplicate, please close it and 👍 the existing issue instead
  • To prevent auto-closure, add a comment or 👎 this comment

🤖 Generated with Claude Code

StealUrKill · 6 months ago

Found the error in developer tools

__mainThreadExtensionService.ts:108__ Activating extension 'Anthropic.claude-code' failed: The argument 'filename' must be a file URL object, file URL string, or absolute path string. Received '__file:///home/runner/work/claude-cli-internal/claude-cli-internal/build-agent-sdk/sdk.mjs__'.
$onExtensionActivationError@__mainThreadExtensionService.ts:108__

Just uninstall and install older version.

sailosha · 6 months ago

I got same error.

[error] TypeError: The argument 'filename' must be a file URL object, file URL string, or absolute path string. Received 'file:///home/runner/work/claude-cli-internal/claude-cli-internal/build-agent-sdk/sdk.mjs'
    at Module.createRequire (node:internal/modules/cjs/loader:1915:13)
    at Object.<anonymous> (c:\Users\EndUser\.vscode\extensions\anthropic.claude-code-2.1.51-win32-x64\extension.js:45:4602)
    at Module._compile (node:internal/modules/cjs/loader:1714:14)
    at Module._extensions..js (node:internal/modules/cjs/loader:1848:10)
    at Module.load (node:internal/modules/cjs/loader:1448:32)
    at Module._load (node:internal/modules/cjs/loader:1270:12)
    at c._load (node:electron/js2c/node_init:2:17993)
    at e._load (file:///f:/vscode/072586267e/resources/app/out/vs/workbench/api/node/extensionHostProcess.js:405:6055)
    at t._load (file:///f:/vscode/072586267e/resources/app/out/vs/workbench/api/node/extensionHostProcess.js:223:22773)
    at s._load (file:///f:/vscode/072586267e/resources/app/out/vs/workbench/api/node/extensionHostProcess.js:215:24706)
    at TracingChannel.traceSync (node:diagnostics_channel:328:14)
    at wrapModuleLoad (node:internal/modules/cjs/loader:244:24)
    at Module.require (node:internal/modules/cjs/loader:1470:12)
    at require (node:internal/modules/helpers:147:16)
    at pee.Cb (file:///f:/vscode/072586267e/resources/app/out/vs/workbench/api/node/extensionHostProcess.js:254:1256)
cardacci · 6 months ago

Workaround: Downgrade to v2.1.49

Environment: Windows 11, VS Code, Claude Code extension v2.1.51

Problem

After a crash, the extension stopped working entirely with the error:

command 'claude-vscode.editor.openLast' not found

The extension fails to load when it can't restore a previous session, making it completely unusable.

What I tried (did NOT fix the issue)

  1. Reload Window (Ctrl+Shift+PDeveloper: Reload Window) — Error persisted.
  2. Checked globalStorage at C:\Users\<user>\AppData\Roaming\Code\User\globalStorage\ — The anthropic.claude-code folder didn't exist, meaning the extension never re-initialized after the crash.
  3. Full clean reinstall:
  • Uninstalled the extension from VS Code.
  • Manually deleted C:\Users\<user>\.vscode\extensions\anthropic.claude-code-*.
  • Cleared VS Code cache (AppData\Roaming\Code\Cache and CachedData).
  • Reinstalled from the Marketplace.
  • Same error.

What fixed it

Downgrading to v2.1.49:

  1. Go to Extensions (Ctrl+Shift+X) → Click on Claude Code.
  2. Click the dropdown arrow next to the Uninstall button → "Install Another Version..."
  3. Select version 2.1.49.
  4. Restart VS Code.

The extension loaded correctly after the downgrade.

Suggestion

I'd recommend disabling auto-update for the extension to prevent it from updating back to the broken version:

  • Extension gear icon → Auto Update → uncheck.

This seems to be a regression in v2.1.51 where the session restore logic doesn't handle missing or corrupted state gracefully.

StealUrKill · 6 months ago

Use Claude to Fix Claude works great if you want the new version lol

<img width="232" height="217" alt="Image" src="https://github.com/user-attachments/assets/f40b30da-23e8-4174-bf99-da8ba0a5b9fe" />

```# fix-claude-code-extension.ps1
#

Fixes Claude Code VSCode extension activation failure on Windows.

#

Error:

Activating extension 'Anthropic.claude-code' failed:

The argument 'filename' must be a file URL object, file URL string,

or absolute path string. Received 'file:///home/runner/work/...'

#

Root cause:

The extension bundle contains two hardcoded Linux CI build paths

(file:///home/runner/work/...). On Windows, Node.js rejects these

URLs in fileURLToPath() because they have no Windows drive letter.

This crashes the extension immediately at activation.

#

What this script patches:

Fix 1 - createRequire call: crashes at activation time

.createRequire("file:///home/runner/.../sdk.mjs")

-> .createRequire(__filename) (use actual file path instead)

#

Fix 2 - path resolution call: crashes when agent SDK is invoked

SomeFunc("file:///home/runner/.../sdk.mjs")

-> inline child_process lookup for the claude CLI on PATH

#

Usage:

Right-click -> "Run with PowerShell"

OR from a PowerShell prompt: .\fix-claude-code-extension.ps1

$ErrorActionPreference = "Stop"

$extensionRoot = "$env:USERPROFILE\.vscode\extensions"
$badUrl = 'file:///home/runner/work/claude-cli-internal/claude-cli-internal/build-agent-sdk/sdk.mjs'

---- Regex patterns (stable across minified versions) ----

Fix 1: .createRequire("file:///home/...sdk.mjs")

The method name createRequire is stable even in minified code.

$pattern1 = '\.createRequire\("file:///home/runner/work/claude-cli-internal/claude-cli-internal/build-agent-sdk/sdk\.mjs"\)'
$replacement1 = '.createRequire(__filename)'

Fix 2: anyMinifiedName("file:///home/...sdk.mjs")

After fix 1 removes the createRequire case, any remaining call

with this URL is the fileURLToPath wrapper (Ye or similar).

Replace it with an inline lookup that finds the claude CLI on PATH.

$pattern2 = '[a-zA-Z_$][a-zA-Z0-9_$]*\("file:///home/runner/work/claude-cli-internal/claude-cli-internal/build-agent-sdk/sdk\.mjs"\)'
$replacement2 = '(function(){try{return(require("child_process").spawnSync(process.platform==="win32"?"where.exe":"which",["claude"],{encoding:"utf8"}).stdout||"").split(/[\r\n]+/).filter(Boolean)[0]}catch(e){}})()'

---- Find extension directories ----

if (-not (Test-Path $extensionRoot)) {
Write-Host "VSCode extensions directory not found: $extensionRoot" -ForegroundColor Red
exit 1
}

$dirs = Get-ChildItem $extensionRoot -Directory | Where-Object { $_.Name -like 'anthropic.claude-code-*' }

if ($dirs.Count -eq 0) {
Write-Host "No Claude Code extension found in: $extensionRoot" -ForegroundColor Yellow
exit 1
}

Write-Host "Found $($dirs.Count) Claude Code extension(s):`n"

foreach ($dir in $dirs) {
$label = $dir.Name
$file = Join-Path $dir.FullName 'extension.js'

if (-not (Test-Path $file)) {
Write-Host "[$label] extension.js not found, skipping" -ForegroundColor Yellow
continue
}

$content = [System.IO.File]::ReadAllText($file, [System.Text.Encoding]::UTF8)

if ($content.IndexOf($badUrl) -lt 0) {
Write-Host "[$label] Not affected (bad URL not found) - already patched or different version" -ForegroundColor Green
continue
}

# Count occurrences before patching
$count = ([regex]::Matches($content, [regex]::Escape($badUrl))).Count
Write-Host "[$label] Found $count occurrence(s) of the bad CI path. Patching..." -ForegroundColor Cyan

# Backup original
$backup = "$file.bak"
Copy-Item $file $backup
Write-Host "[$label] Backup saved -> extension.js.bak"

# Apply Fix 1: createRequire
$patched = [regex]::Replace($content, $pattern1, $replacement1)
$fix1count = $count - ([regex]::Matches($patched, [regex]::Escape($badUrl))).Count
Write-Host "[$label] Fix 1 (createRequire): replaced $fix1count occurrence(s)"

# Apply Fix 2: fileURLToPath wrapper
$patched2 = [regex]::Replace($patched, $pattern2, $replacement2)
$fix2count = ([regex]::Matches($patched, [regex]::Escape($badUrl))).Count `

  • ([regex]::Matches($patched2, [regex]::Escape($badUrl))).Count

Write-Host "[$label] Fix 2 (path resolver): replaced $fix2count occurrence(s)"

# Verify no bad URLs remain
$remaining = ([regex]::Matches($patched2, [regex]::Escape($badUrl))).Count
if ($remaining -gt 0) {
Write-Host "[$label] WARNING: $remaining occurrence(s) still remain after patching!" -ForegroundColor Yellow
}

# Write patched file
[System.IO.File]::WriteAllText($file, $patched2, [System.Text.Encoding]::UTF8)
Write-Host "[$label] Patched successfully" -ForegroundColor Green
Write-Host ""
}

Write-Host "Done. Reload VSCode to apply: Ctrl+Shift+P -> 'Developer: Reload Window'" -ForegroundColor White

shawnm-anthropic · 6 months ago

Hi, sorry about the disruption. We just published v2.1.52 which should hopefully work better.

github-actions[bot] · 6 months ago

This issue has been automatically locked since it was closed and has not had any activity for 7 days. If you're experiencing a similar issue, please file a new issue and reference this one if it's relevant.