Skip to content

No observability into message processing state (accepted → running → delivered/failed) #29124

@nohat

Description

@nohat

Problem

When the gateway processes an inbound message, there is no way to know what state it is in — whether it was accepted, is currently being processed by the AI, was successfully delivered, or failed silently.

This makes it difficult to diagnose:

  • "I sent a message but never got a reply" — was it accepted? Did the AI run? Did delivery fail?
  • "The bot seems stuck" — is it actually generating, or did it silently error?
  • Operators running multiple agents have no way to audit message flow across sessions

Current behavior

  • Inbound messages are processed in-memory with no persistent state tracking
  • If the gateway crashes mid-generation, there is no record the message was ever accepted
  • Delivery failures are logged but not queryable after the fact
  • openclaw channels status shows channel health but not per-message state

Expected behavior

Each inbound message turn should have a persistent lifecycle record tracking:

  • When it was accepted
  • Which agent/session is processing it
  • Current status (accepted → running → delivered / aborted / failed)
  • Final disposition with timestamp

This enables operators to answer "what happened to message X?" and build monitoring/alerting on message flow health.

Additional context

Related to #26764 — turn tracking is a prerequisite for reliable dedup since it provides a persistent record of which turns have already been processed.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions