Don't override users' settings
diff --git a/editors/code/src/config.ts b/editors/code/src/config.ts
index 4c895fb..b97a47d 100644
--- a/editors/code/src/config.ts
+++ b/editors/code/src/config.ts
@@ -4,7 +4,7 @@
 import * as vscode from "vscode";
 import { expectNotUndefined, log, normalizeDriveLetter, unwrapUndefinable } from "./util";
 import type { Env } from "./util";
-import { cloneDeep, get, merge, pickBy } from "lodash";
+import { cloneDeep, get, pickBy, set } from "lodash";
 
 export type RunnableEnvCfgItem = {
     mask?: string;
@@ -220,7 +220,19 @@
 
     // Returns the final configuration to use, with extension configuration overrides merged in.
     public get cfg(): ConfigurationTree {
-        return merge(cloneDeep(this.rawCfg), ...Object.values(this.extensionConfigurations));
+        const finalConfig = cloneDeep<ConfigurationTree>(this.rawCfg);
+        for (const [extensionId, items] of Object.entries(this.extensionConfigurations)) {
+            for (const [k, v] of Object.entries(items)) {
+                const i = this.rawCfg.inspect(k);
+                if (i?.workspaceValue !== undefined || i?.workspaceFolderValue !== undefined || i?.globalValue !== undefined) {
+                    log.trace(`Ignoring configuration override for ${k} from extension ${extensionId}`);
+                    continue;
+                }
+                log.trace(`Extension ${extensionId} overrides configuration ${k} to `, v);
+                set(finalConfig, k, v);
+            }
+        }
+        return finalConfig;
     }
 
     /**
diff --git a/editors/code/src/main.ts b/editors/code/src/main.ts
index 1b51269..190f586 100644
--- a/editors/code/src/main.ts
+++ b/editors/code/src/main.ts
@@ -15,9 +15,9 @@
     readonly client?: lc.LanguageClient;
 
     // Allows adding a configuration override from another extension.
-    // `configuration` is a `rust-analyzer` subtree of the vscode configuration
-    // that gets merged with the workspace/user configuration. `extensionId` is
-    // used to only merge configuration override from present extensions.
+    // `extensionId` is used to only merge configuration override from present
+    // extensions. `configuration` is map of rust-analyzer-specific setting
+    // overrides, e.g., `{"cargo.cfgs": ["foo", "bar"]}`.
     addConfiguration(extensionId: string, configuration: Record<string, unknown>): Promise<void>;
 }