PayloadKit

Web Content Filter

com.apple.webcontent-filter

The payload that configures web content filters.

iOS 7.0+macOS 10.15+visionOS 1.1+
Apple schema

macOS: device channel only

Configuration Keys (28)

KeyTypeTitle
FilterType

iOS 8.0+

The type of filter, built-in or plug-in. In macOS, the system only supports the plug-in value.

Default: "BuiltIn"

Range: Built-In (iOS only) (BuiltIn), Plug-In (Plugin)

stringFilter Type
FilterGrade

macOS 10.15+ · not on iOS, visionOS

The system uses this value to derive the relative order of content filters. Filters with a grade of 'firewall' see network traffic before filters with a grade of 'inspector'. However, the system doesn't define the order of filters within a grade.

Default: "firewall"

Range: Firewall (firewall), Inspector (inspector)

stringFilter grade
AutoFilterEnabled

not on macOS

If 'true', the system enables automatic filtering. Use when 'FilterType' is 'BuiltIn'.

Default: false

booleanWeb filter enabled
PermittedURLs

not on macOS

An array or URLs that are accessible whether or not the automatic filter allows access. Use when 'FilterType' is 'BuiltIn'. Requires that 'AutoFilterEnabled' is 'true'.

arrayPermitted URLs
PermittedURLItems
stringPermitted url items
FilterBrowsers

not on macOS

If 'true', the system enables filtering WebKit traffic. Use when 'FilterType' is 'Plugin'. Note: At least one of 'FilterBrowsers' or 'FilterSockets' needs to be 'true'.

Default: false

booleanFilter WebKit Traffic
AllowListBookmarks

iOS 14.5+ · not on macOS

An array of dictionaries that define the pages that the user can bookmark or visit. Use when 'FilterType' is 'BuiltIn'.

arrayAllow List Bookmarks
AllowListBookmarksItem
dictAllow List Bookmarks Dictionary
URLrequired

The URL of the bookmark in the allow list.

stringURL
Titlerequired

The title of the bookmark.

stringTitle
WhitelistedBookmarksdeprecated

iOS · deprecated 14.5 · not on macOS, visionOS

Use 'AllowListBookmarks' instead.

arrayAllowlisted Bookmarks
WhitelistedBookmarksItem
dictAllowlisted Bookmarks Dictionary
URLrequired

The URL of the bookmark in the allow list.

stringURL
Titlerequired

The title of the bookmark.

stringTitle
DenyListURLs

iOS 14.5+ · not on macOS

An array of URLs that are inaccessible. Use when 'FilterType' is 'BuiltIn'. Limit the number of these URLs to no more than 500.

arrayDeny List URLs
DenyListURLItems
stringDeny List URL
BlacklistedURLsdeprecated

iOS · deprecated 14.5 · not on macOS, visionOS

Use 'DenyListURLs' instead.

arrayDenylisted URLs
BlacklistedURLItems
stringDenylisted URL
UserDefinedName

The display name for this filtering configuration. Required when 'FilterType' is 'Plugin'.

Depends on: FilterType ∈ [Plugin]

stringFilter Configuration Display Name
PluginBundleID

The bundle ID of the plug-in that provides filtering service. Required when 'FilterType' is 'Plugin'. Otherwise, it ignores this value. Consult your filtering solution vendor to determine what to specify for this value. Required when 'FilterType' is 'Plugin'.

Depends on: FilterType ∈ [Plugin]

stringPlug-In Bundle ID
ServerAddress

The server address, which may be the IP address, hostname, or URL. Use when 'FilterType' is 'Plugin'.

stringServer Address
UserName

The user name for the service. Use when 'FilterType' is 'Plugin'.

stringUsername
Password

The password for the service. Use when 'FilterType' is 'Plugin'.

stringPassword
PayloadCertificateUUID

The UUID of the certificate payload within the same profile that the system uses to authenticate the user. Use when 'FilterType' is 'Plugin'.

stringCertificate UUID
Organization

The organization string to pass to the third-party plug-in. Use when 'FilterType' is 'Plugin'.

stringOrganization
FilterSockets

If 'true', enables the filtering of socket traffic. Use when 'FilterType' is 'Plugin'. Note: At least one of 'FilterBrowsers' or 'FilterSockets' needs to be 'true'.

Default: false

booleanEnable Socket Filtering
FilterDataProviderBundleIdentifier

The bundle identifier string of the filter data provider system extension. This string identifies the filter data provider when the filter starts running. Required if 'FilterSockets' is 'true'.

Depends on: FilterSockets ∈ [true]

stringFilter data provider bundle identifier
FilterDataProviderDesignatedRequirement

not on iOS, visionOS

