#my subagent system seems to have a bug

1 messages · Page 1 of 1 (latest)

old orbit
#

[System Message] [sessionId: 142ee685-28e1-4ac3-bbfb-ec6a20ca4fb1] A subagent task "读取deep-research技能文档" just failed: 400 [] is too short - 'tools'.

Result:
(no output)

Stats: runtime 1s • tokens 0 (in 0 / out 0)

A completed subagent task is ready for user delivery. Convert the result above into your normal assistant voice and send that user-facing update now. Keep this internal context private (don't mention system/log/stats/session details or announce type), and do not copy the system message verbatim. Reply ONLY: NO_REPLY if this exact result was already delivered to the user in this same turn.

sand coralBOT
#

To help others find answers, you can mark your question as solved via Right click solution message -> Apps -> ✅ Mark Solution

tepid sorrelBOT
#

The “read deep-research skill doc” subagent didn’t actually start — it was rejected immediately because it was launched with an empty tools list (effectively “no tools allowed”).

In OpenClaw this usually happens when your tools.allow resolves to [] because:

  • the allowlist is missing, or
  • it contains unknown entries that get ignored (common gotcha: entries like discord.message / web.fetch are not valid tool names, so you end up with nothing allowed).

What to check/fix:

  • Find your tools.allow (global or per-agent) and make sure it includes at least one real tool or tool-group, e.g. group:messaging, group:web, or specific tools like message, web_search, web_fetch.
  • Restart the gateway after changing config.

If you paste:

  1. openclaw --version
  2. the tools.allow section from your config (redact tokens)
    …I can point out exactly what’s being ignored and what to replace it with.
old orbit
#

admin@iZ0xi8ace9rtwipaiw5642Z:~$ openclaw --version
2026.2.17

"tools": {
"allow": [
"cron",
"sessions_spawn",
"web_search",
"web_fetch"
],

tepid sorrelBOT
#

That tools.allow snippet looks fine by itself, but there’s one gotcha in OpenClaw’s tool filtering:

tools.allow can’t “add” tools that aren’t already present in the base tools.profile. It only further restricts whatever the profile allowed.

So if your config has (anywhere):

  • tools.profile: "minimal" (only session_status), or
  • tools.profile: "messaging" (this is the common default)

…then none of cron, sessions_spawn, web_search, web_fetch are in the base set, and the intersection becomes empty → OpenClaw ends up sending tools: [] → you see [] is too short - 'tools'.

What to do:

  1. Check/paste your tools.profile (and also any agents.list[].tools.profile override).
  2. Fix by setting the base profile to allow those tools, e.g.:
old orbit
tepid sorrelBOT
#

对,这个现象基本就是两件事叠加导致的:

  1. 子 agent 根本拿不到“文件读取能力”read / group:fs 不在可用工具里),所以它不可能去打开 SKILL.md,只能靠 frontmatter 里的 description + 自己脑补。
  2. 你之前那个 [] is too short - 'tools' 还说明:子 agent 甚至可能被工具策略过滤到 一个工具都不剩(常见原因是 tools.profile 还是 minimalmessaging,而 tools.allow 不能“加工具”,只能在 profile 的基础上继续缩小,最后交集变成空)。

你可以这样修:

A. 先确保 profile 不把工具集压扁

openclaw.json 里把 base profile 设成 full(或直接删掉 profile),再用 allow 做白名单:

{
  tools: {
    profile: "full",
    allow: ["group:fs", "web_search", "web_fetch", "sessions_spawn", "cron"],
  },
#
}

关键点:要加上 group:fs(或至少 read,否则永远读不到 SKILL.md

B. 确认这个 skill 对“子 agent 所在的 workspace”是可见的

多 agent / subagent 时,skill 可能只装在某个 workspace 里,子 agent 跑在另一个 workspace 就看不到。最稳的是放到共享目录:

  • ~/.openclaw/skills(所有 agent 都能看到)
  • 或者用 skills.load.extraDirs 指到一个共享 skills 目录

C. 用 CLI 验证 skill 是否真的被加载/eligible

在 gateway 那台机器上跑: