zeroclaw-labs/zeroclaw · error · anyhow::Error
`zeroclaw plugin install <url>` is not supported; use `--reg
Error message
`zeroclaw plugin install <url>` is not supported; use `--registry <url>` with a plugin name, or install a local plugin path
What it means
`zeroclaw plugin install` refuses any `source` containing `://` (plugin_registry::looks_like_url) before any install work starts. Installing directly from a URL is not supported: the source must be a plugin name resolved through a registry (default registry, `--registry <index-url>`, or the registry env var) or a local filesystem path.
Source
Thrown at src/main.rs:6331
println!(
"{}",
ta(
"cli-plugin-search-result",
&[
("name", &plugin.name),
("version", &plugin.version),
("description", description),
],
"Plugin search result"
)
);
}
}
Ok(())
}
PluginCommands::Install { source, registry } => {
if plugin_registry::looks_like_url(&source) {
bail!(
"`zeroclaw plugin install <url>` is not supported; use `--registry <url>` with a plugin name, or install a local plugin path"
);
}
let mut host = plugin_host_with_configured_security(&config)?;
if plugin_registry::is_local_plugin_source(&source) {
let name = host.install(&source)?;
let config_entries = installed_plugin_config_entries(&host, &name)?;
println!(
"{}",
ta(
"cli-plugin-installed-from",
&[("source", &source)],
"Plugin installed"
)
);
Box::pin(seed_plugin_config_entries(&mut config, &config_entries)).await?;
} else {
let registry_url = plugin_registry::registry_url(registry.as_deref());View on GitHub (pinned to 88bb9c8533)
Solutions
- Install by name from a registry: `zeroclaw plugin install <plugin-name>`, adding `--registry <index-url>` if it lives on a custom registry
- Download or clone the plugin locally, then install the directory: `zeroclaw plugin install ./path/to/plugin-dir`
- Publish or host a registry index and pass its URL via `--registry` (or the registry env var) so name-based install works
Example fix
# before zeroclaw plugin install https://example.com/downloads/shout.wasm # after curl -LO https://example.com/downloads/shout.tgz && tar xf shout.tgz zeroclaw plugin install ./shout
Defensive patterns
Strategy: validation
Validate before calling
plugin_source="$1" case "$plugin_source" in *://*) echo "URL installs unsupported: use --registry <url> <name>, or a local path" >&2; exit 2 ;; esac
Prevention
- Resolve plugin names via `zeroclaw plugin search <query>` before installing
- Pin the registry URL in the environment so name-based installs are reproducible
- Vendored plugin dirs under version control avoid registry/network dependence entirely
When it happens
Trigger: `zeroclaw plugin install https://example.com/pkg/my-plugin.wasm` or any source string containing a scheme separator (http://, git+https://, file://). The URL check runs before is_local_plugin_source, so even URL-looking strings are always rejected.
Common situations: Following older docs that showed URL installs; pointing at a GitHub tarball or .wasm artifact because the default registry does not list the plugin; air-gapped setups where the default registry is unreachable so users attempt direct URLs.
Related errors
- Unknown integration: {name}. Check README for supported inte
- OpenClaw workspace not found at {}. Pass --source <path> if
- config at {} does not deserialize strictly; the resilient lo
- `zeroclaw props` has been renamed to `zeroclaw config`. Repl
- Emergency stop is disabled. Enable [security.estop].enabled
AI-assisted analysis of zeroclaw-labs/zeroclaw@88bb9c8533 (2026-08-23).
Data as JSON: /api/errors/b4811f6298f0894c.
Report an issue: GitHub.