{"version":"2.1.299","anchor":"cron-jobs-show-next-run-time-scheduler-uses-per-job-offset","canonical_anchor":"cron-jobs-show-next-run-time-scheduler-uses-per-job-offset","heading":"Scheduled jobs show their next run time and use a per-job offset","tier":"notice","area":"Scheduled Tasks","scope":"individual","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.299\/e\/cron-jobs-show-next-run-time-scheduler-uses-per-job-offset","release_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.299","markdown":"### Scheduled jobs show their next run time and use a per-job offset\n\nCronCreate and CronList now give each job's next run time, and the scheduler shifts jobs by a per-job offset of up to 50% of the period\n\n**Unclear.** Whether the larger 50% \/ 30 minute offset applies to everyone or only to a version of the tool description that is switched on remotely is not known.\n\n**What**\n\n`CronCreate` and `CronList` are the tools Claude uses to schedule a prompt to run later and to list the jobs already scheduled.\n\n- The `CronCreate` result now ends with \"Next run: ...\" after the readable schedule. Before, it said only that the recurring job was scheduled, with its schedule and whether it lasts beyond the session.\n\n- Each `CronList` row now adds \", next run ...\" between the session-only marker and the prompt text.\n\n- Both tools return `nextFireAt`, the time of the job's next run with the scheduler's per-job offset included. Before, `CronCreate` returned only `id`, `humanSchedule`, `recurring` and `durable`. `CronList` uses the job's stored `nextFireAt` or works one out, and never shows a time earlier than now.\n\n- The calculation of the next run now takes into account whether a job runs only once (`oneShot`).\n\n- The `CronCreate` description now says the scheduler shifts each job by a fixed per-job offset. By default that is up to 50% of the period late, with a maximum of 30 minutes. Before, it described \"a small deterministic jitter\" of up to 10% of the period, with a maximum of 15 minutes. The numbers are filled in at runtime from shared values: `recurringFrac`, `recurringCapMs` and `oneShotMaxMs`.\n\n- Claude is told to give the job's actual next run time, as returned by the tool and by `CronList`, and not the minute written in the cron expression.\n\nIn the prompt capture taken under this release, the stock `CronCreate` description is 3,123 characters and its wording has moved. The `CronList` description is 106 characters and unchanged.\n\n**Why**\n\nA recurring job can now run noticeably later than the time in its schedule, up to half its period. Because the real next run time is shown, you and Claude no longer have to guess when a job will actually run.\n\n- Area: Scheduled Tasks\n- Tier: You'll notice\n- Useful: 2\/5\n- Signal: 1\/5\n- Scope: individual\n- Heads-up: no"}