# NousResearch/hermes-agent · Kanban SQLite connection and WAL file descriptor leaks

## Open now

- Nothing open on GitHub.

Most members concern SQLite connections in the Kanban database or dispatcher not releasing file descriptors, especially in WAL mode, with reports of 'Too many open files' on macOS. The pull requests propose varied approaches, such as closing connections, adding close() methods, and connection pooling, and one also mentions an FTS5 fallback.

## TL;DR

- 9 member(s): 0 open issue(s), 4 closed issue(s), 0 open PR(s), 0 merged PR(s), 5 PR(s) closed without merging.
- No fix has been merged to main; one or more PRs were attempted (see below).
- **Recommended:** review the prior/competing PR(s) below. A fix was attempted but not merged; your case may extend or revive that work.

## Maintainer resolution verdict

- Internal-tracker verdict over this cluster's issue members: `unresolved`. This is distinct from the fix status above. Weigh it yourself.

## How this cluster was grouped

- Link evidence (`STRUCTURAL_PARTIAL`): some members are connected by structural evidence (shared changed files, or a closing/superseded reference); the rest are joined by an automated relevance judgement over their text.
- Members outside that structural core may belong to a different underlying problem.
- Pairwise link density `0.20`: 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

- #29610: Bug: embedded Kanban dispatcher still leaks sqlite/WAL file descriptors after #28301
- #30799: kanban dispatcher FD leak: SQLite connections not releasing file descriptors in WAL mode
- #31736: Gateway embedded Kanban dispatcher opens SQLite WAL connections every tick, causing FD/WAL pressure
- #33580: kanban_db.py: connection leak causes 'Too many open files' on macOS (FD exhaustion)

## Prior & competing PRs

- **#31130: fix(kanban-db): WAL file descriptor leak on connect/close cycles (fixes #30799)**. closed without merge · fix tier `suggested`
  - maintainer direction: category `implemented_elsewhere`; implication `superseded`; refs `ebe04c66cd940f38da974c5133de28dbd36823a1`, `#30799`, `#31158`
  - _suggested-tier fix detail withheld; re-request with `?tier=all` to include it._
- **#33927: fix(kanban): add connection pooling to prevent FD exhaustion**. closed without merge · fix tier `suggested`
  - maintainer direction: category `implemented_elsewhere`; implication `superseded`; refs `ebe04c66cd940f38da974c5133de28dbd36823a1`
  - _suggested-tier fix detail withheld; re-request with `?tier=all` to include it._
- **#32135: fix(kanban): close decomposer SQLite connections**. closed without merge
  - maintainer direction: category `implemented_elsewhere`; implication `superseded`; refs `ebe04c66c`
- **#36116: fix(db): close() methods on SQLite classes + WAL FD leak fix**. closed without merge
  - maintainer direction: category `superseded_by_pr`; implication `superseded`; refs `ebe04c66cd940f38da974c5133de28dbd36823a1`
- **#67389: fix(db): close SQLite FDs on context exit and fallback gracefully if FTS5 is missing**. closed without merge
  - maintainer direction: category `implemented_elsewhere`; implication `superseded`; refs `b405c3980`, `5eb55835f`, `0773b6644`, `99e1d39c1`

## Fix status

- No merged fix on record.
- Subsystem: `gateway`
