Follow Discord
Sweep 06 Nov 2026 · 01:32Z Build v2.1.319 537 read Stable v2.1.311 Latest v2.1.318 Next v2.1.319 Feeds RSS JSON llms.txt llms-full.txt Unofficial
One capture · claude-docs

One read of Claude Documentationclaude-docs-20261105T183705Z

21 pages moved out of 281 read.

Pages moved 21 significant first
Pages read 281 in this capture
Captured 18:37 UTC
Corpus hash 69df407701e3 corpus-hash

What this read moved

1-21 of 21

cowork/changelog Changed · +73 / -0 lines

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

from line 2
22 
33> Release notes for Claude Desktop
44 
5**v4.23118.0**
6 
72026-11-05
8 
9Bundled Claude Code version: 2.1.317.
10 
11**General**
12 
13* Changed the organization setting that blocks other accounts on a computer: once a member has signed in there, the Claude API key and Console sign-in and the computer's own third-party setup are unavailable too while the block lasts.
14* Fixed a new chat's saved draft being deleted when only spaces or blank lines were typed before the draft had loaded.
15* Fixed connections failing with a certificate error on computers whose company root certificate was renewed with a new key.
16* Fixed Enter or Tab in the "/" menu running a command you had not chosen, or sending your half-typed text, when more commands finished loading.
17* Fixed losing the saved sign-in when a company proxy or firewall answered its renewal with a block page.
18* Fixed permission and question cards and the "Paused" and "Switched to" notices being cut off, with some buttons out of reach or running out of the card, at 400% zoom or in very short or narrow windows, and the "Switched to" notice not closing there.
19* Fixed the third-party history import, the Code tab's queued message and task list, and several saved app files not being read on Windows when the user profile lives in an FSLogix profile container.
20 
21**Code**
22 
23* Added a Minimize button to the Terminal, Browser, and iOS Simulator panes. A minimized pane stays as a small live view in a corner of the chat, or in the session rail when it's shown. You can expand it again or close it, and in a corner you can also move and resize it (not yet in third-party deployments).
24* Changed SSH sessions to hold a message that has waited over a day for its host: it stays above the message box until you press Send now.
25* Improved reconnecting SSH sessions through a slow proxy command or jump host on Mac and Linux: your message or Retry now waits up to 90 seconds, unless the SSH config sets `ConnectTimeout`.
26* Improved SSH sessions on hosts that ask you to sign in at every connection: they can now ride out longer network gaps without a new sign-in.
27* Fixed `SSL_CERT_FILE` and `SSL_CERT_DIR` in Claude Code's managed settings being overridden in Code sessions when the same variable is set on the computer.
28* Fixed a Windows issue where quitting during a settings save could leave `~/.claude.json` empty.
29* Fixed attached files sometimes failing to upload when the network connection changed during the upload.
30* Fixed Claude being unable to read the files of plugins turned on in the managed-settings file when allowed workspace folders are set, for organizations with no server-managed settings.
31* Fixed HTML previews in SSH and WSL sessions showing empty charts and tables that the page's own scripts draw. Organizations that set `disableBrowserExternalNavigation` in Claude Code's `managed-settings.json` keep scripts off in these previews.
32* Fixed SSH sessions failing to start: "Couldn't start the remote server" on hosts whose home folder is on a slow network drive, and Claude Code start failures on Windows hosts that are not set to English, where low memory and similar causes are now retried and shown with their own message.
33* Fixed SSH sessions losing background work on the host after your Claude account's sign-in ran out while the app was away.
34* Fixed SSH sessions not reconnecting by themselves after the network drops during a sign-in (with a saved password: one more try while you are at the computer, and one about 30 minutes later if nobody is; Mac and Linux) or after a long outage when the host's firewall limits new connections.
35* Fixed the app reconnecting over and over, signing in each time, to an SSH host whose shell start-up files print text or change HOME, now saying what to fix at the first refusal, and SSH sign-in questions from an earlier jump host getting lost when a later jump host shares connections.
36 
37**Cowork**
38 
39* Fixed a comment on a file seeming to send from a read-only task. It is now saved on the file.
40* Fixed Cowork deletions left unsent on the few Windows PCs where an October update moved the app's data folder only part way.
41* Fixed imported tasks sometimes starting without your organization's allowed domains when the app was slow to start.
42* Fixed imported tasks using Memory after your admin or you turned Memory off.
43* Fixed new cloud tasks requesting a model that isn't available to you.
44* Fixed removing an import from Settings > Import leaving behind a task whose saved record could not be read.
45* Fixed the app closing, reopening and setting up Claude's workspace again when the workspace could not download or set up its copy of Claude Code.
46 
47**3P**
48 
49* Added "Apps gateway admin" to the user menu, where a Claude apps gateway's spend admins set spend limits and pooled budgets, see spend, and export spend by group and the log of spend limit changes. It shows where people use the gateway's own sign-in and `bootstrapUrl` is on the gateway's address.
50* Added `claudeCodeProcessWrapperEnabled`: starts Code sessions through the `processWrapper` launcher in Claude Code's managed settings, on the device or the SSH host. The launcher must supply the inference credential. Not used for sessions that run on Windows, in WSL or in Cowork.
51* Added `disableDesktopLocalSessions`: turns off Code sessions that run on the device, WSL included, so Code offers only remote environments such as SSH. Set `sshHostAllowlist` too.
52* Added `disableWslSessions` (MDM profile only): blocks Code sessions inside WSL. Unset, they stay blocked on managed devices, and only a machine-wide `false` allows them.
53* Added `sshConfigs` (beta): SSH connections offered to everyone in Code's environment menu. Every connection is still checked against `sshHostAllowlist`.
54* Added a "JSON config (redacted)" export to Setup on managed devices, for importing into the Admin Console. The values of API key, token and header settings are masked. Check URLs, arguments and text fields before sharing it.
55* Added a "Your usage limits" card to Settings > Usage that shows your session and weekly usage limits, where you sign in to a gateway in the app and it reports them. Spend limits do not show there.
56* Added a confirmation before you add, upload or turn on a plugin that your organization didn't provide.
57* Added a dismissible in-app notice, where a device profile sets `forceLoginOrgUUID`, that the saved Claude Console sign-in will stop working after a future update because its organization is not on the list. It shows the organization's ID to add.
58* Added memory to scheduled Cowork tasks that are not in a project: when memory is on, they can read what Cowork remembers but do not save new memories.
59* Added sign-in for a plugin's own connector in Cowork and Chat. One sign-in serves all your tasks, chats and scheduled tasks.
60* (breaking) Removed `organizationPluginsUrl`. Plugins it installed no longer load, even where the key is still set. Offer any you still need through `allowedPluginMarketplaces`.
61* Changed `claudeAiImport.enabled`: Import now also brings projects, memory, scheduled tasks, saved skills, uploaded plugins and some preferences from a Claude Desktop export that the user confirms is their own. Memory and preferences apply at once. Tasks, plugins and skills arrive turned off.
62* Changed `claudeAiImport.exportEnabled`: an export now also holds attached files, projects and their files, memory, scheduled tasks, saved skills, uploaded plugins, some preferences and local MCP servers. Passwords or API keys in them are included. Sign-ins and the servers' variable values are not.
63* Changed `disableNonessentialServices` to also stop the Code tab from reading the status of GitLab merge requests and Gerrit changes. GitHub is not affected.
64* Changed Chat and Cowork on macOS and Linux to ignore cross-certificates between old and renewed private root CAs. If a gateway's or proxy's issuing CA names one by serial number, requests can fail with a certificate error. Put both roots and that CA in the certificate store, then restart Claude.
65* Changed Cowork and Chat so the line that shows what Claude is doing reads "Needs your input" while a task waits for you, and "Nothing new from Claude for 2 minutes", counting up, once Claude has sent nothing for two minutes while no tool is running.
66* Changed Cowork and Chat to stay at your sent message while a long reply appears. To follow the reply, scroll to the end or press the round button above the message box.
67* Changed downloaded updates on macOS and Windows to install sooner: Claude restarts by itself after ten minutes with no Claude window in use and no task running. `disableAutoUpdates` still turns updates off.
68* Changed HTML previews in SSH and WSL sessions to run the page's inline scripts. To keep them off, set `disableBrowserExternalNavigation` in Claude Code's managed settings (it also limits the Browser pane to localhost). In a new file, add `parentSettingsBehavior: "merge"` to keep Desktop's policy.
69* Changed local Code sessions on macOS and Linux: where an organization's configuration sets `allowedWorkspaceFolders`, or leaves `coworkEgressAllowedHosts` unset or without `*`, Claude can still read Terminal panel tabs but no longer opens or types in them. Your own use of the panel is unchanged.
70* Changed profiles exported from Setup with Deployment mode set to Third-party only to also set `disableDeploymentModeChooser`, so that earlier versions hide Claude.ai sign-in too.
71* Fixed `/etc/claude-desktop/managed-settings.json` on Linux refusing the unredacted JSON config that Setup's Export menu writes. Earlier versions still refuse it.
72* Fixed live artifacts that failed on a connector tool nobody had approved, with nothing to click. The artifact now asks the person to allow the tool.
73* Fixed Settings > Import & export asking for an app update, with no way to sign in or choose a file, on computers with an older Claude Code. Import now downloads the Claude Code it needs.
74* Fixed the built-in GitHub connector's tools failing behind a proxy. They now follow `egressProxyPacUrl`, `egressProxyUrl` or the system proxy. For a ghe.com tenant, also allow `api.<tenant>.ghe.com`.
75* Fixed uploaded plugins working only in the tab they were uploaded from, or missing on MSIX installs below Windows 11 and where the app's data folder is reached through a link. Upload earlier ones again, choosing Replace if asked, to use them in every tab.
76* Fixed what you see at a Claude apps gateway's spend limit or group budget: the Code tab shows the gateway's own message instead of rate-limit errors, notices no longer offer a plan upgrade, and the "Billing issue" banner is hidden while those notices show.
77 
578**v4.16336.0**
679 
7802026-11-03
from line 2587
25142587 
25152588**v1.12603.1**
25162589 
25172026-06-11
2518 
2519**General**
2520 
2521* Added Find Next and Find Previous keyboard shortcuts to in-app search.
2522* Fixed preview panes stealing keyboard focus from the chat input when they reloaded or navigated.
2523* Fixed sessions failing to start after your sign-in expired — the app now prompts you to sign in again.
2524 
2525**Code**
2526 
2527* Added the Files panel to remote and SSH sessions — search the session's files and open them in the viewer — plus a Show in Files button in the file viewer.
2528* Added a running-tasks button to the activity indicator that opens the Tasks panel, and Bash rows in the Background tasks panel now open to show their output, including a live tail while the command runs.
2529* Fixed SSH sessions: forking no longer opens an empty conversation, and connections no longer fail with "Failed to upload file" errors on remotes first set up by early-2026 versions of the app.
2530* Fixed renaming a session while its title was still generating — the generated title no longer overwrites the name you set.
2531* Fixed the Pull Requests view showing "No open pull requests" when GitHub isn't connected — it now prompts you to connect.
2532* Added model-picker memory — the picker now remembers your last model choice.
2533 
2534**Cowork**
2535 
2536* Fixed scheduled tasks firing many duplicate runs at once when the computer wakes from sleep.
2537* Fixed remote sessions re-prompting for access to folders you had already trusted.
2538* Fixed plugins becoming corrupted when they synced while you switched accounts.
2539 
2540**3P**
2541 
2542* Added the built-in Microsoft 365 connector — admins can configure it from the Setup window's server presets. Users sign in through their browser, and Claude can search and read Microsoft 365 mail, calendar, OneDrive, and SharePoint. It requests read-only access by default; admins can grant additional read scopes, such as Teams channel messages and meeting transcripts, with the managed server entry's scope setting.
2543* Deprecated the "sso" value for the inferenceGatewayAuthScheme managed configuration key in favor of inferenceCredentialKind "interactive" — existing configurations keep working and log a deprecation warning.
2544* Added the inferenceVertexOAuthLoginHint managed configuration key to pre-fill the Google account chooser when signing in to Vertex AI, so users in organizations federated to a third-party identity provider land on the right account automatically.
2545 
2546**v1.11847.5**
2547 
25482026-06-09
2549 
2550**General**
2551 
2552* Fixed Clear Cache and Restart signing you out instead of just clearing caches.
2553* Fixed mouse back and forward buttons not navigating on macOS for mice managed by driver software like Logitech Options+, and added trackpad swipe navigation.
2554* Fixed organization plugins sometimes failing to open right after app launch, and the plugin directory now offers Install again after an uninstall.
2555* Fixed connector, Chrome extension, and plugin toggles in the composer's "+" menu not responding when you click directly on the switch.
2556* Fixed an issue where signing in could leave the app unable to start sessions until it was restarted.
2557* Fixed shell-exported custom request headers not reaching Claude Code sessions.
2558 
2559**Code**
2560 
2561* Fixed Claude losing its coding instructions, file-link formatting, and worktree context after a session resumed from idle.
2562* Fixed the preview pane sometimes connecting to an unrelated dev server that was already using the configured port, and it now reopens the dev server you last picked for each project.
2563* Improved responsiveness in Code sessions: smoother streaming of long code blocks, quicker side-panel shortcuts, and less delay opening cloud sessions with many screenshots.
2564* Fixed popovers, dialogs, and the rewind picker not appearing — and typed characters jumping to the end of the composer — when a Code session is opened in its own window.
2565* Fixed the slash-command menu opening behind the side chat panel.
2566* Fixed the source-branch picker showing nothing for SSH sessions with worktree enabled.
2567 
2568**Cowork**
2569 
2570* Added a "Free Up Cowork Disk Space" option under Help > Troubleshooting, and Cowork now cleans up caches and old temporary files automatically when its workspace disk runs low.
2571* Improved the read/unread toggle on sidebar sessions: it now works on the currently open session, has a larger click target, and shows a tooltip describing what a click will do.
2572 
2573**3P**
2574 
2575* Added support for the Fable model family, and for Mythos where your organization has access.
2576* Fixed sign-in failing with external identity providers that reject the offline\_access scope — admins can now disable the automatic append.
2577 
2578**v1.11187.4**
2579 
25802026-06-05
2581 
2582**General**
2583 
2584* Fixed reinstalling Claude on Windows failing after an uninstall when IT had installed it for all users.
2585* Fixed the app not starting automatically at login on Windows.
2586* Added a banner when an update fails to install, instead of failing silently.
2587* Fixed built-in connectors staying disconnected after a crash — existing sessions now reconnect them automatically, and disconnecting a built-in connector now signs it out and keeps it disconnected across restarts.
2588 
2589**Code**
2590 
2591* Added math rendering for inline and block expressions in Claude Code transcripts.
2592* Added Ultracode to the effort slider, which selects the highest effort level and turns on dynamic workflows for the session.
2593* Added drag-to-reorder and A→Z sorting for projects in the Claude Code sidebar.
2594* Added triple-click to select a whole code block, plus right-click menu actions to copy a code block or inline code, in Claude Code transcripts.
2595* Fixed resuming Code sessions when the working folder had moved or been deleted — sessions saved with a \~ path no longer show as missing or re-prompt for trust, and a deleted remote folder now reports clearly and offers a Fork session button instead of retrying in a loop.
2596 
2597**Cowork**
2598 
2599* Added a low-disk-space warning before Cowork downloads the files it needs to run.
2600* Added in-session effort and thinking controls for local Cowork projects.
2601* Updated the New project folder picker to default to your Claude data folder (\~/Claude/Projects) instead of \~/Documents.
2602* Fixed Claude reporting that a skill was updated when the change was never saved to your account.
2603* Fixed the /schedule command in Cowork showing as unavailable.
2604 
2605**3P**
2606 
2607* Fixed managed connectors and SSO sign-in requesting broader OAuth scopes than the administrator configured.
2608* Fixed three Bedrock sign-in and session issues: SSO sign-in failing behind corporate proxies that intercept secure traffic, expired SSO tokens prompting a new sign-in every hour instead of refreshing automatically, and resumed sessions failing on their first message.
2609 
25902026-06-1

