Preface¶
The philosophy of DSH is “everything is a plugin”. When an agent needs to ask a user for a password or username and password on the web, an interactive terminal is not the most natural interaction method. MagicCrazyMan/dsh-password-prompt is a DeepSeek Harness plugin, aiming to allow the agent to pop up a masked password panel via the password_prompt tool in the Web GUI, and continue executing tasks after the user inputs.
Overview¶
This is a DSH plugin maintained by MagicCrazyMan, with the package name dsh-password-prompt and license MIT. It targets the Web GUI client, providing the password_prompt tool to solve the problem of an agent requesting a password or both an account and a password from a user in a browser interface.
Core Capabilities¶
- Provides
password_prompttool: After the agent calls it, the browser pops up a masked HTML password panel, waiting for user input. - Supports
account + passwordmode: Adds anaccountfield to the same panel. - Passwords not returned directly to agent: Passwords are written to a private
0600file, and the tool only returns the file path; inaccountmode, it returns bothaccountand the file path. - Uses DSH public interfaces:
ctx.userQuestions.ask()and the browserconversation.composerchain; the plugin claimspasswordoraccount + passwordquestions with a priority-1composer entry. - Acts as a bundle + dual-face plugin: Declares
dsh.bundleanddsh.client, automatically scanning and serving/plugins/<id>/client.js. - Works on stock, unmodified DSH installations: No DSH core changes needed, nor manual editing of
cordis.patch.yml. package.jsondeclares client injection:@deepseek-ai/dsh-client-runtime,@deepseek-ai/dsh-client-connection,@deepseek-ai/dsh-client-ui-conversation,@deepseek-ai/dsh-client-ui-slots,@deepseek-ai/dsh-client-ui-primitives.
Installation and Enablement¶
First, install the plugin below, then handle pnpm >= 10 build permissions, and finally add a Web app bundle to the GUI profile.
1. Install the plugin using a demo profile¶
As npm release status is unconfirmed, the GitHub installation path recommended by Quick start is used here:
pnpm dsh plugin --profile demo add github:MagicCrazyMan/dsh-password-prompt
This step adds dsh-password-prompt to the demo profile.
2. Handling build permissions during installation for pnpm >= 10¶
The first pnpm add will fail as designed: pnpm >= 10 needs to execute git dependency build code only after permission is granted. The error message will provide a key bound to the commit SHA. Add similar content to the profile’s pnpm-workspace.yaml as prompted:
allowBuilds:
dsh-password-prompt@https://codeload.github.com/MagicCrazyMan/dsh-password-prompt/tar.gz/<commit-sha>: true
Then run the installation command again. allowBuilds is the permission to execute package build code; only install from trusted commits, and it is recommended to pin the commit SHA:
github:MagicCrazyMan/dsh-password-prompt#<sha>
3. Add a Web app bundle to the GUI profile¶
Non-web profiles only have @deepseek-ai/dsh-base by default, without a Web UI. The suggestion in the documentation is not to execute:
dsh plugin add @deepseek-ai/dsh-web-app
But to manually add @deepseek-ai/dsh-web-app to the dsh.profile.bundles in the profile manifest. For example:
{
"dsh": {
"profile": {
"bundles": [
"@deepseek-ai/dsh-base",
"@deepseek-ai/dsh-web-app",
"dsh-password-prompt"
]
}
}
}
If the profile already contains web related bundles, just ensure dsh-password-prompt is in the plugin set. After a plugin-set change, the running web server or dsh needs to be restarted.
Startup and Verification¶
Start DSH:
pnpm dsh --profile demo --host 127.0.0.1 --port 3082
Verify HTTP response in another shell:
curl --noproxy '*' -o /dev/null -w '%{http_code}\n' http://127.0.0.1:3082/
Expected return:
200
Verify plugin client files next:
curl --noproxy '*' -o /dev/null -w '%{http_code}\n' \
http://127.0.0.1:3082/plugins/dsh-password-prompt/client.js
Expected return:
200
Typical Usage¶
Say to the agent:
Connecting to 192.168.1.10 requires a password, ask me via password_prompt.
Or:
Ask me for the username and password for connecting to 192.168.1.10.
After the agent calls password_prompt, a masked panel pops up in the browser. After the user inputs, the tool returns the secretFile path; in account mode, it returns both account and the secretFile path.
In this flow, the password does not enter the model context. The agent can use the file content via an askpass script for ssh, or via:
sudo -S < file
for sudo. Delete the file after use.
Applicable Scenarios and Notes¶
- Suitable for handling agent tasks that require user input of passwords or accounts in the DSH Web GUI, replacing interactive terminal input.
- README Security Warning: This plugin has not undergone rigorous security testing or independent auditing and does not guarantee the security, confidentiality, or integrity of any passwords. Before using it for production, finance, or other highly sensitive systems, you must review the code and accept the risks.
- The plugin is loaded with the DSH process; source code review should be considered a necessary step during installation; pay special attention to build permissions during installation, client injection content, and file path handling.
allowBuildsallows executing package build code; only install from trusted commits, and it is recommended to pin the SHA.- Non-
webprofiles need to manually add@deepseek-ai/dsh-web-app; the web server ordshneeds to be restarted after plugin-set changes. - NPM release status is unconfirmed in the documentation, and this article does not list npm paths as a viable installation method.
Resources¶
- GitHub: https://github.com/MagicCrazyMan/dsh-password-prompt
- Directory Page (link from documentation, page content not separately verified): https://www.skillhub.cn/plugins/MagicCrazyMan/dsh-password-prompt