Claude Cowork Integration

Claude Cowork Integration

Bring Ask Sage's AI models into the Claude Desktop app with Anthropic's Cowork

Claude Cowork

Table of Contents
  1. Prerequisites
  2. Quick Start
  3. Sign in with Ask Sage (recommended)
  4. Configuration
    1. Required keys (Ask Sage / Gateway provider)
    2. Models — picker and 1M context window
  5. Disabling all telemetry to Anthropic
  6. Recommended security profile (Ask Sage)
  7. Verification
  8. Deploying to a fleet (Windows, macOS, Linux)
    1. Where configuration lives
    2. Single-machine setup (pilot or evaluation)
    3. Fleet rollout via MDM
    4. Air-gapped and offline installs
    5. Endpoint security software (EDR / binary authorization)
    6. Verifying a deployed device
  9. Troubleshooting
  10. Reference

Instance-Specific Base URL: The endpoints and configuration shown reflect the instance at chat.asksage.ai. The api. prefix and path suffix stay the same across deployments — only the instance segment in the middle changes based on which Ask Sage instance you are logging into. Always use the instance approved by your organization and applicable regulatory requirements, and match the base URL in your configuration to the instance you authenticate against.


Prerequisites

Prerequisites

Before you begin, ensure you have the following:

Ask Sage Account

Sign up or log in

A Way to Authenticate

Recommended: nothing extra — users sign in interactively with their existing Ask Sage account.
Alternative: a valid Ask Sage user API key

Claude Desktop

The Claude desktop app installed on macOS or Windows

3P Mode Available

Your Claude Desktop build must support Cowork on 3P (see installation)


Quick Start



Configuration

Required keys (Ask Sage / Gateway provider)

Connection

SettingValueWhy
inferenceProvider gateway Selects the Gateway backend — what Ask Sage is, in Cowork's terms.
inferenceGatewayBaseUrl https://api.asksage.ai/server/anthropic Ask Sage's Anthropic-compatible endpoint. Must be HTTPS. Use the equivalent for your Ask Sage instance (e.g. https://api.dev.asksage.ai/server/anthropic for dev).
inferenceCredentialKind interactive Recommended. Selects interactive SSO sign-in. Omit this (and supply a key below) only if you specifically want static-key auth.
inferenceGatewayOidc (leave unset) Must be absent for interactive sign-in against Ask Sage. Its presence delegates authentication to a third-party IdP instead.
inferenceGatewayApiKey your Ask Sage user API key API-key mode only. Authenticates the request to Ask Sage. Generate this in your Ask Sage account. Leave empty when using interactive.
inferenceGatewayAuthScheme bearer API-key mode only. Ask Sage keys do not start with sk-, so Cowork's auto scheme would default to Authorization: Bearer — which happens to be correct. Setting bearer explicitly avoids any ambiguity.
deploymentOrganizationUuid optional — a UUID you generate Not required. Its only function is attributing essential telemetry to your organization so Anthropic support can find issues you report. If you disable essential telemetry (recommended below), it does nothing. Set it once per organization if you are leaving telemetry on.
disableDeploymentModeChooser true Skips the sign-in mode chooser at first launch and boots directly into 3P mode. Stops users from accidentally signing into a personal Anthropic account.

Models — picker and 1M context window

Models

Cowork on 3P automatically discovers available Ask Sage models by calling GET /server/anthropic/v1/models against your gateway base URL. You do not need to configure inferenceModels just to populate the picker — it fills in automatically.

You only need to set inferenceModels when you want to:

  • Restrict the picker to a curated subset of the available models
  • Pick which model is the default (the first entry wins)
  • Surface a 1M-token context window variant of a model that supports it

The model IDs Cowork expects are the public, Anthropic-style IDs that GET /server/anthropic/v1/models returns — not Ask Sage's internal model names. The current set is:

