Quick war story from debugging a "Claude Code panel won't open" problem inside OpenVSCode Server. The fix turned out to have nothing to do with the server — but the road there is worth documenting.

Symptom

The Claude Code extension panel in OpenVSCode Server loaded to a blank screen. No chat UI, no input box — just empty. The extension host logs were noisy with one recurring error:

[error] claude auth status parse failed: SyntaxError: Unexpected end of JSON input

...repeated in a tight loop alongside Getting authentication status / OAuth tokens found in secure storage.

The red herrings (and real fixes along the way)

Before finding the actual cause of the blank panel, a few genuine issues were cleaned up:

  • firecrawl MCP — ENOTEMPTY: the npx cache was corrupted (node_modules/qs plus an orphaned .qs-XXXX rename leftover), which broke every reinstall. Clearing the _npx/ directory fixed it.
  • auth status parse failure: the plugin runs claude auth status --json and parses stdout. It was getting empty output. Root cause: the VS Code setting claudeCode.claudeProcessWrapper was pointed at the standalone CLI binary itself. That setting expects a wrapper script that does exec "$@"; pointing it at the binary made the plugin run claude auth status --json, where the binary path became a stray positional argument → unknown option '--json' → empty stdout → "Unexpected end of JSON input". Clearing the setting so the plugin uses its bundled binary fixed the auth loop.
  • Version skew: the standalone CLI was an older build than the extension's bundled binary. Updating the CLI removed the mismatch.
  • OpenVSCode Server: updated to the latest release while in there.

The actual cause of the blank panel

Even after all of that, the panel was still blank — yet the logs showed the webview was perfectly healthy: it sent init, get_asset_uris, launch_claude, and a time_to_interactive event, and the Claude process spawned cleanly with no parse errors on the final launch.

A healthy backend plus a blank front-end points one direction: something in the browser is crashing the webview render.

The culprit: the TrustWallet browser extension. Crypto wallet extensions (TrustWallet, MetaMask, and friends) inject content scripts and globals like window.ethereum into every page — including the OpenVSCode webview iframe. That injection throws inside the webview's sandboxed context and takes the React render down with it, leaving a blank panel. The server, the extension host, and Claude itself were all fine the whole time.

The fix

It's a browser-side problem, so the fix is browser-side. Any of these work:

  • Disable TrustWallet for the IDE host (chrome://extensions → TrustWallet → Site access → On click, or remove the host).
  • Use a separate browser profile (or a different browser) without wallet extensions for the IDE.
  • Open the IDE in an incognito/private window, where extensions are off by default.

Then hard-refresh the tab.

Takeaway

When a webview-based panel is blank but its backend logs show the webview loading and talking normally, stop debugging the server. Suspect the browser — and especially any extension that injects scripts into every page. Crypto wallet extensions are a recurring offender for embedded web apps and webviews.