From e7e8ea2fe74c78c31dbe62f1e0ec17db3b18abe4 Mon Sep 17 00:00:00 2001 From: Neil Date: Sun, 20 Sep 2026 23:33:23 -0700 Subject: [PATCH] fix(devin): migrate existing workspace trust defaults --- .../terminal-settings-migrations.test.ts | 13 +++++++++++++ .../terminal-settings-migrations.ts | 3 +++ src/renderer/src/lib/tui-agent-startup.test.ts | 6 +++--- 3 files changed, 19 insertions(+), 3 deletions(-) diff --git a/src/main/persistence/applying-settings/terminal-settings-migrations.test.ts b/src/main/persistence/applying-settings/terminal-settings-migrations.test.ts index c996ea8dcfa..feb6e515f14 100644 --- a/src/main/persistence/applying-settings/terminal-settings-migrations.test.ts +++ b/src/main/persistence/applying-settings/terminal-settings-migrations.test.ts @@ -12,4 +12,17 @@ describe('migrateAgentYoloDefaults', () => { expect(migrated.agentDefaultArgs?.droid).toBe('') expect(migrated.agentDefaultEnv?.goose).toEqual({}) }) + + it('updates the previous Devin default for existing profiles', () => { + // oxlint-disable-next-line typescript/consistent-type-assertions -- SAFETY: This test only supplies the settings fields consumed by this migration. + const migrated = migrateAgentYoloDefaults({ + agentYoloDefaultsMigrated: true, + agentDefaultArgs: { devin: '--permission-mode bypass' }, + agentDefaultEnv: {} + } as never) + + expect(migrated.agentDefaultArgs?.devin).toBe( + '--permission-mode bypass --respect-workspace-trust false' + ) + }) }) diff --git a/src/main/persistence/applying-settings/terminal-settings-migrations.ts b/src/main/persistence/applying-settings/terminal-settings-migrations.ts index 699189d1390..161afcd1de5 100644 --- a/src/main/persistence/applying-settings/terminal-settings-migrations.ts +++ b/src/main/persistence/applying-settings/terminal-settings-migrations.ts @@ -126,6 +126,9 @@ export function migrateAgentYoloDefaults( ): Pick { const existingArgs = normalizeTuiAgentArgsRecord(settings?.agentDefaultArgs) const existingEnv = normalizeTuiAgentEnvRecord(settings?.agentDefaultEnv) + if (existingArgs.devin === '--permission-mode bypass') { + existingArgs.devin = DEFAULT_TUI_AGENT_ARGS.devin + } if (settings?.agentYoloDefaultsMigrated === true) { // Keep newly added agents manual for profiles migrated by an older build. // Missing keys otherwise fall through to the current (possibly yolo) defaults. diff --git a/src/renderer/src/lib/tui-agent-startup.test.ts b/src/renderer/src/lib/tui-agent-startup.test.ts index 422d7a8f6b4..ce948703c94 100644 --- a/src/renderer/src/lib/tui-agent-startup.test.ts +++ b/src/renderer/src/lib/tui-agent-startup.test.ts @@ -252,12 +252,12 @@ describe('buildAgentStartupPlan', () => { }) ).toEqual({ agent: 'devin', - launchCommand: "devin '--permission-mode' 'bypass'", + launchCommand: "devin '--permission-mode' 'bypass' '--respect-workspace-trust' 'false'", expectedProcess: 'devin', followupPrompt: 'Trace the failing test', launchConfig: { - agentCommand: "devin '--permission-mode' 'bypass'", - agentArgs: '--permission-mode bypass', + agentCommand: "devin '--permission-mode' 'bypass' '--respect-workspace-trust' 'false'", + agentArgs: '--permission-mode bypass --respect-workspace-trust false', agentEnv: {} } })