Skip to content

Browser conversation capture

Hansard Browser is a preview Chromium extension published in the Chrome Web Store. It captures ChatGPT, Claude.ai, Gemini, and Perplexity conversations, plus Devin cloud sessions and Ask Devin queries. It is separate from the npm package.

Install Hansard from the Chrome Web Store in Chrome, Arc, Brave, Edge, or another Chromium browser (version 109 or later). The guided setup’s Browser extension page links to the listing and pairs the browser in the same steps as Settings.

  1. Open Settings → Imports and find Browser extension.
  2. Next to Connect a browser, select Pair…. Open Chrome Web Store opens the listing. In a source checkout, Show development build reveals the unpacked build to load instead.
  3. Paste the code from Paste this code in the extension’s settings into the extension’s settings. The code works once and expires after ten minutes.

Each paired browser gets its own row with Disconnect. The Captures row counts saved, waiting, unchanged, and failed captures, names the most common reason for failures, and offers Retry. While the app is open it keeps the receiver running for a paired browser, as the watcher does.

Terminal window
hansard browser serve

In another terminal, run:

Terminal window
hansard browser pair

Paste the pairing code into the extension settings. hansard browser status lists paired browsers and their captures, hansard browser retry retries failed imports now, and hansard browser revoke <installation-id> disconnects a browser. The watcher keeps the paired receiver running; otherwise keep hansard browser serve open.

Before the extension sends a pairing code, its credential, or a capture, the receiver proves it holds that pairing, so another program listening on the receiver’s port receives nothing and captures wait in the browser. A browser paired by an earlier release may be asked to pair again. If another program holds the port, the receiver does not start, and hansard browser status and the Browser extension settings name that program when the system reports it. Stop it, or run hansard browser serve --port with a free port and set the extension’s Hansard address to match.

Your browser updates the extension on its own after the Chrome Web Store publishes a release. Hansard accepts every version of the extension, so an update waiting on store review never stops captures. If Hansard is too old to prove itself to the extension, the extension asks you to update Hansard. A capture from a provider your Hansard cannot import yet waits in the queue, counted as waiting for a Hansard update, and imports after you update.

To load a development build instead of the store release, build it from a Hansard source checkout:

Terminal window
npm --prefix extension ci
npm --prefix extension run build

Open the browser’s extensions page, enable Developer mode, choose Load unpacked, and select extension/dist.

Enable the providers you want in the extension’s settings. Each provider requests its own website and file-host permissions, and the settings show each provider’s status. Keep a signed-in tab open for that provider. Choose Sync now to capture history or Rescan all history to refresh existing captures. The toolbar icon shows a badge when captures fail. Failed captures stay queued and retry on their own, waiting longer after each failure, up to six hours.

Product Archived format Preserved data and limits
ChatGPT chatgpt-browser History, archived chats, and project conversations; conversation trees, active branch, exposed model and file metadata, and the canvas documents a conversation references. Archived, project, and canvas reads are new and not yet checked against signed-in accounts; a list that fails is skipped for that check and named in the extension’s status. Unavailable branches and expired media remain gaps.
Claude.ai claude-web-browser Organization conversation trees, exposed projects and settings, uploaded and generated files; preview bytes remain labeled as previews.
Gemini chat gemini-web-browser Paginated history, selected response candidates, typed media and recorded response models; media coverage is partial.
Perplexity perplexity-browser Search threads, citations, research steps, exposed model fields and attachments; media/shopping results remain links.
Devin cloud devin-cloud-browser Cloud event history, tools, child-session relationships, exposed files and metadata; private signed-storage payloads may remain unavailable.
Ask Devin devin-ask-browser Questions, reasoning, codebase searches, citations and recorded model; missing per-question times remain unknown.

The extension does not currently capture Codex cloud, Claude Code cloud, Cowork, Gemini Notebook/NotebookLM, Grok chat, or Grok Bot. Those products must use a documented separate route or remain in the coverage backlog.

The collectors use private website APIs. Unsupported response shapes pause capture with an error. A closed, unloaded, suspended, or signed-out tab cannot supply history. Deleted and temporary chats, project-only lists, unavailable branches, and expired files are not guaranteed to be recoverable.

Manual ChatGPT, Claude.ai, and Gemini exports remain supported. Captures and exports can enrich the same account conversation when their provider account and conversation identities agree. Matching titles or account labels are not enough to merge them. Devin desktop mirrors, API records, and browser captures likewise retain verified cloud identity while preserving the most complete transcript. See the individual import guides for each route’s limitations.

After capture, open the conversation in Hansard and check messages, files, source, account, project, models, and Session details. A successful delivery receipt alone does not prove that every provider field was preserved.