DSH Plugins Marketplace

DSH Plugins

Plugins

/

Tools & Capabilities

/

dsh-fs-reobserve

d

dsh-fs-reobserve

Manifest valid

After an agent's own bash or shell command, re-observes the files that session had observed, so FS_STALE_VERSION no longer fires on self-inflicted writes but still fires on writes by others.

hasBundlePatch

dsh-fs-reobserve

npm

Ends self-inflicted stale-file errors after an agent's own shell commands.

dsh plugin --profile web add @lucagiftzek/dsh-fs-reobserve
# or from GitHub: dsh plugin --profile web add github:lucagiftzek/dsh-fs-reobserve
# then restart dsh web

Stock DSH versus dsh-fs-reobserve after a shell edit

A DSH plugin that supplies the missing middle ground for @deepseek-ai/dsh-fs-observation-policy.

The problem

The observation policy learns a file's version only from instrumented filesystem operations (read, write and edit), which emit fs/observed. dsh-tool-bash, dsh-shell and dsh-subprocess-local contain no reference to that event. DSH's own documentation:

Only instrumented filesystem operations report here; the OS is not watched.

So a session that modifies a file through bash leaves a stale observation, and its very next edit of that file is refused with FS_STALE_VERSION: an error caused entirely by the session's own action.

The three options

Strictdsh-fs-reobserveDisabled
Stale error from your own bash writesfiresgonegone
Stale error from a third-party writerfires (correct)fires (correct)suppressed (unsafe)
FS_NOT_OBSERVED (read before edit)enforcedenforcedgone
Worst-case failurewasted callwasted callsilent data loss
Discipline requiredyesnonenone

What it does

After one of a session's own bash/shell calls settles, it re-stats the targets that session had observed and re-emits fs/observed at their current state. All three transitions are covered:

  • present → present (new version): the command rewrote the file
  • present → absent: the command deleted the file
  • absent → present: the command created a file a read had confirmed missing

A version is never manufactured; it comes from ctx.fs.stat, the only sanctioned source.

What it deliberately does not do

It never re-observes a change the session did not cause. A file rewritten by cron, another agent, or a desktop editor keeps its old observation, so the next edit still fails with FS_STALE_VERSION and the agent is still forced to re-read. That is the protection worth keeping.

Configuration

Options are read from the plugin's loader entry config (the fs-reobserve row in your profile's cordis.patch.yml); a settings.yaml section is not read. Example in docs/TROUBLESHOOTING.md.

KeyDefaultMeaning
tools[bash, shell]out-of-band tools to react to
notifytrueattach a notice to the tool result so the agent knows
maxNotifyPaths4paths named before eliding

Install

Install from npm: dsh plugin --profile web add @lucagiftzek/dsh-fs-reobserve, or from GitHub: dsh plugin --profile web add github:lucagiftzek/dsh-fs-reobserve.

dsh plugin --profile web add @lucagiftzek/dsh-fs-reobserve
# or from GitHub: dsh plugin --profile web add github:lucagiftzek/dsh-fs-reobserve
# then restart `dsh web`; the log shows "fs-reobserve: armed ..." once

A local checkout works the same way: dsh plugin --profile web add link:/absolute/path/to/dsh-fs-reobserve. Requires Node 22.5 or newer and a DSH build that ships @deepseek-ai/dsh-fs-observation-policy (used on DSH 0.1.5 and 0.2.1). Tests: npm test.

The package declares dsh.bundle, so dsh plugin add puts it in dsh.profile.bundles and its own patch inserts the fs-reobserve entry. Do not add a second insert row by hand.

Kill switch without uninstalling

Add to ~/.dsh/profiles/web/cordis.patch.yml:

- id: fs-reobserve
  disabled: true

When something goes wrong

  • Ask your agent to load the fs-reobserve-doctor skill. This version does not register it automatically: copy skills/fs-reobserve-doctor into ~/.dsh/skills/ once (how).
  • Symptom-first guide: docs/TROUBLESHOOTING.md.
  • Codes and log lines: docs/ERRORS.md.

