MemoryLake
Back to all articles
NewsAugust 12, 2026·10 min read

What Codex Can Import From Cursor and Claude — and What It Still Can't (2026)

If you've been putting off a move to Codex because you didn't want to rebuild your setup by hand, the excuse got smaller on August 7. The `rust-v0.147.0` release added, in its own words, the ability to "Import Cursor-managed skills and synchronize changes to imported Claude and Cursor conversations without creating duplicates."

Here's the direct answer on what that means: Codex's importer now covers a competing editor's skills and keeps previously imported conversations current instead of duplicating them. It is a genuinely good migration tool, and it is still an importer of configuration and conversation records. The knowledge that made your old setup valuable — why a service owns its own database, which client requires British spelling, what broke in March — was never in a config file, so no importer can move it. And the same release notes that keep expanding what can come in leave the same boundary in place: standard Claude chat data can't be imported at all.

This covers what actually landed, what it doesn't cover, and how to move between coding agents without doing the archaeology every time.

What Codex's importer covers now

Claude Code setups, close to wholesale

The original target was Claude Code, and the scope is wide. Codex's documentation describes bringing over instruction files, config.toml and settings.json, skills and plugins, MCP server configuration, project folders and memories, hooks and slash commands, subagents, and chats from the last 30 days. Run /import in the CLI, or use the desktop app's import flow.

There are limits worth knowing before you try: the import isn't available while a task is running, from a remote session, or while connected to a local app-server daemon, and some plugins need to be re-authorized afterward.

Cursor-managed skills, as of August 7

This is the new part. The release note is one sentence, and the merged work behind it names the mechanics: pull requests titled "Migrate Cursor-managed skills into Codex," "Parse Claude and Cursor session records separately," and "Preserve working directories when importing external sessions."

Read that last one and you can see what problem they were solving. Importing a session isn't just text — a session means something in a directory, and an import that loses the directory produces a record you can read but not resume usefully.

Conversations that stay current instead of duplicating

The second half of the release note is the more interesting half: "synchronize changes to imported Claude and Cursor conversations without creating duplicates," implemented as "Sync updates to imported external agent sessions."

Before this, an import was a snapshot. Import again and you got a second copy. Now re-importing reconciles with what you already brought over. If you're running two tools in parallel during a migration — which most people do for a week or two — this is the difference between an import you do once nervously and an import you can repeat.

Notice the implication, though. Syncing means the other tool is still the authority for that data. It's a bridge for the period when you use both, not a transfer of custody.

What an imported chat is, and what it isn't

Chat import has documented bounds: the last 30 days, capped at 50 conversations. That's a deliberate scope, and it tells you what the feature is for — continuity while you switch, not an archive.

It's worth being clear-eyed about the value of those 50 conversations. A transcript is a record of a process, most of which was wrong on the way to being right. Imported chats give you searchable recent history and the ability to pick up a thread you abandoned on Friday. What they don't give you is a set of conclusions, because nobody separated the conclusions from the exploration. If a decision happened inside one of those chats, importing the chat is not the same as recording the decision, and the agent reading it later will weigh the rejected approach and the final one about equally.

And a boundary that hasn't moved

The importer's documentation still says plainly: "Standard Claude Chat data cannot be imported." ChatGPT data doesn't come in either. This is the asymmetry that surprises people — OpenAI's own CLI will ingest a competitor's developer tooling in one command, and won't ingest the consumer app from either vendor.

It's a coherent decision rather than an oversight: /import is a developer-setup tool, and chat histories from consumer products aren't developer setups. It just means the memory your assistant built up in a chat app is still a manual job, which is its own migration.

What people try

Waiting for the importer to cover everything. Understandable, and it won't, because the gap isn't a missing feature. There's no file in Cursor or Claude Code that holds the reason behind your conventions; nobody wrote it down. An importer can only move what exists.

Importing and assuming parity. The most common disappointment. Your rules arrive, your skills arrive, your MCP servers arrive — and the new agent still proposes the approach your team rejected last quarter. Nothing was lost in transit; that knowledge was never in the files.

Copying rules by hand into `AGENTS.md`. Still the right instinct for the parts you care about, and it's where importers land your content anyway. Codex resolves AGENTS.md from ~/.codex/AGENTS.md (or $CODEX_HOME) to the repository root to intermediate directories to your working directory, closest file taking precedence. Filing by location is how you keep scope intact.

Turning on Codex memories and calling it done. Worth doing, and not a record. Codex memories are off by default, enabled in Settings under Personalization or with [features] memories = true. They hold generated state — summaries and durable entries derived from your chats — stored in ~/.codex/memories/, global rather than per-project, and local to that machine.

Keeping both tools open forever. The honest workaround, and now better supported since re-imports sync. It also means you maintain two divergent sets of standards and find out where they diverged at review time.

The pattern: every workaround manages configuration well and knowledge badly.

The Fix: Keep the Knowledge Out of Both Tools' Config

Split what you're moving into two piles, because they have different homes.

Configuration should live in the tool, and importers now handle it. Rules, skills, MCP servers, hooks, commands, subagents — let /import do this, then prune. A migration is the one moment someone reads every rule with fresh eyes, so delete what's stale rather than carrying it across.

Knowledge should live outside both tools. The reason behind a constraint, the incident that produced it, the alternatives you rejected, the client's requirements, the architecture decision and its date. None of that belongs in a vendor's config directory, because that's what makes every tool change into an excavation.

