RELIABILITY TRACKER · P1 OPEN

Cold Resume Transcript Duplication via Session Commands · Issue #68454

A source-linked review of a reported Hermes Agent session-state defect where a cold resume followed immediately by /new, /resume, or /branch can silently duplicate the restored transcript in SQLite.

Issue brief · July 21, 2026 · NousResearch/hermes-agent · Issue #68454

What the report describes

The open report describes a cold-resume path that restores persisted messages without the usual persisted-row marker. If a user immediately runs /new, /resume, or /branch before sending a new message, those command paths reportedly flush the restored history without passing conversation_history=. The rows are treated as new and inserted again into SQLite, silently duplicating the transcript. The issue identifies merged PR #68205 as related to a different call path while these command sites remain affected.

Scope note: This page summarizes a linked open issue and is not an independent reproduction. The P1 label and reported impact should be evaluated against the affected version, local session workflow, and current upstream issue state.

Failure-chain matrix

SignalWhat to inspectSafe review response
Cold-resume preconditionResume a persisted session, then issue a session command before adding a new messageTreat the restored transcript as persisted state until durable row identity is verified.
Persisted-row identityWhether restored rows retain the marker or metadata used to prevent re-insertionTrace the restored message representation through every affected command path.
Command-specific flushHow /new, /resume, and /branch pass or omit conversation history during persistenceExercise each command separately and compare writes against the expected transcript count.
Silent corruption riskWhether the CLI reports success while SQLite receives duplicate messagesCheck durable transcript counts and identifiers, not only command output or process health.
Related-fix boundaryWhether a merged fix addresses this exact command route or only a sibling pathVerify the affected call sites directly before marking the issue resolved.

Reproduction and recovery protocol

  1. Use a disposable test database and a known persisted transcript with stable message identifiers.
  2. Cold-resume the session, then run /new, /resume, and /branch in separate trials before submitting any new message.
  3. Compare pre- and post-command SQLite row counts, message identifiers, ordering, and conversation ownership.
  4. Capture non-sensitive logs or traces that show whether conversation_history or equivalent persisted-state context is passed.
  5. Retest after any upstream change and distinguish a verified command-path fix from a fix limited to a sibling flow.

Source evidence

NousResearch/hermes-agent · Issue #68454

Reported labels include P1, area/sessions, bug, comp/cli, sweeper:risk-session-state, and type/bug. Verify current status, affected versions, and remediation before relying on a session-history migration or recovery workflow.