government/org-admin/users Changed · +3 / -3 lines

from line 41
4141 
4242* A **User** can use the Claude products but has no admin access.
4343* An **Owner** can access this organization admin portal and perform every action described in this guide except for granting or removing the Primary Owner role.
44* A **Primary Owner** has the same access as an Owner and is additionally protected so that an organization can never be left without one. Only a Primary Owner can promote another user to Primary Owner or demote an existing one.
44* A **Primary Owner** has the same access as an Owner and is additionally protected so that an organization can never be left without one. A Primary Owner can also promote another user to Primary Owner or demote an existing one.
4545 
4646An organization must always have at least one active Primary Owner and may have up to three. Keep at least two so that when one leaves your agency or loses account access, a remaining Primary Owner can promote a replacement and demote the person who left.
4747 
48If your organization no longer has a Primary Owner who can sign in, contact Anthropic to have a new one appointed. A tenant administrator cannot grant the role for you, because opening your organization from the tenant portal gives them Owner access only. Until the new Primary Owner is in place, your Owners and tenant administrators can keep managing users, seats, and settings.
48If your organization no longer has a Primary Owner who can sign in, ask a tenant administrator to promote a replacement, unless your organization manages its own [billing account](https://claude.com/docs/government/org-admin/billing.md). If it does, contact Anthropic instead to have a new Primary Owner appointed. Until then, your Owners and tenant administrators can keep managing users and settings.
4949 
5050## Changing a user's role
5151 
from line 54
5454The following safeguards apply and the dropdown will refuse the change if any of them would be violated.
5555 
5656* You cannot change your own role. To be promoted or demoted, ask another Owner or Primary Owner to make the change for you.
57* Only a Primary Owner can grant or remove the Primary Owner role. An Owner can freely move people between User and Owner, but any change that crosses into or out of Primary Owner must be made by a Primary Owner.
57* An Owner can freely move people between User and Owner, but can't grant or remove the Primary Owner role. A Primary Owner can grant or remove it. A tenant administrator can too, unless your organization manages its own billing account.
5858* You cannot demote the organization's only active Primary Owner. Promote a second person to Primary Owner first, then demote the original.
5959* You cannot promote a deactivated user to Primary Owner. Reactivate them first.
6060* You cannot add a fourth Primary Owner. Demote one of the existing Primary Owners first if you need to make room.

third-party/claude-desktop/bootstrap Changed · +7 / -6 lines

from line 340
340340* `bootstrapUrl`, `bootstrapOidc`, `bootstrapHeaders`, `bootstrapHeadersHelper`, `bootstrapEnabled`, and `trustBootstrapDelivery`: the trust anchor cannot redirect itself, authenticate itself, or grant trust in itself.
341341* `egressProxyUrl` and `egressProxyPacUrl`: the app may need the [network proxy](https://claude.com/docs/third-party/claude-desktop/network-proxy.md#pin-a-proxy-from-managed-configuration) to reach your endpoint in the first place, so these keys are read from device management or the local configuration file only.
342342* [`deploymentMode`](https://claude.com/docs/third-party/claude-desktop/mdm#restrict-a-device-to-one-deployment-mode): the app reads it from the device only.
343* [`disableWslSessions`](https://claude.com/docs/third-party/claude-desktop/configuration#disablewslsessions): the app reads it from an MDM profile only.
343344 
344345The app also ignores loopback hosts (`127.0.0.1`, `localhost`, `[::1]`) in any URL-valued key of a response, regardless of scheme.
345346 
from line 396
395396 
396397booleanDefault: true
397398 
398MDM only (You can set the key only in an MDM profile or the local configuration file. Claude Desktop ignores it in a bootstrap server's response.)
399MDM only (You can set the key only in an MDM profile or the local configuration file. Claude Desktop ignores it in a bootstrap server's response. Where a key's description says MDM profile only, the local configuration file does not count either.)
399400 
400401Since 1.10628.0
401402 
from line 408
407408 
408409string
409410 
410MDM only (You can set the key only in an MDM profile or the local configuration file. Claude Desktop ignores it in a bootstrap server's response.)
411MDM only (You can set the key only in an MDM profile or the local configuration file. Claude Desktop ignores it in a bootstrap server's response. Where a key's description says MDM profile only, the local configuration file does not count either.)
411412 
412413Since 1.10628.0
413414 
from line 420
419420 
420421object
421422 
422MDM only (You can set the key only in an MDM profile or the local configuration file. Claude Desktop ignores it in a bootstrap server's response.)
423MDM only (You can set the key only in an MDM profile or the local configuration file. Claude Desktop ignores it in a bootstrap server's response. Where a key's description says MDM profile only, the local configuration file does not count either.)
423424 
424425Since 1.10628.0
425426 
from line 478
477478 
478479object: name → value
479480 
480MDM only (You can set the key only in an MDM profile or the local configuration file. Claude Desktop ignores it in a bootstrap server's response.)
481MDM only (You can set the key only in an MDM profile or the local configuration file. Claude Desktop ignores it in a bootstrap server's response. Where a key's description says MDM profile only, the local configuration file does not count either.)
481482 
482483Since 1.32885.1
483484 
from line 498
497498 
498499string
499500 
500MDM only (You can set the key only in an MDM profile or the local configuration file. Claude Desktop ignores it in a bootstrap server's response.)
501MDM only (You can set the key only in an MDM profile or the local configuration file. Claude Desktop ignores it in a bootstrap server's response. Where a key's description says MDM profile only, the local configuration file does not count either.)
501502 
502503Since 1.32885.1
503504 
from line 516
515516 
516517booleanDefault: false
517518 
518MDM only (You can set the key only in an MDM profile or the local configuration file. Claude Desktop ignores it in a bootstrap server's response.)
519MDM only (You can set the key only in an MDM profile or the local configuration file. Claude Desktop ignores it in a bootstrap server's response. Where a key's description says MDM profile only, the local configuration file does not count either.)
519520 
520521Since 1.26832.0
521522 

third-party/claude-desktop/code Changed · +22 / -5 lines

### Start Code sessions through a corporate launcher

from line 16
1616 
1717| Claude Desktop on 3P key | Effect in Code sessions |
1818| - | - |
19| `inferenceProvider` and all provider credential keys (`inferenceGateway*`, `inferenceAnthropicApiKey`, `inferenceVertex*`, `inferenceBedrock*`, `inferenceFoundry*`, `inferenceCredentialHelper*`) | Selects the inference backend and supplies credentials. Code sessions use the same provider, endpoint, and credentials as Cowork sessions. |
19| `inferenceProvider` and all provider credential keys (`inferenceGateway*`, `inferenceAnthropicApiKey`, `inferenceVertex*`, `inferenceBedrock*`, `inferenceFoundry*`, `inferenceCredentialHelper*`) | Selects the inference backend and supplies credentials. Code sessions use the same provider and endpoint as Cowork sessions, and the same credentials unless [your organization's launcher](#start-code-sessions-through-a-corporate-launcher) starts them. |
2020| `inferenceModels` | Populates the model picker. The first entry is the default for new Code sessions. |
2121| `autoModeEnabled` | Controls **Auto mode**. When the key isn't set, Code sessions offer **Auto mode** and new sessions start in it unless the user has already chosen another mode or a Claude Code `permissions.defaultMode` applies. Set it to `false` to remove **Auto mode** from Code and Cowork. Set it to `true` to also offer the mode in Cowork, where it appears as **Automatically approve**. In Code sessions, a separately deployed Claude Code [managed-settings file](#interaction-with-claude-code%E2%80%99s-own-managed-settings) that sets `disableAutoMode` to `"disable"` also keeps **Auto mode** hidden, whatever this key is set to. To change what **Auto mode** allows and blocks, see [Tune the Auto mode classifier](#tune-the-auto-mode-classifier). To have the model provider review actions on a gateway deployment, see [Auto mode checks](https://claude.com/docs/third-party/claude-desktop/gateway.md#auto-mode-checks). |
2222| `scheduledTasksEnabled` | When `false`, the routines list in Code is hidden and Code sessions start without Claude Code's in-session scheduling tools, so the `/loop` command cannot schedule recurring work. Cowork's scheduled tasks are turned off by the same key. |
from line 88
8888>
8989> Without a Claude Code `managed-settings.json` file, OS profile, or server-managed settings, Claude Desktop's policy applies automatically and you don't need to set `parentSettingsBehavior`.
9090 
91### Start Code sessions through a corporate launcher
92 
93If your organization starts Claude Code through a [corporate launcher](https://code.claude.com/docs/en/corporate-launcher), Code sessions in Claude Desktop can go through it too. This takes two settings:
94 
951. In Claude Desktop's configuration, set [`claudeCodeProcessWrapperEnabled`](https://claude.com/docs/third-party/claude-desktop/configuration#claudecodeprocesswrapperenabled) to `true`. Without it, Claude Desktop starts Claude Code directly.
962. In Claude Code's managed settings, name the launcher with `processWrapper`, or with `CLAUDE_CODE_PROCESS_WRAPPER` in the `env` block. If these are the first Claude Code managed settings on the device or host, also set `parentSettingsBehavior` to `"merge"` in them, or Claude Code ignores the [managed policy](#applied-as-managed-policy) values that Claude Desktop supplies.
97 
98Name the launcher where the session runs:
99 
100* **On a macOS or Linux device**: in that device's Claude Code managed settings, not in server-managed settings or the user's own settings
101* **On a macOS or Linux host over SSH**, from any device, Windows included: in the host's Claude Code `managed-settings.json` file or `managed-settings.d` folder, not in a configuration profile
102* **On a Windows device itself, in WSL, and on a Windows host over SSH**: sessions start without a launcher
103 
104Code sessions still use the provider and endpoint in Claude Desktop's configuration, but Claude Desktop passes no inference credential and no [`inferenceCustomHeaders`](https://claude.com/docs/third-party/claude-desktop/configuration#inferencecustomheaders) to Claude Code when the launcher starts it. The launcher must set a credential in Claude Code's environment, such as `ANTHROPIC_AUTH_TOKEN` for a gateway or the variable that your provider's credential uses. With no credential, the session still starts, and each reply fails with a message that Claude Code has no working credentials. Cowork, the connection test, and session titles don't go through the launcher. They use the credential in Claude Desktop's configuration, so a passing connection test doesn't show that the launcher supplies one.
105 
106A session doesn't start if Claude Desktop can't use the launcher you named: for example, if the file is missing or isn't executable, or the value doesn't follow Claude Code's [launcher value format](https://code.claude.com/docs/en/corporate-launcher#format-of-the-launcher-value).
107 
108To keep users from turning the launcher off, set `claudeCodeProcessWrapperEnabled` in the device's [managed profile](https://claude.com/docs/third-party/claude-desktop/admin-console.md#devices-with-a-managed-profile), which users can't change. The key is an [app-behavior key](https://claude.com/docs/third-party/claude-desktop/mdm.md#update-keys-and-managed-precedence), so add every other app-behavior key you use, such as the update keys, to the same profile. If the profile sets any other kind of key, also [keep the device on its managed profile](https://claude.com/docs/third-party/claude-desktop/admin-console.md#keep-a-device-on-its-managed-profile).
109 
91110## Tune the Auto mode classifier
92111 
93112In [**Auto mode**](https://claude.com/docs/third-party/claude-desktop/configuration.md#automodeenabled), which Cowork shows as **Automatically approve**, a safety classifier reviews Claude's actions and blocks the ones it judges risky. To tell it what your organization trusts, or to add block and allow rules, deploy Claude Code's [`autoMode` settings](https://code.claude.com/docs/en/auto-mode-config) in [Claude Code managed settings](https://code.claude.com/docs/en/managed-settings) on each device. Check which of your sessions read those settings:
from line 182
163182In Cowork sessions and Chat conversations, this file also stops mods in plugins from your marketplaces.
164183 
165184* **Keep `parentSettingsBehavior`.** Without it, Claude Code ignores the sandbox and the other [managed policy](#applied-as-managed-policy) values that Claude Desktop supplies, except [in a Code session that gets `code` settings from a Claude apps gateway](#interaction-with-claude-code%E2%80%99s-own-managed-settings). In Cowork sessions, without it, Claude doesn't ask for approval before a tool call that matches an argument-scoped [`builtinToolPolicy`](https://claude.com/docs/third-party/claude-desktop/configuration#builtintoolpolicy) rule such as `Read(//**/.env)` set to `"ask"`.
166* **Leave out `disableSideloadFlags`**, which a longer sample in the Claude Code docs includes. With it, Code sessions start without the skills and organization plugins that Claude Desktop delivers.
185* **Leave out `disableSideloadFlags`**, which a longer sample in the Claude Code docs includes. With it, Code sessions start without the skills, organization plugins, and uploaded plugins that Claude Desktop delivers.
167186* **Optionally, remove the `/plugin-authoring` command**, which has Claude write a mod. Add `"enabledPlugins": { "cc-plugin-plugin-authoring@builtin": false }` to the file.
168187 
169188[Manage mods for your organization](https://code.claude.com/docs/en/plugins/mods/admin) covers the other controls. For sessions on an SSH host, see [Managed configuration on the remote host](https://claude.com/docs/third-party/claude-desktop/ssh-remote-sessions.md#managed-configuration-on-the-remote-host).
from line 189
170189 
171190## Remote sessions over SSH
172191 
173A Code session can run its Claude Code engine on a remote host over SSH while the session's interface stays in Claude Desktop on the user's device. In a 3P deployment this is off until you set [`sshHostAllowlist`](https://claude.com/docs/third-party/claude-desktop/configuration#sshhostallowlist), because the app forwards the session's inference credential to the host. [SSH remote sessions](https://claude.com/docs/third-party/claude-desktop/ssh-remote-sessions.md) lists the credential kinds that work on a remote host and which of the keys above apply there.
192A Code session can run its Claude Code engine on a remote host over SSH while the session's interface stays in Claude Desktop on the user's device. In a 3P deployment this is off until you set [`sshHostAllowlist`](https://claude.com/docs/third-party/claude-desktop/configuration#sshhostallowlist), because the app forwards the session's inference credential to the host. It forwards none where [a launcher on the host](#start-code-sessions-through-a-corporate-launcher) starts Claude Code. [SSH remote sessions](https://claude.com/docs/third-party/claude-desktop/ssh-remote-sessions.md) lists the credential kinds that work on a remote host and which of the keys above apply there.
174193 
175194## Further reading
176195 
from line 200
181200## Disabling Code
182201 
183202To turn off Code, set `isClaudeCodeForDesktopEnabled` to `false` in your Claude Desktop on 3P configuration. Users can no longer open Code. Cowork is unaffected, and so is [Chat](https://claude.com/docs/third-party/claude-desktop/chat.md#configuration) if you have enabled it.
184 
185With Code off, Claude can't use a remote MCP server that requires OAuth sign-in if a marketplace plugin or a user-added plugin bundles it. With Code on, Claude can use such a server in local Code sessions that load the plugin, once the user has signed in, but still not in Cowork sessions or Chat conversations. To make it available in Cowork sessions and Chat conversations, with Code on or off, add a `managedMcpServers` entry with the same `url`, as described under [Remote MCP servers in plugins](https://claude.com/docs/third-party/claude-desktop/extensions.md#remote-mcp-servers-in-plugins).
186203 
187204If you set `desktopHome` to `off`, keep Code on. For what `desktopHome` does, see [Unified Claude](https://claude.com/docs/third-party/claude-desktop/unified-claude.md).
188205 

third-party/claude-desktop/configuration Changed · +142 / -21 lines

#### `disableDesktopLocalSessions` #### `sshConfigs` #### `disableWslSessions` #### `claudeCodeProcessWrapperEnabled`

from line 69
6969| [`modelCatalogUrl`](#modelcatalogurl) | Model catalog URL | Connection | |
7070| [`coworkTabEnabled`](#coworktabenabled) | Allow Cowork | Capabilities | Admin Console |
7171| [`isClaudeCodeForDesktopEnabled`](#isclaudecodefordesktopenabled) | Allow Code | Capabilities | Admin Console |
72| [`disableDesktopLocalSessions`](#disabledesktoplocalsessions) | Disable local Code sessions | Capabilities | Admin Console |
7273| [`sshHostAllowlist`](#sshhostallowlist) | SSH host allowlist | Capabilities | Admin Console |
74| [`sshConfigs`](#sshconfigs) | SSH connections | Capabilities | Admin Console |
7375| [`sshClientPath`](#sshclientpath) | SSH client program | Capabilities | Admin Console |
7476| [`sshTransport`](#sshtransport) | SSH connection engine | Capabilities | Admin Console |
7577| [`chatTabEnabled`](#chattabenabled) | Allow Chat | Capabilities | Admin Console |
from line 98
9698| [`builtinToolPolicy`](#builtintoolpolicy) | Built-in tool policy | Capabilities | Admin Console |
9799| [`disabledBuiltinTools`](#disabledbuiltintools) | Disabled built-in tools | Capabilities | Admin Console |
98100| [`toolSearchEnabled`](#toolsearchenabled) | Enable tool search | Capabilities | Admin Console |
101| [`disableWslSessions`](#disablewslsessions) | Block WSL sessions | Capabilities | |
102| [`claudeCodeProcessWrapperEnabled`](#claudecodeprocesswrapperenabled) | Use Claude Code’s corporate launcher | Capabilities | Admin Console |
99103| [`organizationInstructions`](#organizationinstructions) | Organization instructions | Capabilities | Admin Console |
100104| [`requireCoworkFullVmSandbox`](#requirecoworkfullvmsandbox) | Require full VM sandbox | Capabilities | |
101105| [`disableDeploymentModeChooser`](#disabledeploymentmodechooser) | Disable Claude.ai sign-in | Capabilities | |
from line 178
174178 
175179> [accordion] More detail
176180>
177> The app opens in third-party mode unless the user chose to sign in to Claude.ai at the login screen. `disableDeploymentModeChooser` removes that choice.
181> The app opens in third-party mode unless the user chose to sign in to Claude.ai at the login screen. `deploymentMode` at `3p`, or `disableDeploymentModeChooser`, removes that choice.
178182>
179183> When this key is unset, the app opens in standard mode unless another key, such as `bootstrapUrl`, asks for third-party mode.
180184>
from line 321
317321 
318322string
319323 
320MDM only (You can set the key only in an MDM profile or the local configuration file. Claude Desktop ignores it in a bootstrap server's response.)
324MDM only (You can set the key only in an MDM profile or the local configuration file. Claude Desktop ignores it in a bootstrap server's response. Where a key's description says MDM profile only, the local configuration file does not count either.)
321325 
322326Since 1.44121.1
323327 
from line 347
343347 
344348string
345349 
346MDM only (You can set the key only in an MDM profile or the local configuration file. Claude Desktop ignores it in a bootstrap server's response.)
350MDM only (You can set the key only in an MDM profile or the local configuration file. Claude Desktop ignores it in a bootstrap server's response. Where a key's description says MDM profile only, the local configuration file does not count either.)
347351 
348352Since 1.44121.1
349353 
from line 1344
13401344 
13411345***
13421346 
1347#### `disableDesktopLocalSessions`
1348 
1349booleanSince 2.42304.0
1350 
1351**Disable local Code sessions.** Turn off Code sessions that run on the device, WSL included, so Code offers only remote environments such as SSH.
1352 
1353[Guide for this setting](https://claude.com/docs/third-party/claude-desktop/ssh-remote-sessions.md)
1354 
1355> [accordion] More detail
1356>
1357> Set `sshHostAllowlist` too. While it allows no host, Code has nowhere to start a session. SSH to `localhost` counts as local. Other names for this device are blocked only by leaving them out of `sshHostAllowlist`.
1358>
1359> Chat and Cowork still run on the device. A running session goes on until its process stops, and then cannot be resumed. Claude Code started from a terminal ignores this key. Code routines set to run on the device are held while the key is set.
1360>
1361> `false` does not undo a `true` in Claude Code's managed setting of the same name. Where a bootstrap server or the Admin Console delivers configuration, set this key there. Its configuration replaces the MDM profile's value, even if it leaves this key out.
1362 
1363***
1364 
13431365#### `sshHostAllowlist`
13441366 
13451367string\[]
from line 1385
13631385 
13641386***
13651387 
1388#### `sshConfigs`
1389 
1390object\[]
1391 
1392Beta (The feature that the key configures is in beta.)
1393 
1394Consent required (A value that a bootstrap server delivers applies only after the user approves it, unless machine-scoped device management set that server's address. The trustBootstrapDelivery key overrides that default. A value set in an MDM profile, the local configuration file or the Enterprise Admin Console needs no approval.)
1395 
1396Since 2.42304.0
1397 
1398**SSH connections.** SSH connections offered to everyone in Code’s environment menu. In Code, users can select them but not edit or remove them.
1399 
1400[Guide for this setting](https://claude.com/docs/third-party/claude-desktop/ssh-remote-sessions.md)
1401 
1402> [accordion] More detail
1403>
1404> Every connection is still checked against `sshHostAllowlist`. While that list allows no host, the SSH section is hidden.
1405>
1406> For a connection from this list, the app does not first ask the user to confirm the host. SSH's own host-key checks still apply, so a first connection to a host missing from the user's `known_hosts` may ask the user or fail. Users can still add connections of their own.
1407>
1408> While `disableDesktopLocalSessions` is on, new sessions default to the first SSH connection in the user's list, which can be one of these.
1409 
1410> [accordion] Child attributes (5)
1411>
1412> **id** `string` *required*
1413>
1414> Identifier of your choice, unique in the list. A user’s entry with the same ID in Claude Code’s user settings replaces yours.
1415>
1416> **name** `string` *required*
1417>
1418> Shown in Code’s environment menu.
1419>
1420> **sshHost** `string` *required*
1421>
1422> host, user\@host, or a host alias from the user’s \~/.ssh/config.
1423>
1424> **sshPort** `integer`
1425>
1426> A number from 1 to 65535.
1427>
1428> **sshIdentityFile** `string`
1429>
1430> Path of a private key file on the user’s device.
1431 
1432***
1433 
13661434#### `sshClientPath`
13671435 
13681436string
from line 1583
15151583>
15161584> > [accordion] More detail
15171585> >
1518> > Desktop checks this list inside the distro for a WSL session that starts under it. `~` also means the distro user's home. The session needs both bubblewrap and socat there to start. Shell commands can read the Windows drives under `/mnt`. To hide them, apart from listed `/mnt` folders, set `blockReadsOutsideWorkingDirectories`. Users can re-open them. Claude Code's server-managed settings, managed settings in the distro or a Windows policy with `wslInheritsWindowsSettings` replace Desktop's session settings. A session can then run with no sandbox, with or without those programs. Shell commands can read the drives and write outside the list after a prompt, or with none in bypass mode. If the one in force sets `parentSettingsBehavior` to `merge`, those settings stay, but it can undo them.
1586> > Desktop checks this list inside the distro for a WSL session that starts under it. `~` also means the distro user's home. The session needs both bubblewrap and socat there to start. Shell commands can read the Windows drives under `/mnt`. To hide them, apart from listed `/mnt` folders, set `blockReadsOutsideWorkingDirectories`. Users can re-open them. Claude Code's server-managed settings, managed settings in the distro or a Windows policy with `wslInheritsWindowsSettings` replace Desktop's session settings. A session can then run with no sandbox, with or without those programs. Shell commands can read the drives and write outside the list, with no prompt in Auto or bypass mode. If the one in force sets `parentSettingsBehavior` to `merge`, those settings stay, but it can undo them.
15191587>
15201588> **isDefaultSelected** `boolean`
15211589>
from line 1705
16371705> * It does not limit Claude Code in a terminal.
16381706> * Claude Code's own managed settings, where a session has any, take priority by default. Restrict marketplaces in those settings as well.
16391707>
1640> Applies only while the app runs in third-party mode. If users could otherwise sign in to Claude.ai on the device, also set `disableDeploymentModeChooser` so the app stays in third-party mode.
1708> Applies only while the app runs in third-party mode. If users could otherwise sign in to Claude.ai on the device, also set `deploymentMode` to `3p`, or `disableDeploymentModeChooser`.
16411709 
16421710***
16431711 
from line 1719
16511719>
16521720> Plugins that are already installed, or placed on disk outside the app, are not removed or blocked.
16531721>
1654> Applies only while the app runs in third-party mode. If users could otherwise sign in to Claude.ai on the device, also set `disableDeploymentModeChooser` so the app stays in third-party mode.
1722> Applies only while the app runs in third-party mode. If users could otherwise sign in to Claude.ai on the device, also set `deploymentMode` to `3p`, or `disableDeploymentModeChooser`.
16551723 
16561724***
16571725 
from line 1878
18101878 
18111879***
18121880 
1881#### `disableWslSessions`
1882 
1883boolean
1884 
1885MDM only (You can set the key only in an MDM profile or the local configuration file. Claude Desktop ignores it in a bootstrap server's response. Where a key's description says MDM profile only, the local configuration file does not count either.)
1886 
1887Since 1.19367.0
1888 
1889**Block WSL sessions.** Block Code sessions inside WSL, where Windows endpoint policy does not reach. Unset: blocked on managed devices.
1890 
1891[Admin Console](#the-works-with-column): Not available.
1892 
1893> [accordion] More detail
1894>
1895> MDM profile only. Only a machine-wide `false` (`HKLM`) allows WSL sessions on a device with any managed configuration.
1896>
1897> For a WSL session that starts under `allowedWorkspaceFolders`, Desktop checks it inside the distro, so `~` also means the distro user's home. The session needs both bubblewrap and socat there to start. Shell commands can read the Windows drives under `/mnt`. `blockReadsOutsideWorkingDirectories` hides them, apart from listed `/mnt` folders. Users can re-open them. Claude Code's server-managed settings, among others, can take away that read limit and the sandbox: see the list's Path help.
1898>
1899> This is an app-behavior key, like `disableAutoUpdates`. If your MDM profile holds nothing but such keys, the app reads them all from that profile alone, so put every one you use there.
1900 
1901***
1902 
1903#### `claudeCodeProcessWrapperEnabled`
1904 
1905booleanSince 2.7032.0
1906 
1907**Use Claude Code’s corporate launcher.** Start Claude Code through the launcher named in Claude Code’s managed settings (processWrapper).
1908 
1909[Guide for this setting](https://claude.com/docs/third-party/claude-desktop/code.md#interaction-with-claude-code%E2%80%99s-own-managed-settings)
1910 
1911> [accordion] More detail
1912>
1913> The launcher comes from the device's managed settings, not server-managed settings. SSH sessions to Linux or macOS hosts use the one in the host's managed-settings files.
1914>
1915> * **Credentials:** the app passes the launcher no inference credential. The launcher must supply one, such as `ANTHROPIC_AUTH_TOKEN`, or every reply fails.
1916> * **Not used:** on Windows for sessions on the device, in WSL, in Cowork, and for the connection test and title generation.
1917>
1918> To stop users bypassing the launcher, set this key in your MDM profile, with `disableDeploymentModeChooser` if that profile sets more than app-behavior keys.
1919>
1920> This is an app-behavior key, like `disableAutoUpdates`. If your MDM profile holds nothing but such keys, the app reads them all from that profile alone, so put every one you use there.
1921 
1922***
1923 
18131924#### `organizationInstructions`
18141925 
18151926stringSince 1.37937.0
from line 1973
18621973 
18631974enum
18641975 
1865MDM only (You can set the key only in an MDM profile or the local configuration file. Claude Desktop ignores it in a bootstrap server's response.)
1976MDM only (You can set the key only in an MDM profile or the local configuration file. Claude Desktop ignores it in a bootstrap server's response. Where a key's description says MDM profile only, the local configuration file does not count either.)
18661977 
18671978Since 4.16336.0
18681979 
from line 1985
18741985 
18751986> [accordion] More detail
18761987>
1877> Replaces `disableDeploymentModeChooser`, whose `true` means `3p`. `3p` or `1p` wins over that key. A bootstrap server's value is ignored. Earlier versions do not read this key.
1988> Replaces `disableDeploymentModeChooser`: use `3p` for its `true`. `3p` or `1p` wins over it. A bootstrap server can change it, not this key. Earlier versions do not read this key.
18781989>
18791990> * `3p`: keeps the app on the connection this configuration names, with no Claude.ai sign-in. With no connection, Claude.ai sign-in opens. To block Claude.ai sign-in, name a connection.
18801991> * `1p`: always Claude.ai sign-in, even where a connection is named. No Claude API account sign-in and no setup of the user's own.
from line 2003
18922003 
18932004**Disable claude:// deep-link handling.** Stop external apps and websites from opening Claude Desktop via claude:// links.
18942005 
2006> [accordion] More detail
2007>
2008> Cowork and Chat then offer no sign-in to a connector that a plugin brings. That sign-in returns to the app by a claude:// link.
2009 
18952010***
18962011 
18972012### Built-in browser
from line 2094
19792094>
19802095> **enabled** `boolean` (default: false)
19812096>
1982> Lets users import a Claude.ai data export and earlier Claude sessions on this device from Settings → Import.
2097> Lets users import a Claude.ai data export, earlier sessions here, or another device’s Claude Desktop export, in Settings → Import & export.
19832098>
2099> > [accordion] More detail
2100> >
2101> > The user confirms another device’s export is their own. Memory and some app preferences apply at once. Tasks, plugins, and skills arrive turned off. Local MCP servers start when the user adds them in a dialog. Each needs its setting on: `scheduledTasksEnabled`, `userPluginUploadsEnabled`, `skillCreationEnabled`, `isLocalDevMcpEnabled`.
2102>
19842103> **allowedOrganizationUuids** `string[]`
19852104>
19862105> When set, users import by sign-in only, and only from the Claude.ai organizations with these IDs.
from line 2127
20082127>
20092128> **exportEnabled** `boolean` (default: false)
20102129>
2011> Lets users export this device’s chats, Cowork tasks and Code sessions as a zip to import elsewhere. No effect unless Enable import is on.
2130> Lets users export their Claude data on this device as a zip file, to import on another device. No effect unless Enable import is on.
20122131>
20132132> > [accordion] More detail
20142133> >
2015> > Transcripts contain conversation content including tool outputs. Treat exported zips as sensitive data.
2134> > The zip contains sessions, projects and their files, memory, scheduled tasks, saved skills, uploaded plugins, some app preferences, and local MCP servers. Passwords or API keys in them are included. Sign-ins and the servers’ variable values are not. Treat it as sensitive data.
20162135>
20172136> **bannerBehavior** `enum`
20182137>
from line 2959
28402959>
28412960> The product-usage analytics come from the app and from Claude Code. Turning this on also stops Claude Code's error reports and its other nonessential requests to Anthropic.
28422961>
2843> Applies only while the app runs in third-party mode. If users could otherwise sign in to Claude.ai on the device, also set `disableDeploymentModeChooser` so the app stays in third-party mode.
2962> Applies only while the app runs in third-party mode. If users could otherwise sign in to Claude.ai on the device, also set `deploymentMode` to `3p`, or `disableDeploymentModeChooser`.
28442963 
28452964***
28462965 
from line 2967
28482967 
28492968booleanDefault: falseSince 1.2581.0
28502969 
2851**Block nonessential services.** Connector icons, hosted artifact previews, MCP Apps widgets and the Linux spellcheck dictionary. Widgets fall back to text.
2970**Block nonessential services.** Connector icons, hosted artifact previews, MCP Apps widgets and the Linux spellcheck dictionary. A blocked widget shows an error.
28522971 
28532972> [accordion] More detail
28542973>
from line 3191
30723191> * **Unset:** after 72 hours the app restarts once the device has been idle for 10 minutes.
30733192> * **Any number, even 72:** the app restarts when the time is up, whether or not the user is active.
30743193>
3075> In both cases the restart waits while Claude is mid-task on the device.
3194> In both cases the restart waits while Claude is mid-task on the device, or while the update server gives no answer.
30763195>
3196> These hours do not delay an update. It usually installs sooner, after 10 minutes with no Claude window in use and no task running.
3197>
30773198> This is an app-behavior key, like `disableAutoUpdates`. If your MDM profile holds nothing but such keys, the app reads them all from that profile alone, so put every one you use there.
30783199 
30793200***
from line 3740
36193740 
36203741booleanDefault: true
36213742 
3622MDM only (You can set the key only in an MDM profile or the local configuration file. Claude Desktop ignores it in a bootstrap server's response.)
3743MDM only (You can set the key only in an MDM profile or the local configuration file. Claude Desktop ignores it in a bootstrap server's response. Where a key's description says MDM profile only, the local configuration file does not count either.)
36233744 
36243745Since 1.10628.0
36253746 
from line 3754
36333754 
36343755string
36353756 
3636MDM only (You can set the key only in an MDM profile or the local configuration file. Claude Desktop ignores it in a bootstrap server's response.)
3757MDM only (You can set the key only in an MDM profile or the local configuration file. Claude Desktop ignores it in a bootstrap server's response. Where a key's description says MDM profile only, the local configuration file does not count either.)
36373758 
36383759Since 1.10628.0
36393760 
from line 3768
36473768 
36483769object
36493770 
3650MDM only (You can set the key only in an MDM profile or the local configuration file. Claude Desktop ignores it in a bootstrap server's response.)
3771MDM only (You can set the key only in an MDM profile or the local configuration file. Claude Desktop ignores it in a bootstrap server's response. Where a key's description says MDM profile only, the local configuration file does not count either.)
36513772 
36523773Since 1.10628.0
36533774 
from line 3830
37093830 
37103831object: name → value
37113832 
3712MDM only (You can set the key only in an MDM profile or the local configuration file. Claude Desktop ignores it in a bootstrap server's response.)
3833MDM only (You can set the key only in an MDM profile or the local configuration file. Claude Desktop ignores it in a bootstrap server's response. Where a key's description says MDM profile only, the local configuration file does not count either.)
37133834 
37143835Since 1.32885.1
37153836 
from line 3854
37333854 
37343855string
37353856 
3736MDM only (You can set the key only in an MDM profile or the local configuration file. Claude Desktop ignores it in a bootstrap server's response.)
3857MDM only (You can set the key only in an MDM profile or the local configuration file. Claude Desktop ignores it in a bootstrap server's response. Where a key's description says MDM profile only, the local configuration file does not count either.)
37373858 
37383859Since 1.32885.1
37393860 
from line 3876
37553876 
37563877booleanDefault: false
37573878 
3758MDM only (You can set the key only in an MDM profile or the local configuration file. Claude Desktop ignores it in a bootstrap server's response.)
3879MDM only (You can set the key only in an MDM profile or the local configuration file. Claude Desktop ignores it in a bootstrap server's response. Where a key's description says MDM profile only, the local configuration file does not count either.)
37593880 
37603881Since 1.26832.0
37613882 
from line 3893
37723893The labels under a key start with its type and, where one is recorded, its default, and end with the Claude Desktop version that added the key. Between those, a label appears only where the key differs from most keys.
37733894 
37743895* **No MDM only or Admin Console only label**: You can set the key in an MDM profile or the local configuration file, or return it from a bootstrap server.
3775* **MDM only**: You can set the key only in an MDM profile or the local configuration file. Claude Desktop ignores it in a bootstrap server's response. [Read more](https://claude.com/docs/third-party/claude-desktop/bootstrap.md#response-schema).
3896* **MDM only**: You can set the key only in an MDM profile or the local configuration file. Claude Desktop ignores it in a bootstrap server's response. Where a key's description says MDM profile only, the local configuration file does not count either. [Read more](https://claude.com/docs/third-party/claude-desktop/bootstrap.md#response-schema).
37763897* **Admin Console only**: Only the Enterprise Admin Console can set the key. Claude Desktop ignores it in an MDM profile, in the local configuration file and in a bootstrap server's response. [Read more](https://claude.com/docs/third-party/claude-desktop/admin-console.md).
37773898* **Beta**: The feature that the key configures is in beta.
37783899* **Deprecated**: On third-party deployments Claude Desktop no longer reads the key and ignores any value set for it. Remove it from your configuration.

third-party/claude-desktop/configuration-changelog Changed · +47 / -0 lines

from line 4
44 
55Configuration keys by Claude Desktop release. Each section lists keys added in that release, with the MDM key name (for plist/registry deployment) and the equivalent JSON shape (for local-file or bootstrap remote configuration).
66 
7**v4.23118.0**
8 
92026-11-05
10 
11| MDM key | Type | Description |
12| - | - | - |
13| [`disableDesktopLocalSessions`](https://claude.com/docs/third-party/claude-desktop/configuration#disabledesktoplocalsessions) | `boolean` | Disable local Code sessions |
14| [`sshConfigs`](https://claude.com/docs/third-party/claude-desktop/configuration#sshconfigs) · Beta | `object[]` | SSH connections |
15| [`disableWslSessions`](https://claude.com/docs/third-party/claude-desktop/configuration#disablewslsessions) | `boolean` | Block WSL sessions |
16| [`claudeCodeProcessWrapperEnabled`](https://claude.com/docs/third-party/claude-desktop/configuration#claudecodeprocesswrapperenabled) | `boolean` | Use Claude Code’s corporate launcher |
17 
18**JSON (e.g. for non-MDM users or Bootstrap):**
19 
20```json theme={null}
21{
22 "codeSurface": {
23 "disableDesktopLocalSessions": "<boolean>",
24 "sshConfigs": [
25 {
26 "id": "<string>",
27 "name": "<string>",
28 "sshHost": "<string>",
29 "sshPort": "<integer>",
30 "sshIdentityFile": "<string>"
31 }
32 ]
33 },
34 "workspace": {
35 "disableWslSessions": "<boolean>",
36 "claudeCodeProcessWrapperEnabled": "<boolean>"
37 }
38}
39```
40 
41`disableWslSessions` is read from an MDM profile only. A value in a local configuration file, or served by a bootstrap server or the Admin Console, is ignored.
42 
43Earlier versions already read these four keys. They are new in the configuration reference.
44 
45**Changed:**
46 
47* `claudeAiImport`: with `exportEnabled`, an export now also holds attached files, projects and their files, memory, scheduled tasks, saved skills, uploaded plugins, some app preferences and local MCP servers. Passwords or API keys in them are included. Sign-ins and the servers' variable values are not. With `enabled`, Import brings these from another device's export once the user confirms that it is their own. Tasks, plugins and skills arrive turned off.
48* `disableNonessentialServices`: also stops the Code tab from reading the status of GitLab merge requests and Gerrit changes. GitHub is not affected.
49 
50**Removed:**
51 
52* **Breaking:** `organizationPluginsUrl`: plugins it installed no longer load, even where the key is still set. Use `allowedPluginMarketplaces` instead.
53 
754**v4.16336.0**
855 
9562026-11-03

third-party/claude-desktop/connectors-github Changed · +6 / -6 lines

from line 2
22 
33> Give Claude access to your organization's GitHub repositories, issues, and pull requests, either through GitHub's hosted MCP server or a server built into the desktop app.
44 
5When Claude Desktop is deployed on third-party inference, Claude can work with your organization's GitHub data (repositories, issues, pull requests, and more) through GitHub's open-source [github-mcp-server](https://github.com/github/github-mcp-server). Two connectors are available: a [remote connector](#remote-connector), where the desktop app connects to GitHub's hosted copy of the server, and a [local connector](#local-connector), a copy of the server built into the desktop app. In both cases the device talks to GitHub directly; no GitHub data or tokens pass through Anthropic's infrastructure.
5When Claude Desktop is deployed on third-party inference, Claude can work with your organization's GitHub data (repositories, issues, pull requests, and more) through GitHub's open-source [github-mcp-server](https://github.com/github/github-mcp-server). Two connectors are available: a [remote connector](#remote-connector), where the desktop app connects to GitHub's hosted copy of the server, and a [local connector](#local-connector), a copy of the server built into the desktop app. In both cases the device talks to GitHub; no GitHub data or tokens pass through Anthropic's infrastructure.
66 
77## Choose a connector
88 
from line 19
1919 
2020## Remote connector
2121 
22GitHub hosts a copy of github-mcp-server on its own infrastructure. Claude Desktop on 3P connects to it as a standard remote [`managedMcpServers`](https://claude.com/docs/third-party/claude-desktop/configuration#managedmcpservers) entry, authenticated with a GitHub personal access token: the device connects straight to GitHub's endpoint, and the token travels only in the request headers from the user's device.
22GitHub hosts a copy of github-mcp-server on its own infrastructure. Claude Desktop on 3P connects to it as a standard remote [`managedMcpServers`](https://claude.com/docs/third-party/claude-desktop/configuration#managedmcpservers) entry, authenticated with a GitHub personal access token: the device connects to GitHub's endpoint, and the token travels only in the request headers from the user's device.
2323 
2424```json theme={null}
2525{
from line 36
3636 
3737## Local connector
3838 
39Claude Desktop includes a built-in copy of github-mcp-server and runs it as a local process when a `managedMcpServers` entry sets `server` to `github`. The server calls github.com, or your GitHub Enterprise Server instance, directly from the device.
39Claude Desktop includes a built-in copy of github-mcp-server and runs it as a local process when a `managedMcpServers` entry sets `server` to `github`. The server calls github.com, your GitHub Enterprise Cloud tenant on `ghe.com`, or your GitHub Enterprise Server instance, from the device. Behind a proxy, the server's calls follow the proxy that the app resolves for the host that serves the GitHub API. See [What is and is not routed](https://claude.com/docs/third-party/claude-desktop/network-proxy.md#what-is-and-is-not-routed).
4040 
4141Users sign in to GitHub from the app through the OAuth device flow, so there are no personal access tokens to issue, distribute, or rotate. You register one OAuth app in your GitHub organization and ship its client ID in the entry; each user then authorizes their own sign-in.
4242 
from line 72
7272| `name` | Yes | Unique display name, shown to users in connector settings. |
7373| `server` | Yes | Must be `github`. |
7474| `clientId` | Yes | The client ID of the OAuth app (or GitHub App) from step 1. |
75| `host` | No | Base URL of your GitHub Enterprise Server instance, for example `https://github.example.com`. Leave unset for github.com. HTTPS is required. |
75| `host` | No | Base URL of your GitHub Enterprise Server instance, for example `https://github.example.com`, or of your GitHub Enterprise Cloud tenant on `ghe.com`, for example `https://<tenant>.ghe.com`. Leave unset for github.com. HTTPS is required. |
7676| `scope` | No | Space-separated OAuth scopes to request at sign-in, for example `repo read:org`. Defaults to `repo read:org read:user`. Ignored for GitHub Apps. |
7777| `toolsets` | No | Comma-separated [github-mcp-server toolsets](https://github.com/github/github-mcp-server) to enable, for example `context,repos,issues,pull_requests`. Defaults to the bundled server's default toolsets. |
7878| `readOnly` | No | `true` starts the server with read tools only; write tools are not registered at all. |
from line 82
8282 
8383**3. Allow the required network hosts**
8484 
85The server and the sign-in flow call GitHub directly from the device, so in addition to the [base egress hosts](https://claude.com/docs/third-party/claude-desktop/telemetry.md#required-egress-paths), devices need outbound HTTPS access to:
85The server and the sign-in flow call GitHub from the device, so in addition to the [base egress hosts](https://claude.com/docs/third-party/claude-desktop/telemetry.md#required-egress-paths), devices need outbound HTTPS access to:
8686 
8787| Host | Purpose |
8888| - | - |
from line 89
8989| `github.com` | OAuth device-flow sign-in |
9090| `api.github.com` | GitHub API calls |
9191 
92GitHub Enterprise Server deployments need access to the instance's own host instead. No egress to any Anthropic host is needed for GitHub data.
92GitHub Enterprise Server deployments need access to the instance's own host instead. For a GitHub Enterprise Cloud tenant on `ghe.com`, devices need `<tenant>.ghe.com` and `api.<tenant>.ghe.com` instead. No egress to any Anthropic host is needed for GitHub data.
9393 
9494### How users sign in
9595 

third-party/claude-desktop/data-storage Changed · +21 / -6 lines

from line 39
3939| `claude-code/`, `claude-code-vm/` | Claude Code binary and VM workspace data for Code sessions. |
4040| `vm_bundles/` | Cached copy of the VM workspace bundle that Cowork sessions run in, plus the data disk the app creates to hold those sessions' home directories inside the VM. |
4141| `cowork_plugins/` | User-installed and [org-provisioned](https://claude.com/docs/third-party/claude-desktop/extensions.md#organization-plugins-admin) plugins. Created on first plugin install. |
42| `plugin-mcp-auth/`, `connectors/*/plugin-mcp/` | On Windows and Linux, the `.credentials.json` file that holds the user's sign-ins to plugin servers, made outside **Code**. See [Credentials](#credentials). |
4243| `IndexedDB/`, `Local Storage/`, `Session Storage/` | Renderer-side UI state (window layout, recent folders, preferences). |
4344 
44Files in this directory are written with owner-only permissions so other OS accounts on the same machine cannot read them. The app encrypts stored sign-in tokens, API keys saved from the in-app configuration window, and similar secrets with the operating system's secure storage (see [Credentials](#credentials)). It doesn't encrypt conversations, settings, or the rest of the locally applied configuration. Protection at rest for those files depends on the device's full-disk encryption, such as FileVault or BitLocker.
45Other standard OS accounts on the same machine can't read the files in this directory, but administrators can. On macOS and Linux, the app creates the directory with owner-only permissions. On Windows, the directory takes the permissions of the user's profile.
4546 
47Apart from the user's sign-ins to plugin servers on Windows and Linux, the app encrypts stored sign-in tokens, API keys saved from the in-app configuration window, and similar secrets with the operating system's secure storage (see [Credentials](#credentials)). It doesn't encrypt conversations, settings, the rest of the locally applied configuration, or, on Windows and Linux, the user's sign-ins to plugin servers. Protection at rest for those files depends on the device's full-disk encryption, such as FileVault or BitLocker.
48 
4649The logs directory contains `main.log` (application and configuration-validation events), `ssh.log` (SSH connection events), `cowork_vm_node.log` (sandbox VM activity), `claude.ai-web.log` (renderer events), and `mcp.log` / `mcp-server-<name>.log` (MCP connection events).
4750 
4851Separately from the application-data directory, Claude Desktop writes user-visible outputs (Artifacts and scheduled-task results) to `~/Claude/` in your home directory, or `~/Documents/Claude/` on legacy installs. This folder is intended for you to browse directly and is not removed when you delete the application-data directory. To back up a user's data, copy every location listed under [Copy the data to the new device](#copy-the-data-to-the-new-device).
from line 72
6972 
7073## Memory
7174 
72During Cowork sessions, Claude writes short Markdown files recording what it has learned about the user — working preferences, project context, and corrections — and reads them at the start of subsequent sessions. These files live under `local-agent-mode-sessions/.../memory/memory/` and never leave the device.
75During Cowork sessions, Claude writes short Markdown files recording what it has learned about the user (working preferences, project context, and corrections) and reads them at the start of subsequent sessions. In a scheduled Cowork task outside a project, Claude can read these files but doesn't save to them: it lists the notes with their one-line descriptions and chooses which to open. These files live under `local-agent-mode-sessions/.../memory/memory/`, and the app doesn't sync them to a server. What Claude reads from them becomes part of the session, so it goes to your configured inference provider with the rest of the conversation.
7376 
7477Where sessions run on the device, users find the memory controls in these places:
7578 
from line 82
7982 
8083### Project memory
8184 
82Each [project](https://claude.com/docs/cowork/guide/projects.md) keeps its own memory under `local-agent-mode-sessions/.../spaces/<projectId>/memory/`. Cowork sessions inside a project read and update the project's memory rather than the files under `local-agent-mode-sessions/.../memory/memory/`. A Chat conversation inside a project can also read and update the project's memory, as described under [Chat conversations](#chat-conversations).
85Each [project](https://claude.com/docs/cowork/guide/projects.md) keeps its own memory under `local-agent-mode-sessions/.../spaces/<projectId>/memory/`. Cowork sessions inside a project, scheduled tasks included, read and update the project's memory rather than the files under `local-agent-mode-sessions/.../memory/memory/`. A Chat conversation inside a project can also read and update the project's memory, as described under [Chat conversations](#chat-conversations).
8386 
8487To review a project's memory files, users go to **Projects**, open the project, and look under the **Memory** heading. Users click a file to read it, or right-click it and select **Copy path** to get its location on the device.
8588 
from line 101
98101 
99102## Credentials
100103 
101Inference credentials are handled according to how they're delivered:
104Credentials are handled according to how they're delivered:
102105 
103106* **Managed configuration** (for example, `inferenceGatewayApiKey`, `inferenceBedrockBearerToken`): read from the OS preference store or registry at launch and held in memory. The app also writes resolved credentials to a small set of transient, owner-only files for its own session processes, described below.
104107* **API keys saved in the in-app configuration window**: stored in the `configLibrary/` files, encrypted with the operating system's secure storage (Keychain on macOS, DPAPI on Windows, GNOME Keyring or KWallet on Linux). Requires Claude Desktop 4.4212.0 or later, which also encrypts a key that an earlier version saved, at the next launch where secure storage is available. See [Unreadable saved API keys](#unreadable-saved-api-keys).
105* **OAuth tokens** (in-app Google sign-in, MCP servers with `oauth: true`): stored in the application-data directory, encrypted with the operating system's secure storage (Keychain on macOS, DPAPI on Windows).
108* **OAuth tokens** (in-app Google sign-in, MCP servers with `oauth: true` in `managedMcpServers` or in an `org-plugins/` plugin): stored in the application-data directory, encrypted with the operating system's secure storage (Keychain on macOS, DPAPI on Windows).
109* **[Sign-ins to plugin servers](https://claude.com/docs/third-party/claude-desktop/extensions.md#sign-in-to-a-plugin-server)**: the OAuth tokens from a sign-in outside **Code** are stored as follows, and any program that runs under the user's OS account can read them:
110 
111 * **Windows and Linux**: an unencrypted `.credentials.json` file under `plugin-mcp-auth/` or `connectors/*/plugin-mcp/` in the application-data directory
112 * **macOS**: the login keychain, or that file if the keychain rejects the write
113 
114 The tokens from a sign-in in **Code** are in [Claude Code's own credential store](https://code.claude.com/docs/en/authentication#credential-management).
106115* **Credential-helper output**: held in memory for `inferenceCredentialHelperTtlSec` seconds, then discarded and re-fetched.
107116 
108117### Transient credential files
from line 253
244253 * `ccd-environment-config.json`
245254 * `cowork-enabled-cli-ops.json`
246255 
247 If you copied any of them, quit Claude Desktop on the new device, then delete them.
256 Also leave out `plugin-mcp-auth/` and `connectors/*/plugin-mcp/`, which on Windows and Linux hold the user's sign-ins to plugin servers. The user signs in to those servers again on the new device.
257 
258 If you copied any of these files or folders, quit Claude Desktop on the new device, then delete them.
248259 * `~/Claude/`, or `~/Documents/Claude/` on legacy installs
249260 * `~/.claude/` and `~/.claude.json`
250261 * The folders and repositories that the user's projects, scheduled tasks, and Code sessions use
from line 271
260271## Removing data
261272 
262273To fully reset a device's Claude Desktop on 3P state, delete the application-data directory above and the `~/Claude/` user-files folder. Code session transcripts are in Claude Code's store at `~/.claude/projects/`, which Claude Code in the terminal also uses, so delete them there separately if you need to remove them. For [SSH remote sessions](https://claude.com/docs/third-party/claude-desktop/ssh-remote-sessions.md#host-requirements), transcripts are in `~/.claude/projects/` and attached files in `~/.claude/uploads/` in the SSH user's home directory on the remote host. Claude Desktop also copies those transcripts to the device, into folders in `~/.claude/projects/` whose names start with `ssh-`, so delete them in both places.
274 
275> [!NOTE]
276>
277> On macOS, the user's sign-ins to plugin servers, made outside **Code**, stay in the login keychain after you delete the application-data directory. To end them, have the user [disconnect each server](https://claude.com/docs/third-party/claude-desktop/extensions.md#sign-in-to-a-plugin-server) first, or revoke them at the server's authorization server.
263278 
264279To return to standard Claude Desktop without removing data, choose the Anthropic sign-in option on the sign-in screen; to also remove the locally authored 3P configuration, delete the `configLibrary/` directory.
265280 

third-party/claude-desktop/extensions Changed · +65 / -16 lines

### Sign in to a plugin server ### Requirements for plugin server sign-in outside Code ### Replace a plugin server with a managed MCP server ### Limit plugin servers and end sign-ins

from line 122
122122 
123123> [!NOTE]
124124>
125> Some connectors return [MCP Apps](https://claude.com/docs/connectors/building/mcp-apps/getting-started.md), interactive widgets that Claude Desktop renders in place of a plain-text tool result. Each widget loads in a sandboxed iframe on `*.claudemcpcontent.com`, and setting [`disableNonessentialServices`](https://claude.com/docs/third-party/claude-desktop/configuration#disablenonessentialservices) to `true` blocks that origin, so Claude Desktop shows the connector's text result instead of the widget. The same key also blocks artifact previews and connector favicons. To keep MCP Apps rendering, leave `disableNonessentialServices` unset or `false`, and allow the widget hosts listed under [Required egress paths](https://claude.com/docs/third-party/claude-desktop/telemetry.md#required-egress-paths) at your perimeter firewall.
125> Some connectors return [MCP Apps](https://claude.com/docs/connectors/building/mcp-apps/getting-started.md), interactive widgets that Claude Desktop renders in place of a plain-text tool result. Each widget loads in a sandboxed iframe on `*.claudemcpcontent.com`, and setting [`disableNonessentialServices`](https://claude.com/docs/third-party/claude-desktop/configuration#disablenonessentialservices) to `true` blocks that origin, so the conversation shows an error in place of the widget. The same key also blocks artifact previews and connector favicons. To keep MCP Apps rendering, leave `disableNonessentialServices` unset or `false`, and allow the widget hosts listed under [Required egress paths](https://claude.com/docs/third-party/claude-desktop/telemetry.md#required-egress-paths) at your perimeter firewall.
126126 
127127### Productivity suites
128128 
from line 351
351351| - | - |
352352| `.claude-plugin/plugin.json` | Plugin manifest (name, description, version). Required unless a top-level `SKILL.md` serves as the manifest; see the note below this table. A directory with neither is ignored. |
353353| `version.json` | `{"version": "1.2.3"}`. When this string changes, Claude Desktop re-syncs the plugin on next launch. There's no semver ordering, so a downgrade also triggers a re-sync. If absent, the directory's modification time is used instead. |
354| `.mcp.json` | MCP servers bundled with this plugin. A JSON object keyed by server name: `{"mcpServers": {"<name>": {"type": "http", "url": "...", "oauth": true}}}`. A remote entry uses `type` (`http` or `sse`), not `transport`, and supports `url`, `headers`, and `oauth` only. `toolPolicy`, `headersHelper`, and `headersHelperTtlSec` aren't read from this file. The form `"oauth": true` is for plugins in `org-plugins/`. In a [marketplace plugin or a user-added plugin](#remote-mcp-servers-in-plugins), leave `oauth` out or make it an object, as [MCP in Claude Code](https://code.claude.com/docs/en/mcp#authenticate-with-remote-mcp-servers) shows. In such a plugin, Claude Code skips a server whose entry says `"oauth": true`. A local entry gives a `command` with optional `args` and `env` (`type` is `"stdio"` or omitted). Give `command` as a program name on `PATH` or an absolute path, using `${CLAUDE_PLUGIN_ROOT}` for the plugin's directory under `org-plugins/`. Claude Desktop starts these local servers itself, including when [`isLocalDevMcpEnabled`](https://claude.com/docs/third-party/claude-desktop/configuration#islocaldevmcpenabled) is `false`. Local entries require Claude Desktop 1.49585.0 or later. A local entry that references `${user_config.<key>}` is skipped, because per-user plugin settings aren't available to organization plugins. The diagnostic report's **MCP servers** section lists each server, with the reason for any it skipped. |
354| `.mcp.json` | MCP servers bundled with this plugin. A JSON object keyed by server name: `{"mcpServers": {"<name>": {"type": "http", "url": "...", "oauth": true}}}`. A remote entry uses `type` (`http` or `sse`), not `transport`, and supports `url`, `headers`, and `oauth` only. `toolPolicy`, `headersHelper`, and `headersHelperTtlSec` aren't read from this file. The form `"oauth": true` is for plugins in `org-plugins/`. For a marketplace plugin or a user-added plugin, see [Remote MCP servers in plugins](#remote-mcp-servers-in-plugins). A local entry gives a `command` with optional `args` and `env` (`type` is `"stdio"` or omitted). Give `command` as a program name on `PATH` or an absolute path, using `${CLAUDE_PLUGIN_ROOT}` for the plugin's directory under `org-plugins/`. Claude Desktop starts these local servers itself, including when [`isLocalDevMcpEnabled`](https://claude.com/docs/third-party/claude-desktop/configuration#islocaldevmcpenabled) is `false`. Local entries require Claude Desktop 1.49585.0 or later. A local entry that references `${user_config.<key>}` is skipped, because per-user plugin settings aren't available to organization plugins. The diagnostic report's **MCP servers** section lists each server, with the reason for any it skipped. |
355355| `agents/` | Sub-agent definitions. |
356356| `commands/` | Slash-command definitions. |
357357| `skills/` | [Skill](https://claude.com/docs/skills/overview.md) directories. |
from line 404
404404 
405405## Remote MCP servers in plugins
406406 
407A plugin can declare remote MCP servers in its `.mcp.json` file. Claude Desktop connects to the servers in [`managedMcpServers`](#managed-mcp-servers-admin) and to the servers of plugins in the [`org-plugins/` directory](#organization-plugins-admin). For a plugin from one of your [marketplaces](#plugin-marketplaces-admin), or a plugin that a user added, a session that loads the plugin connects to the plugin's servers when the session starts:
407A plugin can declare remote MCP servers in its `.mcp.json` file, and Claude Desktop shows each one as a connector. For a plugin from one of your [marketplaces](#plugin-marketplaces-admin), or a plugin that a user added, Claude can use these servers in the Cowork sessions, Chat conversations, and Code sessions that load the plugin. If a server requires OAuth sign-in, Claude can use it in Cowork sessions, Chat conversations, and local Code sessions after the user [signs in](#sign-in-to-a-plugin-server). The user signs in once for **Code** and once for the rest of Claude Desktop.
408408 
409* **If the server needs no sign-in**: Claude can use it in the Cowork sessions, Chat conversations, and Code sessions that load the plugin
410* **If the server requires OAuth sign-in**: Claude can use it in local Code sessions that load the plugin, once the user has signed in, but not in Cowork sessions or Chat conversations
409In a marketplace plugin or a user-added plugin, a remote server's entry in `.mcp.json` needs no `oauth` field, even if the server requires OAuth sign-in. If you set `oauth`, make it an object, as [MCP in Claude Code](https://code.claude.com/docs/en/mcp#authenticate-with-remote-mcp-servers) shows, and not `true` as in the `org-plugins/` directory. Claude Code skips a server whose entry says `"oauth": true`. If users sign in outside **Code**, leave `clientId` out of the object, as described under [Requirements for plugin server sign-in outside Code](#requirements-for-plugin-server-sign-in-outside-code).
411410 
412To make a plugin's server that requires OAuth sign-in available in Cowork sessions and Chat conversations, add a [`managedMcpServers`](#managed-mcp-servers-admin) entry with a `transport`, the same `url` as the plugin's server, and [OAuth sign-in](#oauth-sign-in) set up. Claude Desktop then connects to the server through your entry. Each user clicks **Connect** next to your entry's name under **Customize > Connectors** and signs in, whether [Code is on or off](https://claude.com/docs/third-party/claude-desktop/code.md#disabling-code). After that, Claude can use the server in Cowork sessions, Chat conversations, and Code sessions.
411Claude Code reads this `.mcp.json` file and skips a server whose entry it can't read. Claude Desktop still shows a skipped server as a connector, but Claude can't use it. To check a plugin's entries before you publish it, run [`claude plugin validate <plugin-folder>`](https://code.claude.com/docs/en/plugins/cli-reference#plugin-validate) in your terminal, on the plugin's own folder and not the marketplace's folder. The command checks the entries against the version of Claude Code that runs it, so it can pass an entry that the version in your users' Claude Desktop skips.
413412 
414Without a `managedMcpServers` entry for the server, users sign in to it from **Code**, and the sign-in applies to local Code sessions. In **Code**, the user starts a local session that loads the plugin, goes to **Customize > Plugins**, selects the plugin, selects the server on the **Connectors** tab, clicks **Connect**, and completes the sign-in in the browser. With Code on, while no local Code session that loads the plugin is running, the **Connect** button is unavailable, and its tooltip reads "Open a Code session that loads this connector, then try again". With Code turned off, users can't sign in this way, so Claude can't use the server.
413> [!NOTE]
414>
415> For the servers of plugins in the `org-plugins/` directory, see [Organization plugins](#organization-plugins-admin).
415416 
416To limit plugin-bundled servers, see [Controlling user extensions](#controlling-user-extensions).
417### Sign in to a plugin server
417418 
419Users sign in to a server of a marketplace plugin or a user-added plugin separately for **Code** and for the rest of Claude Desktop:
420 
421* **Outside Code**: anywhere in Claude Desktop other than **Code**, the user goes to **Customize > Connectors**, selects the server's row, clicks **Connect** in the panel that opens, and completes the sign-in in the browser. One sign-in covers the user's Cowork sessions, Chat conversations, and scheduled Cowork tasks on the device, and it works where [Code is turned off](https://claude.com/docs/third-party/claude-desktop/code.md#disabling-code). A scheduled task's run asks for approval of the server's tools as it does for other MCP tools that have no `toolPolicy` entry, as described under [Tool approvals on scheduled tasks](https://claude.com/docs/third-party/claude-desktop/configuration.md#tool-approvals-on-scheduled-tasks). This sign-in has [requirements](#requirements-for-plugin-server-sign-in-outside-code).
422* **In Code**: with **Code** open, the user goes to **Customize > Plugins**, selects the plugin, selects the server on the plugin's **Connectors** tab, clicks **Connect**, and completes the sign-in in the browser. The sign-in covers local Code sessions. While no local Code session that loads the plugin is running, the **Connect** button in **Code** is unavailable, and its tooltip reads "Open a Code session that loads this connector, then try again".
423 
424Outside **Code**, the server's row reads "Check status" until Claude Desktop knows whether the user is signed in, and then "Connected" or "Not connected". Claude Desktop checks the sign-in when the user selects the row and the panel opens.
425 
426Outside **Code**, the server's rows under **Settings > Connectors**, under **Connectors** in the message box's **+** menu, and on the plugin's **Connectors** tab under **Customize > Plugins** open the same panel. In a Cowork session or Chat conversation that needs the sign-in, a banner that reads "Claude can't access `<server-name>`." can also offer **Connect**.
427 
428To end a sign-in made outside **Code**, the user goes to **Customize > Connectors**, selects the server's row, and clicks **Disconnect**. Claude Desktop removes the sign-in from the device and revokes it at the authorization server, if that server supports revocation.
429 
430### Requirements for plugin server sign-in outside Code
431 
432A sign-in outside **Code** has these main requirements:
433 
434* **Claude Desktop opens `claude://` links**: the browser returns the user to Claude Desktop through a `claude://` link. Leave [`disableDeepLinkRegistration`](https://claude.com/docs/third-party/claude-desktop/configuration#disabledeeplinkregistration) unset or `false`, and let users' browsers open `claude://` links.
435* **The plugin doesn't name its own OAuth client**: the server's entry in `.mcp.json` doesn't set `oauth.clientId`
436* **The server's entry uses no placeholder or headers helper**: its `url` and `headers` hold no `${…}` placeholder, and it doesn't set `headersHelper`
437* **The authorization server supports dynamic client registration**: it offers a registration endpoint and accepts the redirect URI `claude://claude.ai/mcp-auth-callback/sdk`. The registration request names the client `Claude Code (plugin:<plugin-name>:<server-name>)`, where `<plugin-name>` is the `name` in the plugin's `.claude-plugin/plugin.json` file and `<server-name>` is the server's key in `.mcp.json`. If the authorization server registers only the client names that you list, add this name for each plugin server. Each user's first sign-in on a device registers a new client, and so does a sign-in after the user clicks **Disconnect**, so allow for any limit that the authorization server sets on registrations, for example per network address and hour.
438 
439When a requirement isn't met, users see one of the following:
440 
441* **No Connect button**: if `disableDeepLinkRegistration` is `true`, the operating system doesn't open `claude://` links with Claude Desktop, the plugin names its own OAuth client, or [Claude Code skipped the server's entry](#remote-mcp-servers-in-plugins), the server's panel reads "Claude can't sign you in to `<server-name>` through this plugin. Ask your admin to set it up as a managed connector." A managed connector is a [`managedMcpServers` entry that replaces the plugin server](#replace-a-plugin-server-with-a-managed-mcp-server). If either [list of plugin servers](#limit-plugin-servers-and-end-sign-ins) is set, a skipped entry's panel reads the message for a blocked server instead.
442* **No Connect button, because of a placeholder or headers helper**: the panel reads "This connector is provided by a plugin, and you cannot sign in to it here. If it needs no sign-in, it connects by itself. If Claude cannot use it, ask your admin to set it up as a managed connector."
443* **A message after Connect**: if the authorization server offers no registration endpoint, or refuses the redirect URI when Claude Desktop registers, the panel offers **Connect**. After the click, the panel reads "Claude couldn't sign you in to `<server-name>` through this plugin. Ask your admin to set it up as a managed connector."
444* **A time-out**: if the `claude://` link doesn't reach Claude Desktop within five minutes, a message reads "Sign-in for `<server-name>` timed out. Select Connect to try again."
445 
446A sign-in times out when something keeps the `claude://` link from reaching Claude Desktop, for example:
447 
448* **The browser doesn't open the link**: a browser policy blocks `claude://` links, or the user doesn't let the browser open Claude Desktop. In Microsoft Edge, for example, a `URLBlocklist` entry such as `claude://*` blocks the link, and an `AutoLaunchProtocolsFromOrigins` entry with the protocol `claude` and the authorization server's origin opens it without asking the user.
449* **The consent page's Content Security Policy blocks the link**: the consent page is the authorization server's page where the user approves the sign-in. If it carries a `Content-Security-Policy` header whose `form-action` directive doesn't allow `claude:`, Google Chrome, for example, blocks the link and shows no error on the page. Check any such header that a proxy or web application firewall in front of the authorization server sets.
450 
451### Replace a plugin server with a managed MCP server
452 
453If a [`managedMcpServers`](#managed-mcp-servers-admin) entry has the same `url` or the same name as a plugin server, Claude Desktop uses your entry in place of the plugin server. Give the entry a `transport`, the plugin server's `url`, and `oauth`, as described under [OAuth sign-in](#oauth-sign-in). Each user clicks **Connect** next to your entry's name under **Customize > Connectors** and signs in once for Cowork sessions, Chat conversations, and Code sessions.
454 
455### Limit plugin servers and end sign-ins
456 
457To choose which plugin servers sessions connect to, set [`allowedPluginMcpServers`](https://claude.com/docs/third-party/claude-desktop/configuration#allowedpluginmcpservers) or [`deniedPluginMcpServers`](https://claude.com/docs/third-party/claude-desktop/configuration#deniedpluginmcpservers). Users can't sign in to a server that these lists keep out. Outside **Code**, its row keeps reading "Check status", and its panel reads "Your organization may have blocked `<server-name>`. Ask your admin to allow it." While either list is set, the panel reads the same for a server whose entry Claude Code skipped, so also check the entry as described under [Remote MCP servers in plugins](#remote-mcp-servers-in-plugins).
458 
459The lists and the sign-ins have these limits:
460 
461* **OAuth hosts aren't checked**: both lists match the server's own `url`. They don't check the hosts that sign-in, registration, and token requests go to. The server's OAuth metadata or the plugin's `.mcp.json` file can point those requests at other hosts.
462* **Blocking doesn't revoke**: after you block a server or remove its plugin, new sessions don't connect to it. Sign-ins that users already made stay on their devices and aren't revoked. To end them, revoke them at the server's authorization server.
463* **Storage**: on Windows and Linux, sign-ins to plugin servers are stored in a file that isn't encrypted. For where sign-ins to plugin servers and to managed MCP servers are stored, see [Credentials](https://claude.com/docs/third-party/claude-desktop/data-storage.md#credentials).
464 
418465## Plugin hooks
419466 
420467[Hooks](https://code.claude.com/docs/en/hooks) bundled in a plugin, under `hooks/` or declared in its manifest, run wherever the plugin itself loads:
421468 
422469* **Cowork sessions** run hooks from marketplace plugins, from plugins in the `org-plugins/` directory, and from plugins users add themselves.
423* **Code sessions** run hooks from marketplace plugins (Claude Desktop 1.32352.0 or later) and from plugins the user installed for Claude Code. Hooks from plugins in the `org-plugins/` directory do not run in Code sessions. In [remote SSH sessions](https://claude.com/docs/third-party/claude-desktop/ssh-remote-sessions.md#managed-configuration-on-the-remote-host), hooks from the plugins Claude Desktop copies to the host do not run.
470* **Code sessions** run hooks from marketplace plugins (Claude Desktop 1.32352.0 or later), from plugins users upload in the app, and from plugins the user installed for Claude Code. Hooks from plugins in the `org-plugins/` directory do not run in Code sessions. In [remote SSH sessions](https://claude.com/docs/third-party/claude-desktop/ssh-remote-sessions.md#managed-configuration-on-the-remote-host), hooks from the plugins Claude Desktop copies to the host do not run.
424471* **Chat conversations** run hooks from the same plugins as Cowork sessions, on Claude Desktop 1.52386.0 or later.
425472 
426473With [Unified Claude](https://claude.com/docs/third-party/claude-desktop/unified-claude.md) on, a Cowork session started from the home screen runs the same hooks as any other Cowork session.
from line 506
459506* **Skills:** create and upload their own [skills](https://claude.com/docs/skills/overview.md), including by asking Claude to save one in a conversation
460507* **Local MCP servers:** add local MCP server processes from **Settings → Developer**
461508 
462End users cannot add remote MCP servers from the app's settings or install desktop extension files (`.mcpb`) themselves. Remote servers come from admin-provisioned `managedMcpServers`, from organization plugins, and from other plugins that bundle them, including plugins users install. If a marketplace plugin or a user-added plugin bundles a remote MCP server that requires OAuth sign-in, Claude can't use that server in Cowork sessions or Chat conversations. To make it available there, add a `managedMcpServers` entry with the same `url`, as described under [Remote MCP servers in plugins](#remote-mcp-servers-in-plugins). A Code session can also load the servers a user defines in Claude Code's own configuration (`~/.claude.json`, a project's `.mcp.json`, or `claude mcp add`). To limit plugin-bundled servers, see [Controlling user extensions](#controlling-user-extensions). To limit the servers a Code session loads, see [Applied as managed policy](https://claude.com/docs/third-party/claude-desktop/code.md#applied-as-managed-policy).
509End users cannot add remote MCP servers from the app's settings or install desktop extension files (`.mcpb`) themselves. Remote servers come from admin-provisioned `managedMcpServers`, from organization plugins, and from other plugins that bundle them, including plugins users install (see [Remote MCP servers in plugins](#remote-mcp-servers-in-plugins)). A Code session can also load the servers a user defines in Claude Code's own configuration (`~/.claude.json`, a project's `.mcp.json`, or `claude mcp add`). To limit plugin-bundled servers, see [Controlling user extensions](#controlling-user-extensions). To limit the servers a Code session loads, see [Applied as managed policy](https://claude.com/docs/third-party/claude-desktop/code.md#applied-as-managed-policy).
463510 
464User-added extensions are stored in the user's [local data directory](https://claude.com/docs/third-party/claude-desktop/data-storage.md) and apply only to that device.
511User-added extensions are stored in the user's [local data directory](https://claude.com/docs/third-party/claude-desktop/data-storage.md) and apply only to that device. A plugin that a user uploads loads in Cowork sessions, Chat conversations, scheduled tasks, and Code sessions, whichever part of the app they upload it from. It doesn't load where a plugin of the same name from your organization does. One uploaded with an earlier version of Claude Desktop stays where it was until they upload it again. A marketplace that a user adds, and the plugins they install from it, stay in the part of the app where they added it: **Code** or the rest of Claude Desktop.
512 
513In the app, when a user installs, uploads, or turns on a plugin that your organization didn't provide, Claude Desktop first asks whether to continue, because the plugin may run code on the device. The user clicks **Continue** to go ahead, or **Cancel** to leave the plugin as it was. Claude Desktop doesn't save the answer, so it asks at each install, upload, and turn-on, in **Cowork** and in **Code**. It doesn't ask when a session starts, when a plugin updates, or about a plugin that is already on. Plugins from your [marketplaces](#plugin-marketplaces-admin) and from the [`org-plugins/` directory](#organization-plugins-admin) install and turn on without the question.
465514 
466515> [!NOTE]
467516>

third-party/claude-desktop/gateway Changed · +3 / -3 lines

from line 703
703703 
704704### Other status codes at a spend limit
705705 
706With these status codes, users see a general error or a card about a different problem, and Code's card hides or drops your message.
706With these status codes, users can see a general error or a card about a different problem, and Code's card can hide or drop your message.
707707 
708* **`429`**: Claude Desktop can retry for about three minutes or longer before it shows an error, unless the response carries `x-should-retry: false`. Code then shows **Server is temporarily limiting requests**.
708* **`429`**: Claude Desktop can retry for about three minutes or longer before it shows an error, unless the response carries `x-should-retry: false`. Code then shows **Server is temporarily limiting requests**. In Claude Desktop 4.23118.0 or later, when a [Claude apps gateway](https://code.claude.com/docs/en/claude-apps-gateway) blocks a user at a spend limit, local Code sessions outside WSL show **Spend limit reached** with the gateway's message instead.
709709* **`401` or `403`**: Code shows a card about credentials, sign-in, or permissions.
710710* **`400`**: Code shows **Invalid request**.
711711 

third-party/claude-desktop/installation Changed · +5 / -3 lines

from line 111
111111 
112112On any configured device, open Claude Desktop, go to **Help → Troubleshooting → Generate Diagnostic Report**, and click **Export to file**. In the saved `.zip` file, `managed-config.txt` shows where the configuration was read from and each key's configured or default value, with secret values redacted and anything it could not parse listed under `Parse errors`. `provider-status.txt` shows whether the provider settings are complete and valid, and `deployment-mode.txt` shows whether the app is running in third-party mode.
113113 
114Also confirm that the [in-app configuration window](https://claude.com/docs/third-party/claude-desktop/in-app-configuration.md) (**Developer → Configure Third-Party Inference…**) opens read-only on a managed device. The app reads managed keys from the profile by name and silently ignores a misspelled key rather than reporting an error. On macOS, a window that is still editable means no recognized key reached the app, even if your MDM shows the profile as delivered. On Windows, even a misspelled value under `HKLM\SOFTWARE\Policies\Claude` counts as machine policy and locks the window, so compare each key's value in `managed-config.txt` with the value you set. If your profile deliberately sets [only app-behavior keys](https://claude.com/docs/third-party/claude-desktop/mdm.md#update-keys-and-managed-precedence) (the update, relaunch window, configuration re-check, or network proxy keys), an editable window is expected.
114Also confirm that the [in-app configuration window](https://claude.com/docs/third-party/claude-desktop/in-app-configuration.md) (**Developer → Configure Third-Party Inference…**) opens read-only on a managed device. The app reads managed keys from the profile by name and silently ignores a misspelled key rather than reporting an error. On macOS, a window that is still editable means no recognized key reached the app, even if your MDM shows the profile as delivered. On Windows, even a misspelled value under `HKLM\SOFTWARE\Policies\Claude` counts as machine policy and locks the window, so compare each key's value in `managed-config.txt` with the value you set. If your profile deliberately sets [only app-behavior keys](https://claude.com/docs/third-party/claude-desktop/mdm.md#update-keys-and-managed-precedence), an editable window is expected.
115115 
116116If the app shows the standard claude.ai sign-in screen instead of Cowork, the configuration was not read. Common causes:
117117 
from line 229
229229 
230230## Updates
231231 
232By default, Claude Desktop downloads updates from Anthropic's update server automatically and applies them the next time the app restarts. If the app hasn't restarted within 72 hours of downloading an update, it restarts itself, waiting for 10 minutes of user inactivity before doing so. This enforcement is always on and offers no in-app prompt to defer the restart; the `autoUpdaterEnforcementHours` key tunes the 72-hour window rather than enabling it.
232By default, Claude Desktop downloads updates from Anthropic's update server automatically. On macOS and Windows, it then restarts itself to install the update after 10 minutes with no Claude window in use and no task running. On macOS it reopens by itself; on Windows, it may stay closed until someone opens it.
233233 
234If the update still isn't installed 72 hours after the download, the app restarts itself, waiting for 10 minutes of user inactivity before doing so. This enforcement is always on and offers no in-app prompt to defer the restart; the `autoUpdaterEnforcementHours` key tunes the 72-hour window rather than enabling it. With or without the key, the restart waits while Claude is working on a task or the update server gives no answer.
235 
234236In 3P deployments you can:
235237 
236* **Leave auto-update enabled** (recommended) so fixes reach users without IT intervention. Set `autoUpdaterEnforcementHours` to shorten the enforcement window (1 to 72 hours; values above 72 are rejected). Setting the key also makes the window strict: the restart fires as soon as the window elapses, without waiting for a pause in user activity.
238* **Leave auto-update enabled** (recommended) so fixes reach users without IT intervention. Set `autoUpdaterEnforcementHours` to shorten the enforcement window (1 to 72 hours; values above 72 are rejected). Setting the key also makes the window strict: the restart fires as soon as the window elapses, without waiting for a pause in user activity. The key doesn't delay an update, which usually installs sooner.
237239* **Switch to a slower release channel** by setting [`releaseChannel`](https://claude.com/docs/third-party/claude-desktop/configuration#releasechannel) to `staggered`. Devices on the default release channel, `stable`, take each release as it rolls out. Devices on `staggered` typically trail `stable` by 7-14 days. Usually once a week, Anthropic marks a tested release from `stable` as the new `staggered` release. Urgent fixes may be released sooner. Features and fixes, including security fixes, reach `staggered` devices later.
238240* **Disable auto-update** (`disableAutoUpdates`) and redistribute new builds through your MDM on your own cadence. This is required for [air-gapped environments](#offline-installation) but means your IT team owns the update pipeline. To move open apps to each version you install, see [Restart open apps after you install a new version](#restart-open-apps-after-you-install-a-new-version).
239241 

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

from line 23
2323A few limits apply to the agent regardless of how the proxy is chosen:
2424 
2525* Only `http://` and `https://` proxies are handed to the agent. If the OS or PAC answer is a SOCKS proxy, the app skips it, and the agent connects directly or through the last `http://` or `https://` proxy named for the inference endpoint since Claude Desktop started.
26* There is no interactive proxy sign-in. If your proxy requires a username and password, neither the app nor the agent can prompt for them and requests fail. Run a local forwarding proxy that authenticates upstream on the device (for example, Cntlm or Px) and point the OS or the pinned key at it.
26* There is no interactive proxy sign-in. If your proxy requires a username and password, neither the app, the agent, nor the built-in GitHub connector's server can prompt for them and requests fail. The connector's server gets the proxy's address and no credential, so a proxy that signs devices in with NTLM or Kerberos refuses it too. Run a local forwarding proxy that authenticates upstream on the device (for example, Cntlm or Px) and point the OS or the pinned key at it.
2727* If your proxy intercepts TLS, see [TLS-intercepting proxies](#tls-intercepting-proxies) below.
2828 
2929### PAC script for the sandboxed shell
from line 83
8383| Web Fetch in Chat and Cowork sessions, and remote managed MCP servers | App proxy (the app makes these connections) |
8484| Local (`stdio`) servers in [`managedMcpServers`](https://claude.com/docs/third-party/claude-desktop/configuration#managedmcpservers) | The app gives the server no proxy variables. Set `HTTPS_PROXY` in the entry's `env`, or have its `envHelper` script print it. In the admin console, use the **Environment helper script** field. |
8585| Sync of the plugin marketplaces you configure, and `aws` CLI calls the app makes for Bedrock sign-in | App proxy, resolved for the specific host |
86| The built-in [GitHub connector](https://claude.com/docs/third-party/claude-desktop/connectors-github.md#local-connector)'s calls to GitHub | App proxy, resolved for the host that serves the GitHub API (`api.github.com`, `api.<tenant>.ghe.com` for a tenant on `ghe.com`, or your GitHub Enterprise Server instance's own host) when the app starts the connector's server, such as at launch or after a sign-in. If the answer names only SOCKS proxies, the server connects directly. |
8687| Cowork sandbox download from `downloads.claude.ai` | App proxy |
8788| Telemetry and crash reports to Anthropic, if enabled | App proxy |
8889| OpenTelemetry export to your collector | App proxy for the app's own events; the same single proxy as inference for Claude Code metrics and logs |
from line 189
188189* **Last proxy reused**: a `Keeping system proxy` line, when the OS answer was direct, SOCKS, or missing
189190* **SOCKS answer from the OS**: a `Skipping SOCKS proxy entry` line
190191* **Proxy variables from Claude Code managed settings**: a line that names the variables set or replaced, and the settings file they came from
192* **Proxy handed to the built-in GitHub connector**: a `[github-mcp] bundled server connected` line that lists `HTTPS_PROXY` under `envKeys`
191193 
192194For Cowork's sandboxed shell, open `cowork_vm_node.log` in the same directory and look for these lines:
193195 
from line 199
197199**Agent connects directly while the app is proxied.** The OS or PAC answer for the inference endpoint was `DIRECT` or SOCKS-only. Adjust the PAC rule for the inference host, or pin `egressProxyUrl`.
198200 
199201**New sessions keep using a proxy after the device leaves its network.** Once the app has been given a proxy for the inference endpoint, it keeps handing that proxy to new sessions while the OS or PAC answer is a direct connection, a SOCKS proxy, or no answer. Quit and reopen Claude Desktop.
202 
203**The built-in GitHub connector's tools fail after the device changes networks.** The connector's server keeps the proxy that the app resolved when the server started. Quit and reopen Claude Desktop.
200204 
201205**Cowork's sandboxed shell has no proxy on macOS while the app is proxied.** Check the PAC address in the OS proxy settings. The sandboxed shell uses its own copy of the PAC script. macOS refuses the download of that copy from a plain `http://` address unless the host is one of the exceptions listed under [PAC script for the sandboxed shell](#pac-script-for-the-sandboxed-shell). The app's logs then record `PAC fetch from … refused: macOS requires https for this address (App Transport Security)`, which you can search for in the [logs directory](https://claude.com/docs/third-party/claude-desktop/data-storage.md). Serve the script over `https://`.
202206 

government/org-admin/compliance-api Changed · +1 / -1 lines

from line 96
9696| `user_id` | The Claude for Government user ID, in the same `usr_` format as `actor.user_id`. |
9797| `user_email` | The user's email address at the time of the event. |
9898 
99The user an event is about is not always the actor. When an owner changes someone's role, the `actor` block names the owner and these fields name the user whose role changed.
99The user an event is about is not always the actor. When an owner changes someone's role, the `actor` block names the owner and these fields name the user whose role changed. When a tenant administrator who isn't one of the organization's Primary Owners grants or removes the Primary Owner role, the `user.role_changed` event also carries a `by_tenant_admin` field set to `true`.
100100 
101101```json theme={null}
102102{

government/tenant-admin/organizations Changed · +2 / -2 lines

from line 14
1414 
1515## The organization list
1616 
17Each organization appears with its name and ID. Clicking an organization's name opens its organization admin view. When you do this you are acting as an Owner of that organization and can manage its users, seats, and settings. You cannot grant or remove its [Primary Owner role](https://claude.com/docs/government/org-admin/users.md#understanding-roles), which stays with that organization's own Primary Owners.
17Each organization appears with its name and ID. Clicking an organization's name opens its organization admin view. When you do this you are acting as an Owner of that organization and can manage its users, seats, and settings. Unless the organization manages its own billing account, you can also grant or remove its Primary Owner role on its [Users](https://claude.com/docs/government/org-admin/users.md) page.
1818 
1919To email everyone in your tenant, or in one organization, click **Copy user email addresses** at the top of the page. The page that opens lists the email addresses of everyone except deactivated users, for the whole tenant and for each organization, each with its own **Copy** button. Any list of more than 450 addresses appears in parts of up to 450 that you can copy separately.
2020 
from line 46
4646 
4747## Things to know
4848 
49* You choose an organization's first Primary Owner when you create it. After that, only that organization's Primary Owners can grant or remove the role. If an organization no longer has a Primary Owner who can sign in, for example because that person left your agency, contact Anthropic to have a new one appointed.
49* You choose an organization's first Primary Owner when you create it. In an organization that manages its own billing account, only its Primary Owners can grant or remove the role after that. If none of them can sign in, contact Anthropic to have a new one appointed.
5050* You cannot delete an organization from this page. If an organization is no longer needed, contact Anthropic to have it deactivated. Routing rules that target a deactivated organization stop matching, and users in a deactivated organization cannot sign in until it is reactivated or they are moved.
5151* Organization names can be changed later from the organization's own admin view.
5252* There is no fixed limit on the number of organizations you can create, but each one adds a row to your seat distribution and configuration surfaces, so create only as many as you need to keep administration manageable.

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

from line 284
284284* You have saved a configuration that includes the inference provider, as described under [Configure Claude Desktop](#configure-claude-desktop)
285285* Single sign-on is connected, if you use it, and the users you want on this deployment are invited or provisioned, as described under [Connect your identity provider](#connect-your-identity-provider)
286286* Devices run the latest Claude Desktop release, installed as described in [Installation and setup](https://claude.com/docs/third-party/claude-desktop/installation.md)
287* Devices carry no MDM-delivered Claude Desktop configuration other than the [app-behavior keys](https://claude.com/docs/third-party/claude-desktop/mdm.md#update-keys-and-managed-precedence) (the update, configuration re-check, relaunch window, and network proxy keys) and [`forceLoginOrgUUID`](#keep-a-device-on-its-managed-profile). For a device that keeps a managed profile or registry policy with any other key, see [Devices with a managed profile](#devices-with-a-managed-profile).
287* Devices carry no MDM-delivered Claude Desktop configuration other than the [app-behavior keys](https://claude.com/docs/third-party/claude-desktop/mdm.md#update-keys-and-managed-precedence) and [`forceLoginOrgUUID`](#keep-a-device-on-its-managed-profile). For a device that keeps a managed profile or registry policy with any other key, see [Devices with a managed profile](#devices-with-a-managed-profile).
288288* Devices can reach `api.anthropic.com` at every launch and while the app runs, and `claude.ai`, `hcaptcha.com`, and `*.hcaptcha.com` when users sign in, in addition to the hosts on [Telemetry and egress](https://claude.com/docs/third-party/claude-desktop/telemetry.md)
289289* You have added the device, network, and provider controls that you want, as described under [Limit Claude Desktop to your organization](#limit-claude-desktop-to-your-organization)
290290 
from line 477
477477 
478478* The [network proxy keys](https://claude.com/docs/third-party/claude-desktop/network-proxy.md#pin-a-proxy-from-managed-configuration).
479479* [`isLocalDevMcpEnabled`](https://claude.com/docs/third-party/claude-desktop/configuration#islocaldevmcpenabled) set to `false`, for local (stdio) servers in the console's managed MCP servers only. The app starts such a server only if the profile's own [`managedMcpServers`](https://claude.com/docs/third-party/claude-desktop/configuration#managedmcpservers) lists a local (stdio) server of the same name, and it uses the profile's command, arguments, and environment. The profile's value doesn't block local MCP servers that users add. To keep blocking them, turn off **Allow local MCP servers** on the console's **Connectors** page.
480* [`disableWslSessions`](https://claude.com/docs/third-party/claude-desktop/configuration#disablewslsessions).
480481* The keys described under [Keep a device on its managed profile](#keep-a-device-on-its-managed-profile).
481482 
482483Other settings come from the console, including the inference provider, restrictions, telemetry, and the update, relaunch window, and re-check keys. The profile's values, and its bootstrap server's, don't apply even where the console leaves a setting unset. Before the app downloads the console's configuration at a launch, it applies [what it kept of the last download](#configuration-kept-on-devices), not the profile's values. That copy doesn't hold [`disableAutoUpdates`](https://claude.com/docs/third-party/claude-desktop/configuration#disableautoupdates), so until a download succeeds, neither the console's nor the profile's value blocks updates.

third-party/claude-desktop/built-in-connectors Changed · +2 / -2 lines

from line 2
22 
33> MCP servers bundled inside Claude Desktop on 3P: which servers ship in the app, how built-in entries work, and where each one is documented
44 
5Claude Desktop ships copies of some MCP servers inside the app itself. A built-in server runs as a local process on the user's device and calls the data provider directly, so no data or tokens pass through Anthropic's infrastructure. There is nothing to install or host on your side: a [`managedMcpServers`](https://claude.com/docs/third-party/claude-desktop/configuration#managedmcpservers) entry activates the server, and the app runs it.
5Claude Desktop ships copies of some MCP servers inside the app itself. A built-in server runs as a local process on the user's device and calls the data provider from the device, so no data or tokens pass through Anthropic's infrastructure. There is nothing to install or host on your side: a [`managedMcpServers`](https://claude.com/docs/third-party/claude-desktop/configuration#managedmcpservers) entry activates the server, and the app runs it.
66 
77A built-in entry names the bundled server in a `server` field, in place of the `url`, `transport`, or `command` fields that remote and stdio entries use. An entry that mixes `server` with any remote or stdio field is rejected.
88 
from line 25
2525All built-in servers share the same model:
2626 
2727* **Managed configuration only.** A built-in server activates only from a `managedMcpServers` entry. Users cannot add one themselves and cannot remove one you deploy.
28* **Local execution.** The server runs on the user's device, and its network calls go directly to the data provider (Microsoft, your search provider, or GitHub). No Anthropic host is in the data path.
28* **Local execution.** The server runs on the user's device, and its network calls go to the data provider (Microsoft, your search provider, or GitHub). No Anthropic host is in the data path.
2929* **Sign-in on the device.** Where the server needs user credentials (Microsoft 365 and GitHub), the user signs in from the app, and tokens are stored encrypted on the device. **Disconnect** in connector settings signs the user out. The web search server has no user sign-in; you supply the search key in the entry.
3030* **Tool approvals.** Each entry accepts the same per-tool [`toolPolicy`](https://claude.com/docs/third-party/claude-desktop/configuration#managedmcpservers) as any managed server. Without a policy, built-in write tools ask the user before each call, and a small set of irreversible actions (sending mail or merging a pull request, for example) stays at ask or stricter no matter what the policy says.
3131* **Versioned with the app.** Each built-in server requires a Claude Desktop version that includes it. On older versions, the server is missing from the **Add server** menu, **Test this connection** reports that it is not included, and a deployed entry is dropped. The fix is to upgrade Claude Desktop.

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

from line 21
2121| Project folders | For a conversation inside a project, read-only access to folders added to the project in Claude Desktop. Claude can list and read files in them. See [Project folders in Chat](#project-folders-in-chat). |
2222| Scratch directory | A per-conversation working directory where Claude can create and edit files (documents, data files, HTML artifacts) and offer them to the user for download or preview. |
2323| Managed MCP servers | The servers you provision via [`managedMcpServers`](https://claude.com/docs/third-party/claude-desktop/configuration#managedmcpservers) are available in Chat with the same approval model as Cowork sessions: a tool's `toolPolicy` of `"allow"` pre-approves it, `"blocked"` blocks it, and `"ask"` requires user approval on every call. A tool with no policy asks the user, who can allow it once or grant standing approval, as in Cowork. |
24| Remote MCP servers in plugins | In a conversation that loads the plugin, Claude can use a remote MCP server that a marketplace plugin or a user-added plugin bundles if the server needs no sign-in, but not if it requires OAuth sign-in. To make a server that requires OAuth sign-in available in Chat, see [Remote MCP servers in plugins](https://claude.com/docs/third-party/claude-desktop/extensions.md#remote-mcp-servers-in-plugins). To limit these servers, see [Controlling user extensions](https://claude.com/docs/third-party/claude-desktop/extensions.md#controlling-user-extensions). |
24| Remote MCP servers in plugins | In a conversation that loads the plugin, Claude can use a remote MCP server that a marketplace plugin or a user-added plugin bundles. If the server requires OAuth sign-in, the user signs in first. See [Remote MCP servers in plugins](https://claude.com/docs/third-party/claude-desktop/extensions.md#remote-mcp-servers-in-plugins). |
2525| Clarifying questions | Claude can present multiple-choice questions to the user (the `AskUserQuestion` tool). |
2626| Plugin skills and hooks | Skills from the plugins you provision through [organization plugins](https://claude.com/docs/third-party/claude-desktop/extensions.md#organization-plugins-admin) or [plugin marketplaces](https://claude.com/docs/third-party/claude-desktop/extensions.md#plugin-marketplaces-admin) are available in Chat, including as slash commands. Hooks from those plugins also run in Chat conversations as they do in Cowork sessions, as described under [Plugin hooks](https://claude.com/docs/third-party/claude-desktop/extensions.md#plugin-hooks). Plugin sub-agents do not run in Chat, and a skill that runs scripts needs [advanced file analysis](#advanced-file-analysis). Plugin skills require Claude Desktop 1.44121.4 or later, and plugin hooks run in Chat on Claude Desktop 1.52386.0 or later. |
2727| Code execution | Off by default. When you enable [advanced file analysis](#advanced-file-analysis), Claude can additionally run code in a local sandbox against attached files and, inside a project, files in the project's folders. See [Sandbox network access](#sandbox-network-access). |

third-party/claude-desktop/configuration-format Changed · +1 / -1 lines

from line 83
8383 
8484### The Linux configuration file
8585 
86The managed source on Linux is a single JSON file, `/etc/claude-desktop/managed-settings.json`, with keys at the top level exactly as named in the [reference](https://claude.com/docs/third-party/claude-desktop/configuration.md), with no wrapper object and no nesting:
86The managed source on Linux is a single JSON file, `/etc/claude-desktop/managed-settings.json`. To use a configuration built in the [in-app configuration window](https://claude.com/docs/third-party/claude-desktop/in-app-configuration.md#apply-locally-or-export-for-a-fleet), click **Export**, choose **JSON config**, and save that file at this path without editing it. Earlier versions of Claude Desktop reject the exported file, so update the device first. To write the file yourself, put keys at the top level exactly as named in the [reference](https://claude.com/docs/third-party/claude-desktop/configuration.md), with no wrapper object and no nesting:
8787 
8888```json theme={null}
8989{

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

from line 48
4848 
4949> [!NOTE]
5050>
51> When a managed (MDM-delivered) configuration is already present on the device, the configuration window opens read-only: it shows what the admin deployed, marks the configuration as organization-managed, and directs users to their IT administrator. To author a new configuration, use a device without a managed profile, or temporarily remove the profile. Profiles that set [only app-behavior keys](#update-keys-and-managed-precedence) (the update, configuration re-check, relaunch window, and network proxy keys) leave the window editable.
51> When a managed (MDM-delivered) configuration is already present on the device, the configuration window opens read-only: it shows what the admin deployed, marks the configuration as organization-managed, and directs users to their IT administrator. To author a new configuration, use a device without a managed profile, or temporarily remove the profile. Profiles that set [only app-behavior keys](#update-keys-and-managed-precedence) leave the window editable.
5252 
5353## 2. Export the profile
5454 
from line 155
155155* The update keys `disableAutoUpdates`, `autoUpdaterEnforcementHours`, `installedUpdateEnforcementEnabled`, `installedUpdateEnforcementHours`, `updateViaUpdatesHost`, and [`releaseChannel`](https://claude.com/docs/third-party/claude-desktop/configuration#releasechannel).
156156* The configuration lifecycle keys [`relaunchEnforcementHours`](https://claude.com/docs/third-party/claude-desktop/configuration#relaunchenforcementhours) and [`configRecheckIntervalMinutes`](https://claude.com/docs/third-party/claude-desktop/configuration#configrecheckintervalminutes), which MDM can set from version 1.46388.1.
157157* The network proxy keys `egressProxyUrl` and `egressProxyPacUrl`. See [Network proxy](https://claude.com/docs/third-party/claude-desktop/network-proxy.md#pin-a-proxy-from-managed-configuration).
158* The Code session keys [`disableWslSessions`](https://claude.com/docs/third-party/claude-desktop/configuration#disablewslsessions) and [`claudeCodeProcessWrapperEnabled`](https://claude.com/docs/third-party/claude-desktop/configuration#claudecodeprocesswrapperenabled). See [Start Code sessions through a corporate launcher](https://claude.com/docs/third-party/claude-desktop/code.md#start-code-sessions-through-a-corporate-launcher).
158159 
159160When a managed source sets only keys from this group (any of them), the device keeps its locally authored configuration and the configuration window stays editable. The group is still enforced as a unit: every key in it is resolved from the managed source alone, so a locally set or bootstrap-served value for any of them is ignored even if the profile sets only one. A profile that sets the update keys but not `relaunchEnforcementHours` or `configRecheckIntervalMinutes` therefore runs their defaults (24 hours and 10 minutes) on those devices, so set them in the same profile when you want other values.
160161 

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

from line 213
213213 
214214When the remote engine's credential expires during a turn, Claude Desktop obtains a new one on the device, by re-running a [credential helper](https://claude.com/docs/third-party/claude-desktop/credential-helper.md) or using a sign-in's refresh token, and sends it over the SSH connection. When the user signs out of the inference provider in the app, Claude Desktop ends the remote engine.
215215 
216Where the host's [launcher](https://claude.com/docs/third-party/claude-desktop/code.md#start-code-sessions-through-a-corporate-launcher) starts Claude Code, Claude Desktop passes no inference credential and refuses no credential kind. Claude Code uses the credential that the launcher or the SSH account's own environment sets, or, on Google Cloud's Agent Platform, the account's application default credentials.
217 
216218The host needs its own network route to the inference endpoint and must trust the endpoint's certificate. Claude Desktop passes the endpoint address to the remote engine but not the device's proxy settings, CA certificates, or the user's shell variables such as `AWS_*` or `GOOGLE_*`. A gateway at `localhost` on the device is refused for remote sessions, because the host cannot reach it.
217219 
218220## Managed configuration on the remote host

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

from line 38
3838 
3939### Non-essential services
4040 
41Cosmetic third-party fetches: favicons for connectors shown in the UI, the sandboxed iframe that renders interactive artifact previews, and the sandboxed iframes that render [MCP Apps](https://claude.com/docs/connectors/building/mcp-apps/getting-started.md), the interactive widgets connectors can display. Disabling these degrades the UI (generic icons, static artifact previews, and connector tool results shown as text instead of widgets) but doesn't affect functionality. On Linux, `disableNonessentialServices` also applies to the spellcheck dictionary, which the built-in spellchecker downloads from the hosts listed under [Required egress paths](#required-egress-paths). Without the dictionary, misspelled words aren't underlined.
41Cosmetic third-party fetches: favicons for connectors shown in the UI, the sandboxed iframe that renders interactive artifact previews, and the sandboxed iframes that render [MCP Apps](https://claude.com/docs/connectors/building/mcp-apps/getting-started.md), the interactive widgets connectors can display. Disabling these degrades the UI (generic icons, static artifact previews, and an error in place of each connector widget). On Linux, `disableNonessentialServices` also applies to the spellcheck dictionary, which the built-in spellchecker downloads from the hosts listed under [Required egress paths](#required-egress-paths). Without the dictionary, misspelled words aren't underlined.
4242 
4343| Setting | Default | Effect when `true` |
4444| - | - | - |
45| `disableNonessentialServices` | `false` | Favicon, artifact-preview, and MCP App widget fetches are blocked. Connectors that return MCP Apps show the tool's text result instead of the widget. On Linux, the setting also applies to the spellcheck dictionary download. Without the dictionary, misspelled words aren't underlined. |
45| `disableNonessentialServices` | `false` | Favicon, artifact-preview, and MCP App widget fetches are blocked. In place of an MCP App widget, the conversation shows "There was a problem displaying content from" and the connector's name. On Linux, the setting also applies to the spellcheck dictionary download. Without the dictionary, misspelled words aren't underlined. |
4646 
4747### Auto-updates
4848 
Feedback