- Home
- Plugins
- Integrations & Remote
- dsh-eni (armor-break)
dsh-eni (armor-break)
konshinhaoshin/dsh-eni/packages/armor-break
Per-model jailbreak armor: a Settings table arms model patterns with spells (25 spells: 20 across 11 model families, plus a model-agnostic armor, an upstream preferences file and three stackable persona layers), previews the exact injected block, and writes it into the armed model's system prompt only, leaving every other model untouched.
Install
dsh plugin --profile web add github:konshinhaoshin/dsh-eniThis plugin lives in the packages/armor-break subdirectory of the repository.
README
dsh-eni
Jailbreak armor for DeepSeek Harness, switched per model.
armor-break is a DSH plugin bundle. You arm a model, pick a spell, and that model gets the
spell in its system prompt on every turn. Every other model keeps the deployment's own house
style. The mapping lives in Settings → Armor Break; nothing is armed until you arm it.
Spell library curated from
Goochbeater/Spiritual-Spell-Red-Teaming
— 25 spells across 13 model families, plus persona layers.
Why a plugin instead of pasting a prompt
Pasting a jailbreak into one chat works until you switch models, start a subagent, or open a new session. This turns the prompt into profile configuration:
- Per model. Patterns (
claude,anthropic/opus-4-5,qwen*,*-pro) arm exactly the routes you name. Unarmed models get a byte-identical prompt. - Routed model, not creation model. The plugin resolves the model the request will route to, so a mid-session switch arms the next turn instead of lagging behind it.
- Persisted. Writes land in the profile's
cordis.patch.yml: live immediately, survives restarts and upgrades. - Two placements. After the persona (KV-cache friendly default) or right after the harness identity for a harder frame.
- Preview before saving. The page renders the exact block client-side, from the same rules the Host applies.
Using it
- Settings → Armor Break.
- Tick a configured model and choose a spell. Unknown models come in through Custom pattern.
- Read Show the block if you want to check the wording.
- Save.
Un-tick the row, or delete the pattern, and save to disarm.

How it works
The Host half registers two system-prompt sections — one just after the harness identity
(order −500), one after the persona suffix (order 10300). Each renders text only when its
position is selected and the current route matches an armed pattern; otherwise it returns an
empty string, which the prompt renderer drops. Nothing touches the system-prompt/assemble
waterfall, so other plugins keep their assembly untouched.
Matching ranks provider/model above an exact model id, above a substring, above a glob, and
the most specific armed pattern wins. The block is framed as a standing instruction and ends on
the repository's soft push line unless you turn those off.
The Config fields are volatile, so the page edits a live configuration instead of remounting the
plugin, and every save is one atomic settings.mutate fenced by the revision it read.
Layout
packages/armor-break/
index.js Host half: route resolution, pattern matching, block rendering, sections
client.js Settings section: model table, spell pickers, preview, staged save
spells/ manifest.json + 25 spells, one file each
cordis.patch.yml Bundle patch inserting the row
tools/ self-test, render test, catalog build, Chromium UI check
README.md Package docs (English)
README.zh.md Package docs (Chinese)
tools/extract_asar.py One-off extractor for reading an installed Harness app.asar
Installing
The profile must reference the bundle from a workspace checkout:
// ~/.dsh/profiles/<profile>/package.json
"dependencies": { "@local/dsh-armor-break": "link:/absolute/path/to/armor-break" },
"dsh": { "profile": { "bundles": ["...", "@local/dsh-armor-break"] } }
then pnpm install in the profile directory and restart once. The row itself comes from the
bundle's own patch; the Settings section appears as soon as the profile serves the plugin.
Costs
A spell repeats on every request while armed and sits in the system prompt. lite spells are a
few hundred tokens, full LIME dumps run to roughly ten thousand — pick per model, and mind
subagents, which inherit the armor of the model they run on.
Verification
node packages/armor-break/tools/selftest.mjs # Host matching, placement, routing, unknown spells
node packages/armor-break/tools/render-test.mjs # Client render from a fake context
pwsh -File packages/armor-break/tools/verify-profile.ps1 -Port 7936
node packages/armor-break/tools/ui-check.mjs "<bootUrl>" out.png --save # real Chromium pass
Credits
Spell text belongs to Goochbeater/Spiritual-Spell-Red-Teaming
and its author (ENI), including the credits it records. This repository curates, wraps and
switches it.
License
MIT © 2026 Konshin Haoshin.
Related plugins
dsh-web (dsh-ssh)
zhu1090093659/dsh-web
dsh-web (dsh-remote-web-ui)
zhu1090093659/dsh-web
dsh-web-ui (dsh-ssh)
zhu1090093659/dsh-web-ui
dsh-web-ui (dsh-remote-web-ui)
zhu1090093659/dsh-web-ui