Skip to main content

Runtime overview

Beacon collects Claude.ai chat telemetry through the optional browser extension. Every turn on claude.ai becomes prompt, response, and tool events in the local runtime log, attributed to the claude_web harness so it stays separate from Claude Code and other CLI agents. Support is in beta. The claude.ai 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.
  • claude.ai 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 claude.ai’s completion endpoint. The Claude adapter reads the Anthropic-style Server-Sent Event stream and rebuilds one turn from it: 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 message_stop is still delivered, recorded as agent.response rather than agent.response.completed.

Events

One claude.ai 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

Confirm it is working

Send one message on claude.ai, then look for the event:
To read the most recent one, including its token counts:
On a system-mode install the log lives at /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.
  • Only the chat stream is read. Attachments, artifacts rendered outside the stream, and project files are not captured.
  • Prompt text comes from the request body. A turn sent through a path the adapter does not recognize arrives with the response but without the prompt.
  • Token counts are usually absent. The adapter reads uncached input, cache creation, cache read, and output counts from the message_start and message_delta usage objects, but no claude.ai capture on hand has carried a usage object at all. Turns therefore normally reach beacon token-usage with no token attribution, and Beacon does not estimate counts it was not given. If the site starts sending them, they land in gen_ai.usage with no extension change.
  • Retention defaults to full. Prompt and response text is retained unless you change the mode in the extension’s popup. See retained content.

Browser Extension

Install, configure, and verify the extension.

ChatGPT

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.