Session Recorder → A local-first bug recorder
Privacy
A local-first bug recorder, for when the recording cannot leave
Most bug-capture tools are cloud products: you record, it uploads, you share a link. Session Recorder has no upload step, because it has no server to upload to.
Session Recorder is a free, open-source, local-first Chrome extension for recording web bugs for AI coding agents. There is no account, no backend, and no telemetry. Sessions are written to IndexedDB inside your own browser and leave only as a zip file you save yourself.
What “local-first” means here, concretely
- No account. Install it and press Record. There is no sign-up, no workspace, no seat, and nothing to log into.
- No backend. The extension makes no requests to any server operated by its author. There is nothing to breach and nothing to subpoena.
- No telemetry. No analytics, no crash reporting, no usage counts.
- Storage is your browser. Recordings live in IndexedDB in your Chrome profile. Deleting the session deletes the data.
- Export is a file. The output is a zip in your Downloads folder. Where it goes next is a decision you make, one file at a time.
- No remote code. Everything the extension runs is bundled in the package — a Chrome Web Store requirement the extension meets rather than works around.
One exception, and it is opt-in. If you turn on voice transcription and supply your own API key for Deepgram, OpenAI, or ElevenLabs, the recorded audio is sent to the provider you chose to produce a transcript. Without a key, audio stays on your machine and the report keeps the raw audio file instead. This is the only outbound call the extension can make, and it is disclosed in the privacy policy.
Secrets are masked before they are written
Redaction runs at capture time, not at export time. Authorization headers, token-like JSON and form fields, sensitive URL parameters, and password inputs are masked on the way into storage, so the unredacted value never exists on disk in the first place. You can add your own rules or disable redaction per session on the options page.
This matters more than it sounds: a tool that scrubs at export has already persisted the secret. One that scrubs at capture never has it.
Who this design is for
- Regulated and internal apps. Health, finance, legal, government — anywhere a session recording of a production screen is not allowed to land in a third-party bucket.
- Pre-release and unannounced work. A recording of an unshipped feature is a leak with a URL attached if it lives in someone else's cloud.
- Solo developers and small teams. Nothing to administer, no seats to buy, no vendor to evaluate.
- Agent workflows that are already local. If you run Claude Code, Cursor, or Codex against a local checkout, a cloud round trip in the middle of the loop is friction with no payoff.
The honest trade-offs
Local-first is a real constraint, not just a virtue. What you give up:
| You lose | Why | What to do instead |
|---|---|---|
| Shareable links | There is no server to host the recording. | Send the zip, or attach it to the ticket you already have. |
| Jira / Linear / Slack integrations | Same reason: integrations need a backend to call them. | Attach report.md to the issue. |
| Non-technical reporters | Recording is easy; the report is written for an agent. | A cloud tool is genuinely better for customer-facing capture. See the comparison. |
| Cross-device history | IndexedDB is per-profile, per-machine. | Keep the exported zips wherever you keep artifacts. |
You do not have to take our word for it
The whole extension is on
GitHub.
The claims above are checkable in about ten minutes: grep the source for
fetch(, read the permission justifications, or open
DevTools' network panel on the extension itself while recording and watch
nothing go out. The permissions the extension asks for and why it needs
each one are documented in the README, and the export pipeline —
capture, redaction, deterministic trimming, zip — is all in
lib/.
Trimming is deterministic and contains no model call: the same recording at the same level produces the same report, every time. Nothing about your session is sent anywhere to be summarized.
Record your next bug instead of describing it
Free, open source, and everything stays on your machine.