v0.2.0 - renamed to dsh-native-codex-cli
v0.2.0 — renamed to dsh-native-codex-cli
Renamed from
dsh-codex. That name is already used on npm and on GitHub by an unrelated plugin (Yan-Zero/dsh-codex, a ChatGPT-subscription provider for DSH) which also carries thedsh-plugintopic — two different plugins would have appeared under the same name in the plugin hub. The old repository URL redirects here, but the package name, plugin id, HTTP routes, storage directory and log file all changed, so v0.1.0 should not be installed any more.
DSH owns the chat interface; the Codex CLI owns task execution and native thread history. Tasks go straight to Codex — no second AI paraphrases them, and no chat archive is replayed to fake continuity.
What it does
- Old conversations — list Codex threads from
thread/list, restore the selected one withthread/resume - New task — create a native thread with an explicit working directory, model, approval policy and sandbox
- Send — the message goes verbatim into
turn/start; follow-ups during a run useturn/steer - Streaming —
item/*/deltaframes accumulate live, with tool cards for command execution (output, exit code, duration), file changes (with diff), MCP / dynamic tool calls, and errors - Stop —
turn/interrupt, a real interrupt; pending approvals are refused first so it is not queued behind an unanswered prompt - Approvals & questions — command / file-change / permission requests and
request_user_inputbecome UI cards, and the choice is sent back to Codex - Refresh & restart — the session⇄thread binding is persisted,
clientMessageIdmakes resends idempotent, and SSE reconnects re-read a snapshot - Images — paste or pick a screenshot; it is staged on disk and sent as a
localImageinput, and the transcript shows a thumbnail you can click to enlarge - Markdown — Codex's replies render properly (headings, lists, quotes, code, links)
Where it appears
A standalone Codex panel in the sidebar, a Codex view inside any session, a composer takeover for bound sessions, an @codex hand-off button in the native composer, and a main-page dock showing the Codex conversation plus its context (directory / model / approval / sandbox).
@codex is case-insensitive and also accepts the full-width @.
Verified
| Check | Result |
|---|---|
npm run check:utf8 |
every tracked file is clean UTF-8 |
npm run check:load |
green — bundle preamble, slot declarations, event shapes, Markdown renderer |
npm run check:smoke |
25/25 against a real codex app-server, including a real approval round-trip and a real interrupt |
npm run check:http |
22/22 over the exact RPC + SSE surface the browser uses |
Tested against Codex CLI 0.153.4 and the DSH Desktop desktop profile.
Install
dsh plugin --profile desktop add git+https://github.com/447662/dsh-native-codex-cli.gitThen restart DSH (a profile's bundle list is not hot-reloaded).
Requirements
- DeepSeek Harness with the Web GUI (desktop or
dsh web) - Codex CLI on
PATH, logged in (codex --version) - Node 18+ for the self-checks only
Known limitations
transport: daemon is still a reserved adapter; Codex threads are process-scoped (auto-resumed on demand); thread/turns/list is unimplemented in Codex 0.153.4 so history comes from thread/resume; and assistant/message cannot be authored by a plugin (it embeds the provider stream), so the DSH session log mirrors the user side and Codex's answers render in the main-page dock. See the README for the full list.
Full documentation: README (中文) · README (English) · Protocol reference