Follow Discord
Sweep 22 Oct 2026 · 21:04Z Build v2.1.309 528 read Stable v2.1.308 Latest v2.1.309 Next v2.1.309 Feeds RSS JSON llms.txt llms-full.txt Unofficial
One capture · claude-docs

One read of Claude Documentationclaude-docs-20261022T203707Z

21 pages moved out of 280 read.

Pages moved 21 significant first
Pages read 280 in this capture
Captured 20:37 UTC
Corpus hash 21afef65f0a3 corpus-hash

What this read moved

1-21 of 21

third-party/claude-desktop/bedrock Changed · +127 / -15 lines

#### `inferenceBedrockRegion` #### `inferenceBedrockBaseUrl` #### `inferenceBedrockServiceTier` #### `inferenceBedrockBearerToken` #### `inferenceBedrockSsoStartUrl` #### `inferenceBedrockSsoRegion` #### `inferenceBedrockSsoAccountId` #### `inferenceBedrockSsoRoleName` #### `inferenceBedrockProfile` #### `inferenceBedrockAwsDir` #### `inferenceBedrockAwsCliPath`

from line 186
186186 
187187The full set of `inferenceBedrock*` keys is below. Set `inferenceProvider` to `bedrock`, supply a region, and provide exactly one credential source.
188188 
189| Setting | Type | Availability | Default | Description |
190| - | - | - | - | - |
191| AWS region `inferenceBedrockRegion` | `string` | MDM + Bootstrap Added in 1.2581.0 | — | AWS region for the Bedrock runtime endpoint. |
192| Bedrock base URL `inferenceBedrockBaseUrl` | `string` | MDM + Bootstrap Added in 1.2581.0 | — | For VPC endpoints or gateway proxies. Host origin only. |
193| Bedrock service tier `inferenceBedrockServiceTier` | `enum` | MDM + Bootstrap Added in 1.5186.0 | — | Sent as the X-Amzn-Bedrock-Service-Tier header. Leave unset for on-demand. One of: `flex`, `priority`. |
194| AWS bearer token `inferenceBedrockBearerToken` | `string` | MDM + Bootstrap Added in 1.2581.0 | — | Static bearer token for inference. For providers that support profile or helper-script credentials, prefer those. |
195| AWS SSO start URL `inferenceBedrockSsoStartUrl` | `string` | MDM + Bootstrap Added in 1.6259.0 | — | Enables in-app AWS sign-in (no AWS CLI needed). Set with the three SSO fields below. |
196| AWS SSO region `inferenceBedrockSsoRegion` | `string` | MDM + Bootstrap Added in 1.6259.0 | — | IAM Identity Center home region. |
197| AWS SSO account ID `inferenceBedrockSsoAccountId` | `string` | MDM + Bootstrap Added in 1.6259.0 | — | 12-digit AWS account ID assigned to users in IAM Identity Center. |
198| AWS SSO role name `inferenceBedrockSsoRoleName` | `string` | MDM + Bootstrap Added in 1.6259.0 | — | IAM Identity Center permission-set name granting bedrock:InvokeModel\* on the account above. |
199| AWS profile name `inferenceBedrockProfile` | `string` | MDM + Bootstrap Added in 1.2581.0 | — | AWS named profile to use for Bedrock inference credentials. |
200| AWS config directory `inferenceBedrockAwsDir` | `string` | MDM + Bootstrap Added in 1.2581.0 | — | Folder with AWS config/credentials. Defaults to \~/.aws when no bearer token is set. |
201| AWS CLI path `inferenceBedrockAwsCliPath` | `string` | MDM + Bootstrap Added in 1.13576.0 | — | Absolute path to the aws executable. Leave unset to find it on PATH. |
189[Entry labels](/docs/third-party/claude-desktop/configuration.md#entry-labels) says what each label means.
202190 
203> **inferenceBedrockServiceTier details**
191#### `inferenceBedrockRegion`
192 
193stringSince 1.2581.0
194 
195**AWS region.** AWS region for the Bedrock runtime endpoint.
196 
197***
198 
199#### `inferenceBedrockBaseUrl`
200 
201string
202 
203Consent required (A value that a bootstrap server or a self-hosted session host delivers applies only after the user approves it, unless machine-scoped device management set that server's address. For a bootstrap server, the trustBootstrapDelivery key overrides that default. A value set in an MDM profile, the local configuration file or the Enterprise Admin Console needs no approval.)
204 
205Origin-pinned (A URL that a bootstrap server delivers must share the origin of bootstrapUrl, or Claude Desktop drops it. The limit is lifted when bootstrapOidc is set, and it does not apply to a value set in an MDM profile, the local configuration file or the Enterprise Admin Console.)
206 
207Since 1.2581.0
208 
209**Bedrock base URL.** For VPC endpoints or gateway proxies. Host origin only.
210 
211***
212 
213#### `inferenceBedrockServiceTier`
214 
215enumSince 1.5186.0
216 
217**Bedrock service tier.** Sent as the X-Amzn-Bedrock-Service-Tier header. Leave unset for on-demand.
218 
219One of: `flex`, `priority`
220 
221> **More detail**
204222>
205223> Tier availability varies by model and region. Reserved capacity uses a provisioned-throughput ARN as the model ID instead of this setting. Older bundled Claude Code CLI versions ignore this key.
224 
225***
226 
227#### `inferenceBedrockBearerToken`
228 
229stringSince 1.2581.0
230 
231**AWS bearer token.** Static bearer token for inference. For providers that support profile or helper-script credentials, prefer those.
232 
233***
234 
235#### `inferenceBedrockSsoStartUrl`
236 
237string
238 
239Consent required (A value that a bootstrap server or a self-hosted session host delivers applies only after the user approves it, unless machine-scoped device management set that server's address. For a bootstrap server, the trustBootstrapDelivery key overrides that default. A value set in an MDM profile, the local configuration file or the Enterprise Admin Console needs no approval.)
240 
241Since 1.6259.0
242 
243**AWS SSO start URL.** Enables in-app AWS sign-in (no AWS CLI needed). Set with the three SSO fields below.
244 
245***
246 
247#### `inferenceBedrockSsoRegion`
248 
249string
250 
251Consent required (A value that a bootstrap server or a self-hosted session host delivers applies only after the user approves it, unless machine-scoped device management set that server's address. For a bootstrap server, the trustBootstrapDelivery key overrides that default. A value set in an MDM profile, the local configuration file or the Enterprise Admin Console needs no approval.)
252 
253Since 1.6259.0
254 
255**AWS SSO region.** IAM Identity Center home region.
256 
257***
258 
259#### `inferenceBedrockSsoAccountId`
260 
261string
262 
263Consent required (A value that a bootstrap server or a self-hosted session host delivers applies only after the user approves it, unless machine-scoped device management set that server's address. For a bootstrap server, the trustBootstrapDelivery key overrides that default. A value set in an MDM profile, the local configuration file or the Enterprise Admin Console needs no approval.)
264 
265Since 1.6259.0
266 
267**AWS SSO account ID.** 12-digit AWS account ID assigned to users in IAM Identity Center.
268 
269***
270 
271#### `inferenceBedrockSsoRoleName`
272 
273string
274 
275Consent required (A value that a bootstrap server or a self-hosted session host delivers applies only after the user approves it, unless machine-scoped device management set that server's address. For a bootstrap server, the trustBootstrapDelivery key overrides that default. A value set in an MDM profile, the local configuration file or the Enterprise Admin Console needs no approval.)
276 
277Since 1.6259.0
278 
279**AWS SSO role name.** IAM Identity Center permission-set name granting bedrock:InvokeModel\* on the account above.
280 
281***
282 
283#### `inferenceBedrockProfile`
284 
285string
286 
287Consent required (A value that a bootstrap server or a self-hosted session host delivers applies only after the user approves it, unless machine-scoped device management set that server's address. For a bootstrap server, the trustBootstrapDelivery key overrides that default. A value set in an MDM profile, the local configuration file or the Enterprise Admin Console needs no approval.)
288 
289Since 1.2581.0
290 
291**AWS profile name.** AWS named profile to use for Bedrock inference credentials.
292 
293***
294 
295#### `inferenceBedrockAwsDir`
296 
297string
298 
299Consent required (A value that a bootstrap server or a self-hosted session host delivers applies only after the user approves it, unless machine-scoped device management set that server's address. For a bootstrap server, the trustBootstrapDelivery key overrides that default. A value set in an MDM profile, the local configuration file or the Enterprise Admin Console needs no approval.)
300 
301Since 1.2581.0
302 
303**AWS config directory.** Folder with AWS config/credentials. Defaults to \~/.aws when no bearer token is set.
304 
305***
306 
307#### `inferenceBedrockAwsCliPath`
308 
309string
310 
311Consent required (A value that a bootstrap server or a self-hosted session host delivers applies only after the user approves it, unless machine-scoped device management set that server's address. For a bootstrap server, the trustBootstrapDelivery key overrides that default. A value set in an MDM profile, the local configuration file or the Enterprise Admin Console needs no approval.)
312 
313Since 1.13576.0
314 
315**AWS CLI path.** Absolute path to the aws executable. Leave unset to find it on PATH.
316 
317***
206318 
207319Set `inferenceModels` to a list of Amazon Bedrock inference-profile IDs, for example `us.anthropic.claude-sonnet-5`. When using a bearer token or credential helper, Claude Desktop auto-discovers available Claude models from your account if this is unset; otherwise the list is required. Application-inference-profile ARNs and provisioned-throughput ARNs are also accepted; pair them with a [`labelOverride`](/docs/third-party/claude-desktop/configuration#inferencemodels) so the picker shows a readable name instead of the raw ARN. See the [Configuration reference](/docs/third-party/claude-desktop/configuration.md#inferencemodels).
208320 

third-party/claude-desktop/bootstrap Changed · +119 / -25 lines

### `bootstrapEnabled` ### `bootstrapUrl` ### `bootstrapOidc` ### `bootstrapHeaders` ### `bootstrapHeadersHelper` ### `trustBootstrapDelivery`

from line 326
326326A small set of keys are **structurally excluded** and ignored if returned:
327327 
328328* `bootstrapUrl`, `bootstrapOidc`, `bootstrapHeaders`, `bootstrapHeadersHelper`, `bootstrapEnabled`, and `trustBootstrapDelivery`: the trust anchor cannot redirect itself, authenticate itself, or grant trust in itself.
329* `egressProxyUrl` and `egressProxyPacUrl`: the app may need the [network proxy](/docs/third-party/claude-desktop/network-proxy.md#pin-a-proxy-from-managed-configuration) to reach your endpoint in the first place, so these keys are read from device management or the local configuration file only. These two and the six keys above are the keys whose Availability column reads **MDM only** in the [configuration reference](/docs/third-party/claude-desktop/configuration.md).
329* `egressProxyUrl` and `egressProxyPacUrl`: the app may need the [network proxy](/docs/third-party/claude-desktop/network-proxy.md#pin-a-proxy-from-managed-configuration) to reach your endpoint in the first place, so these keys are read from device management or the local configuration file only. These two and the six keys above are the keys labeled **MDM only** in the [configuration reference](/docs/third-party/claude-desktop/configuration.md).
330330* Loopback hosts (`127.0.0.1`, `localhost`, `[::1]`) in any URL-valued key, regardless of scheme.
331331 
332332`managedMcpServers` entries are not restricted by transport in version 1.19367.0 and later: remote (`http`/`sse`) servers, local `stdio` commands, and the built-in `microsoft365` and `websearch` connectors can all be delivered in the bootstrap response. Earlier versions accept only remote entries and drop the rest. Because a `stdio` entry names a command that runs on the device, a bootstrap response can start local processes — part of why the warning at the top of this page says to treat this endpoint as fully trusted. Entries whose server URL or OAuth authorization-server URL is loopback or non-HTTPS are still dropped, and the desktop log (see [Troubleshooting](#troubleshooting)) records which keys were dropped and why.
from line 375
375375 
376376## MDM configuration keys
377377 
378| Setting | Type | Availability | Default | Description |
379| - | - | - | - | - |
380| Use bootstrap config `bootstrapEnabled` | `boolean` | MDM only Added in 1.10628.0 | `true` | Fetch and apply the URL above at launch. Turn off to keep the URL saved but skip the fetch. Defaults to `true`. |
381| Bootstrap config URL `bootstrapUrl` | `string` | MDM only Added in 1.10628.0 | — | HTTPS endpoint that returns a per-user JSON config overlay. Values from the response override local settings and become read-only. |
382| Bootstrap OIDC parameters `bootstrapOidc` | `object` | MDM only Added in 1.10628.0 | — | When set, the bootstrap request sends a Bearer token from a browser sign-in (authorization-code-with-PKCE). |
383| Bootstrap request headers `bootstrapHeaders` | `object` | MDM only Added in 1.32885.1 | — | HTTP headers sent on every bootstrap config fetch. Use this instead of embedding user:pass@ in the URL. |
384| Bootstrap headers helper script `bootstrapHeadersHelper` | `string` | MDM only Added in 1.32885.1 | — | Absolute path to an executable that prints a JSON object of bootstrap request headers. Merged over the static headers; the helper wins. |
385| Trust bootstrap-delivered settings `trustBootstrapDelivery` | `boolean` | MDM only Added in 1.26832.0 | `false` | Skip the per-user consent prompt for sign-in targets, inference endpoints, helper scripts, and connectors the bootstrap server delivers. Defaults to `false`. |
378[Entry labels](/docs/third-party/claude-desktop/configuration.md#entry-labels) says what each label means.
386379 
387> **bootstrapOidc details**
380### `bootstrapEnabled`
381 
382booleanDefault: true
383 
384MDM only (You can set the key only in an MDM profile or the local configuration file. Claude Desktop ignores it in a bootstrap server's response.)
385 
386Since 1.10628.0
387 
388**Use bootstrap config.** Fetch and apply the URL above at launch. Turn off to keep the URL saved but skip the fetch.
389 
390***
391 
392### `bootstrapUrl`
393 
394string
395 
396MDM only (You can set the key only in an MDM profile or the local configuration file. Claude Desktop ignores it in a bootstrap server's response.)
397 
398Since 1.10628.0
399 
400**Bootstrap config URL.** HTTPS endpoint that returns a per-user JSON config overlay. Values from the response override local settings and become read-only.
401 
402***
403 
404### `bootstrapOidc`
405 
406object
407 
408MDM only (You can set the key only in an MDM profile or the local configuration file. Claude Desktop ignores it in a bootstrap server's response.)
409 
410Since 1.10628.0
411 
412**Bootstrap OIDC parameters.** When set, the bootstrap request sends a Bearer token from a browser sign-in (authorization-code-with-PKCE).
413 
414> **More detail**
388415>
389416> Set this to use a separate identity provider (Microsoft Entra ID, Okta, Ping, or any compliant OIDC provider) for the bootstrap sign-in. The app runs an authorization-code-with-PKCE flow in the system browser. Omit to use device-code mode against the bootstrap server's own origin.
390417>
391418> This is an **object-typed key** — in an MDM profile it is a single JSON-string value, not separate keys with dotted names like `bootstrapOidc.clientId`. Writing the sub-fields as separate registry values causes the app to silently fall through to device-code mode.
419 
420> **Child attributes (8)**
392421>
393> | Field | Type | Default | Description |
394> | - | - | - | - |
395> | `clientId` | `string` | — | OAuth client ID of the desktop app registration at your identity provider (public client, PKCE). |
396> | `issuer` | `string` | — | HTTPS issuer with OIDC discovery. Set this, or set the authorization and token URLs instead. |
397> | `authorizationUrl` | `string` | — | HTTPS authorization endpoint. Used with the token URL when no issuer is set. |
398> | `tokenUrl` | `string` | — | HTTPS token endpoint. Used with the authorization URL when no issuer is set. |
399> | `scopes` | `string` | — | Space-separated; the token’s audience must match what your bootstrap server validates. |
400> | `redirectPort` | `integer` | — | Fixed loopback port for the sign-in redirect. Leave unset to use a free port each time. |
401> | `redirectHost` | `enum` | — | Use localhost only if your IdP’s registered redirect URI specifies it. One of: `127.0.0.1`, `localhost`. |
402> | `additionalRedirectReferrerHosts` | `string` | — | Space-separated hostnames also accepted as the referrer of the sign-in callback. Only needed when the IdP completes sign-in from a different host. |
422> **clientId** `string` *required*
423>
424> OAuth client ID of the desktop app registration at your identity provider (public client, PKCE).
425>
426> **issuer** `string`
427>
428> HTTPS issuer with OIDC discovery. Set this, or set the authorization and token URLs instead.
429>
430> **authorizationUrl** `string`
431>
432> HTTPS authorization endpoint. Used with the token URL when no issuer is set.
433>
434> **tokenUrl** `string`
435>
436> HTTPS token endpoint. Used with the authorization URL when no issuer is set.
437>
438> **scopes** `string`
439>
440> Space-separated; the token’s audience must match what your bootstrap server validates.
441>
442> **redirectPort** `integer`
443>
444> Fixed loopback port for the sign-in redirect. Leave unset to use a free port each time.
445>
446> **redirectHost** `enum`
447>
448> Use localhost only if your IdP’s registered redirect URI specifies it.
449>
450> One of: `127.0.0.1`, `localhost`
451>
452> **additionalRedirectReferrerHosts** `string`
453>
454> Space-separated hostnames also accepted as the referrer of the sign-in callback. Only needed when the IdP completes sign-in from a different host.
455>
456> > **More detail**
457> >
458> > Only needed when the IdP completes sign-in from a host other than the authorization URL’s. When a callback is rejected for a referrer mismatch, the rejected host is named in the app log — add that hostname here.
403459 
404> **bootstrapHeaders details**
460***
461 
462### `bootstrapHeaders`
463 
464object: name → value
465 
466MDM only (You can set the key only in an MDM profile or the local configuration file. Claude Desktop ignores it in a bootstrap server's response.)
467 
468Since 1.32885.1
469 
470**Bootstrap request headers.** HTTP headers sent on every bootstrap config fetch. Use this instead of embedding user:pass@ in the URL.
471 
472> **More detail**
405473>
406474> Static headers sent on every request to the bootstrap config URL — for a service-account credential (`Authorization: Basic …`, an API key header) or a routing/tenant header. When either this or the headers helper script is set and no separate `bootstrapOidc` provider is configured, the app treats the headers as sufficient auth and does not require a per-user sign-in for the bootstrap fetch. These headers (and the helper script's below) also accompany requests to a plugin marketplace this server hosts on its own origin (`allowedPluginMarketplaces` with `credentialKind: "inferenceCredential"`). Header values are masked in diagnostics and telemetry. For a rotating token, use the headers helper script instead.
407475 
408> **bootstrapHeadersHelper details**
476***
477 
478### `bootstrapHeadersHelper`
479 
480string
481 
482MDM only (You can set the key only in an MDM profile or the local configuration file. Claude Desktop ignores it in a bootstrap server's response.)
483 
484Since 1.32885.1
485 
486**Bootstrap headers helper script.** Absolute path to an executable that prints a JSON object of bootstrap request headers. Merged over the static headers; the helper wins.
487 
488> **More detail**
409489>
410490> Absolute path to an executable that prints a single JSON object of HTTP headers on stdout, e.g. `{"Authorization": "Bearer …"}`. The app runs it (no arguments; output cached for a few minutes) before each bootstrap config fetch and merges the result over **Bootstrap request headers** (the helper wins on conflict). Use this instead of embedding `user:pass@` in the bootstrap URL, or when the bootstrap server needs a rotating token from a secrets manager. When either this or the static headers are set and no separate `bootstrapOidc` provider is configured, the app treats them as sufficient auth and does not require a per-user sign-in for the bootstrap fetch. If a per-user sign-in also runs (`bootstrapOidc` or the server’s own device-code flow), that Bearer token wins on `Authorization`.
491 
492***
493 
494### `trustBootstrapDelivery`
495 
496booleanDefault: false
497 
498MDM only (You can set the key only in an MDM profile or the local configuration file. Claude Desktop ignores it in a bootstrap server's response.)
499 
500Since 1.26832.0
501 
502**Trust bootstrap-delivered settings.** Skip the per-user consent prompt for sign-in targets, inference endpoints, helper scripts, and connectors the bootstrap server delivers.
503 
504***
411505 
412506No `inferenceProvider` is needed in the MDM profile when using bootstrap; the response supplies it.
413507 

third-party/claude-desktop/claude-api Changed · +9 / -3 lines

#### `inferenceAnthropicApiKey`

from line 20
2020 
2121### Configuration keys
2222 
23| Setting | Type | Availability | Default | Description |
24| - | - | - | - | - |
25| Claude API key `inferenceAnthropicApiKey` | `string` | MDM + Bootstrap Added in 1.8089.0 | — | Leave blank to sign in with your browser, or to supply the key via a credential helper. |
23[Entry labels](/docs/third-party/claude-desktop/configuration.md#entry-labels) says what each label means.
24 
25#### `inferenceAnthropicApiKey`
26 
27stringSince 1.8089.0
28 
29**Claude API key.** Leave blank to sign in with your browser, or to supply the key via a credential helper.
30 
31***
2632 

third-party/claude-desktop/configuration Changed · +3296 / -789 lines

### `inferenceProvider` ### `inferenceCredentialKind` ### `inferenceSessionLifetimeSec` ### `userContentRendererUrl` ### `inferenceCustomHeaders` ### `inferenceCredentialHelper` ### `inferenceCredentialHelperWindows` ### `inferenceCredentialHelperArgs` ### `inferenceCredentialHelperTtlSec` ### `inferenceCredentialHelperTimeoutSec` ### `inferenceCredentialHelperSilentRefreshEnabled` ### `egressProxyUrl` ### `egressProxyPacUrl` ### `coworkVmIpv6Enabled` #### `inferenceGatewayBaseUrl` #### `inferenceGatewayApiKey` #### `inferenceGatewayAuthScheme` #### `inferenceGatewayOidcAuthFlow` #### `inferenceGatewayOidc` #### `inferenceIdpAuthFlow` #### `inferenceIdpOidc` #### `inferenceStreamIdleTimeoutSec` #### `inferenceAnthropicApiKey` #### `inferenceBedrockRegion` #### `inferenceBedrockBaseUrl` #### `inferenceBedrockServiceTier` #### `inferenceBedrockBearerToken` #### `inferenceBedrockSsoStartUrl` #### `inferenceBedrockSsoRegion` #### `inferenceBedrockSsoAccountId` #### `inferenceBedrockSsoRoleName` #### `inferenceBedrockProfile` #### `inferenceBedrockAwsDir` #### `inferenceBedrockAwsCliPath` #### `inferenceVertexProjectId` #### `inferenceVertexRegion` #### `inferenceVertexBaseUrl` #### `inferenceVertexOAuthClientId` #### `inferenceVertexOAuthClientSecret` #### `inferenceVertexOAuthScopes` #### `inferenceVertexOAuthLoginHint` #### `inferenceVertexWorkforceAudience` #### `inferenceVertexWorkforceUserProject` #### `inferenceVertexWorkforceAuthFlow` #### `inferenceVertexWorkforceOidc` #### `inferenceVertexCredentialsFile` #### `inferenceFoundryResource` #### `inferenceFoundryBaseUrl` #### `inferenceFoundryApiKey` #### `inferenceFoundryTenantId` #### `inferenceFoundryClientId` #### `inferenceFoundryAuthFlow` #### `modelDiscoveryEnabled` #### `modelPrefer1mContext` #### `inferenceModels` #### `defaultModelEffort` #### `alwaysStartWithDefaultModel` #### `inferenceModelPricingEnabled` #### `inferenceModelPricingMultiplier` #### `inferenceModelPricing` #### `modelCatalogEnabled` #### `modelCatalogUrl` #### `coworkTabEnabled` #### `isClaudeCodeForDesktopEnabled` #### `sshHostAllowlist` #### `sshClientPath` #### `sshTransport` #### `chatTabEnabled` #### `desktopHome` #### `chatAdvancedFileAnalysisEnabled` #### `coworkEgressAllowedHosts` #### `allowedWorkspaceFolders` #### `blockReadsOutsideWorkingDirectories` #### `autoModeEnabled` #### `disableBypassPermissionsMode` #### `disableBundledSkills` #### `skillCreationEnabled` #### `userPluginMarketplacesEnabled` #### `userPluginUploadsEnabled` #### `scheduledTasksEnabled` #### `keepAwakeEnabled` #### `developerModeEnabled` #### `quickEntryDefaultShortcut` #### `quickEntryScreenshotsEnabled` #### `quickEntryFileSharingEnabled` #### `skipWebFetchPreflight` #### `builtinToolPolicy` #### `disabledBuiltinTools` #### `toolSearchEnabled` #### `organizationInstructions` #### `requireCoworkFullVmSandbox` #### `disableDeploymentModeChooser` #### `disableDeepLinkRegistration` #### `builtinBrowserEnabled` #### `builtinBrowserDefaultDomainPolicy` #### `builtinBrowserAllowedDomains` #### `builtinBrowserBlockedDomains` ### `claudeAiImport` #### `managedMcpServers` #### `mcpPersistentAlwaysAllowEnabled` #### `mcpScheduledTaskApprovalLifetimeDays` #### `isLocalDevMcpEnabled` #### `allowedPluginMcpServers` #### `deniedPluginMcpServers` #### `mcpToolTimeoutSec` #### `microsoftAuthBroker` #### `microsoftAuthDefaultAccount` #### `isDesktopExtensionEnabled` #### `isDesktopExtensionSignatureRequired` ### `deploymentOrganizationUuid` ### `disableEssentialTelemetry` ### `disableNonessentialTelemetry` ### `disableNonessentialServices` #### `otlpEndpoint` #### `otlpProtocol` #### `otlpHeaders` #### `otlpAuthMode` #### `otlpHeadersHelper` #### `otlpResourceAttributes` #### `otlpDesktopLogLevel` #### `otlpContentCapture` #### `otlpTracesEnabled` #### `otlpAttrMaxChars` #### `disableAutoUpdates` #### `installedUpdateEnforcementEnabled` #### `installedUpdateEnforcementHours` #### `autoUpdaterEnforcementHours` #### `updateViaUpdatesHost` #### `releaseChannel` #### `relaunchEnforcementHours` #### `configRecheckIntervalMinutes` #### `disableLocalConfigCache` #### `chatSessionRetentionDays` #### `coworkSessionRetentionDays` #### `codeSessionRetentionDays` #### `sessionRetentionHold` #### `inferenceMaxTokensPerWindow` #### `inferenceTokenWindowHours` ### `endUserAttribution` ### `deploymentDisplayName` ### `deploymentDisplaySubtitle` ### `disableConfigDeprecationWarnings` ### `banner` #### `disableFeatureDiscovery` ### `allowedPluginMarketplaces` ### `orgPluginSettings` #### `bootstrapEnabled` #### `bootstrapUrl` #### `bootstrapOidc` #### `bootstrapHeaders` #### `bootstrapHeadersHelper` #### `trustBootstrapDelivery` ## Labels and badges ### Entry labels ### The Works with column ### Self-hosted install line ## How keys are read ### Value types ### Linux ## Reference ### The Self-hosted install column

This page is larger than the 256 KiB this site keeps, so one side of the diff below stops where the stored text does.

Nothing in the body moved in this read. What changed is above.

third-party/claude-desktop/configuration-format New page · 157 lines, new page

# Configuration implementation ## How configuration differs by deployment ## Configuration on the device ### Where Claude Desktop reads configuration on a device ### Which configuration source applies on a device ### When a configuration change on a device takes effect ### Value types in a profile or registry policy ### The Linux configuration file ## Configuration from the Enterprise Admin Console ### What an MDM profile does alongside the Enterprise Admin Console ## Configuration on a self-hosted install ### What an MDM profile does on a self-hosted install ### When a change takes effect on a self-hosted install

A whole new page. There's nothing to diff it against, so here is what it says.

# Configuration implementation

> Compare where Claude Desktop on 3P reads configuration in each kind of deployment, and write values for a profile, the registry, or the Linux file

You configure Claude Desktop on third-party (3P) with the keys in the [configuration reference](/docs/third-party/claude-desktop/configuration.md) in every kind of deployment, but where you set them, how they reach the app, and how you write their values differ between a device's own configuration, the Enterprise Admin Console, and a self-hosted install.

> [!NOTE]
>
> To choose how configuration reaches your devices, see [Choose a configuration delivery model](/docs/third-party/claude-desktop/installation.md#choose-a-configuration-delivery-model).

## How configuration differs by deployment

Each kind of deployment stores and delivers the configuration differently.

| | [Configuration on the device](#configuration-on-the-device) | [Enterprise Admin Console](#configuration-from-the-enterprise-admin-console) | [Self-hosted install](#configuration-on-a-self-hosted-install) |
| - | - | - | - |
| Where the configuration lives | In an MDM profile or registry policy, in the local configuration file, or on a bootstrap server that the device points to | In your organization's settings on claude.ai, which Anthropic hosts | Keys labeled **Server side** live in the document your session host reads. Keys labeled **MDM profile** live in Claude Desktop's own configuration on the device |
| How it reaches the app | The app reads it at launch, or fetches it from your bootstrap server. Users don't sign in to a Claude account | Each user signs in with their work account, and the app downloads the settings that apply to them | Sessions run on a session host your organization operates, which applies a **Server side** key itself or passes it on to Claude Desktop. Claude Desktop reads keys labeled **MDM profile** from the device, as on any device |
| What an MDM profile does | Carries the full configuration, or the bootstrap keys | You don't need one. A profile on the device can still decide some settings, or keep the device off the console. See [What an MDM profile does alongside the Enterprise Admin Console](#what-an-mdm-profile-does-alongside-the-enterprise-admin-console) | Usually names the session host, and carries the keys labeled **MDM profile**. See [What an MDM profile does on a self-hosted install](#what-an-mdm-profile-does-on-a-self-hosted-install) |
| How you write values | Strings in a macOS profile or the Windows registry. JSON in the Linux file or a bootstrap response | Fields on the console's pages, or JSON in an imported file or an Admin API request | As on any device, for keys labeled **MDM profile**. See [Value types in a profile or registry policy](#value-types-in-a-profile-or-registry-policy) |
| Where to go next | [Deploy with MDM](/docs/third-party/claude-desktop/mdm.md), [Deploy with a bootstrap server](/docs/third-party/claude-desktop/bootstrap.md) | [Deploy with Enterprise Admin Console](/docs/third-party/claude-desktop/admin-console.md) | [Keys that work on a self-hosted install](/docs/third-party/claude-desktop/configuration.md?works-with=self-hosted) |

## Configuration on the device

> [!TIP]
>
> Most settings are easier to configure in the [in-app configuration window](/docs/third-party/claude-desktop/in-app-configuration.md) (**Developer → Configure Third-Party Inference…**), which validates values, shows per-provider requirements, and exports directly to `.mobileconfig` or `.reg`. To write an MDM profile, registry policy, or bootstrap response yourself, start with [Where Claude Desktop reads configuration on a device](#where-claude-desktop-reads-configuration-on-a-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.

| Platform | Managed (MDM) location | Local (user) location |
| - | - | - |
| macOS | `/Library/Managed Preferences/<user>/com.anthropic.claudefordesktop.plist` (per user), `/Library/Managed Preferences/com.anthropic.claudefordesktop.plist` (machine) | `~/Library/Application Support/Claude-3p/configLibrary/` |
| Windows | `HKLM\SOFTWARE\Policies\Claude` (machine), `HKCU\SOFTWARE\Policies\Claude` (user) | `%LOCALAPPDATA%\Claude-3p\configLibrary\` |
| Linux | `/etc/claude-desktop/managed-settings.json` | `~/.config/Claude-3p/configLibrary/` |

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](/docs/third-party/claude-desktop/mdm.md#update-keys-and-managed-precedence), 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`, and [`releaseChannel`](/docs/third-party/claude-desktop/configuration#releasechannel), the lifecycle keys `relaunchEnforcementHours` and `configRecheckIntervalMinutes`, and the [network proxy keys](/docs/third-party/claude-desktop/network-proxy.md#pin-a-proxy-from-managed-configuration) `egressProxyUrl` and `egressProxyPacUrl`) 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](/docs/third-party/claude-desktop/configuration.md) 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 ignores `HKCU\SOFTWARE\Policies\Claude` entirely.

[Deploy the configuration](/docs/third-party/claude-desktop/mdm.md#4-deploy-the-configuration) has the exact rules for managed sources. For a bootstrap response, see also [Keys that require user consent](/docs/third-party/claude-desktop/bootstrap.md#keys-that-require-user-consent) and [Origin pinning](/docs/third-party/claude-desktop/bootstrap.md#origin-pinning).

> [!NOTE]
>
> Claude Desktop on 3P reads the same managed-configuration sources as standard Claude Desktop but ignores keys scoped to standard deployments, except [`forceLoginOrgUUID`](/docs/cowork/hipaa-setup#what-each-claude-desktop-key-does), as described under [Keep a device on its managed profile](/docs/third-party/claude-desktop/admin-console.md#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`](/docs/third-party/claude-desktop/configuration#configrecheckintervalminutes), 10 minutes by default) and, for most settings, prompts the user to restart and requires the restart after [`relaunchEnforcementHours`](/docs/third-party/claude-desktop/configuration#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](/docs/third-party/claude-desktop/bootstrap.md#how-it-works) and [Availability](/docs/third-party/claude-desktop/bootstrap.md#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](#the-linux-configuration-file) and a [bootstrap response](/docs/third-party/claude-desktop/bootstrap.md#response-schema) take JSON values. Each key's entry in the [configuration reference](/docs/third-party/claude-desktop/configuration.md) gives the key's type and the values or fields it accepts.

| Documented type | What to write | Example |
| - | - | - |
| string | Plain string | `vertex` |
| boolean | `"true"` or `"false"` (or `1` / `0`) | `"true"` |
| enum | One of the values the key's entry lists, as a plain string | `gateway` |
| integer | Decimal string | `"3600"` |
| number | Decimal string | `"0.85"` |
| string\[] (JSON) | JSON array **encoded as a string** | `["claude-sonnet-5","claude-opus-5"]` |
| enum\[] (JSON) | JSON array of values the key's entry lists, **encoded as a string** | `["userPrompts","toolDetails"]` |
| object: name → value (JSON) | JSON object mapping name to value, as a string | `{"X-Org-Id":"team1"}` |
| object (JSON) | JSON object with the fields the key's entry lists, as a string | see [`inferenceIdpOidc`](/docs/third-party/claude-desktop/configuration#inferenceidpoidc) |
| object\[] (JSON) | JSON array of objects, as a string | see [`managedMcpServers`](/docs/third-party/claude-desktop/configuration#managedmcpservers) |

> [!NOTE]
>
> 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.

On Windows, write registry values as `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](/docs/third-party/claude-desktop/configuration.md), with no wrapper object and no nesting:

```json theme={null}
{
  "inferenceProvider": "gateway",
  "inferenceGatewayBaseUrl": "https://gateway.example.com/v1",
  "inferenceGatewayApiKey": "sk-example",
  "inferenceCustomHeaders": { "X-Tenant-Id": "acme" }
}
```

Because the file is real JSON, array- and object-typed keys use native JSON values. String-encoded values are also accepted, so a profile generated for another platform can be reused.

The file is only honored when it can't be edited by the user it configures:

* `managed-settings.json` must be a regular file (not a symlink), owned by root, and not group- or world-writable.
* `/etc/claude-desktop` itself must be a directory (not a symlink), owned by root, and not group- or world-writable.

A file that fails these checks is rejected: none of its settings are applied, the app treats the device as managed but unreadable, and local settings are also disabled until the file is fixed and the app is relaunched. The reason is logged to `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](#where-claude-desktop-reads-configuration-on-a-device).

## Configuration from the Enterprise Admin Console

From the [Enterprise Admin Console](/docs/third-party/claude-desktop/admin-console.md), 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](https://claude.ai) sets one of the documented configuration keys. A [permission policy](/docs/third-party/claude-desktop/admin-console.md#per-group-permission-policies) sets the settings that differ for one group of users.
* **How the app gets it**: the app contacts `api.anthropic.com` at 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](/docs/third-party/claude-desktop/admin-console.md#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](/docs/third-party/claude-desktop/admin-console.md#limitations).
* **How you write values**: enter each value in its field, [import a JSON configuration](/docs/third-party/claude-desktop/admin-console.md#start-from-an-existing-configuration-file), or replace the whole configuration as one nested JSON document with the [Admin API](/docs/third-party/claude-desktop/admin-console.md#manage-the-configuration-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](/docs/third-party/claude-desktop/admin-console.md#configuration-updates).

### What an MDM profile does alongside the Enterprise Admin Console

* **`disableDeploymentModeChooser` set to `true`**: 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](/docs/third-party/claude-desktop/mdm.md#update-keys-and-managed-precedence)**: 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 `forceLoginOrgUUID` set 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.

[Which settings apply on a device with a managed profile](/docs/third-party/claude-desktop/admin-console.md#which-settings-apply-on-a-device-with-a-managed-profile) lists the keys that the app takes from the profile, and [Keep a device on its managed profile](/docs/third-party/claude-desktop/admin-console.md#keep-a-device-on-its-managed-profile) covers the keys that prevent or limit the move.

## 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.

| Place | Label of its keys in the reference | Who acts on the key |
| - | - | - |
| The document your session host reads | **Server side** | The session host. It applies the key itself, or passes it on to Claude Desktop, which applies it in its own windows or on the person's device. |
| Claude Desktop's own configuration on the device: an MDM profile, the local file, or a bootstrap server that configuration names | **MDM profile** | Claude Desktop, by the same rules as [configuration on the device](#which-configuration-source-applies-on-a-device). The session host ignores the key. |
| The session host's own configuration | **Not supported**, for the matching keys | Whoever runs the host sets the host's route to the model, and names your telemetry collector's address, protocol, and headers in the host's own configuration. |

An MDM profile that sets only [app-behavior keys](/docs/third-party/claude-desktop/mdm.md#update-keys-and-managed-precedence) 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](/docs/third-party/claude-desktop/bootstrap.md#response-schema) 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](/docs/third-party/claude-desktop/configuration.md#self-hosted-column) 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 [`inferenceCredentialKind`](/docs/third-party/claude-desktop/configuration#inferencecredentialkind) names the device's sign-in to the host, never the host's model credential, and [`inferenceIdpOidc`](/docs/third-party/claude-desktop/configuration#inferenceidpoidc) configures the sign-in that the device reuses for the host.
* **The device's network proxy**: [`egressProxyUrl`](/docs/third-party/claude-desktop/configuration#egressproxyurl) and [`egressProxyPacUrl`](/docs/third-party/claude-desktop/configuration#egressproxypacurl).
* **Telemetry and updates**: [`disableEssentialTelemetry`](/docs/third-party/claude-desktop/configuration#disableessentialtelemetry) and [`disableAutoUpdates`](/docs/third-party/claude-desktop/configuration#disableautoupdates).

Write each value in the profile as [Value types in a profile or registry policy](#value-types-in-a-profile-or-registry-policy) describes.

### 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`](/docs/third-party/claude-desktop/configuration#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](#when-a-configuration-change-on-a-device-takes-effect).

A value that the session host delivers for a field labeled **Consent required** applies after the user approves it. Where machine-scoped device management set the host's address, the value applies without a prompt. [`trustBootstrapDelivery`](/docs/third-party/claude-desktop/configuration#trustbootstrapdelivery) covers what a bootstrap server delivers, not what a session host delivers.

third-party/claude-desktop/foundry Changed · +72 / -11 lines

#### `inferenceFoundryResource` #### `inferenceFoundryBaseUrl` #### `inferenceFoundryApiKey` #### `inferenceFoundryTenantId` #### `inferenceFoundryClientId` #### `inferenceFoundryAuthFlow`

from line 111
111111 
112112The full set of `inferenceFoundry*` keys is below. Set `inferenceProvider` to `foundry`, supply the resource name, and provide exactly one credential source.
113113 
114| Setting | Type | Availability | Default | Description |
115| - | - | - | - | - |
116| Azure AI Foundry resource name `inferenceFoundryResource` | `string` | MDM + Bootstrap Added in 1.2581.0 | — | Azure AI Foundry resource name used to construct the endpoint URL. |
117| Azure AI Foundry base URL `inferenceFoundryBaseUrl` | `string` | MDM + Bootstrap Added in 2.110.0 | — | Full base URL for a gateway or proxy in front of Foundry, path included (replaces [https://RESOURCE.services.ai.azure.com/anthropic](https://RESOURCE.services.ai.azure.com/anthropic)). |
118| Azure AI Foundry API key `inferenceFoundryApiKey` | `string` | MDM + Bootstrap Added in 1.2581.0 | — | API key for Azure AI Foundry inference. |
119| Entra ID tenant ID `inferenceFoundryTenantId` | `string` | MDM + Bootstrap Added in 1.9255.0 | — | Directory (tenant) ID of the Entra ID app registration that has the Cognitive Services scope. |
120| Entra ID client ID `inferenceFoundryClientId` | `string` | MDM + Bootstrap Added in 1.9255.0 | — | Application (client) ID of the Entra ID app registration. Device-code sign-in requires the app to allow public client flows. |
121| Entra ID sign-in flow `inferenceFoundryAuthFlow` | `enum` | MDM + Bootstrap Added in 1.19367.0 | — | How Entra sign-in runs: device code (default), system browser, or the OS identity broker. One of: `device-code`, `browser`, `broker`. |
114[Entry labels](/docs/third-party/claude-desktop/configuration.md#entry-labels) says what each label means.
122115 
123> **inferenceFoundryBaseUrl details**
116#### `inferenceFoundryResource`
117 
118string
119 
120Consent required (A value that a bootstrap server or a self-hosted session host delivers applies only after the user approves it, unless machine-scoped device management set that server's address. For a bootstrap server, the trustBootstrapDelivery key overrides that default. A value set in an MDM profile, the local configuration file or the Enterprise Admin Console needs no approval.)
121 
122Since 1.2581.0
123 
124**Azure AI Foundry resource name.** Azure AI Foundry resource name used to construct the endpoint URL.
125 
126***
127 
128#### `inferenceFoundryBaseUrl`
129 
130string
131 
132Consent required (A value that a bootstrap server or a self-hosted session host delivers applies only after the user approves it, unless machine-scoped device management set that server's address. For a bootstrap server, the trustBootstrapDelivery key overrides that default. A value set in an MDM profile, the local configuration file or the Enterprise Admin Console needs no approval.)
133 
134Origin-pinned (A URL that a bootstrap server delivers must share the origin of bootstrapUrl, or Claude Desktop drops it. The limit is lifted when bootstrapOidc is set, and it does not apply to a value set in an MDM profile, the local configuration file or the Enterprise Admin Console.)
135 
136Since 2.110.0
137 
138**Azure AI Foundry base URL.** Full base URL for a gateway or proxy in front of Foundry, path included (replaces [https://RESOURCE.services.ai.azure.com/anthropic](https://RESOURCE.services.ai.azure.com/anthropic)).
139 
140> **More detail**
124141>
125142> Set this only when the app reaches Foundry through a gateway or proxy you run, such as Azure API Management. Requests go to `<value>/v1/messages` instead of `https://<resource>.services.ai.azure.com/anthropic/v1/messages`, carrying the same credential and headers the app would send to Foundry: each user's Entra ID token for the Azure Cognitive Services audience as `Authorization: Bearer` with Entra sign-in, otherwise the API key or the credential helper's output. Claude Code sessions receive the value as `ANTHROPIC_FOUNDRY_BASE_URL`, so use the same value you would give Claude Code in a terminal. `inferenceFoundryResource` is still required and should name the resource behind the gateway; the app sends nothing to the resource directly while this is set. Must be https, or http to a proxy at a loopback address on the device itself (127.0.0.1, localhost or \[::1]).
126143 
127> **inferenceFoundryAuthFlow details**
144***
145 
146#### `inferenceFoundryApiKey`
147 
148stringSince 1.2581.0
149 
150**Azure AI Foundry API key.** API key for Azure AI Foundry inference.
151 
152***
153 
154#### `inferenceFoundryTenantId`
155 
156string
157 
158Consent required (A value that a bootstrap server or a self-hosted session host delivers applies only after the user approves it, unless machine-scoped device management set that server's address. For a bootstrap server, the trustBootstrapDelivery key overrides that default. A value set in an MDM profile, the local configuration file or the Enterprise Admin Console needs no approval.)
159 
160Since 1.9255.0
161 
162**Entra ID tenant ID.** Directory (tenant) ID of the Entra ID app registration that has the Cognitive Services scope.
163 
164***
165 
166#### `inferenceFoundryClientId`
167 
168string
169 
170Consent required (A value that a bootstrap server or a self-hosted session host delivers applies only after the user approves it, unless machine-scoped device management set that server's address. For a bootstrap server, the trustBootstrapDelivery key overrides that default. A value set in an MDM profile, the local configuration file or the Enterprise Admin Console needs no approval.)
171 
172Since 1.9255.0
173 
174**Entra ID client ID.** Application (client) ID of the Entra ID app registration. Device-code sign-in requires the app to allow public client flows.
175 
176***
177 
178#### `inferenceFoundryAuthFlow`
179 
180enumSince 1.19367.0
181 
182**Entra ID sign-in flow.** How Entra sign-in runs: device code (default), system browser, or the OS identity broker.
183 
184One of: `device-code`, `browser`, `broker`
185 
186> **More detail**
128187>
129188> * **`device-code`** (default) — shows a code to enter at microsoft.com/devicelogin. The app registration must have **Allow public client flows** enabled.
130189> * **`browser`** — opens the system browser for an authorization-code (PKCE) sign-in on a loopback redirect URI. The app registration must include `http://127.0.0.1/callback` under the **Mobile and desktop applications** platform (Entra ignores the loopback port, but not the path). Works with **Allow public client flows** disabled, and is unaffected by Conditional Access policies that block device-code authentication.
from line 190
131190> * **`broker`** — signs in through the OS identity broker (Web Account Manager on Windows, Company Portal on macOS), so it can satisfy Conditional Access policies that require a compliant/managed device or token protection. The app registration must include the broker redirect URIs `ms-appx-web://Microsoft.AAD.BrokerPlugin/{client-id}` (Windows) and `msauth.com.anthropic.claudefordesktop://auth` (macOS) under the **Mobile and desktop applications** platform. Not supported on Linux.
132191>
133192> App versions that predate this key always use device code; versions that predate the broker option treat `broker` as unset and use device code.
193 
194***
134195 
135196You must also set `inferenceModels` to a list of Microsoft Foundry deployment names. See the [Configuration reference](/docs/third-party/claude-desktop/configuration.md#inferencemodels).
136197 

third-party/claude-desktop/gateway Changed · +248 / -47 lines

#### `inferenceGatewayBaseUrl` #### `inferenceGatewayApiKey` #### `inferenceGatewayAuthScheme` #### `inferenceGatewayOidcAuthFlow` #### `inferenceGatewayOidc` #### `inferenceIdpAuthFlow` #### `inferenceIdpOidc` #### `inferenceStreamIdleTimeoutSec`

from line 164
164164 
165165### Configuration keys
166166 
167| Setting | Type | Availability | Default | Description |
168| - | - | - | - | - |
169| Gateway base URL `inferenceGatewayBaseUrl` | `string` | MDM + Bootstrap Added in 1.2581.0 | — | Full URL of the inference gateway endpoint. |
170| Gateway API key `inferenceGatewayApiKey` | `string` | MDM + Bootstrap Added in 1.2581.0 | — | API key for the configured inference gateway. |
171| Gateway auth scheme `inferenceGatewayAuthScheme` | `enum` | MDM + Bootstrap Added in 1.3036.0 | `bearer` | How the gateway credential is sent on the wire (Authorization: Bearer vs x-api-key header). One of: `bearer`, `x-api-key`. Defaults to `bearer`. Deprecated: `inferenceGatewayAuthScheme: "sso"`; use inferenceCredentialKind: "interactive". The original spelling will keep working; no end date has been set. |
172| Gateway sign-in flow `inferenceGatewayOidcAuthFlow` | `enum` | MDM + Bootstrap Added in 1.25927.0 | — | How the IdP sign-in runs: system browser (default) or the OS Microsoft Entra broker. One of: `browser`, `broker`. Deprecated: `inferenceGatewayOidcAuthFlow`; use inferenceIdpAuthFlow together with inferenceIdpOidc once every desktop in the fleet is on a release that reads them. The original spelling will keep working; no end date has been set. |
173| Gateway SSO IdP (OIDC) `inferenceGatewayOidc` | `object` | MDM + Bootstrap Added in 1.6889.0 | — | External IdP for gateway sign-in. The user’s token from this issuer is sent to the gateway as the Bearer credential. Deprecated: `inferenceGatewayOidc`; use inferenceIdpOidc with inferenceCredentialKind: "external-idp" once every desktop in the fleet is on a release that reads them. The original spelling will keep working; no end date has been set. |
174| Identity provider sign-in flow `inferenceIdpAuthFlow` | `enum` | MDM + Bootstrap Added in 2.7032.0 | — | How the identity-provider sign-in runs: system browser (default) or the OS Microsoft Entra broker. One of: `browser`, `broker`. |
175| Identity provider (OIDC) `inferenceIdpOidc` | `object` | MDM + Bootstrap Added in 2.7032.0 | — | Your organization’s OpenID Connect identity provider. The user’s token is sent as the Bearer credential to the gateway or the Bedrock proxy. |
176| Stream idle timeout `inferenceStreamIdleTimeoutSec` | `integer` | MDM + Bootstrap Added in 1.44121.1 | — | Extra seconds to wait for model output on a streaming response that is sending only keep-alive pings. Gateway provider only. Default 300. Range: 300–1800. |
167[Entry labels](/docs/third-party/claude-desktop/configuration.md#entry-labels) says what each label means.
177168 
178> **inferenceGatewayOidcAuthFlow details**
169#### `inferenceGatewayBaseUrl`
170 
171string
172 
173Consent required (A value that a bootstrap server or a self-hosted session host delivers applies only after the user approves it, unless machine-scoped device management set that server's address. For a bootstrap server, the trustBootstrapDelivery key overrides that default. A value set in an MDM profile, the local configuration file or the Enterprise Admin Console needs no approval.)
174 
175Origin-pinned (A URL that a bootstrap server delivers must share the origin of bootstrapUrl, or Claude Desktop drops it. The limit is lifted when bootstrapOidc is set, and it does not apply to a value set in an MDM profile, the local configuration file or the Enterprise Admin Console.)
176 
177Since 1.2581.0
178 
179**Gateway base URL.** Full URL of the inference gateway endpoint.
180 
181***
182 
183#### `inferenceGatewayApiKey`
184 
185stringSince 1.2581.0
186 
187**Gateway API key.** API key for the configured inference gateway.
188 
189***
190 
191#### `inferenceGatewayAuthScheme`
192 
193enumDefault: bearerSince 1.3036.0
194 
195**Gateway auth scheme.** How the gateway credential is sent on the wire (Authorization: Bearer vs x-api-key header).
196 
197One of: `bearer` (default), `x-api-key`
198 
199> [!WARNING]
179200>
201> **Deprecated**
202>
203> * `inferenceGatewayAuthScheme: "sso"`; use inferenceCredentialKind: "interactive". The original spelling will keep working; no end date has been set.
204 
205***
206 
207#### `inferenceGatewayOidcAuthFlow`
208 
209enumSince 1.25927.0
210 
211**Gateway sign-in flow.** How the IdP sign-in runs: system browser (default) or the OS Microsoft Entra broker.
212 
213One of: `browser`, `broker`
214 
215> [!WARNING]
216>
217> **Deprecated**
218>
219> * Use inferenceIdpAuthFlow together with inferenceIdpOidc once every desktop in the fleet is on a release that reads them. The original spelling will keep working; no end date has been set.
220 
221> **More detail**
222>
180223> * **`browser`** (default) — opens the system browser for an authorization-code (PKCE) sign-in on a loopback redirect URI. See the **IdP setup** notes on `inferenceGatewayOidc` for redirect-URI registration.
181224> * **`broker`** — signs in through the OS identity broker (Web Account Manager on Windows, Company Portal on macOS). Requires the IdP to be **Microsoft Entra ID** — the `issuer` on `inferenceGatewayOidc` must be `https://login.microsoftonline.com/{tenant-id}/v2.0`. The broker satisfies Conditional Access policies that require a compliant/managed device or token protection, and needs no loopback redirect. The Entra app registration must include the broker redirect URIs `ms-appx-web://Microsoft.AAD.BrokerPlugin/{client-id}` (Windows) and `msauth.com.anthropic.claudefordesktop://auth` (macOS) under the **Mobile and desktop applications** platform. Not supported on Linux.
182225>
183226> Broker mode mints a token in the customer's own Entra tenant with the customer-configured `scopes`, and forwards it to the customer's own gateway; both endpoints of that trust relationship are inside the customer's control. A desktop that has the `external-idp` kind reads this key, together with `inferenceGatewayOidc`, as that kind's sign-in flow; it stays readable.
184227 
185> **inferenceGatewayOidc details**
228***
229 
230#### `inferenceGatewayOidc`
231 
232object
233 
234Consent required (A value that a bootstrap server or a self-hosted session host delivers applies only after the user approves it, unless machine-scoped device management set that server's address. For a bootstrap server, the trustBootstrapDelivery key overrides that default. A value set in an MDM profile, the local configuration file or the Enterprise Admin Console needs no approval.)
235 
236Since 1.6889.0
237 
238**Gateway SSO IdP (OIDC).** External IdP for gateway sign-in. The user’s token from this issuer is sent to the gateway as the Bearer credential.
239 
240> [!WARNING]
186241>
242> **Deprecated**
243>
244> * Use inferenceIdpOidc with inferenceCredentialKind: "external-idp" once every desktop in the fleet is on a release that reads them. The original spelling will keep working; no end date has been set.
245 
246> **More detail**
247>
187248> **External IdP mode.** The app discovers `<issuer>/.well-known/openid-configuration`, runs an OIDC authorization-code-with-PKCE sign-in in the system browser with `clientId`, and sends the resulting token as `Authorization: Bearer` on every inference request. Leave this unset for a gateway that hosts its own RFC 8414 metadata at `<baseUrl>/.well-known/oauth-authorization-server`. A desktop that has the `external-idp` kind reads this block as that kind's identity-provider key; it stays readable, so a fleet keeps this spelling until every desktop is on such a release.
188249>
189250> **Bearer token type.** `id_token` (the default) sends the OIDC ID token; the gateway validates signature, `iss`, and `aud` (the `clientId` configured here). `access_token` sends the OAuth access token, for gateways that validate as a resource server (Portkey, Kong, Envoy JWT filter, AWS API Gateway authorizers); `scopes` must then name the gateway's registered API scope. Either way the gateway must check `aud`, not just signature and issuer, or it accepts any token from your tenant.
from line 252
191252> **IdP setup.** The callback is `http://127.0.0.1:<port>/callback` by default (`http://localhost:<port>/callback` with `redirectHost: "localhost"`); register exactly the one you use and include `/callback`. **Entra:** a public-client app with a *Mobile and desktop applications* redirect URI of `http://127.0.0.1/callback` (any port; omitting the path fails with `AADSTS50011`); in `access_token` mode also grant the gateway API's delegated permission, or sign-in fails with `AADSTS65001`. **Okta:** a *Native* app with the exact URI `http://127.0.0.1:<port>/callback` and that port in `redirectPort`.
192253>
193254> **Refresh.** With `offline_access` the app renews the token silently and prompts a browser sign-in only when refresh fails. Google never returns an `id_token` on refresh, so a Google Workspace-backed gateway in `id_token` mode re-prompts about hourly; `access_token` mode is unaffected.
255 
256> **Child attributes (11)**
194257>
195> | Field | Type | Default | Description |
196> | - | - | - | - |
197> | `clientId` | `string` | — | OAuth client ID of the desktop app registration at your identity provider (public client, PKCE). |
198> | `issuer` | `string` | — | HTTPS issuer with OIDC discovery. Set this, or set the authorization and token URLs instead. |
199> | `authorizationUrl` | `string` | — | HTTPS authorization endpoint. Used with the token URL when no issuer is set. |
200> | `tokenUrl` | `string` | — | HTTPS token endpoint. Used with the authorization URL when no issuer is set. |
201> | `bearerTokenType` | `enum` | `id_token` | Which token to send as the bearer. Use access token for a gateway or proxy that validates as an OAuth resource server. One of: `id_token`, `access_token`. |
202> | `scopes` | `string` | — | Space-separated scopes. Required in access-token mode: set the gateway or proxy API scope. offline\_access is appended automatically unless disabled below. |
203> | `appendOfflineAccess` | `boolean` | `true` | Automatically append offline\_access to scopes so the IdP returns a refresh token for silent refresh. |
204> | `resource` | `string` | — | Access-token audience of the gateway or proxy: an https URL or an AD FS relying-party identifier, sent as the RFC 8707 resource. Leave unset for Entra ID. |
205> | `redirectPort` | `integer` | — | Fixed loopback port for the sign-in redirect. Leave unset to use a free port each time. |
206> | `redirectHost` | `enum` | — | Use localhost only if your IdP’s registered redirect URI specifies it. One of: `127.0.0.1`, `localhost`. |
207> | `additionalRedirectReferrerHosts` | `string` | — | Space-separated hostnames also accepted as the referrer of the sign-in callback. Only needed when the IdP completes sign-in from a different host. |
258> **clientId** `string` *required*
259>
260> OAuth client ID of the desktop app registration at your identity provider (public client, PKCE).
261>
262> **issuer** `string`
263>
264> HTTPS issuer with OIDC discovery. Set this, or set the authorization and token URLs instead.
265>
266> **authorizationUrl** `string`
267>
268> HTTPS authorization endpoint. Used with the token URL when no issuer is set.
269>
270> **tokenUrl** `string`
271>
272> HTTPS token endpoint. Used with the authorization URL when no issuer is set.
273>
274> **bearerTokenType** `enum` (default: id\_token)
275>
276> Which token to send as the bearer. Use access token for a gateway or proxy that validates as an OAuth resource server.
277>
278> One of: `id_token` (default), `access_token`
279>
280> > **More detail**
281> >
282> > In **access-token** mode the token's audience must be your gateway or proxy. On IdPs where the requested scopes decide the audience (**Entra ID**), include its API resource scope in `scopes` — `api://<gateway-app-id>/.default`, or a named delegated scope you exposed via *Expose an API*. With only the standard OIDC scopes (`openid profile email offline_access`) Entra returns a v1.0 Microsoft Graph token whose issuer (`https://sts.windows.net/<tenant>/`) doesn't match the v2.0 issuer configured here, so a gateway that validates `iss` rejects it. On IdPs that set the access-token audience out-of-band (Keycloak audience mapper, Auth0 default audience, Okta custom authorization server), a resource scope in `scopes` isn't required — the audience comes from the IdP-side configuration.
283>
284> **scopes** `string`
285>
286> Space-separated scopes. Required in access-token mode: set the gateway or proxy API scope. offline\_access is appended automatically unless disabled below.
287>
288> **appendOfflineAccess** `boolean` (default: true)
289>
290> Automatically append offline\_access to scopes so the IdP returns a refresh token for silent refresh.
291>
292> > **More detail**
293> >
294> > Turn off only if your authorization server rejects `offline_access` as an unknown scope; include the server’s own refresh-token scope in **Scopes** instead.
295>
296> **resource** `string`
297>
298> Access-token audience of the gateway or proxy: an https URL or an AD FS relying-party identifier, sent as the RFC 8707 resource. Leave unset for Entra ID.
299>
300> > **More detail**
301> >
302> > Set this only for an IdP that implements RFC 8707 resource indicators. The app then sends `resource=<value>` on the authorization, token and refresh requests, so the access token the IdP issues is audience-restricted to the gateway or proxy rather than to the IdP's own APIs. Use it with `bearerTokenType: access_token`; in `id_token` mode the ID token's audience is always `clientId`. Ignored with the OS-broker sign-in flow (the sign-in flow key set to `broker`), which is Entra-only.
303> >
304> > **Microsoft Entra ID:** leave unset — the v2.0 endpoint rejects `resource`; request the API scope in `scopes` instead (`api://<gateway-app-id>/.default`). **AD FS:** enter one of the relying-party trust's identifiers, spelled as it is registered there. A value with no scheme (a host name with or without a port or path, a single name, or a GUID; `name:digits` also reads as a host name with a port) is sent as `https://<value>`; an identifier with a scheme of its own (`urn:…`, or an organization-defined one such as `VENDOR:URI:…`) is sent exactly as written. A trust whose only identifier is a bare name or GUID will not match, because those are sent as `https://<value>`: add an `https://…` or `urn:…` identifier to the trust and enter that one here. With any other identity provider, use an absolute URI without a fragment (RFC 8707 — the IdP rejects one as `invalid_target`). Changing it signs users in again.
305>
306> **redirectPort** `integer`
307>
308> Fixed loopback port for the sign-in redirect. Leave unset to use a free port each time.
309>
310> **redirectHost** `enum`
311>
312> Use localhost only if your IdP’s registered redirect URI specifies it.
313>
314> One of: `127.0.0.1`, `localhost`
315>
316> **additionalRedirectReferrerHosts** `string`
317>
318> Space-separated hostnames also accepted as the referrer of the sign-in callback. Only needed when the IdP completes sign-in from a different host.
319>
320> > **More detail**
321> >
322> > Only needed when the IdP completes sign-in from a host other than the authorization URL’s. When a callback is rejected for a referrer mismatch, the rejected host is named in the app log — add that hostname here.
208323 
209> **inferenceIdpAuthFlow details**
324***
325 
326#### `inferenceIdpAuthFlow`
327 
328enumSince 2.7032.0
329 
330**Identity provider sign-in flow.** How the identity-provider sign-in runs: system browser (default) or the OS Microsoft Entra broker.
331 
332One of: `browser`, `broker`
333 
334> **More detail**
210335>
211336> * **`browser`** (default) — opens the system browser for an authorization-code (PKCE) sign-in on a loopback redirect URI. See the **IdP setup** notes on `inferenceIdpOidc` for redirect-URI registration.
212337> * **`broker`** — signs in through the OS identity broker (Web Account Manager on Windows, Company Portal on macOS). Requires the IdP to be **Microsoft Entra ID** — the `issuer` on `inferenceIdpOidc` must be `https://login.microsoftonline.com/{tenant-id}/v2.0`. The broker satisfies Conditional Access policies that require a compliant/managed device or token protection, and needs no loopback redirect. The Entra app registration must include the broker redirect URIs `ms-appx-web://Microsoft.AAD.BrokerPlugin/{client-id}` (Windows) and `msauth.com.anthropic.claudefordesktop://auth` (macOS) under the **Mobile and desktop applications** platform. Not supported on Linux.
from line 338
213338>
214339> Broker mode mints a token in the customer's own Entra tenant with the customer-configured `scopes` and forwards it to the customer's own gateway or proxy; both endpoints of that trust relationship are inside the customer's control.
215340 
216> **inferenceIdpOidc details**
341***
342 
343#### `inferenceIdpOidc`
344 
345object
346 
347Consent required (A value that a bootstrap server or a self-hosted session host delivers applies only after the user approves it, unless machine-scoped device management set that server's address. For a bootstrap server, the trustBootstrapDelivery key overrides that default. A value set in an MDM profile, the local configuration file or the Enterprise Admin Console needs no approval.)
348 
349Since 2.7032.0
350 
351**Identity provider (OIDC).** Your organization’s OpenID Connect identity provider. The user’s token is sent as the Bearer credential to the gateway or the Bedrock proxy.
352 
353> **More detail**
217354>
218355> Used with `inferenceCredentialKind: "external-idp"`. The app discovers `<issuer>/.well-known/openid-configuration`, runs an OIDC authorization-code (PKCE) sign-in in the browser with `clientId` (or through the OS broker, see `inferenceIdpAuthFlow`) and sends the token as `Authorization: Bearer` on every inference request: to `inferenceGatewayBaseUrl` on the gateway provider, or on Bedrock to `inferenceBedrockBaseUrl`, which is then required: only a proxy that validates the token accepts it, never Amazon Bedrock itself (to sign in straight to Bedrock use `interactive`, AWS IAM Identity Center). On Bedrock this kind has no model discovery: list the models in `inferenceModels`.
219356>
from line 361
224361> **Refresh.** With `offline_access` the app renews the token silently and asks for a browser sign-in only when refresh fails (Google returns no `id_token` on refresh, so `id_token` mode there re-prompts about hourly).
225362>
226363> **Older names.** Gateway configurations written before this key use `inferenceGatewayOidc` / `inferenceGatewayOidcAuthFlow` with the `interactive` kind; they stay readable and mean the same sign-in.
364 
365> **Child attributes (11)**
227366>
228> | Field | Type | Default | Description |
229> | - | - | - | - |
230> | `clientId` | `string` | — | OAuth client ID of the desktop app registration at your identity provider (public client, PKCE). |
231> | `issuer` | `string` | — | HTTPS issuer with OIDC discovery. Set this, or set the authorization and token URLs instead. |
232> | `authorizationUrl` | `string` | — | HTTPS authorization endpoint. Used with the token URL when no issuer is set. |
233> | `tokenUrl` | `string` | — | HTTPS token endpoint. Used with the authorization URL when no issuer is set. |
234> | `bearerTokenType` | `enum` | `id_token` | Which token to send as the bearer. Use access token for a gateway or proxy that validates as an OAuth resource server. One of: `id_token`, `access_token`. |
235> | `scopes` | `string` | — | Space-separated scopes. Required in access-token mode: set the gateway or proxy API scope. offline\_access is appended automatically unless disabled below. |
236> | `appendOfflineAccess` | `boolean` | `true` | Automatically append offline\_access to scopes so the IdP returns a refresh token for silent refresh. |
237> | `resource` | `string` | — | Access-token audience of the gateway or proxy: an https URL or an AD FS relying-party identifier, sent as the RFC 8707 resource. Leave unset for Entra ID. |
238> | `redirectPort` | `integer` | — | Fixed loopback port for the sign-in redirect. Leave unset to use a free port each time. |
239> | `redirectHost` | `enum` | — | Use localhost only if your IdP’s registered redirect URI specifies it. One of: `127.0.0.1`, `localhost`. |
240> | `additionalRedirectReferrerHosts` | `string` | — | Space-separated hostnames also accepted as the referrer of the sign-in callback. Only needed when the IdP completes sign-in from a different host. |
367> **clientId** `string` *required*
368>
369> OAuth client ID of the desktop app registration at your identity provider (public client, PKCE).
370>
371> **issuer** `string`
372>
373> HTTPS issuer with OIDC discovery. Set this, or set the authorization and token URLs instead.
374>
375> **authorizationUrl** `string`
376>
377> HTTPS authorization endpoint. Used with the token URL when no issuer is set.
378>
379> **tokenUrl** `string`
380>
381> HTTPS token endpoint. Used with the authorization URL when no issuer is set.
382>
383> **bearerTokenType** `enum` (default: id\_token)
384>
385> Which token to send as the bearer. Use access token for a gateway or proxy that validates as an OAuth resource server.
386>
387> One of: `id_token` (default), `access_token`
388>
389> > **More detail**
390> >
391> > In **access-token** mode the token's audience must be your gateway or proxy. On IdPs where the requested scopes decide the audience (**Entra ID**), include its API resource scope in `scopes` — `api://<gateway-app-id>/.default`, or a named delegated scope you exposed via *Expose an API*. With only the standard OIDC scopes (`openid profile email offline_access`) Entra returns a v1.0 Microsoft Graph token whose issuer (`https://sts.windows.net/<tenant>/`) doesn't match the v2.0 issuer configured here, so a gateway that validates `iss` rejects it. On IdPs that set the access-token audience out-of-band (Keycloak audience mapper, Auth0 default audience, Okta custom authorization server), a resource scope in `scopes` isn't required — the audience comes from the IdP-side configuration.
392>
393> **scopes** `string`
394>
395> Space-separated scopes. Required in access-token mode: set the gateway or proxy API scope. offline\_access is appended automatically unless disabled below.
396>
397> **appendOfflineAccess** `boolean` (default: true)
398>
399> Automatically append offline\_access to scopes so the IdP returns a refresh token for silent refresh.
400>
401> > **More detail**
402> >
403> > Turn off only if your authorization server rejects `offline_access` as an unknown scope; include the server’s own refresh-token scope in **Scopes** instead.
404>
405> **resource** `string`
406>
407> Access-token audience of the gateway or proxy: an https URL or an AD FS relying-party identifier, sent as the RFC 8707 resource. Leave unset for Entra ID.
408>
409> > **More detail**
410> >
411> > Set this only for an IdP that implements RFC 8707 resource indicators. The app then sends `resource=<value>` on the authorization, token and refresh requests, so the access token the IdP issues is audience-restricted to the gateway or proxy rather than to the IdP's own APIs. Use it with `bearerTokenType: access_token`; in `id_token` mode the ID token's audience is always `clientId`. Ignored with the OS-broker sign-in flow (the sign-in flow key set to `broker`), which is Entra-only.
412> >
413> > **Microsoft Entra ID:** leave unset — the v2.0 endpoint rejects `resource`; request the API scope in `scopes` instead (`api://<gateway-app-id>/.default`). **AD FS:** enter one of the relying-party trust's identifiers, spelled as it is registered there. A value with no scheme (a host name with or without a port or path, a single name, or a GUID; `name:digits` also reads as a host name with a port) is sent as `https://<value>`; an identifier with a scheme of its own (`urn:…`, or an organization-defined one such as `VENDOR:URI:…`) is sent exactly as written. A trust whose only identifier is a bare name or GUID will not match, because those are sent as `https://<value>`: add an `https://…` or `urn:…` identifier to the trust and enter that one here. With any other identity provider, use an absolute URI without a fragment (RFC 8707 — the IdP rejects one as `invalid_target`). Changing it signs users in again.
414>
415> **redirectPort** `integer`
416>
417> Fixed loopback port for the sign-in redirect. Leave unset to use a free port each time.
418>
419> **redirectHost** `enum`
420>
421> Use localhost only if your IdP’s registered redirect URI specifies it.
422>
423> One of: `127.0.0.1`, `localhost`
424>
425> **additionalRedirectReferrerHosts** `string`
426>
427> Space-separated hostnames also accepted as the referrer of the sign-in callback. Only needed when the IdP completes sign-in from a different host.
428>
429> > **More detail**
430> >
431> > Only needed when the IdP completes sign-in from a host other than the authorization URL’s. When a callback is rejected for a referrer mismatch, the rejected host is named in the app log — add that hostname here.
241432 
242> **inferenceStreamIdleTimeoutSec details**
433***
434 
435#### `inferenceStreamIdleTimeoutSec`
436 
437integerRange: 300–1,800Since 1.44121.1
438 
439**Stream idle timeout.** Extra seconds to wait for model output on a streaming response that is sending only keep-alive pings. Gateway provider only. Default 300.
440 
441> **More detail**
243442>
244443> Raises how long Cowork, Chat and Code sessions wait for the next model event on an open streaming response (Claude Code's `CLAUDE_STREAM_IDLE_TIMEOUT_MS`). It only helps when the gateway writes SSE keep-alive `ping` events (or `:` comment lines) into the response while the upstream model is silent — for example a LiteLLM proxy with keep-alive pings enabled in front of Amazon Bedrock. With pings arriving, Claude Code accepts at least about five minutes of keep-alives and then waits this many seconds more for real model output before abandoning the request. Gateway provider only; the other providers keep Claude Code's defaults.
245444>
246445> A response on which nothing at all arrives — no pings — still fails after about 5 minutes regardless of this key, because at the device a silent connection cannot be told apart from a dead one. If long generations fail behind a gateway that does not send pings, configure the gateway to send them rather than raising this value. A common case is automatic compaction, in which a session sends its whole conversation in one streaming request and waits for a long summary; when that request fails, the error reads `Prompt is too long · automatic compaction failed:` followed by the cause. While this key is set, the app's value takes precedence over `CLAUDE_STREAM_IDLE_TIMEOUT_MS` in Claude Code's own managed settings for sessions the app starts; when it is unset, that setting still applies. Values outside 300–1800 are rejected at parse time (the error is listed in the diagnostics report) and the default applies.
247446 
447***
448 
248449To send additional HTTP headers on every inference request (tenant routing, org IDs, and similar), set [`inferenceCustomHeaders`](/docs/third-party/claude-desktop/configuration#inferencecustomheaders). It applies to all providers, not just gateways.
249450 
250451### Single sign-on configuration keys
from line 478
277478 
278479> [!WARNING]
279480>
280> `inferenceGatewayOidc` is **one MDM key whose value is a JSON string** — not separate keys like `inferenceGatewayOidc.clientId`. See [how object-typed keys are encoded](/docs/third-party/claude-desktop/configuration.md#value-types). The in-app **Export** produces the correct format automatically.
481> `inferenceGatewayOidc` is **one MDM key whose value is a JSON string** — not separate keys like `inferenceGatewayOidc.clientId`. See [how object-typed keys are encoded](/docs/third-party/claude-desktop/configuration-format.md#value-types). The in-app **Export** produces the correct format automatically.
281482 
282483In a macOS `.mobileconfig` payload (Okta example):
283484 

third-party/claude-desktop/mantle Changed · +126 / -14 lines

#### `inferenceBedrockRegion` #### `inferenceBedrockBaseUrl` #### `inferenceBedrockServiceTier` #### `inferenceBedrockBearerToken` #### `inferenceBedrockSsoStartUrl` #### `inferenceBedrockSsoRegion` #### `inferenceBedrockSsoAccountId` #### `inferenceBedrockSsoRoleName` #### `inferenceBedrockProfile` #### `inferenceBedrockAwsDir` #### `inferenceBedrockAwsCliPath`

from line 45
4545 
4646Mantle reuses the `inferenceBedrock*` key names. Only `inferenceBedrockRegion`, `inferenceBedrockBearerToken`, and `inferenceBedrockBaseUrl` apply; the other keys below (`inferenceBedrockProfile`, `inferenceBedrockSso*`, `inferenceBedrockAwsDir`, `inferenceBedrockAwsCliPath`, `inferenceBedrockServiceTier`) are ignored for this provider.
4747 
48| Setting | Type | Availability | Default | Description |
49| - | - | - | - | - |
50| AWS region `inferenceBedrockRegion` | `string` | MDM + Bootstrap Added in 1.2581.0 | — | AWS region for the Bedrock runtime endpoint. |
51| Bedrock base URL `inferenceBedrockBaseUrl` | `string` | MDM + Bootstrap Added in 1.2581.0 | — | For VPC endpoints or gateway proxies. Host origin only. |
52| Bedrock service tier `inferenceBedrockServiceTier` | `enum` | MDM + Bootstrap Added in 1.5186.0 | — | Sent as the X-Amzn-Bedrock-Service-Tier header. Leave unset for on-demand. One of: `flex`, `priority`. |
53| AWS bearer token `inferenceBedrockBearerToken` | `string` | MDM + Bootstrap Added in 1.2581.0 | — | Static bearer token for inference. For providers that support profile or helper-script credentials, prefer those. |
54| AWS SSO start URL `inferenceBedrockSsoStartUrl` | `string` | MDM + Bootstrap Added in 1.6259.0 | — | Enables in-app AWS sign-in (no AWS CLI needed). Set with the three SSO fields below. |
55| AWS SSO region `inferenceBedrockSsoRegion` | `string` | MDM + Bootstrap Added in 1.6259.0 | — | IAM Identity Center home region. |
56| AWS SSO account ID `inferenceBedrockSsoAccountId` | `string` | MDM + Bootstrap Added in 1.6259.0 | — | 12-digit AWS account ID assigned to users in IAM Identity Center. |
57| AWS SSO role name `inferenceBedrockSsoRoleName` | `string` | MDM + Bootstrap Added in 1.6259.0 | — | IAM Identity Center permission-set name granting bedrock:InvokeModel\* on the account above. |
58| AWS profile name `inferenceBedrockProfile` | `string` | MDM + Bootstrap Added in 1.2581.0 | — | AWS named profile to use for Bedrock inference credentials. |
59| AWS config directory `inferenceBedrockAwsDir` | `string` | MDM + Bootstrap Added in 1.2581.0 | — | Folder with AWS config/credentials. Defaults to \~/.aws when no bearer token is set. |
60| AWS CLI path `inferenceBedrockAwsCliPath` | `string` | MDM + Bootstrap Added in 1.13576.0 | — | Absolute path to the aws executable. Leave unset to find it on PATH. |
48[Entry labels](/docs/third-party/claude-desktop/configuration.md#entry-labels) says what each label means.
6149 
62> **inferenceBedrockServiceTier details**
50#### `inferenceBedrockRegion`
51 
52stringSince 1.2581.0
53 
54**AWS region.** AWS region for the Bedrock runtime endpoint.
55 
56***
57 
58#### `inferenceBedrockBaseUrl`
59 
60string
61 
62Consent required (A value that a bootstrap server or a self-hosted session host delivers applies only after the user approves it, unless machine-scoped device management set that server's address. For a bootstrap server, the trustBootstrapDelivery key overrides that default. A value set in an MDM profile, the local configuration file or the Enterprise Admin Console needs no approval.)
63 
64Origin-pinned (A URL that a bootstrap server delivers must share the origin of bootstrapUrl, or Claude Desktop drops it. The limit is lifted when bootstrapOidc is set, and it does not apply to a value set in an MDM profile, the local configuration file or the Enterprise Admin Console.)
65 
66Since 1.2581.0
67 
68**Bedrock base URL.** For VPC endpoints or gateway proxies. Host origin only.
69 
70***
71 
72#### `inferenceBedrockServiceTier`
73 
74enumSince 1.5186.0
75 
76**Bedrock service tier.** Sent as the X-Amzn-Bedrock-Service-Tier header. Leave unset for on-demand.
77 
78One of: `flex`, `priority`
79 
80> **More detail**
6381>
6482> Tier availability varies by model and region. Reserved capacity uses a provisioned-throughput ARN as the model ID instead of this setting. Older bundled Claude Code CLI versions ignore this key.
83 
84***
85 
86#### `inferenceBedrockBearerToken`
87 
88stringSince 1.2581.0
89 
90**AWS bearer token.** Static bearer token for inference. For providers that support profile or helper-script credentials, prefer those.
91 
92***
93 
94#### `inferenceBedrockSsoStartUrl`
95 
96string
97 
98Consent required (A value that a bootstrap server or a self-hosted session host delivers applies only after the user approves it, unless machine-scoped device management set that server's address. For a bootstrap server, the trustBootstrapDelivery key overrides that default. A value set in an MDM profile, the local configuration file or the Enterprise Admin Console needs no approval.)
99 
100Since 1.6259.0
101 
102**AWS SSO start URL.** Enables in-app AWS sign-in (no AWS CLI needed). Set with the three SSO fields below.
103 
104***
105 
106#### `inferenceBedrockSsoRegion`
107 
108string
109 
110Consent required (A value that a bootstrap server or a self-hosted session host delivers applies only after the user approves it, unless machine-scoped device management set that server's address. For a bootstrap server, the trustBootstrapDelivery key overrides that default. A value set in an MDM profile, the local configuration file or the Enterprise Admin Console needs no approval.)
111 
112Since 1.6259.0
113 
114**AWS SSO region.** IAM Identity Center home region.
115 
116***
117 
118#### `inferenceBedrockSsoAccountId`
119 
120string
121 
122Consent required (A value that a bootstrap server or a self-hosted session host delivers applies only after the user approves it, unless machine-scoped device management set that server's address. For a bootstrap server, the trustBootstrapDelivery key overrides that default. A value set in an MDM profile, the local configuration file or the Enterprise Admin Console needs no approval.)
123 
124Since 1.6259.0
125 
126**AWS SSO account ID.** 12-digit AWS account ID assigned to users in IAM Identity Center.
127 
128***
129 
130#### `inferenceBedrockSsoRoleName`
131 
132string
133 
134Consent required (A value that a bootstrap server or a self-hosted session host delivers applies only after the user approves it, unless machine-scoped device management set that server's address. For a bootstrap server, the trustBootstrapDelivery key overrides that default. A value set in an MDM profile, the local configuration file or the Enterprise Admin Console needs no approval.)
135 
136Since 1.6259.0
137 
138**AWS SSO role name.** IAM Identity Center permission-set name granting bedrock:InvokeModel\* on the account above.
139 
140***
141 
142#### `inferenceBedrockProfile`
143 
144string
145 
146Consent required (A value that a bootstrap server or a self-hosted session host delivers applies only after the user approves it, unless machine-scoped device management set that server's address. For a bootstrap server, the trustBootstrapDelivery key overrides that default. A value set in an MDM profile, the local configuration file or the Enterprise Admin Console needs no approval.)
147 
148Since 1.2581.0
149 
150**AWS profile name.** AWS named profile to use for Bedrock inference credentials.
151 
152***
153 
154#### `inferenceBedrockAwsDir`
155 
156string
157 
158Consent required (A value that a bootstrap server or a self-hosted session host delivers applies only after the user approves it, unless machine-scoped device management set that server's address. For a bootstrap server, the trustBootstrapDelivery key overrides that default. A value set in an MDM profile, the local configuration file or the Enterprise Admin Console needs no approval.)
159 
160Since 1.2581.0
161 
162**AWS config directory.** Folder with AWS config/credentials. Defaults to \~/.aws when no bearer token is set.
163 
164***
165 
166#### `inferenceBedrockAwsCliPath`
167 
168string
169 
170Consent required (A value that a bootstrap server or a self-hosted session host delivers applies only after the user approves it, unless machine-scoped device management set that server's address. For a bootstrap server, the trustBootstrapDelivery key overrides that default. A value set in an MDM profile, the local configuration file or the Enterprise Admin Console needs no approval.)
171 
172Since 1.13576.0
173 
174**AWS CLI path.** Absolute path to the aws executable. Leave unset to find it on PATH.
175 
176***
65177 
66178You must also set `inferenceModels`. As with the standard Amazon Bedrock provider, server-side Web Search is not supported. See the [Configuration reference](/docs/third-party/claude-desktop/configuration.md#inferencemodels).
67179 

third-party/claude-desktop/vertex Changed · +174 / -29 lines

#### `inferenceVertexProjectId` #### `inferenceVertexRegion` #### `inferenceVertexBaseUrl` #### `inferenceVertexOAuthClientId` #### `inferenceVertexOAuthClientSecret` #### `inferenceVertexOAuthScopes` #### `inferenceVertexOAuthLoginHint` #### `inferenceVertexWorkforceAudience` #### `inferenceVertexWorkforceUserProject` #### `inferenceVertexWorkforceAuthFlow` #### `inferenceVertexWorkforceOidc` #### `inferenceVertexCredentialsFile`

from line 253
253253 
254254The region can be a single region such as `us-east5`, the `eu` or `us` multi-region, or `global`. The app routes inference to a different endpoint host for multi-regions and `global`; if you allowlist egress by hostname, see the [inference provider egress hosts](/docs/third-party/claude-desktop/telemetry.md#inference-provider).
255255 
256| Setting | Type | Availability | Default | Description |
257| - | - | - | - | - |
258| GCP project ID `inferenceVertexProjectId` | `string` | MDM + Bootstrap Added in 1.2581.0 | — | Google Cloud project ID for Vertex AI inference. |
259| GCP region `inferenceVertexRegion` | `string` | MDM + Bootstrap Added in 1.2581.0 | — | GCP region where your Vertex AI Claude models are deployed. |
260| Vertex AI base URL `inferenceVertexBaseUrl` | `string` | MDM + Bootstrap Added in 1.2581.0 | — | PSC endpoint, if using one. |
261| Vertex OAuth client ID `inferenceVertexOAuthClientId` | `string` | MDM + Bootstrap Added in 1.2581.0 | — | Desktop-app OAuth client ID. Enables Sign in with Google instead of a credentials file. |
262| Vertex OAuth client secret `inferenceVertexOAuthClientSecret` | `string` | MDM + Bootstrap Added in 1.2581.0 | — | Secret for the Desktop-app OAuth client above. Google classifies installed-app client secrets as non-confidential, so this may be set from hosted config. |
263| Vertex OAuth scopes `inferenceVertexOAuthScopes` | `string` | MDM + Bootstrap Added in 1.2581.0 | — | Override the Google OAuth scopes (space-separated). Leave blank for the default. |
264| Vertex OAuth login hint `inferenceVertexOAuthLoginHint` | `string` | MDM + Bootstrap Added in 1.12603.0 | — | Pre-fill Google's account chooser and forward to your federated IdP. \{username} expands to the OS login name. |
265| Workforce Identity audience `inferenceVertexWorkforceAudience` | `string` | MDM + Bootstrap Added in 1.10628.0 | — | Workforce-pool provider audience. When set, sign-in uses your own IdP plus a GCP STS exchange instead of a Google identity. |
266| Workforce Identity billing project `inferenceVertexWorkforceUserProject` | `string` | MDM + Bootstrap Added in 1.10628.0 | — | GCP project for STS billing and quota. Defaults to the Vertex project ID above. |
267| Workforce Identity sign-in flow `inferenceVertexWorkforceAuthFlow` | `enum` | MDM + Bootstrap Added in 1.25927.0 | — | How the IdP sign-in runs: system browser (default) or the OS Microsoft Entra broker. One of: `browser`, `broker`. |
268| Workforce Identity IdP (OIDC) `inferenceVertexWorkforceOidc` | `object` | MDM + Bootstrap Added in 1.10628.0 | — | Your organization’s OIDC IdP. The app runs an authorization-code-with-PKCE flow against this issuer and exchanges the returned ID token at GCP STS. |
269| GCP credentials file path `inferenceVertexCredentialsFile` | `string` | MDM + Bootstrap Added in 1.2581.0 | — | Absolute path to service-account JSON. Leave blank to fall back to ADC. |
256[Entry labels](/docs/third-party/claude-desktop/configuration.md#entry-labels) says what each label means.
270257 
271> **inferenceVertexWorkforceAuthFlow details**
258#### `inferenceVertexProjectId`
259 
260string
261 
262Consent required (A value that a bootstrap server or a self-hosted session host delivers applies only after the user approves it, unless machine-scoped device management set that server's address. For a bootstrap server, the trustBootstrapDelivery key overrides that default. A value set in an MDM profile, the local configuration file or the Enterprise Admin Console needs no approval.)
263 
264Since 1.2581.0
265 
266**GCP project ID.** Google Cloud project ID for Vertex AI inference.
267 
268***
269 
270#### `inferenceVertexRegion`
271 
272stringSince 1.2581.0
273 
274**GCP region.** GCP region where your Vertex AI Claude models are deployed.
275 
276***
277 
278#### `inferenceVertexBaseUrl`
279 
280string
281 
282Consent required (A value that a bootstrap server or a self-hosted session host delivers applies only after the user approves it, unless machine-scoped device management set that server's address. For a bootstrap server, the trustBootstrapDelivery key overrides that default. A value set in an MDM profile, the local configuration file or the Enterprise Admin Console needs no approval.)
283 
284Origin-pinned (A URL that a bootstrap server delivers must share the origin of bootstrapUrl, or Claude Desktop drops it. The limit is lifted when bootstrapOidc is set, and it does not apply to a value set in an MDM profile, the local configuration file or the Enterprise Admin Console.)
285 
286Since 1.2581.0
287 
288**Vertex AI base URL.** PSC endpoint, if using one.
289 
290***
291 
292#### `inferenceVertexOAuthClientId`
293 
294string
295 
296Consent required (A value that a bootstrap server or a self-hosted session host delivers applies only after the user approves it, unless machine-scoped device management set that server's address. For a bootstrap server, the trustBootstrapDelivery key overrides that default. A value set in an MDM profile, the local configuration file or the Enterprise Admin Console needs no approval.)
297 
298Since 1.2581.0
299 
300**Vertex OAuth client ID.** Desktop-app OAuth client ID. Enables Sign in with Google instead of a credentials file.
301 
302***
303 
304#### `inferenceVertexOAuthClientSecret`
305 
306stringSince 1.2581.0
307 
308**Vertex OAuth client secret.** Secret for the Desktop-app OAuth client above. Google classifies installed-app client secrets as non-confidential, so this may be set from hosted config.
309 
310***
311 
312#### `inferenceVertexOAuthScopes`
313 
314stringSince 1.2581.0
315 
316**Vertex OAuth scopes.** Override the Google OAuth scopes (space-separated). Leave blank for the default.
317 
318***
319 
320#### `inferenceVertexOAuthLoginHint`
321 
322stringSince 1.12603.0
323 
324**Vertex OAuth login hint.** Pre-fill Google's account chooser and forward to your federated IdP. \{username} expands to the OS login name.
325 
326***
327 
328#### `inferenceVertexWorkforceAudience`
329 
330string
331 
332Consent required (A value that a bootstrap server or a self-hosted session host delivers applies only after the user approves it, unless machine-scoped device management set that server's address. For a bootstrap server, the trustBootstrapDelivery key overrides that default. A value set in an MDM profile, the local configuration file or the Enterprise Admin Console needs no approval.)
333 
334Since 1.10628.0
335 
336**Workforce Identity audience.** Workforce-pool provider audience. When set, sign-in uses your own IdP plus a GCP STS exchange instead of a Google identity.
337 
338***
339 
340#### `inferenceVertexWorkforceUserProject`
341 
342string
343 
344Consent required (A value that a bootstrap server or a self-hosted session host delivers applies only after the user approves it, unless machine-scoped device management set that server's address. For a bootstrap server, the trustBootstrapDelivery key overrides that default. A value set in an MDM profile, the local configuration file or the Enterprise Admin Console needs no approval.)
345 
346Since 1.10628.0
347 
348**Workforce Identity billing project.** GCP project for STS billing and quota. Defaults to the Vertex project ID above.
349 
350***
351 
352#### `inferenceVertexWorkforceAuthFlow`
353 
354enumSince 1.25927.0
355 
356**Workforce Identity sign-in flow.** How the IdP sign-in runs: system browser (default) or the OS Microsoft Entra broker.
357 
358One of: `browser`, `broker`
359 
360> **More detail**
272361>
273362> * **`browser`** (default) — opens the system browser for an authorization-code (PKCE) sign-in on a loopback redirect URI. See the **IdP setup** notes on `inferenceGatewayOidc` for redirect-URI registration; the same rules apply here.
274363> * **`broker`** — signs in through the OS identity broker (Web Account Manager on Windows, Company Portal on macOS). Requires the workforce-pool IdP to be **Microsoft Entra ID** — the `issuer` on `inferenceVertexWorkforceOidc` must be `https://login.microsoftonline.com/{tenant-id}/v2.0`. The broker satisfies Conditional Access policies that require a compliant/managed device or token protection, and needs no loopback redirect. The Entra app registration must include the broker redirect URIs `ms-appx-web://Microsoft.AAD.BrokerPlugin/{client-id}` (Windows) and `msauth.com.anthropic.claudefordesktop://auth` (macOS) under the **Mobile and desktop applications** platform. Not supported on Linux.
from line 364
275364>
276365> The GCP STS token-exchange step is unchanged in either flow; only how the Entra id\_token is acquired differs.
277366 
278> **inferenceVertexWorkforceOidc details**
367***
368 
369#### `inferenceVertexWorkforceOidc`
370 
371object
372 
373Consent required (A value that a bootstrap server or a self-hosted session host delivers applies only after the user approves it, unless machine-scoped device management set that server's address. For a bootstrap server, the trustBootstrapDelivery key overrides that default. A value set in an MDM profile, the local configuration file or the Enterprise Admin Console needs no approval.)
374 
375Since 1.10628.0
376 
377**Workforce Identity IdP (OIDC).** Your organization’s OIDC IdP. The app runs an authorization-code-with-PKCE flow against this issuer and exchanges the returned ID token at GCP STS.
378 
379> **Child attributes (9)**
279380>
280> | Field | Type | Default | Description |
281> | - | - | - | - |
282> | `clientId` | `string` | — | OAuth client ID of the desktop app registration at your identity provider (public client, PKCE). |
283> | `issuer` | `string` | — | HTTPS issuer with OIDC discovery. Set this, or set the authorization and token URLs instead. |
284> | `authorizationUrl` | `string` | — | HTTPS authorization endpoint. Used with the token URL when no issuer is set. |
285> | `tokenUrl` | `string` | — | HTTPS token endpoint. Used with the authorization URL when no issuer is set. |
286> | `scopes` | `string` | — | Space-separated scopes. Defaults to openid profile email offline\_access. |
287> | `redirectPort` | `integer` | — | Fixed loopback port for the sign-in redirect. Leave unset to use a free port each time. |
288> | `redirectHost` | `enum` | — | Use localhost only if your IdP’s registered redirect URI specifies it. One of: `127.0.0.1`, `localhost`. |
289> | `omitOfflineAccess` | `boolean` | — | Only enable if your IdP rejects the offline\_access scope on this client. Without it the app prompts for sign-in each time the token expires. |
290> | `additionalRedirectReferrerHosts` | `string` | — | Space-separated hostnames also accepted as the referrer of the sign-in callback. Only needed when the IdP completes sign-in from a different host. |
381> **clientId** `string` *required*
382>
383> OAuth client ID of the desktop app registration at your identity provider (public client, PKCE).
384>
385> **issuer** `string`
386>
387> HTTPS issuer with OIDC discovery. Set this, or set the authorization and token URLs instead.
388>
389> **authorizationUrl** `string`
390>
391> HTTPS authorization endpoint. Used with the token URL when no issuer is set.
392>
393> **tokenUrl** `string`
394>
395> HTTPS token endpoint. Used with the authorization URL when no issuer is set.
396>
397> **scopes** `string`
398>
399> Space-separated scopes. Defaults to openid profile email offline\_access.
400>
401> **redirectPort** `integer`
402>
403> Fixed loopback port for the sign-in redirect. Leave unset to use a free port each time.
404>
405> **redirectHost** `enum`
406>
407> Use localhost only if your IdP’s registered redirect URI specifies it.
408>
409> One of: `127.0.0.1`, `localhost`
410>
411> **omitOfflineAccess** `boolean`
412>
413> Only enable if your IdP rejects the offline\_access scope on this client. Without it the app prompts for sign-in each time the token expires.
414>
415> **additionalRedirectReferrerHosts** `string`
416>
417> Space-separated hostnames also accepted as the referrer of the sign-in callback. Only needed when the IdP completes sign-in from a different host.
418>
419> > **More detail**
420> >
421> > Only needed when the IdP completes sign-in from a host other than the authorization URL’s. When a callback is rejected for a referrer mismatch, the rejected host is named in the app log — add that hostname here.
422 
423***
424 
425#### `inferenceVertexCredentialsFile`
426 
427string
428 
429Consent required (A value that a bootstrap server or a self-hosted session host delivers applies only after the user approves it, unless machine-scoped device management set that server's address. For a bootstrap server, the trustBootstrapDelivery key overrides that default. A value set in an MDM profile, the local configuration file or the Enterprise Admin Console needs no approval.)
430 
431Since 1.2581.0
432 
433**GCP credentials file path.** Absolute path to service-account JSON. Leave blank to fall back to ADC.
434 
435***
291436 
292437If none of `inferenceVertexCredentialsFile`, the OAuth client keys, the Workforce Identity keys, or `inferenceCredentialHelper` is set, the Google client library falls back to the standard Application Default Credentials search path on the device (`~/.config/gcloud/application_default_credentials.json`, then the environment's metadata server).
293438 

cowork/hipaa-setup Changed · +1 / -1 lines

from line 97
9797"otlpContentCapture"="[]"
9898```
9999 
100The sample writes every value as a string, including `false` and `[]`. [Value types](/docs/third-party/claude-desktop/configuration.md#value-types) lists the other encodings Claude Desktop accepts.
100The sample writes every value as a string, including `false` and `[]`. [Value types](/docs/third-party/claude-desktop/configuration-format.md#value-types) lists the other encodings Claude Desktop accepts.
101101 
102102> [!NOTE]
103103>

cowork/monitoring Changed · +1 / -1 lines

from line 40
4040 
4141Events can carry user prompt text, model response text, and tool inputs in addition to metadata. You set which of these the events carry with the `otlpContentCapture` managed configuration key on each user's device.
4242 
43To set the key, deploy it with your device management tool to the [managed configuration location for each operating system](/docs/third-party/claude-desktop/configuration.md#how-keys-are-read). To export metadata only, set `otlpContentCapture` to an empty list, written as the two characters `[]`. Claude Desktop reads an empty string as if the key weren't set. The key takes effect when Claude Desktop restarts.
43To set the key, deploy it with your device management tool to the [managed configuration location for each operating system](/docs/third-party/claude-desktop/configuration-format.md#how-keys-are-read). To export metadata only, set `otlpContentCapture` to an empty list, written as the two characters `[]`. Claude Desktop reads an empty string as if the key weren't set. The key takes effect when Claude Desktop restarts.
4444 
4545The table shows what events carry on current versions of Claude Desktop, for a Cowork session that runs on the user's computer.
4646 

third-party/claude-desktop/admin-console Changed · +1 / -1 lines

from line 525
525525* The [Claude API](/docs/third-party/claude-desktop/claude-api.md) is not available as the inference provider with the admin console.
526526* If a device can't reach `api.anthropic.com` at launch, the app opens with a **Configuration sync issue** warning and can't connect to your inference provider until it downloads the configuration. It keeps retrying in the background and loads the configuration when a retry succeeds, without a relaunch. Quitting and reopening the app retries immediately. An app that is already running keeps working if the connection to Anthropic drops.
527527* Bootstrap keys and settings that only make sense on the device, such as disabling claude.ai sign-in, are not available in the console.
528* The console has no field for [`modelCatalogEnabled`](/docs/third-party/claude-desktop/configuration#modelcatalogenabled), [`modelCatalogUrl`](/docs/third-party/claude-desktop/configuration#modelcatalogurl), or [`deploymentDisplaySubtitle`](/docs/third-party/claude-desktop/configuration#deploymentdisplaysubtitle). An app managed from the console never fetches the model catalog, so it doesn't need the two catalog keys.
528* The console can't hold [`modelCatalogEnabled`](/docs/third-party/claude-desktop/configuration#modelcatalogenabled), [`modelCatalogUrl`](/docs/third-party/claude-desktop/configuration#modelcatalogurl), or [`deploymentDisplaySubtitle`](/docs/third-party/claude-desktop/configuration#deploymentdisplaysubtitle). An app managed from the console never fetches the model catalog, so it doesn't need the two catalog keys.
529529 

third-party/claude-desktop/browser Changed · +1 / -1 lines

from line 63
6363 
6464If [`coworkEgressAllowedHosts`](/docs/third-party/claude-desktop/configuration#coworkegressallowedhosts) lists specific hosts, Claude can open only sites on that list in the built-in browser, even when the browser's own site lists allow more.
6565 
66The example is plain JSON, which is the form a [bootstrap server](/docs/third-party/claude-desktop/bootstrap.md) response and the Linux managed file use. For a macOS profile or the Windows registry, encode the same values as the [Value types](/docs/third-party/claude-desktop/configuration.md#value-types) section describes.
66The example is plain JSON, which is the form a [bootstrap server](/docs/third-party/claude-desktop/bootstrap.md) response and the Linux managed file use. For a macOS profile or the Windows registry, encode the same values as the [Value types](/docs/third-party/claude-desktop/configuration-format.md#value-types) section describes.
6767 
6868### Manage the built-in browser from the Enterprise Admin Console
6969 

third-party/claude-desktop/credential-helper Changed · +1 / -1 lines

from line 36
3636}
3737```
3838 
39In a macOS configuration profile or the Windows registry, write the array as a JSON string, as with the other [array-typed keys](/docs/third-party/claude-desktop/configuration.md#value-types). A [bootstrap server](/docs/third-party/claude-desktop/bootstrap.md) can deliver `inferenceCredentialHelperArgs` too, under the same [user-consent rule](/docs/third-party/claude-desktop/bootstrap.md#keys-that-require-user-consent) as the helper path. In the nested response format ([`bootstrap-config-v2`](/docs/third-party/claude-desktop/bootstrap#response-schema)), set `args` next to `command` in `inference.credential`.
39In a macOS configuration profile or the Windows registry, write the array as a JSON string, as with the other [array-typed keys](/docs/third-party/claude-desktop/configuration-format.md#value-types). A [bootstrap server](/docs/third-party/claude-desktop/bootstrap.md) can deliver `inferenceCredentialHelperArgs` too, under the same [user-consent rule](/docs/third-party/claude-desktop/bootstrap.md#keys-that-require-user-consent) as the helper path. In the nested response format ([`bootstrap-config-v2`](/docs/third-party/claude-desktop/bootstrap#response-schema)), set `args` next to `command` in `inference.credential`.
4040 
4141On Windows, a `.cmd` or `.bat` helper receives each argument wrapped in double quotes, so read the values with `%~1`, `%~2`, and so on to remove the quotes. A `.ps1` helper, a `.exe` helper, and helpers on macOS and Linux receive each value as written.
4242 

third-party/claude-desktop/extensions Changed · +1 / -1 lines

from line 201
201201 
202202The Plugins section of the in-app configuration window, with the Add marketplace menu and the organization plugins folder.
203203 
204To write the configuration yourself instead, add the repository to the [`allowedPluginMarketplaces`](/docs/third-party/claude-desktop/configuration#allowedpluginmarketplaces) configuration key. The key is read from an MDM profile, local configuration, or the [bootstrap server](/docs/third-party/claude-desktop/bootstrap.md) response. In an MDM profile the value is a JSON array encoded as a string (see [Value types](/docs/third-party/claude-desktop/configuration.md#value-types)). In a local configuration file or the bootstrap response the value is a native JSON array.
204To write the configuration yourself instead, add the repository to the [`allowedPluginMarketplaces`](/docs/third-party/claude-desktop/configuration#allowedpluginmarketplaces) configuration key. The key is read from an MDM profile, local configuration, or the [bootstrap server](/docs/third-party/claude-desktop/bootstrap.md) response. In an MDM profile the value is a JSON array encoded as a string (see [Value types](/docs/third-party/claude-desktop/configuration-format.md#value-types)). In a local configuration file or the bootstrap response the value is a native JSON array.
205205 
206206```xml .mobileconfig (macOS) theme={null}
207207<key>allowedPluginMarketplaces</key>

third-party/claude-desktop/installation Changed · +1 / -1 lines

from line 67
6767 
6868Choose a bootstrap server when your organization doesn't use MDM, or when per-user credentials or frequently changing settings would make per-group profiles unwieldy. The tradeoff is that you operate the endpoint.
6969 
70A device whose MDM profile or registry policy sets any key other than the [app-behavior keys](/docs/third-party/claude-desktop/mdm.md#update-keys-and-managed-precedence) uses that configuration, except as described under [Devices with a managed profile](/docs/third-party/claude-desktop/admin-console.md#devices-with-a-managed-profile). When a bootstrap response is in effect, it replaces MDM-delivered values wholesale, and a few device-level keys are only available via MDM (see the Availability column in the [configuration reference](/docs/third-party/claude-desktop/configuration.md)).
70A device whose MDM profile or registry policy sets any key other than the [app-behavior keys](/docs/third-party/claude-desktop/mdm.md#update-keys-and-managed-precedence) uses that configuration, except as described under [Devices with a managed profile](/docs/third-party/claude-desktop/admin-console.md#devices-with-a-managed-profile). When a bootstrap response is in effect, it replaces MDM-delivered values wholesale, and a few device-level keys are only available via MDM (the keys labeled **MDM only** in the [configuration reference](/docs/third-party/claude-desktop/configuration.md)).
7171 
7272Pick your path:
7373 

third-party/claude-desktop/mdm Changed · +1 / -1 lines

from line 135
135135 
136136A small group of **app-behavior keys** is treated specially, so you can set an update policy, a restart window, or a network proxy from MDM without managing the whole configuration:
137137 
138* The update keys `disableAutoUpdates`, `autoUpdaterEnforcementHours`, `updateViaUpdatesHost`, and [`releaseChannel`](/docs/third-party/claude-desktop/configuration#releasechannel).
138* The update keys `disableAutoUpdates`, `autoUpdaterEnforcementHours`, `installedUpdateEnforcementEnabled`, `installedUpdateEnforcementHours`, `updateViaUpdatesHost`, and [`releaseChannel`](/docs/third-party/claude-desktop/configuration#releasechannel).
139139* The configuration lifecycle keys [`relaunchEnforcementHours`](/docs/third-party/claude-desktop/configuration#relaunchenforcementhours) and [`configRecheckIntervalMinutes`](/docs/third-party/claude-desktop/configuration#configrecheckintervalminutes), which MDM can set from version 1.46388.1.
140140* The network proxy keys `egressProxyUrl` and `egressProxyPacUrl`. See [Network proxy](/docs/third-party/claude-desktop/network-proxy.md#pin-a-proxy-from-managed-configuration).
141141 

third-party/claude-desktop/models Changed · +1 / -1 lines

from line 72
7272 
7373In that session, the user can switch to Claude Opus 5, which starts at its recommended high effort, or raise Claude Sonnet 5 to high. The session keeps either choice. The user's next new conversation or session opens on Claude Sonnet 5 at medium effort again.
7474 
75The example is plain JSON, which is the form a [bootstrap server](/docs/third-party/claude-desktop/bootstrap.md) response and the Linux managed file use. For a macOS profile or the Windows registry, encode the same values as the [Value types](/docs/third-party/claude-desktop/configuration.md#value-types) section describes.
75The example is plain JSON, which is the form a [bootstrap server](/docs/third-party/claude-desktop/bootstrap.md) response and the Linux managed file use. For a macOS profile or the Windows registry, encode the same values as the [Value types](/docs/third-party/claude-desktop/configuration-format.md#value-types) section describes.
7676 

third-party/claude-desktop/network-proxy Changed · +1 / -1 lines

from line 62
6262}
6363```
6464 
65In a macOS configuration profile the same key is a `<key>egressProxyUrl</key><string>http://proxy.example.com:8080</string>` pair in the `com.anthropic.claudefordesktop` payload, and on Windows it is a `REG_SZ` value named `egressProxyUrl` under `HKLM\SOFTWARE\Policies\Claude`. See [Value types](/docs/third-party/claude-desktop/configuration.md#value-types) and [Deploy with MDM](/docs/third-party/claude-desktop/mdm.md) for the surrounding profile and registry structure.
65In a macOS configuration profile the same key is a `<key>egressProxyUrl</key><string>http://proxy.example.com:8080</string>` pair in the `com.anthropic.claudefordesktop` payload, and on Windows it is a `REG_SZ` value named `egressProxyUrl` under `HKLM\SOFTWARE\Policies\Claude`. See [Value types](/docs/third-party/claude-desktop/configuration-format.md#value-types) and [Deploy with MDM](/docs/third-party/claude-desktop/mdm.md) for the surrounding profile and registry structure.
6666 
6767Three behaviors to plan for:
6868 

third-party/claude-desktop/ssh-remote-sessions Changed · +1 / -1 lines

from line 140
140140}
141141```
142142 
143In a `.mobileconfig` or registry policy, write the array as a JSON string as described under [Value types](/docs/third-party/claude-desktop/configuration.md#value-types). In a [bootstrap](/docs/third-party/claude-desktop/bootstrap.md) response, the key sits inside the `codeSurface` object.
143In a `.mobileconfig` or registry policy, write the array as a JSON string as described under [Value types](/docs/third-party/claude-desktop/configuration-format.md#value-types). In a [bootstrap](/docs/third-party/claude-desktop/bootstrap.md) response, the key sits inside the `codeSurface` object.
144144 
145145### Interaction with Claude Code managed settings on the device
146146 

third-party/claude-desktop/telemetry Changed · +1 / -1 lines

from line 74
7474 
7575The receiver must implement the OpenTelemetry protocol (OTLP) over HTTP in both its protobuf and JSON encodings, as an OpenTelemetry Collector does by default. If your logging or SIEM platform accepts only its own HTTP ingestion format, run an OpenTelemetry Collector that receives OTLP and forwards to that platform, and set `otlpEndpoint` to the collector's address. Each device opens its own connection to the collector, so the collector must present a TLS certificate the operating system trusts. See [TLS-intercepting proxies](/docs/third-party/claude-desktop/network-proxy.md#tls-intercepting-proxies) if a TLS-intercepting proxy sits in between.
7676 
77[`otlpHeaders`](/docs/third-party/claude-desktop/configuration#otlpheaders) is a JSON object that maps each header name to its value, for example `{"Authorization":"Bearer <token>","X-Tenant":"agency"}`. As with the other object-typed keys described under [Value types](/docs/third-party/claude-desktop/configuration.md#value-types), write it as a JSON string.
77[`otlpHeaders`](/docs/third-party/claude-desktop/configuration#otlpheaders) is a JSON object that maps each header name to its value, for example `{"Authorization":"Bearer <token>","X-Tenant":"agency"}`. As with the other object-typed keys described under [Value types](/docs/third-party/claude-desktop/configuration-format.md#value-types), write it as a JSON string.
7878 
7979The app reads both keys at launch, so users must restart it after a change. If the collector refuses requests or cannot be reached, the app keeps working, shows no error, and drops the affected telemetry batches. Check the collector's own request logs to confirm data is arriving.
8080 
Feedback