Skip to main content
Cowork on third-party (3P) is configured entirely through OS-native managed preferences: a .mobileconfig profile on macOS or registry policy on Windows. This page documents every supported key. The easiest way to author a configuration is the in-app configuration window (Developer → Configure third-party inference), which validates values, shows per-provider requirements, and exports directly to .mobileconfig or .reg. Use this reference when you need to author policy by hand, audit an existing profile, or understand exactly what a key does.

How keys are read

PlatformManaged (MDM) locationLocal (user) location
macOS/Library/Managed Preferences/<user>/com.anthropic.claudefordesktop.plist~/Library/Application Support/Claude-3p/claude_desktop_config.json (enterpriseConfig key)
WindowsHKLM\SOFTWARE\Policies\Claude (machine), HKCU\SOFTWARE\Policies\Claude (user)%APPDATA%\Claude-3p\claude_desktop_config.json (enterpriseConfig key)
When a managed source is present, it wins and locally written values are ignored. Configuration is read once at launch, so fully quit and reopen the app after any change. See Installation and setup for the full precedence rules.

Value types

All values are stored as strings in the OS preference store, even booleans and arrays.
Documented typeWhat to writeExample
stringPlain stringvertex
boolean"true" or "false" (or 1 / 0)"true"
integerDecimal string"3600"
string[] (JSON)JSON array encoded as a string (not a native plist/registry array)["claude-sonnet-4","claude-opus-4"]
object[] (JSON)JSON array of objects, as a stringsee managedMcpServers
The most common configuration mistake is writing array-typed keys as native arrays. Keys like inferenceModels, disabledBuiltinTools, and coworkEgressAllowedHosts must be JSON strings. In a .mobileconfig, that means a single <string> element containing [...], not an <array>.
The sections below match the sidebar of the in-app configuration window.

Connection

Activation

SettingTypeDescription
Inference provider
inferenceProvider
stringSelects the inference backend. One of gateway, vertex, bedrock, foundry. 3P mode activates only when this key is set and the required credential keys for the selected provider are present and valid; otherwise the app launches in standard mode.
Organization UUID
deploymentOrganizationUuid
stringA UUID you generate to identify your deployment, in standard xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx format. Used to attribute telemetry to your organization.
Skip login-mode chooser
disableDeploymentModeChooser
booleanWhen true, skips the sign-in choice screen at first launch and boots directly into the mode implied by this configuration — third-party when inferenceProvider is set. Users won’t see the option to sign in to Anthropic instead, and any previously persisted choice is ignored.
Generate and set deploymentOrganizationUuid before rollout. Anthropic uses this value to locate crash reports and telemetry from your fleet when you open a support case. If it’s unset, your telemetry is tagged with a shared placeholder UUID (00000000-0000-4000-8000-000000000001) that every unconfigured deployment also uses, and Anthropic cannot distinguish your organization’s events from anyone else’s.

Provider credentials

Each provider has its own required keys. Keys for providers other than the one selected in inferenceProvider are ignored.
SettingRequiredDescription
GCP project ID
inferenceVertexProjectId
YesGCP project ID.
GCP region
inferenceVertexRegion
YesGCP region (e.g. us-east5, europe-west4). On supported builds, global is also accepted.
GCP credentials file path
inferenceVertexCredentialsFile
NoAbsolute path to a service-account JSON or Application Default Credentials file. No ~ or environment-variable expansion. Required unless using OAuth (below) or a credential helper.
Vertex AI base URL
inferenceVertexBaseUrl
NoOverride the public regional endpoint, e.g. for Private Service Connect. Must be https://.
Vertex OAuth client ID
inferenceVertexOAuthClientId
NoOAuth client ID for an interactive per-user Google sign-in, as an alternative to a shared service-account file.
Vertex OAuth client secret
inferenceVertexOAuthClientSecret
NoOAuth client secret paired with the client ID above.
Vertex OAuth scopes
inferenceVertexOAuthScopes
NoJSON string array of OAuth scopes to request. Defaults to the scope required for Vertex prediction.

Credential helper

For environments where static API keys aren’t permitted, Cowork on 3P can invoke an executable you provide to fetch a short-lived credential at runtime.
SettingTypeDescription
Credential helper script
inferenceCredentialHelper
stringAbsolute path to an executable on the host. Its stdout is used as the inference credential, replacing the static API-key key for the chosen provider.
Credential helper TTL
inferenceCredentialHelperTtlSec
integerCache the helper’s output for this many seconds before re-running it. Default 3600.
The helper runs on the host (outside the sandbox) at session start and on cache expiry. Pair this with your organization’s SSO, secrets manager, or PKI tooling.

Models

SettingTypeDescription
Model list
inferenceModels
(string | object)[] (JSON)Models to expose in the picker. Use the provider’s exact model ID: Vertex publisher IDs (claude-sonnet-4@20250514), Bedrock inference-profile IDs (us.anthropic.claude-sonnet-4-...-v1:0), or Foundry deployment names. The first entry is the default. Required for Vertex, Bedrock, and Foundry; gateways auto-discover available models. Entries may be plain strings or objects of the form {"name": "<id>", "supports1m": true} — see below.

Offering a 1M-token context variant

If your provider serves a model with the extended 1M-token context window, you can expose it as a separate picker entry by setting supports1m: true on that model’s entry:
"inferenceModels": [
  { "name": "claude-opus-4", "supports1m": true },
  "claude-sonnet-4"
]
supports1m is a capability assertion you make about your deployment — Cowork doesn’t probe the provider to verify it. Only set it for models you’ve confirmed support the extended window; selecting a 1M variant on a model that doesn’t will fail mid-session once the conversation grows past the model’s actual limit.
Gateway: the name must be the exact ID your gateway’s /v1/models endpoint returns. If you set supports1m on an alias (sonnet) but discovery returns the full ID (claude-sonnet-4-6), the variant won’t appear.

