Agent Traces: every browser session as a prompt

nkko1 pts0 comments

Agent Traces: every browser session as a prompt - Steel | Open-source Headless Browser API

')">

Sessions API

Pricing

Blog

Docs

We're hiring!

7K

Log in / Sign Up

← Back to Blog

Agent Traces: every browser session as a prompt

Agent Traces: every browser session as a prompt

May 22, 2026

May 22, 2026

San Francisco

Nikola Balic

Nikola Balic

Today we're shipping Agent Traces.<br>Open any recorded session in your dashboard and you'll find a new tab that turns the whole run into a readable timeline.<br>Every action the agent took, synced to the video frame by frame. Click a row, the video seeks. Click "copy as markdown" and the entire session becomes a prompt you can paste into your next agent.

What you see<br>Each row in the timeline is one coalesced activity.<br>Each row reads like a sentence: click on Sign in, input(len=17) on Email field, navigate to /home. Typing collapses into one row, not seventeen keystrokes. Idle stretches over ten seconds show up as idle 23s dividers.<br>The label is whatever a person would actually call the element. No more .<br>Color-coded icons let you scan a long timeline at a glance: click, type, navigate, scroll, drag, submit, error.<br>The video and the timeline are the same thing<br>Click any row and the video jumps to that exact moment. The seek uses HLS program-date-time, so it's frame-accurate, not a guess.<br>Look at the scrubber: each activity gets a small color-coded tick. You can see at a glance where the dense bursts of work were and where the agent was idle. Hover the scrubber and you get a thumbnail preview. Drag along it to scrub.<br>As the video plays, the row matching the current frame highlights. Hover a marker on the bar and the matching row scrolls into view. The two views stay in sync no matter which one you drive.<br>The agent traces drawer<br>Click on a row and it expands inline. You get:<br>Element details: tag, role, accessible name, every attribute that was on the element, bounding box.

A prioritized list of selectors, in the order Steel uses internally to pick the canonical one: testId, id, aria, name, CSS, XPath.

Pointer or keyboard details: exact x/y, button, click count, key code, modifiers.

The page URL when this happened.

The raw JSON of the underlying event, with a copy button.

A thumbnail of the video frame at that instant, clickable for full-size preview.

For coalesced runs like a typing burst or click sequence, how long the run took.

You almost never have to leave this view to figure out what happened.<br>Copy as markdown, designed for agents<br>Hit "copy as markdown" on any session and you get a single document built to be pasted into another agent as context. It includes a built-in preamble that explains its own format.<br>The output reads like a recipe an automation agent could re-execute , and that's the explicit intent.<br>Paste it into Claude Code, Codex, OpenCode or Cursor with "write me a Steel script that reproduces this," and the selectors, step structure, and timing are already there. JSON export is available too if you'd rather drive it programmatically.<br>Live updates<br>For sessions that are currently running, the timeline streams in real time over a WebSocket. New activities arrive incrementally, get deduplicated, sorted into place, and re-collapsed. Watching a live agent run feels like watching it think out loud, action by action.<br>When the session ends, the same data is available statically via REST.<br>API<br>Two authenticated endpoints:<br>GET /sessions/:id/agent-traces is the semantic timeline. Returns { events, total, hasMore } where each event is an AgentActivity (click, input, navigate, scroll, drag, keyPress, submit, error). Use this one.

GET /sessions/:id/agent-logs is the old one, raw CDP-derived events. Lower-level, retained for compatibility.

Plus a WebSocket channel for the live stream.<br>What this unlocks<br>The first thing we keep coming back to is debugging. Instead of scrubbing video looking for the moment something went wrong, you scroll the timeline, spot the error row, click it. The video jumps to the failure. The drawer shows the element the agent was interacting with and the error message.<br>The second is reproducibility. Open the markdown export, paste it into your editor, ask the agent to write a script that reproduces the run. The selectors and step structure are designed for exactly this.<br>The third is auditing. A human-readable record of every interaction, with timestamps, in one scrollable view. Useful for trust and safety reviews, customer support investigations, and post-mortems.<br>Get started<br>Agent Traces is generally available right now. Open any session in app.steel.dev and you'll see the new tab next to Console Logs and Network.<br>Try it on a session you already have. Copy one as markdown, paste it into your favorite agent, and tell us what it builds.<br>Dashboard: app.steel.dev

Docs: docs.steel.dev

Questions or feedback: Discord or @steeldotdev

Ready to<br>Build with Steel?

Start For Free

Documentation

Ready to<br>Build with Steel?

Start For...

agent session click traces steel video

Related Articles