From 3eaeeb7a98536032419249aea94f7dfef4586693 Mon Sep 17 00:00:00 2001 From: andienguyen-ecoligo Date: Tue, 17 Mar 2026 13:05:09 -0400 Subject: [PATCH] fix(tools): remove cron from coding profile to match documented behavior The cron tool was incorrectly assigned to the "coding" profile, but docs define coding as: group:fs, group:runtime, group:sessions, group:memory, image. Cron belongs to group:automation alongside gateway (which already had profiles: []). This caused a runtime warning on platforms where cron is unavailable: "tools.profile (coding) allowlist contains unknown entries (cron)" Fixes #49098 --- src/agents/tool-catalog.ts | 2 +- src/agents/tool-policy.test.ts | 2 +- src/gateway/tools-invoke-http.cron-regression.test.ts | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/agents/tool-catalog.ts b/src/agents/tool-catalog.ts index 0d58c066928..f9213a99e64 100644 --- a/src/agents/tool-catalog.ts +++ b/src/agents/tool-catalog.ts @@ -198,7 +198,7 @@ const CORE_TOOL_DEFINITIONS: CoreToolDefinition[] = [ label: "cron", description: "Schedule tasks", sectionId: "automation", - profiles: ["coding"], + profiles: [], includeInOpenClawGroup: true, }, { diff --git a/src/agents/tool-policy.test.ts b/src/agents/tool-policy.test.ts index 963c703a409..b75ad38f963 100644 --- a/src/agents/tool-policy.test.ts +++ b/src/agents/tool-policy.test.ts @@ -56,7 +56,7 @@ describe("tool-policy", () => { it("resolves known profiles and ignores unknown ones", () => { const coding = resolveToolProfilePolicy("coding"); expect(coding?.allow).toContain("read"); - expect(coding?.allow).toContain("cron"); + expect(coding?.allow).not.toContain("cron"); expect(coding?.allow).not.toContain("gateway"); expect(resolveToolProfilePolicy("nope")).toBeUndefined(); }); diff --git a/src/gateway/tools-invoke-http.cron-regression.test.ts b/src/gateway/tools-invoke-http.cron-regression.test.ts index dfee9be2c20..3ca2b418fcb 100644 --- a/src/gateway/tools-invoke-http.cron-regression.test.ts +++ b/src/gateway/tools-invoke-http.cron-regression.test.ts @@ -125,7 +125,7 @@ describe("tools invoke HTTP denylist", () => { expect(cronRes.status).toBe(200); }); - it("keeps cron available under coding profile without exposing gateway", async () => { + it("keeps cron available via gateway.tools.allow without exposing gateway", async () => { cfg = { tools: { profile: "coding",