Agent Recording
Let AI coding agents like Claude Code drive a real browser while VibeCheck records everything — video, console, network, and actions — and returns a shareable bug report link.
Overview
Agent Recording makes VibeCheck agent-friendly. You give your AI coding assistant a task in plain English — "go to this page, click this and that, and check the result" — and the VibeCheck MCP server opens a real browser on your machine. The agent performs the steps while VibeCheck records the entire session. When it finishes, you get a normal VibeCheck track link you can share with anyone:
- Video of everything the agent did — with a visible cursor, click ripples, and captions describing each action, so anyone can follow along
- Console logs, including JS errors
- Network requests, with response bodies for API calls
- A labeled action timeline ("Clicked: Login button") synced to the video
Videos stay short, too: with ffmpeg installed, the idle "thinking time" between agent actions is cut out automatically before upload — a 5-minute session typically becomes under a minute, with the timeline still perfectly synced.
No AI runs inside VibeCheck — your assistant does the thinking and clicking, VibeCheck is the recorded browser. You pay nothing extra beyond your existing AI tool.
How it works
You: "Go to staging.myapp.com/cart and validate the total is $42.
Record it and give me the link."
│
▼
Claude Code / Cursor ──▶ opens a local browser window (visible)
│ • navigates, clicks, types — every step recorded
▼
browser_finish ──▶ uploads to VibeCheck ──▶ shareable link:
https://app.vibecheck-qa.com/tracks/1783...
Because the browser runs locally, the agent can test anything you can reach — including localhost dev servers and staging environments behind a VPN.
Installation
Setup takes about a minute: generate an API key, then connect the MCP server to your AI tool. That's it.
Before you start, make sure you have:
- Node.js 18+ installed — check with
node --version(get it at nodejs.org if not) - One of: Claude Code, Claude Desktop, Cursor, Windsurf, or VS Code with Copilot
No browser install needed. The agent automatically uses your existing Google Chrome or Microsoft Edge (with a fresh, isolated profile — your bookmarks, logins, and cookies are never touched). If neither is installed, a browser is downloaded automatically on first run. To pre-download it instead, run npx playwright install chromium.
Step 1 — Get your API key
Recordings are uploaded to your VibeCheck account, so the server needs a key to prove it's you:
- Sign in at app.vibecheck-qa.com
- Open the API Keys page (in the sidebar, or directly at app.vibecheck-qa.com/api-keys)
- Click Generate key
⚠️ The key is shown only once — if you lose it, just revoke it and generate a new one. You can have up to 5 active keys (e.g. one per machine).
Step 2 — Connect it to your AI tool
The fast way: the key-created dialog gives you ready-made setup — a copy-paste command for Claude Code with your key already inside, and one-click Add to Cursor / Add to VS Code buttons. Use those and skip straight to Step 3.
Setting it up manually instead? Pick your tool below and replace vck_your_key_here with the key from Step 1.
Claude Code
Run this in a terminal (anywhere):
claude mcp add vibecheck \
-e VIBECHECK_API_KEY=vck_your_key_here \
-- npx -y @vibecheck-mcp/mcpClaude Desktop
Add this to your config file — macOS: ~/Library/Application Support/Claude/claude_desktop_config.json, Windows: %APPDATA%\Claude\claude_desktop_config.json — then restart Claude Desktop:
{
"mcpServers": {
"vibecheck": {
"command": "npx",
"args": ["-y", "@vibecheck-mcp/mcp"],
"env": {
"VIBECHECK_API_KEY": "vck_your_key_here"
}
}
}
}Cursor
Add the same JSON block to .cursor/mcp.json in your project (or Cursor Settings → MCP → Add new server).
Windsurf
Add the same JSON block to ~/.codeium/windsurf/mcp_config.json.
VS Code
Add to .vscode/mcp.json in your project (note the key is servers, not mcpServers):
{
"servers": {
"vibecheck": {
"command": "npx",
"args": ["-y", "@vibecheck-mcp/mcp"],
"env": {
"VIBECHECK_API_KEY": "vck_your_key_here"
}
}
}
}Step 3 — Verify it works
Open a new session in your AI tool (MCP servers load at session start) and paste:
Go to https://example.com, then finish the recording titled
"Setup test" and give me the link.
You should see a browser window flash open, and within ~15 seconds the agent replies with a .../tracks/... link. Open it — if the video plays, you're done. 🎉
If something fails:
| Error | Fix |
|---|---|
| "Could not find or install a browser" | Install Google Chrome, or run npx playwright install chromium |
| "VIBECHECK_API_KEY is not set" | The env block is missing or in the wrong place — recheck Step 2 |
| "VibeCheck rejected the API key (401)" | Key mistyped or revoked — generate a fresh one on the API Keys page |
| Tools don't appear at all | Restart your AI tool — MCP configs are read at startup |
If you only want to analyze existing tracks (the read-only MCP tools), you can skip Step 1 entirely — no API key needed.
Usage
Start a session in your AI tool and describe the task naturally. End with "finish the recording and give me the link" so the agent knows to upload:
Go to https://staging.myapp.com/pricing, verify the Pro plan
shows $29/month, then finish the recording and give me the link.
The agent opens a browser window (you can watch it work), performs the steps, and replies with something like:
Recording uploaded to VibeCheck.
Shareable link: https://app.vibecheck-qa.com/tracks/1783009013047-dc126eed
Duration: 12s · console errors: 0 · network errors: 0 · actions: 5
Open the link to watch the video with synced Console, Network, and Actions tabs — and share it with anyone, no account needed.
Example tasks
Validate something on a page
Open localhost:3000/checkout, add the first product to the cart,
and confirm the total updates. Record it and send me the link.
Reproduce a bug from an existing report
Here's a bug report: https://app.vibecheck-qa.com/tracks/abc123
Analyze it, then try to reproduce the same steps on localhost:3000
and record your attempt.
Prove a fix works
You just fixed the login redirect bug — now prove it. Go through
the login flow on localhost:3000 and attach the recording link
to the PR description.
Smoke-test after a deploy
We just deployed. Go through sign-in → dashboard → create project
on production and record it. Flag any console errors you see.
Throw a recording away
Actually, discard that recording — don't upload it.
The recording tools
Your AI assistant uses these automatically — you don't call them yourself:
| Tool | What it does |
|---|---|
browser_navigate | Opens a URL. The first call launches the browser and starts recording |
browser_snapshot | Reads the page structure so the agent can find elements |
browser_click / browser_type / browser_press_key / browser_select_option / browser_hover / browser_scroll | Page interactions — each becomes a labeled step on the track timeline |
browser_screenshot | Visual check of the current page |
browser_wait_for | Waits for text to appear/disappear or a fixed time |
browser_finish | Closes the browser, uploads the recording, returns the shareable link |
Good to know
- Plan limits: agent recordings count toward your plan's monthly recordings (Free: 25/month), and the limit is checked before the browser opens.
- Safe by default: the browser is a fresh, isolated profile — no cookies or logins from your daily browser. Nothing is uploaded until the agent calls
browser_finish(anddiscardthrows it away). - Failed upload ≠ lost recording: if the upload fails, the video is kept locally and the agent tells you the file path.
- Sharing model: track links are public-by-URL (unguessable ID) — the same as extension-recorded tracks. Don't record pages showing secrets you wouldn't put in a bug report.
- Watchable videos: the recording shows a cursor moving to every element the agent touches, a ripple on each click, and a caption naming the action — the overlay never interferes with the page and is hidden from the agent's own screenshots.
- Short videos: if
ffmpegis installed (brew install ffmpeg/apt install ffmpeg), idle time between actions is trimmed automatically and all timestamps are re-synced. Without ffmpeg the full video is uploaded. SetVIBECHECK_NO_CONDENSE=1to always keep the full video. - Headless mode: set
VIBECHECK_HEADLESS=1in the server'senvto hide the browser window (useful in CI).
Requirements
- Node.js 18 or later
- Google Chrome or Microsoft Edge (auto-detected; a browser is auto-downloaded if neither exists)
- A VibeCheck account with a personal API key
- An AI tool that supports MCP (Claude Code, Claude Desktop, Cursor, Windsurf, VS Code)
- Optional: ffmpeg, for automatic video condensing — everything works without it, videos are just longer