messaging-gateway-troubleshooting — Troubleshoot Hermes messaging gateway platform adapters, webhooks, authorization, delivery, and loop-prevention behavior.
Scanned 9/11/2026
Install to Claude Code
npx -y skills add AtlasOmnia/hermes-custom-pack --skill messaging-gateway-troubleshooting --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Messaging Gateway Troubleshooting?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/atlasomnia-messaging-gateway-troubleshooting)More formats (shields.io, HTML) on the badges page.
---
name: messaging-gateway-troubleshooting
description: messaging-gateway-troubleshooting — Troubleshoot Hermes messaging gateway platform adapters, webhooks, authorization, delivery, and loop-prevention behavior.
version: 1.0.0
license: MIT
platforms:
- macos
- linux
- windows
metadata:
hermes:
tags:
- hermes
- gateway
- messaging
- webhooks
- troubleshooting
---
# Messaging Gateway Troubleshooting
Use this when Hermes messaging platforms are installed/configured but messages do not arrive, are ignored, do not reply, or appear to risk reply loops.
## Operating principles
1. Verify the live path end to end before assuming config is wrong:
- Gateway service is running.
- Platform server/client is running.
- Local webhook/listener is bound.
- Health endpoint responds if available.
- Platform has the webhook registered.
- Gateway logs show the adapter connected.
2. Separate transport, authorization, and adapter filtering:
- Transport failure: no webhook hit / listener closed.
- Authorization failure: sender not allowed or pairing pending.
- Adapter filtering: message acknowledged but intentionally skipped, e.g. group mention gating, tapback filtering, or self-message loop guard.
3. For user-visible claims, verify with real command output: `hermes status`, listener checks, webhook health, and gateway logs.
4. When changing Hermes gateway config or adapter code, restart the gateway and verify the adapter reconnects.
5. For gateway slash-command failures, inspect session-origin scope separately from transport health:
- Compare `source`, `user_id`, `chat_id`, `thread_id`, and `origin_json` in the live session database.
- Trace both the listing path and the action path; a session browser is still broken if it lists a target that `/resume` rejects.
- In forum/threaded platforms, distinguish same-parent-chat ownership from exact-thread isolation rather than weakening origin checks globally.
## Telegram forum session browsing
- A fresh Telegram forum topic can have no prior exact-thread sessions even when the same owner has many titled sessions in sibling topics of the same parent chat.
- Do not diagnose this from session history alone. Correlate gateway send logs, live DB origin columns, and the gateway routing origin.
- Cross-topic browsing must be Telegram-specific, same-parent-chat, and same-owner; `thread_sessions_per_user=false` permits sharing within one thread, not across sibling threads.
- Keep `/sessions` visibility and `/resume` authorization aligned, including persisted-only rows.
- See `references/telegram-forum-session-scope.md` for the reproduction, authorization contract, TDD matrix, and safe activation procedure.
## BlueBubbles / iMessage notes
- BlueBubbles may mark messages from the Mac's own Apple ID/iMessage identity as `isFromMe=true`.
- A blanket `isFromMe` skip prevents reply loops but also prevents the owner from texting Hermes from that same iMessage identity.
- The safer loop guard is outbound-ID based: remember Hermes-sent `tempGuid` and returned `guid`/`messageGuid`, then ignore only inbound webhook echoes whose IDs match that cache.
- On macOS, do not assume `localhost` reaches an IPv4-only Hermes webhook. BlueBubbles/Electron/Node may resolve `localhost` to IPv6 `::1`, causing `connect ECONNREFUSED ::1:<port>` while `curl http://127.0.0.1:<port>/health` still works. Register local BlueBubbles webhooks as `http://127.0.0.1:<port>/...` unless Hermes is listening on IPv6 too.
- See `references/bluebubbles-self-imessage-loop-guard.md` for the concrete fix pattern, localhost/IPv6 pitfall, stale-webhook cleanup, and verification loop.
- See `references/memory-context-injection-probes.md` for probe handling when recalled-memory wrappers, formatting-failure echoes, or outbound test messages appear in a live platform chat.
## Verification checklist
- `hermes status` shows the platform configured.
- Gateway process/service is running under the expected profile/home.
- Listener exists for the adapter webhook port/path.
- Webhook health returns success if implemented.
- Platform-side webhook registration points at the active Hermes listener.
- Logs show adapter connected and webhook registered.
- A test message reaches the adapter or produces a pairing/authorization signal.
## Pitfalls
- Do not confuse “gateway open” with “message authorized.” A listener can be healthy while the sender is ignored by allowlist/pairing logic.
- If Telegram is fast for text but a photo/image turn appears to run forever, inspect `agent.log` for repeated API calls ending in `TypeError: expected string or bytes-like object, got 'list'` from `_interim_assistant_visible_text` → `strip_think_blocks`. This was a multimodal block-list regression introduced by Codex interim-commentary handling; a current upstream release fixes the loop. Stop the affected turn, update Hermes through the normal update-safe procedure, reapply local patches, restart the gateway, and verify with a real photo+caption message. Transport latency and gateway health can look completely normal while this retry loop burns up to the agent iteration cap.
- Do not persist negative claims like “BlueBubbles ignores self messages” as a permanent tool limitation. The durable lesson is the loop-guard design.
- Do not edit protected bundled skills; place Hermes-gateway-specific operational learnings here when bundled skills cannot be patched.
## Public support files
- `references/bluebubbles-self-imessage-loop-guard.md`
- `references/memory-context-injection-probes.md`
- `references/telegram-forum-session-scope.md`
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!