The designated requirement string that the system embeds in the code signature of the filter data provider system extension. This string identifies the filter data provider when the filter starts running. Required if 'FilterSockets' is 'true'.

Depends on: FilterSockets ∈ [true]

stringFilter data provider designated requirement
FilterPackets

macOS 10.15+ · not on iOS, visionOS

If 'true' and 'FilterType' is 'Plugin', the system enables filtering network packets. Use when 'FilterType' is 'Plugin'. Note: At least one of 'FilterPackets' or 'FilterSockets' needs to be 'true'.

Default: false

booleanEnable Packet Filtering
FilterPacketProviderBundleIdentifier

macOS 10.15+ · not on iOS, visionOS

The bundle identifier string of the filter packet provider system extension. This string identifies the filter packet provider when the filter starts running. Required if 'FilterPackets' is 'true'.

Depends on: FilterPackets ∈ [true]

stringFilter packet provider bundle identifier
FilterPacketProviderDesignatedRequirement

macOS 10.15+ · not on iOS, visionOS

The designated requirement string that the system embeds in the code signature of the filter packet provider system extension. This string identifies the filter packet provider when the filter starts running. Required if 'FilterPackets' is 'true'.

Depends on: FilterPackets ∈ [true]

stringFilter packet provider designated requirement
VendorConfig

The custom dictionary that the filtering service plug-in needs. Use when 'FilterType' is 'Plugin'.

dictVendor Configuration
{{key}}required
stringVendor Custom Key Name
{{value}}required

The custom key/value pairs for the filtering service.

stringVendor Custom Key Value
ContentFilterUUID

iOS 16.0+ · not on macOS

A globally unique identifier for this content filter configuration. The content filter processes network traffic for managed apps with the same 'ContentFilterUUID' in their app attributes. Use when 'FilterType' is 'Plugin'.This key must be present for unsupervised devices and user enrollment.

stringContent filter UUID
HideDenyListURLs

iOS 18.0+ · visionOS 2.0+ · not on macOS

If 'true', the device hides the 'DenyListURLs' item in the profiles that display in Settings > General > VPN & Device Management.

Default: false

booleanHideDenyListURLs
FilterURLs

iOS 26.0+ · macOS 26.0+ · not on visionOS

If 'true', the system filters URL requests. Use when 'FilterType' is 'Plugin'.

Default: false

booleanFilterURLs
URLFilterParameters

iOS 26.0+ · macOS 26.0+ · not on visionOS

A dictionary containing URL filter parameters. Required when 'FilterURLs' is 'true'.

Depends on: FilterURLs ∈ [true]

dict—
URLFilterControlProviderDesignatedRequirement

The designated requirement string in the code signature of the URL filter control provider app extension. The system uses this string to identify the URL filter control provider when the filter starts running. Required in macOS.

stringURL filter control provider designated requirement
URLFilterControlProviderBundleIdentifierrequired

The bundle identifier string of the URL filter control provider app extension. The system uses this string to identify the URL filter control provider when the filter starts running.

stringURL filter control provider bundle identifier
PIRServerURLrequired

The URL containing the domain name of the private information retrieval server.

stringPrivate information retrieval server URL
PIRPrivacyPassIssuerURLrequired

The URL containing the domain name of Privacy Pass Issuer.

stringPrivacy pass issuer URL
PIRAuthenticationTokenrequired

The per-user authentication token string, which is an HTTP bearer token for the person using your app. The system uses this token to attest that it is a valid user when requesting anonymous authentication tokens for PIR exchanges.

stringAuthentication token
URLFilterFailClosed

If 'true', the system blocks URLs if the filter is enabled, but it fails to make any filtering decision; for example, if there's a communication failure with the PIR server. If 'false', the system allows URLs if the filter is enabled, but it fails to make any filtering decision.

Default: false

booleanURLFilterFailClosed
URLPrefilterFetchFrequency

The time interval in seconds that the system uses to periodically run the 'NEURLFilterControlProvider' app extension. The default value is 86400 seconds (1 day). The minimum allowed value is 2700 seconds (45 minutes). The system allows 'NEURLFilterControlProvider' implementations to download prefilter Bloom filter data onto the device periodically at the specified interval. Implementations need to allow for a slight difference between the scheduled time and the actual runtime of the task, due to the scheduling mechanism on the system.

Default: 86400

Range: 2700 – —

integerURLPrefilterFetchFrequency
SafariHistoryRetentionEnabled

iOS 26.0+ · macOS 26.0+ · visionOS 26.0+

If 'true', this payload enforces a policy which requires retention of browsing history. This causes Safari to disable clearing of browsing history, and prevents the use of private browsing mode because that mode doesn't keep browsing history.

Default: true

booleanSafariHistoryRetentionEnabled