One-Line Summary: Memory portability — whether the artifacts you've built up in one harness work in another — is partial in 2026: configuration files (CLAUDE.md, AGENTS.md, .cursorrules) are convergent enough to copy-with-edits; vector stores and trajectory stores are mostly per-harness; adapters are model-specific; expect a portability gradient, not a clean abstraction.
Prerequisites: Harness-owned memory, settings and configuration files, cross-session memory strategies
What Is Memory Portability?
When you decide to switch harnesses (Claude Code → Cursor, or Claude Code + ruflo → OpenHands), what comes with you? The answer depends on the layer:
- Configuration / declared memory: Mostly portable with rewrites.
CLAUDE.mdandAGENTS.mdare conceptually identical; mostly text-substitution converts..cursorrulesis similar but format differences (Cursor's is more rule-list-shaped) require some restructuring. - Sub-agent / role definitions: Format-portable but tooling-specific. Claude Code sub-agents in markdown convert mechanically; the tool list doesn't because tool names differ. Adapters and middleware needed.
- Slash commands: Mostly portable (markdown templates), again with tool-name remapping.
- Hooks: Per-harness, not portable. The hook events differ (Claude Code's 7 vs ruflo's 27 vs Cursor's none).
- Vector stores: Theoretically portable (it's just embeddings + metadata), in practice locked because each harness has its own retrieval logic.
- Trajectory stores (ReasoningBank): Per-harness; not standardized.
- Adapters (micro-LoRA): Per-base-model. A Claude-Sonnet adapter doesn't work with GPT-4 or Gemini.
In short: declarative artifacts port well; runtime substrates port poorly.
How Portability Is Made Real
A pragmatic strategy:
- Keep memory in the most portable form possible: Markdown configuration files (
CLAUDE.mdstyle) are the universal lowest-common-denominator. When in doubt, write memory there. - Use MCP for tools: MCP-defined tools are portable across harnesses. Tool work invested in MCP is the most durable.
- Treat per-harness primitives as ephemeral: Hooks, sub-agents, plugins — useful, but assume rewrite when changing harnesses.
- Vector stores via portable backends: If the vector store is Postgres+pgvector or Qdrant rather than the harness's proprietary AgentDB, the data layer is portable; only the integration glue isn't.
- Don't over-invest in non-portable layers until the harness has proven itself.
Why It Matters
Switching costs are real. They are also the thing harnesses compete on — a harness that locks you in by making non-portable substrates the easy path is competing for retention. Understanding portability lets you push back: prefer the portable form when your team's switching probability is non-negligible.
The flip side: if you've decided on a harness, embrace the non-portable layers. The whole point of picking a harness is to use its differentiated capabilities; refusing to use anything proprietary is its own form of underinvestment.
Key Technical Details
- MCP servers are the most portable tool layer in 2026: A
githubMCP works in Claude Code, Cursor, ruflo, Continue, Zed identically. AGENTS.mdas a near-standard: OpenAI-led harnesses useAGENTS.md; Anthropic-led useCLAUDE.md. The two are converging in spirit if not name; many teams now ship both..cursorrulesandCLAUDE.mddiffer in tone:CLAUDE.mdis prose;.cursorrulesis bullet-list rules. Conversion is mostly mechanical.- Sub-agent definitions can target a tool registry that's portable: If your sub-agents only use MCP tools, the definitions are nearly portable.
- Vector embedding is the bottleneck: An embedding chosen for retrieval in one harness may not match what another harness expects. Re-embedding may be needed.
- Trajectory replay across harnesses is essentially impossible: The action space (tool list) and execution semantics differ.
How Harnesses & Frameworks Implement This
| Layer | Portable today | Portable with effort | Per-harness |
|---|---|---|---|
CLAUDE.md / AGENTS.md / .cursorrules | ✅ (with edits) | ||
| MCP servers and tools | ✅ | ||
| Sub-agent definitions | ✅ | ||
| Slash commands | ✅ | ||
| Hooks | ✅ | ||
| Vector store contents | ✅ (if backend is portable) | ||
| Trajectory stores | ✅ | ||
| Plugins | ✅ | ||
| Adapters / LoRA | ✅ (per base model) |
Connections to Other Concepts
mcp-as-the-universal-tool-bus.md— The strongest portability win.settings-and-configuration-files.md— The portable surface.cross-session-memory-strategies.md— The within-harness analogue.choosing-your-harness-stack.md— Switching cost is part of the decision.
Further Reading
- "AGENTS.md" community proposals on GitHub — convergence efforts.