On this page
On this page
Tools
Browser security
Key ideas:
-
Browser control is loopback-only; access flows through the Gateway's auth or node pairing.
-
The standalone loopback browser HTTP API uses shared-secret auth only: gateway token bearer auth,
x-openclaw-password, or HTTP Basic auth with the configured gateway password. -
Tailscale Serve identity headers and
gateway.auth.mode: "trusted-proxy"do not authenticate this standalone loopback browser API. -
If an HTTP listener (the standalone browser server or a sandbox browser bridge) starts and no shared-secret auth is configured, OpenClaw generates a browser-control credential for it:
- When
gateway.auth.modeisnone, it generates a token and persists it asgateway.auth.token. - When
gateway.auth.modeistrusted-proxy, it generates a password that stays in the Gateway process and is never written to config. Under trusted-proxy auth,gateway.auth.passwordis also a local Gateway login, and changing it restarts the Gateway.
Out-of-process clients of the standalone loopback API under trusted-proxy therefore need an explicit
gateway.auth.password.Auto-generation is skipped when an explicit string credential is already configured for that mode, or when
gateway.auth.modeispassword. - When
-
The Gateway's in-process browser service has no HTTP listener. Starting it on first browser use never generates a credential or writes config.
-
Configure
gateway.auth.token,gateway.auth.password,OPENCLAW_GATEWAY_TOKEN, orOPENCLAW_GATEWAY_PASSWORDexplicitly if you want a stable secret you control instead of the generated one.
Remote CDP tips:
- Prefer encrypted endpoints (HTTPS or WSS) and short-lived tokens where possible.
- Avoid embedding long-lived tokens directly in config files.
- Keep the Gateway and any node hosts on a private network (Tailscale); avoid public exposure.
- Treat remote CDP URLs/tokens as secrets; prefer env vars or a secrets manager.
Local preview access
When browser.ssrfPolicy is absent, agents with unrestricted execution on the
Gateway host can navigate to localhost, 127.0.0.1, and ::1 on any port in
OpenClaw's own live, managed local Chrome. This includes unrelated services bound
to loopback, consistent with that agent's existing host execution access.
For Gateway-managed execution, tools.gatewayPolicy must also permit exec;
independently authorized native harness execution keeps its own authority.
Any explicit browser.ssrfPolicy, including {}, disables this automatic
exception. Restricted or sandboxed agents, remote browser targets, externally
managed profiles, and browsers reached through a tunnel do not qualify. A live
OpenClaw-owned process is required; a loopback CDP address alone is insufficient.
The exception belongs to one tool invocation. OpenClaw checks its authority again before navigation and before continuing each intercepted redirect hop, including out-of-process iframe documents. It does not widen stored policy or grant private network access to other tools. Playwright is required for the exception; without it, the existing browser policy applies.
A runtime config reload retires the current automatic grant. A fresh assistant turn prepares it again; ordinary policy-controlled browser access is unaffected.