Agent connection issues
Fix missing boot context, missing recall, missing tools, and duplicate hooks.
An agent that runs without boot memory, recall, or Lore tools, or that shows Lore twice, usually has a local integration problem. Check the server and the token first: plugins fail open, so a broken connection looks exactly like Lore being turned off.
Note
Plugins fail open. If Lore is unreachable, slow, or rejects the token, the plugin returns nothing and the agent keeps working. Check server health and the token before you debug the runtime.
Check each runtime
Run the check for your runtime, and restart the runtime after any change.
| Runtime | Check | After a change |
|---|---|---|
| Claude Code | claude plugin list includes lore@lore. In a session, /mcp shows lore as connected. | Restart Claude Code. |
| Codex | codex mcp list lists lore. Open /hooks and trust the Lore hooks. /plugins no longer lists Lore as installable. ~/.codex/config.toml sets hooks = true under [features]. | Restart Codex. |
| OpenCode | ~/.config/opencode/plugins/lore-memory.js exists and contains @lore-managed-opencode-plugin. Native tools use exact lore_* names. | Restart OpenCode. |
| Pi | ~/.pi/agent/extensions/lore exists. | Run /reload in Pi, or restart Pi. |
| OpenClaw | ~/.openclaw/openclaw.json has a plugins.entries.lore entry, and the plugin is enabled. | Restart OpenClaw. |
| Hermes | ~/.hermes/skills/lore_memory is a symlink to ~/.lore/hermes/lore_memory. | Restart Hermes. |
| ZCode | zcode plugins list includes lore@lore, and zcode plugins enable lore@lore has run. | Restart ZCode. |
| DeepSeek Harness | ~/.dsh/cordis.patch.yml contains the lore (managed) block, and loremem status shows dsh installed. | Restart dsh. |
| Other MCP clients | The client connects to <server>/api/mcp?client_type=mcp with an Authorization: Bearer header. Nothing loads boot or recall automatically, so call lore_boot yourself. | Restart the client. |
No boot memory at session start
Cause: The session-start hook did not run, or it returned nothing. The usual causes are a server or token problem, a disabled plugin, a runtime that was not restarted, or an empty runtime boot node.
Fix:
- Ask the agent to call
lore_boot. If it returns the boot view, the server and token work, and the hook is the problem. If the call fails, fix the connection first. - Check your runtime in the table above, then restart it.
- For ZCode, add content to the node
core://agent/zcodeif that node is empty. - For DeepSeek Harness, add content to the node
core://agent/dshif that node is empty. - For OpenCode, boot needs the experimental
experimental.chat.system.transformhook. If your OpenCode build does not provide it, the plugin logs one warning, skips boot, and keeps native tools and prompt recall working. The warning starts withLore OpenCode system context is unavailable. Update OpenCode and restart it.
No <recall> block appears
Cause: Lore writes a <recall> block only when at least one memory passes the display threshold. The block also does not appear when the prompt hook did not run, or when recall failed, for example because no embedding model is configured.
Fix:
- Ask the agent to call
lore_searchwith a keyword from your prompt. If search finds the memory, the hook path works, and the problem is in recall. See Recall issues. - If search finds nothing either, check the server health and token, then check your runtime in the table above.
- Test with a real question. Recall needs a prompt to search.
Lore tools are missing
Cause: The runtime is not connected to Lore's MCP server, or the plugin did not register its tools.
Fix:
- Claude Code and ZCode: Memory tools appear as
mcp__plugin_lore_lore__<tool>. In Claude Code, check with/mcpthatloreis connected. - DeepSeek Harness: Memory tools appear as
mcp__lore__<tool>, for examplemcp__lore__lore_search. - Codex:
codex mcp listmust listlore. - OpenCode: The native tools must use the exact names from
lore_guidancethroughlore_move_node. A name such aslore_lore_searchmeans an MCP entry is registered instead of the native plugin. See the next section. - Skills tools (
lore_skill_*) appear only when the server advertises Skills. The open-source server has none. Loremem Cloud does.
Lore appears twice
Cause: More than one integration loads Lore. The usual sources are an old user-level MCP entry, duplicate hooks, or a compatibility layer that imports Claude Code plugins.
Fix:
-
Claude Code: An earlier install may have left user-scope
loreorlore-skillsMCP entries. Remove them, then run the install again. Skip any command that reports the server was not found. The installer scrubs thelore-skillsentry itself; skills reach Claude Code through the plugin'sskills/directory now.claude mcp remove --scope user lore claude mcp remove --scope user lore-skills -
Codex: Run
npx @loremem/cli install --channels codex. The installer removes obsolete Lore entries from~/.codex/hooks.jsonand keeps unrelated hooks. SetLORE_CODEX_INSTALL_USER_HOOKS=1only for an older Codex build that needs user-level hooks. -
OpenCode: If you see both
loreandlore:lore, or the console records two client types for one prompt, another plugin is importing Claude Code Lore hooks. Runnpx @loremem/cli install --channels opencode --force. When the installer can parseoh-my-openagent.json[c](or the legacyoh-my-opencode.json[c]) safely, it setsclaude_code.plugins_override["lore@lore"]tofalsethere. If it skips the file, set that value yourself, keep your other settings, and restart OpenCode. Do not setLORE_OPENCODE_ALLOW_MCP=1unless you want the legacy MCP fallback alongside the native plugin. -
OpenCode, unmarked file: If the installer reports that
lore-memory.jsis not managed by Lore and keeps it, move that file aside and run the install again.
Behavior changed after an update
Cause: The runtime still runs old hooks, tools, or plugin files. Hooks and MCP config load when the process starts.
Fix:
-
Restart the runtime. In Pi, run
/reloador restart. -
Update the integrations:
npx @loremem/cli updateupdatechanges only integrations whose state isinstalledorpartial. It fails instead of reporting success when an integration cannot be updated. Use--channelsto pick specific runtimes. -
To reinstall one runtime even when its version has not changed, run:
npx @loremem/cli install --channels claudecode --force
Claude Code keeps its own auto-memory. To make Lore the only memory, set CLAUDE_CODE_DISABLE_AUTO_MEMORY=1 or "autoMemoryEnabled": false in ~/.claude/settings.json. Lore never writes to CLAUDE.md. If ~/.claude/CLAUDE.md still imports @~/.claude/lore-guidance.md, delete that line.
Every Lore call fails
Cause: The server is down, the base URL or token is wrong, or ~/.lore/config.json is malformed. The plugin hides the error from the agent, so every call looks empty.
Fix:
-
Check the server and the token with the checks on the troubleshooting page.
-
Run
npx @loremem/cli statusand confirm thatbase_urlis the server you expect. -
Run the install again with the correct server and token:
npx @loremem/cli install --base-url http://127.0.0.1:18901 --api-token lm_your_tokenClaude Code reads
LORE_BASE_URLandLORE_API_TOKENfrom theenvblock of~/.claude/settings.json, and the installer updates them.
Warning
--base-url marks the server as not managed by Docker. If the CLI runs your server in Docker, change only the token with npx @loremem/cli install -y --skip-docker --api-token lm_your_token instead.