Hermes Agent Memory Not Working? Here's Why

Hermes Agent Memory Not Working? Here's Why

You set up Hermes, had a few conversations, and checked the memory files. Empty. Or Hermes asked you something it already knew last week. Or the session search came back blank when you were sure you'd discussed the topic before.

These are the most common Hermes memory complaints, and almost all of them have a straightforward explanation. This article goes through each one.

Problem 1: Nothing Has Been Written to My Memory Files

Symptom: ~/.hermes/memories/MEMORY.md and USER.md are empty after several sessions.

Why: The built-in memory is agent-curated, not a recorder. Hermes only writes to these files when the LLM judges something worth persisting — environment facts, user preferences, project conventions, discovered workarounds. In short or narrowly task-focused sessions, the agent may not flag anything. The system also has a configurable nudge_interval that periodically prompts the agent to reflect and save; if you haven't touched that config, the default interval may not be firing often enough for your session length.

Fix:

  • Check your nudge interval in ~/.hermes/config.yaml. Reduce it if you're running short sessions.
  • In gateway mode, there's a proactive flush before idle timeout — make sure you're not force-quitting the process before that fires.
  • For fully automatic capture without relying on the agent's judgment, add an external provider: hermes memory setup. Hindsight, Mem0, and others capture everything in the background regardless of session length. See the Hindsight integration guide for full setup.

Problem 2: Hermes Asked Me Something It Should Already Know

Symptom: Hermes asks for information — your name, a project detail, a preference — that you've told it before.

Why: Two likely causes. First, the fact was never written to MEMORY.md in the first place (see Problem 1). Second, it was written but got consolidated out. MEMORY.md has a ~2,200 character limit. When full, the tool returns an error and the agent must consolidate or remove entries before adding new ones — nuanced specifics can get dropped in that process.

A third possibility: the fact lives in the session archive rather than prompt memory. MEMORY.md holds durable facts that are always in context. Past conversations are searchable via session_search, but the agent has to explicitly call that tool with the right query — it doesn't happen automatically before every response.

Fix:

  • Explicitly ask Hermes to remember something: "Remember that my production database runs on port 5433." This forces a memory write.
  • Check what's actually in your memory files: cat ~/.hermes/memories/MEMORY.md
  • If the files are full, ask Hermes to consolidate: "Review your memory files and consolidate any redundant entries."
  • For automatic recall without relying on the agent calling session_search at the right moment, an external provider like Hindsight prefetches relevant context before every response automatically.

Problem 3: I Wrote Something to Memory This Session But It's Not Showing Up

Symptom: Hermes wrote an entry to MEMORY.md mid-session, but it's not reflected in the conversation.

Why: Memory is loaded as a frozen snapshot at session start for LLM prefix cache performance. Writes during a session are persisted to disk immediately, but the snapshot in the system prompt doesn't update until the next session begins.

Fix: This is expected behavior, not a bug. Restart the session and the new entries will be in context. If you need the agent to act on something it just wrote, reference it explicitly in the conversation rather than expecting it to appear automatically.

Problem 4: Session Search Isn't Finding What I'm Looking For

Symptom: You ask Hermes to search past sessions for something you're sure you discussed, and it comes back empty or with irrelevant results.

Why: Session search uses SQLite FTS5 full-text search. It matches on exact keywords in the stored transcripts. If you're using different terminology than what appeared in the original conversation — "auth service" vs "authentication microservice", "the database" vs "PostgreSQL instance" — FTS5 won't connect them.

Fix:

  • Try different search terms. Use the specific words likely to appear in the original transcript.
  • Ask Hermes to try multiple query variants: "Search past sessions for 'auth service', 'authentication', and 'login system'."
  • For semantic search that handles rephrasing and relational queries, an external provider with vector retrieval (Hindsight, RetainDB) handles this better than FTS5.

Problem 5: Memory Keeps Losing Details After Long Sessions

Symptom: Facts that were in MEMORY.md are gone or compressed into vague summaries after a long session.

Why: When the character limit is reached, the agent consolidates entries to make room. More importantly: before Hermes compresses a long conversation, it runs a dedicated memory flush — a separate model call where only the memory tool is available. Facts that weren't flagged during that flush don't survive compression. This is a known limitation of agent-curated memory under context pressure.

Fix:

  • Increase the character limit in ~/.hermes/config.yaml if your use case needs more headroom.
  • Periodically ask Hermes to review and consolidate memory before sessions get long: "Review your memory files and make sure the most important facts are saved before we continue."
  • An external provider captures everything before compression happens, independently of what the agent decides to flag during the flush.

Problem 6: My External Provider Isn't Activating After hermes memory setup

Symptom: You ran hermes memory setup, selected a provider, but hermes memory status shows no provider active — or the provider's tools aren't appearing in sessions.

Why: Several possible causes: the pip dependency didn't install cleanly, required credentials aren't set, or the memory.provider key wasn't written to config.yaml.

Fix:

# Check what's active
hermes memory status

# Verify config.yaml has the provider set
cat ~/.hermes/config.yaml | grep -A2 memory

# Re-run setup to reinstall dependencies and re-enter credentials
hermes memory setup

# Check .env for missing API keys
cat ~/.hermes/.env

If the provider requires an API key and it wasn't set during setup, add it to ~/.hermes/.env manually, then restart Hermes.

Problem 7: I Had Honcho Configured But Something Changed

Symptom: After a Hermes update, your Honcho integration behaves differently or the old hermes honcho commands no longer work.

Why: Hermes recently migrated from a standalone Honcho integration to a unified memory provider system. Honcho is now one of seven providers under hermes memory. The old hermes honcho subcommands redirect to the new system.

Fix:

# Check migration happened automatically
hermes memory status
# Should show: provider: honcho

# If not, set it manually
hermes memory setup
# Select Honcho from the picker

Existing Honcho config and credentials are preserved — no data loss. If hermes memory status already shows Honcho active, nothing needs to change.

Quick Reference

SymptomMost Likely CauseFix
Memory files emptySession too short, nudge interval too longReduce nudge_interval; add external provider
Hermes forgot somethingFact never saved, or consolidated outAsk it to remember explicitly; check memory files
Memory write not in contextFrozen snapshot — updates show next sessionRestart session
Session search finds nothingFTS5 keyword mismatchTry alternate search terms
Details lost after long sessionMemory flush before compression missed themAdd external provider; increase character limit
External provider not activeDep install failed or missing credentialsRe-run hermes memory setup
Honcho commands not workingMigrated to new provider systemRun hermes memory status

For a full explanation of how Hermes memory is designed to work — and why these limitations exist — see How Hermes Agent Memory Actually Works. If you're evaluating which external provider to add, Hermes Agent Memory Providers: All 7 Options Compared covers all your options.