diff --git a/src/agents/sandbox-tool-policy.test.ts b/src/agents/sandbox-tool-policy.test.ts index 56ee3e63fa2..9360e6bf30b 100644 --- a/src/agents/sandbox-tool-policy.test.ts +++ b/src/agents/sandbox-tool-policy.test.ts @@ -39,7 +39,7 @@ describe("pickSandboxToolPolicy", () => { alsoAllow: ["web_search"], }), ).toEqual({ - allow: [], + allow: ["*", "web_search"], deny: undefined, }); }); diff --git a/src/agents/sandbox-tool-policy.ts b/src/agents/sandbox-tool-policy.ts index 4e6102e55e2..af1e26d17a7 100644 --- a/src/agents/sandbox-tool-policy.ts +++ b/src/agents/sandbox-tool-policy.ts @@ -14,7 +14,7 @@ function unionAllow(base?: string[], extra?: string[]): string[] | undefined { return Array.from(new Set(["*", ...extra])); } if (base.length === 0) { - return base; + return Array.from(new Set(["*", ...extra])); } return Array.from(new Set([...base, ...extra])); } diff --git a/src/agents/tool-policy.test.ts b/src/agents/tool-policy.test.ts index 963c703a409..871f703854e 100644 --- a/src/agents/tool-policy.test.ts +++ b/src/agents/tool-policy.test.ts @@ -5,6 +5,7 @@ import type { SandboxToolPolicy } from "./sandbox/types.js"; import { TOOL_POLICY_CONFORMANCE } from "./tool-policy.conformance.js"; import { applyOwnerOnlyToolPolicy, + collectExplicitAllowlist, expandToolGroups, isOwnerOnlyToolName, normalizeToolName, @@ -109,6 +110,16 @@ describe("tool-policy", () => { expect(applyOwnerOnlyToolPolicy(tools, true)).toHaveLength(1); }); + it("preserves explicit alsoAllow hints when allow is empty", () => { + expect( + collectExplicitAllowlist([ + { + allow: ["*", "optional-demo"], + }, + ]), + ).toContain("optional-demo"); + }); + it("strips nodes for non-owner senders via fallback policy", () => { const tools = [ {