DeepSeek Harness Plugin Hub

Publish and manage complete Harness Profiles. Discover Plugins for your next setup.

Explore

PluginsPresetsDocsNews

Community

Publish a pluginContactReport an issue

Resources

Plugin Hub on GitHubDeepSeek HarnessSystem statusPrivacy notice
© 2026 DeepSeek Harness Plugin HubPowered byPaxTech

Independent and unofficial. Not affiliated with, authorized by, or endorsed by DeepSeek.

Subscriptions — DSH Plugin for DeepSeek Harness
DeepSeek Harness Plugin Hub
ProfilesPluginsCategoriesNewsDocsSign inManage Profiles
ProfilesPluginsCategoriesNewsDocsSign in
← Plugins
S

dsh-subscriptions

Subscriptions

DeepSeek Harness plugin: use your own Claude and ChatGPT/Codex subscriptions as model providers, over each vendor OAuth flow

The plugin will be installed here. Keep web if you are unsure.

npx -y @deepseek-ai/dsh plugin --profile web add github:DevViking-Persike/dsh-subscriptions#9ab08665bbd7b684409973bc91b9019e359074b8
READMECompatibilityVersions

Compatibility and provenance

Subscriptions is published as dsh-subscriptions and currently resolves to version 0.1.0. The Hub verifies its manifest and preserves the exact installation source for reproducible installs.

DSH compatibility
*
Runtime surfaces
any
Release source
github
Registry updated
8/23/2026

Versions

0.1.0stable
8/23/2026

Related plugins

Loading related plugins…

Latest
0.1.0
DSH
*
HMR
Process restart
Tree shaking
Safe tree shaking not declared
Unpacked size
Unavailable
Files
Unavailable
Surface
any
License
MIT
Source
github
GitHub
★ 2
Weekly downloads
0
Last push
9/8/2026
View source ↗
README badge

Click the badge to copy Markdown for your README.

Do you maintain this Plugin?Claim benefit · Priority security scan

Verify the GitHub repository declared in package.json to manage this listing. After you claim it, Hub will prioritize a security scan of the current version and publish the result when it passes.

Claim this Plugin →
Report an issue

Related plugins

More verified plugins in models-usage.

Usage@linxin666/dsh-usageUsage statistics plugin for the dsh web GUI: per-provider balance and coding-plan quota detection plus a live token usage ledger, with the current session provider's today usage on the sidebar entryUsage Stats@ychris12138/dsh-usage-statsToken usage heatmap, provider balances, and subscription quotas for the dsh web GUICodex Connectdsh-codex-connectChatGPT OAuth and Codex models for DeepSeek Harness.Ui Usage Billing@kenz1117/dsh-ui-usage-billingUsage billing dashboard for DeepSeek Harness: sidebar cost metrics plus a full dashboard modal, priced from a current multi-provider catalog with real usage aggregated from session logs.

README

dsh-subscriptions

Use your own Claude and ChatGPT/Codex subscriptions as model providers in DeepSeek Harness — the same OAuth sign-in the Claude Code and Codex CLIs use. No API key.

Install

dsh plugin --profile web add github:DevViking-Persike/dsh-subscriptions

Restart dsh, then sign in to whichever subscription you have:

http://127.0.0.1:1458/claude/start
http://127.0.0.1:1458/codex/start

Each opens the vendor's own sign-in page and stores the resulting OAuth credential locally. Tokens refresh on their own; you sign in once.

RouteProviderCredential
claudeclaude-code-oauth~/.dsh/claude-code-oauth.json
codexcodex-oauth~/.dsh/codex-oauth.json

Other endpoints: GET /<route>/status reports whether a subscription is connected and when its token expires; POST /<route>/logout removes the credential. The server binds to loopback only.

Configuration

Every field is optional.

FieldDefaultMeaning
routes['claude', 'codex']Which subscriptions to mount.
controlPort1458Loopback port for the sign-in endpoints.
claudeModels / codexModelsshipped catalogsA supplied array replaces the default.
claudeCredentialPath / codexCredentialPathunder ~/.dshWhere each credential is stored.
claudeImportFrom / codexImportFrom—Seed once from a CLIProxyAPI auth file.
streamIdleTimeoutMs300000Budget between reads before the transport gives up.
defaultContextWindow200000Context assumed for a model absent from the catalog.
maxTokens32000Output cap when neither request nor catalog states one.
retryPolicynormal, 3 retriesMerged over the default.
- id: dsh-subscriptions
  name: 'dsh-subscriptions'
  config:
    routes: ['claude']
    controlPort: 1458

Model Experience

Transparent to the model: the plugin registers provider routes and streams responses, adding no tool, prompt section, or context.

What it affects is accounting, and the two routes deliberately disagree:

  • Claude reports input_tokens already excluding cache reads, so nothing is subtracted.
  • Codex includes them, so they are subtracted to keep the counts disjoint.

Both directions are pinned by tests recorded from the harness's own implementations, because getting either backwards raises nothing — it just misreports context in every cost display.

Text only on both routes. Image content is refused before a request is sent, since the serialization path would drop it and the model would answer a question it never saw.

Safety

  • Credentials are written atomically with owner-only permissions (0600, parent 0700), and the file is read through a cross-process writer lock. Two DSH instances refreshing at once cannot corrupt the document or burn the refresh token twice — proven by a test that forks real processes, with a negative control that fails when the lock is removed.
  • A token never appears in an error message, a log line, or the /status response. Upstream error bodies are redacted before being quoted.
  • A failed refresh leaves the stored credential untouched, so a transient outage cannot force a re-login.
  • A truncated stream raises STREAM_CLOSED rather than presenting as a finished response.
  • A stale lock is never stolen: file age cannot prove its owner died, so orphan recovery stays an operator action.

Known Limitations and Deferred Work

  • Version-sensitive by construction. This plugin lives outside the harness repository, which states it makes no compatibility promise before its first release. The chunk vocabulary is therefore verified at load, and a mismatch refuses to mount with a message naming the drifted field.
  • The sign-in callback binds 127.0.0.1, while the vendors' registered redirect URIs say localhost. On a host where localhost resolves to ::1 first, the browser callback will not arrive. The ports are fixed by the public clients and cannot be reconfigured.
  • Model catalogs are static configuration, not discovered from the vendor. A model your subscription serves but the catalog omits still works when named explicitly, resolving with the default context window.
  • No image input, and the Codex route rejects stop sequences — the Responses API has no equivalent, and silently dropping one would let a model run past a boundary the caller relied on.
  • The test suite runs entirely against local node:http servers. It proves this plugin's behavior, not that either vendor still speaks exactly this dialect: the fixtures encode the harness's belief about the wire, recorded from its own implementations.

Tests

npm install && node --test test/*.test.js

132 tests, no network and no credential required.

License

MIT — see LICENSE and NOTICE.md. Using this plugin means using your own subscription under its own terms.