Skip to content
Guides

OpenClaw plugins

What they are, where they install from, the allowlist, and how to prove one loaded

6 min read

Plugins are how OpenClaw gets its channels, model providers, agent harnesses, tools, skills, speech and transcription, media generation, web fetch and web search. Telegram is a plugin; so is the browser. That is why an upgrade can leave a channel showing as disabled, and why an allowlist typed once can block a plugin you installed later. Here is where plugins come from, how they are enabled, how changes reach a running Gateway, and how to prove one actually loaded.

Where they install from

  • ClawHub, the primary discovery surface for community plugins, with scans, version metadata and install hints; a bare name that matches a bundled plugin uses the bundled copy, and any other bare spec installs from npm.
  • npm, with an explicit prefix, for registry and dist-tag workflows; git, with a branch, tag or commit; a local path, linked, while you develop one.
  • Unpinned npm installs pick the newest stable package that advertises compatibility with your OpenClaw build.
  • New arbitrary npm, git, local and marketplace sources need a force flag in non-interactive installs, after you have reviewed and trusted the source.

Enable, allow, apply

Settings live under the plugin’s config entry; an installed plugin is enabled with one command. If an allowlist exists, the plugin id must be in it before the plugin can load, and the install command adds the id to that list and removes it from the deny list so the explicit install can run. Plugin-management commands apply to a running local Gateway without a restart, and ordinary config edits apply automatically in the default hybrid reload mode, by replacing the affected plugin instance; a plugin’s own restart policy can still demand a full restart.

Treat plugin installs like running code.

Proving it loaded

  • The inspect command with the runtime flag loads the plugin in the inspecting CLI process and reports its tools, hooks, services, Gateway methods and CLI commands.
  • Plain inspect is a cold manifest and registry check.
  • Neither proves that an already-running Gateway loaded the same code; the docs say to trigger the hook or the tool and verify its effect.

What is ClawHub explains the registry the search command reads, and OpenClaw skills explained the difference between a plugin, which is code, and a skill, which is instructions.

The upgrade symptom

The pain corpus behind these posts has a recurring line: after a fresh install or upgrade, Telegram and Discord listed as plugin disabled until reinstalled, with the fix being the plugin install command for the channel package. It is the allowlist rule and the reload rule meeting an upgrade. OpenClaw not responding has the ladder for the silent-channel version of it.

On Diali

On Diali the plugin set is part of the release we test on our own assistants first: channels, providers and tools arrive together, and an upgrade cannot leave a channel disabled behind an allowlist you never typed. Hosted OpenClaw on Diali is the assistant.

  • ClawHub first, then npm, git or a local path with an explicit prefix.
  • An allowlist that omits the id blocks the plugin, silently.
  • Inspect proves the manifest; only a real call proves the running Gateway.
Get started

Stop reading about it, build one

Set up an agent, pick a channel, and have it working inside the app you already keep open.