Feature Request: Session Resume Deep Link (goose://resume/<session-id>) for Workspace Save/Restore
#9187 opened on May 13, 2026
Description
Feature Request: Session Resume Deep Link (goose://resume/<session-id>)
Problem
When you close Goose (e.g., to restart for permission changes, updates, or end of day), there's no way to programmatically reopen the specific set of sessions you had active. You're left scrolling through the sidebar history trying to remember which conversations were in progress.
This is especially painful for power users who keep multiple Goose windows open simultaneously — each focused on a different workstream (e.g., one for a data analysis, one for a code review, one for a product spec).
Proposed Solution
Add a goose://resume/<session-id> deep link that:
- Opens a new Goose window (or reuses an existing one)
- Navigates directly to the specified session, resuming it as if the user had clicked it in the sidebar
This is the missing piece that would enable workspace save/restore — saving a named set of session IDs and reopening them all at once after a restart.
Current State
- Sessions are already persisted in SQLite (
~/.local/share/goose/sessions/sessions.db) with stable IDs - The desktop app already supports
goose://protocol handling forbot,recipe,extension, andsessions(shared) hostnames - The React router already supports
?resumeSessionId=<id>for internal navigation - The
second-instancehandler already processesgoose://URLs from the command line
So the implementation should be straightforward — add a resume hostname handler that creates a new BrowserWindow navigated to /pair?resumeSessionId=<id>.
Use Cases
- Daily workspace restore — Close Goose at EOD, reopen all your active conversations the next morning
- Restart recovery — Grant a new permission (e.g., Full Disk Access), restart Goose, restore your windows
- Context switching — Save workspaces by project ("upmarket-card", "oncall", "data-analysis") and switch between them
- Scripting/automation — Shell scripts or tools that open specific sessions programmatically
Workaround
I built a CLI wrapper (goose-workspace) that saves/restores session ID sets and opens N Goose windows, but the restore step requires the user to manually click each session in the sidebar since there's no deep link to target a specific session.
Additional Context
The implementation in main.ts would look roughly like:
} else if (parsedUrl.hostname === 'resume') {
const sessionId = parsedUrl.pathname.replace(/^\//, '');
if (sessionId) {
await createChat(app, {
dir: openDir || undefined,
resumeSessionId: sessionId,
});
}
}
With a corresponding update to createChat to accept and pass through resumeSessionId as a URL parameter.