Skip to content

Support transcripts from other coding agents (Codex, Cursor, Gemini CLI, opencode) #5

Description

@amrit110

backcheck reads Claude Code transcripts today. Nothing about the idea is Claude-specific —
every coding agent writes a session log containing what it said and what it ran, which is all
the analysis needs.

Widening this is the single highest-leverage change to the project: the verification engine,
the runner parsers, and the tamper detection are all agent-agnostic already.

The shape of the work

Only src/transcript.rs is Claude-specific. It normalises a
session file into three things the rest of the code consumes:

  • ToolCall { seq, name, input, result } — what ran, and what it printed
  • AssistantText { seq, text, is_last } — what the agent said
  • ordering, so a claim can be compared against evidence that preceded it

Everything downstream (claims, evidence, verify, tamper, report) already works purely
against those types. Adding an agent means writing a parser that produces them, plus discovery
of where that agent stores its sessions.

Agents worth supporting

  • OpenAI Codex CLI~/.codex/sessions/
  • Cursor — agent session storage
  • Gemini CLI~/.gemini/
  • opencode
  • Aider.aider.chat.history.md (a different shape: prose plus diffs)
  • GitHub Copilot CLI / coding agent
  • Amp, Cline, Roo

Suggested approach

  1. Introduce a Source trait (or an enum) with parse(path) -> Transcript and a
    discover() for the agent's default session location.
  2. Move the current Claude Code logic behind it, unchanged.
  3. Auto-detect by path and file shape, with --agent <name> to force it.
  4. Add a small fixture per agent under tests/fixtures/ — hand-written, never a real
    transcript, since those contain real code and sometimes secrets.

Starting with one agent end-to-end is much more useful than a framework for all of them.
Comment here with which you're taking so two people don't write the same parser.

Worth knowing

Claude Code does not record exit codes, which is why outcomes are recovered from printed
output. If another agent does record them, that is strictly better evidence — the design
should let a source say "I know the exit code" rather than forcing everything through text
parsing.

Metadata

Metadata

Assignees

No one assigned

    Labels

    agent-supportSupport for another coding agentenhancementNew feature or requesthelp wantedExtra attention is needed

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions