Claude Desktop now runs with Context Mode: saving, memory and skills in the app you use
Thanks to the Claude Desktop team at Anthropic for a third-party inference setting that lets you choose where the app sends its requests, and thanks to the Context Mode community. Starting today, Claude Desktop connects to Context Mode with one command. You keep the app and your model. On a Mac, sign in to Claude Code first: the app uses that login. Every request then gets Saving, Memory, Skills, Instructions and Recall, and the console shows these turns as Claude Desktop. Turn on the app's own setting first, then run the Context Mode command.
TL;DR
- The native way first: in Claude Desktop, Help → Troubleshooting → Enable Developer Mode, then Developer → Configure Third-Party Inference… (Anthropic's docs).
- The shortcut:
npx @context-mode/cli setup --agent claude-desktop. It writes an entry namedcontextmodein that same window and switches the app to third-party mode. - Quit with Cmd+Q and open the app again. Closing the window is not enough.
- Check it:
npx @context-mode/cli doctor, then ask Claude anything. Your request shows on the console. - Undo:
npx @context-mode/cli disconnect --agent claude-desktop. - macOS: these steps are for a Mac. On Windows and Linux, setup stops and says what it needs; we have not verified Claude Desktop there.
- Limits: Protect is not verified on Claude Desktop yet. The Chat tab login is not verified. Session resume does not apply.
Open the Console to get your workspace, then follow the steps below.
How to connect Claude Desktop to Context Mode
This post answers one question: how do you connect Claude Desktop to Context Mode? Pick a step to see the exact command and what it prints. These steps are for macOS.
# Get the app: claude.com/download
# Then, in Claude Desktop:
Help → Troubleshooting → Enable Developer Mode
Developer → Configure Third-Party Inference…
→ Connection → Apply ChangesDownload the app from claude.com/download. Then use Anthropic's own window, from the in-app configuration docs. The shortcut fills in this same window for you.
$ npx @context-mode/cli login
# opens the browser: sign in once
# then it offers the app pickerSign-in gives this terminal a device key. If you pick Claude Desktop in the picker, it runs the same setup as the next step. You need only one of the two.
$ npx @context-mode/cli setup --agent claude-desktop Claude Desktop (third-party gateway mode): ~/Library/Application Support/Claude-3p/configLibrary/<id>.json set inferenceProvider set inferenceGatewayBaseUrl = https://gateway.contextmode.ai set inferenceGatewayAuthScheme set inferenceCredentialHelper set inferenceCredentialHelperTtlSec set inferenceCustomHeaders (x-cm-device-key) set inferenceModels apply the "contextmode" configuration set deploymentMode = 3p in …/Claude-3p/claude_desktop_config.json helper ~/.context-mode/claude-desktop-cred.sh (prints your Claude Code login token from the keychain) Done. Quit Claude Desktop fully (Cmd+Q) and open it again: it reads this configuration at launch. See or change them in the app: Help → Troubleshooting → Enable Developer Mode, then Developer → Configure Third-Party Inference….
It names every key it sets and never prints a key or token. Add --dry-run to see the list with nothing written.
# not the red button: quit the app Cmd+Q # then open Claude Desktop again
Claude Desktop reads this configuration at launch. A closed window keeps the old route.
$ npx @context-mode/cli doctor
Gateway: https://gateway.contextmode.ai
Console: https://console.contextmode.ai
Reachable ok
Device key ok
Claude Desktop ok (…/configLibrary/<id>.json)Then ask Claude anything in the Code tab. Your request shows on the console within a minute, named Claude Desktop.
1. Turn on the app's own setting
Claude Desktop has a built-in window for a third-party gateway. This is Anthropic's own way, and it is where you can see and change the entry later:
- Help → Troubleshooting → Enable Developer Mode.
- Developer → Configure Third-Party Inference… → Connection → Apply Changes.
The full steps are in Anthropic's in-app configuration docs.
2. Run the Context Mode command
npx @context-mode/cli setup --agent claude-desktop
It needs Node 20.12 or later. If this terminal is not signed in yet, run npx @context-mode/cli login first. It signs you in and stores a device key (cmdk_…) in ~/.context-mode/credentials.json with mode 0600.
Setup then writes the same entry you would make by hand, named contextmode, applies it, and switches the app to third-party mode. After the write it names the keys it set and the window where you can check them: Developer → Configure Third-Party Inference….
- It is for macOS. On Windows and Linux it writes nothing and says what it needs. We have not verified Claude Desktop there.
- It never writes or prints an API key. On a Mac, the entry reads the Claude login that Claude Code keeps in your keychain, so sign in to Claude Code first.
- It keeps a record of what it did, so
disconnectundoes exactly that. An entry you had applied before comes back. - It writes nothing if a config file does not parse.
- Run it again with nothing to change, and it writes nothing.
--dry-runshows the changes and writes nothing.--checkwrites nothing and tells you if the app is set up.
The gateway removes the device key before a request goes to Anthropic.
3. Quit with Cmd+Q and open it again
Claude Desktop reads this configuration only at launch. Close the window, and the app keeps running on the old route. Quit it fully with Cmd+Q, then open it again. On Windows or Linux, quit the app fully, not only the window.
4. Check it worked
npx @context-mode/cli status # who is signed in, and each agent's setup
npx @context-mode/cli doctor # check the config, the gateway and the device key
Then ask Claude anything. Your request shows on the console within a minute, named Claude Desktop.
Does Claude Desktop work with a gateway?
Yes. Claude Desktop has a third-party inference mode, and Anthropic documents it. In that mode the app sends its model requests to the address you set. Context Mode sits there, between the app and Anthropic. Its Code and Cowork tabs send the same requests as Claude Code, so they get the same features. Which login the Chat tab uses through the gateway is not verified yet.
What you get in Claude Desktop
Pick a feature to see one example in Claude Desktop. Each one works on every request the app sends through the gateway. We measured them on Claude Code, not on Claude Desktop, so this post quotes no number.
You, in the Code tab: "run the tests and fix what fails" # the full test log goes to your archive # the model reads the failing test, not every line
Large tool output (logs, fetched pages, big files) stays out of the model's context. Works on every request; measured on Claude Code.
Monday, in the Code tab: "We deploy to Render now, not Hetzner." Thursday, a new conversation: "Where do we deploy?" Render. It was Hetzner before.
Rules, decisions and preferences come back in later sessions, so you do not repeat yourself. Code and Cowork turns are stored as Claude Code turns. The Chat tab is not verified.
You, in Claude Desktop: "write the release notes for this sprint" # your imported release-notes skill loads for this turn
Import skills once, for example from GitHub. They run from the gateway, so there is nothing to install on each machine.
// Console: Settings → Instructions
Keep answers short. No wall of text.
Never touch code or technical terms.Write your rules once. Every Claude Desktop request carries them, on every machine. What you ask in the message comes first.
You, late in a long session: "what did we decide about the quota check this morning?" # the agent reads the decision back from the archive
Long history is archived, not lost. The agent asks for older work back when it needs it. Works on every request; measured on Claude Code.
$ git push origin main
# Claude Code, Codex: blocked by your rule
# Claude Desktop: not verified yetProtect is enforced on Claude Code and Codex. On Claude Desktop it is not verified yet, so do not count on it to stop a command.
| Feature | In Claude Desktop | Measured on Claude Desktop |
|---|---|---|
| Saving | Yes, every request | No (measured on Claude Code) |
| Memory | Yes, stored as Claude Code turns; Chat tab not verified | No |
| Skills | Yes, every request | No |
| Instructions | Yes, every request | No |
| Recall and Search | Yes, every request | No |
| Active Context | Yes, every request | No |
| Thinking in Code | Yes, every request | No |
| Protect | Not verified yet | No |
| Session resume | No | Not applicable |
| "⏺ contextmode" line | Not verified in the app | No |
| Console name | Claude Desktop | Not applicable |
Memory for Claude Desktop
Each new conversation in Claude Desktop starts fresh. With Context Mode, what you told it last week comes back: "we deploy to Render", "use pnpm", "no default exports". The Code and Cowork tabs are Claude Code on the wire, so Memory stores their turns as Claude Code turns. When a value changes, the old one is closed, not deleted. Read how Memory works.
Skills and Instructions for Claude Desktop
Import a skill once, for example from GitHub. When a request fits it, its instructions load on their own, in Claude Desktop and in your other connected apps. Instructions are the rules you write yourself in the console: write them once and every request carries them. Read about Skills and Instructions.
Say this plainly
- After setup, quit with Cmd+Q, not only close the window. The app reads its configuration at launch.
- The Chat tab: which login it uses through the gateway is not verified yet. The Code and Cowork tabs send the same requests as Claude Code.
- Protect is not verified on Claude Desktop yet. It is enforced on Claude Code and Codex.
- The "⏺ contextmode" line is not verified in the app. Check the console instead.
- Session resume does not apply to Claude Desktop.
- Numbers: our benchmarks ran on Claude Code. We do not quote them for Claude Desktop.
How to undo it
npx @context-mode/cli disconnect --agent claude-desktop
It removes the contextmode entry, applies the entry you had before, and puts the app back on its own sign-in. Quit with Cmd+Q and open it again.
Start now
Turn on the app's setting, run one command, quit with Cmd+Q. Open the Console to see your workspace.
npx @context-mode/cli setup --agent claude-desktop
- Console: console.contextmode.ai (start free)
- CLI:
npx @context-mode/cli - Docs: Quick start and the CLI
One command and one picker connect Claude Code, Claude Desktop, Codex, Codex Desktop, T3 Code, OpenCode and Pi: see all of them. Each has its own post, with its makers' install first: the ChatGPT desktop app, Pi and T3 Code. Context Mode is under the Elastic License 2.0 (ELv2).