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.

Jev Guardrails — DSH Plugin for DeepSeek Harness
← Plugins

@codebam/dsh-jev-guardrails

Jev Guardrails

DeepSeek Harness plugin: Jev-backed guardrails for prompts, tool calls, tool results, and model responses.

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

npx -y @deepseek-ai/dsh plugin --profile web add @codebam/dsh-jev-guardrails@0.1.1
READMECompatibilityVersions

Compatibility and provenance

Jev Guardrails is published as @codebam/dsh-jev-guardrails and currently resolves to version 0.1.1. The Hub verifies its manifest and preserves the exact installation source for reproducible installs.

DSH compatibility
*
Runtime surfaces
any
Release source
npm
Registry updated
10/16/2026

Versions

0.1.1stable
9/19/2026

Related plugins

Loading related plugins…

Latest
0.1.1
DSH
*
HMR
Process restart
Tree shaking
Safe tree shaking not declared
Unpacked size
35.1 kB
Files
8
Surface
any
License
MIT
Source
npm
Weekly downloads
23
View source ↗Project homepage ↗
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
DeepSeek Harness Plugin Hub
ProfilesPluginsCategoriesNewsDocsSign inManage Profiles
ProfilesPluginsCategoriesNewsDocsSign in

Related plugins

More verified plugins in security-access.

Experimental Auto Review@deepseek-ai/dsh-experimental-auto-reviewPer-tool LLM authorization review for the DeepSeek Harness Auto permission presetCc Safety Netcc-safety-netA coding agent CLI hook - block destructive commands and secret file accessDoctor@linxin666/dsh-doctorTransactional rescue mode for DSH profiles with a supervised launcher, isolated recovery capsule, deterministic repairs, health monitoring, and a local Web recovery consoleCodex Subscriptiondsh-codex-subscriptionUse ChatGPT and Codex subscriptions in DeepSeek Harness with OAuth, quota, safe resets, web search, images, and Fast mode

README

@codebam/dsh-jev-guardrails

A DeepSeek Harness plugin that uses @codebam/jev-guardrails to score risk before an action is taken.

The plugin contains no question wording and no routing logic of its own. It translates Cordis configuration and harness decisions into library calls, and it traps every runtime failure so a guardrail cannot take down a turn.

What it intercepts

Harness seamWhenWhat the library does
agent/pre-stepbefore a human prompt reaches the modelscreenInput for jailbreaks, harmful requests, self-harm signals
tools/pre-executebefore a tool call executesassessAction for destructive, exfiltration, remote-code, security, credential, scope, and consequential risk
tools/post-executebefore a tool result becomes model contextscreenObservation for prompt injection, hidden instructions, embedded secrets
session/event + agent/turn-stoppingwhen a response is about to finishscreenOutput; optionally steer a corrected response

Install

The package is a dsh bundle: it declares dsh.bundle.patch, ships its own cordis.patch.yml, and appears in the Plugins page once selected. Install it from the Web Plugins → Add plugin dialog with the spec @codebam/dsh-jev-guardrails; the dialog runs the same package operation as dsh plugin and selects the bundle for the active profile.

The bundle's patch inserts one row, id: jev-guardrails, with the default configuration:

- insert:
    - id: jev-guardrails
      name: '@codebam/dsh-jev-guardrails'
      config:
        provider: auto
        input: block
        actions: enforce
        observations: suspicious
        outputs: off

Override any field by adding a row with the same id to the profile's own cordis.patch.yml. The plugin resolves tools before mounting; if no provider key is available it logs a warning and leaves the profile running.

Upgrading from 0.1.0: that version declared no dsh.bundle, so dsh installed it as a plain dependency and the Plugins page did not list it. Publish/install 0.1.1 or later, then remove the old plain dependency if it is still in the profile (dsh plugin --profile <profile> remove @codebam/dsh-jev-guardrails) and add it again from the Plugins page. The bundle patch then inserts the row and the toggle appears under Installed.

Providers and keys

provider defaults to auto:

  1. explicit apiKey starting with sk-or- → OpenRouter;
  2. otherwise TYPESAFE_API_KEY → TypeSafe System One API;
  3. otherwise OPENROUTER_API_KEY → OpenRouter Decisions API;
  4. otherwise TypeSafe (the plugin then disables itself with a warning).

