Dsh Harness Updater banner
leonardoxr leonardoxr

Dsh Harness Updater

Development community

Description

Claude Code / Codex CLI update detection, prompting, and one-click channel updates for DeepSeek Harness

Installation

This entry records only its repository, not the path inside it, so there is no exact command to give. Open the source below and copy the folder into ~/.claude/skills/, or the file into ~/.claude/agents/.

README

dsh-harness-updater

English | [简体中文](README.zh.md)

**Agent harness updates for DeepSeek Harness.** Detects the locally installed [Claude Code](https://claude.com/product/claude-code) and [Codex CLI](https://developers.openai.com/codex/cli), compares them against the latest published versions, prompts in the DSH web UI, and — on your explicit click — runs the correct channel-specific upgrade command.

Inspired by the provider maintenance model of [T3 Code](https://github.com/pingdotgg/t3code).

What it does

  1. Detects each harness on PATH (Windows .cmd/.ps1 shim aware) and probes --version with a bounded timeout.
  2. Classifies the install channel from the resolved binary path: native installer, npm / pnpm / bun global, Homebrew, or manual-only.
  3. Checks npm (registry.npmjs.org//latest) for the latest version with a 4 s timeout and a 1 h cache. Fully disabled via settings when offline.
  4. Prompts: a persistent Updates card in DSH Settings → Plugins lists each harness with current → latest and an in-place Update button. Under DSH Native it also shows the native app's own self-update status.
  5. Updates on click only — never silently. The runner serializes per channel lock, enforces a hard timeout with process-tree termination, caps captured output, then re-probes to verify and reports succeeded, unchanged, or failed.
Detected channel Update command
Claude native (~/.local/bin/claude*) claude update
npm global npm install -g @latest
pnpm global pnpm add -g @latest
bun global bun install -g @latest
Homebrew brew upgrade claude-code / brew upgrade --cask codex
anything else (WinGet, standalone installers) manual: copyable hint, no one-click

The updater invokes npm with explicit arguments and lets npm run the package lifecycle required to install the CLI.

Safety model

  • Every route is **loopb