diff --git a/packages/ui/src/components/sections/agents/AgentsPage.tsx b/packages/ui/src/components/sections/agents/AgentsPage.tsx index 6db27c18..01c30f4b 100644 --- a/packages/ui/src/components/sections/agents/AgentsPage.tsx +++ b/packages/ui/src/components/sections/agents/AgentsPage.tsx @@ -624,7 +624,7 @@ export const AgentsPage: React.FC = () => { const permissionConfig = buildPermissionConfigWithGlobal(globalPermission, permissionRules); const config: AgentConfig = { name: agentName, - description: description.trim() || undefined, + ...(description.trim() ? { description: description.trim() } : {}), mode, model: trimmedModel === '' ? null : trimmedModel, variant: trimmedVariant === '' ? null : trimmedVariant || undefined, @@ -632,7 +632,7 @@ export const AgentsPage: React.FC = () => { top_p: topP ?? null, prompt: trimmedPrompt || (isNewAgent ? undefined : null), permission: permissionConfig, - scope: isNewAgent ? draftScope : undefined, + ...(isNewAgent && draftScope ? { scope: draftScope } : {}), }; let result: AgentMutationResult; diff --git a/packages/vscode/src/opencodeConfig.ts b/packages/vscode/src/opencodeConfig.ts index 8478e1ab..79a7455d 100644 --- a/packages/vscode/src/opencodeConfig.ts +++ b/packages/vscode/src/opencodeConfig.ts @@ -1666,6 +1666,9 @@ export const updateAgent = (agentName: string, updates: Record, const creatingNewMd = isBuiltinOverride; for (const [field, value] of Object.entries(updates || {})) { + // Skip undefined values — they would overwrite existing frontmatter fields with nothing + if (value === undefined) continue; + if (field === 'prompt') { if (value === null) { if (mdExists || creatingNewMd) { diff --git a/packages/web/server/lib/opencode/agents.js b/packages/web/server/lib/opencode/agents.js index d2acff89..9dd85052 100644 --- a/packages/web/server/lib/opencode/agents.js +++ b/packages/web/server/lib/opencode/agents.js @@ -451,6 +451,9 @@ function updateAgent(agentName, updates, workingDirectory) { const creatingNewMd = isBuiltinOverride; for (const [field, value] of Object.entries(updates)) { + // Skip undefined values — they would overwrite existing frontmatter fields with nothing + if (value === undefined) continue; + if (field === 'prompt') { if (value === null) { if (mdExists || creatingNewMd) {