@@ -43,6 +43,38 @@ Local onboarding defaults new local configs to `tools.profile: "coding"` when un
|
43 | 43 | | `group:agents` | `agents_list`, `update_plan` | |
44 | 44 | | `group:media` | `image`, `image_generate`, `music_generate`, `video_generate`, `tts` | |
45 | 45 | | `group:openclaw` | All built-in tools (excludes provider plugins) | |
| 46 | +| `group:plugins` | Tools owned by loaded plugins, including configured MCP servers exposed through `bundle-mcp` | |
| 47 | + |
| 48 | +### MCP and plugin tools inside sandbox tool policy |
| 49 | + |
| 50 | +Configured MCP servers are exposed as plugin-owned tools under the `bundle-mcp` plugin id. Normal tool profiles can allow them, but `tools.sandbox.tools` is an additional gate for sandboxed sessions. If sandbox mode is `"all"` or `"non-main"`, include one of these entries in the sandbox tool allowlist when MCP/plugin tools should be visible: |
| 51 | + |
| 52 | +- `bundle-mcp` for OpenClaw-managed MCP servers from `mcp.servers` |
| 53 | +- the plugin id for a specific native plugin |
| 54 | +- `group:plugins` for all loaded plugin-owned tools |
| 55 | +- exact MCP server tool names or server globs such as `outlook__send_mail` or `outlook__*` when you only want one server |
| 56 | + |
| 57 | +Server globs use the provider-safe MCP server prefix, not necessarily the raw `mcp.servers` key. Non-`[A-Za-z0-9_-]` characters become `-`, names that do not start with a letter get an `mcp-` prefix, and long or duplicate prefixes may be truncated or suffixed; for example, `mcp.servers["Outlook Graph"]` uses a glob like `outlook-graph__*`. |
| 58 | + |
| 59 | +```json5 |
| 60 | +{ |
| 61 | + agents: { defaults: { sandbox: { mode: "all" } } }, |
| 62 | + mcp: { |
| 63 | + servers: { |
| 64 | + outlook: { command: "node", args: ["./outlook-mcp.js"] }, |
| 65 | + }, |
| 66 | + }, |
| 67 | + tools: { |
| 68 | + sandbox: { |
| 69 | + tools: { |
| 70 | + alsoAllow: ["web_search", "web_fetch", "memory_search", "memory_get", "bundle-mcp"], |
| 71 | + }, |
| 72 | + }, |
| 73 | + }, |
| 74 | +} |
| 75 | +``` |
| 76 | + |
| 77 | +Without that sandbox-layer entry, the MCP server can still load successfully while its tools are filtered before the provider request. Use `openclaw doctor` to catch this shape for OpenClaw-managed servers in `mcp.servers`. MCP servers loaded from bundled plugin manifests or Claude `.mcp.json` use the same sandbox gate, but this diagnostic does not enumerate those sources yet; use the same allowlist entries if their tools disappear in sandboxed turns. |
46 | 78 | |
47 | 79 | ### `tools.allow` / `tools.deny` |
48 | 80 | |
|