---
name: personal-browser-cdp
description: Use the user's real Chrome browser through Hermes' existing CDP connection. Use when the task needs clicking, typing, scrolling, login/session reuse, or the real current page state — anywhere a sandboxed Playwright browser would lack the user's session.
---

# Personal Browser via CDP

Use this when the user wants Hermes to work through their real Chrome session on their desktop PC, and a fresh Playwright browser would be missing the user's cookies, session, and history.

## Trigger phrases

Personal browser, desktop browser, live browser, gateway browser, CDP browser.

## When to use

- The user says "use my browser" or similar
- The task needs login/session reuse (logged into Gmail, GitHub, etc.)
- A static `web_extract` or sandboxed `browser_navigate` returns a login wall or empty state
- The user wants to debug something on their own browser

## Core workflow

- Assume `BROWSER_CDP_URL` is already configured and Hermes should use the current CDP setup automatically.
- For interactive browsing, prefer browser tools first: `browser_navigate`, `browser_snapshot`, `browser_click`, `browser_type`, `browser_scroll`, `browser_press`.
- Prefer the live CDP-connected browser over `web_search` or non-interactive extraction whenever the task needs clicking, typing, scrolling, login/session reuse, or the real current page state.
- Stay in the live browser flow unless the user asks for something non-interactive.
- If browser interaction fails, do not silently switch to another browsing mode. Diagnose the CDP connection first.

## Troubleshooting

1. Check whether `http://127.0.0.1:9223/json/version` is reachable.
2. If it is not reachable, the user needs to relaunch Chrome with remote debugging enabled (the exact command depends on the OS and Chrome variant; the dev docs of the Hermes browser tool have the canonical incantation).
3. The user must keep whatever tunnel forwards the remote-debugging port open (e.g. an SSH reverse tunnel if Chrome is on a different machine than Hermes).

## Pitfalls / Limitations

### Google Photos share links

Google Photos share URLs (e.g., `https://photos.app.goo.gl/...`) **cannot be easily downloaded** via:
- Simple `curl` requests (returns HTML/JS, not the video/image)
- Browser automation without active user session
- Direct HTTP extraction

These links require:
- Authentication/session cookies
- JavaScript execution to resolve the actual media URL
- Often user interaction to access raw files

**Workaround:** Ask the user to upload the media directly to the conversation rather than trying to scrape from a share link.
