Create, list, and delete webhook endpoints that route external HTTP events to SLICC scoops
Synopsis
webhook <command> [options]
Description
Manages webhook endpoints that allow external services (GitHub, Slack, etc.) to send HTTP events into SLICC. Each webhook is routed to a scoop, which receives the event as a message. Webhooks are part of SLICC's "licks" system — external events that trigger agent actions. Webhooks are only available in CLI mode (npm run dev:full), not in the Chrome extension runtime.
Commands
create --scoop <name> [--name <name>] [--filter <code>] Create a new webhook endpoint routed to the specified scoop.
list List all active webhooks showing ID, name, URL, target scoop, and filter status.
delete <id> Delete a webhook by its ID.
Options
-h, --help Show help message
--scoop <name> Route webhook events to this scoop (required for create)
--name <name> Human-readable name for the webhook (defaults to "default")
--filter <code> JavaScript filter function: (event) => false (drop), true (keep), or an object (transform). The event object has properties: type, webhookId, webhookName, timestamp, headers, body.
Examples
$ webhook create --scoop click-handler --name clicks
Create a webhook named "clicks" that sends events to the click-handler scoop.
$ webhook create --scoop pr-reviewer --name github --filter "(e) => e.body.action === 'opened'"
Create a webhook that only forwards GitHub events where the action is "opened".
$ webhook create --scoop slack-relay --name slack --filter "(e) => ({ text: e.body.text, user: e.body.user })"
Create a webhook with a transform filter that extracts only text and user from Slack events.
$ webhook list
List all active webhooks.
$ webhook delete abc123
Delete the webhook with ID abc123.
Notes
Webhooks require the SLICC CLI server — they are not available in the Chrome extension runtime. The webhook URL is provided by the server's /api/webhooks endpoint. Filters are JavaScript expressions evaluated server-side; returning false drops the event, true passes it through unchanged, and returning an object replaces the event payload with the returned value.
See Also
crontask, feed_scoop, scoop_scoop