Runtime overview
Asymptote collects ChatGPT chat telemetry through the optional browser extension. Every turn on chatgpt.com becomes prompt and response events in the local runtime log, attributed to thechatgpt_web harness so it stays separate from Codex CLI and other agents.
Both chatgpt.com and the older chat.openai.com host are covered.
Support is in beta. The ChatGPT chat API is private and undocumented, so a change on the site can interrupt capture until the adapter is updated.
Prerequisites
- The Beacon endpoint is installed and running, and the browser extension is loaded. See Browser Extension for both steps.
- chatgpt.com is enabled in the extension’s options page. It is enabled by default.
Collection path
The extension’s main-world interceptor tees the streamed response from the message-send endpoint,POST /backend-api/f/conversation. The ChatGPT adapter reads the site’s delta_encoding: v1 Server-Sent Event stream, where each frame patches a running document rather than carrying a finished message, and rebuilds one turn from it:
Only the visible assistant message is tracked. Tool and aside messages addressed to another recipient are skipped, so the recorded response is what the user saw.
The service worker then posts the turn to the local collector as OTLP GenAI logs. Events carry
harness.collection_method of otlp.
A turn whose stream is cut off before completion is still delivered, recorded as agent.response rather than agent.response.completed.
Events
One ChatGPT turn produces:
Turns from one conversation share a session id, so a conversation reads as a session in the dashboard even though the site sends no session start or stop signal.
Telemetry coverage
Token usage is the main difference from Claude.ai, which does report counts. Reports that roll up token usage will show ChatGPT web turns with no token attribution.
Confirm it is working
Send one message on chatgpt.com, then look for the event:/var/log/beacon-agent/runtime.jsonl instead, and reading it needs sudo.
If nothing arrives, work through the troubleshooting steps on the extension page.
Limits
- The stream format is private. The adapter is written defensively and degrades to a partial turn rather than failing, but a site change can still stop capture until the adapter is updated.
- Handed-off streams are not captured yet. ChatGPT sometimes moves a response to a separate resume endpoint instead of streaming it inline. Those turns are missed today; capturing them is a planned follow-up.
- No token usage. Nothing in the stream carries token counts, and Asymptote does not estimate them.
- Only the chat stream is read. Uploaded files, canvas documents, and content rendered outside the stream are not captured.
- Retention defaults to
full. Prompt and response text is retained unless you change the mode in the extension’s popup. See retained content.
Related
Browser Extension
Install, configure, and verify the extension.
Claude.ai
The other supported browser chat surface.
Supported agent harnesses
Return to the runtime support overview.
Retention and redaction
How retained content is handled once it reaches the endpoint.