Model IDDisplay name1M context
claude-opus-5Claude Opus 5Yes
claude-opus-4-8Claude Opus 4.8Yes
claude-opus-4-7Claude Opus 4.7Yes
claude-opus-4-6Claude Opus 4.6Yes
claude-sonnet-5Claude Sonnet 5No
claude-sonnet-4-6Claude Sonnet 4.6Yes
claude-opus-4-5Claude Opus 4.5No
claude-sonnet-4-5Claude Sonnet 4.5Yes
claude-fable-5-1Claude Fable 5.1Yes
claude-sonnet-4-5-vertexClaude Sonnet 4.5 (Vertex)Yes
claude-haiku-4-5Claude Haiku 4.5No
Your instance may show fewer. This list is filtered by the models actually activated on your Ask Sage deployment and by any administrator model restrictions, so a government or air-gapped instance will legitimately return a shorter list. Treat the live /v1/models response as authoritative for your environment, not this table.

Enabling Opus 5 with 1M context

Add an inferenceModels entry with supports1m: true to surface the 1M context variant in the picker. Order this first if you want it as the default.

[
  { "name": "claude-opus-5", "supports1m": true },
  { "name": "claude-opus-4-8", "supports1m": true },
  { "name": "claude-sonnet-4-6", "supports1m": true },
  { "name": "claude-sonnet-5" },
  { "name": "claude-haiku-4-5" }
]
About supports1m: This is a capability assertion you make about your deployment — Cowork does not probe Ask Sage to verify it. Only set supports1m: true on models that actually support it. Ask Sage enforces this server-side too: the context-1m-2025-08-07 beta header is stripped for any model not on the 1M allowlist, so asserting it on, say, claude-sonnet-5 or claude-haiku-4-5 does not silently grant a larger window — the session fails once the conversation grows past that model's real limit. The models where it is valid are marked Yes in the table above.
Plist/registry encoding: The safest form for inferenceModels is a single string containing the JSON above — in a .mobileconfig, <string>[...]</string> with the entire JSON inside. macOS also accepts a native <array> of <dict> entries and reads it as the same JSON, and on Linux native JSON is the normal form. On Windows this is not optional: the value must be a REG_SZ containing JSON.

Disabling all telemetry to Anthropic



Verification

Verifying the setup

After saving the configuration and restarting Claude Desktop, run the following checks.

1. Confirm the model list endpoint is reachable

curl -s https://api.asksage.ai/server/anthropic/v1/models | jq
No credential needed — and that is the point. This endpoint is unauthenticated, so it tells you the host is reachable and which models the deployment serves, but it proves nothing about your credential. Do not pass a key here: it puts the key in your shell history for no benefit, and users who signed in interactively do not have one to pass. To test a credential, use the check below instead.

You should see a JSON response with a data array containing claude-opus-5, claude-opus-4-8, claude-sonnet-5, etc. If you get a 404, you're hitting an Ask Sage instance that hasn't been updated with the model-list endpoint yet — let support know.

2. Confirm interactive sign-in is available

Only needed if you configured inferenceCredentialKind: interactive:

curl -s https://api.asksage.ai/server/anthropic/.well-known/oauth-authorization-server | jq

The issuer must equal your gateway base URL (https://api.asksage.ai/server/anthropic) — not the /.well-known/… URL you requested — and grant_types_supported must include urn:ietf:params:oauth:grant-type:device_code. This endpoint needs no authentication.

3. Test an API key, if you are using one

Skip this if you configured interactive sign-in — there is no key to test. The only way to verify a key is to make a real inference call:

curl -s -X POST https://api.asksage.ai/server/anthropic/v1/messages \
  -H "Content-Type: application/json" \
  -H "x-api-key: $ASKSAGE_API_KEY" \
  -d '{"model":"claude-opus-5","max_tokens":16,
       "messages":[{"role":"user","content":"reply with OK"}]}'
Do not judge this by the HTTP status code. An invalid credential still returns HTTP 200, with the failure reported in the body as {"response":"Token is invalid [1]","status":400}. Read the body: a success contains the model's reply, a failure contains that error. This is also why a bad key surfaces in clients as a vague streaming error rather than an obvious 401.

