hermes - 💡(How to fix) Fix Wake-injected user turns: drain unconsumed wake-inbox records on session activation (durability layer) [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#28852Fetched 2026-05-20 03:42:19
View on GitHub
Comments
0
Participants
1
Timeline
4
Reactions
0
Timeline (top)
labeled ×4

Hermes Agent's Smith Crafts active-session wake transport uses a durable wake-inbox before attempting socket delivery. The live socket path can enqueue a wake into the active CLI when a session is present, but accepted wakes that were not delivered because no active session was available need a native drain path on the next session start/activity.

Related local wake-socket work:

  • #28570

Root Cause

The socket path should remain the fast path, but the wake-inbox should be the durability layer. A transient no-active-session state should not require manual replay if the record was accepted and written durably.

RAW_BUFFERClick to expand / collapse

Summary

Hermes Agent's Smith Crafts active-session wake transport uses a durable wake-inbox before attempting socket delivery. The live socket path can enqueue a wake into the active CLI when a session is present, but accepted wakes that were not delivered because no active session was available need a native drain path on the next session start/activity.

Related local wake-socket work:

  • #28570

Desired behavior

  • On runtime/socket startup and interactive session start, scan the Stitch wake-inbox for records with consumed_at:null.
  • Match records to the active wake session id.
  • Sort by emitted_at, falling back to file mtime.
  • Deduplicate by wake_id; suppress unconsumed duplicates when a consumed record with the same wake_id already exists.
  • Enqueue through the same external-user-message helper as the socket fast path.
  • Mark consumed_at only after the model-facing enqueue succeeds.
  • If enqueue fails partway through a batch, leave the failed and remaining records unconsumed for the next attempt.

Why this matters

The socket path should remain the fast path, but the wake-inbox should be the durability layer. A transient no-active-session state should not require manual replay if the record was accepted and written durably.

Local implementation note

Smith Crafts is carrying a protected smith-crafts/live commit that adds drain_wake_inbox(cli) in tools/agent_wake_socket.py, calls it after socket bind and from cli.py session startup, and adds focused pytest coverage for success, dedupe-vs-live-delivery, success-only consumption, and partial-failure retry behavior.

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 Wake-injected user turns: drain unconsumed wake-inbox records on session activation (durability layer) [1 participants]