DSH Plugins Marketplace

DSH Plugins

Plugins

/

Security & Audit

/

dsh-git-auth-plugin

W

dsh-git-auth-plugin

Manifest valid

GitHub and GitLab CLI authentication through DSH credentials or environment tokens, with workspace-local SSH deploy keys and plugin settings.

UI (client)hasBundlePatch

dsh-git-auth

GitHub, GitLab, and SSH authentication tools for DeepSeek Harness

License Top language Token handling

English · 简体中文

Give DSH agents a small, approval-aware toolset for inspecting and managing gh, glab, and SSH credentials on the host.

Check authentication                 →  auth_status
Sign in with GH_TOKEN / GITLAB_TOKEN →  client_auth
Manage this workspace's deploy key   →  ssh_key

Contents

Features

FeatureDescription
Unified statusReports gh, glab, SSH-agent, and public-key status in one call.
Non-interactive loginAuthenticates gh or glab with a token from plugin settings or the DSH host environment.
Workspace deploy keysGenerates, configures, lists, and displays Ed25519 keys under each workspace's .ssh directory.
Approval-aware writesKeeps key changes inside workspace access and requests host approval for shared CLI/agent changes.
Settings UIExposes hosts, timeout, key path, comment, and ssh-add defaults under Settings → Plugins.

[!IMPORTANT] Access tokens are not accepted as tool arguments. Save them in the plugin settings or DSH host environment so they do not enter model context or tool-call logs.

[!WARNING] This release is for a single user or mutually trusted users. Hosts, tokens, gh/glab profiles, and the SSH agent are shared by the DSH instance. Workspace-local key paths are routing, not a multi-user security boundary.

Tools

ToolPurposeWrites state
auth_statusShow GitHub CLI, GitLab CLI, SSH-agent, and public-key status.No
client_authLog gh or glab in or out.Yes; requests escalation if host access is not already granted
ssh_keyGenerate, configure, list, or display the current workspace's Ed25519 deploy key.Generation/configuration use workspace access; ssh-add requests host access

Example requests:

Check my GitHub, GitLab, and SSH authentication status.
Use the configured GH_TOKEN to sign in to GitHub.
Generate this workspace's deploy key and show its public key.
Configure this repository to use the existing workspace deploy key.

Installation

From source

  1. Clone the plugin into a path visible to the DSH host:

    git clone https://github.com/Wisdoverse/dsh-git-auth-plugin.git \
      /path/to/local-plugins/dsh-git-auth
    
  2. Add it to the target profile:

    dsh plugin --profile web add /path/to/local-plugins/dsh-git-auth
    
  3. Restart the profile.

The package declares its DSH bundle in package.json, and cordis.patch.yml mounts the tool plugin in the host's global tool layer.

Configuration

Open Settings → Plugins → Plugin configuration, or edit the git-auth section in the DSH settings document (normally $DSH_HOME/settings.yaml).

SettingDefaultAccepted value
ghHostgithub.comBare GitHub hostname, optionally with a port
glabHostgitlab.comBare GitLab hostname, optionally with a port
commandTimeoutMs60000Integer greater than or equal to 1
sshPathEmptyDirect child of <workspace>/.ssh; empty means <workspace>/.ssh/id_ed25519
sshCommentEmptyDefault comment passed to ssh-keygen
sshAddAgentfalseWhether generated keys are loaded with ssh-add by default
git-auth:
  glabHost: gitlab.example.com
  commandTimeoutMs: 60000
  sshPath: id_ed25519
  sshComment: developer@example.com
  sshAddAgent: true

Settings are resolved at tool-call time, so host-side settings-file updates do not require a plugin reinstall. DSH may restrict settings writes from remote browsers; edit the host settings file if the UI is read-only.

sshPath is a shared default name resolved separately inside every session workspace. ssh_key generate also writes that repository's local core.sshCommand; use action: configure to bind an existing key. That command uses <workspace>/.ssh/known_hosts, so it also works when the DSH process has no HOME.

Key names ending in .pub, .gitignore, and known_hosts are reserved. Public-key output validates a complete OpenSSH public key and omits its comment; the on-disk comment is preserved, and showing a public-only file remains supported.

Token handling

The plugin configuration card includes write-only GitHub Token and GitLab Token fields. They store GH_TOKEN and GITLAB_TOKEN through the DSH credentials service. The client requests only credential metadata, never saved values; backend authorization, storage, and readback protection are owned by the DSH credentials service.

The login tool resolves credential references in this order:

ClientPrecedence
ghGH_TOKEN → GITHUB_TOKEN
glabGITLAB_TOKEN → GLAB_TOKEN → GITLAB_ACCESS_TOKEN

