Browser And Web Boundaries
Use this page when web fetch, browser actions, browser preview, or outbound HTTP delivery feels “mysteriously blocked.” The important operator truth is that Loong has more than one web-facing boundary, and each one owns a different lane.Start Here
| If you need to… | Start here |
|---|---|
| allow a private or loopback HTTP target for outbound delivery | Outbound HTTP Trust Toggle |
| change built-in browser enablement or session limits | Built-In Browser Shape |
| allow the built-in web fetch or built-in browser lane to reach a private host | Built-In Web And Browser Policy |
| constrain browser or web traffic to a reviewed domain set | Allowed And Blocked Domains |
| understand why browser preview still is not ready after install | Browser Preview And Companion Gates |
| inspect the underlying public safety posture | Security And Reliability |
One Problem Family, Four Different Config Owners
The same symptom word, such as “browser is blocked” or “URL is rejected,” can come from different policy owners:[outbound_http]owns HTTP-backed outbound delivery such as webhook-style and workplace send surfaces[tools.browser]owns built-in browser enablement and local session limits[tools.web]owns built-in web fetch and the outbound trust boundary used by built-in browser requests[tools.browser_companion]owns the richer managed browser companion policy
Outbound HTTP Trust Toggle
Use this when the blocked target is an outbound delivery surface rather than the built-in browser lane.- a webhook target is loopback or private-network only
- a self-hosted Slack/Discord-style bridge sits behind an internal endpoint
- an outbound-only surface is intentionally meant to stay inside a trusted network boundary
outbound_httpis for config-backed outbound delivery- it is not the same thing as the built-in browser or web-fetch policy
Built-In Browser Shape
The built-in browser tool is split across two config families on purpose:- change
[tools.browser]when browser actions themselves are disabled or need different session, link, or text limits - change
[tools.web]when the blocker is URL policy, private-host policy, redirects, timeout, or allowed and blocked domains - built-in browser requests follow
tools.webfor host and domain trust; they do not use[outbound_http]
Built-In Web And Browser Policy
The built-in browser lane follows the same web-fetch safety boundary as the built-in web tools.allow_private_hostsdecides whether loopback and private-network targets are blocked or allowedallowed_domainsbecomes an explicit allowlist when it is non-emptyblocked_domainsstays a deny list for known-bad or out-of-scope targetstimeout_seconds,max_bytes, andmax_redirectskeep the lane bounded even when it is enabled
- built-in
web.fetchor search-style retrieval is blocked on a local/private URL - built-in browser open/extract/navigation needs to reach a private bridge
- the browser lane should be allowlisted to a reviewed public domain set
- the browser tool itself is already enabled and the remaining problem is clearly about web reachability rather than browser session sizing
Allowed And Blocked Domains
Domain rules are normalized into lowercase entries and are meant to be read as real operator policy, not only as implementation detail. Use them like this:- keep
allowed_domainsempty when public-web access should remain broad - fill
allowed_domainswhen the lane should only talk to a reviewed set such asdocs.example.com - use
blocked_domainsfor explicit no-go destinations even when the rest of the lane remains broad
allow_private_hosts = true, check
these next:
- the host may still be missing from a non-empty
allowed_domainslist - the host may already appear in
blocked_domains - you may be changing the wrong lane, such as
outbound_httpwhen the built-in browser is the real caller
Browser Preview And Companion Gates
Browser preview adds another layer beyond plain URL policy: the runtime itself must be installed and ready. The shortest public path is still:tools.web:
enable-browser-previewturns on the managed preview helper flowagent-browseris the runtime binary that must actually exist onPATHloong doctoris the public repair path when preview still is not ready
Managed Browser Companion Policy
When you want the richer companion lane to be explicit in config instead of relying on defaults alone, this is the public shape:enabled = trueonly turns on the config gate; it does not make the runtime binary magically availablecommandandexpected_versionmake doctor’s install/version checks concreteallow_private_hosts,allowed_domains, andblocked_domainsare the companion lane’s own policy when you configure it explicitly- this block is separate from
[tools.browser]and the built-in browser tool; it is for the managed companion runtime path
Common Failure Cases
| What happened | What it usually means | What to change |
|---|---|---|
| an outbound webhook or workplace send target is rejected | the outbound delivery lane is still fail-closed for private hosts | set [outbound_http] allow_private_hosts = true only if that private target is intentional |
| browser commands are unavailable before any URL is even tried | the built-in browser tool is disabled or too tightly bounded for the use case | review [tools.browser] enabled, max_sessions, max_links, and max_text_chars |
| built-in browser open or web fetch rejects a local/private URL | the built-in tool lane is still in public-only mode | set [tools.web] allow_private_hosts = true |
| a target is still rejected after private hosts are allowed | the host is missing from an allowlist or already blocked explicitly | review allowed_domains and blocked_domains in the owning lane |
| browser preview enable succeeded, but preview is still unavailable | the helper skill is present but the runtime binary is missing or not callable | install agent-browser, verify it directly, then rerun loong doctor |
| browser preview enable fails immediately | shell policy explicitly denies agent-browser | remove agent-browser from [tools].shell_deny, then retry |
| doctor says the browser companion runtime gate is not ready | config and runtime readiness are still different states | keep using the built-in browser lane or disable tools.browser_companion.enabled until the companion runtime is truly ready |
Reading Rules
- Change only the lane that actually owns the blocked traffic.
- Check
[tools.browser]first if the problem is “browser tool unavailable” rather than “URL rejected.” - Do not use
outbound_httpas a generic fix for built-in browser or web-fetch failures. - Do not use
allow_private_hosts = trueas a substitute for a real domain policy when the lane should stay narrow. - Treat
doctoras the repair path when browser preview or companion readiness is unclear.
Continue Reading
- Continue to Managed Skills when the issue is skill install, browser preview enablement, or download policy rather than raw URL policy.
- Continue to Configuration Patterns when you want the wider operator config map around providers, channels, memory, and trust toggles.
- Continue to Tool Surface when you want the broader truthful-tool contract behind these boundaries.
- Continue to Doctor And Health when you want the repair-first operator path.