From aa94beac54f46fc9982a210b3a796568f4cd2ead Mon Sep 17 00:00:00 2001 From: Christof Marti Date: Wed, 2 Sep 2026 09:58:42 +0200 Subject: [PATCH] automations: apply Assisted permissions for Autopilot Translate the legacy Automations Autopilot permission value at the Agent Host protocol boundary so native automation sessions use Assisted permissions.\n\nFixes #333723\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../providers/agentHost/browser/agentHostAutomationStore.ts | 3 ++- .../agentHost/test/browser/agentHostAutomationStore.test.ts | 3 +++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/vs/sessions/contrib/providers/agentHost/browser/agentHostAutomationStore.ts b/src/vs/sessions/contrib/providers/agentHost/browser/agentHostAutomationStore.ts index a62240a1737306..9358174e3acbc6 100644 --- a/src/vs/sessions/contrib/providers/agentHost/browser/agentHostAutomationStore.ts +++ b/src/vs/sessions/contrib/providers/agentHost/browser/agentHostAutomationStore.ts @@ -25,6 +25,7 @@ import { ITelemetryService } from '../../../../../platform/telemetry/common/tele import type { AutomationRunTrigger, AutomationTarget, IAutomationDescriptor, IAutomationRun, IAutomationSchedule } from '../../../../../workbench/contrib/chat/common/automations/automation.js'; import { AutomationActiveRunError, type AutomationMutationGuard, type IAutomationRunClaim, type ICreateAutomationOptions, type IGuardedAutomationUpdateResult, isAutomationActiveRunError, serializeAutomationEditableState, type IUpdateAutomationOptions, type IUpdateAutomationRunOptions } from '../../../../../workbench/contrib/chat/common/automations/automationService.js'; import { publishAutomationMigration } from '../../../../../workbench/contrib/chat/common/automations/automationTelemetry.js'; +import { ChatPermissionLevel } from '../../../../../workbench/contrib/chat/common/constants.js'; import type { IAutomation, IAutomationSnapshotImportResult, IGuardedAutomationSnapshotRemovalResult, ISessionsProviderAutomations } from '../../../../services/sessions/common/sessionsProvider.js'; import { IAutomationStorageService } from '../../../automations/common/automationStorageService.js'; @@ -833,7 +834,7 @@ export class AgentHostAutomationStore extends Disposable implements ISessionsPro const config = { ...existing?.session.config }; const provider = descriptor.target.sessionTypeId ?? this._providerFromModelId(descriptor.modelId); setOptional(config, SessionConfigKey.Mode, descriptor.mode); - setOptional(config, SessionConfigKey.AutoApprove, descriptor.permissionLevel); + setOptional(config, SessionConfigKey.AutoApprove, descriptor.permissionLevel === ChatPermissionLevel.Autopilot ? ChatPermissionLevel.Assisted : descriptor.permissionLevel); if (descriptor.target.kind === 'workspace') { setOptional(config, SessionConfigKey.Isolation, descriptor.target.isolation.kind === 'default' ? undefined : descriptor.target.isolation.kind); setOptional(config, SessionConfigKey.Branch, descriptor.target.isolation.kind === 'worktree' ? descriptor.target.isolation.branch : undefined); diff --git a/src/vs/sessions/contrib/providers/agentHost/test/browser/agentHostAutomationStore.test.ts b/src/vs/sessions/contrib/providers/agentHost/test/browser/agentHostAutomationStore.test.ts index b355573ab8cd58..ef15dc40a8eb5d 100644 --- a/src/vs/sessions/contrib/providers/agentHost/test/browser/agentHostAutomationStore.test.ts +++ b/src/vs/sessions/contrib/providers/agentHost/test/browser/agentHostAutomationStore.test.ts @@ -405,6 +405,7 @@ suite('AgentHostAutomationStore', () => { prompt: 'Review the current changes.', schedule: { interval: 'daily', scheduleHour: 9, scheduleMinute: 30, scheduleDay: 0 }, target: { kind: 'quickChat', providerId: 'local-agent-host', sessionTypeId: 'mock' }, + permissionLevel: 'autopilot', }); const create = connection.dispatched[0].action; const trigger = create.type === ActionType.AutomationCreateRequested ? create.definition.triggers[0] : undefined; @@ -413,6 +414,7 @@ suite('AgentHostAutomationStore', () => { subscribedChannel: connection.subscribedChannel, dispatchChannel: connection.dispatched[0].channel, definitionMeta: create.type === ActionType.AutomationCreateRequested ? create.definition._meta : undefined, + sessionConfig: create.type === ActionType.AutomationCreateRequested ? create.definition.session.config : undefined, triggerExpression: trigger?.kind === AutomationTriggerKind.Schedule ? trigger.schedule.expression : undefined, automation: { name: automation.name, @@ -425,6 +427,7 @@ suite('AgentHostAutomationStore', () => { subscribedChannel: URI.parse(AUTOMATION_CATALOG_URI).toString(), dispatchChannel: AUTOMATION_CATALOG_URI, definitionMeta: undefined, + sessionConfig: { autoApprove: 'assisted' }, triggerExpression: '30 9 * * *', automation: { name: 'Review changes',