Get started with managed OpenClaw plugins
Human verified
A human reviewed this page, but it may be out of date. Later edits may not have been reviewed.
Add managed plugins to a dedicated OpenClaw Agent on Kubernetes, deploy the revision, and verify tool execution through the OpenClaw terminal interface.
This guide walks through two managed plugin types:
- CLI plugins using Google Workspace (
occ-plugin:google@1.0.0), which runs the pinnedgogcommand on the worker. - Hosted MCP plugins using Slack (
occ-plugin:slack), which connects to a streamable Model Context Protocol endpoint.
[!NOTE] Dedicated Codex Agents use a separate curated app catalog and approval model. If you use Codex, see Add Codex plugins to an OpenShell Agent.
Before you start
Before you add plugins to an Agent, make sure your environment meets these requirements:
- Dedicated OpenClaw on Kubernetes: The Agent must use the dedicated OpenClaw Harness on Kubernetes Compute. Embedded OpenClaw supports only the bundled Diffs plugin.
- Plugin Driver enabled: The Installation profile must select the bundled OpenClaw Plugin Driver (
occ-pluginunderdrivers.plugin). See Driver selection. - Operator permissions: You need
agent:read,agent:update, andagent:deployon the target Agent, pluscredential_source:operateon any attached account source. - Network connectivity: For hosted MCP discovery, the OCC API must be able to reach the MCP HTTPS endpoint on port 443. Configure
api.pluginDiscoveryCidrsin your Helm values to allow egress to the server IP addresses.
1. Add a CLI plugin (Google Workspace)
The Google Workspace plugin (occ-plugin:google@1.0.0) bundles the gog CLI tool on the dedicated worker.
Account and request guard prerequisites
Credentialed Google Workspace calls require two setup steps before deployment:
- OAuth refresh source: Register an OpenShell-owned OAuth refresh credential source attached to your Agent draft. The source specifies the Google token endpoint, client placeholder, authorized scopes (such as
https://www.googleapis.com/auth/calendar.readonly), and allowed destinations (www.googleapis.comfor Calendar orgmail.googleapis.comfor Gmail). See Bind a credential source to an Agent. - Google request guard: Install and register the shared request guard on your OpenShell Gateway. For each request, the OpenShell supervisor verifies the call against the release's operation map locally through this guard before sending approved requests upstream. Follow Enable Google Workspace requests from a dedicated worker.
[!NOTE] Saved Namespace OAuth accounts from PR #4671 will support direct in-slot connection once PR #4673 lands. Until then, use an attached OpenShell credential source.
Configure the plugin in the console
- Open the OCC console and navigate to Agents.
- Select your dedicated OpenClaw Agent, then select Create new version → Plugins.
- Select Configure plugins.
- In the catalog list, find Google Workspace and select Add.
- Choose your account mode:
- Install without an account: Verifies that the worker image and CLI binary run without injecting external credentials. You can test tool startup by asking the Agent to run
gog --version. - Connected account: Select your attached Google account credential source. The worker receives an OpenShell placeholder for that account, and the Gateway enables the Google Workspace skill.
- Install without an account: Verifies that the worker image and CLI binary run without injecting external credentials. You can test tool startup by asking the Agent to run
- Select Save plugin selections.
Configure via CLI
Managed packages use the catalog's versioned identifier (occ-plugin:google@1.0.0) and accept an enablement-only policy (enabled: true):
occ agent get "$AGENT_ID" --output json > agent-draft.json node --input-type=module <<'JS'import { readFileSync, writeFileSync } from "node:fs";const agent = JSON.parse(readFileSync("agent-draft.json", "utf8"));const plugins = { ...agent.plugins, "occ-plugin:google@1.0.0": { enabled: true, },};writeFileSync("agent-plugin-update.json", JSON.stringify({ configurationId: agent.configurationId, plugins }, null, 2) + "\n");JS occ agent update "$AGENT_ID" --file agent-plugin-update.json --output json2. Add a hosted MCP plugin (Slack)
Hosted MCP packages declare a fixed remote HTTPS server endpoint and an authentication placeholder. The Slack plugin connects to https://mcp.slack.com/mcp.
Installation prerequisites
Managed MCP plugins require the worker Node executable to be allowed in the Credential Gateway configuration:
- In your Helm values under
drivers.credential_gateway.configuration, add/usr/local/bin/nodetotoolBinaries. Without this entry, bearer-token registration is rejected with409 RESOURCE_CONFLICT. See OpenShell Credential Gateway configuration.
Set up the credential source
If the Agent already has the intended Slack source, skip registration. Otherwise, the person registering it needs permission to create Secrets and credential sources in the ready Namespace and to operate the referenced Secret. The Agent service principal does not need those creation permissions.
-
Follow Create a Namespace-owned Secret with the Slack token in a protected file. Choose a descriptive name such as
slack-mcp-token. Save the successful HTTP 201 response asslack-secret-created.jsonin a private operator directory. The response contains metadata only. Use itsdata.ref; the display name is not a Secret ID. Keep the token itself out of command arguments. -
With
jqinstalled andNAMESPACE_IDset to the Agent's Namespace, build the registration document from that response and register the source:bash jq -e --arg ns "$NAMESPACE_ID" ' .data.ref | select(.kind == "secret" and .namespaceId == $ns and (.id | strings | startswith("sec_"))) | {kind, namespaceId, id} | {name: "slack-mcp", type: "bearer-token", config: {protocol: "mcp", host: "mcp.slack.com", port: "443", path: "/mcp", env_var: "SLACK_MCP_TOKEN"}, secrets: {token: .}}' slack-secret-created.json > slack-source.json && occ credential-source create --namespace "$NAMESPACE_ID" --file slack-source.json --output jsonKeep the returned source ID for the attachment. If the reference does not match the Namespace, stop and check the Secret receipt.
-
Attach the credential source to your Agent draft and grant both your operator identity and the Agent service principal
credential_source:operatepermission on it. See Bind a source to an Agent.
Load and select MCP tools
- In the console under Plugins → Configure plugins, select Slack.
- In the Credential Slot, select your attached Slack credential source.
- Select Load tools. The OCC API connects to
https://mcp.slack.com/mcpand fetches the advertised tool descriptors. - Select the explicit tools you want the Agent to access (for example,
slack_search_public). - Select Save plugin selections.
[!IMPORTANT] The worker only advertises tools explicitly selected in the tool filter. An empty tool selection leaves the MCP server disabled.
3. Deploy the new revision
Saving plugin selections updates the Agent draft. You must deploy a new revision to apply the changes to the running worker:
occ agent deploy "$AGENT_ID" --output json > deployment.jsonDEPLOYMENT_ID="$(node -p "require('./deployment.json').id")"export DEPLOYMENT_IDCheck the deployment status until it reaches succeeded:
occ agent deployment-status "$AGENT_ID" "$DEPLOYMENT_ID" --output jsonIf the deployment reports a warning such as PLUGIN_INSTALL_FAILED, review the deployment events and verify that the plugin package matches the worker's runtime version.
4. Verify tool calls with the OpenClaw TUI
The OCC Console provides administrative controls rather than an interactive chat interface, and HTTP model verification checks raw model connectivity without emitting tool call events. To interact with the deployed Agent and observe live tool execution, attach using the OpenClaw TUI.
Attach to the Agent
-
Authentication prerequisite: Ensure your Agent runtime configuration specifies the optional gateway password SecretRef. See Configure the Agent runtime.
-
Connect to the Ready gateway Pod following the OpenClaw TUI verification procedure:
bash SESSION_ID="plugin-verify-$(date +%s)"OPENCLAW_STATE_DIR=/tmp/occ-tui-client \ node /app/openclaw.mjs tui --session "$SESSION_ID"
Verify Google Workspace (CLI)
In your TUI session, ask the Agent to inspect its Google Workspace CLI:
Run gog --version and report the installed version.When a connected account is attached, ask the Agent to list calendar events:
Use Google Workspace to list the first 3 events from my primary calendar.What to look for in the response:
- The Agent turn executes
goginside the dedicated worker container. - The tool result displays structured command output from Google APIs.
- The model cites the returned calendar events in its final reply.
Verify Slack (MCP)
Ask the Agent to search public channels:
Search public Slack messages for "release notes" with limit 3.What to look for in the response:
- In the TUI activity timeline, confirm a tool call event for
slack_search_public. - The MCP request routes through the OpenShell sandbox with the
SLACK_MCP_TOKENplaceholder injected securely. - The Agent returns the matching message excerpts from the MCP server response.
You can inspect the effective node-level MCP configuration on the dedicated worker:
OPENCLAW_CONFIG_PATH="$OPENCLAW_NODE_STATE_DIR/openclaw.json" \ openclaw config get nodeHost.mcp.servers.oce_mcp_slack --jsonOpen implementation boundaries
Certain advanced account management capabilities are currently tracked in active milestone PRs:
- Saved OAuth account refresh: Background renewal of Namespace OAuth credentials through the shared Token Service is implemented in PR #4671.
- Direct in-slot consent: Granting Agents access to saved accounts and launching fresh browser consent directly from a plugin slot is tracked in PR #4673.
- Multi-account plugin slots: Selecting between multiple connected accounts for the same provider on an Agent is tracked in Issue #4815 (PR #4732).
- Custom namespace plugins: Importing custom skills and remote MCP descriptors beyond bundled packages is tracked in Issue #4816 (PR #4734).
