DeepSeek Harness Plugin

xgone/dsh-netshell

Stars ★ 0 Downloads (30d) 783 Category Remote & Mobile Added 2026-09-05 npm @xgone/dsh-netshell

Local and remote SSH terminals for DeepSeek Harness Web with three permission levels, human approval for risky AI commands, and encrypted credential storage.

Install

# from npm (prebuilt)

dsh plugin --profile web add @xgone/dsh-netshell

# from GitHub (first run asks for allowBuilds approval — follow the hint, retry)

dsh plugin --profile web add github:xgone/dsh-netshell

Any plugin you install runs third-party code with your own permissions — it can read your files, use your credentials, and reach the network, and tool approvals don’t sandbox it. GitHub-sourced plugins also run build scripts at install time — pnpm blocks those until you allow them, so an install can stop with ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED or ERR_PNPM_IGNORED_BUILDS; dsh prints the exact key to add under allowBuilds in your profile’s pnpm-workspace.yaml, and the install works on the next run. Allowing a build is a trust decision: only install sources you trust, and pin a commit (github:owner/repo#sha).

README

DSH-NetShell lets you manage servers, use a live terminal, and keep a clear human checkpoint before risky commands run in DSH. Human input and AI actions share the same command guard.

Highlights

Capability What you get
Local terminal Start bash, sh, PowerShell, or cmd on the current device without SSH setup
Remote SSH Manage hosts, ports, users, and authentication with multiple sessions
Command guard allow runs immediately, ask waits for approval, deny blocks
Visible execution Human input and AI commands appear in the same live terminal panel
Credential isolation SSH passwords stay in DSH's encrypted store and never enter AI messages, tool results, or logs
Command history Review run, blocked, and allowed counts plus every decision record

Install

Published package:

dsh plugin --profile web add @xgone/dsh-netshell

From a local checkout:

dsh plugin --profile web add link:/path/to/dsh-netshell

Restart DSH Web after installation, then open Settings → Terminal.

Quickstart

Local terminal

  1. Open the Terminal tab in the main area.
  2. Click New on the Local terminal row.
  3. Type commands and watch the live output.

The local terminal does not read remote profiles or SSH passwords.

Remote server

  1. Open Settings → Terminal → New.
  2. Enter a name, host, port, and username.
  3. Choose password, private key, or ssh-agent authentication.
  4. Choose a permission level; keep guarded for a first connection.
  5. Return to the Terminal tab and click Connect on the server row.

A saved password is shown only as configured status and is never displayed again.

Risky commands

Commands are checked when you press Enter:

Level Behavior
open Everyday use; hard-deny rules still apply
guarded (default) High-risk commands pause for approval
locked Only explicitly allowed commands run directly

For an ask command, choose Run once, Always allow this command, or Deny. A permanent allow applies only to the current server and exact command text.

UI Preview

Terminal and dangerous-command confirmation

The terminal footer shows run, blocked, and allowed counts. Open History to review command records. Switching to another DSH tab does not disconnect a background session.

AI Tools

The plugin exposes two model tools:

Tool Purpose
netshell_servers List server profiles without passwords
netshell_run Run one command on a selected server

AI commands and human input use the same Guard. deny commands never run, and ask commands require a decision from you in the DSH confirmation UI or terminal panel. The AI cannot see passwords or forge approval results.

On the first use of a server by a model session, or after the user manually disconnects that server, netshell_run asks for remote-connection approval before starting SSH. Approval is retained per model session and server for the current plugin lifetime; different model sessions must approve independently even when they reuse the same SSH session. A network failure, SSH exit, or connection timeout only triggers reconnection for the already-approved model session. A manually opened GUI session does not replace model approval. If the confirmation service is unavailable, the plugin fails closed and does not connect automatically.

Security Boundary

This is an operation guard, not a complete security sandbox. It protects commands entering through this plugin's terminal and netshell_run; SSH connections created by other plugins or generic shell tools are outside its scope. Use locked for sensitive environments and review actions inside interactive programs carefully.

SSH host keys are stored in the plugin-private ~/.dsh/netshell/known_hosts, separate from the user's ~/.ssh/known_hosts.

Documentation

FAQ

What should I check when a connection fails? Verify the host, port, username, and authentication method. If the host key changed, confirm the server was intentionally rebuilt before removing the stale entry from the plugin-private known_hosts file.

Can the AI see my password? No. The Host reads it from DSH's encrypted credential store only while establishing SSH; profile listings, tool results, logs, and terminal output never contain the password value.

Content from the project README on GitHub ↗

Links

More in this category

View the whole category →

Community comments

Comments are public GitHub Discussions. Loading them connects to GitHub and Giscus; a GitHub account is required to post.