Summary
On the desktop app, a message queued/composed for one busy session was delivered to a different, unrelated session — the one that had most recently gone idle/focused. The user got no indication it landed in the wrong thread; the wrong session executed the message with full tool access. This has happened to this user multiple times ("when I have something queued in one thread, it will sometimes post in an unrelated thread").
Environment
- Hermes Agent
0.18.2 (git install), desktop app 0.0.1 (Hermes.app)
- macOS 26.5.2 (build 25F84)
- Platform:
desktop (both deliveries tagged platform=desktop in agent.log)
- Model: claude-fable-5 / anthropic
Evidence (from ~/.hermes/logs/agent.log and state.db)
The user composed a message intended for a long-running work session (20260708_151656_007b80, 369 messages, actively mid-task). Instead it was delivered to an unrelated session (20260709_113746_44b749, a config-discussion thread) that had gone idle ~2 minutes earlier:
2026-07-09 11:46:24,927 INFO [20260709_113746_44b749] agent.turn_context: conversation turn:
session=20260709_113746_44b749 model=claude-fable-5 provider=anthropic platform=desktop
history=27 msg='you can probably look in posthog too, to find evidence of where they look, and w...'
2026-07-09 11:48:19,302 INFO [20260708_151656_007b80] agent.turn_context: conversation turn:
session=20260708_151656_007b80 model=claude-fable-5 provider=anthropic platform=desktop
history=369 msg='you can probably look in posthog too, to find evidence of where they look, and w...'
The 11:48:19 delivery is NOT the app self-correcting — it is the user manually re-sending the same message to the correct thread after noticing the misfire. Without that manual catch, the intended session would never have received the message.
Timeline context: the receiving (wrong) session's previous turn completed at ~11:44; the intended session was busy mid-turn when the message was sent at 11:46.
Impact
- Silent cross-thread contamination — the wrong session treats the message as an on-topic instruction and acts on it with full tool access. In this case it burned several minutes of redundant read-only DB/analytics queries; the sharper risk is an approval-shaped message ("yes, go ahead") landing in a session that is waiting to approve something else entirely.
- Silent message loss for the intended thread — the busy session never receives the queued message unless the user notices and re-sends manually.
- No UI indication that delivery went somewhere other than where the user typed it.
Repro shape (not 100% deterministic — "sometimes")
- Have two desktop sessions: A (busy, mid-turn on a long task) and B (idle).
- Type/queue a message in session A while it is working.
- Sometimes the message is delivered as a new turn in session B instead of being queued for A.
Happy to provide additional log context or run a diagnostic build — the misfire recurs often enough for this user that a debug-instrumented repro is feasible.
Summary
On the desktop app, a message queued/composed for one busy session was delivered to a different, unrelated session — the one that had most recently gone idle/focused. The user got no indication it landed in the wrong thread; the wrong session executed the message with full tool access. This has happened to this user multiple times ("when I have something queued in one thread, it will sometimes post in an unrelated thread").
Environment
0.18.2(git install), desktop app0.0.1(Hermes.app)desktop(both deliveries taggedplatform=desktopin agent.log)Evidence (from
~/.hermes/logs/agent.logand state.db)The user composed a message intended for a long-running work session (
20260708_151656_007b80, 369 messages, actively mid-task). Instead it was delivered to an unrelated session (20260709_113746_44b749, a config-discussion thread) that had gone idle ~2 minutes earlier:The 11:48:19 delivery is NOT the app self-correcting — it is the user manually re-sending the same message to the correct thread after noticing the misfire. Without that manual catch, the intended session would never have received the message.
Timeline context: the receiving (wrong) session's previous turn completed at ~11:44; the intended session was busy mid-turn when the message was sent at 11:46.
Impact
Repro shape (not 100% deterministic — "sometimes")
Happy to provide additional log context or run a diagnostic build — the misfire recurs often enough for this user that a debug-instrumented repro is feasible.