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. Configuration
    1. Required keys (Ask Sage / Gateway provider)
    2. Models — picker and 1M context window
  4. Disabling all telemetry to Anthropic
  5. Recommended security profile (Ask Sage)
  6. Verification
  7. Windows (MSIX) — End-to-End Setup
    1. Step 1 — Install Claude Desktop
    2. Step 2 — Initialize sandboxed folders
    3. Step 3 — Generate a deployment UUID
    4. Step 4 — Create the config file
    5. Step 5 — Validate the file
    6. Step 6 — Launch and verify
    7. Step 7 — Test inference
    8. Windows path cheat sheet
    9. Windows quick command reference
  8. Why Windows is harder than Mac
  9. Troubleshooting
  10. Reference

Prerequisites

Prerequisites

Before you begin, ensure you have the following:

Ask Sage Account

Sign up or log in

Ask Sage API Key

Valid user API Key from Ask Sage

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).
inferenceGatewayApiKey your Ask Sage user API key Authenticates the request to Ask Sage. Generate this in your Ask Sage account.
inferenceGatewayAuthScheme bearer Required. 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 a UUID you generate Identifies your fleet to Anthropic for telemetry attribution. Set this once per organization. If telemetry is disabled (recommended below) this is cosmetic, but generate one anyway so support cases can be tied back to your deployment.
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 (Claude Opus 4.7 and 4.6 on Ask Sage)

