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.

Issue brief · July 23, 2026 · NousResearch/hermes-agent · Issue #67781

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

SignalWhat to inspectSafe review response
Reset finalizationWhether the daily reset writes a complete, durable expiry and end markerVerify all terminal fields atomically before the session becomes eligible for recovery.
Stale-route recoveryWhether reopen_session() can clear or bypass the terminal stateReject recovery when any finalized-session marker is present, even if another field is incomplete.
Context resurrectionWhether the old transcript is restored after the scheduled resetCompare session identity, history length, and message ownership against a clean post-reset control.
Cost and activity driftWhether a supposedly closed session continues making calls or consuming tokensMonitor API calls, token use, and spend after reset, with alerts for unexpected continuation.
Message associationWhether new Telegram messages attach to stale contextCheck route ownership and user/session mapping before accepting recovered history.

Reproduction and recovery protocol

  1. Use a disposable Telegram-compatible test fixture with synthetic history and an isolated cost ledger.
  2. Finalize the session through the daily-reset path and record every terminal field, route marker, and session identifier.
  3. Trigger stale-route recovery and compare terminal state, restored transcript, message association, API activity, and token counters.
  4. Confirm that a finalized session cannot be reopened because of a missing or null companion marker.
  5. 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.