To choose how configuration reaches your devices, see Choose a configuration delivery model.
How configuration differs by deployment
Each kind of deployment stores and delivers the configuration differently.Configuration on the device
On the device, Claude Desktop reads its configuration from OS-native managed preferences (a.mobileconfig profile on macOS, registry policy on Windows, or a root-owned JSON file on Linux) or from the local configuration file that the in-app configuration window writes. Either one can instead carry the bootstrap keys that point at a bootstrap server you host.
Where Claude Desktop reads configuration on a device
Claude Desktop reads a managed location and a local location on each platform.
The local location is a directory:
_meta.json records which saved configuration is applied, and each configuration is a <id>.json file alongside it. The in-app configuration window writes here.
Which configuration source applies on a device
- A managed source and a local file: when a managed source sets any key other than the app-behavior keys, the managed configuration takes effect and locally written values are ignored.
- A managed source that sets only app-behavior keys: those keys (the update keys
disableAutoUpdates,autoUpdaterEnforcementHours,installedUpdateEnforcementEnabled,installedUpdateEnforcementHours,updateViaUpdatesHost, andreleaseChannel, the lifecycle keysrelaunchEnforcementHoursandconfigRecheckIntervalMinutes, and the network proxy keysegressProxyUrlandegressProxyPacUrl) are enforced from the managed source, but the rest of the configuration stays local and user-editable. Any of those keys that the profile leaves out runs its default. - A bootstrap response: when a response is available, it is the effective configuration, apart from the app-behavior keys where a profile sets only those. A key that the server can set and your response omits is treated as unset, not inherited from the profile. The app ignores the keys labeled MDM only in the configuration reference in a response, so set them in the profile or the local file.
- Two macOS managed paths: both are read, and where a key appears in both, the app uses the per-user value.
- Two Windows policy hives: the hives aren’t merged. When machine policy is present under
HKLM\SOFTWARE\Policies\Claude, the app ignoresHKCU\SOFTWARE\Policies\Claudeentirely.
Claude Desktop on 3P reads the same managed-configuration sources as standard Claude Desktop but ignores keys scoped to standard deployments, except
forceLoginOrgUUID, as described under Keep a device on its managed profile.When a configuration change on a device takes effect
Configuration takes effect at launch, so fully quit and reopen the app after any change. A running app also notices a changed managed configuration at its next re-check (configRecheckIntervalMinutes, 10 minutes by default) and, for most settings, prompts the user to restart and requires the restart after relaunchEnforcementHours (24 hours by default). The re-check of a managed configuration requires Claude Desktop 1.46388.1 or later. On those releases a changed bootstrap response follows the same re-check and restart window. Earlier releases re-check a response every 30 minutes. See How it works and Availability.
Value types in a profile or registry policy
Write every value as a string in the OS preference store, even booleans and arrays. This rule applies to plist and registry sources. The Linux file and a bootstrap response take JSON values. Each key’s entry in the configuration reference gives the key’s type and the values or fields it accepts.Array- and object-typed keys such as
inferenceModels, inferenceGatewayOidc, managedMcpServers, coworkEgressAllowedHosts, and otlpHeaders are single keys whose value is a whole JSON document. The portable encoding is a JSON string, which works on every platform. In a .mobileconfig that is a single <string> element containing [...] or {...}, and on Windows a REG_SZ value. A macOS profile may instead carry the value as a native <array> or <dict>, which the app reads as the equivalent JSON. Separate keys with dotted names, such as inferenceGatewayOidc.clientId, are never read.REG_SZ, directly under the policy key rather than nested in a subkey (the app never reads subkeys). REG_DWORD is also accepted for boolean and integer keys and is read as its decimal value. Avoid REG_EXPAND_SZ: the app counts it toward machine policy being present but can’t read its contents. The app can’t see REG_QWORD, REG_MULTI_SZ, or REG_BINARY values at all.
The Linux configuration file
The managed source on Linux is a single JSON file,/etc/claude-desktop/managed-settings.json, with keys at the top level exactly as named in the reference, with no wrapper object and no nesting:
managed-settings.jsonmust be a regular file (not a symlink), owned by root, and not group- or world-writable./etc/claude-desktopitself must be a directory (not a symlink), owned by root, and not group- or world-writable.
main.log in the app’s logs directory, ~/.config/Claude/logs/ (or ~/.config/Claude-3p/logs/ once the app is running in 3P mode). Search the log for managed-settings.json. The same log names any key that fails schema validation.
There is no per-user managed location on Linux. Per-user configuration goes through the in-app configuration window, which writes to the local configLibrary directory listed under Where Claude Desktop reads configuration on a device.
Configuration from the Enterprise Admin Console
From the Enterprise Admin Console, administrators edit the configuration in a browser, and no MDM profile or bootstrap server is needed.- Where you edit it: each field in the Desktop 3P section of Organization settings on claude.ai sets one of the documented configuration keys. A permission policy sets the settings that differ for one group of users.
- How the app gets it: the app contacts
api.anthropic.comat every launch to check the user’s sign-in and download the configuration. Until that download succeeds, the app can’t connect to your inference provider. Configuration kept on devices covers what each device keeps of the last download and applies meanwhile. - What the console can’t set: among others, API keys, tokens, and secrets (apart from the client secret of a Google Desktop-app OAuth client), bootstrap keys and settings that only make sense on the device, keys that Anthropic fills in from your organization’s settings, such as its name, and the Claude API as the inference provider. See Limitations.
- How you write values: enter each value in its field, import a JSON configuration, or replace the whole configuration as one nested JSON document with the Admin API. A value set in the console needs no approval from the user.
- When a change takes effect: at launch. A running app also re-checks every 10 minutes by default and, for most settings, asks the user to relaunch. The 10-minute default requires Claude Desktop 1.46388.1 or later. Earlier releases re-check about every 30 minutes. See Configuration updates.
What an MDM profile does alongside the Enterprise Admin Console
disableDeploymentModeChooserset totrue: the device stays on the profile’s configuration and ignores the console. A device that already moved returns to the profile at its next launch.- Only app-behavior keys: the profile’s values apply instead of the console’s for all of those keys. Any of those keys that the profile leaves out runs its default.
- Any other key: the device uses the profile’s configuration until its user moves the device to the console’s configuration by signing in, which requires Claude Desktop 2.37337.0 or later. With
forceLoginOrgUUIDset to your organization’s ID, the user can move the device only to your organization’s configuration. After the move, the app still takes a few keys from the profile, for example the network proxy keys. Other settings come from the console, and the profile’s values don’t apply even where the console leaves a setting unset.
Configuration on a self-hosted install
On a self-hosted install, sessions run on a session host that your organization operates and not on the person’s device. Each key’s label in the reference says which place in the following table counts for it.
An MDM profile that sets only app-behavior keys decides all of those keys itself, whatever their label. Outside that case, nothing acts on a key labeled Not supported, wherever you set it.
The label is what the current Claude Desktop release declares. On that release, a session host acts on a Server side key only from the host version that reads it. Until then, unless an MDM profile sets only app-behavior keys, nothing applies the key, and Claude Desktop doesn’t fall back to a value set on the device. An earlier Claude Desktop release can still apply a value set on the device, so keep a restriction in the MDM profile as well until every device runs the current release.
Each key’s entry in the reference gives its label and a one-line reason. The published schemas carry the self-hosted word (
server, reported, client, or none) and its reason in x-selfHosted for each key they list. The legend for the self-hosted labels defines the labels and maps each word to its label.
What an MDM profile does on a self-hosted install
The MDM profile usually names the session host, and carries the keys labeled MDM profile. Each of those keys is about the person’s device, as its reason in the reference says. For example:- Sign-in to the session host: on a self-hosted install
inferenceCredentialKindnames the device’s sign-in to the host, never the host’s model credential, andinferenceIdpOidcconfigures the sign-in that the device reuses for the host. - The device’s network proxy:
egressProxyUrlandegressProxyPacUrl. - Telemetry and updates:
disableEssentialTelemetryanddisableAutoUpdates.
When a change takes effect on a self-hosted install
- A key in the session host’s document: the host refreshes its own copy at least every
configRecheckIntervalMinutes(10 minutes by default) and tells Claude Desktop how often to ask it again. - A key on the device: as on any device. The re-check interval and the restart window are themselves Server side keys, so the session host’s document sets them, unless an MDM profile sets only app-behavior keys. See When a configuration change on a device takes effect.
trustBootstrapDelivery covers what a bootstrap server delivers, not what a session host delivers.