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
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions