{"version":"2.1.304","anchor":"dynamic-loop-wakeups-carry-an-owner-and-plugin","canonical_anchor":"dynamic-loop-wakeups-carry-an-owner-and-plugin","heading":"\/loop wakeups and scheduled tasks now record which plugin owns them","tier":"notice","area":"Elsewhere","scope":"individual","heads_up":true,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.304\/e\/dynamic-loop-wakeups-carry-an-owner-and-plugin","release_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.304","markdown":"### \/loop wakeups and scheduled tasks now record which plugin owns them\n\nScheduled \/loop wakeups now record an owner and plugin, missed runs get their own handler, and ScheduleWakeup can refuse a request\n\n**What**\n\n`\/loop` runs a prompt again and again while a session is open, and Claude uses the `ScheduleWakeup` tool to set when the next run happens. A scheduled run of this kind is stored as a cron entry, which is a timed task. This release changes how those timed runs are recorded and handled:\n\n- Loop wakeups now record an owner, and a loop can be tied to a plugin, which is an add-on package for Claude Code.\n\n- When a pending wakeup is set again after you resume a session, its cron entry is tagged with a `plugin` field.\n\n- Each time a scheduled task fires, its `plugin` value is passed along, so the plugin is recorded on the loop.\n\n- The scheduler gains an `onMissed` handler. Before, it had only `onFire` and `onFireTask`. The new handler builds a notification for a scheduled task that did not run on time.\n\n- `ScheduleWakeup` can now refuse a request with an error that begins `ScheduleWakeup refused:`. The condition that triggers the refusal was not identified.\n\n- The limit on how long a wakeup can be delayed gains a maximum-age cap.\n\n- Loop creation is now handled by a single helper, and after a scheduled run is queued, an extra completion step runs.\n\n**Why**\n\nLoops and scheduled tasks can now be linked to the plugin that created them, and missed runs have their own notification path. If you use `\/loop`, expect occasional `ScheduleWakeup refused:` messages, and note that a wakeup can no longer be pushed back indefinitely.\n\n- Area: Elsewhere\n- Names: `\/loop`\n- Tier: You'll notice\n- Useful: 2\/5\n- Signal: 2\/5\n- Scope: individual\n- Heads-up: yes"}