1809
1810
resolveSessionConfig(_params: IAgentResolveSessionConfigParams): Promise<ResolveSessionConfigResult> {
1811
>
// Decision B5 (plan section 3.3.5): Claude collapses the platform's
claudeAgent.ts
1812
>
// `autoApprove` × `mode` two-axis approval surface onto a single
1813
>
// `permissionMode` axis matching the SDK's native enum. The
1814
>
// platform `Permissions` key is reused unchanged because the
1815
>
// Claude SDK accepts `allowedTools` / `disallowedTools`
1816
>
// natively. Skipped: AutoApprove, Mode, Isolation, Branch,
1817
>
// BranchNameHint — workbench pickers key off the property names
1818
>
// to decide what to render, so omitting these intentionally
1819
>
// suppresses the default mode/branch UI for Claude sessions.
1820
>
const sessionSchema = createSchema({
1821
>
[ClaudeSessionConfigKey.PermissionMode]: schemaProperty<ClaudePermissionMode>({
1822
>
type: 'string',
1823
>
title: localize('claude.sessionConfig.permissionMode', "Approvals"),
1824
>
description: localize('claude.sessionConfig.permissionModeDescription', "How Claude handles tool approvals."),
1825
>
enum: ['default', 'acceptEdits', 'plan', 'auto', 'bypassPermissions'],
1826
>
enumLabels: [
1827
>
localize('claude.sessionConfig.permissionMode.default', "Ask Before Edits"),
1828
>
localize('claude.sessionConfig.permissionMode.acceptEdits', "Edit Automatically"),
1829
>
localize('claude.sessionConfig.permissionMode.plan', "Plan Mode"),
1830
>
localize('claude.sessionConfig.permissionMode.auto', "Auto Mode"),
1831
>
localize('claude.sessionConfig.permissionMode.bypassPermissions', "Bypass Permissions"),
1832
>
],
1833
>
enumDescriptions: [
1834
>
localize('claude.sessionConfig.permissionMode.defaultDescription', "Claude asks before editing files."),
1835
>
localize('claude.sessionConfig.permissionMode.acceptEditsDescription', "Claude edits files without asking, and asks before using other tools."),
1836
>
localize('claude.sessionConfig.permissionMode.planDescription', "Claude creates a plan before making changes."),
1837
>
localize('claude.sessionConfig.permissionMode.autoDescription', "Claude decides whether to ask for each tool operation."),
1838
>
localize('claude.sessionConfig.permissionMode.bypassPermissionsDescription', "Claude runs all tools without asking."),
1839
>
],
1840
>
default: 'default',
1841
>
sessionMutable: true,
1842
>
}),
1843
>
[SessionConfigKey.Permissions]: platformSessionSchema.definition[SessionConfigKey.Permissions],
1844
>
});
1845
>
1846
>
const values = sessionSchema.validateOrDefault(_params.config, {
1847
>
[ClaudeSessionConfigKey.PermissionMode]: 'default' satisfies ClaudePermissionMode,
1848
>
// Permissions intentionally omitted from defaults — leave
1849
>
// unset so auto-approval falls through to the host-level
1850
>
// default, materializing on the session only once the user
1851
>
// approves a tool "in this Session".
1852
>
});
1853
>
1854
>
return Promise.resolve({
1855
>
schema: sessionSchema.toProtocol(),
1856
>
values,
1857
>
});
1858
>
}
1859
1860
sessionConfigCompletions(_params: IAgentSessionConfigCompletionsParams): Promise<SessionConfigCompletionsResult> {