Skip to main content

agent-migrator

A CLI tool for migrating conversation history between AI coding tools.

Supported Coding Agents

  • Claude Code (Anthropic)
  • Codex (OpenAI)
  • Gemini CLI (Google)
  • Cursor

All pairs are supported bidirectionally.


Setup

Requires uv.

Install globally (recommended):

uv tool install agent-migrator

Or run without installing:

uvx agent-migrator

Usage

Interactive

Run from inside a project directory:

agent-migrator

The CLI walks you through:

  1. Tool selection — choose source and destination.
  2. Conversation selection — pick conversations to migrate, sorted most-recent-first.
  3. Migration progress — each conversation is processed in sequence; Ctrl+C cancels and rolls back.
  4. Summary — a results table shows successes and errors.

Cursor: the project path must be a directory that has been opened as a workspace in Cursor at least once.

Non-interactive

Two subcommands expose the same engine for scripting and agentic use. Both accept --dir <path> (defaults to cwd) and print JSON to stdout; errors go to stderr as {"error": "..."} with exit 1.

List conversations:

agent-migrator list --from claude-code --dir /path/to/project
[{"id": "63ec7bb1-...", "name": "pwa-capabilities-demo", "updated_at": "2026-05-21T23:23:00", ...}]

Migrate a conversation:

agent-migrator move --from claude-code --to codex --id 63ec7bb1-... --dir /path/to/project
[{"source_id": "63ec7bb1-...", "destination_id": "019e51f7-...", "name": "pwa-capabilities-demo"}]

Omit --id to migrate all conversations for the project. Run agent-migrator list --help or agent-migrator move --help for full options.


What gets migrated

All pairs support:

Feature Status
Text messages (user and assistant)
Tool calls (Read, Write, Edit, Bash, Glob, and equivalents)
Plan (presented natively in the destination tool's plan UI)

(Any) → Cursor is the one exception: plans are migrated as context documents but are not surfaced in Cursor's native plan mode UI.

(Any) → Cursor also requires a server upload to Cursor's ConvertOALToNAL endpoint to make all models available. If that fails (e.g. not logged in), the CLI offers a local fallback that provides full context but restricts model selection to Anthropic models.


How it works

Conversations are read into a tool-agnostic normalized format (TextMessage and ToolCallMessage turns) and written out in the destination format. Each tool is implemented as a AgentAdapter subclass in agent_migrator/agents/. This decouples all source/destination pairs — adding a new tool requires only a new adapter; all existing migration paths continue to work unchanged.

Extensibility

To add support for a new coding agent, implement the AgentAdapter interface in agent_migrator/agents/ and register it in cli.py:

class MyAgentAdapter(AgentAdapter):
    name = "My Agent"
    tool_id = "myagent"

    def is_available(self) -> bool: ...
    def list_conversations(self, project_path: Path) -> list[ConversationInfo]: ...
    def read_conversation(self, conv_id: str, project_path: Path) -> Conversation: ...
    def write_conversation(self, conv: Conversation, project_path: Path, *, use_local_backend: bool = False) -> str: ...
    def delete_conversation(self, conv_id: str, project_path: Path) -> None: ...

Storage locations

Tool Location
Claude Code ~/.claude/projects/<encoded-path>/<session>.jsonl
Codex ~/.codex/sessions/YYYY/MM/DD/rollout-<timestamp>-<id>.jsonl
Gemini CLI ~/.gemini/tmp/<project-slug>/chats/session-<timestamp>-<id>.jsonl
Cursor %APPDATA%/Cursor/User/globalStorage/state.vscdb (SQLite)

Release files for agent-migrator 0.1.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for agent-migrator 0.1.1
File Size Uploaded
agent_migrator-0.1.1.tar.gz 73.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for agent-migrator 0.1.1
File Interpreter ABI Platform
agent_migrator-0.1.1-py3-none-any.whl Python 3 none any Details

Total release size: 139.0 kB

Release files / agent_migrator-0.1.1.tar.gz

Download URL agent_migrator-0.1.1.tar.gz
Size 73.7 kB
Tags Source
SHA-256 checksum
How to use checksums
70bf7221a97f0489fa5f7698b2dca942975e94afc352fcf787554253f48bed42
BLAKE2b-256 checksum
How to use checksums
566a370396892d297e5aff89d06360c04d7a483898a3f44d6f5e4e293af8cbad
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.9.11 {"installer":{"name":"uv","version":"0.9.11"},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release files / agent_migrator-0.1.1-py3-none-any.whl

Download URL agent_migrator-0.1.1-py3-none-any.whl
Size 65.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
ac9fa5bc5980057bde3387b2b3ee3730ac3456901df13fe9f001dfc8d8778fc8
BLAKE2b-256 checksum
How to use checksums
111646cb1eab6d3b407465b5c03eb2f76ec58c771794dd17288f13e5312c3915
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.9.11 {"installer":{"name":"uv","version":"0.9.11"},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release history Release notifications | RSS feed

This release

0.1.1 This release

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page