The ClawHub CLI
The flags that redirect it, the config file that holds your token, the lockfile pin that survives a forced update, and the sync command that only ever publishes
A registry client earns trust by being predictable about two things: where it keeps your credentials, and when it is willing to overwrite files you already have. The clawhub CLI is explicit about both, and most of its surprising behaviour turns out to be a deliberate refusal rather than a bug.
Flags, environment and proxies
- The global flags redirect the CLI rather than change what it does: a working directory, an install directory beneath it that defaults to skills, a site URL used for registry discovery and device verification, an API base URL, and a switch that disables prompts entirely.
- Each of the location flags has an environment equivalent, and the older CLAWDHUB spellings are still accepted alongside the current CLAWHUB ones.
- Systems behind a corporate proxy do not need a wrapper, because the CLI reads the standard HTTPS_PROXY, HTTP_PROXY and NO_PROXY variables and routes outbound requests accordingly.
- The config file holds the API token and the cached registry URL, in the platform application-support directory on macOS, under XDG_CONFIG_HOME or the dot-config directory on Linux, and under APPDATA on Windows, with a single environment variable to override all three.
sync is one-way publish only. It does not install, update, download, or report install/download telemetry.
Why an update refuses
Update computes a fingerprint from the local files before it does anything else. When that fingerprint matches a known version the command proceeds without a prompt, and when it does not match the command refuses by default, because a mismatch means something on disk was edited and an update would silently discard it. Forcing the update overwrites anyway, and an interactive terminal offers the choice rather than deciding for you.
What a pin protects
- A pin marks an installed skill as frozen in the lockfile, and the recorded reason matters more than it sounds when the person reading that lockfile six months later is not you.
- Pinned skills are skipped by an update of everything, which prints a summary of what stayed frozen, and a direct update on a pinned skill fails fast and tells you to unpin it first.
- A pin also rejects a forced install, so the local bytes cannot be replaced by accident through the other door.
Publishing in bulk is handled by sync, which scans the working directory, the configured skills directory and any extra roots for folders containing a skill file, compares each fingerprint with the registry, and publishes only what is new or changed. New skills publish at 1.0.0 and changed ones at the next patch, unless a larger semver step is requested for an update batch. It has no category or topic flags, so skills first published this way are stored as other until someone sets their catalogue metadata. See ClawHub quickstart for the single-skill path and What ClawHub checks before publishing for what the registry checks.
Scans from the command line
A scan is requested against a published slug, requires a login, and polls until it reaches a terminal state, showing its prioritised queue position and how many scans are ahead while it waits. Local path scans are no longer supported, so the workflow is to upload a version and then retrieve the stored results for it. The report archive downloads as a ZIP carrying the manifest, the ClawScan result, the SkillSpector output, the static analysis and the VirusTotal report, and a separate download command retrieves the stored report for a version that was blocked or hidden, which is exactly when an author most needs to read it. For the boundary this sits inside, see Reporting a ClawHub vulnerability and How ClawHub works.
On Diali
On Diali the assistant is already running, so the CLI is the tool you reach for when you want to publish rather than install. Each customer runs their own instance, the runtime configuration is generated from the dashboard and replaced at each release, and state lives on a persistent volume, with daily snapshots and one-click restore available through the Backups add-on (included on Max). See Hosted OpenClaw on Diali for what the hosting includes and Diali pricing for what it costs.
- A refused update is the CLI protecting a local edit, not failing.
- Record a reason with every pin.
- sync publishes and nothing else, by design.
Stop reading about it, build one
Set up an agent, pick a channel, and have it working inside the app you already keep open.
