Skip to content

openclaw message thread create for Telegram: thread-create → topic-create remap not happening; gateway rejects with Unsupported Telegram action #81581

Description

@myrzka

Bug Description

openclaw message thread create for the Telegram channel fails with GatewayClientRequestError: Error: Unsupported Telegram action: thread-create. The Telegram plugin's resolveCliActionRequest for the thread-create action — which is supposed to remap to topic-create (the only name the Telegram action runtime recognizes) — isn't taking effect, so the bare thread-create action reaches the gateway and is rejected.

Reproduction

openclaw message thread create \
  --account myrzka_bot \
  --channel telegram \
  --target -1003894873578 \
  --thread-name "Test topic" \
  --json

Result:

GatewayClientRequestError: Error: Unsupported Telegram action: thread-create

Gateway log:

[ws] ⇄ res ✗ message.action 64ms errorCode=UNAVAILABLE errorMessage=Error: Unsupported Telegram action: thread-create channel=telegram

The myrzka_bot account has admin "Manage Topics" permission in the target supergroup (verified empirically — raw https://api.telegram.org/bot$TOKEN/createForumTopic works fine). The bot's channel capabilities list topic-create and topic-edit as supported actions per openclaw channels capabilities.

Environment

  • OpenClaw 2026.5.7 (eeef486)
  • Channel: Telegram (bot token, supergroup target)
  • Bot has admin role + "Manage Topics" permission

Expected behavior

The CLI should remap thread-createtopic-create for Telegram per src/cli/program/message/register.thread.ts:resolveThreadCreateRequest calling getChannelPlugin("telegram")?.actions?.resolveCliActionRequest?.({ action: "thread-create", args: opts }). The Telegram plugin's source at extensions/telegram/src/channel-actions.ts contains the remap logic:

return {
  action: "topic-create",
  args: {
    ...rest,
    name: readStringValue(threadName),
  },
};

But the bare thread-create is reaching the gateway, indicating either:

  • The plugin's resolveCliActionRequest for thread-create isn't being invoked from the CLI dispatcher
  • The remap result is being dropped/ignored
  • The Telegram plugin doesn't export resolveCliActionRequest to the channel plugin loader in this code path

Workaround

Direct Bot API call works:

curl -X POST "https://api.telegram.org/bot$TOKEN/createForumTopic" \
  --data-urlencode "chat_id=$GROUP_ID" \
  --data-urlencode "name=$TOPIC_NAME"

Returns {"ok":true,"result":{"message_thread_id":<N>,...}} and the topic appears in the group. So the underlying bot capability is intact; only the openclaw message thread create CLI dispatch is broken.

Acceptance

  • openclaw message thread create --channel telegram --account <bot> --target <chatId> --thread-name "Foo" succeeds and creates the forum topic
  • Returns the new message_thread_id in the result
  • --dry-run shows the resolved topic-create action, not thread-create

Related context

Filed by the Great-Sarak fleet (operator: Sorotassu). Hit during a kickstart-issue automation script that creates one Telegram forum topic per GitHub issue. Worked around by falling back to raw Bot API; the workaround is at kryshanti/myrzka/.scripts/kickstart-issue.sh in the Great-Sarak fleet for reference.

Will revert to openclaw message thread create in our script once this is fixed.

Metadata

Metadata

Assignees

No one assigned

    Labels

    P2Normal backlog priority with limited blast radius.clawsweeper:fix-shape-clearClawSweeper found a clear likely implementation shape for this issue.clawsweeper:queueable-fixClawSweeper marked this issue as an existing queue_fix_pr work candidate.clawsweeper:source-reproClawSweeper found a high-confidence source-level issue reproduction.impact:otherThis issue has meaningful maintainer-visible impact outside the owned taxonomy.issue-rating: 🦞 diamond lobsterVery strong issue quality with high-confidence source-level or clear reproduction.staleMarked as stale due to inactivity

    Type

    No type

    Fields

    Priority

    None yet

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions