openclaw - 💡(How to fix) Fix [Feishu] WebChat UI displays sender user ID instead of friendly name despite resolveSenderNames being enabled [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#62280Fetched 2026-04-08 03:06:45
View on GitHub
Comments
0
Participants
1
Timeline
0
Reactions
0
Participants

Error Message

  • Work account shows permission error 99991672 but August account does not

Root Cause

Based on code inspection of /opt/homebrew/lib/node_modules/openclaw/dist/monitor-Bkbv5nYZ.js:

  1. The resolveFeishuSenderName() function exists and is called when resolveSenderNames: true
  2. It calls Feishu API client.contact.user.get() to fetch user info
  3. It extracts user?.name ?? user?.nickname ?? user?.en_name
  4. However, the resolved senderName is not being persisted to the session's origin.label field
  5. WebChat UI reads origin.label for display, which remains as the user ID

This appears to be a data flow bug where the resolved sender name is not correctly propagated to the session metadata that WebChat UI uses for display.

Fix Action

Fix / Workaround

The senderName resolved by resolveFeishuSenderName() should be:

  1. Logged for debugging purposes
  2. Persisted to session metadata (origin.label or a dedicated displayName field)
  3. Properly passed to WebChat UI session list rendering

Workarounds

Currently no effective workarounds:

  • ❌ Modifying openclaw.json config (already tried)
  • ❌ Setting Feishu app permissions (already configured)
  • ❌ Modifying Feishu user profile name (doesn't help due to the bug)
  • ⚠️ WebChat UI local alias (temporary, lost on browser cache clear)

Code Example

{
  channels: {
    feishu: {
      accounts: {
        august: {
          appId: "cli_xxx",
          appSecret: "xxx",
          name: "August",
          resolveSenderNames: true  // Explicitly enabled
        }
      }
    }
  }
}

---

{
  "origin": {
    "label": "ou_cab6e863739d5f3103f932ffdd09e15d",  // Should be friendly name
    "provider": "webchat",
    "surface": "webchat",
    "chatType": "direct",
    "from": "feishu:ou_cab6e863739d5f3103f932ffdd09e15d",
    "to": "user:ou_cab6e863739d5f3103f932ffdd09e15d",
    "accountId": "august"
  }
}
RAW_BUFFERClick to expand / collapse

name: 🐞 Bug Report about: Create a report to help us improve title: "[Feishu] WebChat UI displays sender user ID instead of friendly name despite resolveSenderNames being enabled" labels: bug, feishu-channel, webchat

Bug Description

WebChat UI session list displays Feishu sender's user ID (e.g., ou_cab6e863739d5f3103f932ffdd09e15d) instead of the user's friendly name, even though resolveSenderNames: true is configured and Feishu app permissions are properly set up.

Steps to Reproduce

  1. Configure Feishu channel in openclaw.json:
{
  channels: {
    feishu: {
      accounts: {
        august: {
          appId: "cli_xxx",
          appSecret: "xxx",
          name: "August",
          resolveSenderNames: true  // Explicitly enabled
        }
      }
    }
  }
}
  1. Grant Feishu app permission contact:contact.base:readonly (读取用户基本信息)

  2. Send a DM to the Feishu bot from a user account

  3. Open WebChat UI (http://localhost:18789/)

  4. Observe the session list - it shows the sender's user ID instead of their Feishu display name

Expected Behavior

WebChat UI should display the sender's Feishu display name (from their profile) in the session list, not their user ID.

Actual Behavior

Session list shows the raw Feishu user ID (e.g., ou_cab6e863739d5f3103f932ffdd09e15d) instead of the friendly name.

Investigation Findings

  1. Permission is configured: contact:contact.base:readonly is granted in Feishu Open Platform
  2. Config is correct: resolveSenderNames: true is set in openclaw.json
  3. No permission errors in logs: August account doesn't show 99991672 permission errors
  4. Session data shows user ID: The origin.label field in sessions.json contains the user ID, not the friendly name
  5. No sender name resolution logs: Gateway logs don't show any resolveFeishuSenderName activity

Session data example:

{
  "origin": {
    "label": "ou_cab6e863739d5f3103f932ffdd09e15d",  // Should be friendly name
    "provider": "webchat",
    "surface": "webchat",
    "chatType": "direct",
    "from": "feishu:ou_cab6e863739d5f3103f932ffdd09e15d",
    "to": "user:ou_cab6e863739d5f3103f932ffdd09e15d",
    "accountId": "august"
  }
}

Root Cause Analysis

Based on code inspection of /opt/homebrew/lib/node_modules/openclaw/dist/monitor-Bkbv5nYZ.js:

  1. The resolveFeishuSenderName() function exists and is called when resolveSenderNames: true
  2. It calls Feishu API client.contact.user.get() to fetch user info
  3. It extracts user?.name ?? user?.nickname ?? user?.en_name
  4. However, the resolved senderName is not being persisted to the session's origin.label field
  5. WebChat UI reads origin.label for display, which remains as the user ID

This appears to be a data flow bug where the resolved sender name is not correctly propagated to the session metadata that WebChat UI uses for display.

Environment

  • OpenClaw Version: 2026.4.2
  • Node.js: v23.11.0
  • OS: Darwin 25.4.0 (arm64)
  • Feishu Domain: feishu (China)
  • Connection Mode: websocket

Additional Context

  • Work account shows permission error 99991672 but August account does not
  • The resolveSenderNames feature appears to be silently failing or not persisting results
  • WebChat UI local alias feature works but is not persistent (stored in browser localStorage only)

Possible Fix

The senderName resolved by resolveFeishuSenderName() should be:

  1. Logged for debugging purposes
  2. Persisted to session metadata (origin.label or a dedicated displayName field)
  3. Properly passed to WebChat UI session list rendering

Workarounds

Currently no effective workarounds:

  • ❌ Modifying openclaw.json config (already tried)
  • ❌ Setting Feishu app permissions (already configured)
  • ❌ Modifying Feishu user profile name (doesn't help due to the bug)
  • ⚠️ WebChat UI local alias (temporary, lost on browser cache clear)

Priority: Medium - affects user experience in multi-user deployments where session identification is important.

extent analysis

TL;DR

Update the resolveFeishuSenderName() function to persist the resolved sender name to the session's origin.label field or a dedicated displayName field.

Guidance

  1. Verify the resolveFeishuSenderName() function: Ensure it correctly calls the Feishu API client.contact.user.get() and extracts the user's name, nickname, or en_name.
  2. Log the resolved sender name: Add logging to verify that the resolveFeishuSenderName() function is resolving the sender name correctly.
  3. Update session metadata: Modify the code to persist the resolved sender name to the session's origin.label field or a dedicated displayName field.
  4. Test the fix: Verify that the WebChat UI session list displays the sender's friendly name instead of their user ID after applying the fix.

Example

// Example of updating the session metadata
const session = {
  origin: {
    label: resolvedSenderName, // Update the label with the resolved sender name
    // ...
  }
};

Notes

The fix assumes that the resolveFeishuSenderName() function is correctly resolving the sender name, but the issue lies in persisting the resolved name to the session metadata.

Recommendation

Apply the workaround by updating the resolveFeishuSenderName() function to persist the resolved sender name to the session metadata, as this is the most direct way to address the issue.

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