by V1ki
Use ChatGPT (Codex), Claude, and Grok (X Premium) subscriptions as DeepSeek Harness LLM providers — OAuth login in the web UI, no API keys
# Add to your Claude Code skills
git clone https://github.com/V1ki/dsh-plugin-subscriptionsGuides for using ai agents skills like dsh-plugin-subscriptions.
dsh-plugin-subscriptions is an open-source ai agents skill for AI coding assistants such as Claude Code, Codex CLI, and ChatGPT, built by V1ki. Use ChatGPT (Codex), Claude, and Grok (X Premium) subscriptions as DeepSeek Harness LLM providers — OAuth login in the web UI, no API keys. It has 78 GitHub stars.
dsh-plugin-subscriptions's catalog security scan is still queued. You can run an instant dependency and prompt-injection check now with the "Scan for vulnerabilities" button above.
Clone the repository with "git clone https://github.com/V1ki/dsh-plugin-subscriptions" and add it to your Claude Code skills directory (see the Installation section above).
dsh-plugin-subscriptions is primarily written in TypeScript. It is open-source under V1ki on GitHub, so you can review or fork the full source.
Yes. SkillsLLM lists many other AI Agents skills you can browse and compare side by side. Open the AI Agents category from the badge at the top of this page, or use the Related Skills and comparison links further down to weigh dsh-plugin-subscriptions against similar tools.
No comments yet. Be the first to share your thoughts!
Unlocks once the catalog security scan passes (runs nightly).
The deep catalog scan for this skill is still queued. Run an instant dependency check now instead.
English | 中文
Use your ChatGPT (Codex), Claude, and Grok (X Premium) subscriptions as LLM providers in DeepSeek Harness — no API keys. Login happens in the dsh web UI (Settings → Subscriptions); tokens live at ~/.dsh/plugins/subscriptions/auth.json (mode 0600) and refresh automatically.
Settings → Subscriptions: per-provider OAuth login/logout, no API keys (account address masked in the screenshot):

Logged-in providers join the session model picker with their live model catalogs:

Models that advertise reasoning levels get an Effort selector in the same menu — Codex models, and Grok 4.6 / 4.5 (levels and defaults come from each provider's live catalog, not a hardcoded list):

The image_generate tool renders its result inline in the conversation:

| Route | Subscription | Models |
|---|---|---|
codex |
ChatGPT Plus/Pro | live catalog from chatgpt.com/backend-api/codex/models |
claude |
Claude Pro/Max | claude-opus-4-5, claude-sonnet-4-5, claude-haiku-4-5 |
grok |
X Premium (xAI) | live catalog from api.x.ai/v1/models (chat models only); reasoning efforts from the Grok CLI catalog (cli-chat-proxy.grok.com/v1/models) |
Only logged-in providers appear in the session model picker; the lists above refresh on login/logout. Vision-capable models declare ['text', 'image'] input modalities, and image content is translated to each provider's wire format.
Logged-in cards also show subscription usage — per rate-limit window (5-hour session, weekly, and per-model weekly where the plan has one) with the used percentage, a progress bar, and the reset time, plus a Refresh button. Codex usage comes from chatgpt.com/backend-api/wham/usage (also reports the plan), Claude usage from api.anthropic.com/api/oauth/usage, and Grok usage from the Grok Build CLI proxy's cli-chat-proxy.grok.com/v1/billing (the source of the CLI's /usage panel; reports the shared weekly pool and the subscription tier).
Also included, registered when the matching provider is enabled:
x_search tool (Grok) — xAI's hosted X search, returning { answer, citations }.image_generate tool (ChatGPT) — gpt-image-2 via the Codex backend; PNGs are saved under ~/.dsh/plugins/subscriptions/images/ and the paths returned.With the dsh CLI available, install from npm (prebuilt artifacts, no build permission needed):
dsh plugin --profile web add dsh-plugin-subscriptions
Or install the sources from GitHub:
dsh plugin --profile web add github:V1ki/dsh-plugin-subscriptions
pnpm will ask you to allow this package's build script on first install (git installs fetch sources, not built artifacts); add the printed key to the profile's pnpm-workspace.yaml:
allowBuilds:
dsh-plugin-subscriptions: true
and re-run the add. Only grant this to packages you trust — it runs the package's code at install time.
From a local checkout instead:
git clone https://github.com/V1ki/dsh-plugin-subscriptions.git
cd dsh-plugin-subscriptions && pnpm install && pnpm build
dsh plugin --profile web add ./dsh-plugin-subscriptions
Headless-only usage without installing into a profile (log in via the web UI first — the token file is shared):
cp overlay.example.yml overlay.yml # then edit the name: to this checkout's absolute lib/index.js path
dsh --profile headless --patch <checkout>/overlay.yml "your task"
Installed from npm:
dsh plugin --profile web update --latest dsh-plugin-subscriptions
Installed from GitHub: re-run the same add github:V1ki/dsh-plugin-subscriptions command — it re-fetches the sources and rebuilds. A linked local checkout just needs git pull && pnpm build in the checkout.
Either way, restart dsh web afterwards so the new version loads.
dsh web, open the printed URL./model) and choose a model under ChatGPT (Codex) / Claude (Subscription) / Grok (Subscription).Not logged in? The provider stays out of the picker, and requests fail with MISSING_CREDENTIAL pointing at the Settings page; nothing else breaks.
- id: llm-subscriptions
name: dsh-plugin-subscriptions
config:
providers: [codex, claude] # subset; default all three
streamIdleTimeoutMs: 300000
models: # override the discovered/built-in catalogs
codex:
- { id: gpt-5.6-sol, name: GPT-5.6 Sol, contextWindow: 272000, inputModalities: [text, image] }
pnpm install # devDependencies link into a local deepseek-harness checkout — edit the paths first
pnpm build # tsc (lib/) + tsdown (lib/client.js browser bundle)
pnpm test # node --test over compiled unit specs
prepare (used by git installs) runs tsdown.prepare.config.ts: a self-contained bundle build of both faces with all @deepseek-ai/* specifiers external — they resolve from the dsh installation at runtime, so this package never carries a second cordis copy.
After pnpm build, restart dsh web to pick up changes.
src/index.ts — plugin entry: config schema, adapter registration, auth-change re-announce, RPC wiringsrc/auth/ — PKCE/JWT helpers, token store, OAuth flow engine (temp loopback callback server), /subscriptions-auth RPC channelsrc/providers/ — per-provider OAuth constants/exchange/refresh + LlmAdapterssrc/translate/ — dsh Message[] ⟷ OpenAI Responses / Anthropic Messages wire formats, SSE → StreamChunksrc/tools/ — x_search and image_generatesrc/client/ — the Settings → Subscriptions page (browser half, zh/en, theme-token aware)