Passing the key via $ASKSAGE_API_KEY rather than typing it inline keeps it out of your shell history.

4. Confirm Cowork picks up your models

Open Claude Desktop and click the model picker in the Cowork tab. You should see the models from the /v1/models response. If you set inferenceModels with supports1m: true on Opus 5, you'll see a separate Opus 5 (1M context) entry.

5. Confirm no traffic is leaving to Anthropic hosts

Run a packet capture or check your firewall logs for connections to *.sentry.io, browser-intake-us5-datadoghq.com, a-cdn.anthropic.com, a-api.anthropic.com, api.anthropic.com, or www.claudeusercontent.com. With the locked-down profile applied, the only Anthropic-domain traffic should be the one-time downloads.claude.ai fetch at session start.


Deploying to a fleet (Windows, macOS, Linux)

Where configuration lives

Read locations and precedence

PlatformSourcePathPrecedence
WindowsMachine policyHKLM\SOFTWARE\Policies\ClaudeHighest
User policyHKCU\SOFTWARE\Policies\Claude
Local (user)%LOCALAPPDATA%\Claude-3p\configLibrary\Lowest
macOSManaged (per-user)/Library/Managed Preferences/<user>/com.anthropic.claudefordesktop.plistHighest
Managed (machine)/Library/Managed Preferences/com.anthropic.claudefordesktop.plist
Local (user)~/Library/Application Support/Claude-3p/configLibrary/Lowest
LinuxManaged/etc/claude-desktop/managed-settings.jsonHighest
Local (user)~/.config/Claude-3p/configLibrary/Lowest
Windows registry rules that silently break deployments:
  • Values must sit directly under the key. The app never reads values nested in a subkey — which is how some ADMX-based and Policy CSP tooling writes them. Those values do not apply and do not count as machine policy being present.
  • The hives do not merge. When any value is present directly under HKLM\SOFTWARE\Policies\Claude — including an empty string — the app ignores HKCU entirely. Deploy the complete configuration to one hive; HKLM is recommended.
  • Use REG_SZ (REG_DWORD is also accepted for boolean and integer keys). Avoid REG_EXPAND_SZ: the app counts it as machine policy being present but cannot read its contents, so a single one under HKLM disables user policy while supplying no configuration. REG_QWORD, REG_MULTI_SZ and REG_BINARY are invisible to the app.
  • Object- and array-valued keys such as inferenceModels must be a single REG_SZ containing compact JSON — never nested subkeys. (On macOS a native <array>/<dict> is also accepted; on Windows it is not.)
Upgrading an older fleet: in releases before v1.19367.0 the app read both Windows hives and merged them key by key. Fleets that split keys across HKLM and HKCU must consolidate into one hive before updating.

Single-machine setup (pilot or evaluation)

Configure one device in the app

There is no need to hand-edit a config file. Use the in-app window:

1

Install Claude Desktop from claude.com/download.

2

Launch the app. Do not sign in or create an Anthropic account. From the macOS menu bar — or on Windows the application menu in the top-left of the login screen — go to Help → Troubleshooting → Enable Developer Mode, then Developer → Configure Third-Party Inference…

3

In the Connection section, choose Gateway, set the base URL to https://api.asksage.ai/server/anthropic, and set the credential kind to interactive.

4

Work through Workspace, Telemetry & updates, and the other sections to match the recommended security profile.

5

Click Apply Changes, confirm, then Save & Restart. The app relaunches and the sign-in screen offers the 3P option.

6

Choose Sign in with your organization and complete the device-code sign-in.

Apply Changes vs Export: Apply Changes writes the configuration to your own machine and relaunches, so you can test end to end. Export writes a deployment file and leaves your local settings untouched. The window can hold multiple named configurations (New, Duplicate, Rename) — useful for a permissive pilot profile alongside a restricted fleet profile.

Fleet rollout via MDM

Build once, export, deploy

