DocumentationSupported Editors

Supported editors

aide-memory was originally built for Claude Code and expanded to Cursor and Devin CLI. All three have full hook + MCP wiring at aide-memory init. Codex, Copilot, and Windsurf ship a rules template today; deeper integration may come based on user feedback.

These editors may need a fresh session (or restart) after aide-memory init so the MCP server registers. Cursor adds a second step: toggle the aide-memory MCP server ON in Settings → MCP.

Devin CLI’s hook system is Claude-Code-compatible, so aide-memory runs there at near-Claude-Code parity; the few differences (soft-only pre-tool nudges, no branded chrome, PostCompaction, skill-based teaching) are documented on the Devin editor page.

Legend

  • ✅ supported
  • ❌ not supported
  • ⚠ partial support (see footnote)
  • 📝 rule template only (no hook / MCP wiring yet)

Per-editor table

CapabilityClaude CodeCursorDevin CLICodexCopilotWindsurf
aide-memory init generates editor config files✅✅✅📝📝📝
MCP tools available in agent sessions✅✅ 1✅ 1⚠ 1⚠ 1⚠ 1
Hard-block on file read with scoped memories✅✅ 2⚠ 3❌❌❌
Hard-block on file edit with scoped memories✅✅⚠ 3❌❌❌
Soft nudge on re-read (agent-context channel)✅✅ 4✅❌❌❌
Inline branded status on hard-block✅✅❌ 5❌❌❌
Inline branded status on soft-nudge✅⚠ 6❌ 5❌❌❌
Session-start dynamic context injection✅⚠ 7✅❌❌❌
Session-start context after compaction✅❌ 8⚠ 9❌❌❌
Stop-hook reflection nudges✅✅ 10✅❌❌❌
Correction detection (UserPromptSubmit / beforeSubmitPrompt)✅⚠ 11✅ 12❌❌❌
Pre-search nudge on Grep✅✅✅❌❌❌
Pre-search nudge on Glob✅❌ 13✅❌❌❌
Auto-regenerated rule file on memory/config writes⚠ 14✅⚠ 15❌❌❌

Current state

Claude Code is the reference adapter. All capabilities listed here work as designed.

Cursor ships with aide-memory at strong parity with Claude Code. aide-memory init writes .cursor/hooks.json, .cursor/mcp.json, and .cursor/rules/aide-memory.mdc (the last one auto-regenerates on memory and config changes). Soft nudges reach the agent via agent_message, hard blocks render branded chrome inline. Remaining gaps are documented on the Cursor editor page.

Devin CLI ships with aide-memory at near-Claude-Code parity, since Devin’s hooks are Claude-Code-compatible. aide-memory init writes a single .devin/config.json (hooks + MCP server) plus a .devin/skills/aide-memory/SKILL.md skill — all scoped to .devin/, leaving your AGENTS.md untouched. Recall nudges, session-start injection, in-turn correction detection, the Stop checkpoint, and the full MCP tool surface all work. The main differences: pre-tool nudges are soft (Devin’s hard block is non-recoverable), there’s no branded status chrome (aide-memory shows via MCP tool-call cards), and compaction uses PostCompaction. Details on the Devin editor page.

Codex, Copilot, Windsurf ship a curated rule template today. Deeper integration may come based on user feedback. To request it, open an issue.

Per-editor pages

  • Claude Code, reference UX, branded chrome, in-turn correction detection, full hook parity
  • Cursor, hard-block + soft-via-agent_message, rules-file session context, one-turn-delay corrections, per-Read editor-open coverage gap
  • Devin CLI, Claude-Code-compatible hooks, soft-only pre-tool nudges, skill-based teaching, in-turn corrections, PostCompaction, MCP tool-card visibility
  • Windsurf, rule template only
  • Codex, rule template only
  • Copilot, rule template only

