Install verification: runtime verified (L5) · tested on dsh 0.2.1-rc.2 · last checked Install verification details →
What it doesAI
A DSH plugin that gives text-only models vision ability using OpenAI-compatible multimodal APIs, with easy provider reuse and settings.
- Manual image analysis: OCR + layout + semantic text evidence
- Paste-image auto takeover with compact image-ID in inputs
- Reuse DSH providers or add custom OpenAI-compatible API
Capability tags are AI-inferred or rule-extracted from the README (see badge) — vocabulary-limited, not install-verified. AI = inferred; README = literal keyword from the readme.
Installation
dsh plugin --profile web add github:alaxrpg/dsh-vision-bridge#v0.3.10Install method: GitHub · runtime verified (L5)
Verification & Compatibility
Grouped by plugin version: each card lists the dsh versions actually tested against that artifact version and their install verdicts (L5 wins). Untested combinations are omitted — absence means untested, never assumed compatible. L1–L3 are a plugin-level static archive (independent of the dsh version — the same verdict on every dsh row): they sit in each row's level grid next to L4/L5, marked "static", while their evidence is stored once per plugin inside that row's "checks & evidence" instead of being duplicated per version.
External credentials (plugin-level): none detected
Based on 1 requirement(s) across 1 @deepseek-ai/dsh-* packages. raw ranges
>=0.1.1-rc.1 ×1
✓ Running dsh 0.2.1-rc.2 is within the declared range — install is not blocked by version.
Whether it actually runs is a separate question → see the measured matrix below (L1–L5).
| plugin \ dsh | dsh 0.2.1-rc.2 current | dsh 0.2.1-alpha.2 | dsh 0.2.0-rc.2 | dsh 0.2.0-rc.1 | dsh 0.1.7-rc.2 |
|---|---|---|---|---|---|
| v0.3.10 | ✓ | ✓ | ✓ | · | · |
| v0.3.5 | · | · | · | ✓ | ✓ |
v0.3.10github✓ 4 runtime-verified2026-10-20
https://github.com/alaxrpg/dsh-vision-bridge
✓dsh 0.2.1-rc.2current2026-10-20L5 · runtime verified
- • Node.js: v24.14.0
- • DSH: 0.2.1-rc.2
- • Plugin artifact: github · https://github.com/alaxrpg/dsh-vision-bridge#v0.3.10
ID: dsh-vision-bridge-21@v0.3.10@dsh0.2.1-rc.2 · profile: l4-sandbox
Issued: 2026-10-20 · expires: 2026-10-27
View checks & evidence
active in loader tree (150 entries)
L1–L3 are plugin-level static conclusions (baseline, identical across dsh versions): evidence is stored once per plugin.
✓dsh 0.2.1-alpha.22026-10-11L5 · runtime verified
- • Node.js: v24.14.0
- • DSH: 0.2.1-alpha.2
- • Plugin artifact: github · https://github.com/alaxrpg/dsh-vision-bridge#v0.3.10
ID: dsh-vision-bridge-21@v0.3.10@dsh0.2.1-alpha.2 · profile: l4-sandbox
Issued: 2026-10-11 · expires: 2026-10-18
View checks & evidence
active in loader tree (150 entries)
L1–L3 are plugin-level static conclusions (baseline, identical across dsh versions): evidence is stored once per plugin.
✓dsh 0.2.0-rc.22026-10-09L5 · runtime verified
- • Node.js: v24.14.0
- • DSH: 0.2.0-rc.2
- • Plugin artifact: github · https://github.com/alaxrpg/dsh-vision-bridge#v0.3.10
ID: dsh-vision-bridge-21@v0.3.10@dsh0.2.0-rc.2 · profile: l4-sandbox
Issued: 2026-10-09 · expires: 2026-10-16
View checks & evidence
active in loader tree (150 entries)
L1–L3 are plugin-level static conclusions (baseline, identical across dsh versions): evidence is stored once per plugin.
✓prehistory2026-10-04L5 · runtime verified
- • Node.js: v24.14.0
- • DSH: unknown
- • Plugin artifact: github · https://github.com/alaxrpg/dsh-vision-bridge#v0.3.10
ID: dsh-vision-bridge-21@v0.3.10@dshunknown · profile: l4-sandbox
Issued: 2026-10-04 · expires: 2026-10-11
View checks & evidence
active in loader tree (150 entries)
L1–L3 are plugin-level static conclusions (baseline, identical across dsh versions): evidence is stored once per plugin.
v0.3.5github✓ 6 runtime-verified2026-09-30
https://github.com/alaxrpg/dsh-vision-bridge
✓dsh 0.2.0-rc.12026-09-30L5 · runtime verified
- • Node.js: v24.14.0
- • DSH: 0.2.0-rc.1
- • Plugin artifact: github · https://github.com/alaxrpg/dsh-vision-bridge#v0.3.5
ID: dsh-vision-bridge-21@v0.3.5@dsh0.2.0-rc.1 · profile: l4-sandbox
Issued: 2026-09-30 · expires: 2026-10-07
View checks & evidence
active in loader tree (150 entries)
L1–L3 are plugin-level static conclusions (baseline, identical across dsh versions): evidence is stored once per plugin.
✓dsh 0.1.7-rc.22026-09-26L5 · runtime verified
- • Node.js: v24.14.0
- • DSH: 0.1.7-rc.2
- • Plugin artifact: github · https://github.com/alaxrpg/dsh-vision-bridge#v0.3.5
ID: dsh-vision-bridge-21@v0.3.5@dsh0.1.7-rc.2 · profile: l4-sandbox
Issued: 2026-09-26 · expires: 2026-10-03
View checks & evidence
active in loader tree (150 entries)
L1–L3 are plugin-level static conclusions (baseline, identical across dsh versions): evidence is stored once per plugin.
✓dsh 0.1.6-alpha.22026-09-20L5 · runtime verified
- • Node.js: v24.14.0
- • DSH: 0.1.6-alpha.2
- • Plugin artifact: github · https://github.com/alaxrpg/dsh-vision-bridge#v0.3.5
ID: dsh-vision-bridge-21@v0.3.5@dsh0.1.6-alpha.2 · profile: l4-sandbox
Issued: 2026-09-20 · expires: 2026-09-27
View checks & evidence
active in loader tree (150 entries)
L1–L3 are plugin-level static conclusions (baseline, identical across dsh versions): evidence is stored once per plugin.
✓dsh 0.1.6-alpha.12026-09-17L5 · runtime verified
- • Node.js: v24.14.0
- • DSH: 0.1.6-alpha.1
- • Plugin artifact: github · https://github.com/alaxrpg/dsh-vision-bridge#v0.3.5
ID: dsh-vision-bridge-21@v0.3.5@dsh0.1.6-alpha.1 · profile: l4-sandbox
Issued: 2026-09-17 · expires: 2026-09-24
View checks & evidence
active in loader tree (150 entries)
L1–L3 are plugin-level static conclusions (baseline, identical across dsh versions): evidence is stored once per plugin.
✓dsh 0.1.5-rc.22026-09-11L5 · runtime verified
- • Node.js: v24.14.0
- • DSH: 0.1.5-rc.2
- • Plugin artifact: github · https://github.com/alaxrpg/dsh-vision-bridge#v0.3.5
ID: dsh-vision-bridge-21@v0.3.5@dsh0.1.5-rc.2 · profile: l4-sandbox
Issued: 2026-09-11 · expires: 2026-09-18
View checks & evidence
active in loader tree (150 entries)
L1–L3 are plugin-level static conclusions (baseline, identical across dsh versions): evidence is stored once per plugin.
✓dsh 0.1.3-alpha.22026-09-09L5 · runtime verified
- • Node.js: v24.14.0
- • DSH: 0.1.3-alpha.2
- • Plugin artifact: github · https://github.com/alaxrpg/dsh-vision-bridge#v0.3.5
ID: dsh-vision-bridge-21@v0.3.5@dsh0.1.3-alpha.2 · profile: l3-fullscan
Issued: 2026-09-09 · expires: 2026-09-16
View checks & evidence
active in loader tree (150 entries)
L1–L3 are plugin-level static conclusions (baseline, identical across dsh versions): evidence is stored once per plugin.
Only the latest 3 published versions are shown; source-snapshot (commit hash) groups, unstated groups and older versions are omitted — the full archive stays in the data layer (snapshot/unstated groups appear only when a plugin has no published version).
Author badges
Embed the official badges in your README to showcase security & install-test status:
`[](https://www.dsh.so/artifact/dsh-vision-bridge-21/)``[](https://www.dsh.so/artifact/dsh-vision-bridge-21/)``[](https://www.dsh.so/artifact/dsh-vision-bridge-21/)``[](https://www.dsh.so/artifact/dsh-vision-bridge-21/)``[](https://www.dsh.so/artifact/dsh-vision-bridge-21/)``[](https://www.dsh.so/artifact/dsh-vision-bridge-21/)`Security Report
Two automated layers, neither a manual review: a static scan (per-plugin rule checks) and a model-driven dynamic security audit that covers only the subset static-flagged at warn or above and never executes plugin code.
Static low; dynamic medium (authoritative when present) → overall medium.
v0.3.10dsh manifestv0.3.10git2026-10-25v0.3.10same versionclean · gitVet is an AST static scan (npm artifact or git source).
show static findings (1)
- criticalbase64Blob · obfuscation
dsh/index.js:1067'iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAAl0lEQVR4nO3QMREAIAzAwMqpfz14ARk/kOH3XObs3p+NDtAaoAO0BugArQE6QGuADtAaoAO0BugArQE6QGuADtAaoAO
show 4 audit findings
- mediumConfig/test routes let any local caller repoint baseUrl and name arbitrary env or credential refs, exfiltrating their values as Bearer tokens
dsh/index.js:340POST /vision-bridge/config accepts any string for apiKeyEnv (clean[key] = patch[key], line 988) and any baseUrl, and /vision-bridge/test then calls the endpoint with 'Authorization': `Bearer ${apiKey}` (line 172). The referenced value is resolved from the DSH credential store (state.credentials.resolve, line 335) or from process.env, so a caller can name an unrelated secret (e.g. AWS_SECRET_ACCESS_KEY or another provider's credential reference) and have it transmitted to an attacker-chosen host. Protected only by sameOrigin() and reachable by any non-browser local client.
- mediumvision_bridge_read_image reads any local file by path and forwards its bytes to the configured vision endpoint without type or size checks
dsh/index.js:602execute() passes args.path straight to loadImageSource; there is no extension/type allow-list, guessMime defaults unknown extensions to 'image/png' (line 142), and the bytes are base64-inlined into the outbound request (line 609) or saved as an attachment and sent to the configured provider. A prompt-injected model can therefore request e.g. ~/.ssh/id_rsa, ~/.dsh/settings.yaml or .env and have the content shipped off-host; there is also no size cap on this path (the 25 MB PASTE_MAX_BYTES limit applies only to the paste route), so a huge file causes unbounded memory use.
- mediumUnescaped config values are interpolated into settings.yaml, allowing injection of arbitrary YAML keys outside the plugin namespace
dsh/index.js:391writeSettingsSection() serializes string values verbatim; a value containing a newline (e.g. baseUrl = "https://x\notherKey: value") inserts unindented lines, i.e. new top-level keys into the host's settings.yaml, which is then rewritten to disk (line 403). Values come from POST /vision-bridge/config, which only checks syntax for providerMode/timeout and copies any other field as-is (line 988). This gives the config route a write primitive on the whole host settings file, not just the vision-bridge section.
- lowsameOrigin() fails open when the Sec-Fetch-Site header is absent
dsh/index.js:679All state-changing routes (paste, config POST, test) accept requests with no Sec-Fetch-Site header, so older browsers and any non-browser local client bypass the only CSRF guard; combined with the findings above this is the precondition that makes the config write and credential redirection reachable.
No critical/backdoor found; highest risks are weakly guarded /vision-bridge/* write routes, unrestricted local file read forwarded to the vision endpoint, and YAML injection when writing settings.yaml.
Rule (2026-10-24): when a dynamic conclusion exists it is authoritative (it may raise or lower the level); without one, the static/vet fused tier applies. The audit never writes the exemption list (exemptions are manual only); a wrong conclusion is withdrawn by human review and the tier falls back to static/vet.
Disclaimer: the static scan and the dynamic security audit are both automated analysis, not a security guarantee. Always review what you install.
Activity
Last commit 2026-09-28 · activity: Active
• Repo created: 2026-08-25
• Stars: ★ 0 · Forks: 0
• Health: Active — committed within last 30 days
Source
Author README
View on GitHub ↗The author's original README from the repository — fetched live, unedited (the English page loads the default README).
