Skip to main content
Skyvern gives you two ways to keep a browser’s state between runs: Use a session when you need a browser right now. Use a profile when you want to sign in once and reuse that later.

Browser sessions

Click Browsers → Sessions in the sidebar. The table lists every session in your organization with its ID (pbs_...), whether it is Open and Occupied by a run, who created it, when it started, its Timeout and its CDP URL.Browsers page with the Create button and the sessions tableTo start one, click Create. The Create Browser Session drawer has:Create Browser Session drawer with Proxy Location, Timeout, Browser Type and ExtensionsClick Create. The session’s page opens with five tabs: Stream (the live browser), Recordings, Downloads (files the browser saved), Timeline and Runs.Browser Session page on the Stream tab with the running badge, Save Profile, the close icon and Take controlTo close it, click the Close icon and confirm with Stop Browser Session. The session also closes on its own when the timeout runs out. Activity can keep it open a little longer, up to a hard limit, so set a timeout that covers your longest run.

Run an agent in a session

  • In the app: on the agent’s run form, open Advanced Settings and paste the pbs_... ID into Browser Session ID. The agent starts where the browser is: same page, same cookies.
  • With code: pass browser_session_id to run_workflow (Python) or runWorkflow (TypeScript), as with tasks above.
If the steps run back to back with no pause, build them as one agent instead. Blocks in one agent already share a browser, without the cost of a separate session.

Watch and take control

Every session, and every run with a live browser, streams its screen. Click Take control on the stream to use the browser yourself: sign in, dismiss a popup, solve a captcha. Click Stop controlling to hand it back. This is how you put a person in the loop: run a task, pause while someone reviews or acts in the browser, then run the next task in the same session.

Browser profiles

A profile is a snapshot of a browser’s state. Start a session or a run from it and the browser opens already signed in.
Click Browsers → Profiles. The Browser Profiles page lists profiles with their Source Browser and creation date. Filter with All, User profiles or Auto-managed, or search by name.Browser Profiles page with the search box, type filter and Create a Browser Profile buttonCreate a profile:
1

Start a capture browser

Click Create a Browser Profile. Tick Use a consistent IP address to capture on a stable residential IP, so the site is less likely to challenge the saved login later. Click Create. A live browser session opens.
2

Sign in

Click Take control and sign in to the sites you want saved.
3

Save it

Click Save Profile in the session’s tab bar, enter a Name and an optional Description, and click Save Profile. Saving closes the session and finishes in the background.
The same Save Profile button is on every running session, so you can save a browser you’ve been using.Refresh a profile when its sign-in expires. Click the refresh icon on its row, then Open browser session. Sign in again or clear the challenge, then close the session. The browser you leave behind is saved back to the same profile.Rename and Delete are icons on each row. Deleting a profile is permanent.Use a profile in an agent. On the run form, Advanced Settings → Browser Profile loads a profile for that run. In the agent’s settings in Studio, Save & reuse browser profile saves the browser at the end of each run and starts the next run from it, and Reuse browser session keeps one live browser across consecutive runs.A password credential with Save browser session for future logins saves its signed-in browser for you. See Credentials.
Sign-ins expire. When runs that use a profile start landing on a login page, refresh the profile or capture a new one. Names that say the account and site, such as vendor-portal-admin, make the right profile easy to find.

Use your own Chrome

Skyvern can drive a Chrome on your machine, with its cookies, sign-ins and extensions. Two options:

Let Cloud runs use your Chrome

This starts Chrome, copies the logins from your local Chrome profile, and opens an ngrok tunnel (install and authenticate ngrok first). Pass the printed CDP URL (wss://…/devtools/browser/…) as browser_address, and send your --api-key value as x-api-key in cdp_connect_headers:
Without --api-key, anyone with the tunnel URL controls your browser and every account signed in to it. --api-key can also be set with SKYVERN_BROWSER_SERVE_API_KEY.
Useful options: --port (default 9222), --chrome-profile-name (copy from a profile other than Default, such as Profile 1), --profile-dir (use a separate Chrome data directory instead), --headless, --chrome-path, and --json (print connection details; can’t be combined with --tunnel). The full list is in the CLI reference.

Share tabs with a local MCP server

The Skyvern Agent extension lets a local MCP server drive tabs in your everyday Chrome. It needs Chrome 138 or later and an MCP server running locally over stdio. Hosted MCP can’t use it yet.
  1. Run skyvern browser extension-install and follow its steps: in chrome://extensions, turn on Developer mode, click Load unpacked and pick the printed folder.
  2. Start the MCP server with skyvern run mcp --browser-extension, or set BROWSER_TYPE=extension-connect in its environment.
  3. Run skyvern browser extension-pair and approve the pairing in the browser, then again in the Skyvern Agent tab that opens.
  4. Drag the tabs you want to share into the Skyvern Controlled tab group, or use Add to Skyvern Controlled in the extension popup.
Skyvern only sees tabs in that group. Drag a tab out to revoke access at once. Shared tabs show “Skyvern is controlling this tab”. The extension can’t evaluate JavaScript, handle downloads or file pickers, or work in incognito windows. Check the setup with skyvern browser extension-status. MCP client setup is on MCP and coding agents. The extension connects to ws://127.0.0.1:19777/extension/v1 on your machine. What listens there depends on the platform:

Next