HKUDS/nanobot · error · SessionMessageError

session message rate limit reached ({self._max_messages_per_

Error message

session message rate limit reached ({self._max_messages_per_minute}/minute)

What it means

Error "session message rate limit reached ({self._max_messages_per_minute}/minute)" thrown in HKUDS/nanobot.

Source

Thrown at nanobot/agent/tools/session_messages.py:248

        envelope: SessionMessageEnvelope = {
            "message_id": uuid4().hex,
            "created_at_ms": int(time.time() * 1000),
            "expect_reply": expect_reply,
            "source_handle": source.name,
            "source_session_key": source.session_key,
            "target_session_key": target.session_key,
        }
        reverse_wait_key = (target.session_key, source.session_key)
        wait_key = (source.session_key, target.session_key)

        async with self._send_lock:
            now = self._clock()
            sent_at = self._sent_at.setdefault(source.session_key, deque())
            cutoff = now - _RATE_LIMIT_WINDOW_SECONDS
            while sent_at and sent_at[0] <= cutoff:
                sent_at.popleft()
            if len(sent_at) >= self._max_messages_per_minute:
                raise SessionMessageError(
                    f"session message rate limit reached ({self._max_messages_per_minute}/minute)",
                )

            await self._bus.publish_inbound(InboundMessage(
                channel="system",
                sender_id="session",
                chat_id=target.session_key,
                content=content,
                metadata={SESSION_MESSAGE_METADATA_KEY: envelope},
                session_key_override=target.session_key,
                input_role="user",
            ))
            sent_at.append(now)
            self._cancel_pending_reply(reverse_wait_key)
            if timeout_seconds is not None:
                self._cancel_pending_reply(wait_key)
                self._schedule_pending_reply(
                    wait_key,

View on GitHub (pinned to 42f37dc4c0)

When it happens

Trigger: Thrown at nanobot/agent/tools/session_messages.py:248 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of HKUDS/nanobot@42f37dc4c0 (2026-08-26). Data as JSON: /api/errors/6d3bae5d8415ee2e. Report an issue: GitHub.