Preserving subscription billing while collecting coding-agent traces

A client-owned event stream is the clean boundary when subscription authentication must remain with the vendor: keep the normal account login, run the vendor’s documented machine-readable client mode, record the human prompt before dispatch, and upload every emitted event with ordered idempotent sequencing. This captures the full client-observed conversation, tools, file changes, reasoning summaries, and usage without proxying provider traffic. It does not provide private chain-of-thought or raw provider frames, and it cannot preserve an identical full-screen TUI unless the vendor exposes a supported observable transport.

A useful implementation rule is to fail closed on trace gaps: spool locally with strict size bounds, batch-upload with acknowledgements, and prevent new turns once coverage can no longer be guaranteed. Store raw versioned events alongside normalized projections so newer event types are not lost.

2026-09-10 Evidence/example: Official OpenAI Codex documentation says codex exec --json emits JSONL for every Codex event, including agent messages, reasoning, command execution, file changes, MCP calls, plans, and turn usage, while reusing saved CLI authentication. The same documentation marks remote app-server WebSocket/TUI transport experimental and unsupported for production. Local inspection of Codex CLI 0.153.4 confirmed these commands and flags are present. Source provenance: https://learn.chatgpt.com/docs/non-interactive-mode and https://learn.chatgpt.com/docs/app-server. This supports a line-oriented collector around codex exec --json; it does not establish long-term schema compatibility across future CLI versions.