Introduction

If you already have a Cursor subscription and want to run agent tasks in DeepSeek Harness (DSH), there are usually two paths: apply for an API Key on the Cursor side, or switch back to Cursor IDE / Cursor CLI to operate. The former requires managing an extra set of keys, while the latter interrupts the existing workflow inside DSH.

dsh-cursor-subscription solves this problem: log in to your Cursor account via browser PKCE within DSH, directly using the Cursor subscription without needing an API Key, and without relying on Cursor IDE or Cursor CLI. Below is an introduction to its features, installation methods, and usage.

What is this

dsh-cursor-subscription is a DSH plugin maintained by orrinzeng under the MIT license. Under DSH’s “everything is a plugin” system, it integrates Cursor subscription models into the model selector, available immediately after login; dialogue tool calls are executed via local DSH tools.

Its nature needs to be clarified first: the plugin interfaces with Cursor’s unpublished Agent protocol (agent.v1.AgentService/Run), which is a community reverse engineering project and may stop working if Cursor changes its server-side implementation. The project has no affiliation with Anysphere or Cursor and is not endorsed by them; use it in compliance with Cursor’s Terms of Service.

Core Features

  • Login & Credentials: Log in via browser PKCE in DSH to directly use the Cursor subscription without an API Key; credentials are stored in the DSH local credential store and access tokens are automatically refreshed.
  • Model Discovery: Dynamically discover currently available models via Cursor’s GetUsableModels; a built-in fallback model list is used if discovery fails.
  • Chat & Tools: Streaming chat output for reasoning content, supporting DSH tool calls; tool requests are converted to local DSH tool execution, not using Cursor’s file system tools.
  • Usage Viewing: The settings page allows viewing and manually refreshing subscription usage, including request counts, Auto + Composer usage, other models (API) usage, spending by model, on-demand spending, and billing cycles; it also allows viewing and manually refreshing currently available models for the account, as well as login status and token expiration.
  • Runtime Configuration: Configurable upper limit on tool rounds for a single run, as well as HTTP retry count, interval, and status codes.

Installation and Enablement

Install using the dsh command:

dsh plugin --profile web add dsh-cursor-subscription

Verify after installation:

dsh plugin --profile web list dsh-cursor-subscription --depth 0
dsh --profile web --dump-config

The installed package list should contain exactly one dsh-cursor-subscription, and the combined configuration should contain exactly one cursor-subscription entry.

If DSH is running, it must be manually restarted after installation.

For local development, install directly from a local path. Run this in the profile directory (e.g., %USERPROFILE%\.dsh\profiles\web):

pnpm add file:D:/mcp/dsh-cursor-subscription

Then add dsh-cursor-subscription to the dsh.profile.bundles array in package.json, and restart DSH.

If you are used to agent management plugins, you can also send the AGENTS.md link in the repository to an Agent to complete installation, updates, uninstallation, and verification according to the instructions.

Login and Usage

  1. Open DSH Settings -> Cursor Subscription.
  2. Select Browser Sign-in; the browser will open the Cursor login page.
  3. Complete the login authorization in the browser; the settings page will automatically display as logged in.
  4. Select a Cursor model in the model selector, such as composer-2 or claude-4-sonnet.

When tools are needed during the conversation, the plugin converts Cursor’s tool requests to local DSH tool execution. The results are returned to the model via the conversation history, and Cursor’s file system tools are not used at any point.

Two common issues:

  • DSH still shows not logged in after login: Confirm the browser has fully completed the authorization flow and redirected back to the completion page. The login polling waits for up to about 2.5 minutes.
  • Request returns 401: Indicates the access token has expired and the refresh token is invalid; you need to log in again on the settings page.

Also, if the model list is empty, the result of GetUsableModels depends on the account type; if discovery fails, the plugin uses a built-in model list, and you can also manually enter model names.

Runtime Configuration and Retry Strategy

The Runtime settings card on the settings page controls two things: the upper limit on tool rounds for a single Cursor run, and the HTTP retry strategy (retry count, interval, status code list).

The retry count refers to the number of additional attempts, defaulting to 0 (disabled). Since Cursor’s streaming POST protocol cannot prove that a failed attempt was not processed on the server, enabling retries may consume model workload or usage repeatedly. Retries only occur when there is no output yet, and the initial HTTP status code matches the configured list.

Suitable Scenarios and Notes

Suitable for users who already have a Cursor subscription and wish to directly reuse this quota within DSH, especially in scenarios where they do not want to apply for and manage an API Key, or switch back and forth between Cursor IDE / CLI and DSH.

Pay attention to the following points before use:

  1. The plugin runs with the permissions of the current dsh process. It is recommended to review the repository source code and license (MIT) before installation to confirm everything is correct.
  2. The plugin relies on Cursor’s unpublished protocol and may stop working after Cursor server-side changes; if a request fails, check if there is a plugin update.
  3. Cursor’s native image generation, web search, and other functions are not within the scope of this plugin.
  4. Use the following commands for updates and uninstallation; if DSH is running, you must manually restart after performing these operations:
dsh plugin --profile web update dsh-cursor-subscription   # Update
dsh plugin --profile web remove dsh-cursor-subscription   # Uninstall

Summary

dsh-cursor-subscription integrates Cursor subscription into DSH: browser login, automatic token refresh, dynamic model discovery, and local tool execution, eliminating the burden of API Key management. Also, because it relies on an unpublished protocol, you should have expectations regarding potential deprecation when using it.

Community directory page: https://www.skillhub.cn/plugins/orrinzeng/dsh-cursor-subscription
Source code repository: https://github.com/orrinzeng/dsh-cursor-subscription