Four dependency-free local git tools (status, diff, log, commit) for DeepSeek Harness operating on the session workspace.
Install
# from GitHub (first run asks for allowBuilds approval — follow the hint, retry)
dsh plugin --profile web add github:Shyboy0499/dsh-git-tools
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
Local git tools for DeepSeek Harness (
dsh).
dsh-git-tools is a dependency-free DeepSeek Harness plugin that gives the coding agent
four local git tools — git_status, git_diff, git_log, and git_commit —
so it can inspect the repo in the session workspace and create commits, all through the
official tool API. No UI, Host-side only.
Features
| Tool | What it does |
|---|---|
git_status |
Branch, ahead/behind, and staged / unstaged / untracked files |
git_diff |
Stat summary or full patch, staged or unstaged, optional path filter |
git_log |
Recent commits as { hash, author, date, subject } |
git_commit |
Stage specific paths (or all) and commit with a required message |
Installation
dsh plugin --profile web add dsh-git-tools
Requires git on your PATH (present in any development environment).
Tool reference
All tools accept an optional cwd (defaults to the session workspace).
git_status
Inspect the working tree and branch state.
{
"branch": "main",
"ahead": 0,
"behind": 2,
"staged": [{ "path": "src/index.ts", "status": "M" }],
"unstaged": [],
"untracked": ["scratch.txt"]
}
git_diff
View changes. staged diffs the index, statOnly: true (default) returns a stat summary,
statOnly: false returns the full patch. path filters to a single file.
{
"stat": [{ "file": "src/index.ts", "added": 3, "deleted": 1 }],
"total": { "files": 1, "insertions": 3, "deletions": 1 },
"patch": null
}
git_log
List recent commits. count defaults to 10 (max 100); path filters to a file.
{
"commits": [
{
"hash": "a1b2c3d4e5f67890abcdef1234567890abcdef12",
"author": "Shyboy0499",
"date": "2026-08-26",
"subject": "Fix typo"
}
],
"total": 1
}
git_commit
Create a commit. message is required (non-empty). Stage specific files with paths,
or everything with all: true. Never stages implicitly.
{
"success": true,
"hash": "e5f6g7h0123456789abcdef0123456789abcdef01",
"branch": "main",
"filesStaged": 2
}
Safety
- All git calls run through
execFilewith arguments passed as arrays — no shell interpolation, so user/model-controlled values are injection-safe. git_commitrequires an explicitmessageand never stages files on its own (passpathsorall: true).- No destructive operations (
--amend,--force, rebase, reset) in the core scope.
Development
pnpm install
pnpm run build # tsdown → lib/
pnpm test # vitest against real throwaway git repos
pnpm run lint # oxlint
pnpm run format # prettier --write .
License
Links
More in this category
zhu1090093659/dsh-web#packages/dsh-git-graph★ 8597
Git branch selector and Git graph for the dsh web GUI: switch branches and explore branch-lane and commit history from the conversation header.
Akimiya-z/codex-guard#dsh★ 136
Pre-submit pull-request hygiene checks inside DeepSeek Harness: scans the current diff for TODO leftovers, hardcoded secrets, and non-conventional commit subjects.
Cerbur/clutch-dsh#clutch-dsh-worktree★ 33
Adds a Worktree view to DSH Web UI that groups Sessions by Git worktree while keeping DSH as the source of truth.
lehhair/dsh-diff-viewer★ 26
PiUI-style diff viewer replacing the stock DiffBlock for write/edit tool calls.
DamonKoy/dsh-web-ui#dsh-git-graph★ 23
Git branch selector and Git graph in the conversation header of the dsh web GUI.
PerryLink/dsh-github★ 22
Official-grade GitHub CI integration: a composite action.yml, a polling PR review bot with idempotent inline comments and a status-check gate, plus PR/issues tools with every write gated by human approval.
Community comments
Comments are public GitHub Discussions. Loading them connects to GitHub and Giscus; a GitHub account is required to post.