Automation

Playwright MCP Concurrent Chrome Instances Guide

Tips for running multiple Chrome instances concurrently using Playwright MCP with --user-data-dir for isolated agent execution.

February 23, 2026
6 min read
By ClawList Team

Running Multiple Chrome Instances Concurrently with Playwright MCP: A Practical Guide

Unlock parallel AI agent execution by isolating browser profiles — no more session conflicts, no more bottlenecks.


If you've been working with Playwright MCP to power AI-driven browser automation, you've likely hit a frustrating wall: launching multiple agents simultaneously causes them to stomp all over each other's sessions. Login states get mixed up, cookies collide, and tasks interfere in ways that are nearly impossible to debug.

There's a surprisingly elegant fix, and it comes down to one flag: --user-data-dir.

This quick tip, originally shared by @yan5xu on X, is a game-changer for developers running concurrent AI agent workflows. Let's break down what it does, why it works, and how to build it into a robust multi-agent automation pipeline.


Why Playwright MCP Agents Conflict in the First Place

Before diving into the solution, it helps to understand the root cause.

When Playwright MCP (Model Context Protocol) launches a Chromium-based browser, it defaults to a shared or temporary user data directory. This directory stores everything that makes a Chrome session yours: cookies, local storage, cached credentials, IndexedDB data, extension states, and session tokens.

When two agents share the same user data directory — even if they're running different tasks — they're essentially sharing the same browser "identity." That means:

  • Session overwrites: Agent A logs into Service X, then Agent B opens the same browser profile and the authentication state gets clobbered.
  • Race conditions: Both agents try to read/write the same cookie store simultaneously, leading to unpredictable behavior.
  • State contamination: Browsing history, form autofill, and cached responses bleed across tasks.

The result is flaky, unreliable automation that fails in non-obvious ways — the worst kind of bug to track down.


The Fix: Isolate Each Agent with --user-data-dir

Chrome (and Chromium) supports a --user-data-dir launch argument that tells the browser exactly where to store its profile data. By giving each agent its own unique directory, you create a completely isolated browser environment — as if each agent is running on a separate machine.

Basic Usage

When configuring Playwright MCP, pass the --user-data-dir flag through the browser launch arguments:

{
  "mcpServers": {
    "playwright": {
      "command": "npx",
      "args": [
        "@playwright/mcp@latest",
        "--user-data-dir=/tmp/chrome-agent-1"
      ]
    }
  }
}

For a second concurrent agent, simply point to a different directory:

{
  "mcpServers": {
    "playwright-agent-2": {
      "command": "npx",
      "args": [
        "@playwright/mcp@latest",
        "--user-data-dir=/tmp/chrome-agent-2"
      ]
    }
  }
}

Each agent now operates in complete isolation. Agent 1's login session to Gmail won't interfere with Agent 2's session on the same site — they're effectively two different users on two different computers.

Programmatic Multi-Agent Setup

If you're orchestrating agents programmatically (e.g., with a custom MCP client or an orchestration framework like LangChain or CrewAI), you can generate unique profile paths dynamically:

import os
import uuid
import subprocess

def launch_playwright_mcp_agent(agent_id: str = None):
    """Launch an isolated Playwright MCP instance for a single agent."""
    if agent_id is None:
        agent_id = str(uuid.uuid4())[:8]
    
    profile_dir = f"/tmp/chrome-profiles/agent-{agent_id}"
    os.makedirs(profile_dir, exist_ok=True)
    
    process = subprocess.Popen([
        "npx", "@playwright/mcp@latest",
        f"--user-data-dir={profile_dir}"
    ])
    
    print(f"[Agent {agent_id}] Launched with profile: {profile_dir}")
    return process, profile_dir

# Spin up 5 concurrent agents
agents = [launch_playwright_mcp_agent(f"task-{i}") for i in range(5)]

This pattern makes it trivial to scale horizontally — need 10 parallel agents? Call the function 10 times with unique IDs.

Using Named Profiles for Persistent Sessions

One powerful extension of this technique is using named, persistent profiles rather than random temporary directories. This is useful when:

  • You need an agent to stay logged in across multiple runs without re-authenticating.
  • You want to pre-configure a browser profile with specific extensions or settings.
  • You're assigning agents to dedicated accounts (e.g., a social media scheduling bot with its own credentials).
# Pre-configure a profile by launching Chrome manually first
google-chrome --user-data-dir=/opt/agent-profiles/social-bot-account

# Then reuse that same profile in your Playwright MCP config
npx @playwright/mcp@latest --user-data-dir=/opt/agent-profiles/social-bot-account

The agent will inherit all cookies and session data from the manually configured profile, effectively picking up a pre-authenticated session — no login flow required at runtime.


Practical Use Cases for Concurrent Playwright MCP Agents

This isolation technique unlocks a wide range of real-world automation scenarios that were previously too fragile to implement reliably:

1. Parallel Web Research & Scraping

Deploy multiple agents to simultaneously gather data from different sources — news sites, competitor pages, product listings — and aggregate results faster than any single-threaded approach.

2. Multi-Account Social Media Management

Manage several social media accounts concurrently without session bleed. Each profile directory maps to one account, and agents can post, reply, and monitor independently.

3. A/B Testing Automation

Run two agents in parallel — one simulating User Persona A, one simulating User Persona B — to test different user journeys through a product simultaneously.

4. Distributed QA Testing

Spin up isolated browser instances for end-to-end tests running in parallel across different test suites, dramatically cutting CI/CD pipeline times.

5. AI Agent Swarms

In multi-agent AI architectures where a supervisor delegates subtasks to worker agents, each worker gets its own browser context. The supervisor can coordinate results without any risk of browser state interference.


Best Practices and Tips

Keep these guidelines in mind when implementing concurrent Playwright MCP agents:

  • Use meaningful directory names/tmp/agent-research-001 is easier to debug than /tmp/abc123.
  • Clean up stale profiles — Temporary profile directories accumulate over time. Implement a cleanup routine that removes old profiles after task completion.
  • Be mindful of system resources — Each Chrome instance consumes significant RAM (often 200–500MB+). Monitor memory usage when scaling beyond 5–10 concurrent agents.
  • Consider headless mode — For server-side or CI environments, ensure your Playwright MCP config runs in headless mode to minimize resource overhead.
  • Profile persistence strategy — Decide upfront whether profiles should be ephemeral (deleted after each run) or persistent (reused across runs). Each has tradeoffs around security and convenience.
# Cleanup script example: remove profiles older than 24 hours
find /tmp/chrome-profiles/ -maxdepth 1 -type d -mtime +1 -exec rm -rf {} \;

Conclusion

The --user-data-dir flag is a small configuration detail with an outsized impact on reliability. By giving each Playwright MCP agent its own isolated Chrome profile, you eliminate session conflicts, enable true concurrency, and unlock a new tier of scalable AI automation workflows.

Whether you're building a research swarm, a multi-account automation pipeline, or parallel QA test suites, this technique provides the foundation for agents that can work side-by-side without getting in each other's way.

The key takeaway: treat browser profiles the same way you treat database connections in a multi-threaded application — isolate them, manage their lifecycle, and never share state you didn't intend to share.

Hat tip to @yan5xu for surfacing this practical tip. Sometimes the most impactful optimizations are hiding in plain sight.


Want more tips on building robust AI automation workflows with OpenClaw and Playwright MCP? Explore the ClawList.io resource library for guides, skill packs, and community-curated automation patterns.

Tags

#playwright#mcp#chrome#concurrency#automation

Related Articles