Skip to content

fix(terminal): preserve partial output when command times out#3868

Merged
teknium1 merged 1 commit intomainfrom
hermes/hermes-b2abefdf
Mar 30, 2026
Merged

fix(terminal): preserve partial output when command times out#3868
teknium1 merged 1 commit intomainfrom
hermes/hermes-b2abefdf

Conversation

@teknium1
Copy link
Copy Markdown
Contributor

When a command timed out in _execute_oneshot, all captured output was discarded — the agent only saw Command timed out after Xs with zero context about what happened. For long builds or test runs, this meant no way to tell which tests passed or where it failed.

The interrupt path (user sends a new message) already preserves partial output. The timeout path wasn't doing the same thing.

E2E verified:

  • echo line1 && echo line2 && sleep 30 (timeout=2) → all lines captured + timeout marker ✅
  • sleep 30 (timeout=1) → clean timeout message, no leading newline ✅
  • 50-line output + sleep → all lines preserved + timeout marker ✅

Includes 2 regression tests from the original PR.

Salvaged from PR #3286 by @binhnt92 with authorship preserved.

When a command timed out, all captured output was discarded — the agent
only saw 'Command timed out after Xs' with zero context. Now returns
the buffered output followed by a timeout marker, matching the existing
interrupt path behavior.

Salvaged from PR #3286 by @binhnt92.
@github-actions
Copy link
Copy Markdown

⚠️ Supply Chain Risk Detected

This PR contains patterns commonly associated with supply chain attacks. This does not mean the PR is malicious — but these patterns require careful human review before merging.

⚠️ WARNING: Install hook files modified

These files can execute code during package installation or interpreter startup.

Files:

hermes_cli/setup.py

Automated scan triggered by supply-chain-audit. If this is a false positive, a maintainer can approve after manual review.

@teknium1 teknium1 merged commit b4ceb54 into main Mar 30, 2026
2 of 3 checks passed
itsXactlY pushed a commit to itsXactlY/hermes-agent that referenced this pull request Mar 30, 2026
…search#3868)

When a command timed out, all captured output was discarded — the agent
only saw 'Command timed out after Xs' with zero context. Now returns
the buffered output followed by a timeout marker, matching the existing
interrupt path behavior.

Salvaged from PR NousResearch#3286 by @binhnt92.

Co-authored-by: nguyen binh <binhnt92@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

2 participants