NousResearch/hermes-agent

Final message sometimes dropped in streaming with commentary

Cluster 10454. Data as of

Nothing open on GitHub. Fix merged in #10540 on 15 Apr 2026. Check it covers your case.

The short answer

0open issues
0open PRs
4items grouped
Known?
Yes. 4 related items grouped here, 1 issue already closed.
Fix event
A fix was merged to main in PR #10540. Check it covers your case. No release data is tracked.
Tracker
The maintainers' tracker marks this resolved, deciding PR #10540. That is separate from the fix event.
Still open
Nothing open on GitHub.

One issue (in Chinese) reports that the last message in a Feishu conversation is occasionally swallowed. Three similarly titled pull requests concern not suppressing the final response when a commentary message is sent; a link between the issue and these changes is plausible but not confirmed by the titles alone.

Open issues0

No open issues.

Open PRs0

No open pull requests.

Fixes on record

Merged to main. A stamp counts the issues a fix is linked to.

  • #10540 fix(streaming): don't suppress final response when commentary message is sent

    merged to main

    files: gateway/stream_consumer.py

    Show the diff
    • gateway/stream_consumer.py
      @@ -609,12 +609,15 @@ async def _send_commentary(self, text: str) -> bool:
                       content=text,
                       metadata=self.metadata,
                   )
      -            if result.success:
      -                self._already_sent = True
      -                return True
      +            # Note: do NOT set _already_sent = True here.
      +            # Commentary messages are interim status updates (e.g. "Using browser
      +            # tool..."), not the final response. Setting already_sent would cause
      +            # the final response to be incorrectly suppressed when there are
      +            # multiple tool calls. See: https://github.com/NousResearch/hermes-agent/issues/10454
      +            return result.success
               except Exception as e:
                   logger.error("Commentary send error: %s", e)
      -        return False
      +            return False
       
           async def _send_or_edit(self, text: str) -> bool:
               """Send or edit the streaming message.

2 PRs closed without merging

From the close comments: closed without comment 1 · merged via another change 1

  • #10519 fix(streaming): don't suppress final response when commentary message is sent · closed without comment
  • #10530 fix(streaming): don't suppress final response when commentary message is sent · merged via another change → #10540
Closed issues · 1
  • Closed#10454[Bug]: 飞书对话中最后一条消息偶尔会被吞掉
How this cluster was grouped
  • Link evidence (structural links throughout): every member is connected by structural evidence: shared changed files, or a closing/superseded reference.
  • Pairwise link density 0.50: the share of item pairs that carry a link, counting a structural link in full and a relevance-only link at 0.36. 1.00 means every pair is linked.

Pick up a Lab task

Check whether a fix covers the open issues here, with your own agent. Bring back evidence for maintainers.

Open the Lab

At a glance

Merged PRs
#10540
Closed issues
1
Attempts
2 PRs closed without merging
Fix link checked
15 Apr 2026. This confirmation is old and may be out of date (a revert or reopen would not have invalidated it here); re-verify.

For your agent

The same facts, typed.