coder / coder/code-server

[Firefox] Markdown Preview fails to load workspace CSS via markdown.styles (NS_ERROR_UNKNOWN_HOST for vscode-resource.vscode-cdn.net)

Open
#7,913 1 comment 0 reactions 0 assignees View on GitHub
browser-firefox bug triage
Dominant language
TypeScript
Stars
79.3k
Forks
6.8k
Avg merge
2d 6h
Merged PRs (30d)
41

Description

### Is there an existing issue for this?

- [X] I have searched the existing issues

### OS/Web Information

* Web Browser: Firefox
* `firefox-151.0-2.fc42.x86_64`
* Local OS: Fedora 42
* Remote OS: Fedora 42
* Remote Architecture: amd64
* `code-server --version`: 4.105.1 811ec6c1d60add2eb92446161ca812828fdbaa7f with Code 1.105.1

### Steps to Reproduce

### Bug Description

When opening a Markdown preview in Firefox, local CSS files referenced in `markdown.styles` fail to load. The browser attempts to resolve the virtual `vscode-resource.vscode-cdn.net` domain via DNS instead of intercepting it via the Service Worker, resulting in `NS_ERROR_UNKNOWN_HOST`.

This issue is specific to Firefox and its implementation of Service Worker / iframe isolation (dFPI).

Looks close to coder/code-server#7892 … BUT!!! The same setup works for me perfectly in Chromium-based browsers.
So I hope some workaround (custom settings, hacks) exists that can make work it with Firefox.

### Steps to Reproduce

1. Run `code-server` and access it via Firefox.
2. In a workspace, create a file `test.css` in the root directory.
3. Add the following to `.vscode/settings.json`:

```json
{
"markdown.styles": ["test.css"]
}
```
4. Open any `.md` file and open the Markdown Preview.
5. Check the developer tools Network and Console panels.

### Expected

The Service Worker intercepts the request for `test.css` and serves the local workspace file, applying the custom styles to the preview (as it does in Chromium).

### Actual

The preview renders without the custom CSS. In the Developer Tools Console:

```text
Could not load 'markdown.styles': test.css
```

In the Network panel, the request for `test.css` fails:

* **Host**: `vscode-remote+.vscode-resource.vscode-cdn.net`
* **Error**: `NS_ERROR_UNKNOWN_HOST`
* **DNS Resolution**: System

### Investigation Details

Based on HAR exports and console logs:

1. The Service Worker **is registered and active**.
2. Extension resources inside the webview (e.g., `index.bundle.js` from extensions) are successfully intercepted and return `HTTP/2 200`.
3. However, the dynamically injected `` for `markdown.styles` bypasses the Service Worker and goes directly to the network.
4. Setting `privacy.partition.serviceWorkers` to `false` in `about:config` completely breaks `code-server` initialization (`Error: IndexedDB database 'vscode-web-db' is closed`), so it cannot be used as a workaround.

It appears to be a race condition or a cross-origin iframe isolation bug specific to Firefox, where the Service Worker fails to control the CSS fetch request initiated by the Markdown preview webview.

### Attachments

Please find the attached `console.log` and `.har` (`har.zip`) network export demonstrating the bypassed Service Worker.

[console-export-2026-7-30_12-31-17.log]()

[xn--80ach2ae.xn--80apqgfe.xn--p1ai_Archive [26-07-30 12-32-00].har.zip]()

### Logs

```shell
```

### Screenshot/Video

*No response*

### Does this bug reproduce in native VS Code?

Yes, this is also broken in native VS Code

### Does this bug reproduce in VS Code web?

Yes, this is also broken in VS Code web

### Does this bug reproduce in GitHub Codespaces?

Yes, this is also broken in GitHub Codespaces

### Are you accessing code-server over a secure context?

- [ ] I am using a secure context.

### Notes

*No response*

Contributor guide

Open the contributing guide

Research direction

Reproduce the Markdown preview with markdown.styles set to test.css in Firefox, then inspect the Service Worker registration, Network panel, and console for the vscode-resource.vscode-cdn.net request. Done means workspace CSS is intercepted and applied in Firefox without breaking code-server initialization or IndexedDB.

Written by the indexing model from the issue text.

Assessment

Tech stack
typescript
Domain
frontend, web-dev
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
42/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.