Footnotes

  1. Cursor’s MCP config is generated at init. Codex / Copilot / Windsurf ship a rules template only. If you add aide-memory as an MCP server manually in the editor’s own MCP config, the seven tools work identically to Claude Code. ↩ ↩2 ↩3 ↩4 ↩5

  2. Cursor 3.2.11’s preToolUse:Read hook does NOT fire when the target file is already open in the editor pane (verified empirically 2026-04-27). Files that are NOT open trigger the hook reliably. preToolUse:Write (Edit) fires regardless of editor-open state. Mitigation: per-Edit safety net stays reliable, and the rules-file injection includes “Even when a file is visible to you, call aide_recall for that path” guidance so agents pick up memories on editor-cached reads. The mitigation is empirically verified across the 4-cell file-open validation matrix. ↩

  3. On Devin a PreToolUse decision: "block" is terminal — it shows ✗ Tool blocked: <reason> to the user but ends the agent’s turn rather than feeding the reason back for recall-and-retry (verified live, even with imperative reasons). Since the block isn’t recoverable, aide-memory never hard-blocks reads/edits on Devin; it delivers the “call aide_recall” signal through the soft additionalContext channel, which doesn’t stop the turn. The agent recalls and continues. (The Stop checkpoint still uses decision: "block", where blocking means “don’t stop, reflect”.) ↩ ↩2

  4. Soft nudges are delivered via Cursor’s agent_message field on permission: "allow", the equivalent of Claude Code’s additionalContext channel. The agent receives the same context payload (memory IDs + recommended tool call) on every fire. Verified empirically on Cursor 3.2.11 (2026-04-27). User-visible chrome on soft fires is the remaining partial gap. ↩

  5. Devin does not render aide-memory’s systemMessage “aide-memory · …” status lines. aide-memory activity is visible instead through Devin’s native MCP tool-call cards (e.g. ⏺ Called aide_recall from aide-memory with arguments and returned memories). hooks.visible has no effect on Devin. ↩ ↩2

  6. On permission: "deny" (hard-block), Cursor renders user_message chrome inline in chat: the user sees aide-memory · ... status lines just like Claude Code. On permission: "allow" (soft fire), Cursor 3.2.11 logs user_message to the Hooks Output panel but does NOT render it inline in chat. The agent still receives the soft context via agent_message on every fire, so the safety net works; only the user-facing visibility for soft fires is missing. ↩

  7. sessionStart.additional_context is broken on Cursor (staff-confirmed, no workaround). aide-memory delivers the same content via a dynamically regenerated .cursor/rules/aide-memory.mdc with alwaysApply: true, Cursor staff’s officially-endorsed workaround. Content identical, channel different. ↩

  8. Cursor’s sessionStart hook does not re-fire after context compaction. The regenerated rules file partially covers this since Cursor re-reads alwaysApply: true rules each turn, but the dedicated session-start pipeline (that Claude Code gets) is not available. ↩

  9. Devin fires PostCompaction (after compaction completes), not Claude Code’s PreCompact. aide-memory clears its per-session recall tracking there so the agent re-recalls fresh after a compaction; there’s no automatic re-injection of session-start content (Devin’s compaction lifecycle differs from Claude Code’s SessionStart source: "compact"). ↩

  10. Stop-hook nudges use Cursor’s followup_message channel instead of Claude Code’s systemMessage. Same effect, different transport. ↩

  11. Cursor detects corrections via beforeSubmitPrompt and writes the same correction-pending flag Claude Code does, but Cursor’s beforeSubmitPrompt hook output supports only continue + user_message, no context injection channel. The user-visible “store this correction” reminder therefore arrives one turn later via the next Stop hook’s followup_message. ↩

  12. Devin injects UserPromptSubmit additionalContext in-turn, so the agent can call aide_remember in the same turn the correction was typed — no one-turn delay (unlike Cursor’s beforeSubmitPrompt, which delivers the reminder on the next Stop). ↩

  13. Cursor’s documented matcher vocabulary is Shell, Read, Write, Grep, Delete, Task, MCP:<tool>, no Glob matcher. The adapter skips Glob silently. Grep coverage is unaffected. ↩

  14. Claude Code does not need rules regeneration because its SessionStart hook can inject dynamic context directly. The regen pipeline exists for Cursor specifically; Claude Code’s .claude/rules/aide-memory.md is a static template. ↩

  15. Devin doesn’t need rules regeneration for the same reason as Claude Code — its SessionStart hook injects dynamic context directly. The teaching ships as a static .devin/skills/aide-memory/SKILL.md skill plus a SessionStart-injected pointer. ↩