openclaw - ✅(Solved) Fix [Bug]: Telegram multi-account config error [1 pull requests, 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#62985Fetched 2026-04-09 07:59:48
View on GitHub
Comments
0
Participants
1
Timeline
2
Reactions
0
Author
Participants
Timeline (top)
cross-referenced ×1labeled ×1

the config "channels.telegram.accounts" has error, when updating from 2026.4.5 to 2026.4.8. and the config still works in the 2026.4.5

here are the err report after running "openclaw gateway restart", causing the whole agent crached

Config invalid
File: ~/.openclaw/openclaw.json
Problem:
  - channels.telegram.accounts.main: invalid config: must NOT have additional properties
  - channels.telegram.accounts.builder: invalid config: must NOT have additional properties
  - channels.telegram.accounts.cos: invalid config: must NOT have additional properties
  - channels.telegram.accounts.cto: invalid config: must NOT have additional properties
  - channels.telegram.accounts.cio: invalid config: must NOT have additional properties
  - channels.telegram.accounts.research: invalid config: must NOT have additional properties
Legacy config keys detected:
  - channels.telegram: channels.telegram.streamMode, channels.telegram.streaming (scalar), chunkMode, blockStreaming, draftChunk, and blockStreamingCoalesce are legacy; use channels.telegram.streaming.{mode,chunkMode,preview.chunk,block.enabled,block.coalesce} instead. Run "openclaw doctor --fix".
  - channels.slack: channels.slack.streamMode, channels.slack.streaming (scalar), chunkMode, blockStreaming, blockStreamingCoalesce, and nativeStreaming are legacy; use channels.slack.streaming.{mode,chunkMode,block.enabled,block.coalesce,nativeTransport} instead. Run "openclaw doctor --fix".
  - channels.slack: channels.slack.streamMode, channels.slack.streaming (scalar), chunkMode, blockStreaming, blockStreamingCoalesce, and nativeStreaming are legacy; use channels.slack.streaming.{mode,chunkMode,block.enabled,block.coalesce,nativeTransport}.
  - channels.telegram: channels.telegram.streamMode, channels.telegram.streaming (scalar), chunkMode, blockStreaming, draftChunk, and blockStreamingCoalesce are legacy; use channels.telegram.streaming.{mode,chunkMode,preview.chunk,block.enabled,block.coalesce}.
  - channels.slack: channels.slack.streamMode, channels.slack.streaming (scalar), chunkMode, blockStreaming, blockStreamingCoalesce, and nativeStreaming are legacy; use channels.slack.streaming.{mode,chunkMode,block.enabled,block.coalesce,nativeTransport}.
  - channels.telegram: channels.telegram.streamMode, channels.telegram.streaming (scalar), chunkMode, blockStreaming, draftChunk, and blockStreamingCoalesce are legacy; use channels.telegram.streaming.{mode,chunkMode,preview.chunk,block.enabled,block.coalesce}.

cconfig:

"telegram": {
      "accounts": {
        "main": {
          "botToken": "____",
          "dmPolicy": "pairing",
          "agentId": "main"
        },
        "builder": {
          "botToken": "____",
          "dmPolicy": "pairing",
          "agentId": "builder"
        },
        "cos": {
          "botToken": "____",
          "dmPolicy": "pairing",
          "agentId": "cos"
        },
        "cto": {
          "botToken": "____",
          "dmPolicy": "pairing",
          "agentId": "cto"
        },
        "cio": {
          "botToken": "____",
          "dmPolicy": "pairing",
          "agentId": "cio"
        },
        "research": {
          "botToken": "____",
          "dmPolicy": "pairing",
          "agentId": "research"
        },
        "default": {
          "dmPolicy": "pairing",
          "groupPolicy": "allowlist"
        }
      },
      "configWrites": true,
      "enabled": true,
      "groups": {
        "*": {
          "requireMention": true
        }
      },
      "healthMonitor": {
        "enabled": true
      },
      "linkPreview": true,
      "markdown": {
        "tables": "bullets"
      },
      "streaming": "partial",
      "blockStreaming": false,
      "actions": {
        "sendMessage": true,
        "editMessage": true,
        "reactions": true,
        "createForumTopic": true,
        "deleteMessage": true
      }
    }

Error Message

the config "channels.telegram.accounts" has error, when updating from 2026.4.5 to 2026.4.8.

Root Cause

the config "channels.telegram.accounts" has error, when updating from 2026.4.5 to 2026.4.8. and the config still works in the 2026.4.5

here are the err report after running "openclaw gateway restart", causing the whole agent crached

Config invalid
File: ~/.openclaw/openclaw.json
Problem:
  - channels.telegram.accounts.main: invalid config: must NOT have additional properties
  - channels.telegram.accounts.builder: invalid config: must NOT have additional properties
  - channels.telegram.accounts.cos: invalid config: must NOT have additional properties
  - channels.telegram.accounts.cto: invalid config: must NOT have additional properties
  - channels.telegram.accounts.cio: invalid config: must NOT have additional properties
  - channels.telegram.accounts.research: invalid config: must NOT have additional properties
Legacy config keys detected:
  - channels.telegram: channels.telegram.streamMode, channels.telegram.streaming (scalar), chunkMode, blockStreaming, draftChunk, and blockStreamingCoalesce are legacy; use channels.telegram.streaming.{mode,chunkMode,preview.chunk,block.enabled,block.coalesce} instead. Run "openclaw doctor --fix".
  - channels.slack: channels.slack.streamMode, channels.slack.streaming (scalar), chunkMode, blockStreaming, blockStreamingCoalesce, and nativeStreaming are legacy; use channels.slack.streaming.{mode,chunkMode,block.enabled,block.coalesce,nativeTransport} instead. Run "openclaw doctor --fix".
  - channels.slack: channels.slack.streamMode, channels.slack.streaming (scalar), chunkMode, blockStreaming, blockStreamingCoalesce, and nativeStreaming are legacy; use channels.slack.streaming.{mode,chunkMode,block.enabled,block.coalesce,nativeTransport}.
  - channels.telegram: channels.telegram.streamMode, channels.telegram.streaming (scalar), chunkMode, blockStreaming, draftChunk, and blockStreamingCoalesce are legacy; use channels.telegram.streaming.{mode,chunkMode,preview.chunk,block.enabled,block.coalesce}.
  - channels.slack: channels.slack.streamMode, channels.slack.streaming (scalar), chunkMode, blockStreaming, blockStreamingCoalesce, and nativeStreaming are legacy; use channels.slack.streaming.{mode,chunkMode,block.enabled,block.coalesce,nativeTransport}.
  - channels.telegram: channels.telegram.streamMode, channels.telegram.streaming (scalar), chunkMode, blockStreaming, draftChunk, and blockStreamingCoalesce are legacy; use channels.telegram.streaming.{mode,chunkMode,preview.chunk,block.enabled,block.coalesce}.

cconfig:

"telegram": {
      "accounts": {
        "main": {
          "botToken": "____",
          "dmPolicy": "pairing",
          "agentId": "main"
        },
        "builder": {
          "botToken": "____",
          "dmPolicy": "pairing",
          "agentId": "builder"
        },
        "cos": {
          "botToken": "____",
          "dmPolicy": "pairing",
          "agentId": "cos"
        },
        "cto": {
          "botToken": "____",
          "dmPolicy": "pairing",
          "agentId": "cto"
        },
        "cio": {
          "botToken": "____",
          "dmPolicy": "pairing",
          "agentId": "cio"
        },
        "research": {
          "botToken": "____",
          "dmPolicy": "pairing",
          "agentId": "research"
        },
        "default": {
          "dmPolicy": "pairing",
          "groupPolicy": "allowlist"
        }
      },
      "configWrites": true,
      "enabled": true,
      "groups": {
        "*": {
          "requireMention": true
        }
      },
      "healthMonitor": {
        "enabled": true
      },
      "linkPreview": true,
      "markdown": {
        "tables": "bullets"
      },
      "streaming": "partial",
      "blockStreaming": false,
      "actions": {
        "sendMessage": true,
        "editMessage": true,
        "reactions": true,
        "createForumTopic": true,
        "deleteMessage": true
      }
    }

Fix Action

Fixed

PR fix notes

PR #63380: fix(telegram): allow agentId in account config for multi-account routing

Description (problem / solution / changelog)

Summary

Fixes regression where Telegram multi-account configs with agentId were rejected as 'must NOT have additional properties' after upgrading from 2026.4.5 to 2026.4.8.

Root cause

agentId was only defined in TelegramTopicSchema (for forum group topic routing), not in TelegramAccountSchemaBase. The .strict() Zod modifier generates additionalProperties: false in JSON Schema, causing account configs with agentId to fail validation.

Changes

  • src/config/types.telegram.ts: Added agentId?: string to TelegramAccountConfig type
  • src/config/zod-schema.providers-core.ts: Added agentId: z.string().optional() to TelegramAccountSchemaBase Zod schema (after enabled field)
  • src/config/config.telegram-topic-agentid.test.ts: Added regression test for agentId in account config

Testing

  • Isolated Zod schema validation confirms: account with agentId now passes, multi-account config (6 accounts each with agentId) passes, backward compatibility preserved

Fixes #62985

Changed files

  • src/config/config.telegram-topic-agentid.test.ts (modified, +62/-0)
  • src/config/types.telegram.ts (modified, +2/-0)
  • src/config/zod-schema.providers-core.ts (modified, +2/-0)

Code Example

Config invalid
File: ~/.openclaw/openclaw.json
Problem:
  - channels.telegram.accounts.main: invalid config: must NOT have additional properties
  - channels.telegram.accounts.builder: invalid config: must NOT have additional properties
  - channels.telegram.accounts.cos: invalid config: must NOT have additional properties
  - channels.telegram.accounts.cto: invalid config: must NOT have additional properties
  - channels.telegram.accounts.cio: invalid config: must NOT have additional properties
  - channels.telegram.accounts.research: invalid config: must NOT have additional properties
Legacy config keys detected:
  - channels.telegram: channels.telegram.streamMode, channels.telegram.streaming (scalar), chunkMode, blockStreaming, draftChunk, and blockStreamingCoalesce are legacy; use channels.telegram.streaming.{mode,chunkMode,preview.chunk,block.enabled,block.coalesce} instead. Run "openclaw doctor --fix".
  - channels.slack: channels.slack.streamMode, channels.slack.streaming (scalar), chunkMode, blockStreaming, blockStreamingCoalesce, and nativeStreaming are legacy; use channels.slack.streaming.{mode,chunkMode,block.enabled,block.coalesce,nativeTransport} instead. Run "openclaw doctor --fix".
  - channels.slack: channels.slack.streamMode, channels.slack.streaming (scalar), chunkMode, blockStreaming, blockStreamingCoalesce, and nativeStreaming are legacy; use channels.slack.streaming.{mode,chunkMode,block.enabled,block.coalesce,nativeTransport}.
  - channels.telegram: channels.telegram.streamMode, channels.telegram.streaming (scalar), chunkMode, blockStreaming, draftChunk, and blockStreamingCoalesce are legacy; use channels.telegram.streaming.{mode,chunkMode,preview.chunk,block.enabled,block.coalesce}.
  - channels.slack: channels.slack.streamMode, channels.slack.streaming (scalar), chunkMode, blockStreaming, blockStreamingCoalesce, and nativeStreaming are legacy; use channels.slack.streaming.{mode,chunkMode,block.enabled,block.coalesce,nativeTransport}.
  - channels.telegram: channels.telegram.streamMode, channels.telegram.streaming (scalar), chunkMode, blockStreaming, draftChunk, and blockStreamingCoalesce are legacy; use channels.telegram.streaming.{mode,chunkMode,preview.chunk,block.enabled,block.coalesce}.

---

"telegram": {
      "accounts": {
        "main": {
          "botToken": "____",
          "dmPolicy": "pairing",
          "agentId": "main"
        },
        "builder": {
          "botToken": "____",
          "dmPolicy": "pairing",
          "agentId": "builder"
        },
        "cos": {
          "botToken": "____",
          "dmPolicy": "pairing",
          "agentId": "cos"
        },
        "cto": {
          "botToken": "____",
          "dmPolicy": "pairing",
          "agentId": "cto"
        },
        "cio": {
          "botToken": "____",
          "dmPolicy": "pairing",
          "agentId": "cio"
        },
        "research": {
          "botToken": "____",
          "dmPolicy": "pairing",
          "agentId": "research"
        },
        "default": {
          "dmPolicy": "pairing",
          "groupPolicy": "allowlist"
        }
      },
      "configWrites": true,
      "enabled": true,
      "groups": {
        "*": {
          "requireMention": true
        }
      },
      "healthMonitor": {
        "enabled": true
      },
      "linkPreview": true,
      "markdown": {
        "tables": "bullets"
      },
      "streaming": "partial",
      "blockStreaming": false,
      "actions": {
        "sendMessage": true,
        "editMessage": true,
        "reactions": true,
        "createForumTopic": true,
        "deleteMessage": true
      }
    }

---

Log:
Config invalid
File: ~/.openclaw/openclaw.json
Problem:
  - channels.telegram.accounts.main: invalid config: must NOT have additional properties
  - channels.telegram.accounts.builder: invalid config: must NOT have additional properties
  - channels.telegram.accounts.cos: invalid config: must NOT have additional properties
  - channels.telegram.accounts.cto: invalid config: must NOT have additional properties
  - channels.telegram.accounts.cio: invalid config: must NOT have additional properties
  - channels.telegram.accounts.research: invalid config: must NOT have additional properties
Legacy config keys detected:
  - channels.telegram: channels.telegram.streamMode, channels.telegram.streaming (scalar), chunkMode, blockStreaming, draftChunk, and blockStreamingCoalesce are legacy; use channels.telegram.streaming.{mode,chunkMode,preview.chunk,block.enabled,block.coalesce} instead. Run "openclaw doctor --fix".
  - channels.slack: channels.slack.streamMode, channels.slack.streaming (scalar), chunkMode, blockStreaming, blockStreamingCoalesce, and nativeStreaming are legacy; use channels.slack.streaming.{mode,chunkMode,block.enabled,block.coalesce,nativeTransport} instead. Run "openclaw doctor --fix".
  - channels.slack: channels.slack.streamMode, channels.slack.streaming (scalar), chunkMode, blockStreaming, blockStreamingCoalesce, and nativeStreaming are legacy; use channels.slack.streaming.{mode,chunkMode,block.enabled,block.coalesce,nativeTransport}.
  - channels.telegram: channels.telegram.streamMode, channels.telegram.streaming (scalar), chunkMode, blockStreaming, draftChunk, and blockStreamingCoalesce are legacy; use channels.telegram.streaming.{mode,chunkMode,preview.chunk,block.enabled,block.coalesce}.
  - channels.slack: channels.slack.streamMode, channels.slack.streaming (scalar), chunkMode, blockStreaming, blockStreamingCoalesce, and nativeStreaming are legacy; use channels.slack.streaming.{mode,chunkMode,block.enabled,block.coalesce,nativeTransport}.
  - channels.telegram: channels.telegram.streamMode, channels.telegram.streaming (scalar), chunkMode, blockStreaming, draftChunk, and blockStreamingCoalesce are legacy; use channels.telegram.streaming.{mode,chunkMode,preview.chunk,block.enabled,block.coalesce}.
RAW_BUFFERClick to expand / collapse

Bug type

Regression (worked before, now fails)

Beta release blocker

No

Summary

the config "channels.telegram.accounts" has error, when updating from 2026.4.5 to 2026.4.8. and the config still works in the 2026.4.5

here are the err report after running "openclaw gateway restart", causing the whole agent crached

Config invalid
File: ~/.openclaw/openclaw.json
Problem:
  - channels.telegram.accounts.main: invalid config: must NOT have additional properties
  - channels.telegram.accounts.builder: invalid config: must NOT have additional properties
  - channels.telegram.accounts.cos: invalid config: must NOT have additional properties
  - channels.telegram.accounts.cto: invalid config: must NOT have additional properties
  - channels.telegram.accounts.cio: invalid config: must NOT have additional properties
  - channels.telegram.accounts.research: invalid config: must NOT have additional properties
Legacy config keys detected:
  - channels.telegram: channels.telegram.streamMode, channels.telegram.streaming (scalar), chunkMode, blockStreaming, draftChunk, and blockStreamingCoalesce are legacy; use channels.telegram.streaming.{mode,chunkMode,preview.chunk,block.enabled,block.coalesce} instead. Run "openclaw doctor --fix".
  - channels.slack: channels.slack.streamMode, channels.slack.streaming (scalar), chunkMode, blockStreaming, blockStreamingCoalesce, and nativeStreaming are legacy; use channels.slack.streaming.{mode,chunkMode,block.enabled,block.coalesce,nativeTransport} instead. Run "openclaw doctor --fix".
  - channels.slack: channels.slack.streamMode, channels.slack.streaming (scalar), chunkMode, blockStreaming, blockStreamingCoalesce, and nativeStreaming are legacy; use channels.slack.streaming.{mode,chunkMode,block.enabled,block.coalesce,nativeTransport}.
  - channels.telegram: channels.telegram.streamMode, channels.telegram.streaming (scalar), chunkMode, blockStreaming, draftChunk, and blockStreamingCoalesce are legacy; use channels.telegram.streaming.{mode,chunkMode,preview.chunk,block.enabled,block.coalesce}.
  - channels.slack: channels.slack.streamMode, channels.slack.streaming (scalar), chunkMode, blockStreaming, blockStreamingCoalesce, and nativeStreaming are legacy; use channels.slack.streaming.{mode,chunkMode,block.enabled,block.coalesce,nativeTransport}.
  - channels.telegram: channels.telegram.streamMode, channels.telegram.streaming (scalar), chunkMode, blockStreaming, draftChunk, and blockStreamingCoalesce are legacy; use channels.telegram.streaming.{mode,chunkMode,preview.chunk,block.enabled,block.coalesce}.

cconfig:

"telegram": {
      "accounts": {
        "main": {
          "botToken": "____",
          "dmPolicy": "pairing",
          "agentId": "main"
        },
        "builder": {
          "botToken": "____",
          "dmPolicy": "pairing",
          "agentId": "builder"
        },
        "cos": {
          "botToken": "____",
          "dmPolicy": "pairing",
          "agentId": "cos"
        },
        "cto": {
          "botToken": "____",
          "dmPolicy": "pairing",
          "agentId": "cto"
        },
        "cio": {
          "botToken": "____",
          "dmPolicy": "pairing",
          "agentId": "cio"
        },
        "research": {
          "botToken": "____",
          "dmPolicy": "pairing",
          "agentId": "research"
        },
        "default": {
          "dmPolicy": "pairing",
          "groupPolicy": "allowlist"
        }
      },
      "configWrites": true,
      "enabled": true,
      "groups": {
        "*": {
          "requireMention": true
        }
      },
      "healthMonitor": {
        "enabled": true
      },
      "linkPreview": true,
      "markdown": {
        "tables": "bullets"
      },
      "streaming": "partial",
      "blockStreaming": false,
      "actions": {
        "sendMessage": true,
        "editMessage": true,
        "reactions": true,
        "createForumTopic": true,
        "deleteMessage": true
      }
    }

Steps to reproduce

  1. start openclaw 2026.4.5
  2. run "openclaw update" in Terminal and updated to 2026.4.8
  3. after the update finished, the system crashed

Expected behavior

in 2026.4.5, these configs would successfully be recongnized and worked well.

Actual behavior

Gateway aborted: config is invalid. channels.telegram.accounts.main: invalid config: must NOT have additional properties channels.telegram.accounts.builder: invalid config: must NOT have additional properties channels.telegram.accounts.cos: invalid config: must NOT have additional properties channels.telegram.accounts.cto: invalid config: must NOT have additional properties channels.telegram.accounts.cio: invalid config: must NOT have additional properties channels.telegram.accounts.research: invalid config: must NOT have additional properties

OpenClaw version

2026.4.8

Operating system

macOS 26.5

Install method

npm

Model

GLM-5.1

Provider / routing chain

openclaw-GLM coding plan-GLM-5.1

Additional provider/model setup details

No response

Logs, screenshots, and evidence

Log:
Config invalid
File: ~/.openclaw/openclaw.json
Problem:
  - channels.telegram.accounts.main: invalid config: must NOT have additional properties
  - channels.telegram.accounts.builder: invalid config: must NOT have additional properties
  - channels.telegram.accounts.cos: invalid config: must NOT have additional properties
  - channels.telegram.accounts.cto: invalid config: must NOT have additional properties
  - channels.telegram.accounts.cio: invalid config: must NOT have additional properties
  - channels.telegram.accounts.research: invalid config: must NOT have additional properties
Legacy config keys detected:
  - channels.telegram: channels.telegram.streamMode, channels.telegram.streaming (scalar), chunkMode, blockStreaming, draftChunk, and blockStreamingCoalesce are legacy; use channels.telegram.streaming.{mode,chunkMode,preview.chunk,block.enabled,block.coalesce} instead. Run "openclaw doctor --fix".
  - channels.slack: channels.slack.streamMode, channels.slack.streaming (scalar), chunkMode, blockStreaming, blockStreamingCoalesce, and nativeStreaming are legacy; use channels.slack.streaming.{mode,chunkMode,block.enabled,block.coalesce,nativeTransport} instead. Run "openclaw doctor --fix".
  - channels.slack: channels.slack.streamMode, channels.slack.streaming (scalar), chunkMode, blockStreaming, blockStreamingCoalesce, and nativeStreaming are legacy; use channels.slack.streaming.{mode,chunkMode,block.enabled,block.coalesce,nativeTransport}.
  - channels.telegram: channels.telegram.streamMode, channels.telegram.streaming (scalar), chunkMode, blockStreaming, draftChunk, and blockStreamingCoalesce are legacy; use channels.telegram.streaming.{mode,chunkMode,preview.chunk,block.enabled,block.coalesce}.
  - channels.slack: channels.slack.streamMode, channels.slack.streaming (scalar), chunkMode, blockStreaming, blockStreamingCoalesce, and nativeStreaming are legacy; use channels.slack.streaming.{mode,chunkMode,block.enabled,block.coalesce,nativeTransport}.
  - channels.telegram: channels.telegram.streamMode, channels.telegram.streaming (scalar), chunkMode, blockStreaming, draftChunk, and blockStreamingCoalesce are legacy; use channels.telegram.streaming.{mode,chunkMode,preview.chunk,block.enabled,block.coalesce}.

Impact and severity

No response

Additional information

No response

extent analysis

TL;DR

Run "openclaw doctor --fix" to update the legacy config keys and remove any additional properties from the "channels.telegram.accounts" configuration.

Guidance

  • The error message indicates that the "channels.telegram.accounts" configuration has additional properties that are not allowed in the new version.
  • The "openclaw doctor --fix" command can be used to update the legacy config keys and fix the issue.
  • Verify that the "channels.telegram.accounts" configuration does not have any additional properties after running the fix command.
  • Check the OpenClaw documentation for any specific instructions on updating the configuration for version 2026.4.8.

Example

No code snippet is provided as the issue is related to configuration and not code.

Notes

The "openclaw doctor --fix" command may not fix all issues, and manual updates to the configuration may be required. It is recommended to review the OpenClaw documentation and the configuration file after running the fix command to ensure that all issues are resolved.

Recommendation

Apply workaround: Run "openclaw doctor --fix" to update the legacy config keys and remove any additional properties from the "channels.telegram.accounts" configuration. This is the recommended solution as it is a straightforward fix provided by the OpenClaw tool itself.

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

in 2026.4.5, these configs would successfully be recongnized and worked well.

Still need to ship something?

×6

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

Back to top recommendations

TRENDING