openclaw - 💡(How to fix) Fix [Bug] Feishu DM can miss parent final reply after sessions_spawn completion even though the reply exists in session history [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#54316Fetched 2026-04-08 01:29:09
View on GitHub
Comments
0
Participants
1
Timeline
0
Reactions
0
Participants

In a Feishu direct chat, a parent session can successfully spawn a subagent with sessions_spawn, receive the subagent completion event, generate the final assistant reply, and still fail to show that reply to the human user.

From the parent session's point of view, the reply was generated. From the user's point of view, nothing arrived.

This looks like a delivery / visibility gap between:

  1. subagent completion announce / parent re-entry
  2. the parent assistant final answer
  3. Feishu outbound delivery for that final answer

Root Cause

This makes subagent workflows feel flaky in chat:

  • internally, everything may be correct
  • externally, the user experiences silence

That breaks trust in multi-agent orchestration, especially on messaging channels where the user only sees the outbound result.

Fix Action

Fix / Workaround

As a workaround, after one of these subagent completions we sent the result through the message tool using an explicit Feishu card send.

This may be a separate bug / schema mismatch, but I mention it because it became the only reliable workaround for user-visible delivery during testing.

Workaround used

RAW_BUFFERClick to expand / collapse

[Bug] Feishu direct chats can miss the parent reply after sessions_spawn subagent completion even though the assistant reply exists in session history

Summary

In a Feishu direct chat, a parent session can successfully spawn a subagent with sessions_spawn, receive the subagent completion event, generate the final assistant reply, and still fail to show that reply to the human user.

From the parent session's point of view, the reply was generated. From the user's point of view, nothing arrived.

This looks like a delivery / visibility gap between:

  1. subagent completion announce / parent re-entry
  2. the parent assistant final answer
  3. Feishu outbound delivery for that final answer

Environment

  • OpenClaw version: 2026.3.23-2
  • Channel: Feishu direct chat
  • Session kind: agent:main:feishu:direct:*
  • Model observed during tests: gpt-5.4-mini and gpt-5.4
  • Host: Linux / systemd gateway

What happened

We repeatedly ran this pattern:

  1. user asks assistant to spawn a subagent
  2. assistant calls sessions_spawn(..., mode:"run", runtime:"subagent")
  3. assistant calls sessions_yield(...) to wait for the completion event
  4. subagent finishes successfully
  5. an inter-session completion event is injected into the parent session
  6. the parent assistant produces a normal final answer based on that event
  7. the human user sometimes does not see that answer in Feishu

Important evidence

A. The parent reply exists in session history

Using sessions_history on the Feishu direct session, I can see:

  • the user-visible request
  • the sessions_spawn / sessions_yield sequence
  • the injected subagent completion event
  • the assistant final answer immediately after that event

So this is not just "the model never replied".

B. Docs say delivery is best-effort

The docs explicitly say:

  • delivery / announce happens after completion
  • delivery is best-effort
  • status: "ok" confirms the agent run completed, not that announce/delivery succeeded

Relevant docs:

  • docs/zh-CN/tools/index.md lines ~451-453
  • docs/zh-CN/concepts/session-tool.md lines ~173-177

C. Explicit Feishu card send succeeds

As a workaround, after one of these subagent completions we sent the result through the message tool using an explicit Feishu card send.

That explicit card was delivered successfully to the user.

This suggests the problem is more specific than "all Feishu outbound delivery is broken".

Additional oddity

Attempting explicit Feishu message.send with plain text (no card) did not work in this environment:

  • first, tool validation complained that card was required
  • then trying with an empty card returned HTTP 400
  • sending a minimal Feishu card succeeded

This may be a separate bug / schema mismatch, but I mention it because it became the only reliable workaround for user-visible delivery during testing.

Expected behavior

When a subagent completion event is delivered back into the parent session, and the parent assistant generates a final answer in response, that answer should be delivered to the original Feishu conversation reliably.

At minimum, there should be a way to know whether:

  • the parent assistant reply was generated
  • the reply was handed off to the Feishu adapter
  • the Feishu adapter accepted / delivered it

Actual behavior

  • subagent run completes
  • parent session receives completion event
  • parent assistant final answer exists in transcript/history
  • user sometimes reports seeing no reply in Feishu

Reproduction sketch

In Feishu DM:

  1. Ask assistant to run a subagent arithmetic test.
  2. Assistant does:
    • sessions_spawn({ runtime:"subagent", mode:"run", ... })
    • sessions_yield({ message:"[executing] ..." })
  3. Wait for subagent completion event.
  4. Let the parent assistant produce a normal final answer.
  5. Observe that the final answer may exist in session history while not being visible in Feishu.

Suspected scope

Likely one of these:

  1. parent re-entry reply after inter-session completion event is not always routed back through the original Feishu reply path
  2. Feishu adapter does not reliably emit user-visible output for parent answers generated from inter-session completion events
  3. transcript/session state marks the turn complete even when outbound delivery did not happen
  4. there is no delivery acknowledgment path, so internal success is mistaken for user-visible success

Why this matters

This makes subagent workflows feel flaky in chat:

  • internally, everything may be correct
  • externally, the user experiences silence

That breaks trust in multi-agent orchestration, especially on messaging channels where the user only sees the outbound result.

Workaround used

Use an explicit message.send Feishu card after the subagent completion arrives, instead of relying only on the normal parent final-answer path.

That workaround succeeded in the same session where normal visible reply delivery was suspect.

Request

Could maintainers clarify whether this is:

  • an expected limitation of the current announce/delivery path
  • a Feishu adapter bug
  • a parent re-entry / inter-session completion routing bug

And if it is a known issue, is there already a preferred workaround besides explicit outbound send?

extent analysis

Fix Plan

To address the issue of missing parent replies in Feishu direct chats after subagent completion, follow these steps:

  1. Implement explicit delivery confirmation: Modify the parent assistant to send an explicit confirmation of delivery after generating the final answer. This can be done using the message.send tool with a Feishu card.
  2. Use a reliable delivery method: Instead of relying on the normal parent final-answer path, use the message.send tool with a Feishu card to ensure reliable delivery of the final answer.
  3. Verify delivery: Implement a verification mechanism to check if the final answer was delivered successfully to the user. This can be done by checking the response from the Feishu adapter or by using a separate delivery confirmation endpoint.

Example code snippet:

import message

# Generate final answer
final_answer = generate_final_answer()

# Send explicit delivery confirmation using Feishu card
card = {
    "msg_type": "interactive",
    "card": {
        "elements": [
            {
                "tag": "div",
                "text": {
                    "content": final_answer
                }
            }
        ]
    }
}
message.send(card)

Verification

To verify that the fix worked, test the following scenarios:

  • Subagent completion with parent reply: Verify that the parent reply is delivered to the user and visible in Feishu.
  • Subagent completion without parent reply: Verify that no reply is sent to the user.
  • Explicit delivery confirmation: Verify that the explicit delivery confirmation is sent and received by the user.

Extra Tips

  • Ensure that the Feishu adapter is configured correctly and that the message.send tool is working as expected.
  • Consider implementing a retry mechanism for delivery failures to improve reliability.
  • Review the documentation for the message.send tool and Feishu adapter to ensure that the implementation is correct and up-to-date.

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…

FAQ

Expected behavior

When a subagent completion event is delivered back into the parent session, and the parent assistant generates a final answer in response, that answer should be delivered to the original Feishu conversation reliably.

At minimum, there should be a way to know whether:

  • the parent assistant reply was generated
  • the reply was handed off to the Feishu adapter
  • the Feishu adapter accepted / delivered it

Still need to ship something?

×6

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

Back to top recommendations

TRENDING

openclaw - 💡(How to fix) Fix [Bug] Feishu DM can miss parent final reply after sessions_spawn completion even though the reply exists in session history [1 participants]