Skip to main content

Quick diagnostics

Before diving into specific issues, run these checks to get an overview of system health:
You can also describe your issue to Claude in a session — the built-in troubleshoot skill will automatically activate, run diagnostics, and suggest fixes.

Worker service issues

Worker not starting

Symptoms: Worker status shows not running; hooks produce errors; no context is injected.
1

Check current status

2

Try starting manually

3

Check logs for errors

4

Full stop-start reset

5

Verify Bun is installed

Bun is required to run the worker. It should be auto-installed during setup, but if it’s missing, install it from bun.sh.

Port conflict

Symptoms: Worker fails to start with a “port already in use” error; http://localhost:37777 shows a connection error.
1

Find what's using the port

2

Kill the conflicting process

3

Or switch to a different port

Edit ~/.claude-mem/settings.json:
Then restart:
Verify the change took effect:

Worker keeps crashing

Symptoms: Worker restarts repeatedly; logs show recurring errors.
1

Read the error logs

2

Check database for corruption

If integrity check fails, see Database corruption below.
3

Verify Bun version

Worker not processing observations

Symptoms: Observations are saved to the database but no summaries are generated.
1

Confirm the worker is running

2

Check the worker logs

3

Verify the database has observations

4

Restart the worker


Stuck observation queue

Symptoms: Observations are saved but no summaries appear, even after the worker has been running for several minutes. After a worker crash or forced shutdown, messages may remain stuck in the processing state. Automatic recovery is intentionally disabled — you must trigger it manually.
Example output:

Option 2: HTTP API

If recovery fails

Then re-run recovery:

Context not injecting

No context appears in new sessions

Symptoms: Claude starts each session without any memory of past work.
1

Check if summaries exist

If the count is 0, observation processing has not run yet. Start a session, use a few tools, then close it and wait for summaries to generate.
2

Test context injection manually

3

Verbose context test

4

Check database integrity

Hooks not firing

Symptoms: No context appears and no observations are being recorded.
1

Verify hooks are configured

2

Validate hooks.json is valid JSON

3

Check script permissions

4

Test context hook manually

Hooks timing out

Symptoms: Hook execution errors in Claude Code; context injection takes too long.
1

Check the worker is running

If the worker is not running, hooks will wait for it and eventually time out.
2

Check database size

A very large database can cause slow queries. Run VACUUM to reclaim space:
3

Increase hook timeout

Edit plugin/hooks/hooks.json and raise the timeout value:

Search issues

Search tools not available in Claude Code

Symptoms: The search, timeline, and get_observations MCP tools don’t appear.
1

Check MCP configuration

2

Verify MCP server binary exists

3

Rebuild if the binary is missing

4

Restart Claude Code

The MCP server is loaded at Claude Code startup — a restart is required after rebuild.

Search returns no results

Symptoms: Valid queries return empty results even though you have prior sessions.
1

Confirm the database has data

2

Check FTS5 tables are populated

If observations_fts is empty but observations has rows, rebuild the FTS index.
3

Rebuild FTS5 index

4

Simplify your query

Special characters can cause FTS5 syntax errors. Use simple words:

Token limit errors from MCP

Symptoms: “exceeded token limit” errors when calling get_observations. Use the 3-layer progressive disclosure workflow — don’t jump directly to get_observations:
1

Start with search to get an index

2

Review IDs and fetch only relevant ones

Additional strategies:
  • Reduce the limit parameter in search
  • Use type and concept filters to narrow results
  • Paginate with offset for large result sets
  • Always batch multiple IDs in a single get_observations call

Database issues

Database locked

Symptoms: “database is locked” errors in worker logs.
1

Stop the worker

2

Find processes holding locks

3

Kill the locking process

4

Restart the worker

Database corruption

Symptoms: PRAGMA integrity_check returns errors; unusual query failures.
1

Run integrity check

2

Back up the database

3

Attempt repair with VACUUM

4

Last resort: recreate the database

Deleting the database is irreversible. All stored observations and summaries will be lost. Make a backup first.

Database too large

Symptoms: Slow context injection; slow search; large file size at ~/.claude-mem/claude-mem.db.

Installation issues

Plugin not found

Symptoms: /plugin install claude-mem fails with “not found”.

Build failures

Symptoms: npm run build exits with errors.
1

Clean install

2

Check Node.js version

3

Check for TypeScript errors

Dependencies not installing (SessionStart errors)

Symptoms: SessionStart hook fails with “Cannot find module” errors.

Smart install cache stale (v5.0.3+)

Symptoms: Dependencies not updating after a plugin update.
Restart Claude Code after manual installation.

Viewer UI issues

Viewer not loading

Symptoms: http://localhost:37777 shows a connection error or blank page.
1

Confirm the worker is running on port 37777

2

Test the health endpoint

3

Check logs for errors

4

Restart the worker

Theme not persisting

Symptoms: Light/dark mode preference resets after browser refresh.
Also check that your browser is not in private/incognito mode — these block localStorage.

Real-time updates not appearing (SSE disconnected)

Symptoms: Viewer shows “Disconnected” status; new observations don’t appear without a manual refresh.
1

Test the SSE endpoint

2

Check browser console for errors

Open DevTools (F12), go to the Network tab, and look for failed /stream requests or EventSource errors in the Console tab.
3

Check for VPN or proxy interference

Corporate firewalls and some VPNs block Server-Sent Events. Try disabling the VPN temporarily.
4

Restart worker and refresh


Common error messages

Cause: The worker is not running, or the configured port doesn’t match the running worker’s port.Fix: npm run worker:restart
Cause: Multiple processes are accessing the database simultaneously.Fix: Stop the worker, kill any stale SQLite connections with lsof ~/.claude-mem/claude-mem.db, then restart.
Cause: Invalid characters in a search query (e.g. [, ], * used incorrectly).Fix: Simplify the query to plain words without special characters.
Cause: The database file cannot be opened — either missing directory or wrong permissions.Fix: Verify ~/.claude-mem/ exists and is writable: ls -la ~/.claude-mem/
Cause: Missing npm dependencies.Fix: npm install in the plugin directory.
Cause: Another process is occupying port 37777.Fix: Kill the conflicting process (kill -9 $(lsof -t -i:37777)) or configure a different port in ~/.claude-mem/settings.json.

Getting help

If none of the solutions above resolve your issue:

Generate a bug report

Run npm run bug-report to collect diagnostics, then include the output when filing an issue.

File a GitHub issue

Include error messages, relevant log output, and steps to reproduce.