{"slug": "agent-session-portability-txcript-acp-and-what-a-moved-session-loses", "title": "Agent session portability: txcript, ACP and what a moved session loses", "summary": "Skillsync launched txcript on Hacker News on 17 September 2026, an open-source Rust engine that converts coding-agent sessions between 11 agents including Claude Code, OpenAI Codex and Cursor, while the company's founders claim \"nothing is lost\" and txcript's own README states that \"Agent-specific records and unsupported fields can be lost.\" txcript moves a session with two commands — `txcript list --from claude_code` and `txcript continue <session-id> --with codex` — mapping messages through a common model of six block types (text, thinking, tool use, tool result, image, artifact) and translating calls such as Claude Code's `Bash` into Codex's `exec_command` and `Edit`/`Write` into `apply_patch`. Converting a session back into the same agent is lossless, but converting it into a different agent is not, and the tool must track undocumented, version-changing formats — Anthropic's session docs warn the entry format \"is internal to Claude Code and changes between versions,\" and txcript reverse-engineered Google Antigravity's SQLite conversation format.", "body_md": "# Agent session portability: txcript, ACP and what a moved session loses\n\nAgent session portability is moving a coding agent's saved conversation, with its prompts, replies, reasoning and tool calls, into a different agent so the work carries on there. It reached the Hacker News front page on 17 September 2026, when [Skillsync](https://stackness.dev/tools/skillsync) launched on Hacker News with [txcript](https://stackness.dev/tools/txcript), an open Rust engine that converts sessions between 11 agents including [Claude Code](https://stackness.dev/tools/claude-code), [OpenAI Codex](https://stackness.dev/tools/codex-cli) and [Cursor](https://stackness.dev/tools/cursor). The founders say nothing is lost; txcript's own docs and code list what is.\n\n## What is agent session portability?\n\nAgent session portability is the ability to take the session file one coding agent writes to disk and continue it in another agent. A converter reads the source agent's file, maps each message, reasoning block and tool call to a common model, and writes a new native session for the target agent, which then resumes it like one of its own.\n\nEvery agent keeps its own format in its own folder. As of October 2026:\n\n| Agent | Where sessions live | Resume command | \n|---|---|---|\n| Claude Code | `~/.claude/projects/<project>/<session-id>.jsonl` | `claude --resume <id>` | \n| Codex CLI | `~/.codex/sessions/YYYY/MM/DD/rollout-<timestamp>-<uuid>.jsonl` | `codex resume <id>` | \n| [Gemini CLI](https://stackness.dev/tools/gemini-cli) | `~/.gemini/tmp/<project_hash>/chats/` | `gemini --resume` | \n| [Google Antigravity](https://stackness.dev/tools/google-antigravity) CLI | `~/.gemini/antigravity-cli/conversations/<uuid>.db` (SQLite) | `agy --conversation=<id>` | \n\nAnthropic's [session docs](https://code.claude.com/docs/en/sessions) warn that \"the entry format is internal to Claude Code and changes between versions\", and the Antigravity format is not documented at all: txcript reverse-engineered it. A converter is chasing several moving targets at once.\n\n## How txcript moves a Claude Code session into Codex\n\ntxcript converts a session in two commands: list the sessions one agent has on disk, then continue one of them in another agent. It writes a new native session for the target, leaves the source untouched and launches the target agent in the recorded working directory. Install it from GitHub releases or build it with Cargo.\n\nFrom the [txcript README](https://github.com/skillsynchq/txcript):\n\n```\ncargo install --git https://github.com/skillsynchq/txcript txcript-cli --locked\n\ntxcript list --from claude_code\ntxcript continue <session-id> --with codex\n```\n\nAfter writing the file, txcript runs the target's own resume command, here `codex resume <id>`. The [usage docs](https://github.com/skillsynchq/txcript/blob/main/docs/usage.md) add `--no-resume` to write without launching, a `#5-12` suffix on the ID to carry only some messages and `txcript crop` to trim the history into a new copy. The README adds `txcript export <id> --out run.json` to move a session to another machine: \"Bring the project files separately.\"\n\nInside, every conversion goes from the source format to one common model with six block types (text, thinking, tool use, tool result, image, artifact) and out to the target format. Claude Code's `Bash` call becomes Codex's `exec_command`, `Edit` and `Write` become `apply_patch`, and MCP calls keep their names. Converting a session back into the same agent is lossless. Converting it into a different agent is not.\n\n## What a moved session loses\n\nA moved session loses whatever the target agent cannot represent and everything that never lived in the transcript. The txcript README says so: \"Agent-specific records and unsupported fields can be lost.\" On Hacker News a Skillsync co-founder [wrote](https://news.ycombinator.com/item?id=49792971) \"Everything is retained including tool calls, reasoning\", and the YC page says \"nothing lost\". txcript's code on main as of 14 October says:\n\n| Part of the session | Claude Code to Codex in txcript | \n|---|---|\n| User and assistant text | Carried | \n| Tool calls and results | Carried, renamed to Codex tools; Bash timeout and background flags dropped | \n| Thinking | Text carried as a Codex reasoning summary; Claude's signature dropped; redacted thinking dropped | \n| Subagent transcripts | Not carried: the `subagents/` folder is skipped | \n| Checkpoints (file snapshots) | Not carried: they live in `~/.claude/file-history/` , outside the transcript | \n| Compaction markers, hook notices, modes | Dropped | \n| MCP state, hooks, permissions, login, skills, project files | Never part of the transcript, never moved | \n\nThree bugs matter if you try it today. The latest release, v0.14.4 from 13 September, writes Codex tool calls named `Bash` and `Edit`, which Codex does not have, so \"the resumed session breaks\" ([issue #59](https://github.com/skillsynchq/txcript/issues/59)). The issue closed on 23 September with a fix on main, but no release carries it yet. Two more are open. A session that ended in the middle of a tool call is reported to fail on resume in Claude Code with an HTTP 400 ([#68](https://github.com/skillsynchq/txcript/issues/68)), though the reporter had not tried it live. Tool results made of several blocks, such as MCP output with a screenshot, arrive as one JSON string with the image inline as base64 ([#89](https://github.com/skillsynchq/txcript/issues/89)).\n\nA second converter, [session-migrate](https://stackness.dev/tools/session-migrate) (MIT), decides differently: it drops all private or signed thinking on purpose and states that \"Auth, hooks, policies, MCP, and runtime config\" stay with the source client. Jangwook Kim [tested it](https://dev.to/jangwook_kim_e31e7291ad98/i-treated-agent-sessions-as-portable-cache-and-moved-control-to-a-policy-plane-vendor-lock-in-15j4) on one Claude Code session of 90 records into seven agents: 54 to 57 records were dropped every time, mostly metadata, tool-reference records and private thinking, while \"the useful conversation and tool context traveled surprisingly well\". That is one session, so read it as an example rather than a rate.\n\n## Where portability sits next to ACP and memory tools\n\nSession portability, the Agent Client Protocol and agent memory each fix a different kind of lock-in. ACP lets one editor drive many agents, but each agent keeps its own history. Memory tools carry summaries across many sessions. A converter carries one whole conversation into a different agent. They combine; none replaces another.\n\n[ACP](https://stackness.dev/tools/agent-client-protocol), announced by [Zed](https://stackness.dev/tools/zed) [in August 2025](https://zed.dev/blog/bring-your-own-agent-to-zed), is JSON-RPC between an editor and an agent, the way LSP is between an editor and a language server. [agent-shell](https://stackness.dev/tools/agent-shell), the [Emacs](https://stackness.dev/tools/emacs) client by Álvaro Ramírez, added Antigravity and [Qoder CLI](https://stackness.dev/tools/qoder-cli) in [version 0.78](https://xenodium.com/agent-shell-0-78-updates) on 22 September and lists 23 ACP agents. The spec's `session/load` replays a session, but only one the same agent created, looked up by that agent's own ID. I found nothing in the spec or its design proposals that imports another agent's history, though the spec never says so outright. agent-shell's resume asks which agent you want, then resumes that agent's session. Switching agents there means a new conversation.\n\n[claude-mem](https://stackness.dev/tools/claude-mem) works through hooks: it records tool use, writes summaries into SQLite and a vector store, and feeds the relevant ones into later sessions. The [memory vs documentation post](https://stackness.dev/blog/agent-memory-vs-documentation-which-slot-a-memory-plugin-fills-and-which-one-the-repo-does) covers that slot. The two meet in Skillsync itself: its homepage now leads with \"instant recall\" across past sessions in the $20 Pro app, while conversion stays in the free, open-source txcript.\n\n|  | What moves | What stays | Example | \n|---|---|---|---|\n| Live protocol | Your editor, across agents | Each agent's history | ACP in agent-shell, Zed | \n| Session conversion | One conversation, into another agent | Settings, hooks, MCP, subagents | txcript, session-migrate | \n| Memory | Summaries, across many sessions | The raw transcript | claude-mem | \n\n## How many developers run more than one coding agent\n\nNo survey asks directly how many developers run two coding agents at the same time, but the closest numbers say it is common. In the [Stack Overflow 2026 survey](https://survey.stackoverflow.co/2026/ai/data/ai-code-agent), 65.5% of 12,255 respondents had used Claude Code in the past year and 58.7% GitHub Copilot, so at least 24% used both.\n\nThat 24% is my arithmetic (65.5 + 58.7 − 100), and \"in the past year\" includes people who switched rather than ran both. The same survey found 79.7% use two or more AI tools of any kind in a typical week ([n = 11,919](https://survey.stackoverflow.co/2026/ai/data/ai-tool-count)). In the [JetBrains 2026 survey](https://blog.jetbrains.com/research/2026/08/ai-coding-agent-adoption-2026/), 39% use Claude Code at work and 31% name it their main tool, so about 8% use it beside something they rely on more.\n\nOn Stackness, as of 18 October 2026, 14 real public profiles list at least one coding agent after removing six labelled bot accounts, and 6 of them list two or more. One of the six is mine. The most common pair is Claude Code with Cursor, on four profiles. That is a small sample, counted the way the [September switching post](https://stackness.dev/blog/which-ai-coding-tools-are-developers-switching-to) counted it ([data sources](https://stackness.dev/about/data-sources)). Then as now, people add agents beside each other more often than they replace one, which is the case a converter is built for.\n\n## Shipped, claimed, and who can skip it\n\ntxcript has shipped: Apache-2.0, 181 GitHub stars, release v0.14.4, read and write for 11 agents, read-only for [Amp](https://stackness.dev/tools/amp), Hermes and live claude.ai and [ChatGPT](https://stackness.dev/tools/chatgpt) accounts. \"Nothing lost\" is a claim the code contradicts. Gemini CLI and Qoder are not supported, and Antigravity support covers the `agy` CLI, not the IDE.\n\nYou need a converter if you hit a usage limit mid-task and want to finish in another agent, which is Skillsync's own example, if you hand sessions between people, or if you plan in claude.ai and want the chat inside a coding agent. The other agents for that job are on the [AI coding tools hub](https://stackness.dev/categories/ai-tools).\n\nYou can skip it if you use one agent, if your decisions already live in pull requests and notes (one HN commenter's answer was a work journal in markdown), or if what you want is one editor for several agents, which ACP already gives you.\n\n## Where to start with agent session portability\n\nBefore moving a session, check five things: the target is supported for writing, your txcript build has the Codex fix, the session did not end mid-tool, nothing depends on subagents or MCP screenshots, and the target has the same hooks, MCP servers, instruction files and project checkout. Then convert with `--no-resume` first and read the result.\n\n1. Build txcript from main, not v0.14.4, if the target is Codex.\n2. Run `txcript continue <id> --with <agent> --no-resume` , open the new session file, and check that the last tool call has a result.\n3. Re-create on the target what never moves: hooks, permission mode, MCP servers, `AGENTS.md` or`CLAUDE.md` , and skills. The[AGENTS.md vs CLAUDE.md vs skills post](https://stackness.dev/blog/agents-md-vs-claude-md-vs-skills-which-layer-each-instruction-belongs-in-and-what-to-delete) shows which file each agent reads.\n4. Use the `#range` suffix or`txcript crop` on long sessions. A co-founder noted on HN that the receiving agent \"sometimes decides to compact it\".\n5. Treat the converted file like a log export: it holds every file, command output and paste that went through the tools. Claude Code deletes transcripts after 30 days by default, so convert before cleanup if you want one kept.\n\n## New posts by email\n\nAbout one email a week with what we published. No account needed.\n\n## Which of these do you use?\n\nNobody on Stackness runs Skillsync yet. Tick what you use and be the first.\n\n[Play Lonny Eagle Amateur Skater 4A pixel art skateboarding game. Signing up opens it straight away.Sign up to play](https://stackness.dev/games/lonny-eagle)", "url": "https://wpnews.pro/news/agent-session-portability-txcript-acp-and-what-a-moved-session-loses", "canonical_source": "https://stackness.dev/blog/agent-session-portability-txcript-acp-and-what-a-moved-session-loses", "published_at": "2026-10-18 13:06:05+00:00", "updated_at": "2026-10-18 14:48:50.878027+00:00", "lang": "en", "topics": ["ai-agents", "ai-tools", "developer-tools", "agent-protocols"], "entities": ["Skillsync", "txcript", "Claude Code", "OpenAI Codex", "Cursor", "Gemini CLI", "Google Antigravity", "Anthropic"], "also_reported_by": [], "alternates": {"html": "https://wpnews.pro/news/agent-session-portability-txcript-acp-and-what-a-moved-session-loses", "markdown": "https://wpnews.pro/news/agent-session-portability-txcript-acp-and-what-a-moved-session-loses.md", "text": "https://wpnews.pro/news/agent-session-portability-txcript-acp-and-what-a-moved-session-loses.txt", "jsonld": "https://wpnews.pro/news/agent-session-portability-txcript-acp-and-what-a-moved-session-loses.jsonld"}}