DSH plugin creation mode: persist config via plugin_manager
A DeepSeek Harness (DSH) plugin can be configured and persisted with prompts: in creation mode, the agent writes a config-only bundle, inserts the target plugin in a patch, and installs it via plugin_manager install_bundle. The plugin config belongs to the current profile, affects its sessions, and survives a process restart; with HMR enabled, new tools appear in the same running session. This is the official path to change plugin config in natural language without editing files by hand.
What a DSH plugin creation mode provides: Plugin Manager and read-only runtime inspection
Creation mode provides two things: Plugin Manager and a read-only runtime inspection (source). The division of labor is:
- Plugin Manager — installs / removes bundles and disables entries. Expect: the agent lands config changes from prompts.
- Read-only runtime inspection — reads the current running state. Expect: you can see the current state before changing config, avoiding blind edits.
- Config ownership — plugin config belongs to the current profile and affects that profile's sessions. Expect: what you change is this profile's bundle and patch, and it survives a restart.
This means two things: first, prompt-based config is not temporary in-session state but is really written into the profile; second, it uses the same config system as custom profiles, one edited by hand and the other edited by the agent.
How a DSH plugin installs config with prompts: an MCP server example
The official example connects an MCP server: start a Web profile, choose creation mode, and have the agent configure the server on the current profile with a prompt (source). The prompt looks like:
Configure the MCP server at
<endpoint>on the current profile, nameddemo. Enable its tools immediately, then call its ping tool and tell me the result.
The agent's action sequence is fixed:
- Write a config-only bundle — generate a bundle that contains only configuration. Expect: no plugin code is changed.
- Insert the plugin in a patch — for example
@deepseek-ai/dsh-mcp-client. Expect: the target plugin is mounted into the plugin tree. - Run
plugin_manager install_bundle— install the bundle. Expect: it returns a management result, and with HMR enabled the tool appears in the same session immediately.
Verification needs two pieces of evidence: the management result application: applied, and a successful call to mcp__demo__ping. Seeing only the first is not enough to prove the config really took effect. To learn the MCP client's config fields, see MCP plugin config.
How to read DSH plugin config results: applied, restart-required, and failure
A management result has three directions, and each is read differently (source):
application: applied— config is active. Expect: usable in the current session, verified with one real tool call.restart-required— the entry is saved but not yet active. Expect: it takes effect after a process restart; do not misread it as failure.- Failed entry — the config itself has a problem. Expect: fix the config per the error and retry.
Read the bundle patch before changing config to confirm the entries you are about to change; disabling an entry or removing a bundle goes through Plugin Manager, and the accepted config and connection-failure behavior follow the official MCP client reference.
Three self-checks after writing: did you double-verify with applied plus one real call; did you distinguish restart-required from failure; did you read the patch before changing it. To compare how community plugins are installed into a profile, search DSH Plugin Hub.
FAQ
DSH plugin creation mode provides two things: Plugin Manager for installing or removing plugins, and a read-only runtime inspection for reading the current state. Together they let an agent change plugin config with prompts instead of editing files by hand.
A DSH plugin configures an MCP server by starting a Web profile in creation mode and naming the server on the current profile with a prompt. The agent writes a config-only bundle, inserts @deepseek-ai/dsh-mcp-client in a patch, then runs plugin_manager install_bundle to install it and enable its tools immediately.
A DSH plugin whose saved entry returns restart-required has not activated yet and needs a restart, while a failed entry needs a config fix. With HMR enabled, new tools appear in the same running session, so you should check both the manager result application: applied and a real call.
A DSH plugin config edited with prompts belongs to the current profile and survives a process restart. So editing config is really editing that profile's bundle and patch, not temporary in-session state.
A DSH plugin should read the bundle patch first and confirm the entries it is about to change. Disabling an entry or removing a bundle goes through Plugin Manager, and the accepted config and connection-failure behavior follow the official MCP client reference.
Related Terms
- creation mode
- creation mode is the DSH plugin runtime mode that lets you configure plugins with prompts. It provides Plugin Manager and read-only runtime inspection, so an agent can add or remove plugin config and persist it to the current profile.— https://deepseek-harness.github.io/deepseek-harness/en/develop/practice/dynamic-cordis
- Plugin Manager
- Plugin Manager is the DSH plugin component used in creation mode to manage plugins. It installs or removes bundles and disables entries, and it is the execution entry point for prompt-based plugin configuration.— https://deepseek-harness.github.io/deepseek-harness/en/develop/practice/dynamic-cordis
- plugin_manager
- plugin_manager is the DSH plugin tool surface whose install_bundle call installs a config-only bundle. The agent uses it to drop the patch it wrote into the current profile and enable the plugin.— https://deepseek-harness.github.io/deepseek-harness/en/develop/practice/dynamic-cordis
- restart-required
- restart-required is a DSH plugin config-management result status meaning a saved entry is not active yet. It takes effect only after the process restarts.— https://deepseek-harness.github.io/deepseek-harness/en/develop/practice/dynamic-cordis