-
-
Notifications
You must be signed in to change notification settings - Fork 69.5k
Bug: tools.web.fetch.firecrawl missing from Zod schema in v2026.3.8 #42570
Description
Description
Since version 2026.3.8, the firecrawl configuration key under tools.web.fetch is missing from the Zod runtime schema (ToolsWebFetchSchema), causing the gateway to crash on startup with a config validation error when the key is present in openclaw.json.
Steps to Reproduce
- Upgrade to OpenClaw
2026.3.8 - Have
tools.web.fetch.firecrawlconfigured in~/.openclaw/openclaw.json - Start/restart the gateway
Expected Behavior
Gateway starts normally. tools.web.fetch.firecrawl should be a valid config key as documented in /docs/tools/firecrawl.md and defined in the TypeScript types (plugin-sdk/config/types.tools.d.ts).
Actual Behavior
Gateway crashes at startup with:
Config invalid
File: ~/.openclaw/openclaw.json
Problem:
- tools.web.fetch: Unrecognized key: "firecrawl"
Run: openclaw doctor --fix
Root Cause
In dist/config-fNYFO3AL.js, ToolsWebFetchSchema is defined with .strict() and does not include the firecrawl property:
const ToolsWebFetchSchema = z.object({
enabled: z.boolean().optional(),
maxChars: z.number().int().positive().optional(),
maxCharsCap: z.number().int().positive().optional(),
timeoutSeconds: z.number().int().positive().optional(),
cacheTtlMinutes: z.number().nonnegative().optional(),
maxRedirects: z.number().int().nonnegative().optional(),
userAgent: z.string().optional()
// ⚠️ firecrawl is MISSING here
}).strict().optional();The same issue exists in dist/plugin-sdk/config-DiiPndBn.js.
However, the TypeScript types in dist/plugin-sdk/config/types.tools.d.ts correctly include firecrawl:
firecrawl?: {
enabled?: boolean;
apiKey?: string;
baseUrl?: string;
onlyMainContent?: boolean;
maxAgeMs?: number;
timeoutSeconds?: number;
};Suggested Fix
Add the firecrawl sub-schema to ToolsWebFetchSchema:
const ToolsWebFetchSchema = z.object({
// ... existing fields ...
userAgent: z.string().optional(),
firecrawl: z.object({
enabled: z.boolean().optional(),
apiKey: z.string().optional(),
baseUrl: z.string().optional(),
onlyMainContent: z.boolean().optional(),
maxAgeMs: z.number().optional(),
timeoutSeconds: z.number().optional()
}).strict().optional()
}).strict().optional();Environment
- OpenClaw version:
2026.3.8 - OS: Linux 6.17.0-14-generic (x64)
- Node: v22.22.1
- Self-hosted Firecrawl at
http://localhost:3002