This release includes 2 security fixes for security teams reviewing exposed deployments.
Published 25d
MCP Browser & Automation
✓ No known CVEs patched
This release patches 2 known CVEs
Topics
ai-agent
ai-agents
browser-automation
claude
docker
fastapi
+6 more
llm
local-first
mcp
novnc
playwright
self-hosted
Affected surfaces
auth
Summary
AI summaryDownload capture tasks are prevented from being garbage‑collected mid‑flight, improving reliability.
Full changelog
Changed
browser_manager.pyis now a pure facade + composition root (1,284 → 769 lines). The domain logic that remained after the v1.2 service extraction moved intoapp/browser/services/(fork / shadow-browse / network log → sessions & diagnostics; settle / action verification → actions; platform detection + auth-state info → auth profiles), and ~50 delegation shims with zero callers were deleted. The public API and the private seams that tests patch are unchanged.- Fork state exports are encrypted at rest.
fork_sessionnow routes its storage-state export throughAuthStateManager, so exported cookies/localStorage are Fernet-encrypted wheneverAUTH_STATE_ENCRYPTION_KEYis set (previously always plaintext JSON, regardless of settings). - Shadow-browse state never touches disk.
enable_shadow_browsehands the exported storage state to the headed context as an in-memory dict instead of writing a plaintext temp file.
Fixed
- Download capture tasks can no longer be garbage-collected mid-flight. Page
downloadhandlers now go throughspawn_background_task; the event loop keeps only weak task references, so the old bareasyncio.create_taskcould silently drop a download and its audit record. - Shadow-browse failures roll back cleanly. If navigation in the headed clone fails, the headed Chromium process is closed and the half-registered session is removed (previously both leaked until manual cleanup).
- Page listeners survive object-id reuse. Sessions track listener-attached pages in a
WeakSetinstead of rawid()values, so a recycled id can no longer cause a new page to skip listener attachment. shutdown()is idempotent (the Playwright handle is cleared after stop), and_assert_url_allowedmatches host patterns case-insensitively on all platforms.
Security Fixes
- Fork state exports are encrypted at rest when `AUTH_STATE_ENCRYPTION_KEY` is set.
- Shadow‑browse state no longer touches disk; it uses an in‑memory dict.
Weekly OSS security release digest.
The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.
No spam, unsubscribe anytime.
Share this release
About LvcidPsyche/auto-browser
Give your AI agent a real browser — with a human in the loop. Open-source MCP-native browser agent.
Related context
Beta — feedback welcome: [email protected]