deepseek-ai/deepseek-harness · error · FileNotFoundError

deepseek-harness-runtime-bin is missing the node-pty spawn h

Error message

deepseek-harness-runtime-bin is missing the node-pty spawn helper at {helper}. Two ways to get the executable: run `scripts/build-exe-for-python-sdk.ts` (via tsx) in a deepseek-harness checkout, or install the matching `deepseek-harness-runtime-bin` platform wheel retained by the `build-exe-for-python-sdk` CI workflow. For local development against a repo source build, explicitly select the dev-only node carrier with DSH_RUNTIME_MODE=node (or resolve_bundled_launch_args('node')).

What it means

Error "deepseek-harness-runtime-bin is missing the node-pty spawn helper at {helper}. Two ways to get the executable: run `scripts/build-exe-for-python-sdk.ts` (via tsx) in a deepseek-harness checkout, or install the matching `deepseek-harness-runtime-bin` platform wheel retained by the `build-exe-for-python-sdk` CI workflow. For local development against a repo source build, explicitly select the dev-only node carrier with DSH_RUNTIME_MODE=node (or resolve_bundled_launch_args('node'))." thrown in deepseek-ai/deepseek-harness.

Source

Thrown at python/sdk-runtime/src/deepseek_harness_runtime/__init__.py:96

    touching callers).
    """
    tag = _current_platform_tag()
    path = bundled_package_dir() / "runtime" / f"dsh-jsonrpc-agent-pkg-{tag}"
    if not path.is_file():
        raise FileNotFoundError(
            f"deepseek-harness-runtime-bin is missing the runtime executable at {path}. "
            + _EXE_ACQUISITION_HINT
        )
    ripgrep = Path(f"{path}-rg")
    if not ripgrep.is_file():
        raise FileNotFoundError(
            f"deepseek-harness-runtime-bin is missing the ripgrep sidecar at {ripgrep}. "
            + _EXE_ACQUISITION_HINT
        )
    if tag.startswith("macos-"):
        helper = Path(f"{path}-spawn-helper")
        if not helper.is_file():
            raise FileNotFoundError(
                f"deepseek-harness-runtime-bin is missing the node-pty spawn helper at {helper}. "
                + _EXE_ACQUISITION_HINT
            )
    return path


def resolve_bundled_launch_args(mode: str | None = None) -> tuple[str, ...]:
    """The argv tuple that launches the bundled runtime.

    Mode selection: the explicit ``mode`` argument wins, then the
    ``DSH_RUNTIME_MODE`` environment variable (``exe`` | ``node``), then
    automatic resolution. Automatic resolution finds the production exe ONLY —
    the dev-only node carrier must be selected explicitly so a production
    deployment can never silently ride on a source build. Returns
    ``(exe_path,)`` in exe mode and ``(node_path, bin_js_path)`` in node mode;
    raises FileNotFoundError when the selected carrier is unavailable and
    ValueError for an unknown mode value.
    """

View on GitHub (pinned to b150a551b8)

Solutions

  1. Run scripts/build-exe-for-python-sdk.ts in a deepseek-harness checkout, or install the matching deepseek-harness-runtime-bin platform wheel; for repo-local development set DSH_RUNTIME_MODE=node.

When it happens

Trigger: Thrown at python/sdk-runtime/src/deepseek_harness_runtime/__init__.py:96 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of deepseek-ai/deepseek-harness@b150a551b8 (2026-08-24). Data as JSON: /api/errors/3b99eb7f1e263102. Report an issue: GitHub.