Use DeepSeek Harness with Cursor: ACP, MCP & Headless Integration
dsh has no official IDE plugin, but dsh-cursor-codex adds three channels: ACP, MCP, and headless. Set up DeepSeek Harness with Cursor in minutes.
Why You Need a Bridge
DeepSeek Harness ships with a local Web UI and a CLI, but no official IDE plugin. The community dsh-cursor-codex project (August 15, 2026) fills the gap with three integration channels, verified against dsh 0.1.0-rc.6[1].
The goal is simple: keep Cursor as your editor and let dsh do the agent work — or delegate from Cursor into dsh without leaving the IDE.
- Official dsh: Web UI + CLI + headless, no IDE plugin
- Community bridge: ACP channel, MCP channel, headless channel
- Verified on dsh 0.1.0-rc.6 (Aug 15, 2026)
Channel 1: ACP (Agent Client Protocol)
ACP is the emerging standard for connecting editors to agents. With dsh's ACP plugin, your ACP-capable client (Cursor, Zed, JetBrains) can drive the harness directly[1].
ACP support in Cursor and JetBrains is evolving fast in 2026 — check your IDE's ACP client settings and the dsh-cursor-codex README for the current wiring.
# Install the ACP channel
dsh plugin --profile acp add @jeremy9682/dsh-acp
# Start the ACP stdio server
dsh --profile acp
# Then point an ACP client (Cursor / Zed / JetBrains) at this serverChannel 2: MCP Tools for Cursor
The same project ships a zero-dependency MCP stdio server exposing dsh_delegate and dsh_health as MCP tools. Merge its cursor template into your ~/.cursor/mcp.json and Cursor gains dsh as callable tools[1].
Codex users configure the same server through dsh.config.toml instead of the Cursor JSON.
This channel is the reverse of the MCP setup guide: here dsh itself becomes an MCP server consumed by the IDE.
# 1. Install the MCP server plugin (per profile)
dsh plugin --profile web add <mcp-server-package>
# 2. Merge the cursor template into your Cursor config
# templates/cursor/mcp.json -> ~/.cursor/mcp.json
# 3. Reload Cursor, then:
# dsh_delegate "<task>" — hand a task to the harness
# dsh_health — check profile statusChannel 3: Headless One-Shot Tasks
No protocol needed for one-off jobs — dsh's headless profile runs a session, prints the final answer, and exits[2].
Headless mode is ideal for delegating from an IDE keybind, a CI job, or a terminal alias. Non-zero exit codes signal a failed command/config/startup, which makes it scriptable[2].
# Run a single task without a UI
dsh --profile headless "Refactor src/utils.ts and run the tests"The One-Click Open Editor Plugin
For the opposite direction — jumping from a dsh session into your editor — the community plugin dsh-plugin-open-editor adds a header button that opens the current project in your local editor: VS Code, Cursor, JetBrains, or Vim[1].
The common real-world workflow reported by testers: run the harness in a terminal (or Web UI), use Cursor as the IDE, and let the open-editor plugin sync the project context. 'Terminal harness + Cursor IDE, both doing their thing'[1].
- dsh session header → one click → open project in Cursor
- Supported editors: VS Code, Cursor, JetBrains, Vim
Workflow Tips
Based on early hands-on reports and the integration project's own docs[1].
- Use headless for quick delegated tasks from the editor; use ACP when you want full agent-in-IDE
- Keep your dsh profile dedicated to one project to avoid workspace confusion (dsh uses the launch directory as its filesystem root)[2]
- Store DeepSeek keys once in the Models screen; they are written-only afterwards[3]
- For model-side Cursor setup (the older proxy route for V4 Pro reasoning_content), see V4 Pro with Cursor
Stuck on any step? The common errors guide has the official troubleshooting table, and the MCP guide covers server wiring in depth.