Preface

DeepSeek Harness (dsh) is an open-source agent runtime developed by DeepSeek, which the official repository summarizes in one sentence: Everything is a plugin. Model adapters, tools, conversations, sandboxes, and web interfaces can all be added or removed at the configuration layer without modifying the core source code. The project is currently in developer preview, and its APIs will continue to change. Independent plugin directory sites have emerged in the community, aggregating repositories tagged with dsh-plugin on GitHub. Please note that these directories are not officially affiliated with DeepSeek / Fang, and should not be treated as an official app store.

When using dsh web to run agents, you usually need to configure an API Key separately for the model side. People who have subscribed to ChatGPT Plus, Pro, Business, or Edu will encounter the same problem: the subscription quota is valid for ChatGPT / Codex, but you still need to purchase pay-as-you-go billing separately on Harness. dsh-llm-codex-oauth addresses this specific need: it uses OpenAI Codex’s OAuth device code login to expose your existing subscription as a codex-oauth model provider in dsh.

This article is collated after cross-checking with the community directory details page, the GitHub repository README (both Chinese and English versions), package.json, cordis.patch.yml, src/index.js, LICENSE, and the official deepseek-ai/deepseek-harness repository. The author noted in the README that the repository was written in approximately three hours by DeepSeek-V4-Pro within Harness, without a complete Code Review, and only basic functionality was manually confirmed to work. You should review the source code yourself before installation and evaluate the interface and term risks mentioned below.

What is this

dsh-llm-codex-oauth is a model and provider plugin. Its GitHub repository is Player-MINEPIG/dsh-llm-codex-oauth, maintained by Player-MINEPIG, licensed under MIT (copyright holder Zhu Bohan, 2026), and primarily written in JavaScript. The version in package.json is 0.3.6. As of 2026-08-18, the GitHub API shows 8 stars, while the community directory page shows 6; star counts may change, please refer to the repository page for the latest data. The repository was created on 2026-08-13, and the latest commit on the main branch as of the day this article was verified is 4a680ba (2026-08-16).

The problem it solves can be summarized in one sentence: you can select models in dsh using your ChatGPT / Codex subscription without needing an OpenAI Platform API Key. The plugin registers pi-ai’s built-in openai-codex provider (online protocol name openai-codex-responses) to dsh’s LLM seam, with the external routing name codex-oauth. The model list is not hard-coded in this repository, but follows the currently installed pi-ai version. The README gives examples including gpt-5.3-codex-spark, gpt-5.4, gpt-5.5, gpt-5.6-*.

Core Features

The capabilities listed in the repository README can be understood in the order of use:

  1. Subscription Model Access. cordis.patch.yml inserts a line id: llm-codex-oauth at the root of the profile. In the configuration, provider is set to codex-oauth, providerId is openai-codex, and the credential reference name is OPENAI_CODEX_OAUTH. The streaming idle timeout defaults to 300000 milliseconds (5 minutes). The host exports name / inject / apply, and depends on three services mounted by the dsh basic bundle: llm, credentials, and commands.

  2. Device Code Login. The login process uses auth.openai.com, and the author notes that it uses the same OAuth client as the Codex CLI. No callback server needs to be started locally, and authorization can be completed in a headless environment. The settings page sidebar has a “Codex Subscription (ChatGPT)” section with login/logout buttons and real-time status; only read-only commands /codex-status and /codex-logout are available in conversations.

  3. Credential Storage Location. Refresh tokens and access tokens are only written to dsh’s credential library $DSH_HOME/.credentials.yaml (permission 0600), and are not stored in configuration files, conversation logs, or this repository. After the access token expires, pi-ai will renew it using the refresh token in a serialized write path. The intermediate state from the device code login is only kept in the process memory, and will be restored from the credential library after a restart.

  4. Image Input, No Image Generation. PNG / JPEG / WebP / GIF images pasted or dragged into the web interface will be forwarded to the model via dsh’s durable attachment service. Only models that declare image in their metadata will receive the images; the README notes that most gpt-5.x models support vision, while gpt-5.3-codex-spark is still text-only. Images from tools such as read_image will also be forwarded in the next round. Non-image files such as PDFs and Office documents will not be sent as multimodal blocks; you need to add them to the workspace and use file tools to read them. Codex image generation uses a separate set of /codex/images/generations and /edits APIs, which this plugin explicitly does not support.

  5. Multi-turn Conversation Replay. The adapter will retain the provider’s native replay metadata (such as signatures) to facilitate continued requests across turns. The ChatGPT backend for Codex does not accept temperature, maxTokens, or stop: the first two will be silently discarded (to avoid 400 errors from presets such as SillyTavern / dsh-tavern that carry temperature values directly), and stop will still be rejected. reasoningEffort and sessionId will continue to be sent.

Installation and Activation

The installation command given on the community directory page can be run in the DeepSeek Harness terminal:

dsh plugin add github:Player-MINEPIG/dsh-llm-codex-oauth

