BuildNot yet confirmed elsewhere1 publisher3 min readPublished
Seven harnesses took the transcript. None of them took the approvals.
A frozen Claude Code session moved cleanly into seven rival agent formats. The approval and audit machinery wrapped around it moved into none of them.
The Engineer · Build desk
What happened
- A developer froze one real Claude Code session and pushed it through session-migrate 0.8.0 into seven competing agent formats to see how much survived.
- The source was 341,646 bytes and 90 records, holding 20 tool-use blocks, 20 tool-result blocks and 11 thinking blocks.
- Every target lost between 54 and 57 items, and every one of them lost exactly 9 thinking blocks.
- The repeat casualties were source-side metadata, tool-reference records and private thinking, with Codex also dropping a session title.
- Slack pitches Slack Code the other way round, as inheriting Slack's existing permissions and admin controls so IT configures and audits nothing new.
Why it matters
- constraint Portability that stops at the transcript leaves the cost of leaving a vendor dominated by the controls rather than the conversation, because the narrow event timeline has nowhere to put...
- exposure The command sold as de-risking a migration is also an egress path: session contents that may include production-log fragments and real data samples get written into a second vendor's directory on...
- decision Anyone accountable for agent-driven changes to payments or production access now has to pick the audit surface first and the harness second, since the harness is the part that ports.
The loss manifest is the part worth reading twice, and not for its size. Across seven separate targets the dropped totals sat in a band three items wide, 54 to 57 [6][18]. If target design governed preservation, picking a better destination would buy something measurable. It buys three records. The author's reading is that the source session's own event vocabulary decides what can enter the intermediate model at all [8], and the documented design agrees: the validated event timeline in the middle is deliberately narrow, wide enough for ordered conversation events and closed to client-resident configuration [9].
That is where the approval story ends. Approval gates and audit settings sit on the client side of that boundary, which is why the transcript arrives and the controls do not [2]. It is not a gap that a later release closes by adding a field.
Private thinking makes the size of the hole legible. The frozen source carried 11 thinking blocks [4], and every one of the seven targets dropped 9 of them [6], roughly 82 percent [17]. Tool-use and tool-result blocks numbered 20 and 20 [4], so the record of what the agent touched survives better than the record of why it decided to. For a developer resuming work, that trade is fine. For the question the author says keeps arriving at engineering leadership, "three months from now, where can we see why this agent made that change" [11], it is close to a total loss.
Note what the manifest itself is: a count of omissions and transformations carrying no content [9]. It can tell you that 57 things did not survive. It cannot tell a reviewer which 57, which makes it a migration receipt rather than an audit record.
The contrast the author draws is with Slack Code, and it is Slack's own account. Slack says a coding-agent mention can create a channel that gathers the relevant people, the diffs and the planning documents, then archives as a searchable record [12], and that important changes can be routed to a person for approval inside that channel [13]. The mechanism, not the product, is the transferable part: the durable record and the approval event live somewhere that already has an administrator, instead of being stood up again inside whichever harness a developer adopts next quarter.
Two caveats on the numbers. Freezing the session was not fastidiousness; the live file kept growing during the first attempt, so each conversion was being measured against a different source [3]. And the run happened in a Python 3.12 environment on macOS while the README claims Python 3.11 or later and Linux [14], so this is one sample, taken outside the stated support boundary. The shape holds even if the decimals do not: seven destinations produced one loss profile, and the thing an auditor would ask for was in none of them.
What to watch
- Whether the remaining five supported harness formats land in the same 54-to-57 loss band, or one of them carries tool-reference and thinking records across.
- Whether the migration manifest ever carries evidence a reviewer can use rather than arithmetic about what went missing.
- Whether approval events created inside Slack Code can be exported or retained outside Slack, or whether that plane becomes its own lock-in.
Clarity's read
What the record supports and how the coverage leans. The claims behind it follow.
Reality
- Evidence58
- Adoption20
- Hype gap+12
- Incentives38
- Confidence55
Claim ledger
Ranked by verification strength, evidence, and original report placement.
- [1]
The author froze one real Claude Code session, inspected it, and transferred it into seven target formats using session-migrate 0.8.0, to test whether portable coding-agent sessions materially reduce vendor lock-in.
- [2]
The useful conversation and tool context traveled surprisingly well, but the controls that make agent work safe in an organization did not move at all.
- [3]
Freezing the session was essential because a live session file continued to grow during the first attempt, meaning each target conversion was being compared against a different source population.
- [4]
The source was one frozen Claude Code session of 341,646 bytes and 90 records, containing 20 tool-use blocks, 20 tool-result blocks and 11 thinking blocks.
- [5]
The session was transferred into Codex, Pi, GitHub Copilot CLI, Qwen Code, Kimi Code, Muse Code and Mistral Vibe, each target home isolated under /tmp; targets produced 33 to 50 records, a spread the author attributes to target formats splitting equivalent content into different record units rather than to different information preservation.
- [6]
Dropped totals clustered tightly between 54 and 57 across all seven targets, while the dropped-thinking count stayed fixed at 9.
- [7]
The recurring omissions were source-side metadata records, tool-reference records and private thinking; Codex additionally dropped one session title, and Vibe retained two tool-reference records that the other targets dropped.
- [8]
Changing the target did not materially change the loss; the source session's event vocabulary determined what could enter the intermediate model.
- [9]
The project describes the conversion path as native session to validated event timeline to native target to resume; the intermediate timeline is intentionally small, so ordered conversation events can pass through it but client-resident configuration cannot, the source session remains untouched, and omissions or transformations are counted in a content-free migration manifest.
- [10]
Session files can contain production-log fragments, schema details, attached artifacts and sometimes samples of real data, so a command that converts such a session into another vendor's native format opens another route for data export.
- [11]
The author reports that engineering leadership eventually asks "Three months from now, where can we see why this agent made that change?" and calls the answer "somewhere in a developer's local session files" an operational defect when the change touches identity, payments, member data or production access.
- [12]
Slack says that mentioning a coding agent can create a dedicated code channel, gather relevant people, collect code diffs, planning documents and live HTML previews, then archive the completed channel as a searchable record.
- [13]
Slack says Slack Code inherits Slack's existing permissions and administrator controls, so IT does not have to perform new configuration or auditing, and that important changes can be routed within the channel to a fast approval flow by the responsible person.
- [14]
The author installed session-migrate 0.8.0 in a Python 3.12 virtual environment on macOS despite the README stating support for Python 3.11+ and Linux; installation and startup worked, which does not change the published support boundary.
- [16]
Seven of the tool's 12 supported harness formats were tested, leaving five untested.
- [17]
The 9 thinking blocks dropped by every target represent about 82 percent of the 11 thinking blocks in the frozen source session.
- [18]
The difference between the heaviest and lightest drop total across the seven targets is three items.
Sources
1 independent publisher whose own reporting we read for this story.
Topics and entities
Follow any of these and your For You feed starts watching them — no settings page required.
Topics
- AI Coding AgentsFollow
- Agent Session PortabilityFollow
- Agent Governance and AuditFollow
- Data Exfiltration RiskFollow
- Proprietary Tooling and Vendor Lock-InFollow