AgentKit

ReviewAudited by ClawScan on May 16, 2026.

Overview

AgentKit appears to be a disclosed beta approval plugin, but it can control protected-tool approvals and store temporary trust grants, so it should be configured carefully.

This looks consistent with a World/AgentKit human-approval plugin rather than malicious behavior. Before installing, confirm you are using a compatible OpenClaw build, configure only the protected tools you intend, prefer allow-once or short session-scoped grants for sensitive actions, keep signing keys and private keys out of repositories, and verify any broker or gateway URLs you configure.

Publisher note

World AgentKit integration: contacts World/AgentKit APIs, can open a local verifier callback, and uses OpenClaw operator approval APIs to resolve protected-tool HITL approvals after proof verification.

Findings (6)

Artifact-based informational review of SKILL.md, metadata, install specs, static scan signals, and capability signals. ClawScan does not execute the skill or run runtime probes.

What this means

If enabled for powerful tools such as exec, the plugin becomes part of the decision path for whether those tools can run.

Why it was flagged

The plugin installs a before_tool_call hook that can block configured tools until AgentKit/World approval is completed. This is the core advertised function, but it affects protected tool execution.

Skill content
if (!isProtectedTool(ctx.toolName, pluginConfig.hitl.protectedTools)) { return undefined; } ... return { requireApproval: { pluginId: "agentkit", ... title: `World proof required for ${ctx.toolName}`, ... keepPendingWithoutRoute: true } };
Recommendation

Enable it only for the tools you intend to protect, and review protectedTools, severity, timeout, grantScope, and grantTtlMs before use.

What this means

A single trust-for-session or trust-for-agent action may approve additional matching blocked actions rather than only the one visible request.

Why it was flagged

When an allow-always decision is used, the CLI can resolve matching pending approvals in the same configured scope. The matching logic is bounded, but one approval can affect multiple pending tool calls.

Skill content
await Promise.all(matching.map(async (approval) => { ... await resolvePendingAgentkitApproval({ ... approvalId: approval.id, decision: "allow-always", ... }); }))
Recommendation

Prefer allow-once for sensitive actions, and use allow-always only when you are comfortable approving repeated matching tool calls for the configured scope.

What this means

Incorrect storage or sharing of these keys could compromise the associated World/AgentKit or wallet-related authority.

Why it was flagged

The documented flows can use World signing keys, wallet information, and private key files. These credentials are expected for AgentKit/World delegation, and the artifacts warn not to commit secrets.

Skill content
"signingKeyEnvVar": "WORLD_ID_SIGNING_KEY" ... "Resolve the pending request with `openclaw agentkit approve --approval-id <id> --private-key-file <path>`" ... "Do not commit World signing keys, wallet secrets, or real user identifiers."
Recommendation

Use environment variables or secure local files for secrets, avoid command-line exposure where possible, and do not commit real keys or identifiers to repositories.

What this means

Local approval state may reveal approval metadata and can permit repeated matching tool calls until it expires or is consumed.

Why it was flagged

The plugin persists local approval grants and proof-related metadata so future matching tool calls can be allowed within scope and TTL.

Skill content
const DEFAULT_GRANTS_FILE = path.join(os.homedir(), ".openclaw", "agentkit-hitl-grants.json"); ... proofNullifier: typeof record.proofNullifier === "string" ? record.proofNullifier : null
Recommendation

Keep grant TTLs short, prefer session scope for sensitive tools, protect your home directory, and remove the grants file if you want to clear stored approvals.

What this means

Compatibility and provenance depend on the exact OpenClaw build or local checkout used.

Why it was flagged

The package is explicitly a community beta that depends on unreleased or beta OpenClaw APIs, and its development flow can replace a dependency with a local checkout.

Skill content
Channel: community beta ... Required OpenClaw API PRs: `openclaw/openclaw#82431`, `openclaw/openclaw#82434`, and `openclaw/openclaw#82471` ... `dev:link-openclaw` replaces `node_modules/openclaw` with a symlink
Recommendation

Install only from the intended ClawHub package, use a compatible OpenClaw beta/build, and avoid local symlink development workflows unless you trust the checkout.

What this means

Approval prompts and status updates can be injected into the chat session by the plugin while a verification flow is in progress.

Why it was flagged

The plugin sends approval-status messages through the OpenClaw gateway into a session. This is purpose-aligned for HITL prompts, but it is a cross-component communication path.

Skill content
injectChatMessageOverGateway({ config: params.appConfig, gatewayUrl: params.gatewayUrl, clientDisplayName: "AgentKit approval update", sessionKey: params.sessionKey, message: params.message, command: params.command, interactive: params.interactive, ... })
Recommendation

Verify that the configured gateway and broker URLs are trusted, and treat approval prompts as security-sensitive UI.