fix: resolve stale output race in session send --wait and session output#448
Open
Abeansits wants to merge 1 commit intoasheshgoplani:mainfrom
Open
fix: resolve stale output race in session send --wait and session output#448Abeansits wants to merge 1 commit intoasheshgoplani:mainfrom
Abeansits wants to merge 1 commit intoasheshgoplani:mainfrom
Conversation
The CLI detected agent completion via the terminal UI (spinner/prompt) but read responses from the JSONL file, which may not have been flushed yet — returning the previous response instead of the current one. Two fixes: - waitForFreshOutput: after status-based completion detection, poll the JSONL until a response with a timestamp within 2s of send time appears (5s timeout, 250ms poll, graceful fallback to stale on timeout). - Refresh ClaudeSessionID from tmux env in handleSessionOutput before reading, matching the existing refresh in handleSessionSend. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
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.
Summary
session output -qandsession send --wait -qreturn the previous assistant response instead of the current oneFix
waitForFreshOutput()— after status-based completion detection, polls the JSONL until a response with a timestamp within 2 seconds of send time appears (handles clock skew and second-precision rounding). 5-second timeout with 250ms poll interval; gracefully falls back to the best available response on timeout.Session ID refresh in
handleSessionOutput— adds the sameGetSessionIDFromTmux()refresh thathandleSessionSendalready has, closing a stale-ID gap where/clearor PostStartSync timeout could cause reads from an old JSONL file.Test plan
cmd/agent-decktest suite passes (38s)🤖 Generated with Claude Code