From 6cf195bbbd89d5b106c0f744b80dfa67c8d1fb8d Mon Sep 17 00:00:00 2001 From: Prateek Date: Fri, 20 Feb 2026 19:32:05 +0530 Subject: [PATCH] fix: serialize model/permissions/restoredAt fields in metadata read/write The session-manager already writes model, permissions, and restoredAt to metadata during spawn() and restore(), but writeMetadata() and readMetadata() silently dropped these fields during serialization. This caused session.metadata?.["model"] and session.metadata?.["permissions"] to always be undefined when reading back from disk, preventing restored sessions from preserving their original agent configuration. Co-Authored-By: Claude Opus 4.6 --- packages/core/src/metadata.ts | 6 ++++++ packages/core/src/types.ts | 2 ++ 2 files changed, 8 insertions(+) diff --git a/packages/core/src/metadata.ts b/packages/core/src/metadata.ts index 67e5242f1..76f06f9b0 100644 --- a/packages/core/src/metadata.ts +++ b/packages/core/src/metadata.ts @@ -99,6 +99,9 @@ export function readMetadata(dataDir: string, sessionId: SessionId): SessionMeta project: raw["project"], createdAt: raw["createdAt"], runtimeHandle: raw["runtimeHandle"], + permissions: raw["permissions"], + model: raw["model"], + restoredAt: raw["restoredAt"], dashboardPort: raw["dashboardPort"] ? Number(raw["dashboardPort"]) : undefined, terminalWsPort: raw["terminalWsPort"] ? Number(raw["terminalWsPort"]) : undefined, directTerminalWsPort: raw["directTerminalWsPort"] ? Number(raw["directTerminalWsPort"]) : undefined, @@ -141,6 +144,9 @@ export function writeMetadata( if (metadata.project) data["project"] = metadata.project; if (metadata.createdAt) data["createdAt"] = metadata.createdAt; if (metadata.runtimeHandle) data["runtimeHandle"] = metadata.runtimeHandle; + if (metadata.permissions) data["permissions"] = metadata.permissions; + if (metadata.model) data["model"] = metadata.model; + if (metadata.restoredAt) data["restoredAt"] = metadata.restoredAt; if (metadata.dashboardPort !== undefined) data["dashboardPort"] = String(metadata.dashboardPort); if (metadata.terminalWsPort !== undefined) diff --git a/packages/core/src/types.ts b/packages/core/src/types.ts index 6de795c8f..ac1ef1aee 100644 --- a/packages/core/src/types.ts +++ b/packages/core/src/types.ts @@ -965,6 +965,8 @@ export interface SessionMetadata { project?: string; createdAt?: string; runtimeHandle?: string; + permissions?: string; + model?: string; restoredAt?: string; dashboardPort?: number; terminalWsPort?: number;