Planned ProcessContainer schema 0.8 configuration
August 13, 2026 ยท View on GitHub
See the shared 0.7-to-0.8 network schema comparison for egress, ingress, and proxy endpoint changes. This page covers the ProcessContainer-specific proxy peer.
Contained proxy
allowedProxyPeer identifies either an installed package or an unpackaged AppContainer profile that hosts the proxy.
Package identity can scope a packaged proxy whether or not that proxy uses AppContainer isolation.
{
"version": "0.8.0-alpha",
"containment": "processcontainer",
"process": {
"commandLine": "cmd.exe /c echo replace-with-client-command"
},
"network": {
"egress": {
"default": "deny"
},
"ingress": {
"default": "allow",
"hostLoopback": "deny"
}
},
"runtimeConfig": {
"networkProxy": "http://127.0.0.1:8080"
},
"processContainer": {
"network": {
"allowedProxyPeer": "<installed-package-family-name-or-appcontainer-profile-name>"
}
}
}
| Field | Value |
|---|---|
runtimeConfig.networkProxy | HTTP/S loopback URL with an explicit port |
processContainer.network.allowedProxyPeer | Installed Package Family Name or AppContainer profile name |
ProcessContainer requires ingress.default: "allow" for private-network communication with an identity-scoped proxy.
Windows implements this on the MXC client with the bidirectional privateNetworkClientServer capability, so the
setting also permits private-network server traffic. egress.default: "deny" continues to block direct internet
traffic.
Valid endpoints use localhost, 127.0.0.1, or [::1] with an explicit
port. The proxy-specific network block above is required for an identity-scoped ProcessContainer proxy and is
omitted for the identity-less host-loopback deployment.
The proxy must already be running and listening on the loopback address and
port configured by runtimeConfig.networkProxy. See the canonical
proxy deployment requirements for endpoint validation and listener
binding. A packaged AppContainer proxy needs privateNetworkClientServer, internetClient for external destinations,
and inbound firewall authorization.
Minimal packaged AppContainer proxy manifest
<?xml version="1.0" encoding="utf-8"?>
<Package
xmlns="http://schemas.microsoft.com/appx/manifest/foundation/windows10"
xmlns:uap="http://schemas.microsoft.com/appx/manifest/uap/windows10"
xmlns:uap10="http://schemas.microsoft.com/appx/manifest/uap/windows10/10"
xmlns:desktop2="http://schemas.microsoft.com/appx/manifest/desktop/windows10/2"
xmlns:rescap="http://schemas.microsoft.com/appx/manifest/foundation/windows10/restrictedcapabilities"
IgnorableNamespaces="uap uap10 desktop2 rescap">
<Identity Name="Contoso.AgentProxy" Publisher="CN=Contoso" Version="1.0.0.0" ProcessorArchitecture="x64" />
<Properties>
<DisplayName>Agent Proxy</DisplayName>
<PublisherDisplayName>Contoso</PublisherDisplayName>
<Logo>Assets\Logo.png</Logo>
</Properties>
<Resources>
<Resource Language="en-us" />
</Resources>
<Dependencies>
<TargetDeviceFamily Name="Windows.Desktop" MinVersion="10.0.19041.0" MaxVersionTested="10.0.26100.0" />
</Dependencies>
<Capabilities>
<Capability Name="internetClient" />
<Capability Name="privateNetworkClientServer" />
<rescap:Capability Name="runFullTrust" />
</Capabilities>
<Extensions>
<desktop2:Extension Category="windows.firewallRules">
<desktop2:FirewallRules Executable="proxy.exe">
<desktop2:Rule Direction="in" IPProtocol="TCP" Profile="all"
LocalPortMin="8080" LocalPortMax="8080" />
</desktop2:FirewallRules>
</desktop2:Extension>
</Extensions>
<Applications>
<Application Id="Proxy" Executable="proxy.exe"
uap10:RuntimeBehavior="packagedClassicApp" uap10:TrustLevel="appContainer">
<uap:VisualElements DisplayName="Agent Proxy"
Description="HTTP proxy for contained workloads" BackgroundColor="transparent"
Square150x150Logo="Assets\Logo.png" Square44x44Logo="Assets\Logo.png"
AppListEntry="none" />
</Application>
</Applications>
</Package>
See the Microsoft Learn
package manifest schema reference
for package identity, signing, assets, and application metadata.
runFullTrust is required by the firewall extension;
TrustLevel="appContainer" still runs the proxy in an AppContainer.
The manifest example uses port 8080. The proxy developer must ensure that its inbound firewall rule covers the port
supplied to MXC in runtimeConfig.networkProxy.
After installing the package, retrieve its exact Package Family Name:
Get-AppxPackage -Name Contoso.AgentProxy |
Select-Object -ExpandProperty PackageFamilyName
Use that value verbatim for allowedProxyPeer for any packaged proxy. For an unpackaged AppContainer proxy, use its
AppContainer profile name instead.
See Proxy identity and firewall authorization for Windows enforcement and firewall details.