Configuration reaches devices one of three ways: the Enterprise Admin Console (Anthropic-hosted), an MDM profile, or a bootstrap server you operate. For most Ask Sage customers — especially regulated ones that do not want devices depending on a sign-in to Anthropic — the MDM profile path is the right choice.

Build and validate the configuration on an admin workstation as above, then click Export and choose the format your tooling expects:

FormatPlatformDeploy with
.regWindowsGroup Policy, Intune (custom ADMX or script), any MDM that can write registry policy
.zip (ADMX template)WindowsSchema-only template — enter values in Intune or Group Policy directly
.mobileconfigmacOSJamf, Kandji, Mosyle, Workspace ONE, any Apple MDM
.plist (Profile Manifest)macOSSchema-only template for Jamf, ProfileCreator, and similar
Deploy the configuration before the app. Users then open Claude for the first time and land directly in the third-party deployment, with no opportunity to sign in to claude.ai by mistake.
Per-group profiles on Windows: if your MDM assignment rules deliver a profile in user context it lands in HKCU — which the app ignores whenever HKLM has any value. To vary configuration per user group on Windows, deliver every profile through user policy and keep HKLM\SOFTWARE\Policies\Claude empty, or use a bootstrap server.
Get the egress list from the app, not from a doc. The Egress section of the configuration window computes the exact firewall allowlist from your current settings and offers Copy hostnames, Download .txt, and Test connectivity. Treat it as authoritative for your build; the list above is a static reference.

Air-gapped and offline installs

Offline installer variant

Standard installs fetch the VM workspace bundle and the Claude CLI binary from downloads.claude.ai at session start — without it, Cowork sessions cannot start. For networks that cannot reach it, Anthropic publishes an offline installer with both components built in and checksum-verified. These packages are several gigabytes larger.

PlatformFormatURL
Windows (x64).msixhttps://claude.ai/api/desktop/win32/x64/offline/latest/redirect
Windows (Arm).msixhttps://claude.ai/api/desktop/win32/arm64/offline/latest/redirect
macOS (Apple silicon).dmghttps://claude.ai/api/desktop/darwin/arm64/offline/latest/redirect
macOS (Intel).dmghttps://claude.ai/api/desktop/darwin/x64/offline/latest/redirect

Pair the offline installer with disableAutoUpdates — an air-gapped app cannot reach the update feed, and you update the fleet by distributing each new offline installer through your MDM. With the offline installer and telemetry disabled, your Ask Sage endpoint is the only required egress.

404 instead of a download? If the offline build for the version the URL currently serves is not yet published, the request fails with HTTP 404 rather than falling back to an older installer. Keep the last installer you downloaded and retry later.

Endpoint security software (EDR / binary authorization)

Allowlist the Cowork agent helper by signature

If you run Santa, CrowdStrike Falcon, Microsoft Defender ASR, or AppLocker with path-based deny rules, the Cowork agent helper may be blocked. The symptom is specific: Claude Desktop opens normally and reads the managed configuration, but Cowork sessions fail to start.

Allowlist by signing identity rather than path, so the rule survives version updates:

PlatformHelper pathSignature
macOS~/Library/Application Support/Claude-3p/claude-code/<version>/claude.app/Contents/MacOS/claudeTeam ID Q6L2SF6YDW (Anthropic PBC), signing ID com.anthropic.claude-code
Windows%LOCALAPPDATA%\Claude-3p\claude-code\<version>\claude.exeAuthenticode publisher Anthropic, PBC

Verifying a deployed device

Use the diagnostic report

On any configured device, go to Help → Troubleshooting → Generate Diagnostic Report and click Export to file. Three files in the resulting .zip answer almost every deployment question:

FileTells you
managed-config.txtWhere the configuration was read from and every key the app actually applied, with secrets redacted. Anything it could not parse is listed under Parse errors.
provider-status.txtWhether the provider settings are complete and valid.
deployment-mode.txtWhether the app is running in third-party mode at all.

