Introduction

When developing or debugging with DeepSeek Harness (DSH), you often need to run exploratory tests based on the current session without polluting the main session’s history or adding it to the session list. The traditional approach is to create a new session, but this usually requires manually copying historical context and can clutter the session list.

The dsh-side-session plugin solves this problem. It creates a side floating panel in the DSH Web interface, allowing you to fork the main session’s history and recent activity for independent interaction. This side session shares permissions and tools with the main session, but it is destroyed immediately after closing and leaves no trace.

Plugin Information

  • Plugin Name: dsh-side-session
  • Maintainer: Diluka
  • Category: Client
  • License: MIT

Core Features

  1. Fork the main session history: When creating a side session, completed turns from the main session are forked (as seeds), and the current in-progress activity (user messages, assistant messages, and tool calls) is completed by reading the main session’s in-memory log.
  2. Consistent permissions and tools: The side session inherits the main session’s agent preset, including tools, skills, prompts, permission entries, the current working directory (cwd), model routing, sandbox mode, and approval policies.
  3. Boundary prompt injection: The plugin injects dedicated prompts (including a system prompt and the first user message) that explicitly tell the agent “this is a temporary side session” and “the history is for reference only,” preventing interference with the main thread.
  4. Non-persistence and lazy creation: The side session does not appear in the session list. Clicking the button only opens a window without creating an agent; the session is actually created only when the first message is sent.
  5. Destroy on close: After closing, the agent is destroyed, and the persisted files are deleted. After the process is restarted, the session cannot be opened again.
  6. UI reuse: The side panel reuses the main session’s rendering logic and supports displaying Markdown, KaTeX, code blocks, collapsible thinking sections, and tool-call chips.

Installation and Enabling

This plugin is a static profile plugin and requires no build step. Install it through the DSH CLI:

dsh plugin --profile web add /path/to/dsh-side-session

After installation, the DSH Web service must be restarted for the changes to take effect.

Usage

  1. Open the DSH Web interface and enter any main session.
  2. Click the “side session” button in the session header; a temporary session window immediately appears on the right.
  3. Ask a question in the window. The agent then works with the same context and capabilities as the main session.
  4. When finished, click the “Close” button; the side session will be destroyed.

Technical Implementation Details

  • Communication mechanism: The host process and the browser client communicate via the webServer’s JSON routing.
  • Message sending: Message sending in a side session does not use the wire protocol’s session.prompt (this endpoint rejects origin: ‘subagent’). Instead, the host side calls agent.followup() directly.
  • Architecture: The host side (lib/index.js) handles session forking, context snapshots, and routing; the client side (lib/client.js) handles UI rendering and RPC calls.

Use Cases and Notes

It is suitable for developers who need to experiment, debug, or perform non-destructive exploration while a main session is running.

Note: The plugin runs with the permissions of the current DSH process. Review the source code and the license (MIT) before installing.

Summary

dsh-side-session provides DSH users with a side-session capability similar to Claude Code’s /btw. By forking the main session’s completed history and in-memory logs, and by using boundary prompts, it enables temporary isolated exploration in a shared-permission environment. The destroy-on-close behavior ensures the environment remains clean.