Session Recorder → Session Recorder with Codex
Workflow
Debug browser bugs with Codex
Codex works from your repository — locally in the CLI and IDE extension, or from a snapshot in the cloud. In neither case can it watch your browser. A recording gives it the evidence it is otherwise missing.
Session Recorder is a free, open-source, local-first Chrome extension for recording web bugs for AI coding agents. It captures clicks, console errors, network requests and responses, screenshots, video, voice narration, DOM interactions, annotations, and uploaded files, then exports an LLM-ready Markdown report you can hand to Codex, Claude Code, Cursor, ChatGPT, and other coding agents.
The workflow (local Codex)
-
Record the reproduction
Open the Session Recorder side panel on the tab running your app, click Record, and reproduce the bug. Drop a marker the moment it breaks so the agent knows exactly where to look.
-
Export at Compact
Pick a detail level and watch the token estimate. Compact keeps the report self-sufficient at roughly 50k tokens; Minimal drops to about 15k when the session was long.
-
Unzip into the working directory
unzip ~/Downloads/upload-hangs.zip -d .bugs/ codexCodex reads files under the directory it was started in. Add
.bugs/to.gitignore— recordings can contain real data from your app. -
Prompt against the report
Read .bugs/upload-hangs/report.md — a chronological recording of a browser session against this app. [mm:ss] timestamps join interactions, network requests, console output, and my spoken narration. Blockquotes are my own markers and are the most important signal. Tell me the first real failure, trace it into this repository citing the timestamps and requests involved, and write the fix with a test that would have caught it.
Using it with cloud Codex
A cloud task works from a snapshot of your repository, not from your
laptop's filesystem — so an unzipped folder in .bugs/ is
invisible to it. Two options:
-
Commit the report to a scratch branch. Export at Minimal or
Compact, commit just
report.md, and point the task at the path. Read the report first: it may contain real request data. - Paste the report into the task description. At Minimal and Compact the report is self-sufficient without its assets, which is exactly what makes it pasteable.
Before either: open report.md and skim it.
Redaction masks passwords, authorization headers, and token-like
fields at capture time, but only you know whether the response bodies
from your own app are safe to push to a remote.
Teach Codex the format once
Put the interpretation in AGENTS.md so you do not repeat it
in every prompt:
## Browser bug recordings
Files at `.bugs/*/report.md` are Session Recorder exports: chronological
recordings of a browser session.
- `[mm:ss]` timestamps are the join key across interactions, network requests,
console output, screenshots, and the voice transcript.
- `##` headings mark navigations and tab switches.
- `xN similar` means repeated identical requests were collapsed; a request with
a differing status is always shown in full, because anomalies are signal.
- Blockquotes are the user's own markers and notes. Trust them first.
- Errors link to the request that caused them; that request's body is never
trimmed.
If a body you need was trimmed, name the `[mm:ss]` event and ask for a
re-export at a higher level rather than guessing.
Why this beats a pasted stack trace
A stack trace tells Codex where the program gave up. It does not say what you clicked, what the server returned, or which of five similar requests was the one that failed. The report carries the whole sequence — and the one request whose status differed from its neighbours is usually the answer. More on what agents actually need.
What is in the export
report.md, plus session.json for programmatic
use, a manifest, and the assets: screenshots, full network bodies, audio,
and files you uploaded to the app. Optionally an OpenAPI spec compiled
from the requests your app actually made, which is useful when Codex
needs to know the shape of an endpoint it cannot see.
Read a complete example.
Record your next bug instead of describing it
Free, open source, and everything stays on your machine.