How to Use Claude and GPT APIs in DeepSeek Harness
One custom provider on the OpenAI protocol runs Claude Opus 5.5, Claude Sonnet 5.5 and GPT-6.1 in DeepSeek Harness, once each model has reasoning levels and a 128K output limit. The built-in DeepSeek provider sends a thinking setting Claude rejects.
On this page
- Short answer
- Why does Claude return 400 in DeepSeek Harness?
- How do I add the OmniaKey provider?
- Why does the effort setting do nothing?
- Which model does a new session start with?
- Where is the config file?
- Troubleshooting
- "requires adaptive thinking"
- 404 on every request
- An error about max_tokens
- "The current model does not support images"
- No effort levels, or the effort setting changes nothing
- It still fails after the change
- Sources checked
To use Claude and GPT APIs in DeepSeek Harness, add a custom provider on OpenAI Chat Completions with the Base URL https://api.omniakey.com/v1, and give each model a 128,000-token output limit and its reasoning levels. Keep Claude out of the built-in DeepSeek provider: it sends a thinking setting Claude rejects, so every request returns 400.
We ran this setup on October 28, 2026 in DeepSeek Harness 0.2.1-rc.3. On one provider, Claude Opus 5.5, Claude Sonnet 5.5, GPT-6.1 Sol and GPT-6.1 Terra each used Harness's tools to look through a small project and answered correctly. OmniaKey sells API access to all four models, and the tests ran through it.
Short answer
- Keep Claude out of the built-in DeepSeek provider. It always asks for thinking in a format Claude rejects, and you can't change its protocol.
- Add one custom provider: protocol OpenAI Chat Completions, Base URL
https://api.omniakey.com/v1. Claude and GPT-6.1 both run on it. - In each model's options, set the output limit to 128,000 and turn on reasoning levels. A model you add by hand starts with neither.
- Point the default model at the new provider, then test in a new session.
Why does Claude return 400 in DeepSeek Harness?
The built-in DeepSeek provider builds every request in DeepSeek's format, and Claude stopped accepting that format's thinking setting.
Unless effort is off, the provider sends thinking: {type: "enabled"} with no token budget. It also asks for 256,000 output tokens unless the model entry sets a lower limit. Its protocol is fixed: Harness refuses a protocol field on this provider with "protocol is not configurable".
Anthropic's migration guide (checked October 28, 2026) explains why that fails. From Claude Opus 4.7 on, Claude takes thinking only in adaptive mode, so enabled returns 400. Older models such as Claude Haiku 4.5 still accept enabled, but only with budget_tokens, which this provider never sends.
So every Claude model fails there. When we put Claude Opus 5.5 in the built-in provider, Harness showed an error that starts with Invalid request for the selected model. claude-opus-5-5 requires adaptive thinking. Fixing thinking alone would not be enough: Claude Opus 5.5 stops at 128,000 output tokens, so the 256,000 default would be the next 400.
How do I add the OmniaKey provider?
Add it in Settings. In Harness 0.2.1-rc.3 the form has every field you need. New to Harness? Install it first with the DeepSeek Harness setup guide.
- Click More at the bottom left, open Settings and go to Models. Click Add model provider and choose Custom model API.
- Fill in the provider:
- Provider ID:
omniakey - Display name: OmniaKey
- Base URL:
https://api.omniakey.com/v1 - API protocol: OpenAI Chat Completions
- API key: your OmniaKey key
- Provider ID:
- Under Models, click Add model once for each model ID in the table below.
- Open each model's options with the arrow at the end of its row, and fill in the values from the table.
- Click Create provider.
| Model ID | Context window | Max output tokens | Levels |
|---|---|---|---|
claude-opus-5-5 | 1,000,000 | 128,000 | low to max |
claude-sonnet-5-5 | 1,000,000 | 128,000 | low to max |
gpt-6.1-sol | 1,050,000 | 128,000 | low to max |
gpt-6.1-terra | 1,050,000 | 128,000 | off, low to max |
"Low to max" means five levels: low, medium, high, xhigh and max. Each level's API value is the same word, except Terra's off level, which sends none. Tick Image under Input types too: all four models read images, and without it Harness rejects pictures you paste.

Use OpenAI Chat Completions for all four models; that's the protocol we tested. Claude gets no off level: Claude Opus 5.5 always thinks, and OmniaKey returns 400 when Opus 5.5 gets none. GPT-6.1 Sol starts at low and doesn't accept none either. Terra does, so its off level skips reasoning.
The limits come from the vendors. Anthropic lists a 1,000,000-token context window for Claude Opus 5.5 and Claude Sonnet 5.5. OpenAI's model pages list 1,050,000 for both GPT-6.1 models; we checked them on October 27, 2026 for the Terra vs Sol comparison. All four stop at 128,000 output tokens.
If you added Claude IDs to the built-in DeepSeek provider earlier, delete them there, so you can't pick the broken copy by mistake.
With the provider in place, Claude Opus 5.5 at high effort ran a command, read a file and answered in 12 seconds:

