diff --git a/ci/dev/vscode.patch b/ci/dev/vscode.patch
index f6af1c22..b900f53d 100644
--- a/ci/dev/vscode.patch
+++ b/ci/dev/vscode.patch
@@ -3797,18 +3797,25 @@ index 85d83f37da179a1e39266cf72a02e971f590308e..0659738b36df1747c9afcabf8d9abf26
};
diff --git a/src/vs/workbench/services/environment/browser/environmentService.ts b/src/vs/workbench/services/environment/browser/environmentService.ts
-index a8d43045ecc8cbe04b3f8440cff16d42aadbcad0..cd589c6f75eccbeefbf364d426ac882396b26fb4 100644
+index a8d43045ecc8cbe04b3f8440cff16d42aadbcad0..8e122c761ac7ddfee11f9dda2ac5e845b893cc28 100644
--- a/src/vs/workbench/services/environment/browser/environmentService.ts
+++ b/src/vs/workbench/services/environment/browser/environmentService.ts
-@@ -119,8 +119,18 @@ export class BrowserWorkbenchEnvironmentService implements IWorkbenchEnvironment
+@@ -119,8 +119,25 @@ export class BrowserWorkbenchEnvironmentService implements IWorkbenchEnvironment
@memoize
get logFile(): URI { return joinPath(this.options.logsPath, 'window.log'); }
-+ // NOTE@coder: Use the regular path for extensions that write directly to disk
-+ // instead of using the VS Code API.
++ // NOTE@coder: Use the same path in // ../../../../platform/environment/node/environmentService.ts
++ // and don't use the user data scheme. This solves two problems:
++ // 1. Extensions running in the browser (like Vim) might use these paths
++ // directly instead of using the file service and most likely can't write
++ // to `/User` on disk.
++ // 2. Settings will be stored in the file system instead of in browser
++ // storage. Using browser storage makes sharing or seeding settings
++ // between browsers difficult. We may want to revisit this once/if we get
++ // settings sync.
@memoize
- get userRoamingDataHome(): URI { return URI.file('/User').with({ scheme: Schemas.userData }); }
-+ get userRoamingDataHome(): URI { return URI.file(this.userDataPath).with({ scheme: Schemas.userData }); }
++ get userRoamingDataHome(): URI { return joinPath(URI.file(this.userDataPath).with({ scheme: Schemas.vscodeRemote }), 'User'); }
+ @memoize
+ get userDataPath(): string {
+ const dataPath = this.payload?.get("userDataPath");
@@ -3820,7 +3827,7 @@ index a8d43045ecc8cbe04b3f8440cff16d42aadbcad0..cd589c6f75eccbeefbf364d426ac8823
@memoize
get settingsResource(): URI { return joinPath(this.userRoamingDataHome, 'settings.json'); }
-@@ -301,7 +311,12 @@ export class BrowserWorkbenchEnvironmentService implements IWorkbenchEnvironment
+@@ -301,7 +318,12 @@ export class BrowserWorkbenchEnvironmentService implements IWorkbenchEnvironment
extensionHostDebugEnvironment.params.port = parseInt(value);
break;
case 'enableProposedApi':
diff --git a/src/browser/pages/vscode.html b/src/browser/pages/vscode.html
index d9305fe9..727a1ca8 100644
--- a/src/browser/pages/vscode.html
+++ b/src/browser/pages/vscode.html
@@ -32,11 +32,6 @@
-
-
-
diff --git a/src/browser/pages/vscode.ts b/src/browser/pages/vscode.ts
index 2cb7973f..d95e9174 100644
--- a/src/browser/pages/vscode.ts
+++ b/src/browser/pages/vscode.ts
@@ -41,7 +41,6 @@ try {
"xterm-addon-search": `../node_modules/xterm-addon-search/lib/xterm-addon-search.js`,
"xterm-addon-unicode11": `../node_modules/xterm-addon-unicode11/lib/xterm-addon-unicode11.js`,
"xterm-addon-webgl": `../node_modules/xterm-addon-webgl/lib/xterm-addon-webgl.js`,
- "semver-umd": `../node_modules/semver-umd/lib/semver-umd.js`,
"tas-client-umd": `../node_modules/tas-client-umd/lib/tas-client-umd.js`,
"iconv-lite-umd": `../node_modules/iconv-lite-umd/lib/iconv-lite-umd.js`,
jschardet: `../node_modules/jschardet/dist/jschardet.min.js`,