Introduction

If you maintain both the Codex and DeepSeek Harness (DSH) agent environments simultaneously, the problem during configuration migration is usually not a lack of tools, but a lack of clarity: Codex’s config.toml, hooks, Skills, and AGENTS.md are scattered across multiple user and project levels. Which ones can be directly mapped and used by DSH, and which are unsupported items, can only be verified one by one manually. Copying them directly is also risky—the permission semantics differ on both sides, and the scope of support for hooks is inconsistent.

dsh-codex-import isolates this step: it performs a read-only inventory first, then provides a categorized result; v0.1 does not execute any migration. DSH’s philosophy is “Everything is a plugin,” and this plugin corresponds precisely to the verification stage before migration.

What is this

dsh-codex-import is a Codex configuration compatibility scanner for DeepSeek Harness, maintained by QinXi-ai, licensed under MIT, and currently at version 0.1.0. One-sentence positioning: v0.1 only provides a read-only inventory and does not execute migration.

After installation, the plugin points to cordis.patch.yml via dsh.bundle.patch, registers the /codex-import command with the existing commands service, and reuses DSH’s existing command service.

Core Features

The plugin provides two commands:

/codex-import scan
/codex-import plan

Both commands are read-only and do not write files or execute migrations.

Scan Scope and Classification

The scanner will discover four types of Codex-side configurations:

  • User-level and project-level config.toml
  • hooks.json
  • Independent Skills
  • AGENTS.md instruction layer

The results are categorized into five types: READY, DISCOVERED, NEEDS_REVIEW, SKIPPED_UNSUPPORTED, and UNSUPPORTED.

The scanner simultaneously identifies five types of synchronous command hooks that the current DSH hooks-codex bridge can run: PreToolUse, PostToolUse, SessionStart, UserPromptSubmit, and Stop. Hook entries outside this range will not be considered runnable under the current bridge.

Output is Structurally Condensed

The scanner reads locally limited configuration for classification, but the output is structurally condensed: it only includes category, status, count, and general reasons, without returning configuration values, command bodies, Skill bodies, or absolute paths.

Clear Boundaries

v0.1 does not provide apply, specifically including:

  • Does not write any files or modify the DSH profile.
  • Does not execute hook commands or start the MCP server.
  • Does not copy or install Skills.
  • Does not read chat history.
  • Does not import, output, or save credential values.
  • Does not automatically translate Codex permission rules into DSH permissions—their security semantics differ.

No claims beyond facts are made regarding compatibility:

  • Does not claim complete compatibility with Codex Hooks. The current DSH bridge only maps the five types listed above and only runs synchronous command hooks.
  • Only identifies standard AGENTS.override.md / AGENTS.md filenames and does not parse custom instruction filenames specified by project_doc_fallback_filenames.
  • To prevent scan escaping, it does not follow symbolic links or non-regular files; symbolic link entries are marked as SKIPPED_UNSUPPORTED. This is more conservative than Codex’s native Skill discovery.

Regarding the future addition of an explicit apply, the README outlines the entry requirements: versioned new output directories, item-by-item selection, pre-write diff, credential references instead of credential values, a receipt for each migration item, syntax validation, and fail-closed for any unsupported items. v0.1 intentionally does not reserve a silent write entry.

Installation and Enablement

The engines requirement in package.json is Node >= 22.19, and the peerDependencies are @deepseek-ai/cordis >=4.0.1 <5 and @deepseek-ai/dsh-commands >=0.1.0-rc.2 <0.2.0.

The installation method is to first place the plugin in a location reachable by the package manager—by putting the directory in a GitHub repository and adding the dsh-plugin topic, or by publishing it to npm—before adding it to the target profile:

dsh plugin --profile web add dsh-codex-import

A directory under development can also be installed using a local package spec supported by the package manager.

Typical Usage

After installation, simply call the two commands in a DSH session to get the categorized inventory result:

/codex-import scan
/codex-import plan

During local development or auditing, you can verify using the three commands given in the README:

npm test
npm run check
npm pack --dry-run

npm test runs node --test; npm run check first performs syntax checks on src/scanner.js, src/format.js, and src/index.js sequentially, then runs the tests; npm pack --dry-run checks the actual packing content. Tests only use temporary manual fixtures and do not scan the developer’s actual Codex configuration.

Applicable Scenarios and Notes

Suitable for two types of people:

  • Developers who are currently evaluating migration from Codex to DSH, want to know how much of their existing configuration can be mapped and how much requires manual processing, and do not want to introduce any side effects during the evaluation phase.
  • Users who want to first understand the distribution of Codex-side configurations before deciding on a migration strategy.

Notes before use:

  • The plugin runs with the permissions of the current dsh process; you should check the source code and license before installing (this project is MIT licensed).
  • v0.1 is positioned as an inventory tool, not a migration tool. Do not expect it to translate permission rules, nor use it as a basis for claiming complete compatibility with Codex Hooks.
  • Symbolic link entries are marked as SKIPPED_UNSUPPORTED; this is intentional conservative behavior, not a defect.

Summary

dsh-codex-import changes “Can Codex configurations be migrated to DSH?” from a manual verification to a repeatable read-only scan: five types of categorized results, a clear scope of five types of bridgeable hooks, condensed output, and a clearly written “do not do” list. v0.1 does not execute migration, but the entry requirements for the future apply are already written in the README, and the boundaries are verifiable.

  • GitHub: https://github.com/QinXi-ai/dsh-codex-import
  • Community Directory: https://www.skillhub.cn/plugins/QinXi-ai/dsh-codex-import