openclaw - 💡(How to fix) Fix Subagent errors (e.g. 429 Rate Limit) are not surfaced to user, messages appear to be swallowed [1 participants]

Official PRs (…)
ON THIS PAGE

Recommended Tools

×6

Utilities matched from this issue’s tags and category — try them while you read without losing context.

GitHub issue graph ai analysis

Paste a GitHub issue URL. We fetch that issue, discover linked issues from bodies/comments/timeline, collect linked pull requests, and produce a structured English report.

The report is written in English Markdown for sharing and archival.

Helpful · Quick feedback

Loading…
GitHub stats
openclaw/openclaw#54417Fetched 2026-04-08 01:27:49
View on GitHub
Comments
0
Participants
1
Timeline
1
Reactions
0
Participants
Timeline (top)
cross-referenced ×1

When a subagent encounters an error (e.g., 429 Rate Limit), the error is not surfaced to the user in the original chat. Instead:

  1. Messages sent to the subagent appear to be "swallowed" (flash and disappear)
  2. No error message is shown to the user
  3. The subagent appears "stuck" without any feedback
  4. User has no way to know what went wrong

Error Message

When a subagent encounters an error (e.g., 429 Rate Limit), the error is not surfaced to the user in the original chat. Instead: 2. No error message is shown to the user 2. Trigger a 429 Rate Limit error (or any other error that causes the subagent to fail) 4. Observe: message is sent but no response, no error shown

  1. When a subagent encounters an error, the Gateway should notify the user in the original chat:
  • "Subagent encountered an error: 429 Rate Limit. Please wait and try again."
  • "Subagent is not responding. It may have encountered an error."
  1. Run sessions_history to see the error messages
  2. Add error propagation from subagent to parent session This affects user experience significantly - users may think OpenClaw is broken when it's actually just a temporary API error.

Root Cause

When a subagent encounters an error (e.g., 429 Rate Limit), the error is not surfaced to the user in the original chat. Instead:

  1. Messages sent to the subagent appear to be "swallowed" (flash and disappear)
  2. No error message is shown to the user
  3. The subagent appears "stuck" without any feedback
  4. User has no way to know what went wrong

Fix Action

Workaround

Currently, the only way to diagnose this is to:

  1. Use the control-ui session
  2. Run sessions_list to find the stuck session
  3. Run sessions_history to see the error messages

This is not accessible for most users.

RAW_BUFFERClick to expand / collapse

Description

When a subagent encounters an error (e.g., 429 Rate Limit), the error is not surfaced to the user in the original chat. Instead:

  1. Messages sent to the subagent appear to be "swallowed" (flash and disappear)
  2. No error message is shown to the user
  3. The subagent appears "stuck" without any feedback
  4. User has no way to know what went wrong

Steps to Reproduce

  1. Create a subagent session (e.g., via Telegram or another channel)
  2. Trigger a 429 Rate Limit error (or any other error that causes the subagent to fail)
  3. Try to send a message to the subagent
  4. Observe: message is sent but no response, no error shown

Expected Behavior

  1. When a subagent encounters an error, the Gateway should notify the user in the original chat:
    • "Subagent encountered an error: 429 Rate Limit. Please wait and try again."
  2. Alternatively, implement a timeout mechanism (e.g., 30 seconds) that shows:
    • "Subagent is not responding. It may have encountered an error."

Actual Behavior

  • Messages are forwarded to the subagent
  • Subagent fails silently
  • User sees no feedback
  • User cannot tell if the message was received or what went wrong

Environment

  • OpenClaw version: 2026.3.23-2
  • Channel: Telegram (also affects other channels)
  • Model: zai/glm-5 (but applies to any model that can hit rate limits)

Workaround

Currently, the only way to diagnose this is to:

  1. Use the control-ui session
  2. Run sessions_list to find the stuck session
  3. Run sessions_history to see the error messages

This is not accessible for most users.

Suggested Fix

  1. Add error propagation from subagent to parent session
  2. Add timeout notification when subagent doesn't respond within N seconds
  3. Log errors to a user-accessible location (not just internal logs)

Related

This affects user experience significantly - users may think OpenClaw is broken when it's actually just a temporary API error.

extent analysis

Fix Plan

To address the issue, we'll implement the following steps:

  • Error Propagation: Modify the subagent to propagate errors to the parent session.
  • Timeout Mechanism: Implement a timeout mechanism to notify the user if the subagent doesn't respond within a specified time frame (e.g., 30 seconds).
  • Error Logging: Log errors to a user-accessible location.

Example Code

# Error Propagation
def handle_subagent_error(error):
    # Propagate error to parent session
    parent_session.send_error_message(f"Subagent encountered an error: {error}")

# Timeout Mechanism
import threading

def send_timeout_notification(subagent):
    def timeout_callback():
        parent_session.send_message("Subagent is not responding. It may have encountered an error.")
    
    timer = threading.Timer(30.0, timeout_callback)  # 30-second timeout
    timer.start()

# Error Logging
import logging

def log_error(error):
    logging.error(f"Subagent error: {error}")
    # Log error to user-accessible location (e.g., database or file)

Configuration Changes

  • Update the subagent configuration to include error propagation and timeout mechanisms.
  • Configure the logging system to store errors in a user-accessible location.

Verification

To verify the fix, follow these steps:

  1. Trigger a 429 Rate Limit error (or any other error that causes the subagent to fail).
  2. Send a message to the subagent.
  3. Verify that the error message is propagated to the parent session and displayed to the user.
  4. Verify that the timeout notification is sent to the user if the subagent doesn't respond within the specified time frame.

Extra Tips

  • Ensure that the error logging mechanism is secure and doesn't expose sensitive information.
  • Consider implementing a retry mechanism for temporary API errors.
  • Monitor user feedback and adjust the timeout mechanism as needed to improve the user experience.

Vote matrix · Quick signals

Works
Did the solution work? Tap to confirm.
Easy Fix
Was it a quick fix?
Time Saver
Did it save you time?
Blocking
Was it severely blocking?
Common Issue
Are others likely hitting this too?
Flaky / Intermittent
Is it intermittent?
Verified / Reproducible
Can you reproduce it reliably?
Loading…

Still need to ship something?

×6

Another batch ranked right after the header list — different links, same matching logic.

Back to top recommendations

TRENDING