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-network

For 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-network

For 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