cd /news/ai-agents/move-ai-chats-across-harnesses-claud… · home topics ai-agents article
[ARTICLE · art-130816] src=github.com ↗ pub= topic=ai-agents verified=true sentiment=↑ positive

Move AI chats across harnesses: Claude Code, Codex, OpenCode, Cursor, and more

Skillsynchq released txcript, an open-source library and CLI that converts AI coding-agent sessions between harnesses including Claude Code, Codex, OpenCode, and Cursor, carrying over messages, reasoning, and tool history where the target supports them. The tool ships as a Rust crate (requiring Rust 1.96 or newer), a JavaScript package with prebuilt WebAssembly for Node and Bun, and downloadable binaries for macOS, Linux, and Windows, and it also exposes a read-only MCP server via `txcript mcp` for listing, searching, and reading past sessions. txcript preserves the source session while writing a new native session and launching the target agent in the recorded working directory.

read4 min views1 publishedSep 15, 2026
Move AI chats across harnesses: Claude Code, Codex, OpenCode, Cursor, and more
Image: Michielbdejong (auto-discovered)

Continue your conversation in another coding agent.

English | 日本語 | 简体中文 | 繁體中文 | 한국어 | Deutsch | Español | Français | Italiano | Português (Brasil) | Русский | मराठी | தமிழ்

txcript is a library for converting agent sessions. Start a conversation in Claude Code and continue it in Codex, carrying over messages, reasoning, and tool history where the target supports them.

Build session search, viewers, and editors against one transcript model. txcript handles the agent-specific formats, with a Rust API, a JavaScript package, and a CLI.

Try the CLI · Use the library · Supported agents · Documentation

Download a binary for macOS, Linux, or Windows from Releases, or install from source with Rust 1.96 or newer:

cargo install --git https://github.com/skillsynchq/txcript txcript-cli --locked

Find a Claude Code session and continue it in Codex:

txcript list --from claude_code
txcript continue <session-id> --with codex

Use an ID from the list; an unambiguous prefix works too. txcript writes a new native session and launches Codex in the recorded working directory. The source session is kept. Have the target agent installed and signed in before continuing.

Other ways to work with your sessions:

txcript query "relay bug"                # search local session history
txcript view <session-id>                # read a conversation in the terminal
txcript crop <session-id>                # edit or trim history into a new copy
txcript export <session-id> --out run.json

Move run.json to another machine and continue it with txcript continue ./run.json --with claude_code. Bring the project files separately.

Run txcript mcp to let an MCP client list, search, and read past sessions. Its tools are read-only. See the CLI reference for filters, message ranges, and shell integration.

cargo add txcript

Convert a Claude Code transcript into Codex's native format:

use txcript::harness::{claude_code::ClaudeCode, codex::Codex};
use txcript::{TextCodec, convert};

fn main() -> Result<(), Box<dyn std::error::Error>> {
    let input = std::fs::read_to_string("session.jsonl")?;
    let source = ClaudeCode::from_text(&input)?;
    let target = convert::<ClaudeCode, Codex>(&source)?;
    std::fs::write("rollout.jsonl", Codex::to_text(&target)?)?;
    Ok(())
}

Use Store implementations to discover, load, and save sessions in an agent's own storage. Convert to Transcript<Common> to search, crop, or render conversations through the same API across agents. See the Rust API and examples.

npm install txcript
js
import { convert } from "txcript";
import { readFileSync, writeFileSync } from "node:fs";

const input = readFileSync("session.jsonl", "utf8");
const output = convert(input, "claude_code", "codex");
writeFileSync("rollout.jsonl", output);

The package includes prebuilt WebAssembly for Node and Bun. It converts and searches session text in memory; your application handles files and storage. See the JavaScript reference.

Each name links to its format documentation. Use the ID with --from and --with.

Agent ID Read from Continue into
Claude Code claude_code Yes Yes
Codex codex Yes Yes
OpenCode opencode Yes Yes
Cursor CLI cursor Yes Yes
Cursor desktop cursor_desktop Yes Yes
pi pi Yes Yes
Campfire campfire Yes Yes
Cowork cowork Yes Yes
Grok CLI grok Yes Yes
Grok Bot grok_bot Yes Via local gateway
fx fx Yes Yes
Antigravity antigravity Yes Yes
Hermes Agent hermes Yes No
Amp amp Yes No
Claude Chat claude_chat Live account No
ChatGPT chatgpt Live account No

Local discovery skips the live accounts. Select --from claude_chat or --from chatgpt explicitly to read them. These sources use private web APIs and reuse an existing app login; requirements and limitations are in their linked docs.

An agent without a native adapter can emit Simple, txcript's interchange JSON. Save a document like this as run.json:

{
  "messages": [
    { "role": "user", "content": "Find why the tests fail." },
    { "role": "assistant", "content": "The test clock is using local time." }
  ]
}
txcript continue ./run.json --with claude_code

Simple also represents reasoning, tool calls, results, images, and metadata. It is the format txcript export writes.

The common model represents messages, reasoning, tool calls and results, images, metadata, and token usage. What survives conversion depends on what the source records and the destination can represent. Agent-specific records and unsupported fields can be lost.

Conversion carries conversation history. The destination supplies its own system instructions and tools, and project files must be available separately. Native load/save and conversion have different preservation guarantees; see each format's caveats.

── more in #ai-agents 4 stories · sorted by recency
── more on @txcript 3 stories trending now
sponsored brought to you by zahid.host 4,200+ EU-deployed projects
reading about agents? ship yours in a single git push.

Run your AI side-project on zahid.host

EU-based hosting, git-push deploys, automatic HTTPS, no cold starts. Free tier with a custom domain — perfect for shipping the agent you just read about.

$git push zahid main
Live at https://your-agent.zahid.host
Get free account → Pricing
from €0/mo · no card required
LIVE [news/move-ai-chats-across…] indexed:0 read:4min 2026-09-15 ·