RELIABILITY TRACKER · P2 OPEN
Daily Session Reset Resurrected by Stale-Route Recovery · Issue #67781
A source-linked review of a reported Hermes Agent Telegram session-state defect where stale-route recovery can reopen a session finalized by the daily reset and silently restore its old context.
What the report describes
The open report describes a Telegram session finalized by the daily 4 AM reset with expiry_finalized=1 but a missing end_reason. Stale-route recovery through reopen_session() reportedly clears the end marker, allowing the old session to resume with its full history. The report says the session ran for roughly 23 hours, made 206 API calls, accumulated about $12.10 in Sonnet cost, and used approximately 38M cache-read plus 1.5M cache-write tokens. These figures are source-reported and should not be treated as an independent reproduction.
Scope note: This page summarizes a linked open issue and is not an independent reproduction. The P2 label, reported cost, and impact should be evaluated against the affected version, Telegram routing behavior, local session data, and current upstream issue state.
Failure-chain matrix
| Signal | What to inspect | Safe review response |
|---|---|---|
| Reset finalization | Whether the daily reset writes a complete, durable expiry and end marker | Verify all terminal fields atomically before the session becomes eligible for recovery. |
| Stale-route recovery | Whether reopen_session() can clear or bypass the terminal state | Reject recovery when any finalized-session marker is present, even if another field is incomplete. |
| Context resurrection | Whether the old transcript is restored after the scheduled reset | Compare session identity, history length, and message ownership against a clean post-reset control. |
| Cost and activity drift | Whether a supposedly closed session continues making calls or consuming tokens | Monitor API calls, token use, and spend after reset, with alerts for unexpected continuation. |
| Message association | Whether new Telegram messages attach to stale context | Check route ownership and user/session mapping before accepting recovered history. |
Reproduction and recovery protocol
- Use a disposable Telegram-compatible test fixture with synthetic history and an isolated cost ledger.
- Finalize the session through the daily-reset path and record every terminal field, route marker, and session identifier.
- Trigger stale-route recovery and compare terminal state, restored transcript, message association, API activity, and token counters.
- Confirm that a finalized session cannot be reopened because of a missing or null companion marker.
- Retest after remediation with repeated reset and recovery races, then publish only aggregate, non-sensitive evidence.
Source evidence
NousResearch/hermes-agent · Issue #67781
Reported labels include P2, area/sessions, comp/gateway, platform/telegram, needs-repro, and session-state risk markers. Verify current status, affected versions, linked remediation, and local reproduction before publishing a resolution claim.