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/qsplus an orphaned.qs-XXXXrename leftover), which broke every reinstall. Clearing the_npx/directory fixed it. - auth status parse failure: the plugin runs
claude auth status --jsonand parses stdout. It was getting empty output. Root cause: the VS Code settingclaudeCode.claudeProcessWrapperwas pointed at the standalone CLI binary itself. That setting expects a wrapper script that doesexec "$@"; pointing it at the binary made the plugin runclaude, where the binary path became a stray positional argument →auth status --json 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.
Comments