MemoryLake is a memory layer for the second pile — decisions, constraints, and source documents in one store, readable from MCP-capable tools like Claude and Codex directly and from ChatGPT through the API. Then an importer only has to move settings, which is the part it's actually good at.

Step 1: Create an API key

Generate a key and make your first request in about 30 seconds. Keep it in your environment or a secret manager rather than pasting it into a session.

Create a MemoryLake API key
Create a MemoryLake API key

Step 2: Upload your first memories

Drop in the documents, images, and files behind your rules: the ADRs, the incident writeups, the client requirements, the API contracts, the RFC everyone agreed to. Upload the sources rather than a summary — the summary is exactly the form in which reasons get lost.

Upload your first memories to MemoryLake
Upload your first memories to MemoryLake

Step 3: Connect your AI & agents

Give Claude, Codex, OpenClaw, and other AI agents access to memory via MCP or the API. Codex and Claude Code both speak MCP and read the same store directly. For ChatGPT, retrieve what you need through the API and inject it into the prompt or the workflow that calls the model.

Connect your AI and agents via MCP
Connect your AI and agents via MCP

What this changes in practice

The first difference is that the import becomes boring, which is what you want from an import. Settings move, you prune, you're done — instead of a week of noticing things the new agent doesn't know.

The second is that parallel running stops causing drift. During any real migration you use both tools, and now conversations re-sync cleanly. But rules you refine in one tool still don't propagate to the other. When the constraints live in a shared store, both agents read the same current version, and the copy you keep re-explaining stops existing in two versions.

The third is that leaving a tool stops ending the sync. Sync is a bridge between two vendors' stores; a shared layer is a store neither vendor owns. When you drop the old subscription, one of those keeps working.

And it composes with each tool's native memory. Codex memories keep learning your habits locally; Claude Code's project memory keeps accumulating build commands per repo. Both are useful and both are machine-local — which is why the thing your teammate needs to know can't live only there, the same gap behind agents that each learn your project separately.

Best practices for importing between coding agents

Import, then prune the same day

Whatever comes across is now yours to maintain. Read every rule once, delete the ones written for a service that no longer exists, and shorten the rest. Codex loads AGENTS.md into context every session, so length costs you adherence on the rules that matter.

Re-express scope as directory position

Cursor expresses scope with activation modes and glob patterns; Codex expresses it with where the file sits. A rule that only applies to the billing service belongs in billing/AGENTS.md, not in the root file with a qualifier attached. Location is enforced; a qualifier is a hope.

Treat imported conversations as reference, not memory

Bringing 30 days of chats across is useful for continuity and terrible as a knowledge base — it's a transcript, with the same problems every transcript has. If something in those chats is a decision, write it down as a decision somewhere else.

Decide about generated memory deliberately

Codex memories being off by default is a reasonable default, and turning them on is also reasonable. Just don't let anything you'd be upset to lose exist only as generated state on one machine, and remember it's global rather than per-project, so it mixes contexts across your work.

Do the manual export while you still have access

Anything that lives in a web app rather than a file — a consumer chat app's memory, a hosted agent's notes — has to be copied out by hand, and only while you're still paying. That's the one step with a deadline; every other part of a migration can be redone later.

Conclusion

The August 7 release made Codex's importer meaningfully better: Cursor-managed skills now come across, and previously imported Claude and Cursor conversations re-sync instead of duplicating. If a hand-rebuild was your reason for not switching, that reason is mostly gone.

What hasn't changed is the shape of the boundary. Importers move configuration and conversation records; standard Claude chat data still can't be imported at all; and the reasoning behind your conventions was never in a file to import. So use the importer for settings, prune what arrives, and keep the durable material — decisions, constraints, incidents, client requirements — in a store that isn't inside either tool. Then the next release note is a convenience rather than a rescue.

Frequently asked questions

What exactly did the August 7 Codex release add?

Two things, per the release note for rust-v0.147.0: importing Cursor-managed skills, and synchronizing changes to already-imported Claude and Cursor conversations without creating duplicates. Supporting work in the same release parsed Claude and Cursor session records separately and preserved working directories when importing external sessions.

Can Codex import from Cursor now, or only Claude Code?

Both. Claude Code was the original source, Cursor support followed, and this release added Cursor-managed skills specifically. The documented list of what transfers covers instruction files, configuration, skills and plugins, MCP servers, hooks, slash commands, subagents, project folders and memories, and recent chats.

Will it import my ChatGPT or Claude app memory?

No. The documentation states that standard Claude Chat data cannot be imported, and ChatGPT data isn't a supported source either. Consumer chat memory has no export path, so getting it out means reading your memory settings and copying what matters by hand.

Does syncing mean I can keep using both tools indefinitely?

You can, and it works better than before. Just be clear about what sync is: the other tool remains the authority for those conversations, so the arrangement lasts as long as you keep that tool. It's a migration bridge, not shared ownership.

Do I still need to write AGENTS.md by hand?

Less of it. The importer places instruction content for you, but scoping and pruning are still judgment calls, and Codex resolves instructions by directory position rather than by activation rules. Expect to reorganize what arrives rather than write it from nothing.

How many chats can I bring over?

The last 30 days, up to 50 conversations. Treat them as recent history rather than a knowledge base: they're useful for resuming work in progress, and they don't distinguish the approach you settled on from the three you discarded along the way.

Why doesn't an importer solve the context problem?

Because the context isn't in the files. Rules capture the conclusion; almost nobody writes down the incident, the constraint, or the rejected alternative that produced it. That's why a fully imported setup can still propose the thing your team ruled out — and why retrieval over documents isn't the same as memory unless the reasons are in those documents.