DSH Plugins Marketplace

DSH Plugins

Plugins

/

dsh-fingerprint-remover

L

dsh-fingerprint-remover

Manifest valid

去除DSH的客户端特征,防止调用API时被检出

hasBundlePatchMachine translated

dsh-fingerprint-remover

移除 dsh 特征插件

test license

Contributing

Removes the client fingerprints that the WorkBuddy gateway rejects with 400 / code 11-128 (Illegal API invocation from an unapproved channel), at the outbound request boundary of the dsh.

Why this exists

The gateway does not reject the model. It rejects a contiguous text run in the request. Every dsh request used to start with these two sentences:

An @ prefix marks a path the user named explicitly.
Relative paths are resolved against the workspace root, while absolute paths refer to files or directories on the machine.

Measured against the same upstream (hy4-preview-f, same system slot):

RequestResult
First sentence alone200
Second sentence alone200
Both, back to back400 code 11-128
First rewritten + second original200
First original + second rewritten200
Both rewritten200

Rewriting the first sentence is what breaks the match; rewriting only the second also happens to break the pair, but the first is the anchor the gateway locks onto. The remover rewrites both, so no other adjacent pairing can re-form the fingerprint.

Beyond that pair, a dsh request carries several other identifiers the gateway can inspect: the harness identity sentence, the GUI paragraph, the checkout line, the local Web GUI URL, .dsh paths, dsh paths, dsh-* package names, HOST_* environment variables, reasoning blocks, tool results, and the attribution User-Agent. All of them are scrubbed.

What it touches

SurfaceTreatment
Reference-rules sentence pairFirst sentence paraphrased; second rewritten to a synonym
Harness identity sentenceRemoved
GUI paragraph...Web GUI whose URL the runtime context names. reworded
Runtime contextCheckout line and local Web GUI URL removed; workspace path replaced with <workspace>
Replayed historysystem / developer / assistant / runtime-context / user / tool
Reasoning blocksSame rules as visible text
tool_calls argumentsJSON string scrubbed
Tool descriptions and parameter descriptionsdsh, HOST_*, package names
User-Agentdsh token replaced with the WorkBuddy desktop UA
Attribution headersx-dsh-* removed

Normal user messages are scrubbed by default; set sanitizeUserMessages: false to leave them byte-for-byte alone.

The plugin never changes providers, models, routes, credentials, tool names, or the dsh itself. It only rewrites the serialized request and headers.

Install

dsh plugin add dsh-fingerprint-remover

From this repository:

dsh plugin add github:LhyCloud/dsh-fingerprint-remover

Or from a checkout:

dsh plugin --profile desktop add file:/path/to/dsh-fingerprint-remover

Restart the dsh once. On boot:

[dsh-fingerprint-remover] active 闂?prompt sanitizer on, UA -> WorkBuddy/5.8.4 workbuddy-ai/5.8.4 CLI/2.161.0

Commands

CommandEffect
/fingerprint (or /fingerprint status)Status, counters, last payload scan
/fingerprint scanLast outbound request: provider/model, fingerprints before 闂?after
/fingerprint on / offToggle in this process (restart restores config)
/fingerprint whyRoot-cause explanation

Read-only JSON status (loopback only):

GET /dsh-fingerprint-remover

Configuration

- insert:
    - id: dsh-fingerprint-remover
      name: 'dsh-fingerprint-remover'
      config:
        enabled: true
        providers: []                    # [] = all providers
        sanitizePrompt: true
        sanitizeToolResults: true
        sanitizeUserMessages: true
        sanitizeUserAgent: true
        stripAttributionHeaders: true
        userAgent: 'WorkBuddy/5.8.4 workbuddy-ai/5.8.4 CLI/2.161.0'
        referenceRulesReplacement: 'An @ prefix marks a path the user named explicitly.'
        hostRuleReplacement: 'Relative paths are resolved against the workspace root, while absolute paths refer to files or directories on the machine.'
        dumpPath: ''                      # optional: write the last sanitized request
        verbose: false

dumpPath writes a local JSON snapshot of the last scrubbed request, useful for verification. It is off by default and never leaves the machine.

How it works

The adapter's options object is frozen, so a llm/stream waterfall cannot replace it. The authoritative boundary is globalThis.fetch:

  1. parse the serialized JSON body;
  2. rewrite messages, system, and tools;
  3. re-serialize and send;
  4. rewrite the User-Agent and drop x-dsh-* headers.

The system-prompt/assemble hook is kept as well, so the prompt stored in the session log is already clean.

Verification

npm test        # 17 tests, no network

Replaying a real session (308 messages + 40 tools):

before 4768 fingerprints -> after 0

With the plugin loaded, /fingerprint scan reports the last real request's before -> after; a healthy value is 0 remaining.

Scope and limits

  • Rule-based and anchored to known fingerprints. A new upstream rule needs a new anchored rule here.
  • Does not forge machineId / sessionId or other proto-level identity fields.
  • Rewriting historical tool results means the model may see placeholders where a real path used to be; that is the intended tradeoff for stealth.
  • Test against a profile you can restore. Keep the backup files the plugin's package manager writes.

License

MIT

Comments

Loading…

Similar plugins

dsh-skip-browser-auth

by iasiv5

DSH 插件:(Web Profile 专用)自动跳过 BrowserAuth,访问 Web 地址即可直接使用,无需每次复制启动 URL 中的随机 Token 到浏览器。

Security & AuditManifest valid

★ 3

↓ 1.3k/wk

MIT

JavaScript

Oct 28, 2026

dsh plugin --profile web add @iasiv5/dsh-skip-browser-auth

by SJTUMalPan

DSH 宿主插件:把 dsh-usage-stats 生成的用量报表挂到宿主 Web 的 /usage,鉴权复用宿主登录态(零依赖)

Development & InfrastructureManifest valid

★ 0

MIT

JavaScript

Sep 27, 2026

dsh plugin --profile web add dsh-usage-dashboard

by Wilfred-wei

DSH plugin: managed local fingerprint relays so DSH can reach providers that gate on the client's TLS fingerprint

Manifest valid

★ 0

MIT

TypeScript

Aug 24, 2026

dsh plugin --profile web add dsh-fingerprint-relay

by heiheiha798

Ownership-checked tools and HTTP routes to list, release and permanently delete subagent sessions, with automatic web UI refresh after deletion.

Workflow & AutomationTerminal & ClientsSessions & MessagesManifest valid

★ 4

MIT

JavaScript

Oct 22, 2026

dsh plugin --profile web add dsh-plugin-subagent-delete

by antibrow

DeepSeek Harness plugin: give your agent a browser with a persistent identity - engine-level fingerprint spoofing, unlimited free local profiles, Android device emulation, passkeys that survive, and r

Tools & CapabilitiesManifest valid

★ 12

MIT

JavaScript

Sep 12, 2026

dsh plugin --profile web add dsh-antibrow

by Anna-la

Clean-mode for the Web GUI: hover any element and right-click to remove it; removals survive reloads and are restorable from the settings page.

UI & ExperienceTerminal & ClientsManifest valid

★ 0

↓ 144/wk

MIT

JavaScript

Aug 28, 2026

dsh plugin --profile web add dsh-simplify