Skip to main content

Logs

Each step logs step N: <first line of the cell>, plus the error if the cell failed, and the run ends with completed in N steps, Ns. Stream it to your UI with a logging handler: Long tasks: Live progress. BROWSER_USE_LOGGING_LEVEL=warning turns the step lines off.

Usage and cost

cost_usd covers the model and web searches, not cloud browser time. See Models: Usage and cost and Output.

Transcript and workspace

  • result.messages is the full conversation as Pydantic AI messages: every cell the model wrote and what it returned, with secrets redacted.
  • agent.workspace keeps each cell’s output in .browser-use/cells/, plus screenshots and files the agent saved. It is not deleted after the run. See Files.

OpenTelemetry traces

browser-use runs on Pydantic AI, so Pydantic AI’s instrumentation traces it: one span per run, per model request (chat bu-fast, with tokens and the messages) and per tool call (execute_tool python, with the code and its output). Send them to any OpenTelemetry (OTLP) backend:
To trace to Logfire, follow Pydantic AI’s Logfire guide (logfire.instrument_pydantic_ai()).
Spans carry the task, the code the model writes and what it reads from pages. Typed sensitive_data values are redacted from cell output, but screenshots and page text are not. Pass InstrumentationSettings(..., include_content=False) to keep message content out of the spans.

Not in 1.0

  • Laminar and OpenLIT integrations. 0.x shipped Laminar hooks and an OpenLIT guide. 1.0 has neither; use the OpenTelemetry spans above, which any OTLP backend accepts. The 0.x pages: observability (0.x), OpenLIT (0.x).
  • Per-step hooks and per-action history. 0.x on_step_start / on_step_end and history.action_names() are gone. Use the log handler and result.messages.
browser-use’s own anonymized usage events are a separate thing: see Telemetry.