Match the exact symptom first
This guide applies when a Headless turn reaches the model normally and fails only as tool execution begins. If DSH fails before the model responds, or the deepest error names storage, a missing package, or a provider request, use that signal instead.
dsh: UNKNOWN: Cannot read properties of undefined (reading 'prepare')Use a text-only turn as the control
Run the same profile and provider with a prompt that explicitly requires a short text response and forbids tools. If that succeeds while a deterministic read-tool call fails, the model and provider path are probably healthy and the fault is narrowed to the tool path.
Check for a second dsh-tools copy
The reproducible community case places another @deepseek-ai/dsh-tools under the Headless profile node_modules. The agent loop and live tool runtime then import different module copies. Because the scheduler key is created with a plain Symbol, the identities do not match and the lookup returns undefined.
node -v
dsh --version
npm ls @deepseek-ai/dsh-tools --allInspect the profile without deleting anything
Look specifically inside the profile that reproduces the error. On Windows the reported default path is under the user profile .dsh directory; on other systems use the DSH home you actually configured. Record every resolved dsh-tools path before changing the installation.
- Confirm that the extra directory is inside the failing profile rather than the launcher installation.
- Record the package versions and resolved paths for both copies.
- Preserve the profile manifest and lockfile before changing node_modules.
- Prefer moving a confirmed duplicate aside for one controlled test over deleting it permanently.
Retest the same two controls
After isolating only the confirmed duplicate copy, repeat the original text-only prompt and the deterministic tool prompt under the same DSH, Node, provider, and profile. The community reproduction reports that removing the second copy restored tool calls; if your failure remains, restore the backup and continue diagnosis rather than deleting more packages.
Evidence status
The original question remains unanswered by maintainers. The Symbol-identity explanation includes a clean reproduction and reversible control in the discussion, but it is still community analysis rather than an official root-cause statement or released patch.
DeepSeek Harness is in developer preview. Recheck official documentation and plugin evidence when the host version changes.
Sources and evidence
Official documentation and community evidence are labeled separately in the source pages and in this article.