# NousResearch/hermes-agent · WAL stability and MCP session crash fixes

## Open now

- Nothing open on GitHub.

These issues address two related bugs: transient cron handles rotating the WAL generation and causing inode conflicts, and MCP tool refresh crashing when the server session is None during restart. Fixes include read-only state.db access for read paths and guarding dynamic tool refresh against missing sessions.

## TL;DR

- 6 member(s): 0 open issue(s), 1 closed issue(s), 0 open PR(s), 3 merged PR(s), 2 PR(s) closed without merging.
- A fix was merged to main in PR #110544. Verify it addresses your case.
- **Recommended:** read PR #110544 (and any competing PRs below) before filing. Confirm the merged change covers your symptom.

## Maintainer resolution verdict

- Internal-tracker verdict over this cluster's issue members: `resolved` · deciding PR(s): `pr-114413`. This is distinct from the fix status above. Weigh it yourself.

## How this cluster was grouped

- Link evidence (`STRUCTURAL_SPANNING`): every member is connected by structural evidence: shared changed files, or a closing/superseded reference.
- Pairwise link density `0.33`: the share of member pairs that carry a link, counting a structural link in full and a relevance-only link at 0.36. `1.00` means every pair is linked.

## Closed / duplicate issues

- #109824: Two WAL stability bugs: cron writer causes inode conflict every 30 min; \`_refresh_tools\` crashes on \`None\` session during MCP restart

## Prior & competing PRs

- **#110544: state.db WAL survives sibling closes and stray lock cancellation on every runtime (Desktop chat dies after update; salvage #109758)**. merged to main · fix tier `verified`
  - maintainer direction: category `merged`; implication `superseded`
  - files: `hermes_state.py`, `hermes_state_dbfile.py`, `hermes_state_lockguard.py`, `tests/hermes_state/test_deleted_wal_generation_guard.py`, `tests/hermes_state/test_wal_lock_guard.py`
- **#110718: fix(state): read paths open state.db read-only instead of taking a writer**. merged to main · fix tier `verified`
  - maintainer direction: category `merged`; implication `superseded`
  - files: `contributors/emails/[redacted:email]`, `contributors/emails/[redacted:email]`, `hermes_cli/cli_info_mixin.py`, `hermes_cli/main_agent_cmds.py`, `tests/hermes_cli/test_cli_insights_command.py`, `tests/tui_gateway/test_profile_db_readonly.py`, `tests/tui_gateway/test_tui_gateway_server.py`, `tui_gateway/methods_projects.py`, `tui_gateway/methods_session.py`, `tui_gateway/methods_session_foreign.py`, `tui_gateway/server.py`
- **#114413: fix(mcp): skip dynamic tool refresh when the server session is already gone**. merged to main · fix tier `verified`
  - maintainer direction: category `merged`; implication `superseded`
  - files: `tests/tools/test_mcp_dynamic_discovery.py`, `tools/mcp_tool_health.py`
- **#110116: fix(cron): stop transient cron state.db handles from rotating the WAL generation on close (#109824)**. closed without merge
  - maintainer direction: category `implemented_elsewhere`; implication `superseded`; refs `3e43cee5050f`, `#110544`, `#110718`
- **#110117: fix(mcp): _refresh_tools no longer crashes on None session during restart (#109824)**. closed without merge
  - maintainer direction: category `superseded_by_pr`; implication `superseded`; refs `#114413`

## Fix status

- Merged to main in PR #110544 (cited above). No release data is tracked. Verify downstream.
- Fix last verified (merged) `2026-09-17`.