Enabling Opus 4.7 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-4-7", "supports1m": true },
  { "name": "claude-opus-4-6", "supports1m": true },
  { "name": "claude-sonnet-4-6" },
  { "name": "claude-sonnet-4-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 you've confirmed support 1M context. On Ask Sage today, that's Claude Opus 4.7 and Claude Opus 4.6 (both forward the context-1m-2025-08-07 Anthropic beta header). Setting it on a model that doesn't support 1M will fail mid-session once the conversation grows past the model's actual limit.
Plist/registry encoding: The inferenceModels value in your MDM/registry profile must be a single string containing the JSON above — not a native plist <array>. In a .mobileconfig, that means <string>[...]</string> with the entire JSON inside.

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 \
  -H "x-api-key: your-asksage-api-key-here" \
  | jq

You should see a JSON response with a data array containing claude-opus-4-7, claude-sonnet-4-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 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 4.7, you'll see a separate Opus 4.7 (1M context) entry.

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


Windows (MSIX) — End-to-End Setup

Step 1 — Install Claude Desktop

Install & find your publisher ID

Download the installer from claude.com/download. It's a .msix package — double-click to install.

Verify installation and capture your publisher ID:

dir "C:\Program Files\WindowsApps" | findstr /i claude

Expected output (example): Claude_1.3883.0.0_x64__pzs8sxrjxfjjc. The last segment (pzs8sxrjxfjjc) is your publisher ID. Substitute it wherever you see pzs8sxrjxfjjc below — yours may differ.

Step 2 — Initialize sandboxed folders

First launch

REM Launch once to create sandboxed filesystem (don't sign in)
start shell:AppsFolder\Claude_pzs8sxrjxfjjc!Claude

REM Wait 15-20 seconds, then kill all Claude processes
taskkill /F /IM claude.exe /T

MSIX apps leave multiple child processes running — closing the window isn't enough. Multiple "SUCCESS" lines from taskkill is normal.

Step 3 — Generate a deployment UUID

UUID generation

cmd.exe has no built-in UUID generator. Use any of these:

REM Option A — Git for Windows:
"C:\Program Files\Git\usr\bin\uuidgen.exe"

REM Option B — PowerShell one-liner:
powershell -Command "[guid]::NewGuid().ToString()"

REM Option C — visit uuidgenerator.net and copy the output
Don't skip this. Without a real UUID, your deployment gets pooled with every other unconfigured install worldwide under the shared placeholder 00000000-0000-4000-8000-000000000001, and Anthropic can't identify your org on support tickets.

Step 4 — Create the config file

Config file at the correct MSIX path

mkdir "%LOCALAPPDATA%\Packages\Claude_pzs8sxrjxfjjc\LocalCache\Roaming\Claude-3p" 2>nul
notepad "%LOCALAPPDATA%\Packages\Claude_pzs8sxrjxfjjc\LocalCache\Roaming\Claude-3p\claude_desktop_config.json"

When Notepad asks to create a new file, click Yes. Paste the JSON below, replacing the two placeholders:

{
  "deploymentMode": "3p",
  "enterpriseConfig": {
    "inferenceProvider": "gateway",
    "inferenceGatewayBaseUrl": "https://api.asksage.ai/server/anthropic",
    "inferenceGatewayApiKey": "YOUR_ASKSAGE_TOKEN_HERE",
    "inferenceGatewayAuthScheme": "bearer",
    "deploymentOrganizationUuid": "REPLACE-WITH-GENERATED-UUID",
    "disableDeploymentModeChooser": true,
    "disableEssentialTelemetry": true,
    "disableNonessentialTelemetry": true,
    "disableNonessentialServices": true
  },
  "_cfprefsMigrated": true,
  "preferences": {
    "coworkScheduledTasksEnabled": true,
    "ccdScheduledTasksEnabled": false,
    "coworkWebSearchEnabled": true
  }
}

Replace YOUR_ASKSAGE_TOKEN_HERE with your Ask Sage API key and REPLACE-WITH-GENERATED-UUID with the UUID from Step 3. Save with Ctrl+S.

Two Notepad gotchas:
  1. If Notepad opens a Save As dialog, set Save as type to All Files — otherwise it appends .txt and creates claude_desktop_config.json.txt, which the app ignores.
  2. Encoding should be UTF-8 (default on Windows 11), not "UTF-8 with BOM."
Config notes:
  • Models auto-discover. inferenceModels is intentionally omitted — the Cowork Gateway spec auto-discovers via the gateway's GET /v1/models endpoint, which Ask Sage implements. To pin the picker to a specific subset or enable 1M context variants, add an inferenceModels key inside enterpriseConfig — see the Models section above.
  • disableDeploymentModeChooser: true boots directly into 3P mode. Remove this key if you want the option to fall back to Anthropic sign-in.
  • All three telemetry keys disabled (disableEssentialTelemetry, disableNonessentialTelemetry, disableNonessentialServices all true). Appropriate for gov/regulated environments. Tradeoff: Anthropic has no crash data on their side — your team ships logs manually on support tickets.

Step 5 — Validate the file

Confirm file name and contents

REM Confirm file has no .txt extension
dir "%LOCALAPPDATA%\Packages\Claude_pzs8sxrjxfjjc\LocalCache\Roaming\Claude-3p"

REM If you see .json.txt, fix it:
ren "%LOCALAPPDATA%\Packages\Claude_pzs8sxrjxfjjc\LocalCache\Roaming\Claude-3p\claude_desktop_config.json.txt" "claude_desktop_config.json"

REM View contents
type "%LOCALAPPDATA%\Packages\Claude_pzs8sxrjxfjjc\LocalCache\Roaming\Claude-3p\claude_desktop_config.json"

Step 6 — Launch and verify

Launch Claude Desktop fresh

REM Kill any zombie processes first
taskkill /F /IM claude.exe /T

REM Launch fresh
start shell:AppsFolder\Claude_pzs8sxrjxfjjc!Claude

Visual check: Claude should open directly into a chat interface with a model picker — not a claude.ai sign-in screen. The picker should show the models Ask Sage auto-discovered.

Log check: The active 3P log is at:

%LOCALAPPDATA%\Packages\Claude_pzs8sxrjxfjjc\LocalCache\Roaming\Claude-3p\logs\main.log

(This is different from the standard-mode log at ...\Claude\logs\main.log.)

REM Search log for config / gateway issues
findstr /i "enterprise gateway inferenceProvider Failed" "%LOCALAPPDATA%\Packages\Claude_pzs8sxrjxfjjc\LocalCache\Roaming\Claude-3p\logs\main.log"

REM Search for errors and warnings
findstr /i "[error] [warn]" "%LOCALAPPDATA%\Packages\Claude_pzs8sxrjxfjjc\LocalCache\Roaming\Claude-3p\logs\main.log"

What a healthy 3P session looks like in the log

  • [Lifecycle] Session local_<id>: initializing → running
  • [LocalAgentModeSessionManager] mcpServerStatus returned N servers
  • [CycleHealth] Healthy cycle: with cycle_health: 'healthy'
  • model: 'claude-sonnet-4-5-20250929' (or whichever model you selected)

Bad signs and fixes

Log showsMeansFix
Failed to parse enterprise config "inferenceGatewayBaseUrl": invalid_stringURL validation rejectedRemove trailing slash from the base URL
Empty or missing model pickerGateway GET /v1/models discovery failedVerify Ask Sage token, or pin models explicitly with inferenceModels
claude.ai/login and User logged out during IPC waitConfig not read — app is in standard modeVerify config is at the sandboxed path, JSON is valid, all processes killed before launch
Not main instance, returning early from app readyZombie processes intercepted launchtaskkill /F /IM claude.exe /T + relaunch
No active account/org for marketplace operationsConfig not detectedWrong config path, invalid JSON, or zombie processes

Step 7 — Test inference

Test actual inference

Type "hi" in the chat and send. You should get a response within a few seconds.

If it hangs, verify the endpoint from cmd:

curl -N -X POST "https://api.asksage.ai/server/anthropic/v1/messages" ^
  -H "Authorization: Bearer YOUR_ASKSAGE_TOKEN" ^
  -H "Content-Type: application/json" ^
  -d "{\"model\":\"claude-sonnet-4-5-20250929\",\"max_tokens\":64,\"stream\":true,\"messages\":[{\"role\":\"user\",\"content\":\"hi\"}]}"
  • SSE frames look correct but Claude Desktop errors with $.input_tokens → historical Windows MSIX SSE parsing bug, resolved by auto-update. Check your version with dir "C:\Program Files\WindowsApps" | findstr /i claude — should be 1.3883+.
  • Single JSON blob instead of SSE → streaming isn't active for your account. Contact Ask Sage platform team.
  • HTTP 401/403 → token or endpoint issue. Re-verify your API key and base URL.

Windows path cheat sheet

Path cheat sheet

WhatPath
3P config file%LOCALAPPDATA%\Packages\Claude_<id>\LocalCache\Roaming\Claude-3p\claude_desktop_config.json
3P log file (active)%LOCALAPPDATA%\Packages\Claude_<id>\LocalCache\Roaming\Claude-3p\logs\main.log
3P session data%LOCALAPPDATA%\Packages\Claude_<id>\LocalCache\Roaming\Claude-3p\local-agent-mode-sessions\
Standard-mode log (fallback)%LOCALAPPDATA%\Packages\Claude_<id>\LocalCache\Roaming\Claude\logs\main.log
App install locationC:\Program Files\WindowsApps\Claude_<version>_<id>
Documented-but-wrong config path%APPDATA%\Claude-3p\claude_desktop_config.json (silently ignored on MSIX)

Windows quick command reference

Quick commands (cmd.exe)

ActionCommand
Launch Claudestart shell:AppsFolder\Claude_pzs8sxrjxfjjc!Claude
Kill all processestaskkill /F /IM claude.exe /T
Check if runningtasklist | findstr /i claude
Open config in Notepadnotepad "%LOCALAPPDATA%\Packages\Claude_pzs8sxrjxfjjc\LocalCache\Roaming\Claude-3p\claude_desktop_config.json"
Open config folderexplorer "%LOCALAPPDATA%\Packages\Claude_pzs8sxrjxfjjc\LocalCache\Roaming\Claude-3p"
Open log in Notepadnotepad "%LOCALAPPDATA%\Packages\Claude_pzs8sxrjxfjjc\LocalCache\Roaming\Claude-3p\logs\main.log"
View log (paged)type "%LOCALAPPDATA%\...\Claude-3p\logs\main.log" | more
Check versiondir "C:\Program Files\WindowsApps" | findstr /i claude

Why Windows is harder than Mac

Why Windows is harder than Mac

Anthropic's Cowork on 3P docs are written assuming a non-sandboxed install. On macOS, ~/Library/Application Support/Claude-3p/ is the real filesystem path and the docs work as written.

On Windows, the .msix installer packages the app as a Microsoft Store-style MSIX bundle, which sandboxes all filesystem writes into %LOCALAPPDATA%\Packages\Claude_<publisher-id>\LocalCache\. Everything the docs say about %APPDATA%\Claude-3p\ silently redirects through this container — meaning config written to the documented path is never read, and logs written during a 3P session never appear in the documented log location.

The redirected paths are:

  • Config: %APPDATA%\Claude-3p\%LOCALAPPDATA%\Packages\Claude_<id>\LocalCache\Roaming\Claude-3p\
  • Logs: %APPDATA%\Claude\logs\...\LocalCache\Roaming\Claude-3p\logs\ (in 3P mode) or ...\Roaming\Claude\logs\ (in standard mode)

Use the sandboxed paths and everything else in the Anthropic docs applies as written.


Troubleshooting

Common issues

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
  • inferenceGatewayAuthScheme is set to x-api-key — without this, Cowork's auto-detect sends the key as a Bearer token and the model-list call returns 401
  • Your Ask Sage instance has the /v1/models endpoint deployed (introduced via Server PR #540 — check with the curl from Verification above)

Opus 4.7 (1M) variant doesn't appear

The name field in inferenceModels must exactly match the ID returned by /v1/models. If discovery returns claude-opus-4-7 but you set supports1m on an alias like opus-47, the variant won't appear.

Configuration changes aren't taking effect

Cowork on 3P reads configuration once 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.

"Array key is invalid"

You wrote inferenceModels or coworkEgressAllowedHosts as a native plist <array> or registry multi-string. Both must be a single string containing JSON. Wrap the JSON in <string>...</string> (macOS) or store as a REG_SZ single string (Windows).


Reference


Back to top

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