- Updated `context-inject.sh` to refresh context before prompt submission and ensure worker is running. - Added functionality to register and unregister projects for automatic context updates in `worker-service.ts`. - Implemented methods to read and write the cursor project registry, allowing for better management of installed hooks. - Integrated context updates into the `GeminiAgent`, `OpenRouterAgent`, and `SDKAgent` to ensure the latest context is available during sessions. This update improves the integration of Claude-Mem with Cursor, ensuring that context is consistently updated and accessible across sessions.
4.9 KiB
Context Injection in Cursor Hooks
The Solution: Auto-Updated Rules File
Context is automatically injected via Cursor's Rules system:
- Install:
claude-mem cursor installcreates initial context file - Stop hook:
session-summary.shupdates context after each session ends - Cursor: Automatically includes
.cursor/rules/claude-mem-context.mdcin all chats
Result: Context appears at the start of every conversation, just like Claude Code!
How It Works
Installation Creates Initial Context
claude-mem cursor install
This:
- Copies hook scripts to
.cursor/hooks/ - Creates
hooks.jsonconfiguration - Fetches existing context from claude-mem and writes to
.cursor/rules/claude-mem-context.mdc
Context Updates at Three Points
Context is refreshed three times per session for maximum freshness:
- Before prompt submission (
context-inject.sh): Ensures you start with the latest context from previous sessions - After summary completes (worker auto-update): Immediately after the summary is saved, worker updates the context file
- After session ends (
session-summary.sh): Fallback update in case worker update was missed
Before Prompt Hook Updates Context
When you submit a prompt, context-inject.sh:
# 1. Ensure worker is running
ensure_worker_running "$worker_port"
# 2. Fetch fresh context
context=$(curl -s ".../api/context/inject?project=...")
# 3. Write to rules file (used immediately by Cursor)
cat > .cursor/rules/claude-mem-context.mdc << EOF
---
alwaysApply: true
---
# Memory Context
${context}
EOF
Stop Hook Updates Context
After each session ends, session-summary.sh:
# 1. Generate session summary
curl -X POST .../api/sessions/summarize
# 2. Fetch fresh context (includes new observations)
context=$(curl -s ".../api/context/inject?project=...")
# 3. Write to rules file for next session
cat > .cursor/rules/claude-mem-context.mdc << EOF
---
alwaysApply: true
---
# Memory Context
${context}
EOF
The Rules File
Located at: .cursor/rules/claude-mem-context.mdc
---
alwaysApply: true
description: "Claude-mem context from past sessions (auto-updated)"
---
# Memory Context from Past Sessions
[Your context from claude-mem appears here]
---
*Updated after last session.*
Update Flow
Context updates at three points:
Before each prompt:
- User submits a prompt
beforeSubmitPrompthook runscontext-inject.sh- Context file refreshed with latest observations from previous sessions
- Cursor reads the updated rules file
After summary completes (worker auto-update):
- Summary is saved to database
- Worker checks if project is registered for Cursor
- If yes, immediately writes updated context file with new observations
- No hook involved - happens in the worker process
After session ends (fallback):
- Agent completes (loop ends)
stophook runssession-summary.sh- Context file updated (ensures nothing was missed)
- Ready for next session
Project Registry
When you run claude-mem cursor install, the project is registered in ~/.claude-mem/cursor-projects.json. This allows the worker to automatically update your context file whenever a new summary is generated - even if it happens from Claude Code or another IDE working on the same project.
To see registered projects:
cat ~/.claude-mem/cursor-projects.json
Comparison with Claude Code
| Feature | Claude Code | Cursor |
|---|---|---|
| Context injection | ✅ additionalContext in hook output |
✅ Auto-updated rules file |
| Injection timing | Immediate (same prompt) | Before prompt + after summary + after session |
| Persistence | Session only | File-based (persists across restarts) |
| Initial setup | Automatic | claude-mem cursor install creates initial context |
| MCP tool access | ✅ Full support | ✅ Full support |
| Web viewer | ✅ Available | ✅ Available |
First Session Behavior
When you run claude-mem cursor install:
- If worker is running with existing memory → initial context is generated
- If no existing memory → placeholder file created
Context is then automatically refreshed:
- Before each prompt (ensures latest observations are included)
- After each session ends (captures new observations from the session)
Additional Access Methods
1. MCP Tools
Configure claude-mem's MCP server in Cursor for search tools:
search(query, project, limit)timeline(anchor, depth_before, depth_after)get_observations(ids)
2. Web Viewer
Access context manually at http://localhost:37777
3. Manual Request
Ask the agent: "Check claude-mem for any previous work on authentication"
File Location
The context file is created at:
<workspace>/.cursor/rules/claude-mem-context.mdc
This is version-controlled by default. Add to .gitignore if you don't want to commit it:
.cursor/rules/claude-mem-context.mdc