@@ -7,6 +7,7 @@ import { simpleGit } from "simple-git";
77import Store from "electron-store" ;
88import { exec } from "child_process" ;
99import { promisify } from "util" ;
10+ import { v4 as uuidv4 } from "uuid" ;
1011
1112const execAsync = promisify ( exec ) ;
1213
@@ -25,6 +26,7 @@ interface PersistedSession {
2526 config : SessionConfig ;
2627 worktreePath : string ;
2728 createdAt : number ;
29+ sessionUuid : string ;
2830}
2931
3032let mainWindow : BrowserWindow ;
@@ -182,6 +184,9 @@ ipcMain.on("create-session", async (event, config: SessionConfig) => {
182184 // Create git worktree
183185 const worktreePath = await createWorktree ( config . projectDir , config . parentBranch , sessionNumber ) ;
184186
187+ // Generate UUID for this session
188+ const sessionUuid = uuidv4 ( ) ;
189+
185190 // Create persisted session metadata
186191 const persistedSession : PersistedSession = {
187192 id : sessionId ,
@@ -190,6 +195,7 @@ ipcMain.on("create-session", async (event, config: SessionConfig) => {
190195 config,
191196 worktreePath,
192197 createdAt : Date . now ( ) ,
198+ sessionUuid,
193199 } ;
194200
195201 // Save to store
@@ -235,7 +241,11 @@ ipcMain.on("create-session", async (event, config: SessionConfig) => {
235241
236242 // Auto-run the selected coding agent
237243 if ( config . codingAgent === "claude" ) {
238- const claudeCmd = config . skipPermissions ? "claude --dangerously-skip-permissions\r" : "claude\r" ;
244+ // New session always uses --session-id
245+ const sessionFlag = `--session-id ${ sessionUuid } ` ;
246+ const skipPermissionsFlag = config . skipPermissions ? "--dangerously-skip-permissions" : "" ;
247+ const flags = [ sessionFlag , skipPermissionsFlag ] . filter ( f => f ) . join ( " " ) ;
248+ const claudeCmd = `claude ${ flags } \r` ;
239249 ptyProcess . write ( claudeCmd ) ;
240250 } else if ( config . codingAgent === "codex" ) {
241251 ptyProcess . write ( "codex\r" ) ;
@@ -261,7 +271,11 @@ ipcMain.on("create-session", async (event, config: SessionConfig) => {
261271
262272 // Auto-run the selected coding agent
263273 if ( config . codingAgent === "claude" ) {
264- const claudeCmd = config . skipPermissions ? "claude --dangerously-skip-permissions\r" : "claude\r" ;
274+ // New session always uses --session-id
275+ const sessionFlag = `--session-id ${ sessionUuid } ` ;
276+ const skipPermissionsFlag = config . skipPermissions ? "--dangerously-skip-permissions" : "" ;
277+ const flags = [ sessionFlag , skipPermissionsFlag ] . filter ( f => f ) . join ( " " ) ;
278+ const claudeCmd = `claude ${ flags } \r` ;
265279 ptyProcess . write ( claudeCmd ) ;
266280 } else if ( config . codingAgent === "codex" ) {
267281 ptyProcess . write ( "codex\r" ) ;
@@ -350,7 +364,11 @@ ipcMain.on("reopen-session", (event, sessionId: string) => {
350364 }
351365
352366 if ( session . config . codingAgent === "claude" ) {
353- const claudeCmd = session . config . skipPermissions ? "claude --dangerously-skip-permissions\r" : "claude\r" ;
367+ // Reopened session always uses --resume
368+ const sessionFlag = `--resume ${ session . sessionUuid } ` ;
369+ const skipPermissionsFlag = session . config . skipPermissions ? "--dangerously-skip-permissions" : "" ;
370+ const flags = [ sessionFlag , skipPermissionsFlag ] . filter ( f => f ) . join ( " " ) ;
371+ const claudeCmd = `claude ${ flags } \r` ;
354372 ptyProcess . write ( claudeCmd ) ;
355373 } else if ( session . config . codingAgent === "codex" ) {
356374 ptyProcess . write ( "codex\r" ) ;
0 commit comments