diff --git a/README.md b/README.md index d028daf..119e21d 100644 --- a/README.md +++ b/README.md @@ -60,6 +60,32 @@ Once enabled on one or more tabs, your AI assistant can: The MCP will automatically start a relay server and connect to your enabled browser tabs. +## Security + +Playwriter is designed with security in mind, ensuring that only you can control your browser. + +### How It Works + +1. **Local WebSocket Server**: When the MCP starts, it launches a singleton WebSocket server on `localhost:19988` +2. **Dual Connection**: Both the Chrome extension and MCP client connect to this local server +3. **User-Controlled Access**: The extension can only control tabs where you explicitly clicked the extension icon (green icon indicates connected tabs) +4. **Localhost-Only**: The WebSocket server does not send CORS headers, preventing any web pages or remote servers from connecting to it - only processes running on your local machine can establish a connection +5. **Explicit Consent**: Chrome displays an "automation banner" on controlled tabs, making it obvious when a tab is being automated + +### What Can Be Controlled + +- **Only enabled tabs**: Tabs you explicitly connected by clicking the extension icon +- **New tabs created by automation**: Tabs created programmatically through Playwright commands +- **Nothing else**: Other browser tabs, your browsing history, or any tabs you haven't explicitly connected remain inaccessible + +### What Cannot Happen + +- **No remote access**: External websites or servers cannot connect to the WebSocket (localhost-only) +- **No passive monitoring**: The extension cannot read or monitor tabs you haven't connected +- **No automatic spreading**: The debugger won't automatically attach to new tabs you open manually + +This architecture ensures that browser automation only happens with your explicit permission on tabs you choose. + ### Using with Playwright You can use playwriter programmatically with playwright-core: diff --git a/extension/package.json b/extension/package.json index 495ef5b..cd78da0 100644 --- a/extension/package.json +++ b/extension/package.json @@ -1,5 +1,5 @@ { - "name": "@playwright/mcp-extension", + "name": "mcp-extension", "version": "0.0.48", "description": "Playwright MCP Browser Extension", "private": true, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 80822e0..599c490 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -27,7 +27,7 @@ importers: specifier: ^4.0.8 version: 4.0.8(@types/node@24.10.1)(@vitest/ui@4.0.8)(tsx@4.20.6) - extension-playwright: + extension: dependencies: playwriter: specifier: workspace:*