NousResearch/hermes-agent · error · ValueError

No chat ID for {target.platform.value} delivery

Error message

No chat ID for {target.platform.value} delivery

What it means

Error "No chat ID for {target.platform.value} delivery" thrown in NousResearch/hermes-agent.

Source

Thrown at gateway/delivery.py:473

        env = os.getenv("HERMES_FILTER_SILENCE_NARRATION")
        if env is not None:
            return env.strip().lower() in ("1", "true", "yes", "on")
        return bool(getattr(self.config, "filter_silence_narration", True))

    async def _deliver_to_platform(
        self,
        target: DeliveryTarget,
        content: str,
        metadata: Optional[Dict[str, Any]]
    ) -> Dict[str, Any]:
        """Deliver content to a messaging platform."""
        transport = resolve_delivery_transport(target.platform, self.config, self.adapters)
        if transport is None:
            raise ValueError(f"No adapter configured for {target.platform.value}")
        adapter = transport.adapter

        if not target.chat_id:
            raise ValueError(f"No chat ID for {target.platform.value} delivery")
        
        # Guard: handle oversized cron output.
        #
        # Two independent decisions:
        #   1. AUDIT SAVE — when content exceeds MAX_PLATFORM_OUTPUT, the full
        #      output is always written to disk as a recoverable audit trail.
        #      This fires regardless of adapter capability (best-effort).
        #   2. TRUNCATION — for non-chunking adapters, content above the cap is
        #      truncated with a footer pointing to the saved file.  Chunking-
        #      capable adapters (splits_long_messages=True) receive the full
        #      payload and split natively in their send().
        job_id = (metadata or {}).get("job_id", "unknown")
        saved_path: Optional[Path] = None

        if len(content) > MAX_PLATFORM_OUTPUT:
            # Step 1 — audit save (best-effort).  The save is a side-effect
            # audit trail, not essential to delivery.  If it fails (full disk,
            # permissions), delivery proceeds — the content reaches the adapter

View on GitHub (pinned to c896c09c42)

Solutions

  1. Provide a chat id for the delivery target on that platform.
  2. Look up the correct chat/thread id for the destination.

When it happens

Trigger: Thrown at gateway/delivery.py:473 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of NousResearch/hermes-agent@c896c09c42 (2026-08-14). Data as JSON: /api/errors/00d779742d07c055. Report an issue: GitHub.