Tenmomo Browser Broker

Security model

Browser Agent treats pages and MCP clients as untrusted callers. The Chrome extension and local broker are the control plane.

Local seams

Explicit local threat-model choices

The two broker hard lines

  1. Password manager/autofill store: permanently inaccessible. The broker rejects store-related methods and URLs, and manifest validation rejects private store permissions. Public MV3 APIs do not expose Chrome’s password database; the policy remains explicit so future tools fail closed.
  2. Finance-transaction domains: default-deny. Every non-listing action on a configured finance suffix requires a native macOS owner dialog. The extension rereads the tab URL immediately before execution and asks the broker to check that observed URL, closing the broker-to-extension dispatch race. Allow Once authorizes only that request; denial, cancellation, timeout, or an unavailable UI rejects it. There is no MCP method that grants an exception.

Chrome internal/Web Store injection restrictions and password-value redaction are technical safeguards, not additional broker authority lines.

Browser authority

The local owner profile grants all HTTP(S) hosts and all Chrome permissions the current implementation uses. MAIN-world browser_evaluate can execute arbitrary page-context code with the visited page’s logged-in authority, subject to page CSP and the two broker hard lines.

The Chrome Web Store profile minimizes static review surface: activeTab, sidePanel, storage, and tabs are core; scripting and <all_urls> are requested together from a user gesture. sidePanel and storage must be core because extension initialization uses them before any permission prompt. tabs is core so the read-only inventory can include titles and URLs. activeTab is core for user-invoked temporary page/screenshot access.

The extension stores account tokens only in trusted extension contexts. Login passwords remain in memory only for the request. Snapshot serialization omits password input values, and activity entries omit typed text and evaluation code.