DeepSeek Harness (dsh) is a plugin-architecture-based agent development framework. By default, DSH enables some plugin rows used to send diagnostic data, session logs, and feedback to DeepSeek. If you want your local runtime environment not to send this data to official servers, you can use the dsh-no-phone-home plugin to block it.
What It Is¶
This is a patch-only bundle maintained by mattcarvercom. It does not contain runtime code; instead, it disables built-in DSH plugin rows by modifying configuration. These rows are responsible for exporting telemetry data, diagnostic information, or recording feedback for later upload.
Core Features¶
The plugin blocks outbound data by disabling the following plugin rows:
session-telemetry-otel: Exports a session log prefix todsh-otel-collector.deepseeksvc.comwhen a user submits feedback.otel: OTLP transport layer shared by session telemetry and product telemetry.session-log-deepseek: Attaches incremental session logs (dsh_session_log, max 8 MiB) to every request sent to the DeepSeek API.plugin-package-inventory-deepseek: Attaches the list of currently active plugins (dsh_plugin_packages) to every request sent to the DeepSeek API.desktop-product-telemetry,product-analytics: Desktop product analytics and its OTLP exporter. Upstream enables these only in desktop profiles by default; this plugin disables them in all profiles.command-feedback,message-feedback,ui-message-feedback: Feedback buttons, message ratings, and notes. These records are used only for authorization and telemetry upload; disabling them removes rating buttons from messages.
The patch targets row IDs only. DSH skips rows it does not have, so the plugin is compatible with older DSH versions (for example, some rows were added only after 0.1.7-rc.2).
Installation and Activation¶
Use the official install command to add the plugin to the web profile:
dsh plugin --profile web add github:mattcarvercom/dsh-no-phone-home#v1.0.0
After installation, if HMR (Hot Module Replacement) is active (the default behavior of the web profile), the change takes effect immediately; otherwise, you need to restart dsh. You can also toggle it on the plugin’s page.
To increase defense in depth, it is recommended to set the following environment variable when starting dsh:
DSH_TELEMETRY_DISABLED=1
DSH applies this switch after applying all patch layers, so even if a row is re-enabled through the UI, DSH_TELEMETRY_DISABLED ensures it remains disabled.
Typical Usage¶
From the clone directory of this plugin’s repository, you can run the following commands to verify:
# 审计当前配置文件,模拟 dsh 的组装方式
npm run check
# 检查补丁是否与当前安装的 dsh 版本兼容
npm test
Both commands find DSH through dsh in PATH. You can also use a different DSH version by setting DSH_PACKAGE_DIR to point to the installed package, or DSH_CHECKOUT to point to the source checkout location.
checkcombines all layers in DSH’s order: each plugin package, profile patch,$DSH_HOME/cordis.patch.yml, and finallyDSH_TELEMETRY_DISABLED. If any blocked row is enabled, or the plugin is not mounted, the command returns 1.npm testchecks whether the patch is compatible with thebaseandweb-appplugin packages of the installed DSH.
Applicable Scenarios and Notes¶
- Only blocks data sending: The plugin does not modify API request headers sent by the DeepSeek model adapter (such as
x-deepseek-harness-user-idandx-deepseek-harness-session-id). These headers contain only random IDs and session IDs, and are sent only when using DeepSeek routing; removing them requires modifying DSH itself. - Preserves functionality: The plugin does not disable features you actively use, such as DeepSeek account login and DeepSeek web search, because these are not telemetry.
- Version compatibility: Older DSH versions may lack some rows (such as
otelor desktop-related rows); the plugin handles these cases gracefully.
Conclusion¶
dsh-no-phone-home is a lightweight solution for privacy needs. Through configuration-level changes, it cuts off the data transmission path to official servers while preserving the integrity of DSH’s core functionality.
Resource Links
* GitHub repository
* Plugin directory page