DeepSeek Harness Error deployment:persona already registered: A Real-World Troubleshooting Journey from Reinstallation to .dsh Profile Conflicts

Most DeepSeek Harness installation issues tend to revolve around model providers, API authentication, MCP connections, or tool integrations. This one was different.

The error looked like a simple configuration problem at first glance:

internal: resume failed for session "session-3836a0e6-9fe9-40d7-884e-876b3ebba209"

Error: agent-presets: preset "standard" failed to mount

failed to apply loader entry persona (@deepseek-ai/dsh-persona):

prompt section "deployment:persona" is already registered

The natural assumption is that a Persona configuration was duplicated somewhere inside the preset configuration.

After several rounds of investigation, the root cause turned out to be much more subtle. The issue was not the installation itself, but a combination of persisted session state, profile data, and files stored inside the local .dsh directory.

This article documents the complete troubleshooting process.


Environment Overview

Before changing anything, the first step was to verify the current DeepSeek Harness installation.

Check the installed version:

dsh --version

Output:

0.1.0-rc.8

Inspect the installed packages:

npm list -g --depth=2 @deepseek-ai/dsh @deepseek-ai/dsh-persona

Output:

C:\nvm4w\nodejs
`-- @deepseek-ai/dsh@0.1.0-rc.8
  `-- @deepseek-ai/dsh-persona@0.1.0-rc.8

Verify the actual executable path:

where.exe dsh

Output:

C:\nvm4w\nodejs\dsh
C:\nvm4w\nodejs\dsh.cmd

Check which command PowerShell is executing:

Get-Command dsh

Output:

ExternalScript  dsh.ps1
C:\nvm4w\nodejs\dsh.ps1

At this point several things were already confirmed:

  • DeepSeek Harness and the Persona package were running the same version.
  • No duplicate installations were visible.
  • The environment was managed through NVM for Windows.
  • The CLI entry points were resolving correctly.

The Failure Happened During Session Resume

The interesting detail was that the error did not occur when launching DeepSeek Harness.

It happened while attempting to resume an existing session.

The relevant part of the error was:

prompt section "deployment:persona" is already registered

That message contains two important clues:

Element Meaning
deployment:persona Prompt section identifier
already registered Another registration already exists

At face value, this suggests a duplicate Persona registration.

The problem was that there was no obvious duplicate Persona configuration in the active preset.


Inspecting the Standard Preset Configuration

The next step was examining the standard preset definition:

@deepseek-ai/dsh/config/agent-presets/standard/agent.cordis.yml

Inside the file was the following section:

- id: persona
  name: '@deepseek-ai/dsh-persona'
  config:
    text: >-
      You are a coding agent powered by the {{model}} model.

Even more interesting was the accompanying comment:

The preset's own persona, shadowing the deployment default for this agent.

That indicates a design similar to:

Deployment Persona
        ↓
Standard Preset Persona
        ↓
Agent Persona

In other words, the Persona entry is expected to exist.

Removing it would merely hide the symptom rather than address the root cause.


Checking for Multiple Running Instances

To eliminate the possibility of stale background processes, all Node-related processes were inspected.

Get-CimInstance Win32_Process -Filter "Name='node.exe'" |
Select-Object ProcessId,ExecutablePath,CommandLine

Among the results were:

5536  npm start
13676 node index.js
12104 @deepseek-ai/dsh

The presence of active DSH-related processes suggested that old runtime state might still be involved.

At this point a complete uninstall became the fastest path forward.


Removing DeepSeek Harness

After stopping active DSH processes, the package was removed:

npm uninstall -g @deepseek-ai/dsh

Output:

removed 452 packages in 11s

Verify that the executable is gone:

where.exe dsh

Result:

INFO: Could not find files for the given pattern(s).

The CLI launcher had been successfully removed.

A second verification confirmed that the package no longer appeared in the global npm list.


Cleaning the npm Cache

The cache was then validated:

npm cache verify

Followed by a complete cleanup:

npm cache clean --force

Current runtime environment:

node -v
npm -v

Output:

v25.0.0
11.6.2

Should Node.js Be Downgraded?

A common troubleshooting recommendation is to switch to an LTS release such as Node 24.

In this environment that approach created additional complications.

The machine was already being used for:

Codex CLI
Claude Code CLI

Switching Node versions introduced compatibility issues for those tools.

More importantly, the observed failure occurred during:

Persona Registration
Preset Mounting
Session Resume

rather than during Node runtime execution.

There was no direct evidence linking Node 25 to the Persona registration conflict.

Changing Node versions at this stage would only introduce another variable into the investigation.


Testing DeepSeek Harness Through NPX

With the global installation removed, the next step was running DeepSeek Harness directly through NPX:

