hermes - 💡(How to fix) Fix [Feature]: Automatic heartbeat/progress notifications for long-running tools [2 comments, 2 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#14425Fetched 2026-04-24 06:17:22
View on GitHub
Comments
2
Participants
2
Timeline
6
Reactions
0
Author
Participants
Timeline (top)
labeled ×4commented ×2

Fix Action

Fix / Workaround

Current workarounds (all inadequate)

RAW_BUFFERClick to expand / collapse

Problem

When Hermes runs long tasks (e.g., web search, code execution, file operations), the user sees complete silence for minutes with zero feedback. This happens on both CLI and gateway platforms (Telegram, Discord, Feishu, etc.).

Specific pain points

  1. No heartbeat for long tool executionterminal() calls with 300s timeout show nothing until completion or timeout
  2. No progress for multi-step tasksdelegate_task, browser_navigate, web_extract can run for minutes with no updates
  3. Gateway users can't see CLI spinner — The activity feed and KawaiiSpinner only work in CLI, Telegram/Discord/Feishu users get nothing
  4. Users think the bot crashed — Common reaction is to send duplicate messages or /restart

Real examples

  • yt-dlp download + Whisper transcription: 2-5 minutes of silence
  • browser_navigate to heavy pages: 30-90s silence
  • delegate_task with subagents: 5-10 minutes silence
  • web_extract on large pages: 60s+ silence

Current workarounds (all inadequate)

  • pty=true — Only works in CLI, not gateway
  • background=true + manual process(action="poll") — User has to actively poll, not automatic
  • Tool-level flush=True — Doesn't help if the framework doesn't relay progress
  • /stop and retry — User gives up and restarts

Proposed solution

Add automatic heartbeat/progress notifications for long-running tools:

Option A: Timer-based heartbeat (minimal change)

  • After tool runs >10s, send "⏳ Still running... (15s elapsed)" every 10-15s
  • Works across CLI and all gateway platforms
  • Configurable threshold via display.heartbeat_threshold

Option B: Tool-native progress streaming

  • terminal() pipes subprocess stdout/stderr to user in real-time
  • browser_vision() reports page load progress
  • delegate_task() reports subagent milestones
  • Larger change but better UX

Option C: Hybrid approach

  • Phase 1: Implement Option A (quick win)
  • Phase 2: Add tool-native streaming later

Environment

  • Hermes Agent: v0.9.0+
  • Platforms: CLI, Telegram, Discord, Feishu/Lark, Slack
  • Models: All (provider-agnostic issue)

Related issues

  • #6176 — Streaming Terminal Output (feature request, still open)
  • #7740 — Vision broken on fresh install (auxiliary timeout too low, related to silent failures)
  • #9400 — Empty response after tool calls silently abandons tasks

extent analysis

TL;DR

Implementing automatic heartbeat/progress notifications, such as a timer-based heartbeat, can help alleviate the issue of silence during long-running tasks in Hermes.

Guidance

  • Consider Option A: Timer-based heartbeat as a minimal change to send periodic updates ("⏳ Still running... (15s elapsed)") every 10-15s for tasks running over 10s.
  • Evaluate the feasibility of Option B: Tool-native progress streaming, which could provide more detailed progress updates but requires larger changes.
  • Assess the hybrid approach (Option C) for a phased implementation, starting with the quicker win of Option A.
  • Review related issues (#6176, #7740, #9400) for potential connections to the silent failures and streaming output.

Example

No code snippet is provided due to the high-level nature of the proposed solutions, but an example of how the timer-based heartbeat could be implemented might involve setting up a timer that triggers a message send every 10-15 seconds after a task has been running for more than 10 seconds.

Notes

The choice between the proposed options (A, B, or the hybrid approach C) depends on the development priorities, the complexity of implementing tool-native progress streaming, and the desired user experience. The solutions aim to address the provider-agnostic issue across various platforms (CLI, Telegram, Discord, Feishu/Lark, Slack) and models.

Recommendation

Apply the workaround by implementing Option A: Timer-based heartbeat, as it offers a quick and minimal change to provide immediate feedback to users, improving their experience during long-running tasks.

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 - 💡(How to fix) Fix [Feature]: Automatic heartbeat/progress notifications for long-running tools [2 comments, 2 participants]