Why does the effort setting do nothing?
Reasoning levels are off for that model. A model you add by hand starts with them off, and Harness then treats it as a model that can't reason: it sends no effort, and the model answers at its default.
Turn them on and add the levels from the table. The model menu under the message box then offers each one.

Which model does a new session start with?
The one in the agent-default-model entry of your profile's configuration file. In the desktop app that file is ~/.dsh/profiles/desktop/cordis.patch.yml. If the entry still names a Claude model in the DeepSeek provider, every new session starts on the failing provider. Point it at the new one:
- id: agent-default-model
name: "@deepseek-ai/dsh-agent-default-model"
config:
provider: omniakey
model: claude-opus-5-5
reasoningEffort: high
A fresh install already has this entry, so edit it instead of adding a second one. With two, Harness uses the last one and doesn't warn you.
You can still switch models in each session from the menu under the message box. Test in a new session: DeepSeek's guide says a session that has already sent a request keeps the model recorded in its log.
Where is the config file?
In the desktop app it's ~/.dsh/profiles/desktop/cordis.patch.yml, and everything you set in Settings can go there instead. This is the file we tested, with the provider and the default model together. Keep the entries already in your file, such as interface settings. If it already has an llm-pi-ai entry, add the omniakey provider under its providers: instead of adding a second entry.
- id: llm-pi-ai
name: "@deepseek-ai/dsh-llm-pi-ai"
config:
providers:
omniakey:
apiKeyEnv: OMNIAKEY_API_KEY
displayName: OmniaKey
api: openai-completions
baseURL: https://api.omniakey.com/v1
models:
- id: claude-opus-5-5
name: Claude Opus 5.5
contextWindow: 1000000
maxTokens: 128000
input: [text, image]
reasoningEfforts: { low: low, medium: medium, high: high, xhigh: xhigh, max: max }
- id: claude-sonnet-5-5
name: Claude Sonnet 5.5
contextWindow: 1000000
maxTokens: 128000
input: [text, image]
reasoningEfforts: { low: low, medium: medium, high: high, xhigh: xhigh, max: max }
- id: gpt-6.1-sol
name: GPT-6.1 Sol
contextWindow: 1050000
maxTokens: 128000
input: [text, image]
reasoningEfforts: { low: low, medium: medium, high: high, xhigh: xhigh, max: max }
- id: gpt-6.1-terra
name: GPT-6.1 Terra
contextWindow: 1050000
maxTokens: 128000
input: [text, image]
reasoningEfforts: { "off": none, low: low, medium: medium, high: high, xhigh: xhigh, max: max }
- id: agent-default-model
name: "@deepseek-ai/dsh-agent-default-model"
config:
provider: omniakey
model: claude-opus-5-5
reasoningEffort: high
apiKeyEnv names the key without holding it. Harness finds the key under that name, saved in Settings or exported in the environment Harness starts from, so the key itself stays out of the file. Save the file and open a new session; restart Harness if the provider doesn't show up.
Troubleshooting
"requires adaptive thinking"
Claude is in the built-in DeepSeek provider. Move it to the OmniaKey provider and point the default model there too.
404 on every request
The Base URL is missing /v1. On OpenAI Chat Completions, OmniaKey's Base URL is https://api.omniakey.com/v1.
An error about max_tokens
The output limit is above what the model allows. All four models stop at 128,000, and the built-in DeepSeek provider asks for 256,000 by default.
"The current model does not support images"
The model's Input types has only Text ticked. Tick Image in its options; all four models in the table read images.
No effort levels, or the effort setting changes nothing
Turn on reasoning levels in the model's options and add the levels from the table.
It still fails after the change
Open a new session, check agent-default-model, and make sure the DeepSeek provider lists no Claude IDs.
Sources checked
- Anthropic migration guide: Claude Opus 5.5
- Anthropic effort and adaptive thinking
- GPT-6.1 Sol model page
- GPT-6.1 Terra model page
- DeepSeek Harness model and provider guide
- dsh-llm-pi-ai provider reference
- OmniaKey OpenAI-compatible API reference
- OmniaKey live model catalog
Model pages on OmniaKey: Claude Opus 5.5, Claude Sonnet 5.5, GPT-6.1 Sol and GPT-6.1 Terra.
Models in this article
Related articles
DeepSeek Harness: Open-Source Coding Agent Guide
DeepSeek Harness is a plugin-first coding agent; this guide explains it, installs the Web UI, and connects it to OmniaKey with a verified custom-provider configuration.
Opus 5.5 vs Sonnet 5.5
Choose by results and total cost.
GPT-6.1 Terra: What's New, Benchmarks and How It Compares to Sol
Half the price of GPT-6.1 Sol, with big gains over GPT-5.6 Terra in computer use, coding and accuracy.