hermes - ✅(Solved) Fix [Bug] TUI: models emitting only reasoning tags produce silent/empty assistant replies [2 pull requests, 1 participants]

Official PRs (…)
ON THIS PAGE

Recommended Tools

×6

Utilities matched from this issue’s tags and category — try them while you read without losing context.

GitHub issue graph ai analysis

Paste a GitHub issue URL. We fetch that issue, discover linked issues from bodies/comments/timeline, collect linked pull requests, and produce a structured English report.

The report is written in English Markdown for sharing and archival.

Helpful · Quick feedback

Loading…
GitHub stats
NousResearch/hermes-agent#28755Fetched 2026-05-20 04:02:16
View on GitHub
Comments
0
Participants
1
Timeline
6
Reactions
0
Author
Participants
Timeline (top)
labeled ×3cross-referenced ×2referenced ×1

Root Cause

In recordMessageComplete, after splitting reasoning from text:

  • finalText is empty when the model only emits reasoning-tagged content
  • There is no fallback to surface split.reasoning as the assistant message
  • The thread appears silent even though the model did respond

Fix Action

Fixed

PR fix notes

PR #28756: fix(tui): surface reasoning-only model output as assistant reply

Description (problem / solution / changelog)

Problem

When a model wraps its entire output in reasoning tags (e.g. kimi-k2.6), recordMessageComplete in turnController.ts finds no finalText and the assistant reply renders as empty/silent.

Closes #28755

Fix

Add an else if branch after the finalText check to surface split.reasoning as the assistant message when finalText is empty but reasoning content exists:

} else if (split.reasoning.trim()) {
  // Entire model output wrapped in reasoning tags (e.g. kimi-k2.6).
  // Surface reasoning as the answer so the thread doesn't go silent.
  finalMessages.push({ role: 'assistant', text: split.reasoning.trim() })
}
``

## Testing

- Verified with kimi-k2.6 which emits reasoning-only output
- Thread no longer goes silent; reasoning text surfaces as the assistant reply

## Changed files

- `ui-tui/src/app/turnController.ts` (modified, +4/-0)


---

# PR #9: fix(tui): surface reasoning text when model emits only reasoning tags (#28755)

- Repository: na-navi/hermes-agent
- Author: na-navi
- State: open | merged: False
- Link: https://github.com/na-navi/hermes-agent/pull/9

## Description (problem / solution / changelog)

> **🟢 Merge order: 6 / 12** — small TS fallback, low risk

## Closes #28755 (P2)

### Problem
When a model wraps its entire output in reasoning tags (e.g. kimi-k2.6), `finalText` is empty and the assistant reply renders as silent/empty in the TUI.

### Fix
Fall back to `split.reasoning` when `finalText` is empty but reasoning has content.

### Risk assessment
| Factor | Rating |
|--------|--------|
| Lines changed | 4 |
| New code | 1 else-if branch |
| Side effects | None — only fires when finalText is empty |
| Revert complexity | Trivial |

### Files changed
- `ui-tui/src/app/turnController.ts` (+4)

## Changed files

- `ui-tui/src/app/turnController.ts` (modified, +4/-0)
RAW_BUFFERClick to expand / collapse

Bug

When a model wraps its entire output in reasoning tags (e.g. kimi-k2.6), the TUI's recordMessageComplete in turnController.ts finds no finalText and the assistant reply renders as empty/silent.

Root Cause

In recordMessageComplete, after splitting reasoning from text:

  • finalText is empty when the model only emits reasoning-tagged content
  • There is no fallback to surface split.reasoning as the assistant message
  • The thread appears silent even though the model did respond

Reproduction

  1. Configure a model that emits reasoning-only output (e.g. kimi-k2.6)
  2. Send a prompt
  3. Observe empty/silent assistant reply in the TUI

Expected

When finalText is empty but split.reasoning has content, surface the reasoning text as the assistant message so the thread doesn't go silent.

Proposed Fix

Add an else if branch after the finalText check:

} else if (split.reasoning.trim()) {
  // Entire model output wrapped in reasoning tags (e.g. kimi-k2.6).
  // Surface reasoning as the answer so the thread doesn't go silent.
  finalMessages.push({ role: 'assistant', text: split.reasoning.trim() })
}
``"

Vote matrix · Quick signals

Works
Did the solution work? Tap to confirm.
Easy Fix
Was it a quick fix?
Time Saver
Did it save you time?
Blocking
Was it severely blocking?
Common Issue
Are others likely hitting this too?
Flaky / Intermittent
Is it intermittent?
Verified / Reproducible
Can you reproduce it reliably?
Loading…

Still need to ship something?

×6

Another batch ranked right after the header list — different links, same matching logic.

Back to top recommendations

TRENDING

hermes - ✅(Solved) Fix [Bug] TUI: models emitting only reasoning tags produce silent/empty assistant replies [2 pull requests, 1 participants]