DeepSeek Harness Plugin Hub

Publish and manage complete Harness Profiles. Discover Plugins for your next setup.

Explore

PluginsPresetsDocsNews

Community

Publish a pluginContactReport an issue

Resources

Plugin Hub on GitHubDeepSeek HarnessSystem statusPrivacy notice
© 2026 DeepSeek Harness Plugin HubPowered byPaxTech

Independent and unofficial. Not affiliated with, authorized by, or endorsed by DeepSeek.

DeepSeek Harness Plugin Hub
ProfilesPluginsCategoriesNewsDocsSign inManage Profiles
ProfilesPluginsCategoriesNewsDocsSign in
← Plugins
G

dsh-git-seam

Git Seam

Structured git tools for DeepSeek Harness agents: deterministic porcelain parsing (Chinese/UTF-8 paths, Windows) plus a diff-before-commit policy gate that refuses blind commits.

The plugin will be installed here. Keep web if you are unsure.

npx -y @deepseek-ai/dsh plugin --profile web add github:qt-11564/dsh-git-seam#d8cd4ea7d91fb8cdd6d53ed45555783cac1ab182
READMECompatibilityVersions

Compatibility and provenance

Git Seam is published as dsh-git-seam and currently resolves to version 0.1.0. The Hub verifies its manifest and preserves the exact installation source for reproducible installs.

DSH compatibility
*
Runtime surfaces
any
Release source
github
Registry updated
8/29/2026

Versions

0.1.0stable
8/29/2026

Related plugins

Loading related plugins…

Latest
0.1.0
DSH
*
HMR
Process restart
Tree shaking
Safe tree shaking not declared
Unpacked size
Unavailable
Files
Unavailable
Surface
any
License
MIT
Source
github
GitHub
★ 0
Weekly downloads
0
Last push
8/29/2026
View source ↗
README badge

Click the badge to copy Markdown for your README.

Do you maintain this Plugin?Claim benefit · Priority security scan

Verify the GitHub repository declared in package.json to manage this listing. After you claim it, Hub will prioritize a security scan of the current version and publish the result when it passes.

Claim this Plugin →
Report an issue

Related plugins

More verified plugins in developer-tools.

Client Ui Git Graph@linxin666/dsh-client-ui-git-graphExternal dsh web GUI plugin: a blank-session git branch selector + Git graph, with real host-side git operations and guards, as a dsh profile bundleSsh@linxin666/dsh-sshRemote SSH operations for the dsh web GUI: host config store (~/.dsh/dsh-ssh.json, import from ~/.ssh/config), a persistent ssh2 connection pool with jump-host support, exec / PTY web terminal / SFTP transfer / local port-forward tunnels / cluster executiOpsdsh-opsNative file and PTC tools for DSH on Windows x64, Linux x64 and macOS arm64/x64; Windows-only optional Bash payload and host PowerShell integrationUpdate@linxin666/dsh-updateSelf-update plugin for the dsh web GUI: probes npm for newer family releases and runs the owning profile's pnpm update in place, from a sidebar trigger beside the settings seat with a release-notes panel

README

dsh-git-seam

Structured git tools for DeepSeek Harness (dsh) agents — with a diff-before-commit gate that refuses blind commits and deterministic porcelain parsing that handles Chinese/UTF-8 paths, spaces, and CRLF stably on Windows and Linux.

The agent gets six tools — git_status, git_diff, git_log, git_show, git_branch, git_commit — plus a policy layer that enforces review-before-commit discipline instead of relying on the model to remember it.

Why not just git in bash?

An agent can already run git through the bash tool. What bash cannot give you:

  • A guarantee, not a suggestion. git_commit is refused unless the changes were actually reviewed with git_diff first — same turn, and covering exactly the files the commit would include. Files staged after the review (e.g. via a shell git add) are caught and named. Bash cannot enforce this; it can only hope.
  • Deterministic parsing. Every command runs with LC_ALL=C, GIT_TERMINAL_PROMPT=0, core.quotepath=false, and machine formats (status --porcelain=v1 -z, diff --numstat, log --format=…). Chinese filenames, BOM'd UTF-8 content, spaces, renames, and CRLF are parsed by code, not by the model's luck.
  • Approval you can actually judge. git_commit asks for approval with a real per-file plan: path (+N/-M), untracked paths listed as (new file). Bash escalation shows a command string, not a change list.
  • Loud, actionable failures. Not-a-repo, missing user.email, and ../ traversal return clear errors with the next step, not raw stderr.

Install

# from GitHub (recommended)
dsh plugin --profile web add github:qt-11564/dsh-git-seam

# or from npm (once published)
dsh plugin --profile web add dsh-git-seam

Then restart the profile. Verify with dsh --profile web --dump-config (look for the git-seam row) or just start a conversation — the six git_* tools appear automatically.

Configuration

- id: git-seam
  name: dsh-git-seam   # or ./index.mjs when installed from a local checkout
  config:
    maxBytes: 32768              # output byte budget; truncation notice + spill path beyond it
    requireDiffBeforeCommit: true # the diff-before-commit gate (set false to disable)
    requireCommitApproval: true   # route git_commit through the approval service
    timeoutMs: 30000              # per-command timeout; longer commands are killed

Tools

ToolInputOutput
git_statuscwd?branch, ahead/behind, staged/unstaged/untracked lists, clean flag
git_diffspec? (worktree / --staged / A..B), path?per-file +N/−M stats + truncated unified diff
git_logrange?, path?commits: hash, author, date, subject
git_showref (required), path?commit metadata + stats + truncated diff
git_branchcwd?current branch + all local branches
git_commitmessage (required), paths?new hash + summary; gated and approval-routed

How the gate works

git_commit is checked on tools/pre-execute:

  1. The last git action must be a successful git_diff in the same turn (a diff from a previous turn does not count; a failed diff does not count).
  2. Every file the commit would include must be inside the reviewed diff's covered set: the staged set for path-less commits, the given paths for path commits.
  3. Untracked paths are exempt — git diff structurally cannot show them; their review is read-based (fs tools), and the approval plan still lists them.
  4. A successful commit invalidates the review; the next commit needs a fresh diff.

Denials name the offending files and tell the model what to do (run git_diff again). The gate is an ordinary tools/pre-execute listener — it unloads with the plugin and composes with the rest of the policy chain.

Known Limitations and Deferred Work

  • No destructive history operations — reset, checkout, revert, merge, rebase are out of scope; git_commit is the only mutating tool.
  • No stash, remote operations (push/pull/fetch), or submodules.
  • No blame, GPG signing, or LFS.
  • Remote providers (GitHub/GitLab REST) are deferred — local git only.
  • The gate verifies file coverage, not content freshness: editing a file after its diff and before committing is not detected (a deliberate trade-off to keep the gate cheap and predictable).
  • A commit can still be made by bypassing the tools through bash; the gate protects the tool path, not the sandbox.

Development

npm install            # installs tsx for the selftest
npm test               # 13-case selftest: gate semantics, approval plan, full commit flow

The selftest drives the real plugin module with a mocked ctx against a real git fixture repo (real porcelain output). For the test's @deepseek-ai/dsh-tools import to resolve without publishing, either npm i @deepseek-ai/dsh-tools or drop a dev shim under node_modules/@deepseek-ai/dsh-tools re-exporting your harness checkout's packages/core/tools/src/schema.ts.

License

MIT