Install
openclaw skills install configure-toolsConfigure OpenClaw tool policies, exec security, and per-agent tool restrictions. Use when asked to set up tool access for an agent, restrict tools, configure exec security or approvals, set up a tool profile, enable plugin tools, or lock down an agent's capabilities.
openclaw skills install configure-toolsSet up tool policies and security following conventions/tools.md. Read the convention first for profiles, groups, exec security options, and policy layering rules.
What scope?
tools.* in openclaw.jsonagents.list[].tools.*tools.byProvider.* or agents.list[].tools.byProvider.*Start with a profile or build custom?
full, coding, messaging, minimal)allow/deny with group:* shorthandsDoes exec need configuration?
host, security, ask (see convention for options)group:runtime// Global
{ tools: { profile: "coding" } }
// Per-agent
{ agents: { list: [{ id: "<agent-id>", tools: { profile: "messaging" } }] } }
Use group:* shorthands (listed in conventions/tools.md) over individual tool names. Deny wins over allow.
// Profile + deny specific groups
{ id: "<agent-id>", tools: { profile: "coding", deny: ["group:ui", "group:web"] } }
// Profile + allow extras
{ id: "<agent-id>", tools: { profile: "messaging", allow: ["web_search"] } }
// Explicit allow (no profile)
{ id: "<agent-id>", tools: { allow: ["read", "session_status", "memory_search"] } }
Use alsoAllow (additive, safe) rather than replacing the allowlist:
{ tools: { alsoAllow: ["lobster", "llm-task"] } }
// Sandboxed (safest)
{ tools: { exec: { host: "sandbox", security: "deny" } } }
// Gateway with approvals (most agents)
{ tools: { exec: { host: "gateway", security: "allowlist", ask: "on-miss" } } }
// Trusted main agent (wide open)
{ tools: { exec: { host: "gateway", security: "full", ask: "off" } } }
{ tools: { byProvider: { "google/gemini-2.5-flash": { profile: "coding" } } } }
Use the gateway tool:
{ "tool": "gateway", "action": "config.patch", "patch": { "tools": { ... } } }
Or edit ~/.openclaw/openclaw.json directly and restart the Gateway.
host, security, ask)python3, node, bash) in tools.exec.safeBinsalsoAllow where needed