openclaw - ✅(Solved) Fix [Feature]: Change default: nativeSkills: "auto" → "none" to avoid command quota exhaustion [2 pull requests, 4 comments, 3 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#49273Fetched 2026-04-08 00:57:03
View on GitHub
Comments
4
Participants
3
Timeline
11
Reactions
0
Timeline (top)
commented ×4cross-referenced ×2referenced ×2labeled ×1

nativeSkills: "auto" registers all skills as platform commands, exhausting Telegram/Discord 100-command limit on normal installs.

Error Message

With 42+ ready skills (standard bundled + a few ClawHub installs), the gateway fails to start because setMyCommands exceeds Telegram's 100-command hard limit. Error message is unclear — easily confused with network issues. Users must debug blindly before discovering the root cause is command quota exhaustion.

  1. Manually setting nativeSkills: "none" after hitting the error — works but requires users to diagnose the issue first. Consequence: Complete gateway failure, 30+ minutes debugging a misleading error

Root Cause

With 42+ ready skills (standard bundled + a few ClawHub installs), the gateway fails to start because setMyCommands exceeds Telegram's 100-command hard limit. Error message is unclear — easily confused with network issues. Users must debug blindly before discovering the root cause is command quota exhaustion.

Fix Action

Fix / Workaround

Reproduced on OpenClaw 2026.2.21-2 with 42 ready skills (85 total). Gateway logs show "telegram setMyCommands failed" and "command sync failed". Workaround confirmed: setting nativeSkills: "none" resolves immediately.

PR fix notes

PR #49849: fix(config): change nativeSkills default from "auto" to false

Description (problem / solution / changelog)

What

Flips the commands.nativeSkills default from "auto" to false.

The auto default registers every installed skill as a native platform command on Discord and Telegram. That works fine with a handful of skills, but once you hit 42+ (standard bundled set plus a few ClawHub installs), Telegram's 100-command hard cap kills the gateway startup. The error looks like a network problem, so users end up debugging the wrong thing for hours.

Changing the default to false means fresh installs won't hit this wall. Existing users who want the native menus back just add one line:

{ commands: { nativeSkills: "auto" } }

Related prior work - this issue has been circling for a while:

  • #6172 proposed selective native command registration (closed)
  • #4292 tried a nativeSkills whitelist approach for Telegram (closed)
  • #10875 spawned 7 PRs trying to deduplicate skill commands in the Telegram menu
  • #22558 fixed an earlier schema default alignment issue

Changes

src/config/zod-schema.session.ts - default value in both the field schema and the factory src/config/types.messages.ts - JSDoc annotation src/config/schema.help.ts - help text now explains why it's off by default src/config/commands.test.ts - 5 new tests covering schema default + explicit override paths docs/tools/slash-commands.md - config example + explanation docs/.generated/config-baseline.json + .jsonl - regenerated CHANGELOG.md

How the resolution works

resolveNativeCommandSetting in src/config/commands.ts checks provider-level setting first, then falls back to the global setting. With false as the global default, it short-circuits to disabled before reaching resolveAutoDefault. Users who set nativeSkills: "auto" or true explicitly still get the old behavior - nothing changed there.

Testing

  • src/config/commands.test.ts - 13/13 (was 8, added 5 for schema defaults)
  • src/security/audit.test.ts - 65/65
  • src/config/schema - 51/51
  • pnpm check clean, pnpm tsgo clean

CI failures in contracts/channels/extensions are from the Plugin SDK refactor, not this PR. None of the changed files touch those paths.

Fixes #49273

cc @obviyus - you offered to take a look, and this is squarely in your domain. Would appreciate your eyes on whether the default flip makes sense or if you'd rather see a warning/deprecation approach first.

Changed files

  • CHANGELOG.md (modified, +1/-0)
  • docs/.generated/config-baseline.json (modified, +568/-70)
  • docs/.generated/config-baseline.jsonl (modified, +67/-25)
  • docs/tools/slash-commands.md (modified, +3/-2)
  • src/config/commands.test.ts (modified, +38/-0)
  • src/config/schema.help.ts (modified, +1/-1)
  • src/config/types.messages.ts (modified, +1/-1)
  • src/config/zod-schema.session.ts (modified, +2/-2)

PR #50191: Improve native command overflow warnings to mention nativeSkills config

Description (problem / solution / changelog)

Summary

  • When Discord/Telegram hit their 100-command platform limit, warning messages now point users to commands.nativeSkills: false (or per-provider channels.<provider>.commands.nativeSkills: false) instead of the nuclear commands.native: false which disables all native commands
  • Updated all four overflow/retry warning paths across Discord and Telegram to include actionable config guidance
  • Updated test assertion to match new log message

Context

Addresses #49273 — rather than changing the default from "auto" to false (which would silently break existing users), this takes the reviewer-recommended approach of improving the overflow handling messages so users can self-diagnose and apply the targeted fix.

Both Discord and Telegram already handle command overflow gracefully (Discord drops skill commands and keeps /skill fallback; Telegram pre-truncates and has a retry loop). The actual problem was that the log messages either pointed to the wrong config key or gave vague advice.

Test plan

  • pnpm test -- extensions/telegram/src/bot-native-command-menu.test.ts — 11/11 pass
  • pnpm test -- src/config/commands.test — 8/8 pass
  • Verify Discord overflow warning appears correctly with 100+ skills installed
  • Verify Telegram pre-truncation warning appears correctly with 100+ skills installed

🤖 Generated with Claude Code

Changed files

  • extensions/discord/src/monitor/provider.ts (modified, +2/-2)
  • extensions/telegram/src/bot-native-command-menu.test.ts (modified, +1/-1)
  • extensions/telegram/src/bot-native-command-menu.ts (modified, +4/-4)
  • extensions/telegram/src/bot-native-commands.ts (modified, +2/-3)
RAW_BUFFERClick to expand / collapse

Summary

nativeSkills: "auto" registers all skills as platform commands, exhausting Telegram/Discord 100-command limit on normal installs.

Problem to solve

With 42+ ready skills (standard bundled + a few ClawHub installs), the gateway fails to start because setMyCommands exceeds Telegram's 100-command hard limit. Error message is unclear — easily confused with network issues. Users must debug blindly before discovering the root cause is command quota exhaustion.

Proposed solution

Change default from "auto" to "none" in commands.nativeSkills. Agents discover capabilities via system prompt, not platform command menus. Users who want /command registration can explicitly opt-in.

Alternatives considered

  1. Manually setting nativeSkills: "none" after hitting the error — works but requires users to diagnose the issue first.
  2. Selectively disabling individual skills — doesn't scale, the default should not require per-skill management to avoid a platform limit.

Impact

Affected: All users with 40+ ready skills using Telegram or Discord channels Severity: High — gateway fails to start, blocks all messaging Frequency: Deterministic once skill count exceeds ~100 Consequence: Complete gateway failure, 30+ minutes debugging a misleading error

Evidence/examples

Reproduced on OpenClaw 2026.2.21-2 with 42 ready skills (85 total). Gateway logs show "telegram setMyCommands failed" and "command sync failed". Workaround confirmed: setting nativeSkills: "none" resolves immediately.

Additional information

Telegram limit: 100 commands (flat). Discord limit: 100 global slash commands + 8000 char cap. OpenClaw positions as AI Agent Gateway — command registration is a legacy bot pattern, not the right default for agent-driven interaction.

Forward-looking context

The AI agent ecosystem is moving toward multi-skill composition as the norm. A typical power user today runs 40-50 skills; as ClawHub grows and MCP integrations proliferate, 100+ skills per gateway will be standard within months.

The current default silently maps every skill to a platform command — a 1:1 coupling that guarantees quota exhaustion at scale. This is not an edge case; it is the inevitable trajectory.

The root issue is architectural: platform command APIs (Telegram BotCommand, Discord Slash Commands) were designed for single-purpose bots with 10-20 human-facing actions. They are not capability registries for AI agents. OpenClaw, as an Agent Gateway, should decouple capability discovery (system prompt injection) from command registration (platform UI) by default.

Changing the default now avoids a class of support issues that will only grow as the skill ecosystem scales.

extent analysis

Fix Plan

To resolve the issue of exceeding the 100-command limit on Telegram and Discord, we will change the default value of nativeSkills from "auto" to "none". This change will prevent all skills from being registered as platform commands by default.

Steps:

  • Update the configuration file to set nativeSkills to "none" by default.
  • Provide an option for users to explicitly opt-in to register skills as platform commands if needed.

Example Code:

# configuration file (e.g., config.yaml)
commands:
  nativeSkills: "none"

Alternatively, you can add a flag or option to allow users to opt-in to register skills as platform commands:

# configuration file (e.g., config.yaml)
commands:
  nativeSkills: "none"
  registerSkillsAsCommands: false

Users can then override this setting to true if they want to register skills as platform commands.

Verification

To verify that the fix worked, start the gateway and check the logs for any errors related to command registration. You can also test the gateway with a large number of skills (e.g., 42+) to ensure that it starts successfully and does not exceed the command limit.

Extra Tips

  • Consider adding a warning or notification to the user interface to inform users about the potential issue and the need to opt-in to register skills as platform commands.
  • Review the documentation to ensure that it reflects the new default behavior and provides clear instructions for users who want to register skills as platform commands.

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