Launch the Codex CLI under the capture proxy, or capture the self-launching ChatGPT desktop app through lifecycle hooks.
Codex comes in two shapes, and they use different capture lanes. The terminal CLI is launched by the client, like Claude Code. The ChatGPT desktop app launches itself, so the client cannot wrap it — it is captured through lifecycle hooks instead.
Before you start
Section titled “Before you start”A running server and an installed client, as on the installation page:
tapes local uptapes serveCodex brings its own provider credentials; capture does not touch them.
The terminal CLI
Section titled “The terminal CLI”Launch it through the client:
tapesctl start codexWork the session, exit, and the captured turns are on the server:
tapesctl sessions listCapture defaults to the ingest API on http://localhost:8082 and reads
default to the read API on http://localhost:8081. For a server elsewhere,
set them once with tapesctl config set ingest-url <url> and
tapesctl config set api-url <url>.
The ChatGPT desktop app
Section titled “The ChatGPT desktop app”The app launches itself, so the lane inverts: install the plugin once, then run a capture window and start a session in the app.
tapesctl plugin install codex-apptapesctl capture codex-appplugin install codex-app writes the handoff file and points the app’s Codex
configuration at the capture address; capture reads that handoff and binds
it. Running capture first fails and tells you to install.
To undo the wiring, tapesctl plugin uninstall codex-app removes the provider
entry and the handoff. The plugin stays registered with Codex; the command
prints the codex plugin remove line that finishes the job.
Next steps
Section titled “Next steps”- Capture a Claude Code session — the same launched lane on the other major harness.
- Agent integrations — the full harness table and which lane each one uses.
- Search captured sessions by meaning — everything you capture is queryable the same way, whatever harness produced it.