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.

Git Guard — DSH Plugin for DeepSeek Harness
DeepSeek Harness Plugin Hub
ProfilesPluginsCategoriesNewsDocsSign inManage Profiles
ProfilesPluginsCategoriesNewsDocsSign in
← Plugins
G

@yokira404/dsh-git-guard

Git Guard

Two icon switches in the Session header's right-hand utilities row that stop an agent from writing the local Git repository or uploading it to a remote one. They sit beside the window controls, divided from the rest of that row by a hairline rule. Drawn as the host's own chrome buttons and carried b

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

npx -y @deepseek-ai/dsh plugin --profile web add github:Yokira404/dsh-git-guard#af975ceb97537e59594549b8fd61d0b1cae121ec
READMECompatibilityVersions

Description

Two icon switches in the Session header's right-hand utilities row that stop an agent from writing the local Git repository or uploading it to a remote one. They sit beside the window controls, divided from the rest of that row by a hairline rule. Drawn as the host's own chrome buttons and carried by the icon: an unguarded repository is the repository alone, and switching a guard on adds the ring and the stroke. The left one blocks git add / git commit, the right one blocks git push / git remote / gh. Switching a guard on never releases the other one; switching the local guard on arms the upload guard with it, and switching the upload guard off releases the local guard with it. Both start on.

Compatibility and provenance

Git Guard is published as @yokira404/dsh-git-guard and currently resolves to version 1.0.0. The Hub verifies its manifest and preserves the exact installation source for reproducible installs.

DSH compatibility
*
Runtime surfaces
web
Release source
github
Registry updated
10/16/2026

Versions

1.0.0stable
10/16/2026

Related plugins

Loading related plugins…

Latest
1.0.0
DSH
*
HMR
Process restart
Tree shaking
Safe tree shaking not declared
Unpacked size
Unavailable
Files
Unavailable
Surface
web
License
MIT
Source
github
GitHub
★ 0
Weekly downloads
0
Last push
10/16/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 executiUpdate@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 panelTui@deepseek-harness-tui/dsh-tuiInteractive terminal interface for DeepSeek Harness agents, sessions and tools.

README

Git Repository Guard · dsh-git-guard

中文说明 →

Two switches at the right of the Session header that stop an agent from writing your local git repository or uploading it to a remote.

SwitchPositionWhat it blocks
Local repositoryleftWrites to the local repository: git add, git commit, git reset, git merge, git tag and friends
Remote repositoryrightAnything that reaches a remote: git push, git pull, git clone, git remote, gh and friends

Both start on. The block happens before a command runs: the call is not executed, and the agent gets a clear refusal instead.

Where the two switches sit

Install

dsh plugin --profile <profile> add https://github.com/Yokira404/dsh-git-guard

Reload the page and the two switches appear at the right of the Session header.

By hand: add @yokira404/dsh-git-guard to dsh.profile.bundles in ~/.dsh/profiles/<profile>/package.json, and point dependencies at this package.

How the two switches interact

Two rules, both the consequence of a click — never a condition that has to hold:

ClickLocalRemote
left (local)togglesturns on with the local switch when that lands on; left alone when it lands off
right (remote)turns off with the remote switch when that lands off; left alone when it lands ontoggles
  • Switching a guard on never releases the other one. Asking for one protection must not dismantle the other.
  • Releasing the upload guard releases the local one with it — the local writes are exactly what an upload would carry.
  • One deliberate opening: with both off, the right switch arms the upload guard alone, leaving local writes open.

All four states are reachable:

StateLocal writesUploads
on · on (default)blockedblocked
off · onallowedblocked
on · offblockedallowed
off · offallowedallowed

What is blocked

Left switch — writes to the local repository:

git add · git commit · git am · git apply · git checkout-index · git config
git merge · git mv · git notes · git rebase · git reset · git restore
git revert · git rm · git stash · git switch · git tag
git update-index · git update-ref

Right switch — anything that reaches a remote:

git push · git pull · git fetch · git clone · git ls-remote · git remote
git submodule · git send-pack · git archive · git request-pull · git svn
gh repo / pr / release / issue / run / workflow / api / gist / secret / …
a repository URL on the command line (github.com, gitlab.com, gitee.com, …)

Never blocked: git status, git log, git diff, git show, git branch, git blame, git init, git rev-parse, git check-ignore, git ls-files, git worktree, git help, gh auth, gh config, gh api /user, and anything that is not about git at all. git init is allowed on purpose: creating a repository neither commits nor uploads anything.

Matching is quote-aware: git commit -m "do not push this" is a local commit, not an upload, and echo "git push" > notes.txt is nothing. It is not fooled by prefixes either — sudo git push, env FOO=1 git commit and C:\Program Files\Git\cmd\git.exe push are all recognised.

What the agent sees when it is blocked

已阻止:DSH 的「Git 仓库保护」插件当前开着左侧的本地仓库开关,
写入本地仓库的操作(git add / git commit 等)被拒绝。
被拦截的命令:`git commit -m x`
这是用户有意设置的开关,不是故障:不要改用其他命令、其他工具或直接调用 API 绕过它,
也不要尝试关闭该开关。请把这一步作为「未执行」如实报告给用户,
并说明用户可以点击会话标题栏的两个方形按钮自行放行。

Limits

  • It never changes your repository: no .git/hooks, no git config, blocking only.
  • It also catches text that merely names a command: matching reads the whole of a tool call's command-like field (command, script, code, …), so writing a document whose text contains git push can have that write blocked. That is the deliberate bias — one extra blocked write beats one upload that got through.
  • It cannot stop paths that avoid the shell; it targets the real one, an agent uploading a repository through a command.
  • No undo: the block is up front, so there is no window in which something was already uploaded.
  • State is not persisted: a DSH restart returns both switches to on.

License

MIT