demo · v145
Split permission probe
Chrome 145 split what used to be one Local Network Access permission into two: local-network (RFC 1918 ranges) and loopback-network (127.0.0.0/8, localhost). The split lets developer tools ask only for loopback, and IoT dashboards ask only for the LAN — minimum-privilege by design.
The Permissions API surface for these names is still landing — the probe below queries
navigator.permissions.query() with both names and reports the browser's response. Treat unsupported as "this browser doesn't expose the new split yet".
loopback-network
loopback-networkFor developer tools, local-first apps, and anything talking to a server on the same machine.
- http://127.0.0.1:5173
- http://127.0.0.1:8080
- http://localhost:3000
- http://[::1]:9229
not probed
local-network
local-networkFor IoT dashboards, router admin UIs, smart-home consoles, printer discovery, NAS browsers.
- http://192.168.1.1/admin
- http://10.0.0.50/api
- http://printer.local/status
- http://nas.local:5000
not probed
why split?
a Vite dev server overlay needs loopback only — no reason to ask for LAN access
a Sonos web UI needs local-network only — no reason to ask for loopback
before Chrome 145, both flowed through one permission — over-asking by default
the code
// Chrome 145: two distinct permission names
const loopback = await navigator.permissions.query({
name: "loopback-network"
});
const localnet = await navigator.permissions.query({
name: "local-network"
});
// Tip: only ask for what you need. A loopback-only app
// shouldn't trigger a LAN prompt.
see also
- Local network access restrictions — feature index
- targetAddressSpace fetch option — sibling demo
- Request Classifier — sibling demo
- Spec — permissions section
- ChromeStatus entry