Bug Description
When the model generates text content alongside tool calls in the same turn (e.g. a conversational response + a
memory/vitals update), the text is captured internally (_last_content_with_tools) and printed to CLI output (┊ 💬
...), but never sent to Telegram.
The only message that reaches Telegram is the final_response from the last turn (after tool execution). If that turn
contains new content (e.g. reasoning), the pre-tool text is silently dropped.
Steps to reproduce:
- Configure a model that tends to write a response and call tools in the same turn (e.g. MiMo, Gemini)
- Chat via Telegram
- Send a message that triggers both a text response and a tool call (e.g. a greeting that also updates vitals)
- Observe: the text response is visible in journalctl logs but not in Telegram
Steps to Reproduce
- Set session_reset: mode: daily in config.yaml
- Use a model that generates text + tool calls in the same turn (e.g. MiMo v2 Pro)
- Chat via Telegram with a prompt that triggers both a conversational response and a tool call (e.g. a greeting that
also updates vitals via MCP)
- Check journalctl logs — the text response appears as ┊ 💬 ...
- Check Telegram — only the post-tool response (e.g. reasoning) is delivered, the pre-tool text is missing
Expected Behavior
Expected: The text generated before tool calls should be included in the Telegram response.
Actual Behavior
The text content generated before tool calls is only visible in CLI/journalctl logs (printed as ┊ 💬 ...) but never
delivered to Telegram. Only the final response after tool execution is sent. If the model produces new content in the
post-tool turn (e.g. reasoning), the pre-tool text is silently dropped.
Affected Component
Agent Core (conversation loop, context compression, memory)
Messaging Platform (if gateway-related)
Telegram
Operating System
Ubuntu 24.04.4 LTS
Python Version
3.13.12
Hermes Version
0.7.0
Relevant Logs / Traceback
Root Cause Analysis (optional)
Relevant code: run_agent.py line ~8169 (_last_content_with_tools) — the fallback at line ~8283 only triggers when the
final response is empty, not when it has content.
Proposed Fix (optional)
No response
Are you willing to submit a PR for this?
Bug Description
When the model generates text content alongside tool calls in the same turn (e.g. a conversational response + a
memory/vitals update), the text is captured internally (_last_content_with_tools) and printed to CLI output (┊ 💬
...), but never sent to Telegram.
The only message that reaches Telegram is the final_response from the last turn (after tool execution). If that turn
contains new content (e.g. reasoning), the pre-tool text is silently dropped.
Steps to reproduce:
Steps to Reproduce
also updates vitals via MCP)
Expected Behavior
Expected: The text generated before tool calls should be included in the Telegram response.
Actual Behavior
The text content generated before tool calls is only visible in CLI/journalctl logs (printed as ┊ 💬 ...) but never
delivered to Telegram. Only the final response after tool execution is sent. If the model produces new content in the
post-tool turn (e.g. reasoning), the pre-tool text is silently dropped.
Affected Component
Agent Core (conversation loop, context compression, memory)
Messaging Platform (if gateway-related)
Telegram
Operating System
Ubuntu 24.04.4 LTS
Python Version
3.13.12
Hermes Version
0.7.0
Relevant Logs / Traceback
Root Cause Analysis (optional)
Relevant code: run_agent.py line ~8169 (_last_content_with_tools) — the fallback at line ~8283 only triggers when the
final response is empty, not when it has content.
Proposed Fix (optional)
No response
Are you willing to submit a PR for this?