diff --git a/cli/src/connect.rs b/cli/src/connect.rs index 11c59fb..b0c11c2 100644 --- a/cli/src/connect.rs +++ b/cli/src/connect.rs @@ -24,14 +24,17 @@ pub const HOST_NAME: &str = "com.agent_browser.connect"; /// that extension talk to this host, and the force-install policy references it. pub const EXTENSION_ID: &str = "ciiljdlhdpfckdcfkphgmfalanpdejep"; -/// Omaha/gupdate update manifest for the signed `ab-connect.crx`. The macOS -/// configuration profile force-installs the extension from here, so no -/// `chrome://extensions` "Load unpacked" GUI step is ever needed. Chrome 142+ -/// removed `--load-extension`, and macOS has blocked local-`.crx` external -/// installs since Chrome 44 — a policy `update_url` is the only GUI-free path -/// left into the real, logged-in profile. -pub const UPDATE_URL: &str = - "https://raw.githubusercontent.com/leeguooooo/agent-browser-stealth/main/extensions/updates.xml"; +/// Update URL the force-install policy points at. MUST be the Chrome Web Store +/// endpoint: Chrome 149 tags any **off-Web-Store** force-installed extension +/// `[BLOCKED]` on an unmanaged browser (verified on macOS — chrome://policy shows +/// `[BLOCKED]…` / "Error, Warning"). Self-hosting a `.crx` therefore does NOT +/// work on consumer Chrome; the extension must be published to the Web Store, and +/// then this policy force-installs it silently (Web Store extensions are allowed). +pub const UPDATE_URL: &str = "https://clients2.google.com/service/update2/crx"; + +/// Public Web Store listing — the guaranteed one-click "Add to Chrome" path, +/// and the fallback when the force-install profile can't be approved headlessly. +pub const STORE_URL: &str = "https://chromewebstore.google.com/detail/ciiljdlhdpfckdcfkphgmfalanpdejep"; /// Stable identifiers for the generated Chrome configuration profile, so a /// re-install replaces (rather than duplicates) it in System Settings. @@ -94,11 +97,14 @@ pub fn run_connect(args: &[String], json: bool) { println!("\n✓ Chrome force-install profile written:\n {}", path.display()); if cfg!(target_os = "macos") { println!( - "\nOne-time step (no file dialog, ever): approve the profile, then restart Chrome.\n\ - System Settings → General → Device Management (or Privacy & Security →\n\ - Profiles) → double-click \"agent-browser connect\" → Install.\n\ - After approval Chrome force-installs the extension on next launch and\n\ - keeps it up to date — no token, no per-use confirmation." + "\nGet the extension into Chrome (one-time). Either:\n\ + A) One click: open {STORE_URL}\n and press \"Add to Chrome\".\n\ + B) Silent: approve the profile, then restart Chrome —\n \ + System Settings → General → Device Management → double-click\n \ + \"agent-browser connect\" → Install. Chrome then force-installs +\n \ + auto-updates it (no token, no per-use confirmation).\n\ + Both need the extension published to the Web Store; until then use\n \ + chrome://extensions → Developer mode → Load unpacked → extensions/ab-connect." ); } } diff --git a/extensions/ab-connect.zip b/extensions/ab-connect.zip new file mode 100644 index 0000000..3d0618b Binary files /dev/null and b/extensions/ab-connect.zip differ diff --git a/extensions/store/SUBMISSION.html b/extensions/store/SUBMISSION.html new file mode 100644 index 0000000..71b28d7 --- /dev/null +++ b/extensions/store/SUBMISSION.html @@ -0,0 +1,133 @@ + + +
+ + +extensions/ab-connect.zip · id 锁定为 ciiljdlhdpfckdcfkphgmfalanpdejep为什么必须走商店:实测 Chrome 149 在非企业托管的 Mac 上,会把"非 Web Store"的 force-install 扩展直接标成 [BLOCKED]。商店扩展不受此限。这也是 codex / claude 扩展都发商店的原因。
debugger 权限,这是 Chrome Web Store 审核最严的权限之一。理由必须写清楚"只在用户本机、用户主动发指令时驱动用户自己的标签页,无远程服务器"。类似工具(如 claude-in-chrome)能过审,但可能被多问一轮、审核时间偏长(几天到一两周)。
+https://chrome.google.com/webstore/devconsoleprivacy.html)extensions/ab-connect.zipciiljdlhdpfckdcfkphgmfalanpdejep(因为 manifest 里保留了 key,id 会被锁成这个,native messaging 的 allowed_origins 才对得上)。若 id 不是这个,告诉我,我重签。agent-browser connect+ +
Let your own agent-browser CLI drive your logged-in Chrome — a local automation bridge. No remote server, no token.+ +
agent-browser connect is the in-browser half of the open-source agent-browser CLI. It lets the +command-line tool you installed on this same computer automate the Chrome you're already logged +into — opening pages, clicking, filling forms, reading the DOM — driven entirely by you. + +How it works +- The extension talks ONLY to the local agent-browser CLI over Chrome native messaging (a local + inter-process channel — no network socket, no token, no remote server). +- When you run an automation command, the extension relays Chrome DevTools Protocol operations to + the tab you target, then returns the result to the CLI. + +Privacy +- No analytics, no trackers, no data collection. +- Nothing is sent to any remote server. The only message peer is the local CLI. +- Source is open (Apache-2.0): https://github.com/leeguooooo/agent-browser-stealth + +You need the agent-browser CLI installed and paired (run: agent-browser extension install) for this +extension to do anything.+ +
Developer Tools+ +
English+ +
Bridge the user's locally-installed agent-browser CLI to their own logged-in Chrome so the CLI can +automate pages the user is working with, entirely on the user's machine and at the user's command.+ +
| 权限 | 理由(复制到对应输入框) |
|---|---|
| debugger | Attaches the Chrome DevTools Protocol to the user's own active tab so the paired local agent-browser CLI can automate it (navigate, click, read DOM) only while the user is running a command. Commands arrive solely from the local CLI via native messaging; there is no remote endpoint. |
| tabs | Enumerate and target the correct open tab to attach automation to. |
| nativeMessaging | The sole communication channel: a local native-messaging connection to the agent-browser CLI installed on the same machine. No network is used. |
| storage | Persist small local pairing/configuration state for the extension. |
| alarms | Keep the MV3 service worker alive during longer automation sessions. |
| webNavigation | Detect page loads/navigations so automation can wait for the right moment before acting. |
| host permissions(若被问) | The extension declares none; tab access is mediated through the debugger attach the user initiates. |
privacy.html 的公开地址(见下)。商店要求一个公开可访问的隐私政策地址。文件已写好:extensions/store/privacy.html。两种托管:
https://leeguooooo.github.io/agent-browser-stealth/privacy.html。我可以帮你用 gh 开 Pages 并把文件放到位。https://raw.githubusercontent.com/leeguooooo/agent-browser-stealth/main/extensions/store/privacy.html(能访问,但浏览器显示源码不渲染,审核可能不喜欢)。可以截一张 CLI + Chrome 并排的演示图。需要的话我用 cua-driver 截一张合规尺寸的图给你。
+ +extension install 的 force-install update_url 切到商店地址并发布新 fork;之后用户 extension install → 批准一次描述文件 → 静默装好(商店扩展不再 [BLOCKED]);或者用户在商店页一键 Add to Chrome。chrome://extensions → 打开开发者模式 → Load unpacked → 选 extensions/ab-connect,30 秒手动装一次,native messaging + extension connect 立即可用。等商店过审再切静默路径。
+ciiljdlhdpfckdcfkphgmfalanpdejep) · Last updated 2026-06-09Summary: this extension collects no personal data, contains no analytics or
+trackers, and sends nothing to any remote server. It is a local bridge that lets the
+user's own agent-browser command-line tool, running on the same computer, drive the
+user's logged-in Chrome.
agent-browser connect pairs Chrome with the locally-installed agent-browser CLI over
+Chrome native messaging (a local inter-process channel; no network socket, no token). When
+the user issues an automation command in the CLI, the extension relays Chrome DevTools Protocol
+operations to the tab the user targets. Everything happens on the user's machine, initiated by the
+user.
| Category | Collected? | Detail |
|---|---|---|
| Personally identifiable information | No | Never read, stored, or transmitted. |
| Browsing history | No | Not collected. Page content is acted on transiently only while the user is running an automation command, and is never stored or sent off-device. |
| Authentication / cookies / credentials | No | Not read or exported by the extension. |
| Analytics / telemetry | No | The extension contains no analytics, tracking, or crash-reporting code. |
| Remote transmission | No | The extension's only message peer is the local agent-browser CLI via native messaging. It makes no outbound network requests of its own. |
| Permission | Purpose |
|---|---|
| debugger | Attach the Chrome DevTools Protocol to the user's own tab so the local CLI can automate it, only while the user is actively running a command. |
| tabs | Enumerate and target the correct open tab to automate. |
| nativeMessaging | The local transport to the paired agent-browser CLI — the extension's sole communication channel. |
| storage | Persist small local pairing/state values. |
| alarms | Keep the MV3 service worker alive during longer automation sessions. |
| webNavigation | Detect page loads so automation can wait for the right moment. |
None. No data is sold, shared, or transferred to third parties. There are no third parties — the +extension talks only to a program the user installed on the same computer.
+ +Source code, issues, and contact: https://github.com/leeguooooo/agent-browser-stealth