v151 · isolated-web-apps · permissions-policy · direct-sockets
Permission Policy Merger: direct-sockets-private with local-network and loopback-network
Chrome 151 replaces the direct-sockets-private permission policy for Isolated Web Apps with two more granular policies: local-network (for LAN addresses) and loopback-network (for loopback addresses). IWA manifests must now declare which network scope Direct Sockets connections target.
at a glance
| Shipped in | Chrome 151 (Desktop; enabled by default) |
|---|---|
| Status | Enabled by default (stage 160 desktop_first: 151) |
| Scope | Isolated Web Apps (IWAs) only |
| Spec | WICG Direct Sockets §permissions-policy-pna |
| Standards position (Firefox) | No signal |
| Standards position (Safari) | No signal |
| ChromeStatus | 6046077976444928 — Permission Policy Merger: direct-sockets-private with local-network and loopback-network |
Implementation-status divergence, both sides reported rather than resolved (fetched 2026-10-07): this page records the granular policies shipping in Chrome 151 for Isolated Web Apps, while the ChromeStatus API record top-level status string still reads “Proposed” (accurate_as_of 2026-06-22) even though stage 160 explicitly sets desktop_first: 151.
why it exists
The Direct Sockets API gives Isolated Web Apps raw TCP/UDP socket access. Previously, accessing private network addresses (LAN and loopback) required declaring a single coarse direct-sockets-private permission policy in the IWA manifest. This all-or-nothing approach made it impossible to grant an IWA LAN access without also granting loopback access (or vice versa).
In accordance with the principle of least privilege and Private Network Access specifications (WICG PNA), separating these scopes ensures that an app intended to communicate with LAN hardware (like printers or IoT devices) cannot inadvertently or maliciously access sensitive local machine daemons listening on 127.0.0.1.
permissions policy syntax and manifest fields
Per the W3C Permissions Policy specification and MDN Permissions Policy reference, policies are declared in the Web App Manifest permissions_policy field for IWAs:
"permissions_policy": {
"local-network": ["self"],
"loopback-network": ["self"]
}
| Policy directive | Network scope | Chrome 150 behaviour | Chrome 151+ behaviour |
|---|---|---|---|
direct-sockets-private | LAN + loopback addresses | Granted both scopes | Deprecated; replaced by granular policies |
local-network | Private LAN IP ranges (RFC 1918: 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16) | Not available | Required for LAN Direct Sockets connections |
loopback-network | Loopback interfaces (127.0.0.0/8, ::1) | Not available | Required for localhost Direct Sockets connections |
Attempting to open a TCPSocket or UDPSocket to a destination address without the necessary policy declared in the manifest causes the connection promise to reject with a DOMException (e.g. SecurityError or NetworkError).
examples
In Chrome 151+, Isolated Web Apps must declare the exact network scope in their manifest file:
// IWA Web App Manifest (Chrome 151+ — granular control)
{
"name": "Local Network Device Manager",
"start_url": "/",
"display": "standalone",
"permissions_policy": {
"local-network": ["self"], // allow LAN connections
"loopback-network": ["self"] // allow loopback connections
}
}
// Or just local-network, if the app only connects to LAN devices:
{
"name": "LAN Printer Controller",
"permissions_policy": {
"local-network": ["self"]
}
}
browser support
| Browser | Support | Notes |
|---|---|---|
| Chrome 151+ | Enabled by default | Desktop Isolated Web Apps (IWAs) only |
| Edge 151+ | Enabled by default | Chromium mirror |
| Firefox | No signal | Direct Sockets and IWAs unsupported |
| Safari | No signal | Direct Sockets and IWAs unsupported |
see also
- Chrome Platform Status — Permission Policy Merger: direct-sockets-private
- ChromeStatus API record (6046077976444928)
- ChromeStatus milestone 151 features query
- WICG Direct Sockets specification — Permissions Policy PNA
- WICG Direct Sockets specification
- Direct Sockets explainer
- WICG Isolated Web Apps repository
- W3C Permissions Policy specification
- MDN: Permissions-Policy HTTP header
- WICG Private Network Access specification
- WICG Private Network Access repository