fix(hub): skip redundant set-session-config RPC on resume (#740)

resumeSession already passes permissionMode to spawnSession. The follow-up
applySessionConfig raced session-alive (handler not registered yet) and
returned resume_failed after hub restart.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
HeavyGee
2026-05-31 10:11:10 +08:00
committed by GitHub
co-authored by Cursor
parent c58e8cea9e
commit 3cc03eb9da
3 changed files with 104 additions and 23 deletions
+2 -8
View File
@@ -685,14 +685,8 @@ export class SyncEngine {
return { type: 'error', message: 'Session failed to become active', code: 'resume_failed' }
}
if (preferredPermissionMode !== undefined) {
try {
await this.applySessionConfig(spawnResult.sessionId, { permissionMode: preferredPermissionMode })
} catch (error) {
const message = error instanceof Error ? error.message : 'Failed to restore permission mode'
return { type: 'error', message, code: 'resume_failed' }
}
}
// permissionMode is passed to spawnSession above; do not call set-session-config here.
// session-alive can arrive before the CLI registers that RPC handler, which caused resume_failed.
if (spawnResult.sessionId !== access.sessionId) {
// The old session may have already been merged by the automatic dedup path