Introduction

When handling agent conversations in DSH Web, a common requirement when a user message in a completed Session is poorly phrased is to have the assistant answer again, without losing the original path or creating a new sub-Session. dsh-conversation-rewind addresses this scenario for the DeepSeek Harness Web UI by providing same-Session append-only conversation branches and secure editing capabilities for user messages.

What is this

dsh-conversation-rewind is a DSH Web plugin maintained by DTSFO, licensed under MIT, with a version number of 0.1.7 in package.json.

It transforms “modifying historical user messages and regenerating replies” into an operation of creating a sibling branch within the same Session, while maintaining a persistent event log as append-only to avoid directly rewriting or deleting historical events.

Core Features

Inline Editing of Historical User Messages

The plugin adds an Edit history message action next to editable user messages. Editing is done inline within that message line, without opening a modal.

After the user modifies the text, they can click Confirm or Cancel. Confirm creates a new sibling branch from that message in the original Session and sends the edited text as a real new user turn, so the assistant’s response can be regenerated.

After editing is confirmed, subsequent messages are no longer offered as editable options.

Branch Tree Browsing

The plugin replaces the original history-switching form with a visual Branches tree. The final message of each semantic branch is clickable; intermediate messages are displayed as static tree nodes.

Non-endpoint messages are displayed as static tree nodes. Calls to Host for non-endpoints are rejected with BRANCH_NOT_ENDPOINT.

Read-only Browsing within the Same Session

Clicking a branch endpoint is just a client-side read-only view of the existing path. It does not send messages, call the Provider, wake up the Agent, write to the inbox, append replacements, or truncate the Session.

Branch browsing stays within the original Session: the Session ID and browser URL remain unchanged, and no sub-Session is created.

Append-only Logs and Replacement Markers

The plugin keeps the persistent event log append-only. Historical events are retained for audit/recovery; the plugin appends replacement markers instead of rewriting or deleting historical events.

It uses DSH Surface replacement metadata to hide the selected message, old replies, and subsequent active paths so they do not enter the current transcript and future model context.

Security Protection Triggered by Editing

Internal edit triggers are permanently protected to ensure they are cancelled before provider dispatch, including after restart for orphan recovery.

Installation and Enablement

Environment requirements are as follows:

  • DeepSeek Harness >=0.1.0-rc.6
  • Node.js ^22.19 or >=24
  • DSH Web profile

Installation commands:

dsh plugin --profile web add \
  https://github.com/DTSFO/dsh-conversation-rewind/archive/refs/tags/v0.1.7.tar.gz
dsh web

The first command adds the plugin to the Web profile, and the second command starts DSH Web.

Typical Usage

  1. Open a completed Session in DSH Web.
  2. Click Edit history message next to Copy under the target user message; modify the text within that message line, then click Confirm or Cancel. Confirm creates a new sibling branch within the same Session.
  3. Open the Branches view to inspect the message tree; only click branch endpoints to browse that existing path in the Chat.
  4. Sending functionality is disabled while browsing and the Session remains unchanged; return to the active endpoint before sending or editing.
  5. The old path is still retained in the append-only log; only the edit confirmation creates a replacement and regenerates the reply.

Applicable Scenarios and Notes

Editable Conditions

Only completed turns containing exactly one direct, ordinary, plain-text user message are editable.

Branches containing attachments, ambiguous user-role context, or unsafe-to-replay turns are still visible in the tree, but the messages are not editable.

Editing requires the Session to be live in the current DSH process. If Surface or inbox changes concurrently, the operation will fail and close.

What Editing Does Not Do

Editing only changes conversation history; it does not restore workspace files, nor does it rollback tool calls, commands, network requests, or other external side effects.

Branch browsing is a read-only client projection; it cannot reconstruct Chat lines that Host has not exposed in the current window.

Security and Pre-installation Checks

The plugin takes effect in the current DSH process and runs with the current dsh process permissions. Before installation, check the source code, plugin configuration, and the MIT license to confirm that its injection behavior is consistent with your own environment.

Conclusion

The value of dsh-conversation-rewind lies in restricting “modifying history and regenerating replies” within the boundaries of the same Session, append-only logs, and explicit read-only browsing, while preserving the old path for audit/recovery.

Verified information does not provide a separate directory page URL, so this article does not include unverified directory page links. The GitHub repository address is as follows:

  • https://github.com/DTSFO/dsh-conversation-rewind