dsh plugin will forward the command to pnpm. If you do not have pnpm installed, run npm install -g pnpm first. If you do not have a global dsh installation, replace dsh in the command with npx @deepseek-ai/dsh. The directory page also notes that you can pin the commit hash for reproducible installations. The latest commit on the main branch as of the day this article was verified is 4a680ba31ca9daf46a0527d6c1b7a1ada8731b46, and the command is written as follows:

dsh plugin add github:Player-MINEPIG/dsh-llm-codex-oauth#4a680ba31ca9daf46a0527d6c1b7a1ada8731b46

When specifying a profile, the manual installation example from the repository README for the web configuration is:

dsh plugin --profile web add github:Player-MINEPIG/dsh-llm-codex-oauth

For local cloning and installation using a file path, the README emphasizes that you must add the file: prefix. If you only pass the directory path, pnpm will soft-link the repository as link:, and Node will not be able to find node_modules when resolving internal dependencies, causing the load to fail; using file: will copy the package into the profile’s dependency tree:

dsh plugin --profile web add file:/path/to/dsh-llm-codex-oauth

If you do not want to install pnpm and only need local development, the repository also provides a cross-platform script (only requires Node, no bash dependency):

node scripts/install.mjs            # Installs to the web profile by default
node scripts/install.mjs headless   # Specifies a different profile

The script will locate $DSH_HOME (default ~/.dsh), copy the plugin to the node_modules directory that dsh prioritizes parsing, and write it to the bundle list. Stop the corresponding dsh process before updating. It is recommended to use the official command to uninstall:

dsh plugin --profile web remove dsh-llm-codex-oauth

After installation is complete, restart dsh, then use the following command to confirm that the llm-codex-oauth line appears in the configuration:

dsh --profile web --dump-config

The README also mentions that the ignored-builds prompt from pnpm 11 will cause dsh plugin to report pnpm failed, even though the dependencies may have been installed successfully. The fix is to change the allowBuilds: placeholder value generated by pnpm in the profile directory’s pnpm-workspace.yaml to false (the build scripts for @google/genai and protobufjs are unrelated to this plugin), then re-run the same installation command to complete the bundle reconciliation.

Typical Usage

The operation sequence given in the repository README is as follows:

  1. After restarting dsh, open the Settings page and select “Codex Subscription (ChatGPT)” from the sidebar.
  2. Click “Log in to ChatGPT Account”, follow the prompts to open the verification URL, enter the device code, and complete authorization using your ChatGPT account.
  3. After the status changes to “Connected”, go to the Models Settings page and switch the model to one under the codex-oauth provider.
  4. To log out, return to the settings page and click “Log out”, or enter /codex-logout in a conversation; you can use /codex-status to check the status at any time.

Note two points when using image input: the web profile mounts the attachments service by default; image requests will be rejected for text-only models or profiles that do not have the attachments service mounted, such as headless instances. Long-running agent loops will consume your ChatGPT / Codex subscription quota, and relevant guides on the directory site have reminded users of this. It is recommended to separate quota-intensive tasks from cheaper API providers.

Applicable Scenarios and Precautions

This plugin is suitable for users who already have a ChatGPT Plus / Pro / Business / Edu subscription and want to use it directly in DeepSeek Harness without configuring an OpenAI Platform API Key. The device code flow does not rely on a local callback port, and can be used for both local web and headless logins. Users who only want to paste screenshots into conversations can also use it; do not expect it to generate images in the conversation flow.

The following boundary conditions must be reviewed carefully before installation, taken from the directory page prompts and the repository README, and are not additional suggestions:

  • The plugin runs with the permissions of the current dsh process and may execute code during installation. Please check the source code repository and license before installation; pin the commit hash for reproducible installations.
  • The author notes that this plugin will call the ChatGPT web backend chatgpt.com/backend-api. This is an undocumented, officially unsupported interface, and the risk of violating OpenAI’s Terms of Service is explicitly stated in the repository’s README, which may lead to account restrictions. The OAuth login endpoint is auth.openai.com, which is the same origin as the Codex CLI, but inference requests go through the aforementioned undocumented backend. Please evaluate the risks before using it, and do not route production traffic to this path by default.
  • The repository was generated in a short time by an agent within Harness, and the author has stated that it has not undergone a complete Code Review. The community directory deepseek-harness-plugin.com is an independent site, and automatic filtering of entries does not mean endorsement.
  • The model list follows the installed pi-ai version; upgrading pi-ai or dsh may change the available model names. Harness itself is still in developer preview, and breaking changes will affect the plugin.
  • Never commit $DSH_HOME/.credentials.yaml to Git. Refreshing the plugin directory will not read, move, or delete this credential file.

Summary

dsh-llm-codex-oauth connects your ChatGPT / Codex subscription to the model list in DeepSeek Harness: complete the device code login via the settings page, select a model under codex-oauth on the Models page, and tokens are only stored in dsh’s credential library. It supports image input but not image generation; it supports multi-turn conversations but does not send sampling parameters such as temperature to the backend. The capability boundaries and term risks are all written in the repository’s own README, please review the source code and license before installation.

Directory page: https://deepseek-harness-plugin.com/zh-CN/plugins/dsh-llm-codex-oauth/

GitHub: https://github.com/Player-MINEPIG/dsh-llm-codex-oauth