ruvnet / browser-login
Drive an authentication flow once, sanitize cookies through AIDefence, and vault a reusable cookie handle in browser-cookies for future sessions
0
SKILL.md3.7 KB
Browser Login
Authenticate against a target site once, then vault the resulting session credentials so subsequent skills (browser-extract, browser-form-fill, browser-test) can reuse them without re-driving the auth flow. Borrows the pattern from Browserbase's cookie-sync/SKILL.md but stores the resulting context in AgentDB rather than on a hosted backend.
When to use
- Establishing reusable auth for a host the agent will visit repeatedly.
- Refreshing a vaulted cookie set whose expiry has passed.
- Capturing an MFA-protected session that requires interactive completion.
Steps
- Open a recorded session via
browser-record. - Drive the auth flow — fill credentials with
browser_fill/browser_type. Credentials come from the user or environment; do not read them from.envor paste them into the trajectory args. - Handle MFA (when
--mfa): pause for user input or invoke the user's TOTP helper; capture only the resulting redirect, not the code itself. - Capture cookie metadata, not values. Run
browser_evalwith an expression that returns only each cookie's name, value length and a Shannon-entropy estimate, for exampledocument.cookie.split('; ').map(c => { const [n, ...v] = c.split('='); return { name: n, length: v.join('=').length } }). Never returndocument.cookieitself: tool output goes straight into the model's context, so the raw values would be exposed before any gate runs.document.cookiealso cannot seeHttpOnlycookies, which are usually the session cookie; if the session isHttpOnly, record that fact and rely on the browser profile staying alive rather than on a captured value. - Classify each cookie from the metadata in step 4 (name pattern, length, entropy). Anything that looks like a session or auth token is vault-wrapped (an opaque handle) before AgentDB store; raw values never enter the namespace or the model's context.
Store in
browser-cookies:`bash
npx -y @claude-flow/cli@latest memory store --namespace browser-cookies \
--key "<host>" \
--value "{vaulthandle:<opaque>, expiry:<iso>, aidefenceverdict:safe}"`- Return the vault handle. Downstream skills look it up with
browser_cookie_use(host in, handle record out).
Caveats
- Never log raw cookie values, tokens, or passwords. The trajectory step for the auth POST records only the form field names and a
<redacted>placeholder for values. browser_cookie_useis implemented, but it only returns the handle record (handle, expiry, AIDefence verdict) for a host. No tool injects a vaulted cookie into a live page, so a re-used login still needs a browser profile that already holds the session, or a freshbrowser-login.- Some sites bind cookies to a UA fingerprint; if a vaulted cookie fails on reuse, re-run
browser-login. Do not attempt to fingerprint-match yourself. - This skill is not a credential storage solution. The vault-handle pattern protects against AgentDB leaks, not against compromise of the agent's environment.