Existing deployment environment variables remain supported. When the DSH credentials service is present, it owns environment/store precedence and write permissions; otherwise the plugin reads the environment directly. Do not paste tokens into chat or commit them to this repository.

Tokens are instance-global in the current DSH credential model and therefore shared by all workspaces. Use a separate DSH instance for another user or trust domain.

An environment token can be sent only to that client's configured host. To use a different host, update ghHost or glabHost first, then restart DSH if the host process also needs a new environment token.

Security

This plugin manages host credentials, so its boundary is deliberately narrow:

  • Tokens are resolved per login through the DSH credentials service (or host environment fallback) and passed to the CLI over stdin, not tool arguments or command strings. Host stdin logging and CLI output masking require separate deployment verification; status results include account and workspace metadata.
  • Authentication hosts are validated as bare hostnames and encoded as single shell arguments.
  • SSH key paths must resolve to direct children of the current workspace's .ssh directory; existing symlinks at the directory, private-key, or public-key path are rejected.
  • Repository-local core.sshCommand pins Git to the workspace key with IdentitiesOnly=yes and a workspace-local known_hosts; a missing host is accepted on first use (accept-new) and later key changes are rejected.
  • Before generating or configuring keys, the plugin appends an effective * rule to .ssh/.gitignore, preserving existing rules. This also protects keys created before git init. Already tracked .ssh files cause the operation to stop without changing the index. Untrack them explicitly and rotate any key previously published; ignore rules cannot protect against git add -f or remove secrets from history.
  • Read operations and workspace key writes keep the calling session's sandbox boundary. Read-only sessions request workspace-write approval.
  • Shared CLI credential mutations request DSH escalation when the session does not already have the required host access.
  • Generated keys use Ed25519 and an empty passphrase for non-interactive agent use. Protect the DSH host and its credential directory accordingly.

Development

Commands

CommandPurpose
node test/compose.test.jsRun command/token/path assertions and SSH disclosure/Git exclusion regressions; requires Node, Git, OpenSSH and Bash.
node test/tools.test.jsExercise registered SSH tool handlers after installing peer dependencies.
node --check lib/index.jsSyntax-check the host plugin.
node --check lib/client.jsSyntax-check the settings client.

Project structure

PathResponsibility
lib/index.jsTool registration, approvals, settings, and shell execution.
lib/compose.jsPure host, token, shell-argument, and SSH-path helpers.
lib/client.jsBrowser-side settings card.
cordis.patch.ymlDSH bundle mounting.
test/compose.test.jsDependency-free regression checks.

The running Web profile loads the plugin at startup. Restart it after changing the source files.

License

Released under the MIT License.

Comments

Loading…

Similar plugins

dsh-git-credentials

by revive

DeepSeek Harness plugin: GitLab and GitHub API tokens stay out of the model context — encrypted at rest (AES-256-GCM), tools on demand, web settings panel.

Manifest valid

★ 3

↓ 267/wk

MIT

TypeScript

Oct 22, 2026

dsh plugin --profile web add dsh-git-credentials

by dpskk2

Two-way sync of DSH sessions, workspace mappings, settings and patches between machines through your own private GitHub repo (API keys stay machine-local).

Development & InfrastructureTerminal & ClientsSessions & MessagesManifest valid

★ 1

↓ 146/wk

MIT

JavaScript

Sep 26, 2026

dsh plugin --profile web add dsh-sync-plugin

One plugin for DeepSeek Harness with durable autonomous loops, sidebar GitHub discovery, AI-assisted installation, and workspace shortcuts.

UI & ExperienceManifest valid

★ 0

dsh plugin --profile web add dsh-do

by Moon-shiyue

便携式 GitHub 连接插件 for DeepSeek Harness (DSH):composer 左下角一键授权,AI 可通过 github_api 工具操作你的 GitHub。Portable GitHub connection plugin: OAuth device flow / PAT, proxy & system-CA aware.

Development & InfrastructureManifest valid

★ 13

MIT

JavaScript

Oct 27, 2026

dsh plugin --profile web add dsh-github-connect

by LoserFox

DSH 插件:git 提交固定使用环境自身作者身份(优先 gh CLI 登录账号,GitHub noreply 邮箱),GIT_AUTHOR_*/GIT_COMMITTER_* 环境变量注入压过一切 git config

Development & InfrastructureManifest valid

★ 6

JavaScript

Aug 13, 2026

dsh plugin --profile web add @loserfox/git-identity

by w32394045-dotcom

DeepSeek Harness 的 GitHub 接入插件:设置里登录账号,agent 用它真实干活(12 个工具 + 云计算与成本护栏)。token 不经过模型上下文。

Manifest valid

★ 0

MIT

JavaScript

Oct 6, 2026

dsh plugin --profile web add @ptfm/dsh-github