ryu0118/ctxmv
✨ You no longer need to suffer through rate limits: when one coding agent hits its limit, migrate the session to another and keep going.
Features
- 🔀 Migrate sessions between supported agents (resume-compatible)
- 📋 List sessions across all agents in a unified table
- 💬 Show conversation messages with role-colored output
Supports
- Claude Code
- Codex
- Cursor (CLI agent via
cursor-agent, not the GUI app) - Kimi Code (
kimiCLI) - GitHub Copilot CLI (
copilotCLI; source and target)
Install
curl -fsSL https://raw.githubusercontent.com/Ryu0118/ctxmv/main/install.sh | bashTo update, run the same command. It skips the download if already up-to-date.
# Install a specific version
curl -fsSL https://raw.githubusercontent.com/Ryu0118/ctxmv/main/install.sh | VERSION=0.1.0 bash
# Force reinstall
curl -fsSL https://raw.githubusercontent.com/Ryu0118/ctxmv/main/install.sh | FORCE=1 bashOther methods
Nest (mtj0928/nest)
nest install Ryu0118/ctxmvMise (jdx/mise)
mise use -g github:Ryu0118/ctxmvBuild from source
Requires Swift 6.0+ and macOS 15+.
git clone https://github.com/Ryu0118/ctxmv.git
cd ctxmv
swift run ctxmv <subcommand>Usage
# Claude Code → Codex
ctxmv <session-id> --to codex
# Codex → Claude Code
ctxmv <session-id> --to claude-code
# Any → Cursor
ctxmv <session-id> --to cursor
# Any → Kimi Code
ctxmv <session-id> --to kimi-code
# Any → GitHub Copilot CLI
ctxmv <session-id> --to copilot-cli
# GitHub Copilot CLI → Codex
ctxmv <session-id> --from copilot-cli --to codexMigrating to Copilot CLI requires version 1.0.85 or newer. Copilot CLI syncs sessions to GitHub by default. To keep migrated sessions local, ctxmv disables remote access and export during import and includes the same flags in the resume command; it does not change your Copilot settings.
After migration, the tool prints the resume command:
✅ Session written to: /path/to/session
To resume:
cd -- '/your/project'
codex resume <new-session-id>Note: Cursor may not render migrated past messages in TUI immediately after resume. However, conversation context is preserved and past messages are still available to the agent.
List sessions
# List all sessions across all agents
ctxmv list
# Filter by agent
ctxmv list --source claude-code
ctxmv list --source codex
ctxmv list --source cursor
ctxmv list --source copilot-cli
# Filter by project path
ctxmv list --project /path/to/project
# Limit results
ctxmv list --limit 50Show session messages
# Show messages for a session (full or prefix ID)
ctxmv show <session-id>
# Restrict search to a specific agent
ctxmv show <session-id> --source claude-code
ctxmv show <session-id> --source copilot-cli
# Show raw content without compacting XML-like blocks
ctxmv show <session-id> --raw
# Show only the last N messages
ctxmv show <session-id> --limit 20
# Show all messages, bypassing large-session protection
ctxmv show <session-id> --allLicense
MIT
Package Metadata
Repository: ryu0118/ctxmv
Default branch: main
README: README.md