dsh-recall-plugin: A Message Recall and File Rollback Plugin for DeepSeek Harness

limbo947/dsh-recall-plugin

Sessions & MessagesVerified
Listed on 2026-08-20
Page last updated 2026-08-20

DSH plugin for message recall: revert files and conversation to the state before a sent message.

Let DeepSeek Harness roll back both conversation and files together, recalling a message and restoring project files to their original state.

install
dsh plugin --profile web add github:limbo947/dsh-recall-plugin
Category
Sessions & Messages
Platform
DSH-Plugin
Author
limbo947
Distribution
Plugin

dsh-recall-plugin Key Features

Rollback files and conversationIndependent shadow git snapshotsNo touch to project gitConfirm panel with file listAuto gc and cleanup

dsh-recall-plugin Repository

limbo947
Publisher
limbo947
Repository
limbo947/dsh-recall-plugin
22
Stars
2
Forks
0
Watchers
4
Open issues
LanguageJavaScript
LicenseMIT License
Website
Repo last push2026-08-17 16:43:03
Repo created2026-08-15 01:43:10
Topics
cordisdeepseek-harnessdshdsh-pluginpluginwindows
Default branchmain

dsh-recall-plugin Repo Summary

dsh-recall-plugin is a session rollback plugin (DSH plugin) for DeepSeek Harness (DSH). It lets you click "↶ Recall" under any of your sent messages to restore both the workspace files and the conversation history to the state before that message was sent. It solves the pain point of not being able to cleanly revert when an agent modifies files incorrectly or the conversation goes off track. Core capabilities include: full rollback of files and conversation, independent shadow git snapshots (without touching your project's own git), incremental compressed storage, automatic gc, and linked cleanup after session deletion. The plugin is maintained by limbo947, licensed under MIT, pure JavaScript with zero build, supports Windows (PowerShell 5.1/7 + git CLI) and Linux/macOS (bash + git CLI), and was last updated in 2026-08.

What core features does the dsh-recall-plugin DSH plugin support?

  • Full rollback of files + conversation: Not just chat history, but also files modified by the agent are restored to their original state.
  • Does not touch your project's own git: Snapshots are stored in a separate shadow git repository; your branches, staging area, and uncommitted changes are all unaffected; .git and node_modules are automatically excluded.
  • Keeps project directory clean: Snapshots are always stored under $DSH_HOME, never polluting the project; independent of session sandbox permissions (workspace-write / read-only sessions still snapshot and rollback normally), only degrades to project-local .dsh-recall-snapshots when home is not writable (with a page hint), and auto-migrates back when home is restored.
  • Can regret repeatedly: As long as the session exists (including archived), snapshots are fully retained and never pruned. You can roll back again to an earlier point; files overwritten during rollback are always recoverable.
  • See the list before acting: Clicking recall first shows a list of files to be changed (modified / restored / deleted), and only executes after confirmation.
  • Disk-friendly: Snapshots use git delta compression, incremental not full-directory copy; files over 100MB are automatically skipped.
  • Automatic slimming: Periodic git gc packs loose objects (lossless); snapshots are automatically cleaned after session deletion; build artifacts can be globally excluded via exclude.txt.

How to install dsh-recall-plugin?

Prerequisites: git CLI (if not installed, the recall button won't appear, and a hint will show at the top of the page; DSH still runs); Windows PowerShell 5.1 / 7, Linux/macOS bash + git; DSH 0.1.0-rc.x.

bash
dsh plugin --profile web add github:limbo947/dsh-recall-plugin

Restart the DSH process (choose one according to your startup method):

bash
dsh web                      # start in foreground
pm2 restart <your-dsh-process-name>   # if using pm2

Verification: After restart, hard-refresh the page (Ctrl+Shift+R), hover over any user message sent after the plugin was enabled—a "↶" appears next to the copy button. Uninstall: dsh plugin --profile web remove dsh-recall-plugin (snapshot data remains under dsh-recall-snapshots/ in home; delete that directory manually to completely remove).

How to use dsh-recall-plugin?

  1. Hover over any user message sent after the plugin was enabled, and a "↶ Recall" button appears to the left of the copy button.
  2. Click it → a confirmation panel shows the list of files to be changed (modified / restored / deleted).
  3. Click "Confirm rollback" → files are restored to the state before that message was sent; the view switches to a new session (that message and later conversations are removed), and the original session is archived and can be retrieved anytime.

What is the snapshot maintenance and cleanup mechanism of dsh-recall-plugin?

  • Periodic gc: Every 50 snapshots or 24 hours since last gc (whichever comes first), git gc runs in the background to pack loose objects. The throttle credential is stored in gc.stamp inside the shadow repo, so restarting DSH does not reset the cycle. The two thresholds can be overridden with environment variables: DSH_RECALL_GC_SNAPS, DSH_RECALL_GC_HOURS.
  • Linked cleanup on session deletion: When a session is permanently deleted, the next maintenance automatically deletes all snapshots for that session and frees space. Archiving is not deletion; the judgment is conservative.
  • User-defined exclusions: In $DSH_HOME/dsh-recall-snapshots/exclude.txt, add one gitignore-style pattern per line, effective for all projects, applied immediately on the next snapshot/rollback.

How does dsh-recall-plugin work?

When each user message is sent (before the agent touches files), the workspace is snapshotted into a separate shadow git repository; on recall, files are restored via git archive and the session is forked to before that message via DSH's official sessions.fork mechanism. Snapshots are stored under dsh-recall-snapshots/<SHA256(project absolute path)>/ in home, containing a shadow git repo (tag named snap-<messageID>) and an index file index.json. On Windows, scripts use PowerShell; on Linux/macOS, bash (auto-forked via the executor mounted at ctx.shell). Known limitations: snapshots are created at message send time, so historical messages before plugin enablement have no snapshots; the first user message in a session cannot roll back conversation (only files); nested git repos inside the workspace are not snapshotted.

View more DSH plugins at dsh-plugin.org

DSH-Plugin FAQ