Browser Environment fails to initialize on macOS with Chromium headless mode

Author: vladzumerCreated Oct 6, 2025Updated Nov 29, 2025

Browser Environment fails to initialize on macOS with Chromium headless mode

Bug Description

AutoAgent fails to start on macOS because Playwright's Chromium browser crashes immediately in headless mode. The error occurs during browser environment initialization.

Environment

  • OS: macOS 26.0 (Build 25A354)
  • Python: 3.12.11 (via pyenv)
  • AutoAgent: 0.1.0
  • Playwright: 1.39.0
  • BrowserGym: 0.13.0
  • browsergym-core: 0.13.0
  • Architecture: ARM64 (Apple Silicon)

Error Output

____________________Browser Env____________________
[2025-10-07 00:49:22]
Starting browser env...
Process Process-1:
Traceback (most recent call last):
  File "/Users/vladislaviskov/.pyenv/versions/3.12.11/lib/python3.12/multiprocessing/process.py", line 314, in _bootstrap
    self.run()
  File "/Users/vladislaviskov/.pyenv/versions/3.12.11/lib/python3.12/multiprocessing/process.py", line 108, in run
    self._target(*self._args, **self._kwargs)
  File "/Users/vladislaviskov/Desktop/agent/AutoAgent/autoagent/environment/browser_env.py", line 475, in browser_process
    obs, info = env.reset()
                ^^^^^^^^^^^
  File "/Users/vladislaviskov/.pyenv/versions/3.12.11/lib/python3.12/site-packages/browsergym/core/env.py", line 221, in reset
    self.browser = pw.chromium.launch(
                   ^^^^^^^^^^^^^^^^^^^
playwright._impl._api_types.Error: Browser closed.
==================== Browser output: ====================
<launching> /Users/vladislaviskov/Library/Caches/ms-playwright/chromium-1084/chrome-mac/Chromium.app/Contents/MacOS/Chromium --disable-field-trial-config --disable-background-networking --enable-features=NetworkService,NetworkServiceInProcess --disable-background-timer-throttling --disable-backgrounding-occluded-windows --disable-back-forward-cache --disable-breakpad --disable-client-side-phishing-detection --disable-component-extensions-with-background-pages --disable-component-update --no-default-browser-check --disable-default-apps --disable-dev-shm-usage --disable-extensions --disable-features=ImprovedCookieControls,LazyFrameLoading,GlobalMediaControls,DestroyProfileOnBrowserClose,MediaRouter,DialMediaRouteProvider,AcceptCHFrame,AutoExpandDetailsElement,CertificateTransparencyComponentUpdater,AvoidUnnecessaryBeforeUnloadCheckSync,Translate --allow-pre-commit-input --disable-hang-monitor --disable-ipc-flooding-protection --disable-popup-blocking --disable-prompt-on-repost --disable-renderer-backgrounding --force-color-profile=srgb --metrics-recording-only --no-first-run --enable-automation --password-store=basic --use-mock-keychain --no-service-autorun --export-tagged-pdf --disable-search-engine-choice-screen --enable-use-zoom-for-dsf=false --use-angle --headless --hide-scrollbars --mute-audio --blink-settings=primaryHoverType=2,availableHoverTypes=2,primaryPointerType=4,availablePointerTypes=4 --no-sandbox --user-data-dir=/var/folders/rn/gym3bnf52pg94rdfjjxy6ryw0000gn/T/playwright_chromiumdev_profile-K7Uemr --remote-debugging-pipe --no-startup-window
<launched> pid=79873

Steps to Reproduce

  1. Install AutoAgent on macOS (Apple Silicon):

    bash
    git clone https://github.com/HKUDS/AutoAgent.git
    cd AutoAgent
    pip install -e .
    playwright install
  2. Create .env file with OpenAI API key:

    bash
    cp .env.template .env
    # Add OPENAI_API_KEY=your_key
  3. Run AutoAgent:

    bash
    COMPLETION_MODEL=gpt-4o auto main
  4. Browser environment fails to initialize

Additional Testing

✅ What Works:

  • Chromium launches successfully in non-headless mode
  • Running Chromium binary directly: /Users/.../chromium-1084/.../Chromium --version
  • Firefox launches successfully in headless mode
  • Docker containers created successfully
  • All other components work fine

❌ What Doesn't Work:

  • Chromium in headless mode (--headless flag)
  • Trying Firefox as alternative fails because BrowserGym requires CDP (Chrome DevTools Protocol), which is Chromium-only

Test Results:

bash
# Firefox works but CDP not available
python3 -c "from playwright.sync_api import sync_playwright; p = sync_playwright().start(); browser = p.firefox.launch(headless=True); print('OK'); browser.close()"
# ✅ Output: OK

# But CDP fails with Firefox
playwright._impl._api_types.Error: CDP session is only available in Chromium

Potential Causes

This appears to be a macOS security issue with Playwright's Chromium in headless mode on newer macOS versions (especially Apple Silicon). Similar issues reported:

Attempted Workarounds

1. Removed quarantine attribute:

bash
xattr -d com.apple.quarantine ~/Library/Caches/ms-playwright/chromium-1084/chrome-mac/Chromium.app
# Already no quarantine attribute

2. Tried Firefox:

  • Patched browsergym/core/env.py and browsergym/core/chat.py to use pw.firefox.launch()
  • Firefox launches successfully but fails with: CDP session is only available in Chromium

3. Updated Playwright:

  • Attempted upgrade to 1.55.0 but incompatible with libwebarena/libvisualwebarena requirements

Proposed Solutions

Option 1: Add Firefox Support to BrowserGym

Make BrowserGym work without CDP for Firefox compatibility

Option 2: Optional Browser Environment

Add a flag to disable browser environment for users who don't need web browsing:

python
web_env = BrowserEnv(..., disable=True)  # Skip browser init

Option 3: Use headed mode on macOS

Add OS detection and use headed mode (with virtual display) on problematic macOS versions

Option 4: Documentation Update

Add clear documentation about:

  • Known issue with macOS 25.0+
  • Recommend Linux/Windows WSL2 for browser-based tasks
  • Workarounds or limitations

Workaround for Users

Currently, users on affected macOS versions cannot run AutoAgent with browser environment. Temporary solutions:

  1. Use Linux VM or Docker
  2. Use Windows with WSL2
  3. Wait for fix

Questions

  1. Is there a way to run AutoAgent without browser environment for non-web tasks?
  2. Could we add an environment variable like AUTOAGENT_DISABLE_BROWSER=true?
  3. Any plans to support newer macOS versions or alternative browsers?

Would love to help test any fixes!