Skip to content

CLI flags ​

dsh-cc is an optional thin wrapper: it translates a few flags, then spawns the canonical dsh --profile tui command. On first run it bootstraps $DSH_HOME/profiles/tui by installing the three CC bundles (@dsh-cc/bundle-permissions, @dsh-cc/bundle-shell, @dsh-cc/bundle-tui pinned to the launcher's version), so install both packages and start:

sh
$ npm install -g @deepseek-ai/dsh @dsh-cc/cli
$ dsh-cc

The launcher enforces a harness floor at bootstrap: the installed dsh must be >= 0.2.0-rc.2 or startup refuses to proceed.

Flags ​

All flags are handled by the launcher; resume-mode flags are stripped from argv before anything is forwarded to dsh. Combined shorts (such as -cn) are not recognized — each flag must be its own token.

FlagWhat it does
--version / -VPrint the launcher's own package version and exit.
--new / -nStart a fresh session: the TUI starts clean and must not read any resume marker.
--resume <id>Resume the session with that id. The --resume=<id> form works identically.
--continue / -cContinue the previous session; the TUI shows a "no previous session to continue" notice when no marker exists.
--worktree [name]Start the session inside a git worktree at <repoRoot>/.claude/worktrees/<slug> on branch worktree-<slug> (random slug when no name is given). A newly created worktree starts a fresh session (equivalent to --new); re-invoking --worktree <name> when that directory already exists reuses it and falls back to the default auto-resume. A PR reference also works: --worktree '#12' (quote the #), a GitHub PR URL, or a GitLab MR URL creates .claude/worktrees/pr-<n> on branch worktree-pr-<n>, fetching pull/<n>/head on github.com, merge-requests/<n>/head on gitlab.com (both tried, in order, on other hosts). Requires a git repository with at least one commit.
--profileNot consumed by the launcher itself: it always forwards dsh --profile tui, the canonical command.

When no explicit choice was made, the TUI reads its own project resume marker and auto-resumes the project's last session if one exists. --resume / --new override the worktree fallback.

Every launch runs a bounded boot-time sweep of stale worktree-* worktrees and picks the worktree base via settings — see /guide/worktrees.

On quit, the TUI prints the session id and the resume command for picking the session back up; set DSH_CC_DISABLE_EXIT_TIP='1' to disable it (/reference/env-vars).

dsh-cc acp — the ACP lane ​

dsh-cc acp [<args>] boots the cc-acp profile (installed under ~/.dsh/profiles/cc-acp) as an Agent Client Protocol (ACP, v1) server over stdio, letting an ACP client such as Zed drive dsh-cc agents over JSON-RPC. The server is a verbatim port of the harness @deepseek-ai/dsh-acp plugin with CC preset composition; its presetId config defaults to 'cc'. To wire the lane into an editor, point the agent server at dsh-cc:

json
{"command": "dsh-cc", "args": ["acp"]}

The working directory comes from the editor. The same harness floor and bootstrap/reconcile behavior as the TUI launch described above apply here too.

How flags reach the TUI ​

The launcher is a thin flag translator: it derives the session-mode environment the TUI plugin consumes (for example DSH_CC_PROFILE=tui, DSH_CC_RESUME_SESSION=<id> or '', DSH_CC_CONTINUE='1', DSH_CC_AUTO_RESUME='1', and the worktree descriptor in DSH_CC_WORKTREE), then spawns dsh --profile tui. It never reads a resume marker itself — marker reads and writes are owned by the TUI plugin. The launcher-owned resume variables are sanitized from the inherited environment at entry and re-derived only from the current invocation's argv, so do not set them manually when launching dsh-cc.

TIP

Full details of the DSH_CC_* variables live in /reference/env-vars.

Next ​

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