diff --git a/src/main/persistence/applying-settings/terminal-settings-migrations.test.ts b/src/main/persistence/applying-settings/terminal-settings-migrations.test.ts new file mode 100644 index 00000000000..86537fdfa7d --- /dev/null +++ b/src/main/persistence/applying-settings/terminal-settings-migrations.test.ts @@ -0,0 +1,15 @@ +import { describe, expect, it } from 'vitest' +import { migrateAgentYoloDefaults } from './terminal-settings-migrations' + +describe('migrateAgentYoloDefaults', () => { + it('keeps newly added agent defaults manual for already migrated profiles', () => { + const migrated = migrateAgentYoloDefaults({ + agentYoloDefaultsMigrated: true, + agentDefaultArgs: { claude: '--dangerously-skip-permissions' }, + agentDefaultEnv: {} + } as never) + + expect(migrated.agentDefaultArgs.droid).toBe('') + expect(migrated.agentDefaultEnv.goose).toEqual({}) + }) +}) diff --git a/src/main/persistence/applying-settings/terminal-settings-migrations.ts b/src/main/persistence/applying-settings/terminal-settings-migrations.ts index 6c04673ca07..f8edf0ee466 100644 --- a/src/main/persistence/applying-settings/terminal-settings-migrations.ts +++ b/src/main/persistence/applying-settings/terminal-settings-migrations.ts @@ -124,6 +124,18 @@ export function migrateAgentYoloDefaults( const existingArgs = normalizeTuiAgentArgsRecord(settings?.agentDefaultArgs) const existingEnv = normalizeTuiAgentEnvRecord(settings?.agentDefaultEnv) 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. + for (const agent of Object.keys(DEFAULT_TUI_AGENT_ARGS)) { + if (!(agent in existingArgs)) { + existingArgs[agent as keyof typeof DEFAULT_TUI_AGENT_ARGS] = '' + } + } + for (const agent of Object.keys(DEFAULT_TUI_AGENT_ENV)) { + if (!(agent in existingEnv)) { + existingEnv[agent as keyof typeof DEFAULT_TUI_AGENT_ENV] = {} + } + } return { agentDefaultArgs: existingArgs, agentDefaultEnv: existingEnv, diff --git a/src/shared/tui-agent-permissions.ts b/src/shared/tui-agent-permissions.ts index 596ef7a1a60..c0808b41a3d 100644 --- a/src/shared/tui-agent-permissions.ts +++ b/src/shared/tui-agent-permissions.ts @@ -28,7 +28,8 @@ export const YOLO_TUI_AGENT_ARGS: Partial> = { grok: '--permission-mode bypassPermissions', devin: '--permission-mode bypass', ante: '--yolo', - trae: '--yolo' + trae: '--yolo', + droid: '--auto high' } export const YOLO_TUI_AGENT_ENV: Partial>> = {