{"version":"2.1.321","anchor":"ui-notify-system-messages-are-no-longer-written-to-the-outpu","canonical_anchor":"plugin-uinotify-gains-key-delayms-at-untilback-and-a-ui","heading":"Plugins can schedule notifications and cancel them","tier":"use","area":"Headless Mode","scope":"individual","heads_up":true,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.321\/e\/ui-notify-system-messages-are-no-longer-written-to-the-outpu","release_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.321","markdown":"### Plugins can schedule notifications and cancel them\n\nPlugin `ui.notify` gains delay, time, until-back and key options, a new `ui.cancelNotify` removes notices, and headless sessions pass them to the host\n\n**What**\n\nPlugins add features to Claude Code and can ask it to show you notifications.\n\n- `ui.notify` now accepts `key`, `delayMs`, `at` and `untilBack`, so a plugin can schedule a notice, send it when you are away, or replace an earlier one with the same key. Before, it sent only text and a title.\n\n- `ui.cancelNotify(key)` cancels a notification by its key.\n\n- In headless sessions (running without the interactive screen), notices go to the connected host as `ui_notify` and `ui_notify_cancel` messages under the plugin's name, with `delay_ms`, `at`, `until_back` and `key`. Text is capped at 1000 characters and the title at 120. Before, notify always reported there was nowhere to show it.\n\n- These messages are left out of the `stream-json` output.\n\n- Plugins also gain a way to read the permission mode (`permissionMode`).\n\n**Why**\n\nPlugin authors can time notices and clear stale ones. If you read `stream-json` output, these notification messages do not appear there.\n\n- Area: Headless Mode\n- Names: `stream-json`\n- Tier: Use it now\n- Useful: 4\/5\n- Signal: 3\/5\n- Scope: individual\n- Heads-up: yes"}