Install verification: runtime verified (L5) · tested on dsh 0.2.1-rc.2 · last checked Install verification details →
What it doesAI
Real-time session progress and task tracking for DSH that injects prompts to maintain a structured Markdown progress file and shows a progress drawer.
- Injects system prompts so the agent keeps a structured Markdown progress file
- Shows a real-time Session Progress Drawer with preview
- Surfaces completion status, active subtasks and upcoming milestones
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:nguyenduclong-ict/dsh-session-progress#v0.11.4Install 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 3 requirement(s) across 4 @deepseek-ai/dsh-* packages. raw ranges
^0.1.2-alpha.1 ×2 ^0.1.5-rc.2 ×1 ^0.1.2-rc.1 ×1
✗ Running dsh 0.2.1-rc.2 is outside the declared range — the official install gate rejects it (incompatible-version).
To force-install, grant an exact-version exemption: dsh plugin allow-version dsh-session-progress@0.11.4 0.2.1-rc.2 (the exemption lives in the local profile; this site does not assume one)
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.4 | dsh 0.2.1-alpha.2 | dsh 0.2.0-rc.2 | dsh 0.1.7-rc.2 |
|---|---|---|---|---|---|
| v0.11.4 | ✓ | ✓ | ✓ | ✓ | · |
| v0.10.6 | · | · | · | · | · |
| v0.1.8 | · | · | · | · | ✓ |
v0.11.4github✓ 4 runtime-verified2026-10-20
https://github.com/nguyenduclong-ict/dsh-session-progress
✓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/nguyenduclong-ict/dsh-session-progress#v0.11.4
ID: dsh-session-progress@v0.11.4@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.42026-10-18L5 · runtime verified
- • Node.js: v24.14.0
- • DSH: 0.2.1-alpha.4
- • Plugin artifact: github · https://github.com/nguyenduclong-ict/dsh-session-progress#v0.11.4
ID: dsh-session-progress@v0.11.4@dsh0.2.1-alpha.4 · profile: l4-sandbox
Issued: 2026-10-18 · expires: 2026-10-25
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-12L5 · runtime verified
- • Node.js: v24.14.0
- • DSH: 0.2.1-alpha.2
- • Plugin artifact: github · https://github.com/nguyenduclong-ict/dsh-session-progress#v0.11.4
ID: dsh-session-progress@v0.11.4@dsh0.2.1-alpha.2 · profile: l4-sandbox
Issued: 2026-10-12 · expires: 2026-10-19
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/nguyenduclong-ict/dsh-session-progress#v0.11.4
ID: dsh-session-progress@v0.11.4@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.
v0.10.6github✓ 1 runtime-verified2026-09-30
https://github.com/nguyenduclong-ict/dsh-session-progress
✓prehistory2026-09-30L5 · runtime verified
- • Node.js: v24.14.0
- • DSH: unknown
- • Plugin artifact: github · https://github.com/nguyenduclong-ict/dsh-session-progress#v0.10.6
ID: dsh-session-progress@v0.10.6@dshunknown · profile: l3-fullscan
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.
v0.1.8github✓ 5 runtime-verified2026-09-25
https://github.com/nguyenduclong-ict/dsh-session-progress
✓dsh 0.1.7-rc.22026-09-25L5 · runtime verified
- • Node.js: v24.14.0
- • DSH: 0.1.7-rc.2
- • Plugin artifact: github · https://github.com/nguyenduclong-ict/dsh-session-progress#v0.1.8
ID: dsh-session-progress@v0.1.8@dsh0.1.7-rc.2 · profile: l4-sandbox
Issued: 2026-09-25 · expires: 2026-10-02
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-alpha.22026-09-23L5 · runtime verified
- • Node.js: v24.14.0
- • DSH: 0.1.7-alpha.2
- • Plugin artifact: github · https://github.com/nguyenduclong-ict/dsh-session-progress#v0.1.8
ID: dsh-session-progress@v0.1.8@dsh0.1.7-alpha.2 · profile: l4-sandbox
Issued: 2026-09-23 · expires: 2026-09-30
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/nguyenduclong-ict/dsh-session-progress#v0.1.8
ID: dsh-session-progress@v0.1.8@dsh0.1.6-alpha.2 · profile: l3-fullscan
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/nguyenduclong-ict/dsh-session-progress#v0.1.8
ID: dsh-session-progress@v0.1.8@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-12L5 · runtime verified
- • Node.js: v24.14.0
- • DSH: 0.1.5-rc.2
- • Plugin artifact: github · https://github.com/nguyenduclong-ict/dsh-session-progress#v0.1.8
ID: dsh-session-progress@v0.1.8@dsh0.1.5-rc.2 · profile: l4-sandbox
Issued: 2026-09-12 · expires: 2026-09-19
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-session-progress/)``[](https://www.dsh.so/artifact/dsh-session-progress/)``[](https://www.dsh.so/artifact/dsh-session-progress/)``[](https://www.dsh.so/artifact/dsh-session-progress/)``[](https://www.dsh.so/artifact/dsh-session-progress/)`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 high (authoritative when present) → overall high.
v0.11.4dsh manifestv0.11.4git2026-10-25v0.11.4same versionclean · gitVet is an AST static scan (npm artifact or git source).
show static findings (8)
- warningshellExec · shell
index.js:1594execFile('cmd', ['/c', 'start', '', targetPath], (err) => { - warningshellExec · shell
index.js:1598execFile('open', [targetPath], (err) => { - warningshellExec · shell
index.js:1602execFile('xdg-open', [targetPath], (err) => { - warningnetIp · network
index.js:1682reqUrl = new URL(req.url ?? '/', 'http://127.0.0.1'); - warningnetIp · network
index.js:1769reqUrl = new URL(req.url ?? '/', 'http://127.0.0.1'); - warningfsWrite · files
index.js:88fs.writeFileSync(SETTINGS_FILE, JSON.stringify(data, null, 2), 'utf-8'); - warningfsWrite · files
index.js:444fs.writeFileSync(tempPath, content, 'utf-8'); - warningnewFunction · code-exec
tools/preview-panel.mjs:57new Function('window', 'console', 'document', patched)(
show 4 audit findings
- highUnauthenticated /content route reads any local file through the filePath query parameter
index.js:1497handleContent accepts an arbitrary absolute path from the query string and feeds it to loadRecord(), which does fs.readFileSync(record.filePath). No check restricts it to os.tmpdir() or to the dsh-progress-* naming pattern. When the file is not a valid progress document the error branch of describeRecord returns the raw file text in the JSON field `content`, so GET /api/session-progress/content?filePath=/home/user/.ssh/id_rsa (or ~/.dsh-session-progress-settings.json, project sources, etc.) exfiltrates readable files. Because the same handler sets Access-Control-Allow-Origin: *, a web page in
- medium/open route launches any existing local path in the OS handler, reachable cross-origin
index.js:1650handleOpen takes an arbitrary path from the POST body (only existence is required) and hands it to openInDefaultApp(), which spawns open/xdg-open/cmd start on it. No authentication or origin restriction is applied and the response carries Access-Control-Allow-Origin: *, so any web page (or local caller) can make the host open or launch an arbitrary pre-existing file, macOS .app/.command bundle or Linux .desktop entry; on Windows the path is additionally routed through `cmd /c start`. The only barrier is knowing a path.
- mediumAll plugin HTTP routes are unauthenticated and advertise wildcard CORS
index.js:1481handleContent, handleToggle and handleOpen (and their /api/task-progress aliases) perform no authentication, token or origin check while explicitly allowing every origin. Any web page the user visits, or any local process, can read the progress documents of every session (they contain goals, file paths, notes and activity), flip the tracking switch for any sessionId (including the global 'default' scope), and reach the arbitrary-file-read and OS-open routes described above.
- lowMarkdown link rendering allows javascript: URLs in the panel
client.js:947inlineFormat escapes HTML but does not validate the URL scheme of markdown links taken from the progress document, and the result is injected with dangerouslySetInnerHTML into the DSH renderer. Document prose is agent-authored and can be influenced by untrusted material the agent reads, so a prompt-injected document can plant a `[x](javascript:...)` link that executes script in the app's page context if the user clicks it. Requires a user click, hence low.
Unauthenticated local HTTP routes with wildcard CORS allow arbitrary file reads via ?filePath= and OS file/app launching; panel link rendering also lacks scheme checks.
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-10-01 · activity: Active
• Repo created: 2026-09-10
• Stars: ★ 3 · 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).
