Plugin directory / Developer / dsh-self-checking-profile
dsh-self-checking-profile
Verified · install-tested on dsh SLAPaper
What it does
A drop-in dsh web profile that adds the **Self Checking** sandbox mode to DeepSeek Harness (dsh)
Works — verified, early-stage project
A drop-in dsh web profile that adds the **Self Checking** sandbox mode to DeepSeek Harness (dsh) It installs cleanly and boots without issues in our testing. It's early-stage but functional.
“Verified” means our automated CI actually ran dsh plugin add in a clean profile and it booted — nothing more. Feature descriptions and version compatibility are the author’s claims. This is not a security audit and not an endorsement of third-party code.
README
dsh Self Checking
 [中文](README.zh-CN.md) | English This repository ships **Self Checking** for https://github.com/deepseek-ai/deepseek-harness through two installable routes: - **Plugin route (plugin/)** — one normal dsh bundle package,
dsh-self-checking, installed with dsh plugin add.
- **Legacy profile route (legacy/)** — a reproducible fork layer over the
upstream @deepseek-ai packages, installed as a standalone profile.
Both routes expose the same permission preset (**🛡️🔍 Self Checking** in the
web picker, /permission self-checking in a session) and the same model-facing
behavior: commands and file operations run under workspace-write first; an
access outside the workspace is intercepted once; re-running the exact same
command/operation executes it with full access.
Quick install
Plugin route
``bash
from this checkout
./install-plugin.sh # defaults to the web profile
or explicitly:
./install-plugin.sh -p web -h ~/.dsh
`
`powershell
powershell -ExecutionPolicy Bypass -File install-plugin.ps1
`
Then start dsh and select **🛡️🔍 Self Checking** in the permission picker.
> The package is not published to npm yet, so install-plugin.* installs the
> local plugin/ directory. The published command will become:
> dsh plugin --profile web add dsh-self-checking.
Legacy profile/fork route
`bash
from this checkout
./install-legacy.sh # profile name: self-checking
npx @deepseek-ai/dsh --profile self-checking
`
`powershell
powershell -ExecutionPolicy Bypass -File install-legacy.ps1
`
See [legacy/README.md](legacy/README.md) for the full fork-rebuild,
patch-generation, and upstream-merge workflow.
How the two routes differ
| | Plugin route (plugin/) | Legacy profile route (legacy/) |
|---|---|---|
| Install unit | One bundle package (dsh-self-checking) added to an existing profile | A complete profile + 12 shadowing fork packages under node_modules/@deepseek-ai |
| How Self Checking works | Preset reuses sandbox workspace-write; a host plugin subclasses the upstream shell and fs services and adds the intercept gate | Adds a real self-checking sandbox mode to SANDBOX_MODES / WIDER_MODES, implemented inside forked executors and fs fence |
| Upstream packages | Used as-is through peer dependencies; the plugin imports upstream service classes | Vendored byte-for-byte under upstream/, forked in profile/forks/, reproducible via patches/*.json |
| Install UX | dsh plugin --profile web add dsh-self-checking (currently local file: via install-plugin.*) | install-legacy.* copies a profile and assembles the fork layer |
| Picker icon | 🛡️🔍 emoji embedded in the preset name | Dedicated SVG glyph forked into dsh-client-ui-conversation |
| sandbox_permissions enum | workspace-write, danger-full-access only; Self Checking is a preset, not a mode | workspace-write, self-checking, danger-full-access |
| Session log sandbox/mode | workspace-write while the preset is active | self-checking |
| Degradation if the layer is missing | Fails closed: the preset degrades to plain workspace-write + ask | Fails loud at profile load / execution |
| Baseline upgrade | Bump package peer ranges and re-run the plugin test suite; adaptation points are the upstream service classes | Three-way merge of upstream/, regenerate patches, byte-for-byte rebuild |
Model-facing semantics are intentionally the same: the intercepted/failed
markers, the one-time exact re-run unlock, the defensive fs failure hint, and
the explicit sandbox_permissions + justification approval channel all match.
Repository layout
`
├── plugin/ dsh-self-checking bundle package (new route)
│ ├── lib/ host plugin + shell/fs service subclasses
│ ├── cordis.patch.yml disables native service rows, adds the preset
│ ├── scripts/ dev-profile installer and installed verifier
│ └── tests/ unit, Cordis, native tool-layer, live runner
├── legacy/ original fork/profile route
│ ├── profile/forks/ 12 shadowing fork packages
│ ├── upstream/ byte-exact upstream baseline (0.1.0-rc.7)
│ ├── patches/ anchored patch manifests + review diffs
│ ├── tools/ snapshot / merge / gen-patches / rebuild / release
│ ├── tests/ legacy regression + ACL probes
│ ├── install.sh / install.ps1
│ ├── verify.mjs
│ └── docs/ picker screenshot used by the legacy README
├── install-plugin.sh / .ps1 plugin-route installer (local file package)
├── install-legacy.sh / .ps1 wrappers around legacy/install.*
├── docs/self-checking-routes.md delivery decision record
├── CHANGELOG.md
└── LICENSE
`
Which route should I use?
- Use the **plugin route** for everyday installation and testing.
- Use the **legacy route** when you need the byte-reproducible fork layer,
upstream-baseline archaeology, or the exact self-checking sandbox mode in
the session log and escalation vocabulary.
Requirements
- dsh **0.1.0-rc.7** (run any dsh profile once first so
~/.dsh/profiles/node_modules exists);
- Windows, macOS, or Linux. The plugin route's real-runner test coverage is
currently Windows-only; the legacy route is platform-independent.
Development
`bash
Plugin route
cd plugin
npm test
npm run test:live # real Windows pwsh + windows-acl runner
Legacy route
node legacy/tests/verify-self-checking.mjs
node legacy/tests/verify-acl-probe.mjs # real Windows ACL probe
``
See [plugin/README.md](plugin/README.md), [legacy/README.md](legacy/README.md),
and [docs/self-checking-routes.md](docs/self-checking-routes.md).
Install
Install the catalog once, then DeepSeek Harness can find and install any plugin from this site automatically:
dsh plugin add dshbase-catalog Then say "install dsh-self-checking-profile for me" — your agent finds it in the directory and installs it. Docs: dshbase-catalog · verified packs.
This plugin is GitHub source (not published to npm) — install it straight from the repo:
Web profile:
dsh plugin --profile web add github:SLAPaper/dsh-self-checking-profile Headless (CLI) profile:
dsh plugin --profile headless add github:SLAPaper/dsh-self-checking-profile Test report
Verified: L1 install + L2 load + L3 runtime from GitHub source on dsh 0.1.0-rc.6.
When to use it
Extend the agent's coding surface — give it a new tool, workflow, or integration so it handles a dev task it couldn't before.
Who it's for
Developers who want dsh to behave like a teammate on real codebases — editing, running, and verifying changes rather than just answering.
For developers — extending it
The tool/command surface is the seam: expose more of the SDK, add smarter context wiring, or tighten the loop between code changes and verification.