dsh-extra-paths
Manifest valid配置一组额外可写根:fs 工具与受限 shell 首次尝试即可写、无需审批,带 Web 设置页与按目录结构锚定的路径模式。 · DSH plugin: configured extra writable roots for the fs tools and the sandboxed shell, with a Web settings page and structure-anchored path patterns.
dsh-extra-paths
English | 中文
Let DSH write to a set of configured external paths on the first try, with no approval: this covers the write/edit
tools and bash subprocesses alike. The plugin works by wrapping services (it does not change DSH core) and ships a Web
settings page plus a preview of the effective roots for the current workspace.
Install
Requires DSH 0.1.5 / 0.2.0 / 0.2.1 (outside that range the install gate refuses the package).
dsh plugin --profile <name> add dsh-extra-paths # <name> = your profile
From a checkout instead of the registry:
pnpm install && pnpm build
dsh plugin --profile <name> add /path/to/dsh-extra-paths # path = absolute path to this repo
Then open the Extra paths card under Settings → Plugins, or Extra writable paths in the settings sidebar.
Configuration
Write it into the extra-paths section of the settings document ~/.dsh/settings.yaml, or just use the settings page
(saving takes effect immediately, no restart needed). <work root> below is a placeholder for the directory that
holds your projects (an absolute path, or one starting with ~/) — replace it with a path of your own:
extra-paths:
paths:
- <work root>/notes/home # default scope/surfaces
- path: ../../notes/home # relative paths resolve against the session workspace
scope: always-write
- path: <work root>/some-repo
scope: write
surfaces: [fs] # only the write/edit tools may write here
| scope | session read-only | session workspace-write |
|---|---|---|
write (default) | denied | writable |
always-write | writable | writable |
surfaces: fs = the write/edit/str-replace tools; shell = bash subprocesses. Reads and execution are not
sandboxed to begin with.
How relative paths resolve
Relative paths resolve against each session's own workspace (the settings page has a "base workspace" field so you can preview this):
| Spelling | Resolves to | Notes |
|---|---|---|
.. | <work root> | the parent of the workspace; that directory and all of its siblings become writable |
../some-repo | <work root>/some-repo | grants exactly one sibling repository (more precise than .., recommended) |
../../notes/home | <work root>/notes/home | go up a few levels and into another tree |
~/notes/home | under your home | independent of the workspace; ~user is not expanded (same as the host) |
Patterns: anchor a grant to directory structure (no hard-coded paths)
A path can use wildcards to describe a group of directories, turning "a certain directory exists somewhere in this
path" into a condition:
| Spelling | Matches (the granted root) |
|---|---|
<work root>/**/.worktrees/.. | every repository root that contains .worktrees (the parent of .worktrees) |
<work root>/**/.worktrees/* | each individual worktree (.git and the main checkout are never touched) |
<work root>/<some-repo>/.worktrees/* | every worktree of one repository (zero traversal cost, recommended) |
<work root>/*/notes | the notes directory under every repository/project |
Syntax: * = exactly one level, ** = at most 3 levels (only directories that actually exist match, so
".worktrees must exist" comes for free); a trailing .. moves up after matching (so …/.worktrees/.. is "the
parent of .worktrees", rather than something lexical collapsing eats away).
Safety bounds (hard constraints, not advice):
- the wildcard needs a literal anchor before it, at least two segments long, absolute or starting with
~/—/**,~/**,/srv/**are refused outright - traversal never enters
node_modulesor.git, and**never enters hidden directories (.worktreesis a literal, so it still matches at its own level) - bounded:
**covers at most 3 levels, and more than 4096 directories or more than 256 matches makes the whole pattern inert (fail closed — never a partial, unpredictable grant); the reason is reported as a warning - expansions are cached for 30 seconds, so a newly created worktree is picked up within 30 seconds
The settings page shows the resolved absolute path live for every row (symlinks follow the host's canonical
preview) and, for a pattern row, the match count as [active ×N] plus each concrete root below it; zero matches and
blocked patterns are both spelled out — so there is no need to "save first and then check whether it resolved".
Known limits
- Per-path "no restrictions at all" is not achievable: the bash sandbox works at whole-invocation granularity.
- Relative paths resolve against the session workspace, so the same entry points at different directories in different workspaces — the settings page preview shows the actual resolution.
- The shell side is not widened on Windows;
always-writeweakens what theread-onlystop button can do for that path. - Files written outside the workspace do not appear in the
deliverablesworkspace-changes card.
Comments
Loading…
From the same category
by ccch1mneyyy
DSH 官方公众号收录的 TUI 补位插件:Claude Code 风,鲸鱼顶栏/实时状态/流式思考/双击 Esc 回滚/上下文进度+TPS。npm 一键装。 DSH official WeChat featured TUI plugin — Claude Code style: whale bar, live status, streaming thoughts, double-Esc rol
★ 4.8k
↓ 11.9k/wk
MIT
TypeScript
Oct 18, 2026
dsh plugin --profile terminal add @deepseek-harness-tui/dsh-tuiby strukto-ai
The World's First Virtual Terminal for AI Agents
★ 3.7k
↓ 374/wk
Apache-2.0
TypeScript
Oct 18, 2026
dsh plugin --profile agent add @struktoai/mirage-dshby bowenliang123
The best DeepSeek Harness plugin for context insight and management, with context dashboard / browser / sidebar and context command, for context statistics, composition, breakdown, evolution details,
★ 2.3k
↓ 52.1k/wk
Apache-2.0
TypeScript
Oct 18, 2026
dsh plugin --profile web add dsh-contextby huiliyi37
官方 DeepSeek Harness 的交互式终端 UI 插件:自研 ANSI 极简交互渲染、流式 Markdown/工具卡、16+ 主题、slash 命令与选择器、输入历史与本地偏好持久化、LSP 诊断、memory记忆,很丝滑的开发体验。
★ 287
↓ 493/wk
Apache-2.0
TypeScript
Sep 30, 2026
dsh plugin --profile terminal add @huiliyi37/dsh-tianshu-tuiby Hilbert-beinghappy
面向 DeepSeek Harness 的 Claude Code 风格终端界面,支持 Windows、macOS 与 Linux,兼容透明终端、VS Code 主题和自定义配色。
★ 196
↓ 108/wk
MIT
TypeScript
Oct 13, 2026
dsh plugin --profile web add seekttyby c3cvld7aag
富江DSH完美破甲|富江破甲 DSH 本地插件,内置提示词规则,支持 Windows 一键安装、环境自动准备与一键卸载,全中文使用说明。
★ 121
JavaScript
Oct 3, 2026
dsh plugin --profile web add fujiang-armor