Skip to content

Claude Code compatibility ​

dsh-cc aims for a useful Claude-Code-style workflow: the same agent loop, tool names, hooks, slash commands, and permission modes you are used to, running on the dsh harness. It is not byte-for-byte emulation of Claude Code, and it is not a goal to clone every vendor-bound feature.

dsh-cc is not Claude Code and is not a wrapper around Claude Code.

How to read parity honestly ​

Compatibility here is judged per capability, not as a single blanket claim. For each capability, four independent dimensions are tracked:

  • Recognized — does dsh-cc understand the Claude Code form (a hook event, a slash command, a config key)?
  • Mounted — is it actually wired into the shipped profile, or only present in the codebase?
  • Behavior — does the underlying behavior match upstream (full/partial/missing)?
  • UX — does the user-facing surface match?

A capability can be recognized but not mounted, or behave correctly while the UX differs. "Partial" is not a footnote to hide: it means usable today with known, documented differences. Several rows are deliberately marked missing — either because no design exists yet, or because the feature is vendor-bound and outside parity scope.

The single source of truth ​

The generated parity matrix tracks every capability row with these dimensions, evidence links, and deviation notes:

dsh-cc parity matrix

It is regenerated from a machine-readable capability manifest, so treat it as authoritative over any prose — including this page.

WARNING

The examples below describe the state as of dsh-cc v0.9.0 (cdfcca16). Check the matrix for the current state before relying on any of them.

A few example highlights (as of v0.9.0) ​

  • Hook executors — command and http executors are always on; prompt and agent executors are gated behind enablePromptHooks / enableAgentHooks, default off. Partial.
  • /resume — lists sessions, but switching is host-owned (dsh --resume <id>). Partial.
  • Schedule / reminders — after_seconds / at / every_seconds (>=300s) are supported; cron-expression selectors are not yet. Partial.
  • Background jobs — the dsh jobs tools carry the equivalent surface under dsh names; CC's TaskCreate/TaskOutput/TaskStop naming is not aliased. Partial.
  • WebSearch and plan mode — full parity, mounted by default.
  • Divergent-by-design extension surfaces — v0.9.0 adds more dsh-cc extension rows beyond Claude Code, marked divergent in the matrix: engine.moa (tiered cascade routing for the main conversation; its routing scope is main-session turns only — subagent sessions are never classified, overlaid, or judged; a notice sanitizer drops phantom [model changed: …] notices while the overlay is active; a mid-session /model selection disarms moa until it returns to the boot pair), engine.acp-front-end (the ACP lane), engine.completion-gate, engine.verify-before-retry, engine.config-snapshot, sessions.progress-rebuild (default ON since 2026-10-16, was ship-dark), and subagents.ephemeral-agents (allow-listed read-only one-shot agents). The same release also adds skills.usage-telemetry as a full-parity capability row.
  • Git worktrees — the worktree rows (workspace.worktree-ecosystem, workspace.worktree-launcher, workspace.worktree-lifecycle, workspace.worktree-tools) are behavioral/ux partial, with downgrade-kind deviations (for example, no .worktreeinclude include-copy in launcher --worktree sessions). See /guide/worktrees.
  • Subagents and plugins — subagents.isolation is behavioral/ux partial (downgrade); plugins.rules (the Cursor dialect) is behavioral divergent with partial ux; settings.actor-contract is behavioral divergent with partial ux; hooks.worktree-events (WorktreeCreate/WorktreeRemove) is behavioral/ux partial.
  • Permissions and auto mode — auto mode is now strict-rule and content evaluation is deny-first, matching Claude Code; permissions.rules stays partial. /auto-mode is partial by design: read-only introspection rather than Claude Code's config-file editor. See /reference/permission-modes.
  • Workflow engine — engine.workflow is behavioral divergent with partial ux (same-session replay only, per-user directory under $DSH_HOME); the Ralph loop is now its own full-parity row. Same-session workflow resume now matches each journal line by request hash rather than arrival position, so replay is order-independent for concurrent combinators like pipeline / parallel.
  • Hooks — SubagentStart / SubagentStop are now partial: they report a constant agent_type of general-purpose and a child-scoped session_id.
  • New dsh-cc extensions — plugins.codex-bridge and plugins.grok-bridge (first-party plugins, see /guide/plugins), plugins.foreign-rules (imports cline/windsurf/copilot rule files from the session cwd; opt out with cc-foreign-rules.disabled), and engine.advisor-watchdog are marked divergent. /export is now divergent because it redacts secrets, which Claude Code does not.

Next ​

dsh-cc is not Claude Code and is not a wrapper around Claude Code. Not affiliated with or endorsed by Anthropic.