plugins
remoteclaw plugins
Manage Gateway plugins/extensions, hook packs, and compatible bundles.
Related:
- Plugin system: Plugins
- Bundle compatibility: Plugin bundles
- Plugin manifest + schema: Plugin manifest
- Security hardening: Security
Commands
remoteclaw plugins listremoteclaw plugins install <path-or-spec>remoteclaw plugins inspect <id>remoteclaw plugins enable <id>remoteclaw plugins disable <id>remoteclaw plugins uninstall <id>remoteclaw plugins doctorremoteclaw plugins update <id>remoteclaw plugins update --allremoteclaw plugins marketplace list <marketplace>Bundled plugins ship with RemoteClaw but start disabled. Use plugins enable to
activate them.
Native RemoteClaw plugins must ship remoteclaw.plugin.json with an inline JSON
Schema (configSchema, even if empty). Compatible bundles use their own bundle
manifests instead.
plugins list shows Format: remoteclaw or Format: bundle. Verbose list/info
output also shows the bundle subtype (codex, claude, or cursor) plus detected bundle
capabilities.
Install
remoteclaw plugins install <package> # ClawHub first, then npmremoteclaw plugins install clawhub:<package> # ClawHub onlyremoteclaw plugins install <package> --pin # pin versionremoteclaw plugins install <path> # local pathremoteclaw plugins install <plugin>@<marketplace> # marketplaceremoteclaw plugins install <plugin> --marketplace <name> # marketplace (explicit)Bare package names are checked against ClawHub first, then npm. Security note: treat plugin installs like running code. Prefer pinned versions.
plugins install is also the install surface for hook packs that expose
remoteclaw.hooks in package.json. Use remoteclaw hooks for filtered hook
visibility and per-hook enablement, not package installation.
Npm specs are registry-only (package name + optional exact version or
dist-tag). Git/URL/file specs and semver ranges are rejected. Dependency
installs run with --ignore-scripts for safety.
Bare specs and @latest stay on the stable track. If npm resolves either of
those to a prerelease, RemoteClaw stops and asks you to opt in explicitly with a
prerelease tag such as @beta/@rc or an exact prerelease version such as
@1.2.3-beta.4.
If a bare install spec matches a bundled plugin id (for example diffs), RemoteClaw
installs the bundled plugin directly. To install an npm package with the same
name, use an explicit scoped spec (for example @scope/diffs).
Supported archives: .zip, .tgz, .tar.gz, .tar.
Claude marketplace installs are also supported.
ClawHub installs use an explicit clawhub:<package> locator:
remoteclaw plugins install clawhub:remoteclaw-codex-app-serverremoteclaw plugins install clawhub:remoteclaw-codex-app-server@1.2.3RemoteClaw now also prefers ClawHub for bare npm-safe plugin specs. It only falls back to npm if ClawHub does not have that package or version:
remoteclaw plugins install remoteclaw-codex-app-serverRemoteClaw downloads the package archive from ClawHub, checks the advertised plugin API / minimum gateway compatibility, then installs it through the normal archive path. Recorded installs keep their ClawHub source metadata for later updates.
Use plugin@marketplace shorthand when the marketplace name exists in Claude’s
local registry cache at ~/.claude/plugins/known_marketplaces.json:
remoteclaw plugins marketplace list <marketplace-name>remoteclaw plugins install <plugin-name>@<marketplace-name>Use --marketplace when you want to pass the marketplace source explicitly:
remoteclaw plugins install <plugin-name> --marketplace <marketplace-name>remoteclaw plugins install <plugin-name> --marketplace <owner/repo>remoteclaw plugins install <plugin-name> --marketplace ./my-marketplaceMarketplace sources can be:
- a Claude known-marketplace name from
~/.claude/plugins/known_marketplaces.json - a local marketplace root or
marketplace.jsonpath - a GitHub repo shorthand such as
owner/repo - a git URL
For remote marketplaces loaded from GitHub or git, plugin entries must stay inside the cloned marketplace repo. RemoteClaw accepts relative path sources from that repo and rejects external git, GitHub, URL/archive, and absolute-path plugin sources from remote manifests.
For local paths and archives, RemoteClaw auto-detects:
- native RemoteClaw plugins (
remoteclaw.plugin.json) - Codex-compatible bundles (
.codex-plugin/plugin.json) - Claude-compatible bundles (
.claude-plugin/plugin.jsonor the default Claude component layout) - Cursor-compatible bundles (
.cursor-plugin/plugin.json)
Compatible bundles install into the normal extensions root and participate in
the same list/info/enable/disable flow. Today, bundle skills, Claude
command-skills, Claude settings.json defaults, Cursor command-skills, and compatible Codex hook
directories are supported; other detected bundle capabilities are shown in
diagnostics/info but are not yet wired into runtime execution.
Use --link to avoid copying a local directory (adds to plugins.load.paths):
remoteclaw plugins install -l ./my-pluginUse --pin on npm installs to save the resolved exact spec (name@version) in
plugins.installs while keeping the default behavior unpinned.
Uninstall
remoteclaw plugins uninstall <id>remoteclaw plugins uninstall <id> --dry-runremoteclaw plugins uninstall <id> --keep-filesuninstall removes plugin records from plugins.entries, plugins.installs,
the plugin allowlist, and linked plugins.load.paths entries when applicable.
For active memory plugins, the memory slot resets to memory-core.
By default, uninstall also removes the plugin install directory under the active
state dir extensions root ($REMOTECLAW_STATE_DIR/extensions/<id>). Use
--keep-files to keep files on disk.
--keep-config is supported as a deprecated alias for --keep-files.
Update
remoteclaw plugins update <id-or-npm-spec>remoteclaw plugins update --allremoteclaw plugins update <id-or-npm-spec> --dry-runremoteclaw plugins update @remoteclaw/voice-call@betaUpdates apply to tracked installs in plugins.installs and tracked hook-pack
installs in hooks.internal.installs.
When you pass a plugin id, RemoteClaw reuses the recorded install spec for that
plugin. That means previously stored dist-tags such as @beta and exact pinned
versions continue to be used on later update <id> runs.
For npm installs, you can also pass an explicit npm package spec with a dist-tag or exact version. RemoteClaw resolves that package name back to the tracked plugin record, updates that installed plugin, and records the new npm spec for future id-based updates.
When a stored integrity hash exists and the fetched artifact hash changes,
RemoteClaw prints a warning and asks for confirmation before proceeding. Use
global --yes to bypass prompts in CI/non-interactive runs.
Inspect
remoteclaw plugins inspect <id>remoteclaw plugins inspect <id> --jsonDeep introspection for a single plugin. Shows identity, load status, source, registered capabilities, hooks, tools, commands, services, gateway methods, HTTP routes, policy flags, diagnostics, and install metadata.
Each plugin is classified by what it actually registers at runtime:
- plain-capability — one capability type (e.g. a provider-only plugin)
- hybrid-capability — multiple capability types (e.g. text + speech + images)
- hook-only — only hooks, no capabilities or surfaces
- non-capability — tools/commands/services but no capabilities
See Plugin shapes for more on the capability model.
The --json flag outputs a machine-readable report suitable for scripting and
auditing.
info is an alias for inspect.