npx --yes @deepseek-ai/dsh@0.1.0-rc.8 web

The result was unusual:

No error message
No output
Appeared to hang indefinitely

This is exactly the type of behavior that often gets misdiagnosed as:

  • npm registry problems
  • network failures
  • corrupted package downloads
  • broken release builds

The actual cause turned out to be something entirely different.


The Critical Clue Came from the .dsh Directory

An attempt was made to remove the local DSH profile directory:

C:\Users\<username>\.dsh

Windows immediately displayed:

The action can't be completed because the folder or a file in it is open in another program.

That changed the direction of the investigation completely.

The problem was no longer centered on installation packages.

The focus shifted to the .dsh directory itself.


Finding the Process Holding .dsh

The following command was used to identify processes interacting with DeepSeek Harness files:

Get-CimInstance Win32_Process |
Where-Object {
    $_.Name -match 'node|npm|npx' -or
    $_.CommandLine -match 'deepseek|dsh'
} |
Select-Object ProcessId,Name,ExecutablePath,CommandLine

The results revealed two unexpected entries:

6544 notepad.exe

C:\Users\reanod\.dsh\profiles\web\package.json

and:

6188 notepad.exe

agent.cordis.yml

This was the turning point.

The .dsh directory was not locked by DeepSeek Harness itself.

It was being held open by Notepad.


What Was Stored Inside .dsh?

The process information exposed a profile structure similar to:

.dsh
 └─ profiles
     └─ web
         └─ package.json

That confirmed the existence of historical profile data.

Combined with the earlier session identifier:

session-3836a0e6...

it became clear that this was not a clean installation environment.

The system still contained:

Old Sessions
Old Profiles
Old Runtime State

all of which could influence startup behavior.


Safely Removing the User Profile

Before deleting the directory, all applications holding files open had to be closed.

Either close the Notepad windows manually or terminate them directly:

Stop-Process -Id 6544 -Force
Stop-Process -Id 6188 -Force

Verify that no relevant process remains:

Get-CimInstance Win32_Process |
Where-Object {
    $_.CommandLine -match '\.dsh|deepseek'
}

Then remove the profile directory:

Remove-Item "$HOME\.dsh" -Recurse -Force

Confirm deletion:

Test-Path "$HOME\.dsh"

Expected result:

False

At this point the local user state had been fully reset.


The Correct Way to Validate the Fix

The next step is important.

Do not immediately resume the previous session.

First verify that DeepSeek Harness itself works correctly:

npx --yes @deepseek-ai/dsh@0.1.0-rc.8 --version

Expected output:

0.1.0-rc.8

Then launch the web interface:

npx --yes @deepseek-ai/dsh@0.1.0-rc.8 web

Create a completely new session:

New Session
      ↓
standard
      ↓
Hello

Avoid reopening:

session-3836a0e6-9fe9-40d7-884e-876b3ebba209

This isolates the framework from any persisted session state.

If the new session works, the issue is likely tied to the previous session or profile data.

If the same Persona registration error reappears, the investigation can move toward the preset loading mechanism inside DeepSeek Harness itself.


Quick Reference Checklist

Check DeepSeek Harness Version

dsh --version

Verify Installation

npm list -g --depth=2 @deepseek-ai/dsh

Remove Global Installation

npm uninstall -g @deepseek-ai/dsh

Clear npm Cache

npm cache clean --force

Verify Node Environment

node -v
npm -v

Find Active Processes

Get-CimInstance Win32_Process

Remove Local DSH Profile

Remove-Item "$HOME\.dsh" -Recurse -Force

Launch DeepSeek Harness with NPX

npx --yes @deepseek-ai/dsh@0.1.0-rc.8 web

FAQ

Does deployment:persona already registered always indicate a configuration mistake?

No. In this case the standard preset configuration appeared valid, and the error was more closely associated with persisted runtime state.

Can I simply remove the Persona section from the standard preset?

That is generally not recommended. The Persona entry is part of the preset design and exists for a reason.

Is Node.js 25 responsible for this error?

No direct evidence pointed to Node 25 as the cause during this investigation.

Why not downgrade to Node 24?

The system was already running Codex CLI and Claude Code CLI. Changing Node versions introduced additional compatibility concerns without addressing the actual error.

Is it safe to delete the .dsh directory?

Yes, provided no process is actively using files inside the directory.

What does .dsh contain?

The investigation showed that it stores profile information, web-related configuration, and session-related data.

Why did npx appear to hang without output?

A locked or inconsistent .dsh environment can prevent normal startup behavior and make the process appear stalled.

Should I resume the old session first after reinstalling?

No. Always test with a brand-new session before reintroducing previous session data. This makes it much easier to distinguish framework issues from state-related problems.