























@@ -8,6 +8,13 @@
88 */
99import { pathToFileURL } from "node:url";
1010import { Server } from "@modelcontextprotocol/sdk/server/index.js";
11+import { pickSandboxToolPolicy } from "../agents/sandbox-tool-policy.js";
12+import {
13+collectExplicitAllowlist,
14+collectExplicitDenylist,
15+mergeAlsoAllowPolicy,
16+resolveToolProfilePolicy,
17+} from "../agents/tool-policy.js";
1118import type { AnyAgentTool } from "../agents/tools/common.js";
1219import { getRuntimeConfig } from "../config/config.js";
1320import type { OpenClawConfig } from "../config/types.openclaw.js";
@@ -16,12 +23,32 @@ import { routeLogsToStderr } from "../logging/console.js";
1623import { ensureStandalonePluginToolRegistryLoaded, resolvePluginTools } from "../plugins/tools.js";
1724import { connectToolsMcpServerToStdio, createToolsMcpServer } from "./tools-stdio-server.js";
182526+function resolvePluginToolPolicy(config: OpenClawConfig): {
27+toolAllowlist?: string[];
28+toolDenylist?: string[];
29+} {
30+const profilePolicy = mergeAlsoAllowPolicy(
31+resolveToolProfilePolicy(config.tools?.profile),
32+config.tools?.alsoAllow,
33+);
34+const globalPolicy = pickSandboxToolPolicy(config.tools);
35+const toolAllowlist = collectExplicitAllowlist([profilePolicy, globalPolicy]);
36+const toolDenylist = collectExplicitDenylist([profilePolicy, globalPolicy]);
37+return {
38+ ...(toolAllowlist.length > 0 ? { toolAllowlist } : {}),
39+ ...(toolDenylist.length > 0 ? { toolDenylist } : {}),
40+};
41+}
42+1943function resolveTools(config: OpenClawConfig): AnyAgentTool[] {
44+const pluginToolPolicy = resolvePluginToolPolicy(config);
2045ensureStandalonePluginToolRegistryLoaded({
2146context: { config },
47+ ...pluginToolPolicy,
2248});
2349return resolvePluginTools({
2450context: { config },
51+ ...pluginToolPolicy,
2552suppressNameConflicts: true,
2653});
2754}
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。