Preface¶
DeepSeek Harness (dsh) splits its runtime into layered plugins: the official repository’s slogan is Everything is a Plugin. Model adapters, tools, sessions, sandboxes, and interfaces can all be replaced without modifying the Harness source code. Many users already have ChatGPT subscriptions and use Codex regularly, but once they migrate their workflows to DSH, the common practice is to apply for another OpenAI Platform API key for pay-as-you-go billing, which is separate from the subscription quota.
The community plugin dsh-codex takes a different approach: it completes the ChatGPT OAuth login flow via OpenAI’s Codex and connects the Codex backend to the current dsh process. No Platform API key is required, and no patches to the Harness are needed.
This article is collated after cross-checking against the community directory page, the GitHub repository’s README, INSTALL.md, package.json, and the official DeepSeek Harness repository: it explains what this plugin is, how to install it, and what you can do after logging in. The community plugin directory deepseek-harness-plugin.com is an independent site and has no official affiliation with DeepSeek / HyperMind. Do not treat it as an official app store.
What It Is¶
dsh-codex is a DeepSeek Harness plugin maintained by Yan-Zero, hosted at the GitHub repository Yan-Zero/dsh-codex. The community directory lists it under the “Sessions and Messages” category. The package.json in the repository has a version number of 0.2.4 (consistent with the dsh-codex package on npm), its primary language is TypeScript, and it is licensed under Apache-2.0. As of August 17, 2026, GitHub shows 19 stars; the directory page listed 10 stars at the time, so refer to the repository page for accurate star counts.
The one-sentence positioning on the directory page is: Use your ChatGPT subscription in DSH via the Codex login flow. The README provides more details: it is a standalone dsh bundle that completes ChatGPT OAuth in the settings panel or via the CLI, and automatically refreshes tokens. It then connects the Codex GPT catalog to the standard LLM service, supporting streaming responses, tool calling, inference playback, prompt caching, and dsh compression.
One critical boundary must be clarified first: ChatGPT subscription authentication and the pay-as-you-go OpenAI API are different products. This plugin only uses the ChatGPT Codex backend, and will not convert your subscription into generic OpenAI API credentials. Package eligibility, model permissions, quotas, and backend behavior are controlled by OpenAI and may change.
Core Features¶
ChatGPT OAuth and Independent Credentials¶
There are two login entry points: Settings → OpenAI Codex → Use ChatGPT Login in the web interface, and the CLI command dsh-openai-codex login. The plugin will open the OpenAI authorization page and complete the login via a localhost callback. For environments without a browser, use the --device-code flag.
Credentials are stored separately from the Codex CLI/Desktop client:
- The file location is $DSH_HOME/.openai-codex-auth.json, defaulting to ~/.dsh
- Writes are atomic, and token refreshes will acquire a lock between local dsh processes
- Browser state and diagnostic interfaces do not return token values
- Will not copy or modify ~/.codex/auth.json
Separate storage is to prevent two clients from fighting over the same rotating refresh token. Uninstalling the bundle will not delete these credentials; to clear your local account, use the account page or the logout command. The account page displays a real-time Codex quota progress bar and remaining percentage; credit balances or workspace limits will only appear if provided by the account API.
Codex Model Catalog¶
After installation, the bundle will select openai-codex / gpt-5.6-sol for new agents and use the Codex search provider. The corresponding entries in cordis.patch.yml are agent-default-model and web.searchProvider. Models already saved in dsh settings will take priority; the model selector can switch to other Codex models visible to your account. If your account has access to vision models, the plugin will declare their image input capabilities.
In dsh-tui, after restarting, /model will list the openai-codex catalog; if there is no explicit route or saved selection, the TUI will use the gpt-5.6-sol registered by the bundle.
Search, Image Reading, and Image Generation¶
These features are built on top of dsh’s existing tools rather than introducing a new protocol for models:
- Web Search: Connects dsh’s web_search to Codex’s independent search protocol, returning plain text and HTTP(S) citations. Subsequent rounds and compression can retain the same tool history. The default searchMode is cached, and the automated installation in INSTALL.md uses live.
- Image Reading: Adds optional HTTP(S) URL input to the existing read_image tool. Local paths are still handed off to Harness as usual, retaining the current file system and sandbox. The URL handler will limit redirect counts and downloaded bytes, and reject addresses with embedded credentials. Ctrl+V pasting and drag-and-drop images in the web input box will still follow dsh’s own attachment path.
- Image Generation: Registers the imagegen tool, executed by gpt-image-2. The current model only takes plain text prompts, and can use workspace paths or the most recently referenced image in the session. The plugin reads the bytes before sending them, and the model will not output base64. Results will be displayed in the chat, saved as persistent attachments, and written to the current workspace. If output_path is omitted, a unique generated-<timestamp>-.png will be generated.
There are two toggles in the settings page that are enabled by default: Enhanced read_image and Allow other models to use image generation. Turning off the first option will restore Harness’s original read_image Schema that only accepts local paths; turning off the second option will still allow Codex vision models to use imagegen, but calls from other model providers will be rejected at the execution entry. Only models that explicitly declare support for image input can receive images.
Two Experimental Switches Disabled by Default¶
There are two more switches in the settings page that only apply to openai-codex and are disabled by default:
1. WebSocket Context Reuse: Keeps store: false, and when the connection can be reused in the same session and the next round can strictly衔接 with existing context, use previous_response_id to only send new inputs. History edits, compression, forking, disconnection, or process restarts will fall back to full context. When disabled, regular rounds use SSE, and Harness sends the full context each time.
2. Native Responses Compression: Sends history and a compaction_trigger per Codex’s current V2 flow. If unavailable or failed, the same call will fall back to Harness’s original model summarization. The default configuration uses SSE and the text summarization path from dsh-compaction-basic.
These two switches are independent of each other. The README also notes that the Codex endpoint does not respect the max_output_tokens field for regular Responses, and while compression works, this route cannot enforce the configured summarization limit on the server side.
Installation and Activation¶
The installation command given on the community directory page, run in the DeepSeek Harness terminal:
dsh plugin add github:Yan-Zero/dsh-codex
For reproducible installations, pin the commit hash per the directory page instructions:
dsh plugin add github:Yan-Zero/dsh-codex#<commit>
The maintainer’s README recommends installing the pre-built bundle from npm to a specific profile (taking Web as an example):
dsh plugin --profile web add dsh-codex
dsh web
When running from a DeepSeek Harness source checkout, replace dsh with pnpm dsh:
pnpm dsh plugin --profile web add dsh-codex
For use in dsh-tui, wrap the same command for the corresponding profile:
dsh plugin --profile dsh-tui add dsh-codex
Local checkouts for development can still use link:/absolute/path/to/dsh-codex. Automated agents like Codex and Claude Code should follow INSTALL.md in the repository directly, as it is a reproducible runbook.
Both the directory page and the official CLI remind users that the plugin runs with the permissions of the current dsh process, and may execute code during installation. You should inspect the source code repository and license before installing.
Login and Basic Usage¶
Web Interface¶
- Start
dsh webafter installation. - Open Settings → OpenAI Codex → Use ChatGPT Login.
- Complete the authorization on the opened OpenAI page, and wait for the localhost callback to finish.
- Check your quota on the account page; use the logout option on the same page to sign out, or use the CLI below.
Do not log in via both the GUI and CLI simultaneously. INSTALL.md notes that OAuth authorization is user-controlled, and do not ask automated processes to fill in passwords or click the account page on your behalf.
Terminal and Headless Environments¶
dsh plugin --profile web exec dsh-openai-codex status
dsh plugin --profile web exec dsh-openai-codex login
dsh plugin --profile web exec dsh-openai-codex login --device-code
dsh plugin --profile web exec dsh-openai-codex logout
Run status first. If you are already signed in, do not start another login flow. Use --device-code if you cannot open a browser on your local machine. Browser login is loopback-only; dsh running on a remote host should be logged in via the CLI on that machine.
For TUI, you can manage your account and view configurations with /codex status|login|logout|usage|config. Four boolean switches are available:
/codex set <read-image|imagegen-other-models|websocket-context|native-compaction> <on|off>
After completing browser login, credentials will share the same dsh credential file as the Web profile.
Search Configuration Example¶
To change the search mode, keep exactly one line of id: llm-openai-codex in the corresponding profile’s cordis.patch.yml (INSTALL.md requires that you do not add duplicate IDs):
- id: llm-openai-codex
config:
searchMode: live
searchContextSize: medium
The fields listed in the README are as follows:
| Field | Default Value | Available Options |
|—|—|—|
| searchModel | gpt-5.6-sol | Codex model ID |
| searchMode | cached | cached, indexed, live |
| searchContextSize | medium | low, medium, high |
| searchMaxOutputTokens | 10000 | Positive integer |
Each auxiliary request that parses default values and does not contain credentials will be logged as the plugin’s registered session event web/openai-codex-search-llm-request before being sent. The independent search endpoint is not a public OpenAI Platform API, and compatibility depends on the fixed-version Codex / pi-ai implementation.
How to Add Images to a Chat¶
The reproducible paths given in the README:
- Ctrl+V paste or drag-and-drop images into the web input box
- On Windows, the adapted dsh-tui allows Ctrl+V to paste clipboard images, or input @relative/path/to/image.png
- Have the model call read_image: use file_path for workspace images, and url for HTTP(S) images
- Support PNG, JPEG, WebP, and GIF within the current dsh attachment limits
When generating images, the current vision model will write the prompt; results are written to the workspace. If the workspace is managed by dsh-remote-ssh, the remote write path is handled by that plugin. When installed alone, this plugin can generate attachments and save outputs locally.
Use Cases and Notes¶
This plugin is ideal for users who are already using DSH, have an active ChatGPT / Codex subscription, and want to avoid applying for an additional Platform API key. Login works for Web, TUI, and headless CLI; the file system, shell, skills, MCP, subagents, permissions, attachments, compression, and the web_search tool itself still come from the current dsh profile. This plugin only connects the model routing and Codex-side capabilities without modifying Harness source code.
Note these verifiable boundaries before use:
1. Permissions and Licensing: The plugin runs with the same permissions as the current dsh process, and installation may execute code. This repository uses Apache-2.0, but you should still review the source code and license yourself before installing.
2. Subscription is not an API Key: It will not convert your ChatGPT subscription into generic OpenAI API credentials; you cannot use this login to call arbitrary interfaces on the Platform.
3. Eligibility Determined by OpenAI: Model lists, vision capabilities, quotas, and backend behavior may change; if you cannot find a specific model, check your account page and /model first instead of assuming the plugin is broken.
4. Credential Files: Do not read, print, or commit $DSH_HOME/.openai-codex-auth.json, and do not touch ~/.codex/auth.json. Diagnostics should only use the non-sensitive status from status.
5. Image Prerequisites: The current model must explicitly declare image input in the catalog for read_image / imagegen to send images to the model.
6. DSH is Still Rapidly Iterating: The official README marks it as a developer preview, and there may be breaking changes. This plugin declares that it only uses the published plugin surface, with @deepseek-ai/dsh-* peer dependencies on 0.1.0-rc.6; you should recheck the repository after upgrading Harness.
7. Directory is Not an Official Store: Refer to the GitHub source code and the original dsh plugin add command on the page; star counts and categories are subject to the numbers on the page when you open it and will change over time.
Summary¶
dsh-codex does one specific thing: use Codex’s ChatGPT login to connect subscription-side models, search, and some multimodal capabilities to DeepSeek Harness, without modifying Harness source code or disguising the subscription as a Platform API. After installation, the daily workflow is to log in once via the settings page or CLI, then select models from the Codex catalog visible to your account.
Directory page: https://deepseek-harness-plugin.com/zh-CN/plugins/dsh-codex/
GitHub: https://github.com/Yan-Zero/dsh-codex