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
dingtalk.md
discord.md fix(discord): name missing privileged intents and stop reconnect loop 2026-08-13 00:10:30 -07:00
email.md
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
line.md
matrix.md
mattermost.md
msgraph-webhook.md
ntfy.md
open-webui.md
photon.md
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
sms.md
teams-meetings.md
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
wecom.md
weixin.md
whatsapp-cloud.md
whatsapp.md
yuanbao.md