-
-
Notifications
You must be signed in to change notification settings - Fork 80.7k
bug: cron tool schema rejects null for payload.model/fallbacks, blocking clear-to-inherit #100707
Copy link
Copy link
Closed
Labels
P2Normal backlog priority with limited blast radius.Normal backlog priority with limited blast radius.clawsweeper:linked-pr-openClawSweeper found an open linked pull request for this issue.ClawSweeper found an open linked pull request for this issue.clawsweeper:no-new-fix-prClawSweeper does not recommend queueing a new automated fix PR for this issue.ClawSweeper does not recommend queueing a new automated fix PR for this issue.clawsweeper:source-reproClawSweeper found a high-confidence source-level issue reproduction.ClawSweeper found a high-confidence source-level issue reproduction.impact:auth-providerAuth, provider routing, model choice, or SecretRef resolution may break.Auth, provider routing, model choice, or SecretRef resolution may break.impact:ux-frictionUser-facing flow adds avoidable confusion or support burden without fully blocking progress.User-facing flow adds avoidable confusion or support burden without fully blocking progress.issue-rating: 🦞 diamond lobsterVery strong issue quality with high-confidence source-level or clear reproduction.Very strong issue quality with high-confidence source-level or clear reproduction.maturity:stableIssue affects a taxonomy feature currently scored M4/M5.Issue affects a taxonomy feature currently scored M4/M5.
Description
Metadata
Metadata
Assignees
Labels
P2Normal backlog priority with limited blast radius.Normal backlog priority with limited blast radius.clawsweeper:linked-pr-openClawSweeper found an open linked pull request for this issue.ClawSweeper found an open linked pull request for this issue.clawsweeper:no-new-fix-prClawSweeper does not recommend queueing a new automated fix PR for this issue.ClawSweeper does not recommend queueing a new automated fix PR for this issue.clawsweeper:source-reproClawSweeper found a high-confidence source-level issue reproduction.ClawSweeper found a high-confidence source-level issue reproduction.impact:auth-providerAuth, provider routing, model choice, or SecretRef resolution may break.Auth, provider routing, model choice, or SecretRef resolution may break.impact:ux-frictionUser-facing flow adds avoidable confusion or support burden without fully blocking progress.User-facing flow adds avoidable confusion or support burden without fully blocking progress.issue-rating: 🦞 diamond lobsterVery strong issue quality with high-confidence source-level or clear reproduction.Very strong issue quality with high-confidence source-level or clear reproduction.maturity:stableIssue affects a taxonomy feature currently scored M4/M5.Issue affects a taxonomy feature currently scored M4/M5.
Type
Fields
Priority
None yet
Summary
The
crontool's JSON schema validation rejectsnullforpayload.modelandpayload.fallbacks, preventing users from clearing these fields to re-enable global inheritance. The underlying Gateway protocol and service code already support null clears, but the tool schema blocks them before they reach the service layer.Background
--clear-fallbacks, nullable fallback update clears, docs, and tests (also shipped)cron updatenull clears not working (closed as already-implemented, see root cause below)Root Cause
The
crontool's own JSON schema forpatch.payloadstill requiresfallbacksto be a non-nullarray. The null value is rejected by tool-side validation before it can reach the Gateway service, wheremergeCronPayloadwould correctly delete the stored override.Reproduced on v2026.6.11 (e085fa1)
Layer Analysis
schema/cron.ts(update schema)mergeCronPayload(deletes on null)crontool JSON schema validationExpected Behavior
cron updateshould acceptmodel: nullandfallbacks: nullin the patch payload, allowing users to clear stored per-job overrides and revert to agent-level global defaults.Workaround
Delete and recreate the cron job without these fields in
payload.End-to-End Verification
Recreating a cron job without
fallbacks→ inheritance works correctly:payload.model: "xiaomi/mimo-v2.5-pro"(fails with 402)payload.fallbacksset → inherited global["openai/gpt-5.5", ...]openai/gpt-5.5and completed successfully (fallbackUsed: true)