{
  "id": 15588138,
  "title": "Notes from a 2 AM On-Call: Why Harper's WASM Module Silently Failed in Our Self-Hosted VSCode Server",
  "url": "https://urgent.news/2026/10/19/notes-from-a-2-am-on-call-why-harpers-wasm-module-silently-failed-in",
  "topic": "tech",
  "section": "Tech",
  "published": "2026-10-19T09:33:14.000Z",
  "source": {
    "name": "Dev.to",
    "slug": "dev-to",
    "url": "https://dev.to/clara_dupont/notes-from-a-2-am-on-call-why-harpers-wasm-module-silently-failed-in-our-self-hosted-vscode-server-2iii"
  },
  "original_language": "en",
  "account": "A self-hosted Visual Studio Code server experienced silent failure of the Harper WASM module during a 2 AM on-call rotation. Users typed in files and the language server remained active, but suggestions stopped appearing. The issue was traced to reverse proxy configuration blocking specific Content-Security-Policy headers required by the WASM worker threads. The fix involved adding the correct CSP headers to Traefik's dynamic configuration or Nginx proxy settings. After applying the necessary changes, the Harper suggestions returned within 200ms. The article emphasizes the importance of auditing reverse proxy CSP headers before deploying self-hosted web IDEs or extensions that use WebAssembly workers, as browser console errors often mask the root cause.",
  "summary": "Notes from a 2 AM On-Call: Why Harper's WASM Module Silently Failed in Our Self-Hosted VSCode Server The Failure Symptom [Extension Host] Error loading webview: Failed to execute 'postMessage' on 'Worker' [Harper] WASM module instantiation failed: CompileError Browser console: Refused to create a worker from 'blob:' (CSP violation) Grammar checking just stopped. No crashes, no obvious errors in…",
  "key_points": [
    "Harper WASM module failed silently during 2 AM on-call rotation",
    "Reverse proxy configuration blocked Content-Security-Policy headers",
    "Adding correct CSP headers restored suggestions within 200ms"
  ],
  "editors_take": null,
  "illustration": null,
  "coverage": {
    "outlets": 1,
    "also_reported_by": []
  },
  "ai_generated": true,
  "disclaimer": "Summaries, key points and the editor’s take are written by software from other outlets’ reporting and may contain errors — always check the linked original."
}