More plugins by the same author

All of them are open source and run on DeepSeek Harness 0.2.x (several on 0.1.5 too).

PluginWhat it does
dsh-artifactsAn Artifacts tab that lists the files an agent produced and previews them in place, plus a template library agents can use and extend
dsh-mailMail client and agent mail tools: IMAP, POP3, SMTP and OAuth2 accounts, scheduled and bulk sends with unsubscribe handling
dsh-note-keeperObsidian-compatible Markdown notes in the sidebar with search, graph, audio notes and transcription, OCR and client-side encryption
dsh-phoneSMS and calls (Twilio, SIP via Asterisk) with call audio through your own server, live voicemail and Telegram
dsh-voiceRead-aloud, dictation and language-aware speech with 23 TTS and STT providers, per-language routing and word highlighting
dsh-orchestratorAgent swarm and task orchestration: an Orchestrate tab, orch_* tools, runners, provider cards and a machine API
dsh-workspace-railA workspace-first sidebar rail: pinned chats, projects as folders, live Recents, search and unread markers
DSH-Idle-WatchdogIdle-chat nudges and an authenticated HTTP API that posts a prompt into any chat
dsh-plugin-updatesUpdate checker that only offers releases your running DSH core can load
dsh-subagent-tieringSubagents default to a cheaper sibling of the parent model unless the agent names a route
dsh-fs-reobserve (this one)Ends self-inflicted stale-file errors after an agent's own shell commands
dsh-request-image-capClamps every image sent to the model to a pixel cap, fixing many-image request errors
dsh-sealAn encrypted channel in front of DSH: a Go reverse proxy plus a service worker that seal all DSH browser traffic

Built by Luca Tzekos, who also makes Job Opportunities API: employer-direct job data with per-field provenance you can verify yourself, free to read and available as an API. If this plugin is useful to you, a star on this repo or a look at jobopportunitiesapi.org is the best thanks.

Comments

Loading…

Similar plugins

dsh-auto-observe

by ruaibeite

Records the version of the edit target as an observation when the agent inspected the file with bash instead of the read tool, so the filesystem observation policy stops rejecting edits with FS_NOT_OB

Development & InfrastructureManifest valid

★ 1

MIT

JavaScript

Oct 13, 2026

dsh plugin --profile web add @ruaibeite/dsh-auto-observe

by 11111353535

Wake the agent when a directory changes, with the diff and without the echo of its own writes.

Workflow & AutomationTools & CapabilitiesManifest valid

★ 0

MIT

JavaScript

Oct 17, 2026

dsh plugin --profile web add dsh-folderwatch

Permission mode between workspace-write and full access: shell commands are checked by deterministic rules and a subagent review; irreversible or system-level actions require explicit approval.

Workflow & AutomationSecurity & AuditManifest valid

★ 0

dsh plugin --profile web add dsh-almost-full-access

by caishengshuo

Every file, one version before it breaks. A DSH plugin: snapshots a file the instant before an agent rewrites it, with a per-session GUI timeline where any point can be restored in one click.

Terminal & ClientsManifest valid

★ 0

MIT

JavaScript

Oct 24, 2026

dsh plugin --profile web add dsh-beforewrite

by Taler97

Observational file-mutation rollback for the fs tools: write/edit pre-images are checkpointed as git blobs or snapshots and restored through a model-facing rollback_files tool or a /rollback command.

Tools & CapabilitiesDevelopment & InfrastructureManifest valid

★ 0

MIT

TypeScript

Sep 11, 2026

dsh plugin --profile web add dsh-rollback

Turns corrections into permanent rules: explicit remember: triggers and auto-detected corrections pass a confirm bar (save globally / per project / edit / skip) and are written into a marked AGENTS.md

Tools & CapabilitiesMemory & ContextManifest valid

★ 0

dsh plugin --profile web add dsh-reflect