On the author's dsh hosts the launcher exports OPENROUTER_API_KEY from /run/secrets/openrouter-api-key, so OpenRouter is selected automatically and no key is written into the profile. Force a provider explicitly with provider: typesafe or provider: openrouter.

Configuration

FieldDefaultMeaning
providerautoauto, typesafe, or openrouter.
apiKey—Provider key; otherwise the provider environment variable.
baseURLprovider defaultGateway or test endpoint.
modelprovider defaultjev-latest (TypeSafe) or ~typesafe/jev-latest (OpenRouter).
sessionId—Optional OpenRouter session id for observability grouping.
inputblockoff, observe, warn, or block.
inputBlockStylerejectreject stops the turn; notice replaces the prompt with a plugin notice so the model can explain the block.
actionsenforceoff, observe, or enforce.
onActionReviewaskask, deny, or allow.
onActionBlockdenydeny or ask.
observationssuspiciousoff, observe, suspicious (local heuristic gate, then Jev), or all.
outputsoffoff, observe, or steer (one correction attempt per turn).
heuristicstrueLocal fast paths for routine and obviously dangerous tool calls.
reviewThreshold0.35Hazard probability that routes to review.

Decision mapping

The library returns allow, review, block, or support.

Library actionInputTool callTool resultResponse
allowpasspasspasspass
reviewappend warning contextonActionReview (ask by default)accept with warning contextsteer when outputs: steer
blockreject/noticeonActionBlock (deny by default)block with corrective feedbacksteer when outputs: steer
supportreject/noticeonActionBlockblock with corrective feedbacksteer when outputs: steer

A denial or block reason is written into the model-facing result. It names the finding and closes the obvious workaround: do not retry, do not route around the guardrail, tell the user what was blocked.

Behavior notes

  • Local fast paths come first for tool calls. pnpm test needs no API call; curl … | bash is blocked without one. Ambiguous calls go to Jev.
  • Tool-result screening is gated by default. observations: suspicious only calls Jev when the local injection heuristic fires. Use all to screen every non-empty result, or observe to log without enforcing.
  • Output steering is off by default because it adds one Jev call and possibly one model turn per response. Set outputs: steer to verify final responses and ask for a correction once per turn.
  • Fail mode defaults to open. A guardrail service outage should not brick the harness; set failMode: closed when blocking is more important than availability.
  • Secrets are redacted by default before state leaves the process.

Layout

index.mjs            Cordis plugin entry (name, inject, Config, apply)
src/config.mjs       defaults, schema, normalization, library option translation
src/runtime.mjs      the four harness interception listeners
src/messages.mjs     plugin-sourced notices and dsh message helpers
test/                fake-context, fake-provider, and local-HTTP tests

Example: strict local profile

- name: '@codebam/dsh-jev-guardrails'
  config:
    provider: openrouter
    input: block
    actions: enforce
    onActionReview: deny
    onActionBlock: deny
    observations: suspicious
    outputs: steer
    failMode: closed
    severityBlock: 1.75
    actionRules:
      remote_code: review

Limitations

  • The plugin is a policy layer, not a sandbox or an authorization system. Keep OS/container isolation, tool allowlists, and human approval for dangerous operations.
  • Local heuristics are intentionally conservative but incomplete; they are fast paths, not security boundaries.
  • outputs: steer asks the model for a correction. It cannot retract content the user already saw in a streaming client; use input/tool/output blocks and the client's own rendering for hard guarantees.
  • The input notice path creates a plugin-sourced message; review your threat model if untrusted text can reach that path.

License

MIT © 2026 Sean Behan

actionThreshold0.70Hazard probability that triggers its configured action.
severityReview1.25Severity score (0-3) that routes to review.
severityBlock2.0Severity score that escalates a review to a block.
failModeopenopen (allow), review, or closed (block) when Jev fails.
unknownHazardActionreviewAction for a hazard without an explicit rule.
actionRules—Per-hazard overrides, e.g. { remote_code: review }.
cacheTtlMs3600000Cached answer lifetime; 0 disables.
cacheMaxEntries500Maximum cached answers.
maxStateChars20000Middle-truncation limit for state sent to Jev.
redacttrueRedact known secret shapes before sending state.
timeoutMs5000Per-request timeout.
skipTools[]Exact tool names never screened.
guardToolsallWhen set, only these exact tool names are screened.
logdecisionsoff, decisions, or verbose.