hermes - ✅(Solved) Fix Gateway should keep auto-title generation failures silent [6 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#23246Fetched 2026-05-11 03:30:20
View on GitHub
Comments
0
Participants
1
Timeline
12
Reactions
0
Author
Participants
Timeline (top)
cross-referenced ×7labeled ×3referenced ×2

Fix Action

Fixed

PR fix notes

PR #23247: fix: keep gateway title failures silent

Description (problem / solution / changelog)

Summary

  • keep gateway fire-and-forget auto-title generation failures out of user-visible warning delivery
  • preserve runtime forwarding for title generation so provider/model selection is unchanged
  • add a gateway regression test that asserts failure_callback is not passed for gateway auto-title dispatch

Closes #23246

Test Plan

  • source /root/.hermes/hermes-agent/venv/bin/activate && pytest -q -n0 tests/gateway/test_fast_command.py tests/agent/test_title_generator.py

Changed files

  • gateway/run.py (modified, +4/-8)
  • tests/gateway/test_fast_command.py (modified, +65/-0)

PR #23276: fix(gateway): keep auto-title failures silent

Description (problem / solution / changelog)

What does this PR do?

Stops gateway turns from surfacing auxiliary auto-title generation failures to end users. Gateway sessions should still attempt background title generation, but a depleted or misconfigured auxiliary provider should not inject warning text into Slack, Telegram, or other platform replies.

This keeps gateway output focused on the actual turn result while preserving background title generation.

Related Issue

Fixes #23246

Type of Change

  • 🐛 Bug fix (non-breaking change that fixes an issue)
  • ✨ New feature (non-breaking change that adds functionality)
  • 🔒 Security fix
  • 📝 Documentation update
  • ✅ Tests (adding or improving test coverage)
  • ♻️ Refactor (no behavior change)
  • 🎯 New skill (bundled or hub)

Changes Made

  • Updated gateway/run.py
  • Stopped forwarding agent._emit_auxiliary_failure into gateway maybe_auto_title(...)
  • Added a regression test in tests/gateway/test_fast_command.py that verifies gateway auto-title calls stay silent even when the agent exposes an auxiliary failure emitter

How to Test

  1. Run uv run --frozen pytest -q -o addopts='' tests/gateway/test_fast_command.py
  2. Send a normal gateway message that produces a final response
  3. Confirm maybe_auto_title(...) still runs but no failure_callback is forwarded into the gateway path

Checklist

Code

  • I've read the Contributing Guide
  • My commit messages follow Conventional Commits (fix(scope):, feat(scope):, etc.)
  • I searched for existing PRs to make sure this isn't a duplicate
  • My PR contains only changes related to this fix/feature (no unrelated commits)
  • I've run pytest tests/ -q and all tests pass
  • I've added tests for my changes (required for bug fixes, strongly encouraged for features)
  • I've tested on my platform: macOS 15 / local gateway test suite

Documentation & Housekeeping

  • I've updated relevant documentation (README, docs/, docstrings) — or N/A
  • I've updated cli-config.yaml.example if I added/changed config keys — or N/A
  • I've updated CONTRIBUTING.md or AGENTS.md if I changed architecture or workflows — or N/A
  • I've considered cross-platform impact (Windows, macOS) per the compatibility guide — or N/A
  • I've updated tool descriptions/schemas if I changed tool behavior — or N/A

Screenshots / Logs

  • uv run --frozen ruff check gateway/run.py tests/gateway/test_fast_command.py
  • uv run --frozen pytest -q -o addopts='' tests/gateway/test_fast_command.py

Changed files

  • gateway/run.py (modified, +0/-8)
  • tests/gateway/test_fast_command.py (modified, +51/-1)

PR #23302: fix: 4 small surgical bugs — kanban delete alias, gateway title noise, bg truncation, cprint coroutine

Description (problem / solution / changelog)

Four independent one-area fixes, each with its own root cause analysis.

Fix 1 — kanban boards delete alias archives instead of deletes (#23139)

The delete subcommand alias shares _cmd_boards_rm but the --delete flag belongs only to the rm subparser. getattr(args, 'delete', False) therefore returns False when the alias is used, so remove_board(archive=True) runs — archiving the board instead of deleting it.

Fix: detect boards_action == 'delete' and treat it as force_delete=True. Test added.

Fix 2 — Gateway auto-title failure leaks as user-visible message (#23246)

When background title generation fails (e.g. HTTP 401 on auxiliary provider), _emit_auxiliary_failure routes the error through _emit_warning, which delivers it as a visible ⚠ message in Slack/Telegram/WhatsApp. Not actionable to the end user.

Fix: replace the failure_callback in Gateway mode with a debug-log-only lambda.

Fix 3 — Background process notification starts mid-line when output is truncated (#23284)

session.output_buffer[-2000:] truncates at an arbitrary byte offset, potentially starting the notification mid-line.

Fix: snap to the next newline boundary after the cut and prepend [… output truncated — showing last N chars] when content was dropped.

Fix 4 — _cprint() silently drops output from background threads (#23185 Bug A)

run_in_terminal() returns a coroutine (Future). Passing it bare to call_soon_threadsafe schedules the callback but never awaits the coroutine — Python garbage-collects it with RuntimeWarning, silently dropping the output.

Fix: wrap with asyncio.ensure_future() so the coroutine is properly scheduled on the running loop.

Changed files

  • cli.py (modified, +18/-5)
  • gateway/run.py (modified, +23/-8)
  • hermes_cli/kanban.py (modified, +6/-1)
  • scripts/release.py (modified, +1/-0)
  • tests/hermes_cli/test_kanban_boards.py (modified, +33/-0)
  • tools/process_registry.py (modified, +1/-1)

PR #23309: fix(gateway): keep auto-title generation failures silent in messaging platforms

Description (problem / solution / changelog)

Summary

  • Gateway auto-title generation failures were being surfaced as user-visible chat messages (e.g. ⚠ Auxiliary title generation failed: HTTP 401: User not found.) in Slack, Telegram, and other messaging platforms
  • Changed the failure_callback from _emit_auxiliary_failure to None in gateway/run.py so these fire-and-forget housekeeping errors stay in gateway.log only (already logged at WARNING level)
  • CLI behavior unchanged — it still surfaces auxiliary failures to the user

Why

Auto-title generation is a background, non-blocking task that runs after the first exchange. When it fails (e.g. auxiliary provider auth error, billing issue), the failure is not actionable to the end user in a messaging thread. Operators can still diagnose issues via gateway.log where the WARNING-level log entry already exists.

Fixes #23246.

Changed files

  • cli.py (modified, +27/-4)
  • gateway/run.py (modified, +6/-9)
  • hermes_cli/kanban_db.py (modified, +3/-3)

PR #23339: fix(gateway): warn when config contains unknown platform names

Description (problem / solution / changelog)

Unknown platform keys in config.yaml (or gateway.json) were silently ignored, making typos like "telegarm:" invisible to users. This adds a warning log so operators can spot misconfiguration immediately.

Fixes #23246 (related UX/debuggability issue).

Changed files

  • gateway/config.py (modified, +2/-2)
  • scripts/release.py (modified, +1/-0)

PR #23340: fix(gateway,cli): keep auto-title generation failures silent

Description (problem / solution / changelog)

Removes the user-visible failure callback wiring for auto-title generation. Auxiliary LLM errors (e.g., HTTP 401/402) now surface only in agent.log at WARNING level, not as chat messages that clutter the user conversation.

Closes #23246

Changed files

  • cli.py (modified, +3/-8)
  • gateway/run.py (modified, +3/-8)
  • scripts/release.py (modified, +1/-0)
RAW_BUFFERClick to expand / collapse

Problem

Gateway replies can include a background auxiliary warning after the main response has completed, for example:

⚠ Auxiliary title generation failed: HTTP 401: User not found.

This happened when the non-blocking auto-title generation side task failed in Slack. The title generation failure is not actionable to the end user in the thread and should not be delivered as a chat response.

Expected

Gateway auto-title failures should remain logged for operators/developers, but should not be surfaced as user-visible Slack/gateway messages.

Notes

The CLI can still surface auxiliary title-generation failures if desired; the issue is specifically gateway fire-and-forget title generation after a completed response.

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