The report contains configuration state, application logs, and environment details — not user data or conversation content.

A misspelled key is silently ignored. The app matches managed keys by name and reports no error for one it does not recognize. On macOS, a configuration window that is still editable means no recognized key reached the app — even if your MDM shows the profile as delivered. On Windows this test does not work: even a misspelled value under HKLM\SOFTWARE\Policies\Claude counts as machine policy and locks the window, so read managed-config.txt instead.

If the app shows the standard claude.ai sign-in screen instead of Cowork, the configuration was not read. Check the application log:

PlatformLog path
Windows%LOCALAPPDATA%\Claude-3p\Logs\main.log
macOS~/Library/Logs/Claude-3p/main.log

Troubleshooting

Common issues

Start with the diagnostic reportmanaged-config.txt answers most of these directly by showing exactly which keys the app read.

Model picker is empty

Means Cowork couldn't reach GET /server/anthropic/v1/models on your Ask Sage instance. Check:

  • inferenceGatewayBaseUrl is correct (no trailing slash) and uses HTTPS
  • The credential is valid — an expired interactive session or a revoked API key both return 401. Sign out and back in, or re-issue the key.
  • In API-key mode, that inferenceGatewayAuthScheme matches how you issued the key. Ask Sage's Anthropic passthrough accepts both bearer and x-api-key; the failure mode is a mismatch, not a specific value.
  • Your Ask Sage instance actually serves /v1/models — check with the curl from Verification above. A 404 means the instance needs upgrading.

Sign-in fails: gateway SSO device init failed

The instance is not serving the OAuth discovery document, or is serving a bad one. Run the discovery curl. An HTTP 404 means the instance predates the authorization server — use an API key until it is upgraded. An HTTP 500 means the instance is running a build that predates the fix for unexpected Content-Type handling on the device endpoint.

verification_uri: must be same-origin as inferenceGatewayBaseUrl

Claude Desktop refuses to start the device flow unless the verification URI it is handed shares an origin with the gateway base URL. Ask Sage returns a redirector on the API origin for exactly this reason, so seeing this error means the server is advertising a chat. host instead. This is a server-side misconfiguration of the issuer URL — raise it with your Ask Sage administrator.

Opus 5 (1M) variant doesn't appear

The name field in inferenceModels must exactly match the ID returned by /v1/models. If discovery returns claude-opus-5 but you set supports1m on an alias like opus-5, the variant won't appear. Also confirm the model is one where 1M is actually supported — see the model table.

Configuration changes aren't taking effect

Configuration is read at launch. After any change, fully quit the app (not just close the window) and reopen it. On macOS that's +Q; on Windows, right-click the tray icon and choose Quit. Managed configuration is also re-read on a timer (configRecheckIntervalMinutes, default 10) and enforced after relaunchEnforcementHours (default 24) — so a pushed change reaches a running app eventually, but not instantly.

Claude Desktop opens fine but Cowork sessions never start

Two common causes. Either the device cannot reach downloads.claude.ai (required at session start unless you used the offline installer), or your EDR is blocking the agent helper — see Endpoint security software.

"Array key is invalid"

Most often this is a Windows registry value written as a multi-string, or an object written into nested subkeys. On Windows, inferenceModels and coworkEgressAllowedHosts must be a single REG_SZ containing JSON. On macOS both a JSON string and a native <array>/<dict> are valid, so if you see this error there, the JSON itself is malformed rather than the wrong container type.

macOS only — connection times out against a private address

If your Ask Sage instance is on a private address (an on-premises appliance, for example), macOS Local Network privacy blocks the app silently: the app reports net::ERR_CONNECTION_TIMED_OUT while curl from Terminal succeeds, because Terminal holds its own grant. Allow it under System Settings → Privacy & Security → Local Network → Claude, then quit and reopen the app — the permission is read at process start. This does not apply to a public gateway host.


Reference


Back to top

Copyright © 2026 Ask Sage Inc. All Rights Reserved. Ask Sage is a BigBear.ai company.