Skip to content

Commit ac8dea0

Browse files
ARHAEEMclaude
andcommitted
fix(extension): safe production defaults and auto-propagate serverSource changes
Default changes (4): - mcp.autoConfigureOnInstall: true → false (don't write IDE configs without consent) - ai.autoInstallFiles: true → false (don't install files without consent) - mcp.toolProfile: full → safe-write (don't expose destructive tools by default) - debug.enabled: true → false (debug tracing is opt-in) Auto-propagation: - Changing serverSource (bundled/npx) in settings now automatically updates all configured IDEs and shows a confirmation message. No need to manually click Update on each IDE. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent 12d76ab commit ac8dea0

3 files changed

Lines changed: 26 additions & 11 deletions

File tree

packages/extension/package.json

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,7 @@
107107
"properties": {
108108
"airtableFormula.mcp.autoConfigureOnInstall": {
109109
"type": "boolean",
110-
"default": true,
110+
"default": false,
111111
"description": "Automatically configure MCP in detected IDEs on first launch."
112112
},
113113
"airtableFormula.mcp.serverPathOverride": {
@@ -132,7 +132,7 @@
132132
},
133133
"airtableFormula.ai.autoInstallFiles": {
134134
"type": "boolean",
135-
"default": true,
135+
"default": false,
136136
"description": "Automatically install AI skills/rules/workflows on first launch."
137137
},
138138
"airtableFormula.ai.includeAgents": {
@@ -168,7 +168,7 @@
168168
},
169169
"airtableFormula.mcp.toolProfile": {
170170
"type": "string",
171-
"default": "full",
171+
"default": "safe-write",
172172
"enum": [
173173
"read-only",
174174
"safe-write",
@@ -223,7 +223,7 @@
223223
},
224224
"airtableFormula.debug.enabled": {
225225
"type": "boolean",
226-
"default": true,
226+
"default": false,
227227
"description": "Enable debug event collection for both extension and MCP server. Events are buffered in memory and only written to disk on export."
228228
},
229229
"airtableFormula.debug.bufferSize": {

packages/extension/src/extension.ts

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -602,16 +602,31 @@ export async function activate(context: vscode.ExtensionContext): Promise<void>
602602
}),
603603
);
604604

605-
// React to debug setting changes at runtime
605+
// React to setting changes at runtime
606606
context.subscriptions.push(
607607
traceConfigChanges(debugCollector),
608-
vscode.workspace.onDidChangeConfiguration((e) => {
608+
vscode.workspace.onDidChangeConfiguration(async (e) => {
609609
if (e.affectsConfiguration('airtableFormula.debug.enabled')) {
610610
debugCollector.enabled = getSettings().debug.enabled;
611611
}
612612
if (e.affectsConfiguration('airtableFormula.debug.bufferSize')) {
613613
debugCollector.resize(getSettings().debug.bufferSize);
614614
}
615+
616+
// Auto-propagate serverSource changes to all configured IDEs
617+
if (e.affectsConfiguration('airtableFormula.mcp.serverSource')) {
618+
const statuses = await getAllIdeStatuses();
619+
const configured = statuses.filter(s => s.detected && s.mcpConfigured);
620+
if (configured.length > 0) {
621+
const entry = getServerEntry(context);
622+
const serverPath = getBundledServerPath(context);
623+
await Promise.all(configured.map(s => configureMcpForIde(s.ideId, serverPath, entry)));
624+
vscode.window.showInformationMessage(
625+
`Airtable Formula: MCP server source updated to "${getSettings().mcp.serverSource}" for ${configured.map(s => s.label).join(', ')}.`
626+
);
627+
dashboardProvider.refresh();
628+
}
629+
}
615630
}),
616631
);
617632

packages/webview/src/store.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -28,11 +28,11 @@ interface Store extends DashboardState {
2828

2929
const defaultSettings: SettingsSnapshot = {
3030
mcp: {
31-
autoConfigureOnInstall: true,
31+
autoConfigureOnInstall: false,
3232
notifyOnUpdates: true,
3333
toolProfile: {
34-
profile: 'full',
35-
enabledCount: 32,
34+
profile: 'safe-write',
35+
enabledCount: 23,
3636
totalCount: 32,
3737
categories: {
3838
read: true, fieldWrite: true, fieldDestructive: true,
@@ -41,10 +41,10 @@ const defaultSettings: SettingsSnapshot = {
4141
},
4242
serverSource: 'bundled' as const,
4343
},
44-
ai: { autoInstallFiles: true, includeAgents: false },
44+
ai: { autoInstallFiles: false, includeAgents: false },
4545
formula: { formatterVersion: 'v2' },
4646
auth: { autoRefresh: true, refreshIntervalHours: 12 },
47-
debug: { enabled: true, verboseHttp: false, bufferSize: 1000 },
47+
debug: { enabled: false, verboseHttp: false, bufferSize: 1000 },
4848
};
4949

5050
const defaultAuth: AuthState = {

0 commit comments

Comments
 (0)