{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "$id": "https://claude.com/docs/cowork/3p/schemas/bootstrap-config-v1.schema.json",
  "$ref": "#/definitions/BootstrapConfig",
  "definitions": {
    "BootstrapConfig": {
      "type": "object",
      "properties": {
        "$schemaVersion": {
          "description": "Marks the flat format. Optional: a response with no cluster key is read as flat regardless; set it to state the format explicitly.",
          "type": "number",
          "const": 1
        },
        "expiresAt": {
          "description": "Unix epoch (seconds or milliseconds) after which the client should re-fetch this document. Optional; when absent the client uses its default refresh interval.",
          "type": "number",
          "exclusiveMinimum": 0
        },
        "inferenceProvider": {
          "type": "string",
          "enum": [
            "gateway",
            "anthropic",
            "bedrock",
            "mantle",
            "vertex",
            "foundry"
          ],
          "title": "Inference provider",
          "description": "Selects the inference backend. Setting this key activates third-party mode.",
          "x-flatKey": "inferenceProvider",
          "x-readers": [
            "desktop",
            "m365"
          ],
          "x-availableInVersion": "1.2581.0",
          "x-availability": "both",
          "x-deprecated": false,
          "x-beta": false,
          "x-consentRequired": false,
          "x-originPinned": false,
          "x-selfHosted": {
            "execution": "none",
            "why": "Part of the device's own route to the model, and a session host's route is its operator's to set"
          },
          "x-valueAvailableInVersionOverride": [
            {
              "value": "mantle",
              "availableInVersion": "1.13576.0"
            }
          ]
        },
        "inferenceCredentialKind": {
          "type": "string",
          "enum": [
            "static",
            "helper-script",
            "interactive",
            "vendor-profile",
            "workforce",
            "external-idp",
            "oauth"
          ],
          "title": "Credential kind",
          "description": "Selects the credential source. When set, only that source is used (no fallback).",
          "x-flatKey": "inferenceCredentialKind",
          "x-readers": [
            "desktop",
            "m365"
          ],
          "x-availableInVersion": "1.8555.0",
          "x-availability": "both",
          "x-deprecated": false,
          "x-beta": false,
          "x-consentRequired": false,
          "x-originPinned": false,
          "x-deprecations": [
            {
              "path": "inferenceCredentialKind: \"oauth\" (Vertex AI)",
              "use": "\"interactive\" — the same Google sign-in under its new name (in hosted or nested documents, switch once every desktop is on a release that knows the Vertex \"interactive\" kind)",
              "effect": "\"oauth\" will no longer be a Vertex AI credential kind: the value will be reported as invalid and ignored — the device will then derive the kind from the credential fields present (Google sign-in when an OAuth client id is set), and the hosted editor will refuse to save the configuration until the kind is changed",
              "warnFrom": "2026-09-10",
              "supportEnds": "2026-10-07"
            },
            {
              "path": "inferenceCredentialKind: \"interactive\" together with inferenceVertexWorkforceAudience (Vertex AI)",
              "use": "\"workforce\" — or remove inferenceVertexWorkforceAudience if Google sign-in (\"interactive\") is what is meant",
              "effect": "the audience will no longer imply Workforce Identity: the kind will stay \"interactive\" (Google sign-in), which needs inferenceVertexOAuthClientId — without it the configuration will be reported as incomplete and inference will not start",
              "warnFrom": "2026-09-10",
              "supportEnds": "2026-10-07"
            },
            {
              "path": "inferenceCredentialKind: \"interactive\" together with inferenceGatewayOidc (gateway)",
              "use": "\"external-idp\" once every desktop in the fleet is on a release that reads it",
              "effect": "the original spelling will keep working (\"interactive\" with inferenceGatewayOidc is read as \"external-idp\"); no end date has been set"
            }
          ],
          "x-selfHosted": {
            "execution": "client",
            "why": "In self-hosted mode it names the device's sign-in to the host, never the host's model credential"
          },
          "x-deprecatedValues": [
            {
              "value": "oauth",
              "use": "interactive",
              "provider": "vertex",
              "warnFrom": "2026-09-10",
              "supportEnds": "2026-10-07"
            }
          ],
          "x-valueAvailableInVersionOverride": [
            {
              "value": "workforce",
              "availableInVersion": "1.15200.0"
            },
            {
              "value": "external-idp",
              "availableInVersion": "2.7032.0"
            },
            {
              "value": "oauth",
              "availableInVersion": "1.15200.0"
            }
          ]
        },
        "inferenceGatewayBaseUrl": {
          "type": "string",
          "format": "uri",
          "title": "Gateway base URL",
          "description": "Full URL of the inference gateway endpoint.",
          "x-consentRequired": true,
          "x-flatKey": "inferenceGatewayBaseUrl",
          "x-readers": [
            "desktop",
            "m365"
          ],
          "x-availableInVersion": "1.2581.0",
          "x-availability": "both",
          "x-deprecated": false,
          "x-beta": false,
          "x-originPinned": "server-issued-credential",
          "x-selfHosted": {
            "execution": "none",
            "why": "Part of the device's own route to the model, and a session host's route is its operator's to set"
          }
        },
        "inferenceStreamIdleTimeoutSec": {
          "type": "integer",
          "minimum": 300,
          "maximum": 1800,
          "title": "Stream idle timeout",
          "description": "Extra seconds to wait for model output on a streaming response that is sending only keep-alive pings. Gateway provider only. Default 300.",
          "x-flatKey": "inferenceStreamIdleTimeoutSec",
          "x-availableInVersion": "1.44121.1",
          "x-availability": "both",
          "x-deprecated": false,
          "x-beta": false,
          "x-consentRequired": false,
          "x-originPinned": false,
          "x-selfHosted": {
            "execution": "server",
            "why": "The host makes the model calls, so it sets how long a stream sending only keep-alive pings may wait for output"
          }
        },
        "inferenceCustomHeaders": {
          "type": "object",
          "propertyNames": {
            "type": "string"
          },
          "additionalProperties": {
            "type": "string"
          },
          "title": "Custom inference headers",
          "description": "Extra headers on every inference request — routing and tenant headers only (org IDs, Bedrock Guardrails). No credentials; use the credential helper for tokens.",
          "x-flatKey": "inferenceCustomHeaders",
          "x-readers": [
            "desktop",
            "m365"
          ],
          "x-availableInVersion": "1.8089.0",
          "x-availability": "both",
          "x-deprecated": false,
          "x-beta": false,
          "x-consentRequired": false,
          "x-originPinned": false,
          "x-selfHosted": {
            "execution": "server",
            "why": "The host makes the model calls, so it adds the admin's headers to them"
          }
        },
        "inferenceSessionLifetimeSec": {
          "type": "integer",
          "exclusiveMinimum": 0,
          "maximum": 9007199254740991,
          "title": "Sign-in session lifetime",
          "description": "How long a sign-in stays valid under your IdP’s session policy. Shows a re-authenticate banner before it expires.",
          "x-flatKey": "inferenceSessionLifetimeSec",
          "x-availableInVersion": "1.14271.0",
          "x-availability": "both",
          "x-deprecated": false,
          "x-beta": false,
          "x-consentRequired": false,
          "x-originPinned": false,
          "x-selfHosted": {
            "execution": "none",
            "why": "The session host is the one source for how long a sign-in to it lasts, and it reads no figure from this key"
          }
        },
        "inferenceGatewayApiKey": {
          "type": "string",
          "title": "Gateway API key",
          "description": "API key for the configured inference gateway.",
          "x-flatKey": "inferenceGatewayApiKey",
          "x-readers": [
            "desktop",
            "m365"
          ],
          "x-availableInVersion": "1.2581.0",
          "x-availability": "both",
          "x-deprecated": false,
          "x-beta": false,
          "x-consentRequired": false,
          "x-originPinned": false,
          "x-selfHosted": {
            "execution": "none",
            "why": "Part of the device's own route to the model, and a session host's route is its operator's to set"
          }
        },
        "inferenceGatewayAuthScheme": {
          "type": "string",
          "enum": [
            "bearer",
            "x-api-key"
          ],
          "title": "Gateway auth scheme",
          "description": "How the gateway credential is sent on the wire (Authorization: Bearer vs x-api-key header).",
          "default": "bearer",
          "x-flatKey": "inferenceGatewayAuthScheme",
          "x-readers": [
            "desktop",
            "m365"
          ],
          "x-availableInVersion": "1.3036.0",
          "x-availability": "both",
          "x-deprecated": false,
          "x-beta": false,
          "x-consentRequired": false,
          "x-originPinned": false,
          "x-deprecations": [
            {
              "path": "inferenceGatewayAuthScheme: \"sso\"",
              "use": "inferenceCredentialKind: \"interactive\"",
              "effect": "the original spelling will keep working; no end date has been set"
            }
          ],
          "x-selfHosted": {
            "execution": "none",
            "why": "Part of the device's own route to the model, and a session host's route is its operator's to set"
          }
        },
        "inferenceGatewayOidcAuthFlow": {
          "type": "string",
          "enum": [
            "browser",
            "broker"
          ],
          "title": "Gateway sign-in flow",
          "description": "How the IdP sign-in runs: system browser (default) or the OS Microsoft Entra broker.",
          "x-flatKey": "inferenceGatewayOidcAuthFlow",
          "x-availableInVersion": "1.25927.0",
          "x-availability": "both",
          "x-deprecated": false,
          "x-beta": false,
          "x-consentRequired": false,
          "x-originPinned": false,
          "x-deprecations": [
            {
              "path": "inferenceGatewayOidcAuthFlow",
              "use": "inferenceIdpAuthFlow together with inferenceIdpOidc once every desktop in the fleet is on a release that reads them",
              "effect": "the original spelling will keep working; no end date has been set"
            }
          ],
          "x-selfHosted": {
            "execution": "none",
            "why": "Deprecated name for the choice of sign-in window on the person's computer"
          }
        },
        "inferenceGatewayOidc": {
          "type": "object",
          "properties": {
            "clientId": {
              "type": "string",
              "minLength": 1,
              "title": "Client ID",
              "description": "OAuth client ID of the desktop app registration at your identity provider (public client, PKCE).",
              "x-consentRequired": false
            },
            "issuer": {
              "title": "Issuer URL",
              "description": "HTTPS issuer with OIDC discovery. Set this, or set the authorization and token URLs instead.",
              "x-consentRequired": false,
              "type": "string",
              "format": "uri"
            },
            "authorizationUrl": {
              "title": "Authorization URL",
              "description": "HTTPS authorization endpoint. Used with the token URL when no issuer is set.",
              "x-consentRequired": false,
              "type": "string",
              "format": "uri"
            },
            "tokenUrl": {
              "title": "Token URL",
              "description": "HTTPS token endpoint. Used with the authorization URL when no issuer is set.",
              "x-consentRequired": false,
              "type": "string",
              "format": "uri"
            },
            "bearerTokenType": {
              "default": "id_token",
              "title": "Bearer token",
              "description": "Which token to send as the bearer. Use access token for a gateway or proxy that validates as an OAuth resource server.",
              "x-consentRequired": false,
              "type": "string",
              "enum": [
                "id_token",
                "access_token"
              ]
            },
            "scopes": {
              "title": "Scopes",
              "description": "Space-separated scopes. Required in access-token mode: set the gateway or proxy API scope. offline_access is appended automatically unless disabled below.",
              "x-consentRequired": false,
              "type": "string",
              "minLength": 1
            },
            "appendOfflineAccess": {
              "default": true,
              "title": "Append offline_access",
              "description": "Automatically append offline_access to scopes so the IdP returns a refresh token for silent refresh.",
              "x-consentRequired": false,
              "type": "boolean",
              "x-availableInVersionOverride": "1.11847.0"
            },
            "resource": {
              "title": "Resource indicator (RFC 8707)",
              "description": "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.",
              "x-consentRequired": false,
              "type": "string",
              "minLength": 1,
              "x-availableInVersionOverride": "1.30096.1"
            },
            "redirectPort": {
              "title": "Redirect port",
              "description": "Fixed loopback port for the sign-in redirect. Leave unset to use a free port each time.",
              "x-consentRequired": false,
              "type": "integer",
              "minimum": 1024,
              "maximum": 65535
            },
            "redirectHost": {
              "title": "Redirect host",
              "description": "Use localhost only if your IdP’s registered redirect URI specifies it.",
              "x-consentRequired": false,
              "type": "string",
              "enum": [
                "127.0.0.1",
                "localhost"
              ],
              "x-availableInVersionOverride": "2.110.0"
            },
            "additionalRedirectReferrerHosts": {
              "title": "Additional redirect referrer hosts",
              "description": "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.",
              "x-consentRequired": false,
              "type": "string",
              "x-availableInVersionOverride": "1.20186.0"
            }
          },
          "required": [
            "clientId"
          ],
          "title": "Gateway SSO IdP (OIDC)",
          "description": "External IdP for gateway sign-in. The user’s token from this issuer is sent to the gateway as the Bearer credential.",
          "x-flatKey": "inferenceGatewayOidc",
          "x-availableInVersion": "1.6889.0",
          "x-availability": "both",
          "x-deprecated": false,
          "x-beta": false,
          "x-consentRequired": true,
          "x-originPinned": false,
          "x-deprecations": [
            {
              "path": "inferenceGatewayOidc",
              "use": "inferenceIdpOidc with inferenceCredentialKind: \"external-idp\" once every desktop in the fleet is on a release that reads them",
              "effect": "the original spelling will keep working; no end date has been set"
            }
          ],
          "x-selfHosted": {
            "execution": "none",
            "why": "Deprecated name for a sign-in that runs on the person's computer"
          }
        },
        "inferenceIdpAuthFlow": {
          "type": "string",
          "enum": [
            "browser",
            "broker"
          ],
          "title": "Identity provider sign-in flow",
          "description": "How the identity-provider sign-in runs: system browser (default) or the OS Microsoft Entra broker.",
          "x-flatKey": "inferenceIdpAuthFlow",
          "x-availableInVersion": "2.7032.0",
          "x-availability": "both",
          "x-deprecated": false,
          "x-beta": false,
          "x-consentRequired": false,
          "x-originPinned": false,
          "x-selfHosted": {
            "execution": "client",
            "why": "Chooses a sign-in window on the person's computer, also used for the device's sign-in to the host"
          }
        },
        "inferenceIdpOidc": {
          "type": "object",
          "properties": {
            "clientId": {
              "type": "string",
              "minLength": 1,
              "title": "Client ID",
              "description": "OAuth client ID of the desktop app registration at your identity provider (public client, PKCE).",
              "x-consentRequired": false
            },
            "issuer": {
              "title": "Issuer URL",
              "description": "HTTPS issuer with OIDC discovery. Set this, or set the authorization and token URLs instead.",
              "x-consentRequired": false,
              "type": "string",
              "format": "uri"
            },
            "authorizationUrl": {
              "title": "Authorization URL",
              "description": "HTTPS authorization endpoint. Used with the token URL when no issuer is set.",
              "x-consentRequired": false,
              "type": "string",
              "format": "uri"
            },
            "tokenUrl": {
              "title": "Token URL",
              "description": "HTTPS token endpoint. Used with the authorization URL when no issuer is set.",
              "x-consentRequired": false,
              "type": "string",
              "format": "uri"
            },
            "bearerTokenType": {
              "default": "id_token",
              "title": "Bearer token",
              "description": "Which token to send as the bearer. Use access token for a gateway or proxy that validates as an OAuth resource server.",
              "x-consentRequired": false,
              "type": "string",
              "enum": [
                "id_token",
                "access_token"
              ]
            },
            "scopes": {
              "title": "Scopes",
              "description": "Space-separated scopes. Required in access-token mode: set the gateway or proxy API scope. offline_access is appended automatically unless disabled below.",
              "x-consentRequired": false,
              "type": "string",
              "minLength": 1
            },
            "appendOfflineAccess": {
              "default": true,
              "title": "Append offline_access",
              "description": "Automatically append offline_access to scopes so the IdP returns a refresh token for silent refresh.",
              "x-consentRequired": false,
              "type": "boolean"
            },
            "resource": {
              "title": "Resource indicator (RFC 8707)",
              "description": "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.",
              "x-consentRequired": false,
              "type": "string",
              "minLength": 1
            },
            "redirectPort": {
              "title": "Redirect port",
              "description": "Fixed loopback port for the sign-in redirect. Leave unset to use a free port each time.",
              "x-consentRequired": false,
              "type": "integer",
              "minimum": 1024,
              "maximum": 65535
            },
            "redirectHost": {
              "title": "Redirect host",
              "description": "Use localhost only if your IdP’s registered redirect URI specifies it.",
              "x-consentRequired": false,
              "type": "string",
              "enum": [
                "127.0.0.1",
                "localhost"
              ]
            },
            "additionalRedirectReferrerHosts": {
              "title": "Additional redirect referrer hosts",
              "description": "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.",
              "x-consentRequired": false,
              "type": "string"
            }
          },
          "required": [
            "clientId"
          ],
          "title": "Identity provider (OIDC)",
          "description": "Your organization’s OpenID Connect identity provider. The user’s token is sent as the Bearer credential to the gateway or the Bedrock proxy.",
          "x-flatKey": "inferenceIdpOidc",
          "x-availableInVersion": "2.7032.0",
          "x-availability": "both",
          "x-deprecated": false,
          "x-beta": false,
          "x-consentRequired": true,
          "x-originPinned": false,
          "x-selfHosted": {
            "execution": "client",
            "why": "Configures an interactive sign-in on the person's computer, reused to sign the device in to the host"
          }
        },
        "inferenceCredentialHelper": {
          "type": "string",
          "title": "Helper script",
          "description": "Absolute path to an executable that prints the credential, optionally with per-request headers.",
          "x-flatKey": "inferenceCredentialHelper",
          "x-availableInVersion": "1.2581.0",
          "x-availability": "both",
          "x-deprecated": false,
          "x-beta": false,
          "x-consentRequired": true,
          "x-originPinned": false,
          "x-selfHosted": {
            "execution": "client",
            "why": "Names a program on the person's computer, reused for the device's sign-in to the host"
          }
        },
        "inferenceCredentialHelperWindows": {
          "type": "string",
          "minLength": 1,
          "pattern": "^[A-Za-z]:[\\\\/]",
          "title": "Helper script (Windows)",
          "description": "Absolute path of the helper executable on Windows devices, used there instead of Helper script. Leave unset to use Helper script on every operating system.",
          "x-flatKey": "inferenceCredentialHelperWindows",
          "x-availableInVersion": "2.2553.0",
          "x-availability": "both",
          "x-deprecated": false,
          "x-beta": false,
          "x-consentRequired": true,
          "x-originPinned": false,
          "x-selfHosted": {
            "execution": "client",
            "why": "Names a Windows program on the person's computer, reused for the device's sign-in to the host"
          }
        },
        "inferenceCredentialHelperArgs": {
          "type": "array",
          "items": {
            "type": "string",
            "maxLength": 1024,
            "pattern": "^[^\"%\\x00-\\x1f]+$"
          },
          "title": "Helper script arguments",
          "description": "Arguments passed to the helper script, one per entry, in order. Leave unset to run it with none.",
          "x-flatKey": "inferenceCredentialHelperArgs",
          "x-availableInVersion": "2.110.0",
          "x-availability": "both",
          "x-deprecated": false,
          "x-beta": false,
          "x-consentRequired": true,
          "x-originPinned": false,
          "x-selfHosted": {
            "execution": "client",
            "why": "Gives arguments to a helper program on the person's computer, reused for the device's sign-in to the host"
          }
        },
        "inferenceCredentialHelperTtlSec": {
          "type": "integer",
          "exclusiveMinimum": 0,
          "maximum": 9007199254740991,
          "title": "Helper script TTL",
          "description": "Helper output is cached for this many seconds; once it expires the helper re-runs without a relaunch (before the next turn when set above 120).",
          "default": 3600,
          "x-flatKey": "inferenceCredentialHelperTtlSec",
          "x-availableInVersion": "1.2581.0",
          "x-availability": "both",
          "x-deprecated": false,
          "x-beta": false,
          "x-consentRequired": true,
          "x-originPinned": false,
          "x-selfHosted": {
            "execution": "client",
            "why": "Sets how long the desktop app caches its helper's output, reused for the device's sign-in to the host"
          }
        },
        "inferenceCredentialHelperTimeoutSec": {
          "type": "integer",
          "exclusiveMinimum": 0,
          "maximum": 600,
          "title": "Credential helper timeout",
          "description": "Maximum wait for the helper executable to finish. Raise this if the helper opens a browser for interactive sign-in.",
          "default": 60,
          "x-flatKey": "inferenceCredentialHelperTimeoutSec",
          "x-availableInVersion": "1.8089.0",
          "x-availability": "both",
          "x-deprecated": false,
          "x-beta": false,
          "x-consentRequired": true,
          "x-originPinned": false,
          "x-selfHosted": {
            "execution": "client",
            "why": "Bounds a helper program on the person's computer, reused for the device's sign-in to the host"
          }
        },
        "inferenceCredentialHelperSilentRefreshEnabled": {
          "type": "boolean",
          "title": "Re-run helper for silent refresh",
          "description": "On credential expiry, re-run the helper (CLAUDE_HELPER_CONTEXT=mid-session-refresh) to recover silently. Turn off if the helper can’t run non-interactively.",
          "default": true,
          "x-flatKey": "inferenceCredentialHelperSilentRefreshEnabled",
          "x-whenUnreadable": {
            "applies": false
          },
          "x-availableInVersion": "1.10628.0",
          "x-availability": "both",
          "x-deprecated": false,
          "x-beta": false,
          "x-consentRequired": true,
          "x-originPinned": false,
          "x-selfHosted": {
            "execution": "client",
            "why": "Decides how the desktop app re-runs its helper on the person's computer, reused for sign-in to the host"
          }
        },
        "inferenceAnthropicApiKey": {
          "type": "string",
          "title": "Claude API key",
          "description": "Leave blank to sign in with your browser, or to supply the key via a credential helper.",
          "x-flatKey": "inferenceAnthropicApiKey",
          "x-availableInVersion": "1.8089.0",
          "x-availability": "both",
          "x-deprecated": false,
          "x-beta": false,
          "x-consentRequired": false,
          "x-originPinned": false,
          "x-selfHosted": {
            "execution": "none",
            "why": "Part of the device's own route to the model, and a session host's route is its operator's to set"
          }
        },
        "inferenceBedrockRegion": {
          "type": "string",
          "pattern": "^[a-z]{2,}(-[a-z]+)+-\\d{1,2}$",
          "title": "AWS region",
          "description": "AWS region for the Bedrock runtime endpoint.",
          "x-flatKey": "inferenceBedrockRegion",
          "x-readers": [
            "desktop",
            "m365"
          ],
          "x-availableInVersion": "1.2581.0",
          "x-availability": "both",
          "x-deprecated": false,
          "x-beta": false,
          "x-consentRequired": false,
          "x-originPinned": false,
          "x-selfHosted": {
            "execution": "none",
            "why": "Part of the device's own route to the model, and a session host's route is its operator's to set"
          }
        },
        "inferenceBedrockBaseUrl": {
          "type": "string",
          "format": "uri",
          "title": "Bedrock base URL",
          "description": "For VPC endpoints or gateway proxies. Host origin only.",
          "x-consentRequired": true,
          "x-flatKey": "inferenceBedrockBaseUrl",
          "x-readers": [
            "desktop",
            "m365"
          ],
          "x-availableInVersion": "1.2581.0",
          "x-availability": "both",
          "x-deprecated": false,
          "x-beta": false,
          "x-originPinned": "local-credential",
          "x-selfHosted": {
            "execution": "none",
            "why": "Part of the device's own route to the model, and a session host's route is its operator's to set"
          }
        },
        "inferenceBedrockServiceTier": {
          "type": "string",
          "enum": [
            "flex",
            "priority"
          ],
          "title": "Bedrock service tier",
          "description": "Sent as the X-Amzn-Bedrock-Service-Tier header. Leave unset for on-demand.",
          "x-flatKey": "inferenceBedrockServiceTier",
          "x-availableInVersion": "1.5186.0",
          "x-availability": "both",
          "x-deprecated": false,
          "x-beta": false,
          "x-consentRequired": false,
          "x-originPinned": false,
          "x-selfHosted": {
            "execution": "none",
            "why": "Part of the device's own route to the model, and a session host's route is its operator's to set"
          }
        },
        "inferenceBedrockBearerToken": {
          "type": "string",
          "title": "AWS bearer token",
          "description": "Static bearer token for inference. For providers that support profile or helper-script credentials, prefer those.",
          "x-flatKey": "inferenceBedrockBearerToken",
          "x-availableInVersion": "1.2581.0",
          "x-availability": "both",
          "x-deprecated": false,
          "x-beta": false,
          "x-consentRequired": false,
          "x-originPinned": false,
          "x-selfHosted": {
            "execution": "none",
            "why": "Part of the device's own route to the model, and a session host's route is its operator's to set"
          }
        },
        "inferenceBedrockSsoStartUrl": {
          "type": "string",
          "format": "uri",
          "title": "AWS SSO start URL",
          "description": "Enables in-app AWS sign-in (no AWS CLI needed). Set with the three SSO fields below.",
          "x-flatKey": "inferenceBedrockSsoStartUrl",
          "x-availableInVersion": "1.6259.0",
          "x-availability": "both",
          "x-deprecated": false,
          "x-beta": false,
          "x-consentRequired": true,
          "x-originPinned": false,
          "x-selfHosted": {
            "execution": "none",
            "why": "Drives a browser sign-in on the person's computer, and a host never calls Bedrock as the person"
          }
        },
        "inferenceBedrockSsoRegion": {
          "type": "string",
          "pattern": "^[a-z]{2,}(-[a-z]+)+-\\d{1,2}$",
          "title": "AWS SSO region",
          "description": "IAM Identity Center home region.",
          "x-flatKey": "inferenceBedrockSsoRegion",
          "x-availableInVersion": "1.6259.0",
          "x-availability": "both",
          "x-deprecated": false,
          "x-beta": false,
          "x-consentRequired": true,
          "x-originPinned": false,
          "x-selfHosted": {
            "execution": "none",
            "why": "Configures a browser sign-in on the person's computer, and a host-run session has no browser"
          }
        },
        "inferenceBedrockSsoAccountId": {
          "type": "string",
          "minLength": 1,
          "title": "AWS SSO account ID",
          "description": "12-digit AWS account ID assigned to users in IAM Identity Center.",
          "x-flatKey": "inferenceBedrockSsoAccountId",
          "x-availableInVersion": "1.6259.0",
          "x-availability": "both",
          "x-deprecated": false,
          "x-beta": false,
          "x-consentRequired": true,
          "x-originPinned": false,
          "x-selfHosted": {
            "execution": "none",
            "why": "Names an AWS account for a browser sign-in on the person's computer, which a host never performs"
          }
        },
        "inferenceBedrockSsoRoleName": {
          "type": "string",
          "minLength": 1,
          "title": "AWS SSO role name",
          "description": "IAM Identity Center permission-set name granting bedrock:InvokeModel* on the account above.",
          "x-flatKey": "inferenceBedrockSsoRoleName",
          "x-availableInVersion": "1.6259.0",
          "x-availability": "both",
          "x-deprecated": false,
          "x-beta": false,
          "x-consentRequired": true,
          "x-originPinned": false,
          "x-selfHosted": {
            "execution": "none",
            "why": "Names an AWS role for a browser sign-in that is only possible on the person's computer"
          }
        },
        "inferenceBedrockProfile": {
          "type": "string",
          "title": "AWS profile name",
          "description": "AWS named profile to use for Bedrock inference credentials.",
          "x-flatKey": "inferenceBedrockProfile",
          "x-availableInVersion": "1.2581.0",
          "x-availability": "both",
          "x-deprecated": false,
          "x-beta": false,
          "x-consentRequired": true,
          "x-originPinned": false,
          "x-selfHosted": {
            "execution": "none",
            "why": "Part of the device's own route to the model, and a session host's route is its operator's to set"
          }
        },
        "inferenceBedrockAwsDir": {
          "type": "string",
          "title": "AWS config directory",
          "description": "Folder with AWS config/credentials. Defaults to ~/.aws when no bearer token is set.",
          "x-flatKey": "inferenceBedrockAwsDir",
          "x-availableInVersion": "1.2581.0",
          "x-availability": "both",
          "x-deprecated": false,
          "x-beta": false,
          "x-consentRequired": true,
          "x-originPinned": false,
          "x-selfHosted": {
            "execution": "none",
            "why": "Names a folder on the person's computer that a host does not have"
          }
        },
        "inferenceBedrockAwsCliPath": {
          "type": "string",
          "title": "AWS CLI path",
          "description": "Absolute path to the aws executable. Leave unset to find it on PATH.",
          "x-flatKey": "inferenceBedrockAwsCliPath",
          "x-availableInVersion": "1.13576.0",
          "x-availability": "both",
          "x-deprecated": false,
          "x-beta": false,
          "x-consentRequired": true,
          "x-originPinned": false,
          "x-selfHosted": {
            "execution": "none",
            "why": "Names a program on the person's computer, and a host has no such program, browser or person"
          }
        },
        "inferenceVertexProjectId": {
          "type": "string",
          "pattern": "^[a-z0-9][a-z0-9.:-]*$",
          "title": "GCP project ID",
          "description": "Google Cloud project ID for Vertex AI inference.",
          "x-flatKey": "inferenceVertexProjectId",
          "x-readers": [
            "desktop",
            "m365"
          ],
          "x-availableInVersion": "1.2581.0",
          "x-availability": "both",
          "x-deprecated": false,
          "x-beta": false,
          "x-consentRequired": true,
          "x-originPinned": false,
          "x-selfHosted": {
            "execution": "none",
            "why": "Part of the device's own route to the model, and a session host's route is its operator's to set"
          }
        },
        "inferenceVertexRegion": {
          "type": "string",
          "pattern": "^([a-z]+-[a-z]+\\d{1,2}|global|eu|us)$",
          "title": "GCP region",
          "description": "GCP region where your Vertex AI Claude models are deployed.",
          "x-flatKey": "inferenceVertexRegion",
          "x-readers": [
            "desktop",
            "m365"
          ],
          "x-availableInVersion": "1.2581.0",
          "x-availability": "both",
          "x-deprecated": false,
          "x-beta": false,
          "x-consentRequired": false,
          "x-originPinned": false,
          "x-selfHosted": {
            "execution": "none",
            "why": "Part of the device's own route to the model, and a session host's route is its operator's to set"
          }
        },
        "inferenceVertexBaseUrl": {
          "type": "string",
          "format": "uri",
          "title": "Vertex AI base URL",
          "description": "PSC endpoint, if using one.",
          "x-consentRequired": true,
          "x-flatKey": "inferenceVertexBaseUrl",
          "x-readers": [
            "desktop",
            "m365"
          ],
          "x-availableInVersion": "1.2581.0",
          "x-availability": "both",
          "x-deprecated": false,
          "x-beta": false,
          "x-originPinned": "local-credential",
          "x-selfHosted": {
            "execution": "none",
            "why": "Part of the device's own route to the model, and a session host's route is its operator's to set"
          }
        },
        "inferenceVertexOAuthClientId": {
          "type": "string",
          "minLength": 1,
          "title": "Vertex OAuth client ID",
          "description": "Desktop-app OAuth client ID. Enables Sign in with Google instead of a credentials file.",
          "x-flatKey": "inferenceVertexOAuthClientId",
          "x-availableInVersion": "1.2581.0",
          "x-availability": "both",
          "x-deprecated": false,
          "x-beta": false,
          "x-consentRequired": true,
          "x-originPinned": false,
          "x-selfHosted": {
            "execution": "none",
            "why": "Configures a Google browser sign-in on the person's computer, and a host calls Vertex as its own identity"
          }
        },
        "inferenceVertexOAuthClientSecret": {
          "type": "string",
          "minLength": 1,
          "title": "Vertex OAuth client secret",
          "description": "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.",
          "x-flatKey": "inferenceVertexOAuthClientSecret",
          "x-availableInVersion": "1.2581.0",
          "x-availability": "both",
          "x-deprecated": false,
          "x-beta": false,
          "x-consentRequired": false,
          "x-originPinned": false,
          "x-selfHosted": {
            "execution": "none",
            "why": "Secret for the person's own Google sign-in, and a host calls Vertex as its own Google identity"
          }
        },
        "inferenceVertexOAuthScopes": {
          "type": "string",
          "minLength": 1,
          "title": "Vertex OAuth scopes",
          "description": "Override the Google OAuth scopes (space-separated). Leave blank for the default.",
          "x-flatKey": "inferenceVertexOAuthScopes",
          "x-availableInVersion": "1.2581.0",
          "x-availability": "both",
          "x-deprecated": false,
          "x-beta": false,
          "x-consentRequired": false,
          "x-originPinned": false,
          "x-selfHosted": {
            "execution": "none",
            "why": "Sets scopes for a browser sign-in on the person's computer, and a host calls Vertex as its own identity"
          }
        },
        "inferenceVertexOAuthLoginHint": {
          "type": "string",
          "minLength": 1,
          "title": "Vertex OAuth login hint",
          "description": "Pre-fill Google's account chooser and forward to your federated IdP. {username} expands to the OS login name.",
          "x-flatKey": "inferenceVertexOAuthLoginHint",
          "x-availableInVersion": "1.12603.0",
          "x-availability": "both",
          "x-deprecated": false,
          "x-beta": false,
          "x-consentRequired": false,
          "x-originPinned": false,
          "x-selfHosted": {
            "execution": "none",
            "why": "Steers a browser sign-in on the person's computer, and a host calls Vertex as its own Google identity"
          }
        },
        "inferenceVertexWorkforceAudience": {
          "type": "string",
          "minLength": 1,
          "title": "Workforce Identity audience",
          "description": "Workforce-pool provider audience. When set, sign-in uses your own IdP plus a GCP STS exchange instead of a Google identity.",
          "x-flatKey": "inferenceVertexWorkforceAudience",
          "x-availableInVersion": "1.10628.0",
          "x-availability": "both",
          "x-deprecated": false,
          "x-beta": false,
          "x-consentRequired": true,
          "x-originPinned": false,
          "x-selfHosted": {
            "execution": "none",
            "why": "Configures a sign-in the person completes on their computer, and a host calls Vertex as its own identity"
          }
        },
        "inferenceVertexWorkforceUserProject": {
          "type": "string",
          "pattern": "^[a-z0-9][a-z0-9.:-]*$",
          "title": "Workforce Identity billing project",
          "description": "GCP project for STS billing and quota. Defaults to the Vertex project ID above.",
          "x-flatKey": "inferenceVertexWorkforceUserProject",
          "x-availableInVersion": "1.10628.0",
          "x-availability": "both",
          "x-deprecated": false,
          "x-beta": false,
          "x-consentRequired": true,
          "x-originPinned": false,
          "x-selfHosted": {
            "execution": "none",
            "why": "Bills the exchange of the person's own sign-in token, and a host calls Vertex as its own identity"
          }
        },
        "inferenceVertexWorkforceAuthFlow": {
          "type": "string",
          "enum": [
            "browser",
            "broker"
          ],
          "title": "Workforce Identity sign-in flow",
          "description": "How the IdP sign-in runs: system browser (default) or the OS Microsoft Entra broker.",
          "x-flatKey": "inferenceVertexWorkforceAuthFlow",
          "x-availableInVersion": "1.25927.0",
          "x-availability": "both",
          "x-deprecated": false,
          "x-beta": false,
          "x-consentRequired": false,
          "x-originPinned": false,
          "x-selfHosted": {
            "execution": "none",
            "why": "Chooses how the person signs in on their computer, and a host calls Vertex as its own identity"
          }
        },
        "inferenceVertexWorkforceOidc": {
          "type": "object",
          "properties": {
            "clientId": {
              "type": "string",
              "minLength": 1,
              "title": "Client ID",
              "description": "OAuth client ID of the desktop app registration at your identity provider (public client, PKCE).",
              "x-consentRequired": false
            },
            "issuer": {
              "title": "Issuer URL",
              "description": "HTTPS issuer with OIDC discovery. Set this, or set the authorization and token URLs instead.",
              "x-consentRequired": false,
              "type": "string",
              "format": "uri"
            },
            "authorizationUrl": {
              "title": "Authorization URL",
              "description": "HTTPS authorization endpoint. Used with the token URL when no issuer is set.",
              "x-consentRequired": false,
              "type": "string",
              "format": "uri"
            },
            "tokenUrl": {
              "title": "Token URL",
              "description": "HTTPS token endpoint. Used with the authorization URL when no issuer is set.",
              "x-consentRequired": false,
              "type": "string",
              "format": "uri"
            },
            "scopes": {
              "title": "Scopes",
              "description": "Space-separated scopes. Defaults to openid profile email offline_access.",
              "x-consentRequired": false,
              "type": "string",
              "minLength": 1
            },
            "redirectPort": {
              "title": "Redirect port",
              "description": "Fixed loopback port for the sign-in redirect. Leave unset to use a free port each time.",
              "x-consentRequired": false,
              "type": "integer",
              "minimum": 1024,
              "maximum": 65535
            },
            "redirectHost": {
              "title": "Redirect host",
              "description": "Use localhost only if your IdP’s registered redirect URI specifies it.",
              "x-consentRequired": false,
              "type": "string",
              "enum": [
                "127.0.0.1",
                "localhost"
              ],
              "x-availableInVersionOverride": "2.110.0"
            },
            "omitOfflineAccess": {
              "title": "Omit offline_access",
              "description": "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.",
              "x-consentRequired": false,
              "type": "boolean",
              "x-availableInVersionOverride": "1.17377.1"
            },
            "additionalRedirectReferrerHosts": {
              "title": "Additional redirect referrer hosts",
              "description": "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.",
              "x-consentRequired": false,
              "type": "string",
              "x-availableInVersionOverride": "1.20186.0"
            }
          },
          "required": [
            "clientId"
          ],
          "title": "Workforce Identity IdP (OIDC)",
          "description": "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.",
          "x-flatKey": "inferenceVertexWorkforceOidc",
          "x-availableInVersion": "1.10628.0",
          "x-availability": "both",
          "x-deprecated": false,
          "x-beta": false,
          "x-consentRequired": true,
          "x-originPinned": false,
          "x-selfHosted": {
            "execution": "none",
            "why": "Sets up the person's sign-in on their own computer, and a host calls Vertex as its own Google identity"
          }
        },
        "inferenceVertexCredentialsFile": {
          "type": "string",
          "title": "GCP credentials file path",
          "description": "Absolute path to service-account JSON. Leave blank to fall back to ADC.",
          "x-flatKey": "inferenceVertexCredentialsFile",
          "x-availableInVersion": "1.2581.0",
          "x-availability": "both",
          "x-deprecated": false,
          "x-beta": false,
          "x-consentRequired": true,
          "x-originPinned": false,
          "x-selfHosted": {
            "execution": "none",
            "why": "Names a file on the person's computer that no host has"
          }
        },
        "inferenceFoundryResource": {
          "type": "string",
          "pattern": "^[a-z0-9][a-z0-9-]{0,62}[a-z0-9]$",
          "title": "Azure AI Foundry resource name",
          "description": "Azure AI Foundry resource name used to construct the endpoint URL.",
          "x-flatKey": "inferenceFoundryResource",
          "x-readers": [
            "desktop",
            "m365"
          ],
          "x-availableInVersion": "1.2581.0",
          "x-availability": "both",
          "x-deprecated": false,
          "x-beta": false,
          "x-consentRequired": true,
          "x-originPinned": false,
          "x-selfHosted": {
            "execution": "none",
            "why": "Part of the device's own route to the model, and a session host's route is its operator's to set"
          }
        },
        "inferenceFoundryBaseUrl": {
          "type": "string",
          "format": "uri",
          "title": "Azure AI Foundry base URL",
          "description": "Full base URL for a gateway or proxy in front of Foundry, path included (replaces https://RESOURCE.services.ai.azure.com/anthropic).",
          "x-consentRequired": true,
          "x-flatKey": "inferenceFoundryBaseUrl",
          "x-readers": [
            "desktop",
            "m365"
          ],
          "x-availableInVersion": "2.110.0",
          "x-availability": "both",
          "x-deprecated": false,
          "x-beta": false,
          "x-originPinned": "local-credential",
          "x-selfHosted": {
            "execution": "none",
            "why": "Part of the device's own route to the model, and a session host's route is its operator's to set"
          }
        },
        "inferenceFoundryApiKey": {
          "type": "string",
          "title": "Azure AI Foundry API key",
          "description": "API key for Azure AI Foundry inference.",
          "x-flatKey": "inferenceFoundryApiKey",
          "x-readers": [
            "desktop",
            "m365"
          ],
          "x-availableInVersion": "1.2581.0",
          "x-availability": "both",
          "x-deprecated": false,
          "x-beta": false,
          "x-consentRequired": false,
          "x-originPinned": false,
          "x-selfHosted": {
            "execution": "none",
            "why": "Part of the device's own route to the model, and a session host's route is its operator's to set"
          }
        },
        "inferenceFoundryTenantId": {
          "type": "string",
          "minLength": 1,
          "title": "Entra ID tenant ID",
          "description": "Directory (tenant) ID of the Entra ID app registration that has the Cognitive Services scope.",
          "x-flatKey": "inferenceFoundryTenantId",
          "x-availableInVersion": "1.9255.0",
          "x-availability": "both",
          "x-deprecated": false,
          "x-beta": false,
          "x-consentRequired": true,
          "x-originPinned": false,
          "x-selfHosted": {
            "execution": "none",
            "why": "Names the tenant for an Entra sign-in on the person's computer"
          }
        },
        "inferenceFoundryClientId": {
          "type": "string",
          "minLength": 1,
          "title": "Entra ID client ID",
          "description": "Application (client) ID of the Entra ID app registration. Device-code sign-in requires the app to allow public client flows.",
          "x-flatKey": "inferenceFoundryClientId",
          "x-availableInVersion": "1.9255.0",
          "x-availability": "both",
          "x-deprecated": false,
          "x-beta": false,
          "x-consentRequired": true,
          "x-originPinned": false,
          "x-selfHosted": {
            "execution": "none",
            "why": "Configures an Entra sign-in the person completes on their computer"
          }
        },
        "inferenceFoundryAuthFlow": {
          "type": "string",
          "enum": [
            "device-code",
            "browser",
            "broker"
          ],
          "title": "Entra ID sign-in flow",
          "description": "How Entra sign-in runs: device code (default), system browser, or the OS identity broker.",
          "x-flatKey": "inferenceFoundryAuthFlow",
          "x-availableInVersion": "1.19367.0",
          "x-availability": "both",
          "x-deprecated": false,
          "x-beta": false,
          "x-consentRequired": false,
          "x-originPinned": false,
          "x-selfHosted": {
            "execution": "none",
            "why": "Chooses how the person's Entra sign-in runs on their computer"
          },
          "x-valueAvailableInVersionOverride": [
            {
              "value": "broker",
              "availableInVersion": "1.24012.0"
            }
          ]
        },
        "otlpEndpoint": {
          "type": "string",
          "format": "uri",
          "title": "OTLP endpoint",
          "description": "Where OpenTelemetry logs and metrics are sent. Leave blank to disable.",
          "x-flatKey": "otlpEndpoint",
          "x-readers": [
            "desktop",
            "m365"
          ],
          "x-availableInVersion": "1.2581.0",
          "x-availability": "both",
          "x-deprecated": false,
          "x-beta": false,
          "x-consentRequired": false,
          "x-originPinned": false,
          "x-selfHosted": {
            "execution": "none",
            "why": "Whoever runs the host names the collector in the host's own configuration, for its sessions and Desktop's events"
          }
        },
        "otlpProtocol": {
          "type": "string",
          "enum": [
            "http/protobuf",
            "http/json",
            "grpc"
          ],
          "title": "OTLP protocol",
          "description": "Transport protocol for the OpenTelemetry exporters.",
          "default": "http/protobuf",
          "x-flatKey": "otlpProtocol",
          "x-readers": [
            "desktop",
            "m365"
          ],
          "x-availableInVersion": "1.2581.0",
          "x-availability": "both",
          "x-deprecated": false,
          "x-beta": false,
          "x-consentRequired": false,
          "x-originPinned": false,
          "x-selfHosted": {
            "execution": "none",
            "why": "Set beside the collector's address in the host's own configuration"
          }
        },
        "otlpHeaders": {
          "type": "object",
          "propertyNames": {
            "type": "string"
          },
          "additionalProperties": {
            "type": "string"
          },
          "title": "OTLP headers",
          "description": "Static collector headers — routing and tenant headers only. No credentials here; use Collector authentication or the headers helper script for tokens.",
          "x-flatKey": "otlpHeaders",
          "x-readers": [
            "desktop",
            "m365"
          ],
          "x-availableInVersion": "1.2581.0",
          "x-availability": "both",
          "x-deprecated": false,
          "x-beta": false,
          "x-consentRequired": false,
          "x-originPinned": false,
          "x-selfHosted": {
            "execution": "none",
            "why": "The host keeps the collector's headers in its own configuration, so no document that a device fetches holds them"
          }
        },
        "otlpAuthMode": {
          "type": "string",
          "enum": [
            "none",
            "inference-credential"
          ],
          "title": "Collector authentication",
          "description": "inference-credential sends the user’s inference bearer token to the collector as Authorization: Bearer.",
          "x-flatKey": "otlpAuthMode",
          "x-availableInVersion": "1.30096.1",
          "x-availability": "both",
          "x-deprecated": false,
          "x-beta": false,
          "x-consentRequired": false,
          "x-originPinned": false,
          "x-selfHosted": {
            "execution": "none",
            "why": "Would send the person's model token to the collector; a self-hosted Desktop holds none, and no host reads this"
          }
        },
        "otlpHeadersHelper": {
          "type": "string",
          "minLength": 1,
          "title": "OTLP headers helper script",
          "description": "Absolute path to an executable that prints a JSON object of collector headers. Merged over the static headers and Collector authentication; the helper wins.",
          "x-flatKey": "otlpHeadersHelper",
          "x-availableInVersion": "1.30096.1",
          "x-availability": "both",
          "x-deprecated": false,
          "x-beta": false,
          "x-consentRequired": true,
          "x-originPinned": false,
          "x-selfHosted": {
            "execution": "none",
            "why": "Desktop sends its own events to the host, which holds the collector's headers, so it runs no helper"
          }
        },
        "otlpResourceAttributes": {
          "type": "object",
          "propertyNames": {
            "type": "string"
          },
          "additionalProperties": {
            "type": "string"
          },
          "title": "Resource attributes",
          "description": "Extra resource attributes to attach to every span/metric. A static enduser.id set here always wins over the runtime identity.",
          "x-flatKey": "otlpResourceAttributes",
          "x-readers": [
            "desktop",
            "m365"
          ],
          "x-availableInVersion": "1.5354.0",
          "x-availability": "both",
          "x-deprecated": false,
          "x-beta": false,
          "x-consentRequired": false,
          "x-originPinned": false,
          "x-selfHosted": {
            "execution": "server",
            "why": "The host stamps these attributes on the session telemetry it sends and on Desktop's events that it forwards"
          }
        },
        "otlpDesktopLogLevel": {
          "type": "string",
          "enum": [
            "off",
            "error",
            "warn",
            "info",
            "debug"
          ],
          "title": "Desktop telemetry export level",
          "description": "Controls the Claude Desktop application’s events, separate from Cowork and Code sessions. Defaults to error.",
          "default": "error",
          "x-flatKey": "otlpDesktopLogLevel",
          "x-availableInVersion": "1.9255.0",
          "x-availability": "both",
          "x-deprecated": false,
          "x-beta": false,
          "x-consentRequired": false,
          "x-originPinned": false,
          "x-selfHosted": {
            "execution": "server",
            "why": "The host tells Desktop at which level to send its own events, and filters them again before it forwards them"
          }
        },
        "otlpContentCapture": {
          "type": "array",
          "items": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "userPrompts",
                  "assistantResponses",
                  "toolDetails",
                  "toolContent",
                  "rawApiBodies"
                ]
              },
              {
                "type": "string"
              }
            ],
            "description": "Known values are listed; a client ignores a value it does not know, so a newer client's vocabulary is storable as is."
          },
          "title": "Content capture",
          "description": "Content categories Claude Desktop sends unredacted to your collector. `userPrompts` also sends Claude’s responses. If empty, no category is enabled (default).",
          "x-flatKey": "otlpContentCapture",
          "x-readers": [
            "desktop",
            "m365"
          ],
          "x-whenUnreadable": {
            "applies": []
          },
          "x-availableInVersion": "1.15962.0",
          "x-availability": "both",
          "x-deprecated": false,
          "x-beta": false,
          "x-consentRequired": false,
          "x-originPinned": false,
          "x-selfHosted": {
            "execution": "server",
            "why": "The host decides how much of a session's content its telemetry carries"
          }
        },
        "otlpTracesEnabled": {
          "type": "boolean",
          "title": "Export traces",
          "description": "Also export OpenTelemetry traces from Cowork tasks and Code sessions. Uses Claude Code’s session tracing.",
          "x-flatKey": "otlpTracesEnabled",
          "x-readers": [
            "desktop",
            "m365"
          ],
          "x-availableInVersion": "1.22209.0",
          "x-availability": "both",
          "x-deprecated": false,
          "x-beta": false,
          "x-consentRequired": false,
          "x-originPinned": false,
          "x-selfHosted": {
            "execution": "server",
            "why": "The host turns traces on or off in the session telemetry it sends"
          }
        },
        "otlpAttrMaxChars": {
          "type": "integer",
          "minimum": 256,
          "maximum": 15000000,
          "title": "Telemetry attribute length limit",
          "description": "Maximum length, in characters, of captured content such as a raw API body (256–15,000,000). Cowork tasks and Code sessions use 61,440 when unset.",
          "x-flatKey": "otlpAttrMaxChars",
          "x-readers": [
            "desktop",
            "m365"
          ],
          "x-availableInVersion": "2.31226.0",
          "x-availability": "both",
          "x-deprecated": false,
          "x-beta": false,
          "x-consentRequired": false,
          "x-originPinned": false,
          "x-selfHosted": {
            "execution": "server",
            "why": "The host cuts long values in the session telemetry it sends"
          }
        },
        "inferenceMaxTokensPerWindow": {
          "type": "integer",
          "exclusiveMinimum": 0,
          "maximum": 9007199254740991,
          "title": "Max tokens per window",
          "description": "Limits each person’s input and output tokens per window. Cached tokens do not count, so this does not cap your provider’s bill. Leave blank for no limit.",
          "x-flatKey": "inferenceMaxTokensPerWindow",
          "x-availableInVersion": "1.2581.0",
          "x-availability": "both",
          "x-deprecated": false,
          "x-beta": false,
          "x-consentRequired": false,
          "x-originPinned": false,
          "x-selfHosted": {
            "execution": "server",
            "why": "The host makes the model calls, so it counts each person's tokens and stops them at the cap"
          }
        },
        "inferenceTokenWindowHours": {
          "type": "integer",
          "exclusiveMinimum": 0,
          "maximum": 720,
          "title": "Token cap window",
          "description": "The count resets to zero at the end of each window. A window can last 1 to 720 hours (30 days).",
          "x-flatKey": "inferenceTokenWindowHours",
          "x-availableInVersion": "1.2581.0",
          "x-availability": "both",
          "x-deprecated": false,
          "x-beta": false,
          "x-consentRequired": false,
          "x-originPinned": false,
          "x-selfHosted": {
            "execution": "server",
            "why": "Sets the length of the window for the token cap, which the host counts"
          }
        },
        "coworkTabEnabled": {
          "type": "boolean",
          "title": "Allow Cowork",
          "description": "Enable Cowork. Claude works on longer tasks like research, analysis, and documents.",
          "default": true,
          "x-flatKey": "coworkTabEnabled",
          "x-whenUnreadable": {
            "applies": false
          },
          "x-availableInVersion": "1.9659.0",
          "x-availability": "both",
          "x-deprecated": false,
          "x-beta": false,
          "x-consentRequired": false,
          "x-originPinned": false,
          "x-selfHosted": {
            "execution": "none",
            "why": "On a session host desktopHome alone decides Cowork: to turn Cowork off, set desktopHome to off in its policy document"
          }
        },
        "isClaudeCodeForDesktopEnabled": {
          "type": "boolean",
          "title": "Allow Code",
          "description": "Enable Code. Claude writes and runs code.",
          "default": true,
          "x-flatKey": "isClaudeCodeForDesktopEnabled",
          "x-whenUnreadable": {
            "applies": false
          },
          "x-availableInVersion": "1.2581.0",
          "x-availability": "both",
          "x-deprecated": false,
          "x-beta": false,
          "x-consentRequired": false,
          "x-originPinned": false,
          "x-selfHosted": {
            "execution": "server",
            "why": "The host refuses Code sessions and routines where the tab is off, and tells Desktop to hide it"
          }
        },
        "sshHostAllowlist": {
          "type": "array",
          "items": {
            "type": "string",
            "minLength": 1
          },
          "title": "SSH host allowlist",
          "description": "SSH hosts for Code sessions. Unset: off unless the device’s Claude Code managed settings list hosts. An admin’s empty list: off even then. * allows any host.",
          "x-flatKey": "sshHostAllowlist",
          "x-whenUnreadable": {
            "applies": []
          },
          "x-availableInVersion": "1.40609.0",
          "x-availability": "both",
          "x-deprecated": false,
          "x-beta": true,
          "x-consentRequired": false,
          "x-originPinned": false,
          "x-selfHosted": {
            "execution": "none",
            "why": "Governs SSH sessions started from the person's computer, which self-hosted installs never offer"
          }
        },
        "sshClientPath": {
          "type": "string",
          "minLength": 1,
          "title": "SSH client program",
          "description": "Absolute path to the OpenSSH ssh program the app runs for SSH sessions. Unset: the first ssh on the user’s PATH.",
          "x-flatKey": "sshClientPath",
          "x-whenUnreadable": {
            "unusable": true
          },
          "x-availableInVersion": "1.46388.1",
          "x-availability": "both",
          "x-deprecated": false,
          "x-beta": true,
          "x-consentRequired": true,
          "x-originPinned": false,
          "x-selfHosted": {
            "execution": "none",
            "why": "Names the ssh program on the person's computer, and self-hosted installs offer no SSH sessions"
          }
        },
        "sshTransport": {
          "type": "string",
          "enum": [
            "auto",
            "system-openssh",
            "builtin"
          ],
          "title": "SSH connection engine",
          "description": "Which SSH engine carries Code sessions: the OpenSSH ssh program on the device, or the app’s built-in SSH library. Unset or auto: the build’s default.",
          "x-flatKey": "sshTransport",
          "x-whenUnreadable": {
            "applies": "builtin"
          },
          "x-availableInVersion": "1.52386.0",
          "x-availability": "both",
          "x-deprecated": false,
          "x-beta": true,
          "x-consentRequired": false,
          "x-originPinned": false,
          "x-selfHosted": {
            "execution": "none",
            "why": "Chooses the SSH engine on the person's computer, and self-hosted installs offer no SSH sessions"
          }
        },
        "chatTabEnabled": {
          "type": "boolean",
          "title": "Allow Chat",
          "description": "Enable Chat. Quick questions and drafting.",
          "x-flatKey": "chatTabEnabled",
          "x-availableInVersion": "1.13576.0",
          "x-availability": "both",
          "x-deprecated": false,
          "x-beta": false,
          "x-consentRequired": false,
          "x-originPinned": false,
          "x-selfHosted": {
            "execution": "none",
            "why": "No Chat session can start on a session host, so the switch has nothing to turn on or off there"
          }
        },
        "chatAdvancedFileAnalysisEnabled": {
          "type": "boolean",
          "title": "Advanced file analysis",
          "description": "Allow Claude to run code in a local sandbox to analyze attached files it can’t read natively — like Excel and PowerPoint. Off by default.",
          "x-flatKey": "chatAdvancedFileAnalysisEnabled",
          "x-availableInVersion": "1.14271.0",
          "x-availability": "both",
          "x-deprecated": false,
          "x-beta": false,
          "x-consentRequired": false,
          "x-originPinned": false,
          "x-selfHosted": {
            "execution": "none",
            "why": "Configures a Chat session's local sandbox, and no Chat session can start on a self-hosted install"
          }
        },
        "desktopHome": {
          "type": "string",
          "enum": [
            "standard",
            "simple",
            "no-vm",
            "off"
          ],
          "title": "Desktop home",
          "description": "Unifies Chat and Cowork into one home. When set, it replaces Allow Chat, Advanced file analysis, and Allow Cowork. Leave unset to keep those.",
          "x-flatKey": "desktopHome",
          "x-whenUnreadable": {
            "applies": "off"
          },
          "x-availableInVersion": "1.52386.0",
          "x-availability": "both",
          "x-deprecated": false,
          "x-beta": false,
          "x-consentRequired": false,
          "x-originPinned": false,
          "x-selfHosted": {
            "execution": "server",
            "why": "Alone decides Cowork, which is on only while this is unset or standard; else the host refuses it and Desktop hides it"
          },
          "x-valueAvailableInVersionOverride": [
            {
              "value": "no-vm",
              "availableInVersion": "2.2553.0"
            }
          ]
        },
        "chatSessionRetentionDays": {
          "type": "integer",
          "minimum": 1,
          "maximum": 3650,
          "title": "Chat retention period",
          "description": "Delete chats, with their files, after this many days without activity. Unset: kept until the user deletes them. Projects and memory stay.",
          "x-flatKey": "chatSessionRetentionDays",
          "x-availableInVersion": "1.52386.0",
          "x-availability": "both",
          "x-deprecated": false,
          "x-beta": false,
          "x-consentRequired": false,
          "x-originPinned": false,
          "x-selfHosted": {
            "execution": "none",
            "why": "Chat runs only on the person's computer, so a session host holds no chats to delete"
          }
        },
        "coworkSessionRetentionDays": {
          "type": "integer",
          "minimum": 1,
          "maximum": 3650,
          "title": "Cowork retention period",
          "description": "Delete Cowork tasks, with their uploads and outputs, after this many days without activity. Unset: kept until the user deletes them. Spaces and memory stay.",
          "x-flatKey": "coworkSessionRetentionDays",
          "x-availableInVersion": "1.52386.0",
          "x-availability": "both",
          "x-deprecated": false,
          "x-beta": false,
          "x-consentRequired": false,
          "x-originPinned": false,
          "x-selfHosted": {
            "execution": "server",
            "why": "The host keeps the Cowork sessions it runs, so it deletes those left idle longer than the admin allows"
          }
        },
        "codeSessionRetentionDays": {
          "type": "integer",
          "minimum": 1,
          "maximum": 3650,
          "title": "Code retention period",
          "description": "Delete Code sessions, conversation included, after this many days without activity. Unset: kept until the user deletes them. Uncommitted work stays on disk.",
          "x-flatKey": "codeSessionRetentionDays",
          "x-availableInVersion": "1.52386.0",
          "x-availability": "both",
          "x-deprecated": false,
          "x-beta": false,
          "x-consentRequired": false,
          "x-originPinned": false,
          "x-selfHosted": {
            "execution": "server",
            "why": "The host keeps the Code sessions it runs, so it deletes those left idle longer than the admin allows"
          }
        },
        "sessionRetentionHold": {
          "type": "boolean",
          "title": "Suspend session deletion",
          "description": "Suspend all automatic session deletion for these users (legal hold). While on, the retention periods above delete nothing.",
          "x-flatKey": "sessionRetentionHold",
          "x-whenUnreadable": {
            "applies": true
          },
          "x-availableInVersion": "1.52386.0",
          "x-availability": "both",
          "x-deprecated": false,
          "x-beta": false,
          "x-consentRequired": false,
          "x-originPinned": false,
          "x-selfHosted": {
            "execution": "server",
            "why": "The host keeps the sessions, so it is the one that stops deleting them during a hold"
          }
        },
        "isDesktopExtensionEnabled": {
          "type": "boolean",
          "title": "Allow desktop extensions",
          "description": ".dxt and .mcpb installs.",
          "default": false,
          "x-flatKey": "isDesktopExtensionEnabled",
          "x-whenUnreadable": {
            "applies": false
          },
          "x-availableInVersion": "1.2581.0",
          "x-availability": "both",
          "x-deprecated": false,
          "x-beta": false,
          "x-consentRequired": false,
          "x-originPinned": false,
          "x-selfHosted": {
            "execution": "none",
            "why": "Desktop keeps extensions off on a self-hosted install, whatever this setting says"
          }
        },
        "isDesktopExtensionSignatureRequired": {
          "type": "boolean",
          "title": "Require signed extensions",
          "description": "Reject desktop extensions that are not signed by a trusted publisher.",
          "default": false,
          "x-flatKey": "isDesktopExtensionSignatureRequired",
          "x-whenUnreadable": {
            "applies": true
          },
          "x-availableInVersion": "1.2581.0",
          "x-availability": "both",
          "x-deprecated": false,
          "x-beta": false,
          "x-consentRequired": false,
          "x-originPinned": false,
          "x-selfHosted": {
            "execution": "none",
            "why": "Desktop installs no extension on a self-hosted install, so there is no signature for it to require"
          }
        },
        "disableAutoUpdates": {
          "type": "boolean",
          "title": "Block auto-updates",
          "description": "Stop Claude Desktop from fetching updates entirely (no time limit). You’ll need to push new versions yourself.",
          "default": false,
          "x-flatKey": "disableAutoUpdates",
          "x-availableInVersion": "1.2581.0",
          "x-availability": "both",
          "x-deprecated": false,
          "x-beta": false,
          "x-consentRequired": false,
          "x-originPinned": false,
          "x-selfHosted": {
            "execution": "client",
            "why": "Desktop starts its updater at launch, before it has signed in to the host"
          }
        },
        "installedUpdateEnforcementEnabled": {
          "type": "boolean",
          "title": "Restart to apply installed updates",
          "description": "With auto-updates blocked, Claude restarts for a newer version installed while it was open, after 72 hours or your window. On Windows it may stay closed.",
          "x-flatKey": "installedUpdateEnforcementEnabled",
          "x-whenUnreadable": {
            "applies": false
          },
          "x-availableInVersion": "3.6556.1",
          "x-availability": "both",
          "x-deprecated": false,
          "x-beta": false,
          "x-consentRequired": false,
          "x-originPinned": false,
          "x-selfHosted": {
            "execution": "none",
            "why": "Governs Desktop's own restart for a version installed on the computer, and no session host passes it on to Desktop yet"
          }
        },
        "installedUpdateEnforcementHours": {
          "type": "integer",
          "exclusiveMinimum": 0,
          "maximum": 72,
          "title": "Installed-update enforcement window",
          "description": "Hours Claude waits to restart for a newer version installed while it was open. Blank: 72 hours, then until the computer is idle. A number skips the idle wait.",
          "x-flatKey": "installedUpdateEnforcementHours",
          "x-availableInVersion": "3.6556.1",
          "x-availability": "both",
          "x-deprecated": false,
          "x-beta": false,
          "x-consentRequired": false,
          "x-originPinned": false,
          "x-selfHosted": {
            "execution": "none",
            "why": "Times Desktop's own restart for a version installed on the computer, and no session host passes it on to Desktop yet"
          }
        },
        "autoUpdaterEnforcementHours": {
          "type": "integer",
          "exclusiveMinimum": 0,
          "maximum": 72,
          "title": "Auto-update enforcement window",
          "description": "Hours before a downloaded update force-installs. Only applies when auto-updates are enabled. Blank = 72-hour default.",
          "x-flatKey": "autoUpdaterEnforcementHours",
          "x-availableInVersion": "1.2581.0",
          "x-availability": "both",
          "x-deprecated": false,
          "x-beta": false,
          "x-consentRequired": false,
          "x-originPinned": false,
          "x-selfHosted": {
            "execution": "reported",
            "why": "Desktop itself quits and installs a downloaded update of the app on the person's computer"
          }
        },
        "updateViaUpdatesHost": {
          "type": "boolean",
          "title": "Check for updates on releases.claude.com",
          "description": "Read the update feed from releases.claude.com so api.anthropic.com can stay blocked.",
          "default": false,
          "x-flatKey": "updateViaUpdatesHost",
          "x-availableInVersion": "1.26832.0",
          "x-availability": "both",
          "x-deprecated": false,
          "x-beta": false,
          "x-consentRequired": false,
          "x-originPinned": false,
          "x-selfHosted": {
            "execution": "none",
            "why": "Where the session host answers the app's update checks, no Anthropic update server is left to choose"
          }
        },
        "releaseChannel": {
          "type": "string",
          "enum": [
            "stable",
            "staggered"
          ],
          "title": "Release channel",
          "description": "On Stable, devices take each release as it rolls out. On Staggered, they update less often, usually to a version first out on Stable a week or more earlier.",
          "default": "stable",
          "x-flatKey": "releaseChannel",
          "x-whenUnreadable": {
            "applies": "staggered"
          },
          "x-availableInVersion": "3.1623.0",
          "x-availability": "both",
          "x-deprecated": false,
          "x-beta": false,
          "x-consentRequired": false,
          "x-originPinned": false,
          "x-selfHosted": {
            "execution": "client",
            "why": "On staggered, the person can update only once Desktop has downloaded a build; the session host ignores the channel"
          }
        },
        "disableFeatureDiscovery": {
          "type": "boolean",
          "title": "Hide feature announcements",
          "description": "Suppress unprompted feature-announcement UI: the post-update “What’s new” nudge and new-feature tips. Users can still open release notes themselves.",
          "default": false,
          "x-flatKey": "disableFeatureDiscovery",
          "x-whenUnreadable": {
            "applies": true
          },
          "x-availableInVersion": "1.21459.0",
          "x-availability": "both",
          "x-deprecated": false,
          "x-beta": false,
          "x-consentRequired": false,
          "x-originPinned": false,
          "x-selfHosted": {
            "execution": "reported",
            "why": "Desktop hides its own announcements of new features"
          }
        },
        "relaunchEnforcementHours": {
          "type": "integer",
          "minimum": 0,
          "maximum": 336,
          "title": "Configuration relaunch window",
          "description": "Hours a user may keep working on the old configuration after a managed-configuration change is detected. 0 = restart required at once. Blank = 24 hours.",
          "default": 24,
          "x-flatKey": "relaunchEnforcementHours",
          "x-availableInVersion": "1.40609.0",
          "x-availability": "both",
          "x-deprecated": false,
          "x-beta": false,
          "x-consentRequired": false,
          "x-originPinned": false,
          "x-selfHosted": {
            "execution": "reported",
            "why": "Desktop itself restarts on the person's computer after a change to the settings it reads from the device"
          }
        },
        "configRecheckIntervalMinutes": {
          "type": "integer",
          "minimum": 2,
          "maximum": 30,
          "title": "Configuration re-check interval",
          "description": "Minutes between the running app’s checks for a changed managed configuration. Blank = 10 minutes.",
          "default": 10,
          "x-flatKey": "configRecheckIntervalMinutes",
          "x-availableInVersion": "1.46388.1",
          "x-availability": "both",
          "x-deprecated": false,
          "x-beta": false,
          "x-consentRequired": false,
          "x-originPinned": false,
          "x-selfHosted": {
            "execution": "server",
            "why": "The host refreshes its own copy of the policy at least this often, and tells Desktop how often to ask it again"
          }
        },
        "modelDiscoveryEnabled": {
          "type": "boolean",
          "title": "Model discovery",
          "description": "Auto-populate the model picker from the provider at launch.",
          "x-flatKey": "modelDiscoveryEnabled",
          "x-availableInVersion": "1.8089.0",
          "x-availability": "both",
          "x-deprecated": false,
          "x-beta": false,
          "x-consentRequired": false,
          "x-originPinned": false,
          "x-selfHosted": {
            "execution": "none",
            "why": "A session host states the models it offers, so Desktop discovers none itself, whatever this says"
          }
        },
        "modelPrefer1mContext": {
          "type": "boolean",
          "title": "Use 1M wherever it’s available",
          "description": "Every model that offers 1M, in your list or from your gateway, shows one option and requests 1M.",
          "x-flatKey": "modelPrefer1mContext",
          "x-availableInVersion": "1.28929.0",
          "x-availability": "both",
          "x-deprecated": false,
          "x-beta": false,
          "x-consentRequired": false,
          "x-originPinned": false,
          "x-selfHosted": {
            "execution": "server",
            "why": "When on, the host gives a session that names no model the 1M-token context, and tells Desktop"
          }
        },
        "inferenceModels": {
          "minItems": 1,
          "type": "array",
          "items": {
            "anyOf": [
              {
                "type": "string",
                "minLength": 1
              },
              {
                "type": "object",
                "properties": {
                  "name": {
                    "type": "string",
                    "minLength": 1,
                    "title": "Model ID",
                    "description": "Model ID exactly as the provider expects it. The first entry is the default model.",
                    "x-consentRequired": false
                  },
                  "labelOverride": {
                    "type": "string",
                    "title": "Display name",
                    "description": "Shown in the model picker. Leave blank to auto-format from the ID.",
                    "x-consentRequired": false
                  },
                  "supports1m": {
                    "type": "boolean",
                    "title": "Offer 1M-context variant",
                    "description": "Adds a 1M-context variant of this model to the picker. Set only if the deployment accepts 1M-token context for it.",
                    "x-consentRequired": false
                  },
                  "prefer1m": {
                    "type": "boolean",
                    "title": "Only show the 1M option",
                    "description": "Shows one option for this model and requests 1M from your provider. Does nothing unless the entry offers 1M.",
                    "x-consentRequired": false,
                    "x-availableInVersionOverride": "1.21459.0"
                  },
                  "anthropicFamilyTier": {
                    "type": "string",
                    "enum": [
                      "sonnet",
                      "opus",
                      "haiku",
                      "fable",
                      "mythos"
                    ],
                    "title": "Tier alias",
                    "description": "Which Claude tier this model stands in for. Pins the bare alias (e.g. ‘opus’) and, for opus/fable, the refusal fallback.",
                    "x-consentRequired": false,
                    "x-availableInVersionOverride": "1.13576.0"
                  },
                  "isFamilyDefault": {
                    "type": "boolean",
                    "title": "Default for tier",
                    "description": "When several models share a tier alias, marks this one as the model the alias resolves to. Otherwise the first listed wins.",
                    "x-consentRequired": false,
                    "x-availableInVersionOverride": "1.13576.0"
                  },
                  "maxEffort": {
                    "type": "string",
                    "enum": [
                      "low",
                      "medium",
                      "high",
                      "xhigh",
                      "max"
                    ],
                    "title": "Max effort",
                    "description": "Highest effort level offered for this model; higher levels are hidden and never requested by Claude Desktop. An unrecognized value caps the model at low.",
                    "x-consentRequired": false,
                    "x-availableInVersionOverride": "2.110.0"
                  }
                },
                "required": [
                  "name"
                ]
              }
            ]
          },
          "title": "Model list",
          "description": "Override the auto-discovered model list. First entry is the default.",
          "x-flatKey": "inferenceModels",
          "x-readers": [
            "desktop",
            "m365"
          ],
          "x-availableInVersion": "1.2581.0",
          "x-availability": "both",
          "x-deprecated": false,
          "x-beta": false,
          "x-consentRequired": false,
          "x-originPinned": false,
          "x-selfHosted": {
            "execution": "server",
            "why": "The host runs a session only on a model from this list, and tells Desktop what to show"
          }
        },
        "defaultModelEffort": {
          "type": "string",
          "enum": [
            "low",
            "medium",
            "high",
            "xhigh",
            "max"
          ],
          "title": "Default model effort",
          "description": "Effort level the default model (the first listed model) starts at, instead of Anthropic’s recommended level: low, medium, high, xhigh or max.",
          "x-flatKey": "defaultModelEffort",
          "x-availableInVersion": "2.110.0",
          "x-availability": "both",
          "x-deprecated": false,
          "x-beta": false,
          "x-consentRequired": false,
          "x-originPinned": false,
          "x-selfHosted": {
            "execution": "server",
            "why": "The host sets the effort of a session that names none, and tells Desktop what to preselect"
          }
        },
        "alwaysStartWithDefaultModel": {
          "type": "boolean",
          "title": "Always start with the default model",
          "description": "New conversations and tasks start on the default model and effort level, not each person’s last-used ones. People can still change both for the current one.",
          "x-flatKey": "alwaysStartWithDefaultModel",
          "x-whenUnreadable": {
            "applies": true
          },
          "x-availableInVersion": "2.110.0",
          "x-availability": "both",
          "x-deprecated": false,
          "x-beta": false,
          "x-consentRequired": false,
          "x-originPinned": false,
          "x-selfHosted": {
            "execution": "reported",
            "why": "Desktop's model picker acts on it, starting each new session on the default model"
          }
        },
        "inferenceModelPricingEnabled": {
          "type": "boolean",
          "title": "Show estimated cost",
          "description": "Show an estimated cost on the Usage page at Anthropic list price; turn on to set a multiplier or per-model rates.",
          "x-flatKey": "inferenceModelPricingEnabled",
          "x-availableInVersion": "1.37937.0",
          "x-availability": "both",
          "x-deprecated": false,
          "x-beta": false,
          "x-consentRequired": false,
          "x-originPinned": false,
          "x-selfHosted": {
            "execution": "server",
            "why": "When on, the host gives its sessions the admin's rates and multiplier; Desktop shows cost once they report it per turn"
          }
        },
        "inferenceModelPricingMultiplier": {
          "type": "number",
          "exclusiveMinimum": 0,
          "maximum": 1,
          "title": "Price multiplier",
          "description": "Scales every estimated cost (0.85 = 85% of the price); between 0 and 1.",
          "x-flatKey": "inferenceModelPricingMultiplier",
          "x-availableInVersion": "1.37937.0",
          "x-availability": "both",
          "x-deprecated": false,
          "x-beta": false,
          "x-consentRequired": false,
          "x-originPinned": false,
          "x-selfHosted": {
            "execution": "server",
            "why": "While Show estimated cost is on, the host hands Claude Code this multiplier for the cost its sessions report"
          }
        },
        "inferenceModelPricing": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "name": {
                "type": "string",
                "minLength": 1,
                "title": "Model ID",
                "description": "A model ID from the list above, or any other ID or alias your provider serves. A built-in Claude ID also covers its dated and provider forms.",
                "x-consentRequired": false
              },
              "inputPerMtok": {
                "type": "number",
                "minimum": 0,
                "maximum": 10000,
                "title": "Input",
                "description": "USD per million input tokens.",
                "x-consentRequired": false
              },
              "outputPerMtok": {
                "type": "number",
                "minimum": 0,
                "maximum": 10000,
                "title": "Output",
                "description": "USD per million output tokens.",
                "x-consentRequired": false
              },
              "cacheReadPerMtok": {
                "type": "number",
                "minimum": 0,
                "maximum": 10000,
                "title": "Cache read",
                "description": "USD per million prompt-cache read tokens.",
                "x-consentRequired": false
              },
              "cacheWritePerMtok": {
                "type": "number",
                "minimum": 0,
                "maximum": 10000,
                "title": "Cache write",
                "description": "USD per million prompt-cache write tokens (5-minute and 1-hour writes alike).",
                "x-consentRequired": false
              }
            },
            "required": [
              "name",
              "inputPerMtok",
              "outputPerMtok",
              "cacheReadPerMtok",
              "cacheWritePerMtok"
            ]
          },
          "title": "Model pricing",
          "description": "Per-model rates replacing Anthropic list price in the Usage page’s estimate.",
          "x-flatKey": "inferenceModelPricing",
          "x-availableInVersion": "1.37937.0",
          "x-availability": "both",
          "x-deprecated": false,
          "x-beta": false,
          "x-consentRequired": false,
          "x-originPinned": false,
          "x-selfHosted": {
            "execution": "server",
            "why": "While Show estimated cost is on, the host hands Claude Code these rates for the cost its sessions report"
          }
        },
        "modelCatalogEnabled": {
          "type": "boolean",
          "title": "Model catalog metadata",
          "description": "Fetch the published Claude Code model catalog to get model picker names, descriptions, and effort options. When off, the app uses only its bundled copy.",
          "x-flatKey": "modelCatalogEnabled",
          "x-whenUnreadable": {
            "applies": false
          },
          "x-availableInVersion": "2.110.0",
          "x-availability": "both",
          "x-deprecated": false,
          "x-beta": false,
          "x-consentRequired": false,
          "x-originPinned": false,
          "x-selfHosted": {
            "execution": "server",
            "why": "The host serves the model catalog's rows to Desktop, and to nobody for whom this is off"
          }
        },
        "modelCatalogUrl": {
          "type": "string",
          "format": "uri",
          "title": "Model catalog URL",
          "description": "Fetch the model catalog and its signature file from this URL (a mirror inside your network serving Anthropic’s published files) instead of downloads.claude.ai.",
          "x-consentRequired": false,
          "x-flatKey": "modelCatalogUrl",
          "x-whenUnreadable": {
            "unusable": true
          },
          "x-availableInVersion": "2.110.0",
          "x-availability": "both",
          "x-deprecated": false,
          "x-beta": false,
          "x-originPinned": false,
          "x-selfHosted": {
            "execution": "reported",
            "why": "Only Desktop versions too old to take the model catalog's rows from their session host fetch from here"
          }
        },
        "orgPluginSettings": {
          "type": "array",
          "items": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "serverName": {
                    "type": "string",
                    "minLength": 1,
                    "title": "Server name",
                    "description": "Name of the plugin-delivered MCP server this policy applies to.",
                    "x-consentRequired": false,
                    "x-availableInVersionOverride": "1.15200.0"
                  },
                  "tools": {
                    "type": "array",
                    "items": {
                      "anyOf": [
                        {
                          "type": "object",
                          "properties": {
                            "toolName": {
                              "type": "string",
                              "minLength": 1,
                              "title": "Tool",
                              "description": "MCP tool name as the server reports it.",
                              "x-consentRequired": false
                            },
                            "permission": {
                              "type": "string",
                              "enum": [
                                "allow",
                                "ask",
                                "ask-session",
                                "blocked"
                              ],
                              "title": "Permission",
                              "description": "Approval state locked for this tool. Unlisted tools stay user-controlled.",
                              "x-consentRequired": false,
                              "x-deprecatedValues": [
                                {
                                  "value": "ask-session",
                                  "use": "ask",
                                  "warnFrom": "2026-09-10",
                                  "supportEnds": "2026-10-07"
                                }
                              ],
                              "x-valueAvailableInVersionOverride": [
                                {
                                  "value": "ask-session",
                                  "availableInVersion": "1.21459.0"
                                }
                              ]
                            }
                          },
                          "required": [
                            "toolName",
                            "permission"
                          ]
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "title": "Tool policy",
                    "description": "Per-tool approval locks for this server.",
                    "x-consentRequired": false,
                    "x-availableInVersionOverride": "1.15200.0"
                  }
                },
                "required": [
                  "serverName"
                ]
              },
              {
                "type": "null"
              }
            ]
          },
          "title": "Organization plugin settings",
          "description": "Admin policy applied to plugin-delivered MCP servers.",
          "x-flatKey": "orgPluginSettings",
          "x-whenUnreadable": {
            "unusable": true
          },
          "x-availableInVersion": "1.8089.0",
          "x-availability": "both",
          "x-deprecated": false,
          "x-beta": false,
          "x-consentRequired": false,
          "x-originPinned": false,
          "x-selfHosted": {
            "execution": "server",
            "why": "The host applies the admin's per-tool locks, and no plugin's MCP server is started on the computer"
          }
        },
        "allowedPluginMarketplaces": {
          "type": "array",
          "items": {
            "anyOf": [
              {
                "oneOf": [
                  {
                    "type": "object",
                    "properties": {
                      "source": {
                        "type": "string",
                        "const": "github",
                        "title": "Source",
                        "description": "Where the marketplace is fetched from: a GitHub repository (set repo), any Git remote (set url), or a hosted marketplace.json file (set url).",
                        "x-consentRequired": false
                      },
                      "repo": {
                        "type": "string",
                        "pattern": "^[^\\s/]+\\/[^\\s/]+$",
                        "title": "Repository",
                        "description": "GitHub repository in owner/repo form. Case-insensitive.",
                        "x-consentRequired": false
                      },
                      "ref": {
                        "title": "Ref",
                        "description": "Commit SHA, branch, or tag. Leave empty to track the default branch; auto_install and required need a full 40-character commit SHA.",
                        "x-consentRequired": false,
                        "type": "string",
                        "minLength": 1
                      },
                      "path": {
                        "title": "Subpath",
                        "description": "Folder within the repository that contains the marketplace, when it isn’t at the root.",
                        "x-consentRequired": false,
                        "type": "string",
                        "minLength": 1
                      },
                      "expectedName": {
                        "title": "Expected name",
                        "description": "Rejects the marketplace if its manifest name differs.",
                        "x-consentRequired": false,
                        "type": "string",
                        "pattern": "^[A-Za-z0-9](?:[A-Za-z0-9._-]{0,126}[A-Za-z0-9_-])?$"
                      },
                      "installationPreference": {
                        "title": "Installation",
                        "description": "Whether users install plugins themselves or get them automatically.",
                        "x-consentRequired": false,
                        "type": "string",
                        "enum": [
                          "available",
                          "auto_install",
                          "required"
                        ]
                      },
                      "credentialKind": {
                        "title": "Auth",
                        "description": "How fetches authenticate: anonymously, with the user’s git credentials, via a helper executable, or as the app does to its gateway or bootstrap server (url).",
                        "x-consentRequired": false,
                        "type": "string",
                        "enum": [
                          "anonymous",
                          "userGit",
                          "credentialHelper"
                        ]
                      },
                      "credentialHelper": {
                        "title": "Credential helper",
                        "description": "Executable that prints an access token for this marketplace.",
                        "x-consentRequired": true,
                        "type": "string",
                        "minLength": 1
                      }
                    },
                    "required": [
                      "source",
                      "repo"
                    ]
                  },
                  {
                    "type": "object",
                    "properties": {
                      "source": {
                        "type": "string",
                        "const": "git",
                        "title": "Source",
                        "description": "Where the marketplace is fetched from: a GitHub repository (set repo), any Git remote (set url), or a hosted marketplace.json file (set url).",
                        "x-consentRequired": false
                      },
                      "url": {
                        "title": "URL",
                        "description": "HTTPS Git remote of the marketplace repository (git), or direct HTTPS URL of a hosted marketplace.json file (url).",
                        "x-consentRequired": false,
                        "type": "string",
                        "format": "uri"
                      },
                      "ref": {
                        "title": "Ref",
                        "description": "Commit SHA, branch, or tag. Leave empty to track the default branch; auto_install and required need a full 40-character commit SHA.",
                        "x-consentRequired": false,
                        "type": "string",
                        "minLength": 1
                      },
                      "path": {
                        "title": "Subpath",
                        "description": "Folder within the repository that contains the marketplace, when it isn’t at the root.",
                        "x-consentRequired": false,
                        "type": "string",
                        "minLength": 1
                      },
                      "expectedName": {
                        "title": "Expected name",
                        "description": "Rejects the marketplace if its manifest name differs.",
                        "x-consentRequired": false,
                        "type": "string",
                        "pattern": "^[A-Za-z0-9](?:[A-Za-z0-9._-]{0,126}[A-Za-z0-9_-])?$"
                      },
                      "installationPreference": {
                        "title": "Installation",
                        "description": "Whether users install plugins themselves or get them automatically.",
                        "x-consentRequired": false,
                        "type": "string",
                        "enum": [
                          "available",
                          "auto_install",
                          "required"
                        ]
                      },
                      "credentialKind": {
                        "title": "Auth",
                        "description": "How fetches authenticate: anonymously, with the user’s git credentials, via a helper executable, or as the app does to its gateway or bootstrap server (url).",
                        "x-consentRequired": false,
                        "type": "string",
                        "enum": [
                          "anonymous",
                          "userGit",
                          "credentialHelper"
                        ]
                      },
                      "credentialHelper": {
                        "title": "Credential helper",
                        "description": "Executable that prints an access token for this marketplace.",
                        "x-consentRequired": true,
                        "type": "string",
                        "minLength": 1
                      }
                    },
                    "required": [
                      "source",
                      "url"
                    ]
                  },
                  {
                    "type": "object",
                    "properties": {
                      "source": {
                        "type": "string",
                        "const": "url",
                        "title": "Source",
                        "description": "Where the marketplace is fetched from: a GitHub repository (set repo), any Git remote (set url), or a hosted marketplace.json file (set url).",
                        "x-consentRequired": false,
                        "x-valueAvailableInVersionOverride": [
                          {
                            "value": "url",
                            "availableInVersion": "1.32352.0"
                          }
                        ]
                      },
                      "url": {
                        "title": "URL",
                        "description": "HTTPS Git remote of the marketplace repository (git), or direct HTTPS URL of a hosted marketplace.json file (url).",
                        "x-consentRequired": false,
                        "type": "string",
                        "format": "uri"
                      },
                      "manifestSha256": {
                        "type": "string",
                        "pattern": "^[0-9a-fA-F]{64}$",
                        "title": "Manifest SHA-256",
                        "description": "SHA-256 of the exact marketplace.json to accept. Without it auto_install and required act as available; a served manifest with any other digest is refused.",
                        "x-consentRequired": false,
                        "x-availableInVersionOverride": "1.32352.0"
                      },
                      "expectedName": {
                        "title": "Expected name",
                        "description": "Rejects the marketplace if its manifest name differs.",
                        "x-consentRequired": false,
                        "type": "string",
                        "pattern": "^[A-Za-z0-9](?:[A-Za-z0-9._-]{0,126}[A-Za-z0-9_-])?$"
                      },
                      "installationPreference": {
                        "title": "Installation",
                        "description": "Whether users install plugins themselves or get them automatically.",
                        "x-consentRequired": false,
                        "type": "string",
                        "enum": [
                          "available",
                          "auto_install",
                          "required"
                        ]
                      },
                      "credentialKind": {
                        "type": "string",
                        "enum": [
                          "anonymous",
                          "userGit",
                          "credentialHelper",
                          "inferenceCredential"
                        ],
                        "title": "Auth",
                        "description": "How fetches authenticate: anonymously, with the user’s git credentials, via a helper executable, or as the app does to its gateway or bootstrap server (url).",
                        "x-consentRequired": false,
                        "x-valueAvailableInVersionOverride": [
                          {
                            "value": "inferenceCredential",
                            "availableInVersion": "1.32352.0"
                          }
                        ]
                      },
                      "credentialHelper": {
                        "title": "Credential helper",
                        "description": "Executable that prints an access token for this marketplace.",
                        "x-consentRequired": true,
                        "type": "string",
                        "minLength": 1
                      }
                    },
                    "required": [
                      "source",
                      "url"
                    ]
                  }
                ]
              },
              {
                "type": "null"
              }
            ]
          },
          "title": "Plugin marketplaces",
          "description": "Git repositories or hosted marketplace.json URLs to surface as plugin marketplaces in the Directory’s Organization tab. The app re-fetches each periodically.",
          "x-flatKey": "allowedPluginMarketplaces",
          "x-whenUnreadable": {
            "applies": []
          },
          "x-availableInVersion": "1.17377.1",
          "x-availability": "both",
          "x-deprecated": false,
          "x-beta": false,
          "x-consentRequired": false,
          "x-originPinned": false,
          "x-selfHosted": {
            "execution": "server",
            "why": "The host fetches the admin's plugin marketplaces and loads their plugins into the sessions it runs"
          }
        },
        "userPluginMarketplacesEnabled": {
          "type": "boolean",
          "title": "Allow user-added plugin marketplaces",
          "description": "Allow users to add plugin marketplaces. When off, marketplaces your organization did not provision are hidden and the app’s sessions do not load their plugins.",
          "x-flatKey": "userPluginMarketplacesEnabled",
          "x-whenUnreadable": {
            "applies": false
          },
          "x-availableInVersion": "1.37937.0",
          "x-availability": "both",
          "x-deprecated": false,
          "x-beta": false,
          "x-consentRequired": false,
          "x-originPinned": false,
          "x-selfHosted": {
            "execution": "reported",
            "why": "Desktop hides and refuses adding a marketplace when off; no session host loads a person's own marketplaces yet"
          }
        },
        "userPluginUploadsEnabled": {
          "type": "boolean",
          "title": "Allow user-added plugins",
          "description": "Allow users to add their own plugins. When off, every in-app option for adding one is hidden and uploads that still reach the app are refused.",
          "x-flatKey": "userPluginUploadsEnabled",
          "x-whenUnreadable": {
            "applies": false
          },
          "x-availableInVersion": "1.37937.0",
          "x-availability": "both",
          "x-deprecated": false,
          "x-beta": false,
          "x-consentRequired": false,
          "x-originPinned": false,
          "x-selfHosted": {
            "execution": "server",
            "why": "The host keeps the plugins people upload and loads them in their sessions, and refuses new ones when this is off"
          }
        },
        "deploymentOrganizationUuid": {
          "type": "string",
          "title": "Organization UUID",
          "description": "A UUID you generate. Tags telemetry so Anthropic support can locate your fleet’s events, and namespaces each user’s local data. Not used for auth.",
          "x-flatKey": "deploymentOrganizationUuid",
          "x-availableInVersion": "1.2581.0",
          "x-availability": "both",
          "x-deprecated": false,
          "x-beta": false,
          "x-consentRequired": false,
          "x-originPinned": false,
          "x-selfHosted": {
            "execution": "client",
            "why": "Tags the desktop app's telemetry and names its local data on the person's computer"
          }
        },
        "disableEssentialTelemetry": {
          "type": "boolean",
          "title": "Block essential telemetry",
          "description": "Crash and performance reports to Anthropic.",
          "default": false,
          "x-flatKey": "disableEssentialTelemetry",
          "x-whenUnreadable": {
            "applies": true
          },
          "x-availableInVersion": "1.2581.0",
          "x-availability": "both",
          "x-deprecated": false,
          "x-beta": false,
          "x-consentRequired": false,
          "x-originPinned": false,
          "x-selfHosted": {
            "execution": "client",
            "why": "Desktop starts its crash reports to Anthropic at launch, before sign-in, and a host's sessions never send any"
          }
        },
        "disableNonessentialTelemetry": {
          "type": "boolean",
          "title": "Block nonessential telemetry",
          "description": "Product-usage analytics (no message content) and diagnostic-report uploads.",
          "default": false,
          "x-flatKey": "disableNonessentialTelemetry",
          "x-whenUnreadable": {
            "applies": true
          },
          "x-availableInVersion": "1.2581.0",
          "x-availability": "both",
          "x-deprecated": false,
          "x-beta": false,
          "x-consentRequired": false,
          "x-originPinned": false,
          "x-selfHosted": {
            "execution": "client",
            "why": "Desktop sends usage analytics to Anthropic from before sign-in, and a host's sessions never send any"
          }
        },
        "disableNonessentialServices": {
          "type": "boolean",
          "title": "Block nonessential services",
          "description": "Connector favicons, artifact-preview and MCP Apps iframes, and the Linux spellcheck dictionary. Connector widgets fall back to text; spellcheck is off on Linux.",
          "default": false,
          "x-flatKey": "disableNonessentialServices",
          "x-whenUnreadable": {
            "applies": true
          },
          "x-availableInVersion": "1.2581.0",
          "x-availability": "both",
          "x-deprecated": false,
          "x-beta": false,
          "x-consentRequired": false,
          "x-originPinned": false,
          "x-selfHosted": {
            "execution": "client",
            "why": "Desktop fetches connector icons, preview frames and a dictionary, starting before it has signed in to the host"
          }
        },
        "managedMcpServers": {
          "type": "array",
          "items": {
            "anyOf": [
              {
                "anyOf": [
                  {
                    "anyOf": [
                      {
                        "type": "object",
                        "properties": {
                          "name": {
                            "type": "string",
                            "minLength": 1,
                            "title": "Name",
                            "description": "Unique name for this server. Shown to users and used to key tool policy and sign-in state.",
                            "x-consentRequired": false
                          },
                          "transport": {
                            "not": {}
                          },
                          "url": {
                            "not": {}
                          },
                          "command": {
                            "not": {}
                          },
                          "oauth": {
                            "not": {}
                          },
                          "headers": {
                            "not": {}
                          },
                          "headersHelper": {
                            "not": {}
                          },
                          "headersHelperArgs": {
                            "not": {}
                          },
                          "headersHelperTtlSec": {
                            "not": {}
                          },
                          "headersHelperRefreshBufferSec": {
                            "not": {}
                          },
                          "args": {
                            "not": {}
                          },
                          "env": {
                            "not": {}
                          },
                          "envHelper": {
                            "not": {}
                          },
                          "envHelperArgs": {
                            "not": {}
                          },
                          "envHelperTtlSec": {
                            "not": {}
                          },
                          "startupTimeoutSec": {
                            "not": {}
                          },
                          "authorityHost": {
                            "not": {}
                          },
                          "server": {
                            "type": "string",
                            "const": "microsoft365",
                            "title": "Server",
                            "description": "Which bundled connector this entry turns on. Set instead of a transport; each built-in server has its own fields.",
                            "x-consentRequired": false,
                            "x-availableInVersionOverride": "1.19367.0"
                          },
                          "tenantId": {
                            "anyOf": [
                              {
                                "type": "string",
                                "format": "uuid",
                                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$"
                              },
                              {
                                "enum": [
                                  "common",
                                  "organizations",
                                  "consumers"
                                ],
                                "type": "string",
                                "x-valueAvailableInVersionOverride": [
                                  {
                                    "value": "common",
                                    "availableInVersion": "1.22209.0"
                                  },
                                  {
                                    "value": "organizations",
                                    "availableInVersion": "1.22209.0"
                                  },
                                  {
                                    "value": "consumers",
                                    "availableInVersion": "1.22209.0"
                                  }
                                ]
                              }
                            ],
                            "title": "Tenant ID",
                            "description": "Your organization’s Microsoft Entra directory (tenant) ID.",
                            "x-consentRequired": false,
                            "x-availableInVersionOverride": "1.19367.0"
                          },
                          "clientId": {
                            "type": "string",
                            "minLength": 1,
                            "title": "Client ID",
                            "description": "OAuth app client ID for this built-in server.",
                            "x-consentRequired": false,
                            "x-availableInVersionOverride": "1.19367.0"
                          },
                          "azureCloud": {
                            "title": "Azure cloud",
                            "description": "Microsoft cloud for sign-in and Graph. Leave as global for commercial Microsoft 365; US Government clouds require your own app registration (Client ID).",
                            "x-consentRequired": false,
                            "type": "string",
                            "enum": [
                              "global",
                              "us-gov-high",
                              "us-gov-dod"
                            ],
                            "x-availableInVersionOverride": "1.19367.0"
                          },
                          "continuousAccessEvaluation": {
                            "title": "Continuous Access Evaluation",
                            "description": "Request CAE-capable Microsoft Graph tokens: long-lived (up to about 28 hours) but revocable within minutes. Set “disabled” to keep standard one-hour tokens.",
                            "default": "enabled",
                            "x-consentRequired": false,
                            "type": "string",
                            "enum": [
                              "enabled",
                              "disabled"
                            ],
                            "x-availableInVersionOverride": "1.49585.0"
                          },
                          "scope": {
                            "title": "Access",
                            "description": "What the server may request at sign-in. If blank, Desktop’s default read set is used.",
                            "x-consentRequired": false,
                            "type": "string",
                            "x-availableInVersionOverride": "1.19367.0"
                          },
                          "toolPolicy": {
                            "title": "Tool policy",
                            "description": "Lock the approval state for specific tools. Unlisted tools stay user-controlled.",
                            "x-consentRequired": false,
                            "type": "object",
                            "propertyNames": {
                              "type": "string"
                            },
                            "additionalProperties": {
                              "type": "string",
                              "enum": [
                                "allow",
                                "ask",
                                "ask-session",
                                "blocked"
                              ],
                              "x-deprecatedValues": [
                                {
                                  "value": "ask-session",
                                  "use": "ask",
                                  "warnFrom": "2026-09-10",
                                  "supportEnds": "2026-10-07"
                                }
                              ],
                              "x-valueAvailableInVersionOverride": [
                                {
                                  "value": "ask-session",
                                  "availableInVersion": "1.21459.0"
                                }
                              ]
                            }
                          },
                          "scopes": {
                            "not": {}
                          }
                        },
                        "required": [
                          "name",
                          "server",
                          "tenantId",
                          "clientId"
                        ]
                      },
                      {
                        "type": "object",
                        "properties": {
                          "name": {
                            "type": "string",
                            "minLength": 1,
                            "title": "Name",
                            "description": "Unique name for this server. Shown to users and used to key tool policy and sign-in state.",
                            "x-consentRequired": false
                          },
                          "transport": {
                            "not": {}
                          },
                          "url": {
                            "not": {}
                          },
                          "command": {
                            "not": {}
                          },
                          "oauth": {
                            "not": {}
                          },
                          "headers": {
                            "title": "Headers",
                            "description": "Static headers sent on every request — routing and tenant headers only. No credentials here; use the headers helper script for tokens and rotating values.",
                            "x-consentRequired": false,
                            "type": "object",
                            "propertyNames": {
                              "type": "string"
                            },
                            "additionalProperties": {
                              "type": "string"
                            },
                            "x-availableInVersionOverride": "1.19367.0"
                          },
                          "headersHelper": {
                            "title": "Headers helper script",
                            "description": "Script that prints the auth header as a JSON object to stdout. Runs before each request (cached for the TTL below).",
                            "x-consentRequired": true,
                            "type": "string",
                            "minLength": 1,
                            "x-availableInVersionOverride": "1.19367.0"
                          },
                          "headersHelperArgs": {
                            "title": "Headers helper arguments",
                            "description": "Arguments passed to the headers helper script, one per entry, in order. Leave unset to run it with none.",
                            "x-consentRequired": true,
                            "type": "array",
                            "items": {
                              "type": "string",
                              "maxLength": 1024,
                              "pattern": "^[^\"%\\x00-\\x1f]+$"
                            },
                            "x-availableInVersionOverride": "3.6556.1"
                          },
                          "headersHelperTtlSec": {
                            "title": "Helper cache TTL (sec)",
                            "description": "How long the helper’s headers are reused before it runs again, in seconds. Defaults to 300.",
                            "x-consentRequired": false,
                            "type": "integer",
                            "exclusiveMinimum": 0,
                            "maximum": 9007199254740991,
                            "x-availableInVersionOverride": "1.19367.0"
                          },
                          "headersHelperRefreshBufferSec": {
                            "title": "Helper refresh buffer (sec)",
                            "description": "Seconds before the TTL expires at which the helper re-runs mid-session. Defaults to 60. Keep it larger than the helper’s typical runtime.",
                            "x-consentRequired": false,
                            "type": "integer",
                            "exclusiveMinimum": 0,
                            "maximum": 9007199254740991,
                            "x-availableInVersionOverride": "1.21459.0"
                          },
                          "args": {
                            "not": {}
                          },
                          "env": {
                            "not": {}
                          },
                          "envHelper": {
                            "not": {}
                          },
                          "envHelperArgs": {
                            "not": {}
                          },
                          "envHelperTtlSec": {
                            "not": {}
                          },
                          "startupTimeoutSec": {
                            "not": {}
                          },
                          "server": {
                            "type": "string",
                            "const": "websearch",
                            "title": "Server",
                            "description": "Which bundled connector this entry turns on. Set instead of a transport; each built-in server has its own fields.",
                            "x-consentRequired": false,
                            "x-availableInVersionOverride": "1.19367.0"
                          },
                          "provider": {
                            "type": "string",
                            "enum": [
                              "brave",
                              "tavily",
                              "exa",
                              "custom"
                            ],
                            "title": "Search provider",
                            "description": "Runs search from the desktop, for inference providers without native web search. Supply the provider’s API key through the headers helper script below.",
                            "x-consentRequired": false,
                            "x-availableInVersionOverride": "1.19367.0"
                          },
                          "customUrl": {
                            "title": "Custom URL",
                            "description": "POST endpoint accepting {q} JSON and returning a results[] array. Only used when provider is Custom.",
                            "x-consentRequired": false,
                            "type": "string",
                            "format": "uri",
                            "x-availableInVersionOverride": "1.19367.0"
                          },
                          "toolPolicy": {
                            "title": "Tool policy",
                            "description": "Lock the approval state for specific tools. Unlisted tools stay user-controlled.",
                            "x-consentRequired": false,
                            "type": "object",
                            "propertyNames": {
                              "type": "string"
                            },
                            "additionalProperties": {
                              "type": "string",
                              "enum": [
                                "allow",
                                "ask",
                                "ask-session",
                                "blocked"
                              ],
                              "x-deprecatedValues": [
                                {
                                  "value": "ask-session",
                                  "use": "ask",
                                  "warnFrom": "2026-09-10",
                                  "supportEnds": "2026-10-07"
                                }
                              ],
                              "x-valueAvailableInVersionOverride": [
                                {
                                  "value": "ask-session",
                                  "availableInVersion": "1.21459.0"
                                }
                              ]
                            }
                          }
                        },
                        "required": [
                          "name",
                          "server",
                          "provider"
                        ]
                      },
                      {
                        "type": "object",
                        "properties": {
                          "name": {
                            "type": "string",
                            "minLength": 1,
                            "title": "Name",
                            "description": "Unique name for this server. Shown to users and used to key tool policy and sign-in state.",
                            "x-consentRequired": false
                          },
                          "transport": {
                            "not": {}
                          },
                          "url": {
                            "not": {}
                          },
                          "command": {
                            "not": {}
                          },
                          "oauth": {
                            "not": {}
                          },
                          "headers": {
                            "not": {}
                          },
                          "headersHelper": {
                            "not": {}
                          },
                          "headersHelperArgs": {
                            "not": {}
                          },
                          "headersHelperTtlSec": {
                            "not": {}
                          },
                          "headersHelperRefreshBufferSec": {
                            "not": {}
                          },
                          "args": {
                            "not": {}
                          },
                          "env": {
                            "not": {}
                          },
                          "envHelper": {
                            "not": {}
                          },
                          "envHelperArgs": {
                            "not": {}
                          },
                          "envHelperTtlSec": {
                            "not": {}
                          },
                          "startupTimeoutSec": {
                            "not": {}
                          },
                          "server": {
                            "type": "string",
                            "const": "github",
                            "title": "Server",
                            "description": "Which bundled connector this entry turns on. Set instead of a transport; each built-in server has its own fields.",
                            "x-consentRequired": false,
                            "x-availableInVersionOverride": "1.25927.0"
                          },
                          "clientId": {
                            "type": "string",
                            "title": "Client ID",
                            "description": "GitHub OAuth app client ID (device flow must be enabled on the app).",
                            "x-consentRequired": false,
                            "x-availableInVersionOverride": "1.25927.0"
                          },
                          "host": {
                            "type": "string",
                            "format": "uri",
                            "title": "GitHub Enterprise Server URL",
                            "description": "Leave blank for github.com. For GitHub Enterprise Server, your instance’s base URL.",
                            "x-consentRequired": false,
                            "x-availableInVersionOverride": "1.25927.0"
                          },
                          "scope": {
                            "type": "string",
                            "title": "Access",
                            "description": "Space-separated GitHub OAuth scopes. If blank, Desktop’s default read set is used. Ignored for GitHub Apps (permissions come from the app registration).",
                            "x-consentRequired": false,
                            "x-availableInVersionOverride": "1.25927.0"
                          },
                          "toolsets": {
                            "type": "string",
                            "title": "Toolsets",
                            "description": "Comma-separated github-mcp-server toolsets to enable. If blank, the bundled server’s default toolsets are used.",
                            "x-consentRequired": false,
                            "x-availableInVersionOverride": "1.25927.0"
                          },
                          "readOnly": {
                            "type": "boolean",
                            "title": "Read-only",
                            "description": "Offer only read tools — the server registers no write tools at all.",
                            "x-consentRequired": false,
                            "x-availableInVersionOverride": "1.25927.0"
                          },
                          "toolPolicy": {
                            "title": "Tool policy",
                            "description": "Lock the approval state for specific tools. Unlisted tools stay user-controlled.",
                            "x-consentRequired": false,
                            "type": "object",
                            "propertyNames": {
                              "type": "string"
                            },
                            "additionalProperties": {
                              "type": "string",
                              "enum": [
                                "allow",
                                "ask",
                                "ask-session",
                                "blocked"
                              ],
                              "x-deprecatedValues": [
                                {
                                  "value": "ask-session",
                                  "use": "ask",
                                  "warnFrom": "2026-09-10",
                                  "supportEnds": "2026-10-07"
                                }
                              ],
                              "x-valueAvailableInVersionOverride": [
                                {
                                  "value": "ask-session",
                                  "availableInVersion": "1.21459.0"
                                }
                              ]
                            }
                          },
                          "scopes": {
                            "not": {}
                          }
                        },
                        "required": [
                          "name",
                          "server",
                          "clientId"
                        ]
                      }
                    ]
                  },
                  {
                    "oneOf": [
                      {
                        "type": "object",
                        "properties": {
                          "name": {
                            "type": "string",
                            "minLength": 1,
                            "title": "Name",
                            "description": "Unique name for this server. Shown to users and used to key tool policy and sign-in state.",
                            "x-consentRequired": false
                          },
                          "server": {
                            "not": {}
                          },
                          "transport": {
                            "type": "string",
                            "enum": [
                              "http",
                              "sse"
                            ],
                            "title": "Transport",
                            "description": "How the app connects: Streamable HTTP, legacy SSE, or a local command (stdio). policy-only connects to nothing; it only sets a plugin server’s tool policy.",
                            "x-consentRequired": false
                          },
                          "url": {
                            "type": "string",
                            "format": "uri",
                            "title": "URL",
                            "description": "HTTPS endpoint of the remote MCP server. Use the server’s final address: HTTP redirects are not followed.",
                            "x-consentRequired": false
                          },
                          "oauth": {
                            "anyOf": [
                              {
                                "type": "boolean",
                                "const": true
                              },
                              {
                                "type": "object",
                                "properties": {
                                  "scope": {
                                    "title": "Scope",
                                    "description": "Space-separated scopes sent on the authorize request. Leave unset to use the scopes the server advertises. Required when Tenant ID is set.",
                                    "x-consentRequired": false,
                                    "type": "string",
                                    "minLength": 1
                                  },
                                  "appendOfflineAccess": {
                                    "title": "Request offline_access",
                                    "description": "Adds offline_access to the authorize request so the IdP returns a refresh token for silent renewal.",
                                    "x-consentRequired": false,
                                    "type": "boolean",
                                    "x-availableInVersionOverride": "1.13576.0"
                                  },
                                  "scopes": {
                                    "not": {}
                                  },
                                  "additionalRedirectReferrerHosts": {
                                    "title": "Additional redirect referrer hosts",
                                    "description": "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.",
                                    "x-consentRequired": false,
                                    "type": "string",
                                    "x-availableInVersionOverride": "1.24012.0"
                                  }
                                }
                              },
                              {
                                "type": "object",
                                "properties": {
                                  "clientId": {
                                    "type": "string",
                                    "minLength": 1
                                  },
                                  "clientSecret": {
                                    "title": "Client secret",
                                    "description": "Only for IdPs that require one (e.g. Box). Hosted config can store only a Google Desktop-app secret (GOCSPX-…); for other IdPs use the client secret helper.",
                                    "x-consentRequired": false,
                                    "type": "string",
                                    "minLength": 1
                                  },
                                  "clientSecretHelper": {
                                    "title": "Client secret helper script",
                                    "description": "Executable that prints the client secret on stdout as a JSON object with a single clientSecret key; any other output is rejected. Overrides the inline value.",
                                    "x-consentRequired": true,
                                    "type": "string",
                                    "minLength": 1,
                                    "x-availableInVersionOverride": "1.19367.0"
                                  },
                                  "authorizationServer": {
                                    "title": "Authorization server",
                                    "description": "Issuer URLs the OAuth sign-in may use, as a JSON array. Pre-filled by presets; ask your IdP admin if unsure.",
                                    "x-consentRequired": false,
                                    "minItems": 1,
                                    "type": "array",
                                    "items": {
                                      "type": "string",
                                      "format": "uri"
                                    }
                                  },
                                  "authorizationUrl": {
                                    "title": "Authorization URL",
                                    "description": "Only for IdPs that don’t serve a .well-known discovery document. Set together with Token URL; requires Client ID.",
                                    "x-consentRequired": false,
                                    "type": "string",
                                    "format": "uri",
                                    "x-availableInVersionOverride": "1.24012.0"
                                  },
                                  "tokenUrl": {
                                    "title": "Token URL",
                                    "description": "Only for IdPs that don’t serve a .well-known discovery document. Set together with Authorization URL; requires Client ID.",
                                    "x-consentRequired": false,
                                    "type": "string",
                                    "format": "uri",
                                    "x-availableInVersionOverride": "1.24012.0"
                                  },
                                  "tenantId": {
                                    "title": "Tenant ID",
                                    "description": "Required for single-tenant Entra apps. Leave blank for multi-tenant or non-Microsoft IdPs.",
                                    "x-consentRequired": false,
                                    "anyOf": [
                                      {
                                        "type": "string",
                                        "format": "uuid",
                                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$"
                                      },
                                      {
                                        "type": "string",
                                        "enum": [
                                          "common",
                                          "organizations",
                                          "consumers"
                                        ]
                                      }
                                    ]
                                  },
                                  "authFlow": {
                                    "title": "Sign-in flow",
                                    "description": "How Entra sign-in runs for this server: the system browser (default) or the OS identity broker.",
                                    "x-consentRequired": false,
                                    "type": "string",
                                    "enum": [
                                      "browser",
                                      "broker"
                                    ],
                                    "x-availableInVersionOverride": "1.25927.0"
                                  },
                                  "scope": {
                                    "title": "Scope",
                                    "description": "Space-separated scopes sent on the authorize request. Leave unset to use the scopes the server advertises. Required when Tenant ID is set.",
                                    "x-consentRequired": false,
                                    "type": "string",
                                    "minLength": 1
                                  },
                                  "appendOfflineAccess": {
                                    "title": "Request offline_access",
                                    "description": "Adds offline_access to the authorize request so the IdP returns a refresh token for silent renewal.",
                                    "x-consentRequired": false,
                                    "type": "boolean",
                                    "x-availableInVersionOverride": "1.13576.0"
                                  },
                                  "callbackHost": {
                                    "title": "Callback host",
                                    "description": "Use localhost only if your IdP’s registered redirect URI specifies it.",
                                    "x-consentRequired": false,
                                    "type": "string",
                                    "enum": [
                                      "127.0.0.1",
                                      "localhost"
                                    ]
                                  },
                                  "callbackPort": {
                                    "title": "Callback port",
                                    "description": "Only set if your IdP requires an exact-match redirect port. Entra accepts any.",
                                    "x-consentRequired": false,
                                    "type": "integer",
                                    "minimum": 1024,
                                    "maximum": 65535
                                  },
                                  "additionalRedirectReferrerHosts": {
                                    "title": "Additional redirect referrer hosts",
                                    "description": "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.",
                                    "x-consentRequired": false,
                                    "type": "string",
                                    "x-availableInVersionOverride": "1.24012.0"
                                  },
                                  "scopes": {
                                    "not": {}
                                  },
                                  "mode": {
                                    "not": {}
                                  }
                                },
                                "required": [
                                  "clientId"
                                ]
                              },
                              {
                                "oneOf": [
                                  {
                                    "type": "object",
                                    "properties": {
                                      "mode": {
                                        "type": "string",
                                        "const": "dcr",
                                        "x-availableInVersionOverride": "1.15200.0"
                                      }
                                    },
                                    "required": [
                                      "mode"
                                    ]
                                  },
                                  {
                                    "type": "object",
                                    "properties": {
                                      "mode": {
                                        "type": "string",
                                        "const": "byo",
                                        "x-availableInVersionOverride": "1.15200.0"
                                      },
                                      "clientId": {
                                        "type": "string",
                                        "minLength": 1,
                                        "title": "Client ID",
                                        "description": "OAuth client ID from your IdP app registration. Leave unset to auto-register (dynamic client registration) and only narrow scopes.",
                                        "x-consentRequired": false
                                      },
                                      "clientSecret": {
                                        "title": "Client secret",
                                        "description": "Only for IdPs that require one (e.g. Box). Hosted config can store only a Google Desktop-app secret (GOCSPX-…); for other IdPs use the client secret helper.",
                                        "x-consentRequired": false,
                                        "type": "string",
                                        "minLength": 1
                                      },
                                      "clientSecretHelper": {
                                        "title": "Client secret helper script",
                                        "description": "Executable that prints the client secret on stdout as a JSON object with a single clientSecret key; any other output is rejected. Overrides the inline value.",
                                        "x-consentRequired": true,
                                        "type": "string",
                                        "minLength": 1,
                                        "x-availableInVersionOverride": "1.19367.0"
                                      },
                                      "authorizationServer": {
                                        "title": "Authorization server",
                                        "description": "Issuer URLs the OAuth sign-in may use, as a JSON array. Pre-filled by presets; ask your IdP admin if unsure.",
                                        "x-consentRequired": false,
                                        "minItems": 1,
                                        "type": "array",
                                        "items": {
                                          "type": "string",
                                          "format": "uri"
                                        }
                                      },
                                      "authorizationUrl": {
                                        "title": "Authorization URL",
                                        "description": "Only for IdPs that don’t serve a .well-known discovery document. Set together with Token URL; requires Client ID.",
                                        "x-consentRequired": false,
                                        "type": "string",
                                        "format": "uri",
                                        "x-availableInVersionOverride": "1.24012.0"
                                      },
                                      "tokenUrl": {
                                        "title": "Token URL",
                                        "description": "Only for IdPs that don’t serve a .well-known discovery document. Set together with Authorization URL; requires Client ID.",
                                        "x-consentRequired": false,
                                        "type": "string",
                                        "format": "uri",
                                        "x-availableInVersionOverride": "1.24012.0"
                                      },
                                      "tenantId": {
                                        "title": "Tenant ID",
                                        "description": "Required for single-tenant Entra apps. Leave blank for multi-tenant or non-Microsoft IdPs.",
                                        "x-consentRequired": false,
                                        "anyOf": [
                                          {
                                            "type": "string",
                                            "format": "uuid",
                                            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$"
                                          },
                                          {
                                            "type": "string",
                                            "enum": [
                                              "common",
                                              "organizations",
                                              "consumers"
                                            ]
                                          }
                                        ]
                                      },
                                      "authFlow": {
                                        "title": "Sign-in flow",
                                        "description": "How Entra sign-in runs for this server: the system browser (default) or the OS identity broker.",
                                        "x-consentRequired": false,
                                        "type": "string",
                                        "enum": [
                                          "browser",
                                          "broker"
                                        ],
                                        "x-availableInVersionOverride": "1.25927.0"
                                      },
                                      "scope": {
                                        "title": "Scope",
                                        "description": "Space-separated scopes sent on the authorize request. Leave unset to use the scopes the server advertises. Required when Tenant ID is set.",
                                        "x-consentRequired": false,
                                        "type": "string",
                                        "minLength": 1
                                      },
                                      "appendOfflineAccess": {
                                        "title": "Request offline_access",
                                        "description": "Adds offline_access to the authorize request so the IdP returns a refresh token for silent renewal.",
                                        "x-consentRequired": false,
                                        "type": "boolean",
                                        "x-availableInVersionOverride": "1.13576.0"
                                      },
                                      "callbackHost": {
                                        "title": "Callback host",
                                        "description": "Use localhost only if your IdP’s registered redirect URI specifies it.",
                                        "x-consentRequired": false,
                                        "type": "string",
                                        "enum": [
                                          "127.0.0.1",
                                          "localhost"
                                        ]
                                      },
                                      "callbackPort": {
                                        "title": "Callback port",
                                        "description": "Only set if your IdP requires an exact-match redirect port. Entra accepts any.",
                                        "x-consentRequired": false,
                                        "type": "integer",
                                        "minimum": 1024,
                                        "maximum": 65535
                                      },
                                      "additionalRedirectReferrerHosts": {
                                        "title": "Additional redirect referrer hosts",
                                        "description": "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.",
                                        "x-consentRequired": false,
                                        "type": "string",
                                        "x-availableInVersionOverride": "1.24012.0"
                                      },
                                      "scopes": {
                                        "not": {}
                                      }
                                    },
                                    "required": [
                                      "mode"
                                    ]
                                  },
                                  {
                                    "type": "object",
                                    "properties": {
                                      "mode": {
                                        "type": "string",
                                        "const": "hosted",
                                        "x-availableInVersionOverride": "1.32885.1"
                                      },
                                      "clientId": {
                                        "type": "string",
                                        "format": "uri",
                                        "title": "Client ID",
                                        "description": "Set by the Claude.ai control plane when it serves this configuration (the URL of Anthropic’s hosted client-metadata document); not authored.",
                                        "x-consentRequired": false,
                                        "x-availableInVersionOverride": "1.32885.1"
                                      },
                                      "authorizationServer": {
                                        "minItems": 1,
                                        "type": "array",
                                        "items": {
                                          "type": "string",
                                          "format": "uri"
                                        },
                                        "title": "Authorization server",
                                        "description": "The exact issuer string(s) the server’s OAuth authorization server advertises in its metadata, as a JSON array — matched exactly, including path and any trailing slash. Required: Anthropic signs the client identity only for an authorization server listed here.",
                                        "x-consentRequired": false,
                                        "x-availableInVersionOverride": "1.32885.1"
                                      },
                                      "scope": {
                                        "title": "Scope",
                                        "description": "Space-separated scopes sent on the authorize request. Leave unset to use the scopes the server advertises. Required when Tenant ID is set.",
                                        "x-consentRequired": false,
                                        "type": "string",
                                        "minLength": 1
                                      },
                                      "scopes": {
                                        "not": {}
                                      }
                                    },
                                    "required": [
                                      "mode",
                                      "authorizationServer"
                                    ]
                                  }
                                ]
                              }
                            ],
                            "title": "OAuth",
                            "description": "OAuth for a remote server: true to auto-register a client, a pre-registered client ID with tenant and scope, or mode “hosted” for an Anthropic-signed identity.",
                            "x-consentRequired": false
                          },
                          "headers": {
                            "type": "object",
                            "propertyNames": {
                              "type": "string"
                            },
                            "additionalProperties": {
                              "type": "string"
                            },
                            "title": "Headers",
                            "description": "Static headers sent on every request — routing and tenant headers only. No credentials here; use the headers helper script for tokens and rotating values.",
                            "x-consentRequired": false
                          },
                          "headersHelper": {
                            "type": "string",
                            "minLength": 1,
                            "title": "Headers helper script",
                            "description": "Absolute path to an executable that prints a JSON object of HTTP headers on stdout. Merged over static headers; the helper wins on conflict.",
                            "x-consentRequired": true,
                            "x-availableInVersionOverride": "1.19367.0"
                          },
                          "headersHelperArgs": {
                            "type": "array",
                            "items": {
                              "type": "string",
                              "maxLength": 1024,
                              "pattern": "^[^\"%\\x00-\\x1f]+$"
                            },
                            "title": "Headers helper arguments",
                            "description": "Arguments passed to the headers helper script, one per entry, in order. Leave unset to run it with none.",
                            "x-consentRequired": true,
                            "x-availableInVersionOverride": "3.6556.1"
                          },
                          "headersHelperTtlSec": {
                            "type": "integer",
                            "exclusiveMinimum": 0,
                            "maximum": 9007199254740991,
                            "title": "Helper cache TTL (sec)",
                            "description": "How long the helper’s headers are reused before it runs again, in seconds. Defaults to 300.",
                            "x-consentRequired": false,
                            "x-availableInVersionOverride": "1.19367.0"
                          },
                          "headersHelperRefreshBufferSec": {
                            "type": "integer",
                            "exclusiveMinimum": 0,
                            "maximum": 9007199254740991,
                            "title": "Helper refresh buffer (sec)",
                            "description": "Seconds before the TTL expires at which the helper re-runs mid-session. Defaults to 60. Keep it larger than the helper’s typical runtime.",
                            "x-consentRequired": false,
                            "x-availableInVersionOverride": "1.21459.0"
                          },
                          "icon": {
                            "title": "Icon",
                            "description": "Icon shown for this connector: a PNG or JPEG image as a base64 data: URI, at most 4,096 characters.",
                            "x-consentRequired": false,
                            "type": "string",
                            "maxLength": 4096,
                            "pattern": "^data:image\\/(?:png|jpeg);base64,[A-Za-z0-9+/]+={0,2}$",
                            "x-availableInVersionOverride": "3.1623.0"
                          },
                          "toolPolicy": {
                            "title": "Tool policy",
                            "description": "Lock the approval state for specific tools. Unlisted tools stay user-controlled.",
                            "x-consentRequired": false,
                            "type": "object",
                            "propertyNames": {
                              "type": "string"
                            },
                            "additionalProperties": {
                              "type": "string",
                              "enum": [
                                "allow",
                                "ask",
                                "ask-session",
                                "blocked"
                              ],
                              "x-deprecatedValues": [
                                {
                                  "value": "ask-session",
                                  "use": "ask",
                                  "warnFrom": "2026-09-10",
                                  "supportEnds": "2026-10-07"
                                }
                              ],
                              "x-valueAvailableInVersionOverride": [
                                {
                                  "value": "ask-session",
                                  "availableInVersion": "1.21459.0"
                                }
                              ]
                            }
                          }
                        },
                        "required": [
                          "name",
                          "transport",
                          "url"
                        ]
                      },
                      {
                        "type": "object",
                        "properties": {
                          "name": {
                            "type": "string",
                            "minLength": 1,
                            "title": "Name",
                            "description": "Unique name for this server. Shown to users and used to key tool policy and sign-in state.",
                            "x-consentRequired": false
                          },
                          "server": {
                            "not": {}
                          },
                          "transport": {
                            "type": "string",
                            "const": "stdio",
                            "title": "Transport",
                            "description": "How the app connects: Streamable HTTP, legacy SSE, or a local command (stdio). policy-only connects to nothing; it only sets a plugin server’s tool policy.",
                            "x-consentRequired": false,
                            "x-availableInVersionOverride": "1.19367.0"
                          },
                          "command": {
                            "type": "string",
                            "minLength": 1,
                            "title": "Command",
                            "description": "Absolute path to the server executable, run on the user’s machine.",
                            "x-consentRequired": true,
                            "x-availableInVersionOverride": "1.19367.0"
                          },
                          "args": {
                            "type": "array",
                            "items": {
                              "type": "string"
                            },
                            "title": "Arguments",
                            "description": "Arguments passed to the command, one per entry.",
                            "x-consentRequired": true,
                            "x-availableInVersionOverride": "1.19367.0"
                          },
                          "env": {
                            "type": "object",
                            "propertyNames": {
                              "type": "string"
                            },
                            "additionalProperties": {
                              "type": "string"
                            },
                            "title": "Environment variables",
                            "description": "Environment variables set for the command.",
                            "x-consentRequired": true,
                            "x-availableInVersionOverride": "1.19367.0"
                          },
                          "envHelper": {
                            "type": "string",
                            "minLength": 1,
                            "title": "Environment helper script",
                            "description": "Script that prints environment variables as a JSON object to stdout. Runs when the local server starts (cached for the TTL below).",
                            "x-consentRequired": true,
                            "x-availableInVersionOverride": "1.21459.0"
                          },
                          "envHelperArgs": {
                            "type": "array",
                            "items": {
                              "type": "string",
                              "maxLength": 1024,
                              "pattern": "^[^\"%\\x00-\\x1f]+$"
                            },
                            "title": "Environment helper arguments",
                            "description": "Arguments passed to the environment helper script, one per entry, in order. Leave unset to run it with none.",
                            "x-consentRequired": true,
                            "x-availableInVersionOverride": "3.6556.1"
                          },
                          "envHelperTtlSec": {
                            "type": "integer",
                            "exclusiveMinimum": 0,
                            "maximum": 9007199254740991,
                            "title": "Helper cache TTL (sec)",
                            "description": "Maximum age of a cached helper result, in seconds (default 300). Applies when the server starts or restarts.",
                            "default": 300,
                            "x-consentRequired": false,
                            "x-availableInVersionOverride": "1.21459.0"
                          },
                          "startupTimeoutSec": {
                            "type": "integer",
                            "minimum": 5,
                            "maximum": 600,
                            "title": "Startup timeout",
                            "description": "Maximum wait in seconds for the server to start and list its tools.",
                            "default": 120,
                            "x-consentRequired": false,
                            "x-availableInVersionOverride": "1.19367.0"
                          },
                          "icon": {
                            "title": "Icon",
                            "description": "Icon shown for this connector: a PNG or JPEG image as a base64 data: URI, at most 4,096 characters.",
                            "x-consentRequired": false,
                            "type": "string",
                            "maxLength": 4096,
                            "pattern": "^data:image\\/(?:png|jpeg);base64,[A-Za-z0-9+/]+={0,2}$",
                            "x-availableInVersionOverride": "3.1623.0"
                          },
                          "toolPolicy": {
                            "title": "Tool policy",
                            "description": "Lock the approval state for specific tools. Unlisted tools stay user-controlled.",
                            "x-consentRequired": false,
                            "type": "object",
                            "propertyNames": {
                              "type": "string"
                            },
                            "additionalProperties": {
                              "type": "string",
                              "enum": [
                                "allow",
                                "ask",
                                "ask-session",
                                "blocked"
                              ],
                              "x-deprecatedValues": [
                                {
                                  "value": "ask-session",
                                  "use": "ask",
                                  "warnFrom": "2026-09-10",
                                  "supportEnds": "2026-10-07"
                                }
                              ],
                              "x-valueAvailableInVersionOverride": [
                                {
                                  "value": "ask-session",
                                  "availableInVersion": "1.21459.0"
                                }
                              ]
                            }
                          }
                        },
                        "required": [
                          "name",
                          "transport",
                          "command"
                        ]
                      },
                      {
                        "type": "object",
                        "properties": {
                          "name": {
                            "type": "string",
                            "minLength": 1,
                            "title": "Name",
                            "description": "Unique name for this server. Shown to users and used to key tool policy and sign-in state.",
                            "x-consentRequired": false
                          },
                          "server": {
                            "not": {}
                          },
                          "transport": {
                            "type": "string",
                            "const": "policy-only",
                            "title": "Transport",
                            "description": "How the app connects: Streamable HTTP, legacy SSE, or a local command (stdio). policy-only connects to nothing; it only sets a plugin server’s tool policy.",
                            "x-consentRequired": false,
                            "x-availableInVersionOverride": "2.110.0"
                          },
                          "url": {
                            "not": {}
                          },
                          "command": {
                            "not": {}
                          },
                          "oauth": {
                            "not": {}
                          },
                          "headers": {
                            "not": {}
                          },
                          "headersHelper": {
                            "not": {}
                          },
                          "headersHelperArgs": {
                            "not": {}
                          },
                          "headersHelperTtlSec": {
                            "not": {}
                          },
                          "headersHelperRefreshBufferSec": {
                            "not": {}
                          },
                          "args": {
                            "not": {}
                          },
                          "env": {
                            "not": {}
                          },
                          "envHelper": {
                            "not": {}
                          },
                          "envHelperArgs": {
                            "not": {}
                          },
                          "envHelperTtlSec": {
                            "not": {}
                          },
                          "startupTimeoutSec": {
                            "not": {}
                          },
                          "toolPolicy": {
                            "title": "Tool policy",
                            "description": "Lock the approval state for specific tools. Unlisted tools stay user-controlled.",
                            "x-consentRequired": false,
                            "type": "object",
                            "propertyNames": {
                              "type": "string"
                            },
                            "additionalProperties": {
                              "type": "string",
                              "enum": [
                                "allow",
                                "ask",
                                "ask-session",
                                "blocked"
                              ],
                              "x-deprecatedValues": [
                                {
                                  "value": "ask-session",
                                  "use": "ask",
                                  "warnFrom": "2026-09-10",
                                  "supportEnds": "2026-10-07"
                                }
                              ],
                              "x-valueAvailableInVersionOverride": [
                                {
                                  "value": "ask-session",
                                  "availableInVersion": "1.21459.0"
                                }
                              ]
                            }
                          }
                        },
                        "required": [
                          "name",
                          "transport"
                        ]
                      }
                    ]
                  }
                ]
              },
              {
                "type": "null"
              }
            ]
          },
          "title": "Managed MCP servers",
          "description": "Org-pushed MCP servers: remote (HTTP/SSE) or local (stdio command). May embed bearer tokens.",
          "x-flatKey": "managedMcpServers",
          "x-readers": [
            "desktop",
            "m365"
          ],
          "x-whenUnreadable": {
            "unusable": true
          },
          "x-availableInVersion": "1.2581.0",
          "x-availability": "both",
          "x-deprecated": false,
          "x-beta": false,
          "x-consentRequired": false,
          "x-originPinned": false,
          "x-selfHosted": {
            "execution": "server",
            "why": "The host connects the admin's MCP servers and applies each tool's rule, and tells Desktop which local ones to start"
          }
        },
        "mcpPersistentAlwaysAllowEnabled": {
          "type": "boolean",
          "title": "Allow persistent tool approvals",
          "description": "Offer the persistent “Always allow” approval options for MCP tools. Disable to keep tool approvals per-call or session-scoped only.",
          "default": true,
          "x-flatKey": "mcpPersistentAlwaysAllowEnabled",
          "x-whenUnreadable": {
            "applies": false
          },
          "x-availableInVersion": "1.24012.9",
          "x-availability": "both",
          "x-deprecated": false,
          "x-beta": false,
          "x-consentRequired": false,
          "x-originPinned": false,
          "x-selfHosted": {
            "execution": "server",
            "why": "When off, the host leaves lasting MCP tool approvals out of its sessions, and tells Desktop not to offer them"
          }
        },
        "mcpScheduledTaskApprovalLifetimeDays": {
          "type": "integer",
          "minimum": 0,
          "maximum": 3650,
          "title": "Scheduled-task tool approval lifetime",
          "description": "How many days a scheduled task may reuse a lasting MCP-tool approval before it asks again. 0 removes the lasting option. Leave blank for no time limit.",
          "x-flatKey": "mcpScheduledTaskApprovalLifetimeDays",
          "x-whenUnreadable": {
            "applies": 0
          },
          "x-availableInVersion": "2.7032.0",
          "x-availability": "both",
          "x-deprecated": false,
          "x-beta": false,
          "x-consentRequired": false,
          "x-originPinned": false,
          "x-selfHosted": {
            "execution": "server",
            "why": "The host limits how many days a scheduled task may reuse a lasting MCP tool approval, and tells Desktop"
          }
        },
        "isLocalDevMcpEnabled": {
          "type": "boolean",
          "title": "Allow local MCP servers",
          "description": "Local stdio servers added via the Developer settings. On third-party deployments, off also stops plugins’ local servers. Remote servers keep working.",
          "default": true,
          "x-flatKey": "isLocalDevMcpEnabled",
          "x-whenUnreadable": {
            "applies": false
          },
          "x-availableInVersion": "1.2581.0",
          "x-availability": "both",
          "x-deprecated": false,
          "x-beta": false,
          "x-consentRequired": false,
          "x-originPinned": false,
          "x-selfHosted": {
            "execution": "server",
            "why": "When off, only the local MCP servers the host names start on the person's computer, and none the person added"
          }
        },
        "allowedPluginMcpServers": {
          "type": "array",
          "items": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "serverUrl": {
                    "type": "string",
                    "minLength": 1,
                    "title": "Server URL pattern",
                    "description": "URL pattern a plugin’s remote server must match, with * wildcards.",
                    "x-consentRequired": false
                  }
                },
                "required": [
                  "serverUrl"
                ]
              },
              {
                "type": "null"
              }
            ]
          },
          "title": "Allowed plugin MCP servers",
          "description": "Servers plugins may connect in sessions, beyond the managed list above and organization plugins. An empty list allows none; unset keeps today’s rules.",
          "x-flatKey": "allowedPluginMcpServers",
          "x-whenUnreadable": {
            "applies": []
          },
          "x-availableInVersion": "2.2553.0",
          "x-availability": "both",
          "x-deprecated": false,
          "x-beta": false,
          "x-consentRequired": false,
          "x-originPinned": false,
          "x-selfHosted": {
            "execution": "server",
            "why": "The host connects a plugin's remote MCP server only where this list admits it; while it is unset, none connects"
          }
        },
        "deniedPluginMcpServers": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "serverUrl": {
                "type": "string",
                "minLength": 1,
                "title": "Server URL pattern",
                "description": "URL pattern of the remote servers to block, with * wildcards.",
                "x-consentRequired": false
              }
            },
            "required": [
              "serverUrl"
            ]
          },
          "title": "Blocked plugin MCP servers",
          "description": "Remote servers plugins may not connect, even if the allowed list admits them; in Code sessions, configuration-file servers too. Unset or empty blocks none.",
          "x-flatKey": "deniedPluginMcpServers",
          "x-whenUnreadable": {
            "applies": [
              {
                "serverUrl": "*"
              }
            ]
          },
          "x-availableInVersion": "2.16120.0",
          "x-availability": "both",
          "x-deprecated": false,
          "x-beta": false,
          "x-consentRequired": false,
          "x-originPinned": false,
          "x-selfHosted": {
            "execution": "server",
            "why": "The host refuses a plugin's remote MCP server that this list matches, even where the allowed list admits it"
          }
        },
        "mcpToolTimeoutSec": {
          "type": "integer",
          "minimum": 60,
          "maximum": 3600,
          "title": "MCP tool call timeout",
          "description": "Per-call timeout for MCP tool calls, in seconds. Default 180 (3 minutes).",
          "x-flatKey": "mcpToolTimeoutSec",
          "x-availableInVersion": "1.37937.0",
          "x-availability": "both",
          "x-deprecated": false,
          "x-beta": false,
          "x-consentRequired": false,
          "x-originPinned": false,
          "x-selfHosted": {
            "execution": "server",
            "why": "The host starts Claude Code, so it sets how long an MCP tool call may run"
          }
        },
        "disabledBuiltinTools": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "title": "Disabled built-in tools",
          "description": "Built-in tools, or argument-scoped permission rules such as Read(//**/.env), denied in Cowork and Code.",
          "x-flatKey": "disabledBuiltinTools",
          "x-whenUnreadable": {
            "applies": [
              "Agent",
              "Artifact",
              "AskUserQuestion",
              "Bash",
              "ClaudeDesign",
              "CronCreate",
              "CronDelete",
              "CronList",
              "Edit",
              "EndConversation",
              "EnterPlanMode",
              "EnterWorktree",
              "ExitPlanMode",
              "ExitWorktree",
              "Glob",
              "Grep",
              "ListAgents",
              "ListMcpResourcesTool",
              "LSP",
              "Monitor",
              "NotebookEdit",
              "OfferChromeSetup",
              "PowerShell",
              "Projects",
              "propose_skills",
              "ProposeGoal",
              "PushNotification",
              "Read",
              "ReadMcpResourceDirTool",
              "ReadMcpResourceTool",
              "ReadNotifications",
              "RemoteTrigger",
              "ReportFindings",
              "ScheduleWakeup",
              "SendFeedback",
              "SendMessage",
              "SendUserFile",
              "SendUserMessage",
              "ShareOnboardingGuide",
              "ShowOnboardingRolePicker",
              "Skill",
              "SubagentHandback",
              "TaskCreate",
              "TaskGet",
              "TaskList",
              "TaskStop",
              "TaskUpdate",
              "TodoWrite",
              "ToolSearch",
              "WaitForMcpServers",
              "WebFetch",
              "WebSearch",
              "Workflow",
              "Write",
              "REPL",
              "JavaScript"
            ]
          },
          "x-availableInVersion": "1.2581.0",
          "x-availability": "both",
          "x-deprecated": false,
          "x-beta": false,
          "x-consentRequired": false,
          "x-originPinned": false,
          "x-selfHosted": {
            "execution": "server",
            "why": "The host starts each session with the built-in tools and tool uses the admin denies turned off"
          }
        },
        "disableBundledSkills": {
          "type": "boolean",
          "title": "Disable bundled skills and workflows",
          "description": "Disables Claude Code’s bundled skills and workflows (deep-research and similar). Use where WebFetch/WebSearch aren’t available.",
          "x-flatKey": "disableBundledSkills",
          "x-whenUnreadable": {
            "applies": true
          },
          "x-availableInVersion": "1.15962.0",
          "x-availability": "both",
          "x-deprecated": false,
          "x-beta": false,
          "x-consentRequired": false,
          "x-originPinned": false,
          "x-selfHosted": {
            "execution": "server",
            "why": "The host starts Claude Code, so it is the one that turns the bundled skills off"
          }
        },
        "skillCreationEnabled": {
          "type": "boolean",
          "title": "Allow user-created skills",
          "description": "Allow users to create and upload their own skills. When off, the creation and upload surfaces are hidden and the agent’s skill-creation tools are disabled.",
          "x-flatKey": "skillCreationEnabled",
          "x-whenUnreadable": {
            "applies": false
          },
          "x-availableInVersion": "1.25927.0",
          "x-availability": "both",
          "x-deprecated": false,
          "x-beta": false,
          "x-consentRequired": false,
          "x-originPinned": false,
          "x-selfHosted": {
            "execution": "server",
            "why": "The host stores people's skills, so when this is off it refuses new ones and tells Desktop to hide creation"
          }
        },
        "scheduledTasksEnabled": {
          "type": "boolean",
          "title": "Allow scheduled tasks",
          "description": "Allow scheduled tasks in Cowork and Code. When off, the Scheduled page is hidden, existing tasks stop running, and Claude cannot create new ones.",
          "x-flatKey": "scheduledTasksEnabled",
          "x-whenUnreadable": {
            "applies": false
          },
          "x-availableInVersion": "2.110.0",
          "x-availability": "both",
          "x-deprecated": false,
          "x-beta": false,
          "x-consentRequired": false,
          "x-originPinned": false,
          "x-selfHosted": {
            "execution": "server",
            "why": "The host runs scheduled tasks, so when this is off it refuses to create or run them"
          }
        },
        "keepAwakeEnabled": {
          "type": "boolean",
          "title": "Allow keep awake",
          "description": "Let Claude keep the computer awake. When off, Claude never prevents sleep and hides the keep-awake switches in Settings, the Scheduled page and the Code tab.",
          "x-flatKey": "keepAwakeEnabled",
          "x-whenUnreadable": {
            "applies": false
          },
          "x-availableInVersion": "2.7032.0",
          "x-availability": "both",
          "x-deprecated": false,
          "x-beta": false,
          "x-consentRequired": false,
          "x-originPinned": false,
          "x-selfHosted": {
            "execution": "reported",
            "why": "Desktop itself asks the person's computer to stay awake, and shows the keep-awake switches"
          }
        },
        "developerModeEnabled": {
          "type": "boolean",
          "title": "Allow Developer Mode",
          "description": "Let users turn on Developer Mode. When off, the app’s developer tools and the option to install an unpacked extension are unavailable.",
          "x-flatKey": "developerModeEnabled",
          "x-whenUnreadable": {
            "applies": false
          },
          "x-availableInVersion": "2.37337.1",
          "x-availability": "both",
          "x-deprecated": false,
          "x-beta": false,
          "x-consentRequired": false,
          "x-originPinned": false,
          "x-selfHosted": {
            "execution": "reported",
            "why": "Desktop offers its own Developer menu, developer tools and debugger on the person's computer"
          }
        },
        "quickEntryDefaultShortcut": {
          "type": "string",
          "title": "Default Quick Entry shortcut",
          "description": "Set the shortcut that opens Quick Entry, such as Ctrl+Alt+K, for users who haven’t set their own in Settings. Use “off” for no shortcut.",
          "x-flatKey": "quickEntryDefaultShortcut",
          "x-availableInVersion": "3.1623.0",
          "x-availability": "both",
          "x-deprecated": false,
          "x-beta": false,
          "x-consentRequired": false,
          "x-originPinned": false,
          "x-selfHosted": {
            "execution": "reported",
            "why": "Desktop registers its Quick Entry shortcut with the operating system of the person's computer"
          }
        },
        "quickEntryScreenshotsEnabled": {
          "type": "boolean",
          "title": "Allow screenshots of the screen and other apps",
          "description": "Let users take screenshots of their screen or other apps’ windows in Quick Entry on macOS. When off, it offers none and never asks for Screen Recording access.",
          "x-flatKey": "quickEntryScreenshotsEnabled",
          "x-whenUnreadable": {
            "applies": false
          },
          "x-availableInVersion": "3.6556.1",
          "x-availability": "both",
          "x-deprecated": false,
          "x-beta": false,
          "x-consentRequired": false,
          "x-originPinned": false,
          "x-selfHosted": {
            "execution": "reported",
            "why": "Desktop takes the picture on the person's computer and offers it in its own Quick Entry window"
          }
        },
        "quickEntryFileSharingEnabled": {
          "type": "boolean",
          "title": "Allow sharing files open in other apps",
          "description": "Let users attach the file open in another app’s window in Quick Entry on macOS. When off, it offers none and never asks for Accessibility access.",
          "x-flatKey": "quickEntryFileSharingEnabled",
          "x-whenUnreadable": {
            "applies": false
          },
          "x-availableInVersion": "3.6556.1",
          "x-availability": "both",
          "x-deprecated": false,
          "x-beta": false,
          "x-consentRequired": false,
          "x-originPinned": false,
          "x-selfHosted": {
            "execution": "reported",
            "why": "Desktop finds the file on the person's computer and offers it in its own Quick Entry window"
          }
        },
        "builtinToolPolicy": {
          "type": "object",
          "propertyNames": {
            "type": "string",
            "pattern": "^(?:(Agent|Artifact|AskUserQuestion|Bash|ClaudeDesign|CronCreate|CronDelete|CronList|Edit|EndConversation|EnterPlanMode|EnterWorktree|ExitPlanMode|ExitWorktree|Glob|Grep|ListAgents|ListMcpResourcesTool|LSP|Monitor|NotebookEdit|OfferChromeSetup|PowerShell|Projects|propose_skills|ProposeGoal|PushNotification|Read|ReadMcpResourceDirTool|ReadMcpResourceTool|ReadNotifications|RemoteTrigger|ReportFindings|ScheduleWakeup|SendFeedback|SendMessage|SendUserFile|SendUserMessage|ShareOnboardingGuide|ShowOnboardingRolePicker|Skill|SubagentHandback|TaskCreate|TaskGet|TaskList|TaskStop|TaskUpdate|TodoWrite|ToolSearch|WaitForMcpServers|Workflow|Write|REPL|JavaScript|Task|KillShell|KillBash|ListPeers|Brief|ListMcpResources|ReadMcpResource|ReadMcpResourceDir)(?:\\((\\S[^\\r\\n]*)\\))?|(WebSearch|WebFetch))$"
          },
          "additionalProperties": {
            "type": "string",
            "enum": [
              "allow",
              "ask"
            ]
          },
          "title": "Built-in tool policy",
          "description": "Approval per tool or rule such as Bash(curl *). “ask” prompts the user before each matching call. “allow” is the default. To block, use Disabled built-in tools.",
          "x-flatKey": "builtinToolPolicy",
          "x-whenUnreadable": {
            "applies": {
              "Agent": "ask",
              "Artifact": "ask",
              "AskUserQuestion": "ask",
              "Bash": "ask",
              "ClaudeDesign": "ask",
              "CronCreate": "ask",
              "CronDelete": "ask",
              "CronList": "ask",
              "Edit": "ask",
              "EndConversation": "ask",
              "EnterPlanMode": "ask",
              "EnterWorktree": "ask",
              "ExitPlanMode": "ask",
              "ExitWorktree": "ask",
              "Glob": "ask",
              "Grep": "ask",
              "ListAgents": "ask",
              "ListMcpResourcesTool": "ask",
              "LSP": "ask",
              "Monitor": "ask",
              "NotebookEdit": "ask",
              "OfferChromeSetup": "ask",
              "PowerShell": "ask",
              "Projects": "ask",
              "propose_skills": "ask",
              "ProposeGoal": "ask",
              "PushNotification": "ask",
              "Read": "ask",
              "ReadMcpResourceDirTool": "ask",
              "ReadMcpResourceTool": "ask",
              "ReadNotifications": "ask",
              "RemoteTrigger": "ask",
              "ReportFindings": "ask",
              "ScheduleWakeup": "ask",
              "SendFeedback": "ask",
              "SendMessage": "ask",
              "SendUserFile": "ask",
              "SendUserMessage": "ask",
              "ShareOnboardingGuide": "ask",
              "ShowOnboardingRolePicker": "ask",
              "Skill": "ask",
              "SubagentHandback": "ask",
              "TaskCreate": "ask",
              "TaskGet": "ask",
              "TaskList": "ask",
              "TaskStop": "ask",
              "TaskUpdate": "ask",
              "TodoWrite": "ask",
              "ToolSearch": "ask",
              "WaitForMcpServers": "ask",
              "WebFetch": "ask",
              "WebSearch": "ask",
              "Workflow": "ask",
              "Write": "ask",
              "REPL": "ask",
              "JavaScript": "ask"
            }
          },
          "x-availableInVersion": "1.8089.0",
          "x-availability": "both",
          "x-deprecated": false,
          "x-beta": false,
          "x-consentRequired": false,
          "x-originPinned": false,
          "x-selfHosted": {
            "execution": "server",
            "why": "The host hands each session the admin's allow or ask rule for each built-in tool"
          }
        },
        "autoModeEnabled": {
          "type": "boolean",
          "title": "Allow Auto mode",
          "description": "Offer Auto mode in Code (on unless set to false); set to true to also offer it in Cowork as “Automatically approve”. Claude decides which actions need approval.",
          "x-flatKey": "autoModeEnabled",
          "x-whenUnreadable": {
            "applies": false
          },
          "x-availableInVersion": "1.10628.0",
          "x-availability": "both",
          "x-deprecated": false,
          "x-beta": false,
          "x-consentRequired": false,
          "x-originPinned": false,
          "x-selfHosted": {
            "execution": "server",
            "why": "The host allows or refuses Auto mode for the sessions it runs, and tells Desktop what to offer"
          }
        },
        "disableBypassPermissionsMode": {
          "type": "boolean",
          "title": "Disable bypass permissions mode",
          "description": "Remove the bypass permissions mode from Code sessions and Cowork tasks, so Claude always follows the permission policy. Off by default.",
          "x-flatKey": "disableBypassPermissionsMode",
          "x-whenUnreadable": {
            "applies": true
          },
          "x-availableInVersion": "1.46388.1",
          "x-availability": "both",
          "x-deprecated": false,
          "x-beta": false,
          "x-consentRequired": false,
          "x-originPinned": false,
          "x-selfHosted": {
            "execution": "none",
            "why": "A session host never offers bypass mode, so every session it runs already has it off"
          }
        },
        "toolSearchEnabled": {
          "type": "boolean",
          "title": "Enable tool search",
          "description": "Load MCP tool schemas on demand (tool search) instead of inlining every schema into context.",
          "default": false,
          "x-flatKey": "toolSearchEnabled",
          "x-availableInVersion": "1.21459.0",
          "x-availability": "both",
          "x-deprecated": false,
          "x-beta": false,
          "x-consentRequired": false,
          "x-originPinned": false,
          "x-selfHosted": {
            "execution": "server",
            "why": "The host starts Claude Code, so it turns tool search on or off for its sessions"
          }
        },
        "skipWebFetchPreflight": {
          "type": "boolean",
          "title": "Skip WebFetch domain check",
          "description": "Skip Claude Code’s WebFetch domain lookup against api.anthropic.com in Code sessions. Off by default; turn on when that host is blocked.",
          "x-flatKey": "skipWebFetchPreflight",
          "x-availableInVersion": "1.37937.0",
          "x-availability": "both",
          "x-deprecated": false,
          "x-beta": false,
          "x-consentRequired": false,
          "x-originPinned": false,
          "x-selfHosted": {
            "execution": "none",
            "why": "A session host always skips the web fetch preflight check, whatever is written"
          }
        },
        "allowedWorkspaceFolders": {
          "type": "array",
          "items": {
            "anyOf": [
              {
                "type": "string",
                "minLength": 1
              },
              {
                "type": "object",
                "properties": {
                  "path": {
                    "type": "string",
                    "minLength": 1,
                    "title": "Path",
                    "description": "Absolute folder path. May start with ~ or one of the listed %VAR% tokens, expanded per user. Subfolders are included.",
                    "x-consentRequired": false,
                    "x-availableInVersionOverride": "1.14271.0"
                  },
                  "isDefaultSelected": {
                    "type": "boolean",
                    "title": "Pre-select on new task",
                    "description": "Shows as a folder chip on the new-task page and skips the trust prompt. Users can remove it.",
                    "x-consentRequired": false,
                    "x-availableInVersionOverride": "1.14271.0"
                  },
                  "mode": {
                    "type": "string",
                    "enum": [
                      "rw",
                      "ro"
                    ],
                    "title": "Access mode",
                    "description": "Read-only folders can be viewed and searched but not modified in Cowork. In Code, applies to file tools only. Over SSH, also to Bash in its sandbox.",
                    "x-consentRequired": false,
                    "x-availableInVersionOverride": "1.26832.0"
                  }
                },
                "required": [
                  "path"
                ]
              }
            ]
          },
          "title": "Allowed workspace folders",
          "description": "Folders where Claude may work. Applies to Cowork and Code sessions and to the project folders a chat reads. Leave unset for unrestricted access.",
          "x-flatKey": "allowedWorkspaceFolders",
          "x-whenUnreadable": {
            "applies": []
          },
          "x-availableInVersion": "1.2581.0",
          "x-availability": "both",
          "x-deprecated": false,
          "x-beta": false,
          "x-consentRequired": false,
          "x-originPinned": false,
          "x-selfHosted": {
            "execution": "server",
            "why": "The host refuses file access outside folders listed as full paths, and Desktop checks those listed with ~ or a variable"
          }
        },
        "blockReadsOutsideWorkingDirectories": {
          "type": "boolean",
          "title": "Block reads outside working directories",
          "description": "Keep Claude from reading files outside a Code session’s working directories. File tools refuse such reads; sandboxed shell commands lose the home directory.",
          "x-flatKey": "blockReadsOutsideWorkingDirectories",
          "x-whenUnreadable": {
            "applies": true
          },
          "x-availableInVersion": "1.46388.1",
          "x-availability": "both",
          "x-deprecated": false,
          "x-beta": false,
          "x-consentRequired": false,
          "x-originPinned": false,
          "x-selfHosted": {
            "execution": "server",
            "why": "The host starts Code sessions, so it hands Claude Code the block on reads outside their folders"
          }
        },
        "coworkEgressAllowedHosts": {
          "type": "array",
          "items": {
            "type": "string",
            "minLength": 1
          },
          "title": "Allowed egress hosts",
          "description": "Hosts agent tools may reach in Cowork and Chat (Code: in part). An empty list acts as unset for tools, but stops Claude opening sites in the built-in browser.",
          "x-flatKey": "coworkEgressAllowedHosts",
          "x-whenUnreadable": {
            "applies": []
          },
          "x-availableInVersion": "1.2581.0",
          "x-availability": "both",
          "x-deprecated": false,
          "x-beta": false,
          "x-consentRequired": false,
          "x-originPinned": false,
          "x-selfHosted": {
            "execution": "server",
            "why": "Tools in the host's sessions make the network calls, so the host limits which addresses they may reach"
          }
        },
        "coworkVmIpv6Enabled": {
          "type": "boolean",
          "title": "Enable IPv6 in the workspace VM",
          "description": "Give the Cowork workspace VM an IPv6 address and route so the agent’s tools can reach IPv6-only hosts through the device. macOS and Windows; off by default.",
          "x-flatKey": "coworkVmIpv6Enabled",
          "x-availableInVersion": "1.52386.0",
          "x-availability": "both",
          "x-deprecated": false,
          "x-beta": false,
          "x-consentRequired": false,
          "x-originPinned": false,
          "x-selfHosted": {
            "execution": "none",
            "why": "Configures Cowork's local virtual machine, which a host session does not have"
          }
        },
        "endUserAttribution": {
          "type": "boolean",
          "title": "End-user attribution",
          "description": "Show the signed-in user’s identity-provider identity in the sidebar and account menu, and emit it as the OpenTelemetry enduser.id resource attribute.",
          "x-flatKey": "endUserAttribution",
          "x-whenUnreadable": {
            "applies": false
          },
          "x-availableInVersion": "1.25927.0",
          "x-availability": "both",
          "x-deprecated": false,
          "x-beta": false,
          "x-consentRequired": false,
          "x-originPinned": false,
          "x-selfHosted": {
            "execution": "server",
            "why": "The host puts the person's identity on the telemetry it sends, and tells Desktop whether to show the person's name"
          }
        },
        "userContentRendererUrl": {
          "type": "string",
          "format": "uri",
          "title": "Artifact preview iframe origin",
          "description": "HTTPS origin of the user-content-renderer deployment used for artifact and file previews. Defaults to the commercial host when unset.",
          "x-flatKey": "userContentRendererUrl",
          "x-availableInVersion": "1.24012.0",
          "x-availability": "both",
          "x-deprecated": false,
          "x-beta": false,
          "x-consentRequired": false,
          "x-originPinned": false,
          "x-selfHosted": {
            "execution": "none",
            "why": "Names where Desktop loads its previews from, and no session host passes the setting on to Desktop yet"
          }
        },
        "organizationInstructions": {
          "type": "string",
          "minLength": 1,
          "maxLength": 3000,
          "title": "Organization instructions",
          "description": "Appended to Claude’s system prompt in Chat, Cowork, and Code. Guidance the model follows, not an enforced control. Up to 3,000 characters.",
          "x-flatKey": "organizationInstructions",
          "x-availableInVersion": "1.37937.0",
          "x-availability": "both",
          "x-deprecated": false,
          "x-beta": false,
          "x-consentRequired": false,
          "x-originPinned": false,
          "x-selfHosted": {
            "execution": "server",
            "why": "The host adds the admin's instructions to every session it starts"
          }
        },
        "builtinBrowserEnabled": {
          "type": "boolean",
          "title": "Allow the built-in browser",
          "description": "Offer the built-in browser in Cowork and Code sessions so users and Claude can open and work with web pages. Site sign-ins stay on the device until cleared.",
          "default": false,
          "x-flatKey": "builtinBrowserEnabled",
          "x-availableInVersion": "2.2553.0",
          "x-availability": "both",
          "x-deprecated": false,
          "x-beta": false,
          "x-consentRequired": false,
          "x-originPinned": false,
          "x-selfHosted": {
            "execution": "none",
            "why": "The browser pane lives in Desktop on the person's computer, and host sessions get no browser tools"
          }
        },
        "builtinBrowserDefaultDomainPolicy": {
          "type": "string",
          "enum": [
            "allow",
            "block"
          ],
          "title": "Default site policy in the built-in browser",
          "description": "Whether Claude may open sites in the built-in browser by default; the allowed or blocked list is the exception. Mirrors the Claude in Chrome site policy.",
          "default": "allow",
          "x-flatKey": "builtinBrowserDefaultDomainPolicy",
          "x-whenUnreadable": {
            "applies": "block"
          },
          "x-availableInVersion": "2.2553.0",
          "x-availability": "both",
          "x-deprecated": false,
          "x-beta": false,
          "x-consentRequired": false,
          "x-originPinned": false,
          "x-selfHosted": {
            "execution": "none",
            "why": "Sets the default for Desktop's browser tools, and host sessions get no browser tools to allow or block"
          }
        },
        "builtinBrowserAllowedDomains": {
          "type": "array",
          "items": {
            "type": "string",
            "minLength": 1
          },
          "title": "Allowed sites in the built-in browser",
          "description": "Sites Claude may open, read, and act on in the built-in browser when the default site policy is block. Users can still view other sites.",
          "x-flatKey": "builtinBrowserAllowedDomains",
          "x-whenUnreadable": {
            "applies": []
          },
          "x-availableInVersion": "2.2553.0",
          "x-availability": "both",
          "x-deprecated": false,
          "x-beta": false,
          "x-consentRequired": false,
          "x-originPinned": false,
          "x-selfHosted": {
            "execution": "none",
            "why": "Lists sites allowed for Desktop's browser tools, and host sessions get no browser tools"
          }
        },
        "builtinBrowserBlockedDomains": {
          "type": "array",
          "items": {
            "type": "string",
            "minLength": 1
          },
          "title": "Blocked sites in the built-in browser",
          "description": "Sites Claude may not open, read, or act on in the built-in browser when the default site policy is allow. Users can still view them.",
          "x-flatKey": "builtinBrowserBlockedDomains",
          "x-whenUnreadable": {
            "applies": [
              "*"
            ]
          },
          "x-availableInVersion": "2.2553.0",
          "x-availability": "both",
          "x-deprecated": false,
          "x-beta": false,
          "x-consentRequired": false,
          "x-originPinned": false,
          "x-selfHosted": {
            "execution": "none",
            "why": "Lists sites blocked for Desktop's browser tools, and host sessions get no browser tools"
          }
        },
        "disableDeploymentModeChooser": {
          "type": "boolean",
          "title": "Disable Claude.ai sign-in",
          "description": "Users see only this provider at the login screen. The option to sign in to Claude.ai is hidden.",
          "default": false,
          "x-flatKey": "disableDeploymentModeChooser",
          "x-whenUnreadable": {
            "applies": true
          },
          "x-availableInVersion": "1.3834.0",
          "x-availability": "both",
          "x-deprecated": false,
          "x-beta": false,
          "x-consentRequired": false,
          "x-originPinned": false,
          "x-selfHosted": {
            "execution": "client",
            "why": "Shapes Desktop's sign-in screen and configuration source, settled before Desktop reaches the host"
          }
        },
        "disableDeepLinkRegistration": {
          "type": "boolean",
          "title": "Disable claude:// deep-link handling",
          "description": "Stop external apps and websites from opening Claude Desktop via claude:// links.",
          "default": false,
          "x-flatKey": "disableDeepLinkRegistration",
          "x-whenUnreadable": {
            "applies": true
          },
          "x-availableInVersion": "1.6889.0",
          "x-availability": "both",
          "x-deprecated": false,
          "x-beta": false,
          "x-consentRequired": false,
          "x-originPinned": false,
          "x-selfHosted": {
            "execution": "client",
            "why": "Desktop registers claude:// links on the person's computer at launch, before it has signed in to the host"
          }
        },
        "microsoftAuthBroker": {
          "type": "string",
          "enum": [
            "auto",
            "disabled",
            "required"
          ],
          "title": "Microsoft 365 native sign-in broker",
          "description": "“disabled” forces browser-based Microsoft 365 sign-in; “required” fails sign-in when the OS broker is unavailable, so the refresh token stays broker-held.",
          "default": "auto",
          "x-flatKey": "microsoftAuthBroker",
          "x-whenUnreadable": {
            "applies": "disabled"
          },
          "x-availableInVersion": "1.19367.0",
          "x-availability": "both",
          "x-deprecated": false,
          "x-beta": false,
          "x-consentRequired": false,
          "x-originPinned": false,
          "x-selfHosted": {
            "execution": "none",
            "why": "Steers the sign-in of Desktop's bundled Microsoft 365 connector, started for no session on a self-hosted install"
          },
          "x-valueAvailableInVersionOverride": [
            {
              "value": "required",
              "availableInVersion": "1.49585.0"
            }
          ]
        },
        "microsoftAuthDefaultAccount": {
          "type": "string",
          "enum": [
            "enabled",
            "disabled"
          ],
          "title": "Microsoft 365 sign-in with the Windows account",
          "description": "“enabled”: when a user clicks Connect on Windows, Microsoft 365 signs in with the work account already signed in to Windows, without the account picker.",
          "default": "disabled",
          "x-flatKey": "microsoftAuthDefaultAccount",
          "x-whenUnreadable": {
            "applies": "disabled"
          },
          "x-availableInVersion": "2.26454.0",
          "x-availability": "both",
          "x-deprecated": false,
          "x-beta": false,
          "x-consentRequired": false,
          "x-originPinned": false,
          "x-selfHosted": {
            "execution": "none",
            "why": "Picks the account for Desktop's bundled Microsoft 365 connector, started for no session on a self-hosted install"
          }
        },
        "deploymentDisplayName": {
          "type": "string",
          "minLength": 1,
          "maxLength": 60,
          "title": "Deployment display name",
          "description": "Overrides the provider label shown in the sidebar footer, user-menu header, and connection-error banner.",
          "x-flatKey": "deploymentDisplayName",
          "x-availableInVersion": "1.24012.0",
          "x-availability": "both",
          "x-deprecated": false,
          "x-beta": false,
          "x-consentRequired": false,
          "x-originPinned": false,
          "x-selfHosted": {
            "execution": "reported",
            "why": "Desktop shows this name in place of the provider's name in its own window"
          }
        },
        "deploymentDisplaySubtitle": {
          "type": "string",
          "minLength": 1,
          "maxLength": 60,
          "title": "Deployment display subtitle",
          "description": "Optional detail shown after the deployment display name in the account-menu header.",
          "x-flatKey": "deploymentDisplaySubtitle",
          "x-availableInVersion": "1.24012.0",
          "x-availability": "both",
          "x-deprecated": false,
          "x-beta": false,
          "x-consentRequired": false,
          "x-originPinned": false,
          "x-selfHosted": {
            "execution": "reported",
            "why": "Desktop shows this detail after the deployment's name in its account menu"
          }
        },
        "disableConfigDeprecationWarnings": {
          "type": "boolean",
          "title": "Hide configuration deprecation warnings",
          "description": "Don’t show users the in-app warning that this configuration uses a deprecated field. The final reminder in the 24 hours before the cut-off still appears.",
          "x-flatKey": "disableConfigDeprecationWarnings",
          "x-availableInVersion": "1.40609.0",
          "x-availability": "both",
          "x-deprecated": false,
          "x-beta": false,
          "x-consentRequired": false,
          "x-originPinned": false,
          "x-selfHosted": {
            "execution": "reported",
            "why": "Desktop shows its warning about deprecated settings in its own window, for configuration that Desktop reads itself"
          }
        },
        "claudeAiImport": {
          "type": "object",
          "properties": {
            "enabled": {
              "default": false,
              "title": "Enable import",
              "description": "Lets users import a Claude.ai data export and earlier Claude sessions on this computer from Settings → Import. Doesn’t affect a provisioned sign-in import.",
              "x-consentRequired": false,
              "type": "boolean",
              "x-availableInVersionOverride": "1.28929.0"
            },
            "allowedOrganizationUuids": {
              "title": "Organizations users may import from",
              "description": "When set, users import by sign-in only, and only from the Claude.ai organizations with these IDs.",
              "x-consentRequired": false,
              "type": "array",
              "items": {
                "type": "string"
              },
              "x-availableInVersionOverride": "2.26454.0"
            },
            "automatic3pImport": {
              "title": "Automatically import earlier third-party sessions",
              "description": "Copy this computer’s earlier third-party sessions into the app once, in the background. Independent of `enabled`.",
              "x-consentRequired": false,
              "type": "boolean",
              "x-availableInVersionOverride": "1.40609.0"
            },
            "exportEnabled": {
              "default": false,
              "title": "Enable session export",
              "description": "Lets users export this computer’s chats, Cowork tasks, and Code sessions as a zip another install can import. No effect unless `enabled` is true.",
              "x-consentRequired": false,
              "type": "boolean",
              "x-availableInVersionOverride": "1.32352.0"
            },
            "bannerBehavior": {
              "title": "Import prompt banner",
              "description": "Prompt to import on a new chat or task. Off if unset. `show`: always; needs `enabled` or a sign-in import. `detect`: if `enabled` finds earlier Claude sessions.",
              "x-consentRequired": false,
              "type": "string",
              "enum": [
                "off",
                "detect",
                "show"
              ],
              "x-availableInVersionOverride": "1.28929.0"
            }
          },
          "title": "Claude.ai data import",
          "description": "Lets users import Claude.ai chats and projects, plus earlier Claude sessions on this computer, when `enabled` is true. `automatic3pImport` is a separate switch.",
          "x-flatKey": "claudeAiImport",
          "x-availableInVersion": "1.10628.0",
          "x-availability": "both",
          "x-deprecated": false,
          "x-beta": false,
          "x-consentRequired": false,
          "x-originPinned": false,
          "x-selfHosted": {
            "execution": "reported",
            "why": "Desktop can still export sessions stored on the person's computer, and imports none, since no session runs there"
          }
        },
        "banner": {
          "type": "object",
          "properties": {
            "enabled": {
              "type": "boolean",
              "title": "Show banner",
              "description": "Turns the banner on. When false or unset, the other banner fields are ignored.",
              "x-consentRequired": false
            },
            "text": {
              "type": "string",
              "title": "Banner text",
              "description": "Single line, truncated on overflow. Maximum 200 characters.",
              "x-consentRequired": false
            },
            "backgroundColor": {
              "type": "string",
              "title": "Background color",
              "description": "Six-digit hex (#RRGGBB). Applied exactly as configured; not theme-adapted.",
              "default": "#F5F5F5",
              "x-consentRequired": false
            },
            "textColor": {
              "type": "string",
              "title": "Text color",
              "description": "Six-digit hex (#RRGGBB). Applied exactly as configured; not theme-adapted.",
              "default": "#000000",
              "x-consentRequired": false
            },
            "linkUrl": {
              "type": "string",
              "title": "Link URL",
              "description": "Optional HTTPS URL. The banner text becomes a link when set.",
              "x-consentRequired": false
            }
          },
          "title": "Organization banner",
          "description": "A persistent banner across the top of the app window after sign-in.",
          "x-flatKey": "banner",
          "x-availableInVersion": "1.7196.0",
          "x-availability": "both",
          "x-deprecated": false,
          "x-beta": false,
          "x-consentRequired": false,
          "x-originPinned": false,
          "x-selfHosted": {
            "execution": "reported",
            "why": "Desktop draws the admin's banner across the top of its own window"
          }
        }
      },
      "description": "Per-user bootstrap configuration response in the flat format (`$schemaVersion` 1): bootstrapable keys by their managed-configuration key names at top level. Structural reference for editor autocomplete — the client applies further validation that this schema does not express (https-only and non-loopback URLs, origin-pinning under gateway SSO). Unrecognised keys are ignored. A node marked `x-readers` is read by the clients it names (`desktop` = Claude Desktop, `m365` = the Claude add-in for Microsoft 365); an unmarked node is read by Claude Desktop only. The marker is per key; which providers a client supports is that client's own list. Each key node's `x-selfHosted` matters only on a self-hosted install, where sessions run on a session host that your organization operates and not on the person's computer. Its `execution` says who acts on the key there, and so where to set it: `server` = in the document your session host reads; the host applies it itself. `reported` = in the same document; the host passes it on to Claude Desktop, which applies it in its own windows or on the person's computer. `client` = in Claude Desktop's own configuration on the computer (device management, the local file, or a bootstrap server that configuration names); the session host ignores it. `none` = nothing acts on it on a self-hosted install, whichever of those places sets it. Its `why` gives the reason in one line. One exception to the four words: where a device-management profile sets only app-behavior keys, that profile alone decides all of them (of the keys here: `disableAutoUpdates`, `installedUpdateEnforcementEnabled`, `installedUpdateEnforcementHours`, `autoUpdaterEnforcementHours`, `updateViaUpdatesHost`, `releaseChannel`, `relaunchEnforcementHours`, `configRecheckIntervalMinutes`). The word is what this Claude Desktop release declares. A session host acts on a `server` or `reported` key only from the host version that reads it; until then nothing applies the key on a self-hosted install, and Claude Desktop does not fall back to a value set on the computer. A key node's `x-whenUnreadable` says what Claude Desktop does when the key is present but its value is invalid (wrong type, malformed, or no usable entry; `null` and a blank string count as not set): `{\"applies\": value}` means it applies that value; `{\"unusable\": true}` means it treats the key as set but unusable (an invalid managed MCP server list keeps plugin-provided servers' tools blocked rather than allowing them), and a server that mirrors the app should do the same. A key node without it is treated as not set in that case. Each key node's `x-availableInVersion` is the first Claude Desktop release that reads the key; the app names its version as `Claude/<version>` in the User-Agent of the request, so a server can leave out keys the requesting build does not read yet. Below a key, releases are stated by exception: a property node carries `x-availableInVersionOverride` only when it is first read by a later release than the node above it, and an `enum` or `const` node's `x-valueAvailableInVersionOverride` lists `{value, availableInVersion}` only for the values first read by a later release than the node. The release from which a location in a document is read is the newest one stated on the path from the root to it: the key's `x-availableInVersion`, any override on a property node along the way (array items, map values and union alternatives add no level of their own), the value's own entry, and — inside a union alternative (a managed MCP server, OAuth, marketplace or inference-provider variant) — the release stated on that alternative's discriminator property (`server`, `mode`, `transport`, `source`, `provider`, …): its override, or the entry for its value; the alternative's other properties and any key repeated inside it are read no earlier than that."
    }
  }
}
