Skip to content

feat: customer webhooks via @profullstack/webhooks 0.2.1 (0.2.0) - #1

Merged
ralyodio merged 1 commit into
mainfrom
webhooks
Oct 28, 2026
Merged

ralyodio merged 1 commit into
mainfrom
webhooks

Conversation

@ralyodio

Copy link
Copy Markdown
Contributor

Adds outbound customer webhooks on @profullstack/webhooks@0.2.1 (pinned exactly; deliveries never follow redirects).

Events (owner = the account that owns the target):

  • target.verified: a host goes from unverified/lapsed to verified (not re-sent on every scan's re-check)
  • run.started: the worker passed the second gate wall and is calling the engine
  • run.completed: summary, severity counts, number of findings, report URL
  • run.failed: engine threw, or the target was unreachable
  • run.refused: the ownership gate refused the run (at launch or right before the engine)
  • finding.created: severity + title (the check name) + ids + report URL only. Never the message, probed URL or details, since those can carry the probe payload.

Surfaces

  • Hub: new Webhooks({ store: sqliteStore(store.db), source: origin, eventTypes }) in AutoHacker; hooks.start() once in serve().
  • API: /api/v1/webhooks (webhooksApi) behind the existing ah_… bearer / session auth; 401 without one; cross-site cookie writes refused.
  • Web: /account#webhooks list/add (with event patterns)/test/rotate/remove, secret shown after add/rotate.
  • CLI: autohacker webhooks, autohacker webhook add|test|rotate|rm|log.
  • MCP: list_webhooks, create_webhook, test_webhook, rotate_webhook_secret, delete_webhook, webhook_deliveries.
  • /docs and README updated.

No existing outbound webhooks, so nothing to migrate. (/hooks/coinpay is inbound and unchanged.)

Tests: test/webhooks.test.ts (signed deliveries verify with verifySignature, event order, target.verified once, finding payload has no payload/location, refusal, unreachable -> run.failed, cross-account isolation, API 401 + scoped CRUD). 27/27 pass, tsc --noEmit clean.

Version 0.1.0 -> 0.2.0.

🤖 Generated with Claude Code

target.verified, run.started, run.completed, run.failed, run.refused and
finding.created, delivered as signed CloudEvents to the account owning the
target. Findings carry severity + title only, never the probe payload.
/api/v1/webhooks behind the existing API-key auth, /account#webhooks UI,
CLI webhooks/webhook, MCP webhook tools.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@socket-security

Copy link
Copy Markdown

Review the following changes in direct dependencies. Learn more about Socket for GitHub.

Diff Package Supply Chain
Security
Vulnerability Quality Maintenance License
Added@​profullstack/​webhooks@​0.2.17610010090100

View full report

@ralyodio
ralyodio merged commit 9548b80 into main Oct 28, 2026
3 checks passed
@ralyodio
ralyodio deleted the webhooks branch October 28, 2026 15:17
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant