notify

notify is a command for Claude Code from manishiitg/coding-agent-loop. It costs 0 tokens per session (949 once invoked), scanned A, original, MIT.

A command associated with AgentWorks, an open-source control system for running, measuring, and improving AI-agent workflows.

In plain words
What is it for?
It relates to managing AI-agent workflows, but its concrete use is not described.
Why use it?
The description does not state a more specific task that this command performs.

Command for Claude Code

Written for Claude Code: a Claude Code command (commands/*.md).

Good fit It relates to managing AI-agent workflows, but its concrete use is not described.

Compare 6 commands from other repositories ↓
Install with agentmods
npx agentmods add commands/manishiitg/coding-agent-loop/notify
Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

Clone the repo
git clone --depth 1 https://github.com/manishiitg/coding-agent-loop

Made for: Claude Code.

Wrote this? Show the measurements

A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.

agentmods badge for notify

README.md
[![agentmods](https://agentmods.dev/badge/commands/manishiitg/coding-agent-loop/notify/github.svg)](https://agentmods.dev/commands/manishiitg/coding-agent-loop/notify)
Your own site
<a href="https://agentmods.dev/commands/manishiitg/coding-agent-loop/notify"><img src="https://agentmods.dev/badge/commands/manishiitg/coding-agent-loop/notify/github.svg" alt="Measured on agentmods" height="20"></a>

Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.

agentmods 80×15 button for notify

Your own site · 80×15
<a href="https://agentmods.dev/commands/manishiitg/coding-agent-loop/notify"><img src="https://agentmods.dev/badge/commands/manishiitg/coding-agent-loop/notify.svg" alt="Reviewed on agentmods" width="80" height="20"></a>
Per session 0 Only the description is in the session, so the agent can decide to use it. The body loads when it is invoked.
When invoked 949 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 1 finding. A grade says what 26 rules found in the file — not that it is safe.
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5.1 $0.00000 $0.00949
Opus 5.5 $0.00000 $0.00380
Sonnet 5.5 $0.00000 $0.00190
Haiku 4.5 $0.00000 $0.00095

Measured 19d ago against content hash dc13e6c04e8f, method: parsed. Prices are Anthropic first-party input rates as of 2026-10-07, from the pricing page.

Security

Grade A, and why

notify scanned grade A with 1 finding against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 19d ago.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Makes network callslowCapability

Not a fault in itself. Listed so you know the mod talks to something, and to what.

- Notifications are agentic: the agent decides when a non-blocking FYI, alert, progress update, or completion notice is useful and chooses the content. Delivery is deterministic: the agent calls notify_user and the backe
agent_go/internal/agentworksproduct/commands/notify.md · 13 lines

How it starts

The opening of the file, as written. The whole thing — 13 lines — stays where its author put it; the contents beside it link to each section on GitHub.

{{context}}

Help me set up or review notifications for this workflow.

  • First read the current workflow configuration. Explain the current Gmail sender and recipients, other effective destinations, saved notification instructions, and whether the Slack webhook secret reference is healthy. Never reveal or write a webhook URL to workflow.json, prompts, logs, or ordinary files.
  • Notifications are agentic: the agent decides when a non-blocking FYI, alert, progress update, or completion notice is useful and chooses the content. Delivery is deterministic: the agent calls notify_user and the backend automatically applies the workflow Slack webhook plus enabled account-level notification channels. Slack is rich Block Kit by default; for structured summaries set slack_title, factual slack_color, slack_fields, slack_sections, and slack_footer on that same call. Never access a SECRET_* webhook variable, post with curl, or disable automatic Slack delivery to avoid a duplicate. Do not add a routing step merely to choose a notification channel.
  • Ask separately what the workflow run summary should contain and what the Pulse review summary should contain, and whether they should use different channels or go to different people. Store only explicit, durable user-approved preferences with update_workflow_config(run_notification_instructions="...", pulse_notification_instructions="...", run_notification_channels=[...], pulse_notification_channels=[...]). workflow.json notifications.run_summary_instructions, notifications.pulse_summary_instructions, notifications.run_summary_channels, and notifications.pulse_summary_channels are authoritative; never put notification preferences in soul/soul.md. If the user says a preference applies to every notification, save it in both matching fields. Do not store temporary choices or credentials there.
  • To configure a workflow Slack Incoming Webhook, use list_secrets first. If I provide a new URL, store it with set_workflow_secret(name="SLACK_NOTIFICATION_WEBHOOK_URL", value=), then call update_workflow_config(slack_webhook_secret_name="SLACK_NOTIFICATION_WEBHOOK_URL"). The configuration tool validates the encrypted secret, makes it backend-only, and removes it from agent-visible secret injection. To disable workflow webhook delivery, call update_workflow_config(slack_webhook_secret_name="").
  • SLACK CHANNELS: a Slack Incoming Webhook is tied to ONE channel when it is created and cannot be pointed at another, so "send this to a different channel" always means "use a different webhook". If I want the run summary and Pulse review in different channels, ask me for a webhook URL for EACH channel, store each under its own descriptive secret name with set_workflow_secret, then call update_workflow_config(run_notification_slack_webhooks=["SECRET_NAME_A"], pulse_notification_slack_webhooks=["SECRET_NAME_B"]). List several names to post one summary to several channels. Pass an empty array to fall back to the single workflow webhook. Never ask me to "pick a channel name" as if one webhook could reach several — tell me plainly that each channel needs its own webhook URL.
  • Gmail is an inherited account-level notification channel. If I name who should receive this workflow's email, SAVE it — do not just use it for one send. Store it with update_workflow_config(run_notification_recipients=[...], pulse_notification_recipients=[...]); those persist to workflow.json notifications.run_summary_recipients / pulse_summary_recipients and the backend addresses every matching send from them automatically. Ask whether the run outcome and the Pulse review should go to the same people, since they are separate lists. Recipient lists say where mail GOES; they never unblock a blocked address, so if I name an address that is on a denylist, tell me rather than silently saving a list that will be skipped. Pass an empty array to clear a list back to the account default. Use the one-off email_to argument only for a single send I asked for explicitly.
  • Gmail notification sender is one FROM account for this workflow's notify_user emails, including run and Pulse summaries. get_workflow_config shows the saved choice and enabled Gmail connection IDs. If I choose a sender, save its ID with update_workflow_config(notification_gmail_connection_id=""); pass an empty string to inherit the account default. This is the same Notify sender setting shown in the UI. Do not change recipients when changing sender. Ordinary workflow and Builder Gmail actions can still choose their own connection_id and recipients independently.
  • If I asked to test delivery, call notify_user once with a clearly labeled test message and report its returned delivered/skipped/failed channels honestly. Do not send a test unless I requested one.
  • human_feedback is separate: use it only for short-lived input that must block this run, such as OTP, CAPTCHA, or immediate approval.

Read the full file on GitHub · 13 lines

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 19d ago Changed · +1 lines dc13e6c04e8f
  2. 25d ago First seen · 12 lines · 0 tokens per session scan A b3eaae7b4309

Subscribe to this mod's changes

notify is a command published in the GitHub repository manishiitg/coding-agent-loop (13 stars, last pushed 18d ago), licensed MIT. It costs nothing until one of its globs matches a file; then it loads 949 tokens. A static security scan graded it A with 1 finding (makes network calls). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-09-21.