#issue

1 messages · Page 1 of 1 (latest)

obsidian pythonBOT
sudden idolBOT
#

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

obsidian pythonBOT
scenic sphinxBOT
#

Let me pin down the Discord schema exactly, then I’ll give you the minimal config diff that should unblock startup.

#

I found the exact schema. Your config is mixing two different systems: Discord guild allowlisting and multi-agent routing. That’s why it blows up.

#

Yep, I found it.

Your config is failing because you’re using Discord guild config for routing, but in 2026.4.20 that block is only for allowlisting / mention / per-channel behavior, not for choosing an agentId.

What is invalid

Under:

channels.discord.guilds.1494879742501851257

these keys are not allowed:

  • forums
  • channels.<id>.agentId
  • channels.<id>.role
#

Also invalid in agents:

  • agents.defaults.approvals → approvals is top-level
  • agents.list[].workdir → renamed to workspace
  • agents.list[].files → remove it, there is no current replacement key

Minimal fix

1. Replace the broken Discord routing with bindings

Keep guilds only for allowlisting, then route agents with top-level bindings.

{
#
  "channels": {
    "discord": {
      "groupPolicy": "allowlist",
      "guilds": {
        "1494879742501851257": {}
      }
    }
  },
  "bindings": [
    {
      "agentId": "navigator",
      "match": {
        "channel": "discord",
        "guildId": "1494879742501851257",
        "peer": { "kind": "channel", "id": "1496200429531561984" }
#
      }
    },
    {
      "agentId": "hunter",
      "match": {
        "channel": "discord",
        "guildId": "1494879742501851257",
        "peer": { "kind": "channel", "id": "1496313706458644660" }
      }
    },
    {
      "agentId": "architect",
      "match": {
        "channel": "discord",
        "guildId": "1494879742501851257",
#
        "peer": { "kind": "channel", "id": "1496313707674730587" }
      }
    },
    {
      "agentId": "navigator",
      "match": {
        "channel": "discord",
        "guildId": "1494879742501851257",
        "peer": { "kind": "channel", "id": "1496200429644681386" }
      }
    },
    {
      "agentId": "navigator",
      "match": {
        "channel": "discord",
#
        "guildId": "1494879742501851257",
        "peer": { "kind": "channel", "id": "1496200430080753875" }
      }
    }
  ]
}

That is the modern equivalent of your old forums / channels -> agentId routing.

For forum posts, this should work because routing supports parent-peer thread inheritance.


2. Fix agents

#

Change each agent like this:

{
  "id": "navigator",
  "workspace": "/path/to/navigator-workspace"
}

So:

  • workdir → workspace
  • delete files

If files was being used to inject context, move that into the agent workspace via AGENTS.md, SOUL.md, USER.md, TOOLS.md, etc.


#

3. Fix approvals

Move this:

"agents": {
  "defaults": {
    "approvals": { ... }
  }
}

to top-level:

"approvals": { ... }
#

If you want the gateway to boot first, you can also temporarily remove that block and add it back later.


Important nuance

Your old:

"role": "feed"
"role": "system"

has no direct schema equivalent there.

If you meant “label this Discord channel’s behavior”, use:

#
  • a separate agent, or
  • channels.discord.guilds.<guildId>.channels.<channelId>.systemPrompt

But role is not a valid Discord channel config key.


Not the problem

These are warnings, not the startup blocker:

  • openclaw-web-search plugin warning

You should clean that up later with plugins.allow, but it is not why config validation fails.


naive glacier
#

eb-search/index.ts)
Error: Config validation failed: channels.discord.guilds.1494879742501851257: invalid config: must NOT have additional properties
miya@Miyas-Mac-mini ~ % nano ~/.openclaw/openclaw.json
miya@Miyas-Mac-mini ~ % openclaw gateway restart
Invalid config at /Users/miya/.openclaw/openclaw.json:\n- agents.defaults: Unrecognized key: "approvals"

  • agents.list.1: Unrecognized keys: "workdir", "files"
  • agents.list.2: Unrecognized keys: "workdir", "files"
  • agents.list.3: Unrecognized keys: "workdir", "files"

