Remove unwanted Apple Intelligence models without disabling SIP. CLI, nix-darwin, and Home Manager support.
Swift
39
4 commits
updated Oct 1, 2026
Remove Apple Intelligence models without disabling SIP
Install · Usage · Compare · Nix documentation
Pared turns off selected Apple Intelligence features and asks Apple's asset service to remove their downloaded models. System Integrity Protection (SIP) stays enabled. Use the CLI for local settings, or manage a policy with nix-darwin or Home Manager.
Removing models and preventing their return are separate steps: cleanup removes existing models, and an installed configuration profile blocks future downloads.
Requires macOS 27 and Xcode 27 or newer.
brew tap 4evy/pared https://github.com/4evy/pared.git
brew install 4evy/pared/pared
On Apple silicon, with Nix flakes enabled:
nix run github:4evy/pared -- status
nix profile install github:4evy/pared
To build a local checkout, run nix build. The executable is
./result/bin/pared.
Start by checking the feature names and current policy:
pared features
pared status
A new policy defaults to disabled for every feature. The CLI stores it in
~/Library/Application Support/pared/policy.json. status reports both the
policy you requested and the preferences it can read; the policy alone does not
prove that macOS enforces those settings.
Starting from a new policy, this example enables Writing Tools and leaves all other features disabled:
pared enable writingTools
pared profile open
Finish installing the generated profile in System Settings. Until you replace an
existing profile, its settings remain enforced. enable, disable, and reset
save the new policy even when the installed profile overrides it. Enabling a
feature permits its use; it does not download its models.
Once the profile is installed, preview and run cleanup:
pared models cleanup --dry-run
pared models cleanup
Cleanup selects a model only when all of its consumers listed in Pared's catalog
are disabled. A shared model stays available if any known consumer is enabled or
unmanaged. enable and disable do not delete models themselves.
To stop managing a feature, remove its local preferences and replace the profile:
pared reset inlinePredictions
pared profile open
reset removes preference overrides; it does not restore values saved before
Pared ran. Apple supplies the defaults where no other policy applies.
Enable the feature and install the replacement profile before requesting its models. For a feature with a download mapping in the catalog, such as Genmoji:
pared enable genmoji
pared profile open
# Finish installing the profile in System Settings before continuing
pared models download genmoji
pared models status genmoji
A successful download request means Apple's service accepted the subscription.
The download continues in the background. models status reports a snapshot and
local asset directories, not live progress or reclaimed disk space. For features
without a download mapping, enable them in their Apple app.
Run pared --help for all commands. Use --policy FILE to read an existing
policy at another path; this matters when inspecting settings generated by Nix.
Add inputs.pared.url = "github:4evy/pared"; to your flake. Choose one of the
modules below.
Pass inputs through specialArgs, then add this to your Darwin config:
{ inputs, ... }:
{
imports = [ inputs.pared.darwinModules.default ];
programs.pared = {
enable = true;
defaultState = false;
features = {
writingTools = true;
notificationSummaries = false;
spatialPhotos = null;
};
};
}
Pass inputs through extraSpecialArgs, then add this to your home config:
{ inputs, ... }:
{
imports = [ inputs.pared.homeManagerModules.default ];
programs.pared = {
enable = true;
defaultState = false;
features = {
writingTools = true;
notificationSummaries = false;
spatialPhotos = null;
};
};
}
In this example, Writing Tools is enabled, Spatial Photos is unmanaged, and all
other features are disabled by defaultState = false. true enables a feature,
false disables it, and null omits it from generated settings. Changing a Nix
option to null does not remove preferences written earlier.
Rebuild your configuration. For nix-darwin's user preferences, configure
system.primaryUser. Then install disable-apple-intelligence.mobileconfig
from /etc/pared (nix-darwin) or $XDG_CONFIG_HOME/pared (Home Manager,
normally ~/.config/pared) through System Settings.
The same directory contains policy.json and declarations.json. CLI commands
use their own policy path unless you pass --policy. For example, preview
cleanup using the nix-darwin policy with:
pared models cleanup --policy /etc/pared/policy.json --dry-run
Change Nix-managed settings in your Nix configuration and rebuild; CLI edits to
a policy in /nix/store are rejected. Deploy declarations.json through MDM
(mobile device management) if you use it; it is not an installable profile.
Both modules remove models for disabled features during activation by default.
They record the last successfully cleaned policy and skip cleanup when it is
unchanged. A policy change triggers cleanup again; failures retry on the next
activation. Set programs.pared.cleanupOnActivation = false; to opt out. Home
Manager respects activation dry runs and keeps its cleanup record under
$XDG_STATE_HOME/pared; nix-darwin uses /var/db/pared.
Cleanup does not install the profile. Install it to block future model downloads.
Pared uses a shared feature catalog to connect each feature to its preferences, management restrictions, and model asset sets. An asset set is a group of models managed by Apple's asset service. The CLI and Nix modules use this catalog to generate the same policy settings.
Preventing downloads. For each asset type whose known consumers are all
disabled, the profile sets DownloadServerBaseURLOverride-<assetType> in
com.apple.MobileAsset to https://127.0.0.1:9/pared-blocked/. mobileassetd
reads these settings from
/Library/Managed Preferences/com.apple.MobileAsset.plist; ordinary system
defaults are denied by its sandbox. This redirects requests for the selected
asset types to a loopback URL. Catalog checks and local retries can continue
even while payload downloads are blocked.
The XPC connection. Pared loads UnifiedAssetFramework with dlopen and
connects to com.apple.siri.uaf.subscription.service using NSXPCConnection.
It calls operationWithConfig:completion: through Apple's
UAFXPCProxyServiceInterface.defaultInterface, which supplies the wire
signature and allowed object classes. The Objective-C bridge declares the
oneway void operation and typed configuration getters; Swift does not invoke
these selectors through perform. Runtime shape checks reject unknown asset
metadata instead of treating it as an empty result.
Deleting models. Pared groups features by asset set and selects a set only
when every known consumer is disabled in your policy. It reads each set's
autoAssetType from UAFConfigurationManager and checks it against the
catalog, then removes matching org.pared download subscriptions and sends a
reset request like this:
{
"Operation": "ResetAssetSets",
"AssetSets": ["com.apple.modelcatalog"]
}
AssetSets is always explicit: omitting it means every asset set to the
server. Apple's daemon performs the reset with the entitlements needed to remove
protected assets, so SIP stays on. A successful reply confirms that the reset
request returned without an error; check deletion logs and free space to assess
the result.
Downloading again. Enable the feature and install the replacement profile before requesting a download. The replacement omits blocks for enabled or unmanaged consumers. Resetting a CLI preference alone does not replace an installed profile. Removing the profile removes its managed download blocks.
Pared resolves usage aliases and checks explicit usage names against Apple's
configuration, then builds UAFAssetSetSubscription objects with
initWithName:assetSets:usageAliases:. It sends Unsubscribe followed by
Subscribe to refresh the selected subscriptions, since reset removes assets
but can leave their subscription records behind. Apple's service then handles
the download in the background.
Other approaches to removing Apple Intelligence models:
Remove unwanted Apple Intelligence models without disabling SIP. CLI, nix-darwin, and Home Manager support.
Swift
39
4 commits
updated Oct 1, 2026
Remove Apple Intelligence models without disabling SIP
Install · Usage · Compare · Nix documentation
Pared turns off selected Apple Intelligence features and asks Apple's asset service to remove their downloaded models. System Integrity Protection (SIP) stays enabled. Use the CLI for local settings, or manage a policy with nix-darwin or Home Manager.
Removing models and preventing their return are separate steps: cleanup removes existing models, and an installed configuration profile blocks future downloads.
Requires macOS 27 and Xcode 27 or newer.
brew tap 4evy/pared https://github.com/4evy/pared.git
brew install 4evy/pared/pared
On Apple silicon, with Nix flakes enabled:
nix run github:4evy/pared -- status
nix profile install github:4evy/pared
To build a local checkout, run nix build. The executable is
./result/bin/pared.
Start by checking the feature names and current policy:
pared features
pared status
A new policy defaults to disabled for every feature. The CLI stores it in
~/Library/Application Support/pared/policy.json. status reports both the
policy you requested and the preferences it can read; the policy alone does not
prove that macOS enforces those settings.
Starting from a new policy, this example enables Writing Tools and leaves all other features disabled:
pared enable writingTools
pared profile open
Finish installing the generated profile in System Settings. Until you replace an
existing profile, its settings remain enforced. enable, disable, and reset
save the new policy even when the installed profile overrides it. Enabling a
feature permits its use; it does not download its models.
Once the profile is installed, preview and run cleanup:
pared models cleanup --dry-run
pared models cleanup
Cleanup selects a model only when all of its consumers listed in Pared's catalog
are disabled. A shared model stays available if any known consumer is enabled or
unmanaged. enable and disable do not delete models themselves.
To stop managing a feature, remove its local preferences and replace the profile:
pared reset inlinePredictions
pared profile open
reset removes preference overrides; it does not restore values saved before
Pared ran. Apple supplies the defaults where no other policy applies.
Enable the feature and install the replacement profile before requesting its models. For a feature with a download mapping in the catalog, such as Genmoji:
pared enable genmoji
pared profile open
# Finish installing the profile in System Settings before continuing
pared models download genmoji
pared models status genmoji
A successful download request means Apple's service accepted the subscription.
The download continues in the background. models status reports a snapshot and
local asset directories, not live progress or reclaimed disk space. For features
without a download mapping, enable them in their Apple app.
Run pared --help for all commands. Use --policy FILE to read an existing
policy at another path; this matters when inspecting settings generated by Nix.
Add inputs.pared.url = "github:4evy/pared"; to your flake. Choose one of the
modules below.
Pass inputs through specialArgs, then add this to your Darwin config:
{ inputs, ... }:
{
imports = [ inputs.pared.darwinModules.default ];
programs.pared = {
enable = true;
defaultState = false;
features = {
writingTools = true;
notificationSummaries = false;
spatialPhotos = null;
};
};
}
Pass inputs through extraSpecialArgs, then add this to your home config:
{ inputs, ... }:
{
imports = [ inputs.pared.homeManagerModules.default ];
programs.pared = {
enable = true;
defaultState = false;
features = {
writingTools = true;
notificationSummaries = false;
spatialPhotos = null;
};
};
}
In this example, Writing Tools is enabled, Spatial Photos is unmanaged, and all
other features are disabled by defaultState = false. true enables a feature,
false disables it, and null omits it from generated settings. Changing a Nix
option to null does not remove preferences written earlier.
Rebuild your configuration. For nix-darwin's user preferences, configure
system.primaryUser. Then install disable-apple-intelligence.mobileconfig
from /etc/pared (nix-darwin) or $XDG_CONFIG_HOME/pared (Home Manager,
normally ~/.config/pared) through System Settings.
The same directory contains policy.json and declarations.json. CLI commands
use their own policy path unless you pass --policy. For example, preview
cleanup using the nix-darwin policy with:
pared models cleanup --policy /etc/pared/policy.json --dry-run
Change Nix-managed settings in your Nix configuration and rebuild; CLI edits to
a policy in /nix/store are rejected. Deploy declarations.json through MDM
(mobile device management) if you use it; it is not an installable profile.
Both modules remove models for disabled features during activation by default.
They record the last successfully cleaned policy and skip cleanup when it is
unchanged. A policy change triggers cleanup again; failures retry on the next
activation. Set programs.pared.cleanupOnActivation = false; to opt out. Home
Manager respects activation dry runs and keeps its cleanup record under
$XDG_STATE_HOME/pared; nix-darwin uses /var/db/pared.
Cleanup does not install the profile. Install it to block future model downloads.
Pared uses a shared feature catalog to connect each feature to its preferences, management restrictions, and model asset sets. An asset set is a group of models managed by Apple's asset service. The CLI and Nix modules use this catalog to generate the same policy settings.
Preventing downloads. For each asset type whose known consumers are all
disabled, the profile sets DownloadServerBaseURLOverride-<assetType> in
com.apple.MobileAsset to https://127.0.0.1:9/pared-blocked/. mobileassetd
reads these settings from
/Library/Managed Preferences/com.apple.MobileAsset.plist; ordinary system
defaults are denied by its sandbox. This redirects requests for the selected
asset types to a loopback URL. Catalog checks and local retries can continue
even while payload downloads are blocked.
The XPC connection. Pared loads UnifiedAssetFramework with dlopen and
connects to com.apple.siri.uaf.subscription.service using NSXPCConnection.
It calls operationWithConfig:completion: through Apple's
UAFXPCProxyServiceInterface.defaultInterface, which supplies the wire
signature and allowed object classes. The Objective-C bridge declares the
oneway void operation and typed configuration getters; Swift does not invoke
these selectors through perform. Runtime shape checks reject unknown asset
metadata instead of treating it as an empty result.
Deleting models. Pared groups features by asset set and selects a set only
when every known consumer is disabled in your policy. It reads each set's
autoAssetType from UAFConfigurationManager and checks it against the
catalog, then removes matching org.pared download subscriptions and sends a
reset request like this:
{
"Operation": "ResetAssetSets",
"AssetSets": ["com.apple.modelcatalog"]
}
AssetSets is always explicit: omitting it means every asset set to the
server. Apple's daemon performs the reset with the entitlements needed to remove
protected assets, so SIP stays on. A successful reply confirms that the reset
request returned without an error; check deletion logs and free space to assess
the result.
Downloading again. Enable the feature and install the replacement profile before requesting a download. The replacement omits blocks for enabled or unmanaged consumers. Resetting a CLI preference alone does not replace an installed profile. Removing the profile removes its managed download blocks.
Pared resolves usage aliases and checks explicit usage names against Apple's
configuration, then builds UAFAssetSetSubscription objects with
initWithName:assetSets:usageAliases:. It sends Unsubscribe followed by
Subscribe to refresh the selected subscriptions, since reset removes assets
but can leave their subscription records behind. Apple's service then handles
the download in the background.
Other approaches to removing Apple Intelligence models: