Symptom
A local conversation answers exactly one turn, then later messages stay queued and never run. The gateway log prints WARNING gateway.session_authority: Session local-<id> paused: storage_unavailable 96 to 180 ms after response ready.
Evidence what you'll see
session_admissionsrows for those messages sit atstatus='queued'withgenerationNULL, so they were never claimed.- Restarting the gateway buys exactly one more turn per conversation because it clears
authority.sessionsand the first claim takes thelive is Nonebranch. PRAGMA quick_checkisok. Replayingclaim_session_input()against a copy of the database succeeds.- On the first failing claim,
live.source.to_dict()includesmessage_idand the receipt source omits it. The two dicts differ only by that field.
Why it happens
restore_local_session() compares live.source.to_dict() != source.to_dict(). message_id is a per-message field. local_source() rebuilds the receipt source without a message, and SessionSource.to_dict() omits a None message_id, so the comparison cannot match after the first turn. The raise is named storage_unavailable even though storage is fine.
Affected versions
Hermes v0.22.4 (4d04303818b), macOS arm64, local TUI sessions through a shared launchd-managed gateway, Python 3.14.7. The recovery file is unchanged on v0.22.5.
Fix steps
0 of 2 done
Your check marks stay in this browser only.
How to check it worked
- Consecutive messages on one local session run (
runtime_generation1 then 2 then 3) with no leftoverqueuedrows and nopaused: storage_unavailableafter a completed turn.
If it still fails
- A comment tracks this under issue #134889 as local sessions stalling after one turn. Issue #140113 strips only
profilebefore retry, somessage_idstill differs. - The linked issue does not give a one-off command that clears the pause besides restarting the gateway, which restores only the next first turn.
Sources and credit
Summarized in our own words from these public reports. Credit goes to their authors.
Provided as is, without warranty. Try changes in a non-production environment and back up first. Security-related steps: verify against the official docs. Terms · Request removal or attribution change
Hit an error we don't cover? Submit it