openclaw - ✅(Solved) Fix [Bug]: Regression (2026.5.5): Plugin tools in tools.alsoAllow filtered out of cron isolated sessions [1 pull requests, 1 comments, 2 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#80186Fetched 2026-05-11 03:17:53
View on GitHub
Comments
1
Participants
2
Timeline
4
Reactions
3
Author
Timeline (top)
closed ×1commented ×1cross-referenced ×1labeled ×1

After upgrading from pre-2026.5.5 to 2026.5.5, plugin-registered agent tools (via api.registerTool) that are listed in agents.list[].tools.alsoAllow are no longer available in sessionTarget: "isolated" cron runs. The same tools work correctly in regular chat sessions.

Root Cause

The "honor narrow runtime tool allowlists" change (#77519, #77532) tightened the tool-construction logic for embedded runners (used by cron isolated sessions and subagents). The new logic appears to filter out plugin-registered tools for channel-less sessions, even when alsoAllow explicitly opts in to those tools.

Key observations:

  • wecom_mcp is a plugin tool (registered via api.registerTool in the wecom plugin's index.js), not a core tool.
  • It works in regular chat sessions (telegram, wecom direct) where channel context is available.
  • It fails in cron isolated sessions which have no channel context.
  • The plugin version (2026.4.8) was not updated between the working and broken states.
  • The tools.alsoAllow config was not changed.

This suggests the embedded runner's tool-family construction now filters out plugin tools that it cannot resolve in a channel-less context, even when alsoAllow explicitly opts in to those tools.

Fix Action

Workaround

Using sessions_send to delegate wecom_mcp calls to a wecom-channel-bound session works as a temporary workaround.

PR fix notes

PR #80225: fix(plugins/tools): bypass availability check for explicitly allowed tools in isolated sessions

Description (problem / solution / changelog)

Summary

When plugin tools are explicitly listed in tools.alsoAllow, bypass the availability/auth check in resolvePluginToolRuntimePluginIds so isolated cron and subagent runs can use opted-in plugin tools even without channel context.

Problem

Plugin tools registered via api.registerTool and listed in agents.list[].tools.alsoAllow were unavailable in sessionTarget: "isolated" cron runs, but worked correctly in regular chat sessions.

Root cause: resolvePluginToolRuntimePluginIds was calling hasManifestToolAvailability for all tools, which requires auth/config availability checks. In isolated cron sessions (no channel context), these checks fail even for explicitly opted-in tools.

Fix

  • Track when allowlist has explicit tool names (not wildcard/group:plugins)
  • For explicitly allowed tools, bypass hasManifestToolAvailability
  • For wildcard/group:plugins, preserve existing availability check behavior

Changes

  • src/plugins/tools.ts: modify resolvePluginToolRuntimePluginIds to detect explicit tool allowlists
  • src/plugins/tools.optional.test.ts: add test coverage for explicit allowlist bypass and wildcard rejection
  • CHANGELOG.md: document fix

Test Plan

Added 2 new test cases:

  1. loads explicitly allowed plugin tools even when manifest metadata has no available signal (#80186) - verifies bypass for explicitly allowed tools without auth evidence
  2. does not load plugin tools via wildcard when manifest metadata has no available signal - verifies wildcard/group:plugins still requires availability check

Fixes #80186

Changed files

  • CHANGELOG.md (modified, +1/-0)
  • src/plugins/tools.optional.test.ts (modified, +82/-0)
  • src/plugins/tools.ts (modified, +22/-1)

Code Example

{
     "agents": {
       "list": [{
         "id": "main",
         "tools": {
           "alsoAllow": ["wecom_mcp"]
         }
       }]
     }
   }

---

{
     "sessionTarget": "isolated",
     "payload": {
       "kind": "agentTurn",
       "message": "Use wecom_mcp to create a document..."
     }
   }

---
RAW_BUFFERClick to expand / collapse

Bug type

Regression (worked before, now fails)

Beta release blocker

Yes

Summary

Summary

After upgrading from pre-2026.5.5 to 2026.5.5, plugin-registered agent tools (via api.registerTool) that are listed in agents.list[].tools.alsoAllow are no longer available in sessionTarget: "isolated" cron runs. The same tools work correctly in regular chat sessions.

Regression Point

Commit(s) #77519, #77532 (2026.5.4 changelog entry, shipped in 2026.5.5):

Agents/tools: honor narrow runtime tool allowlists when constructing embedded-runner tool families and bundled MCP/LSP runtimes, so cron/subagent runs that request tools such as update_plan, browser, x_search, channel login tools, or group:plugins no longer start with missing tools or unrelated bootstrap work.

Environment

  • OpenClaw version: 2026.5.5 (b1abf9d)
  • Plugin: @wecom/[email protected] (unchanged across working/broken versions)
  • OS: macOS 15 (arm64)
  • Node: v25.5.0

Reproduction

  1. Install and enable a plugin that registers an agent tool via api.registerTool(). In this case: @wecom/wecom-openclaw-plugin, which registers wecom_mcp.

  2. Configure the agent to allow the plugin tool:

    {
      "agents": {
        "list": [{
          "id": "main",
          "tools": {
            "alsoAllow": ["wecom_mcp"]
          }
        }]
      }
    }
  3. Create an isolated cron job whose payload message instructs the agent to use wecom_mcp:

    {
      "sessionTarget": "isolated",
      "payload": {
        "kind": "agentTurn",
        "message": "Use wecom_mcp to create a document..."
      }
    }
  4. Expected: The cron run has wecom_mcp available and can call it.

  5. Actual: The cron run reports wecom_mcp is not available. Cron status shows tool-policy failure.

Timeline (confirmed from cron status files)

DateOpenClaw VersionCron Runwecom_mcp Available?
2026-05-05pre-2026.5.502:00 CST�œ… Yes
2026-05-06pre-2026.5.502:00 CST�œ… Yes (upgrade happened later that evening at ~22:19 CST)
2026-05-072026.5.502:00 CST�Œ No

Analysis

The "honor narrow runtime tool allowlists" change (#77519, #77532) tightened the tool-construction logic for embedded runners (used by cron isolated sessions and subagents). The new logic appears to filter out plugin-registered tools for channel-less sessions, even when alsoAllow explicitly opts in to those tools.

Key observations:

  • wecom_mcp is a plugin tool (registered via api.registerTool in the wecom plugin's index.js), not a core tool.
  • It works in regular chat sessions (telegram, wecom direct) where channel context is available.
  • It fails in cron isolated sessions which have no channel context.
  • The plugin version (2026.4.8) was not updated between the working and broken states.
  • The tools.alsoAllow config was not changed.

This suggests the embedded runner's tool-family construction now filters out plugin tools that it cannot resolve in a channel-less context, even when alsoAllow explicitly opts in to those tools.

Possible Fix Direction

When constructing tool families for embedded runners (cron isolated / subagent), the alsoAllow list should be treated as an explicit opt-in that overrides channel-based availability checks for plugin tools. A plugin tool that is:

  1. Successfully registered at Gateway startup
  2. Listed in the agent's tools.alsoAllow

should be available in all session types, not just channel-bound sessions.

Workaround

Using sessions_send to delegate wecom_mcp calls to a wecom-channel-bound session works as a temporary workaround.

Steps to reproduce

  1. Install and enable @wecom/wecom-openclaw-plugin (or any plugin that registers an agent tool via api.registerTool()). In this case the plugin registers wecom_mcp.

  2. Configure the agent to allow the plugin tool via alsoAllow: { "agents": { "list": [{ "id": "main", "tools": { "alsoAllow": ["wecom_mcp"] } }] } }

  3. Create an isolated cron job whose payload instructs the agent to use wecom_mcp: { "sessionTarget": "isolated", "payload": { "kind": "agentTurn", "message": "Use wecom_mcp to create a document..." } }

  4. Wait for the cron to run (or trigger manually with openclaw cron run <jobId>).

Expected behavior

The cron isolated run should have wecom_mcp available as a callable tool, since:

• The plugin successfully registers the tool at Gateway startup • The agent's tools.alsoAllow explicitly opts in to wecom_mcp • The tool works correctly in regular chat sessions (telegram, wecom direct)

Actual behavior

The cron isolated run reports wecom_mcp is not available. The tool is filtered out during embedded-runner tool-family construction, even though alsoAllow explicitly lists it. Cron status records a tool-policy failure.

Confirmed timeline from cron status files:

DateOpenClaw Versionwecom_mcp Available?
2026-05-05pre-2026.5.5✅ Yes
2026-05-06pre-2026.5.5✅ Yes (upgraded to 2026.5.5 at ~22:19 CST)
2026-05-072026.5.5❌ No
Root cause: #77519/#77532 ("honor narrow runtime tool allowlists") tightened embedded-runner tool filtering. Plugin tools that require channel context for resolution are now filtered out of channel-less isolated cron sessions, even when alsoAllow explicitly opts in.

Workaround: Using sessions_send to delegate wecom_mcp calls to a wecom-channel-bound session works.

Environment: OpenClaw 2026.5.5 (b1abf9d) · plugin @wecom/[email protected] · macOS 15 arm64 · Node v25.5.0

OpenClaw version

2026.5.5

Operating system

MACOS 16

Install method

No response

Model

glm5.1

Provider / routing chain

openclaw->glm

Additional provider/model setup details

No response

Logs, screenshots, and evidence

Impact and severity

No response

Additional information

No response

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

The cron isolated run should have wecom_mcp available as a callable tool, since:

• The plugin successfully registers the tool at Gateway startup • The agent's tools.alsoAllow explicitly opts in to wecom_mcp • The tool works correctly in regular chat sessions (telegram, wecom direct)

Still need to ship something?

×6

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

Back to top recommendations

TRENDING