From 089694438204524fb300162b08b2ed0f901235a2 Mon Sep 17 00:00:00 2001 From: YAMAGUCHI Seiji Date: Sat, 25 Apr 2026 11:23:47 +0900 Subject: [PATCH] fix(cronjob): advertise 'custom:' provider format in tool schema MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The `provider` field in CRONJOB_SCHEMA only showed examples like 'openrouter' and 'anthropic', with no mention of the canonical 'custom:' form required for custom_providers entries. When the user has custom providers configured, LLMs tend to write the bare type name ('custom') because the schema does not advertise the ':' suffix. The bare value then serializes into jobs.json and causes the cron job to fail silently at run time — `_resolve_model_override` treats it as a user-specified provider and skips the pin-to-current fallback, but no provider ever resolves from the bare 'custom' string. Clarifying the schema so the canonical form is discoverable addresses the root cause at the tool-definition boundary. --- tools/cronjob_tools.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/cronjob_tools.py b/tools/cronjob_tools.py index 53e778a7d..d0ef994ae 100644 --- a/tools/cronjob_tools.py +++ b/tools/cronjob_tools.py @@ -513,7 +513,7 @@ Important safety rule: cron-run sessions should not recursively schedule more cr "properties": { "provider": { "type": "string", - "description": "Provider name (e.g. 'openrouter', 'anthropic'). Omit to use and pin the current provider." + "description": "Provider name (e.g. 'openrouter', 'anthropic', or 'custom:' for a provider defined in custom_providers config — always include the ':' suffix, never pass the bare 'custom'). Omit to use and pin the current provider." }, "model": { "type": "string",