🦞 OpenClaw 2026.4.20 (115f05d) — I don't just autocomplete—I auto-commit (emotionally), then ask you to review (logically).

Config invalid
File: ~/.openclaw/openclaw.json
Problem:

  • agents.defaults: Unrecognized key: "approvals"
  • agents.list.1: Unrecognized keys: "workdir", "files"
  • agents.list.2: Unrecognized keys: "workdir", "files"
  • agents.list.3: Unrecognized keys: "workdir", "files"

Run: openclaw doctor --fix
Gateway aborted: config is invalid.
agents.defaults: Unrecognized key: "approvals"
agents.list.1: Unrecognized keys: "workdir", "files"
agents.list.2: Unrecognized keys: "workdir", "files"
agents.list.3: Unrecognized keys: "workdir", "files"
Fix the config and retry, or run "openclaw doctor" to repair.
miya@Miyas-Mac-mini ~ % nano ~/.openclaw/openclaw.json
miya@Miyas-Mac-mini ~ % openclaw gateway restart
Failed to read config at /Users/miya/.openclaw/openclaw.json SyntaxError: JSON5: invalid character ',' at 249:4
at syntaxError (/opt/homebrew/lib/node_modules/openclaw/node_modules/json5/lib/parse.js:1110:17)
at invalidChar (/opt/homebrew/lib/node_modules/openclaw/node_modules/json5/lib/parse.js:1055:12)
at Object.end (/opt/homebrew/lib/node_modules/openclaw/node_modules/json5/lib/parse.js:704:15)
at Object.default (/opt/homebrew/lib/node_modules/openclaw/node_modules/json5/lib/parse.js:168:37)
at lex (/opt/homebrew/lib/node_modules/openclaw/node_modules/json5/lib/parse.jsđź’Ż42)
at Object.parse (/opt/homebrew/lib/node_modules/openclaw/node_modules/json5/lib/parse.js:25:17)
at Object.loadConfig (file:///opt/homebrew/lib/node_modules/openclaw/dist/io-B-_iUGdq.js:19046:24)
at readCliBannerTaglineMode (file:///opt/homebrew/lib/node_modules/openclaw/dist/banner-CSXRvqRl.js:13:51)
at resolveTaglineMode (file:///opt/homebrew/lib/node_modules/openclaw/dist/banner-CSXRvqRl.js:291:9)
at formatCliBannerLine (file:///opt/homebrew/lib/node_modules/openclaw/dist/banner-CSXRvqRl.js:300:9) {
lineNumber: 249,
columnNumber: 4
}

🦞 OpenClaw 2026.4.20 (115f05d) — If you're lost, run doctor; if you're brave, run prod; if you're wise, run tests.

Config invalid
File: ~/.openclaw/openclaw.json
Problem:

  • <root>: JSON5 parse failed: SyntaxError: JSON5: invalid character ',' at 249:4

Run: openclaw doctor --fix
Gateway aborted: config is invalid.
<root>: JSON5 parse failed: SyntaxError: JSON5: invalid character ',' at 249:4

scenic sphinxBOT
#

Nice, this is progress. You’re past the schema errors, now it’s just a JSON5 syntax issue.

invalid character ',' at 249:4 usually means you ended up with a dangling standalone comma after deleting the old block.

Most likely one of these happened:

},
,
"bindings": [

or

]
#
,
"channels": {

or a double comma like:

},
,
}

Fast fix

In nano, jump straight there:

#
  • Ctrl+_
  • type 249
  • Enter

Then look for a line that is basically just a comma, or a place where you now have ,,.

What it should look like

Between top-level sections, you want exactly one comma:

"channels": {
  "discord": {
    "groupPolicy": "allowlist",
    "guilds": {
      "1494879742501851257": {}
#
    }
  }
},
"bindings": [
  ...
],
"agents": {
  ...
}

Not:

"channels": { ... },