Sandbox & workspace

SettingTypeDefaultDescription
Disabled built-in tools
disabledBuiltinTools
string[] (JSON)[]Built-in tool names to remove from the agent entirely (e.g. ["WebSearch","Bash"]). Valid names: Bash, Read, Write, Edit, Glob, Grep, NotebookEdit, WebFetch, WebSearch, Task, TodoWrite, TaskCreate, TaskUpdate, TaskGet, TaskList, TaskStop, Skill, REPL, JavaScript, AskUserQuestion, ToolSearch, SendUserMessage.
Allowed workspace folders
allowedWorkspaceFolders
string[] (JSON)unrestrictedAbsolute paths users may attach as workspace folders. Leading ~ expands to the user’s home. When set, any path outside this list is rejected.
Allowed egress hosts
coworkEgressAllowedHosts
string[] (JSON)inference endpoint onlyHostnames the Cowork sandbox may reach for web fetch, shell, and package installs. Supports *.example.com wildcards. ["*"] disables sandbox egress filtering. The configured inference endpoint is always allowed implicitly.
Allow Claude Code tab
isClaudeCodeForDesktopEnabled
booleantrueShow the Code tab.
coworkEgressAllowedHosts governs the Cowork tab’s sandbox — web fetch, shell commands, and package installs run by the Cowork agent. It does not restrict the Code tab, which executes on the host with the user’s normal network access. To remove the Code tab, set isClaudeCodeForDesktopEnabled to false.

Connectors & extensions

SettingTypeDefaultDescription
Managed MCP servers
managedMcpServers
object[] (JSON)[]Remote MCP servers deployed to all users. See schema.
Allow user-added MCP servers
isLocalDevMcpEnabled
booleantrueAllow users to add their own local MCP servers from Settings → Developer. End users cannot add remote MCP servers regardless of this setting.
Allow desktop extensions
isDesktopExtensionEnabled
booleantrueAllow installing local desktop extensions (.mcpb).
Show extension directory
isDesktopExtensionDirectoryEnabled
booleantrueShow the Anthropic extension directory in the Connectors UI.
Require signed extensions
isDesktopExtensionSignatureRequired
booleanfalseReject unsigned desktop extensions.
See MCP, plugins, skills, and hooks for the org-plugins directory layout and the full managedMcpServers schema.

managedMcpServers

A JSON-stringified array of server objects:
FieldRequiredDescription
nameYesUnique display name.
urlYesServer URL. Must be https://.
transport"http" (default) or "sse".
headersStatic string→string header map. Mutually exclusive with oauth.
headersHelperAbsolute path to an executable that prints a JSON header object on stdout, for short-lived auth tokens. Mutually exclusive with oauth.
headersHelperTtlSecCache helper output for this many seconds.
oauthtrue to use a dynamic-registration PKCE flow; tokens stored in the OS keychain. Mutually exclusive with headers / headersHelper.
toolPolicyMap of tool name → "allow" / "ask" / "blocked". Locks the per-tool approval state for that server.

Telemetry & updates

See Telemetry and egress for what each category sends and the network paths involved.

Anthropic telemetry and updates

SettingTypeDefaultDescription
Block essential telemetry
disableEssentialTelemetry
booleanfalseBlock crash reports and error telemetry to Anthropic. Disabling this opts you into a manual support model in which your team collects and sends logs to Anthropic directly.
Block nonessential telemetry
disableNonessentialTelemetry
booleanfalseBlock product-usage analytics to Anthropic.
Block nonessential services
disableNonessentialServices
booleanfalseBlock non-critical third-party services: connector favicons and the artifact-preview iframe.
Block auto-updates
disableAutoUpdates
booleanfalseBlock update checks and downloads from Anthropic. Your IT team must redistribute new builds.
Auto-update enforcement window
autoUpdaterEnforcementHours
integer72Force a pending update to install after this many hours (1–72). Ignored when auto-updates are disabled.

OpenTelemetry export

Export full session activity to your own collector. See Monitoring for the event schema.
SettingTypeDescription
OpenTelemetry collector endpoint
otlpEndpoint
stringBase URL of your OTLP collector. When set, sessions export logs and metrics (prompts, tool calls, token counts). The endpoint host is automatically added to the sandbox network allowlist.
OpenTelemetry exporter protocol
otlpProtocol
stringhttp/protobuf (default), http/json, or grpc.
OpenTelemetry exporter headers
otlpHeaders
stringComma-separated key=value pairs sent on every OTLP request (standard OTEL_EXPORTER_OTLP_HEADERS format).

Usage limits

SettingTypeDescription
Max tokens per window
inferenceMaxTokensPerWindow
integerTotal input + output tokens permitted per device per window. When reached, the app refuses new messages until the window resets. Enforced locally; persists across restarts.
Token cap window
inferenceTokenWindowHours
integerLength of the tumbling window for the cap above, 1–720 hours.

Plugins & skills

Plugins and skills have no configuration keys. They are distributed by placing plugin bundles in the org-plugins directory on each device, which the configuration window’s Plugins & skills section displays for reference.
The profiles below are illustrative examples rather than built-in presets, and the labels are descriptive only. Use them as starting points and adjust for your environment. Layer the inference-provider keys for your cloud on top of whichever profile you choose.
Recommended for most enterprise deployments. Telemetry and auto-updates stay on so Anthropic can diagnose issues and ship fixes; users can extend Cowork with their own connectors.
KeyValue
deploymentOrganizationUuid<your-org-uuid>
autoUpdaterEnforcementHours24
isDesktopExtensionSignatureRequiredtrue
otlpEndpoint<your-collector>