hermes-agent/website/docs/user-guide/messaging
Teknium e4aeb65599 feat(webhook): per-route toolset overrides for webhook agent runs
Webhook agent runs default to the constrained hermes-webhook toolset
(web/vision/clarify) because payloads can carry untrusted third-party
content. That default is right for public webhooks but wrong for trusted
local pushes (e.g. an OOM monitor daemon that needs the agent to run
ps/free/py-spy): the only workaround was widening platform_toolsets.webhook,
which elevates EVERY webhook route at once.

This adds a 'toolsets' key on individual webhook route configs (static
routes in config.yaml and dynamic subscriptions in
webhook_subscriptions.json) that replaces the platform-level resolution
for that route only:

- BasePlatformAdapter.toolsets_for_source(): per-source override hook,
  default None (no behavior change for any other platform).
- WebhookAdapter.toolsets_for_source(): maps the session chat_id
  (webhook:{route}:{delivery_id}) back to its route config and returns
  the route's toolsets list.
- GatewayRunner._resolve_enabled_toolsets_for_source(): shared resolver
  used by both agent-run call sites; validates the override through the
  SAME _get_platform_tools path as platform config, so unknown names and
  platform-restricted toolsets (e.g. discord_admin) are dropped rather
  than trusted.

Deliberately NOT exposed via 'hermes webhook subscribe': granting elevated
tools is a manual config edit only, so an agent-created subscription
cannot self-grant terminal at runtime.

Cache-safe: the toolset list is resolved before agent construction and is
constant for a route, so the per-session agent signature and frozen system
prompt are unaffected mid-conversation.
2026-08-13 01:51:19 -07:00
..
_category_.json
a2a.md docs(a2a): website docs page + canonical agent-card.json path in prose 2026-08-02 15:10:15 -07:00
bluebubbles.md
buzz.md feat(buzz): WebSocket inbound transport — NIP-42 auth, live DM discovery, poll fallback 2026-07-28 21:45:34 -07:00
dingtalk.md fix(gateway): bridge nested DingTalk allowed_users into auth env 2026-07-20 05:39:24 -07:00
discord.md fix(discord): name missing privileged intents and stop reconnect loop 2026-08-13 00:10:30 -07:00
email.md Make email pairing opt-in 2026-06-21 22:43:57 -07:00
feishu.md
google_chat.md fix(deps): repair Google transitive security floors (#72108) 2026-07-31 23:18:38 -07:00
homeassistant.md
index.md docs: document /personality none|default|neutral reset across personality docs 2026-08-03 12:29:49 -07:00
irc.md docs: reconcile docs with code across last 3 releases (#54254) 2026-06-28 12:47:50 -07:00
line.md docs: fix 0.0.0.0 bind-default drift after dual-stack change 2026-07-28 22:42:41 -07:00
matrix.md docs: accuracy sweep + coverage for 2 months of shipped features 2026-07-29 08:48:05 -07:00
mattermost.md
msgraph-webhook.md docs: fix 0.0.0.0 bind-default drift after dual-stack change 2026-07-28 22:42:41 -07:00
ntfy.md docs: reconcile docs with code across last 3 releases (#54254) 2026-06-28 12:47:50 -07:00
open-webui.md chore(scripts): drop Open WebUI local bootstrap script (#56178) 2026-07-01 01:30:40 -07:00
photon.md docs: document dashboard session filter tabs and photon immutable-tree fallback 2026-07-28 22:54:45 -07:00
qqbot.md
raft.md
relay.md feat(relay): ambient token endpoint mode for gateway.idp.token_url (#84074) 2026-08-12 10:06:28 +10:00
signal.md
simplex.md feat(gateway): simplex channel enumeration + show configured platforms in hermes send --list 2026-08-02 15:08:45 -07:00
slack.md feat(slack): support long app descriptions in the manifest generator 2026-07-23 12:01:24 -07:00
sms.md docs: stop recommending pip install; curl installer is the only supported path (#51743) 2026-06-24 00:14:32 -07:00
teams-meetings.md docs: accuracy sweep + coverage for 2 months of shipped features 2026-07-29 08:48:05 -07:00
teams.md docs(teams): correct devtunnel webhook protocol 2026-08-11 04:17:50 +05:30
telegram.md docs(telegram): explain rich draft final delivery 2026-08-08 17:15:45 -07:00
webhooks.md feat(webhook): per-route toolset overrides for webhook agent runs 2026-08-13 01:51:19 -07:00
wecom-callback.md docs: fix 0.0.0.0 bind-default drift after dual-stack change 2026-07-28 22:42:41 -07:00
wecom.md
weixin.md docs: stop recommending pip install; curl installer is the only supported path (#51743) 2026-06-24 00:14:32 -07:00
whatsapp-cloud.md docs: fix 0.0.0.0 bind-default drift after dual-stack change 2026-07-28 22:42:41 -07:00
whatsapp.md docs: accuracy sweep + coverage for 2 months of shipped features 2026-07-29 08:48:05 -07:00
yuanbao.md docs: accuracy sweep + coverage for 2 months of shipped features 2026-07-29 08:48:05 -07:00