Repository navigation
Conversation
Harness-Claim: true Agent: switchboard-dev Host: ANCHOR Base-Ref: origin/main Base-SHA: e0f144b Claimed-At: 2026-11-07T17:26:54.967654Z Nonce: 7a26dddc72e719b3
…#1020) On exit the CLI may fork the session into a background job. The handoff took the terminal's exit to mean the conversation was free and respawned the old id, so two copies ran with the same crons. Adopt a new continuation, refuse a respawn when one is live or unknown, and do not bring such a job back at restore.
… out Restore still respawns dead working, done and running jobs unless a live continuation exists; a dead blocked job waits for a Respawn click that now works. An unreadable or deleted continuation no longer refuses forever, the check skips the job itself, and the handoff checks continuations before typing /exit.
…record from respawning A conversation already running in the background is refused instead of adopted; an unterminated continued-in record no longer counts as proof, and dead failed jobs restore automatically like done and running ones.
…urce after adopting its fork A continued-in record cut before its type tag no longer counts as proof that no continuation exists; adopting a fork after the exit timeout now stops the old CLI; concurrent respawns of one job run once.
A torn user or assistant line, whose first key is not type, no longer counts as a possible continuation; a joining respawn with different parameters runs its own check.
A restore or click that overlaps a respawn which already succeeded takes its result instead of respawning again while the daemon has not yet published the new worker.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #1020.
Relaunching a background conversation could start a second copy. The CLI's
/exitforks the session (continuedInSessionId), then Switchboard respawned the old id beside the fork./exit, the handoff adopts the fork the CLI created, and stops the old CLI if it outlives the exit timeout. If the conversation already runs in the background, the tab is left untouched and points to the sidebar.continued-inrecord still being written counts as uncertain, so a respawn waits or refuses instead of trusting it.type, and the CLI writes continuation records type-first (checked against CLI 2.1.302).Follow-up, not in this PR: a manual Respawn clicked within the seconds after a restore's
claude respawnreturns, before the daemon publishes the new worker, can still respawn again.