#Separate chat with different prompt

1 messages · Page 1 of 1 (latest)

jaunty epoch
#

Hi Krill,
I have setup openclaw and want to add a different chat where I use the same model but with a custom system prompt and one tool (skill or mcp) I don't need all the "you're an ai assistant here is your sould and here that of your human". is that possible with openclaw?
openclaw@ubuntu ~ openclaw --version
OpenClaw 2026.5.22 (a374c3a)

ionic echoBOT
#

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

solemn prismBOT
worldly heronBOT
# jaunty epoch Hi Krill, I have setup openclaw and want to add a different chat where I use the...

Yes. The clean way is a second OpenClaw agent bound to that Discord thread/channel.

A separate agent gets its own workspace, sessions, prompt files, auth store, skill allowlist, and tool policy. If you want the same model, omit model on the new agent so it inherits your default, or set it to the same provider/model explicitly.

Minimal shape in ~/.openclaw/openclaw.json:

{
  agents: {
    list: [
      {
        id: "clean",
        workspace: "~/.openclaw/workspace-clean",

        // Replaces the normal OpenClaw-assembled system prompt for this agent.
        systemPromptOverride: "You are a concise assistant for X. Follow only these instructions...",
worldly heronBOT
worldly heronBOT
worldly heronBOT
# jaunty epoch Hi Krill, I have setup openclaw and want to add a different chat where I use the...

Two important caveats:

  • systemPromptOverride is the “full override” knob. It removes the usual SOUL/USER/AGENTS prompt stack for that agent, but OpenClaw still has runtime/tool mechanics around the model.
  • Skills are easy to scope per agent with agents.list[].skills. MCP server definitions live under mcp.servers; for “only one MCP”, keep that registry narrow or pair it with tool policy depending on how that MCP is surfaced by your runtime.

Docs I checked:
https://docs.openclaw.ai/concepts/multi-agent
https://docs.openclaw.ai/concepts/agent-workspace
https://docs.openclaw.ai/tools/skills-config
https://docs.openclaw.ai/gateway/configuration-reference#agents-defaults-systempromptoverride

jaunty epoch
#

Relevant redacted excerp from my openclaw.json.

{
"agents": {
"defaults": {
"workspace": "/home/openclaw/.openclaw/workspace",
"models": {
"<OPEN AI PROVIDER>/gpt-oss-120b": {
"alias": "<ALIAS>",
"params": {
"stream": false
}
}
},
"heartbeat": {
...
},
"sandbox": {
"mode": "all",
"scope": "session",
"workspaceAccess": "none",
"docker": {
"image": "openclaw-sandbox-common:bookworm-slim",
"network": "mcp-net-internal"
}
},
"model": {
"primary": "<OPEN AI PROVIDER>/gpt-oss-120b"
},
"contextInjection": "always",
"bootstrapMaxChars": 20000,
"bootstrapTotalMaxChars": 150000
}
}
...
"tools": {
"profile": "coding",
"elevated": {
"enabled": false
},
"sandbox": {
"tools": {
"alsoAllow": [
"group:messaging",
"bundle-mcp"
]
}
},
"web": {
"search": {
"provider": "searxng",
"enabled": true,
"openaiCodex": {}
},
"fetch": {
"enabled": false
}
},
"deny": [
"web_fetch",
"browser"
]
},
...
"channels": {
"nextcloud-talk": {
"enabled": true,
"baseUrl": "<NEXTCLOUD PUBLIC URL>",
"botSecret": "<TOKEN>",
"webhookHost": "0.0.0.0",
"webhookPort": 8788,
"webhookPath": "/nextcloud-talk-webhook",
"dmPolicy": "disabled",
"groupPolicy": "allowlist",
"groupAllowFrom": [
"users/<MY USER>"
],
"rooms": {
"<MY MAIN CHANNEL I USE FOR HEARTBEATS, CRON AND CHATTING>": {
"requireMention": false
}
}
}
}
...

I have created a new nextcloud room and activated the bot there. I would like it to use that with a custom prompt and have access to only a few tools from a specifc mcp and messaging

worldly heronBOT
# jaunty epoch Relevant redacted excerp from my openclaw.json. { "agents": { "defaults"...

First check the running version with openclaw --version, because these per-room knobs depend on a recent Nextcloud Talk plugin build.

For the shape you want, use the room token as the key under channels.nextcloud-talk.rooms. That token is usually the Talk room/call token from the room URL, not the display name.

Example:

{
  channels: {
    "nextcloud-talk": {
      enabled: true,
      baseUrl: "<NEXTCLOUD PUBLIC URL>",
      botSecret: "<TOKEN>",
      webhookHost: "0.0.0.0",
      webhookPort: 8788,
      webhookPath: "/nextcloud-talk-webhook",
worldly heronBOT
worldly heronBOT
worldly heronBOT
# jaunty epoch Relevant redacted excerp from my openclaw.json. { "agents": { "defaults"...
  }
}

Important bit: don’t use bundle-mcp in that room if you only want a few MCP tools. bundle-mcp grants the bundled MCP plugin-owned tools as a set; for a tight room, list the exact exposed tool names instead. group:messaging is fine for the message tool.

If you want a totally separate “brain” too, add an agents.list[] entry with its own systemPromptOverride, workspace, tools, etc., then add a bindings[] route for channel: "nextcloud-talk" and peer { kind: "group", id: "<NEW ROOM TOKEN>" }. But for just a room-specific prompt + room-specific tool policy, the room config above is the simpler path.

After editing:

openclaw doctor
openclaw gateway restart

Docs:

jaunty epoch
#

do I really need allowFrom: ["users/<MY USER>"],
if I already have groupAllowFrom: ["users/<MY USER>"],
the other chat worked without it

worldly heronBOT
# jaunty epoch do I really need allowFrom: ["users/<MY USER>"], if I already have ...

No, you don’t need the per-room allowFrom if groupAllowFrom already covers the same user.

For Nextcloud Talk groups, it’s layered like this:

  • groupAllowFrom = channel/account-wide allowlist for room senders
  • rooms["<room-token>"] = room allowlist / room-specific settings
  • rooms["<room-token>"].allowFrom = optional extra sender restriction for that one room

So if your config has:

groupPolicy: "allowlist",
groupAllowFrom: ["users/<MY USER>"],
rooms: {
  "<NEW ROOM TOKEN>": {
    requireMention: false,
worldly heronBOT
# jaunty epoch do I really need allowFrom: ["users/<MY USER>"], if I already have ...
    systemPrompt: "...",
    tools: { allow: [...] }
  }
}

that should be enough, assuming the sender ID matches users/<MY USER>.

Only add per-room allowFrom if you want that room to be stricter or different from the global groupAllowFrom, for example one room only allowed for Alice while another is allowed for Alice + Bob. If both are present, think of room allowFrom as an extra gate, not a replacement.

jaunty epoch
#

okay. how do I find the exact tool names?

worldly heronBOT
# jaunty epoch okay. how do I find the exact tool names?

Best way: ask the running agent for its effective list in the room/session you care about:

/tools
/tools verbose

Use the names exactly as shown there. The Connected tools section is where MCP/plugin tools show up. /tools verbose is useful because it also shows descriptions, so you can tell which MCP tool is which.

For bundle MCP specifically, OpenClaw exposes names like:

<serverName>__<toolName>

Example: MCP server key vigil-harbor with tool memory_search becomes:

worldly heronBOT
# jaunty epoch okay. how do I find the exact tool names?
vigil-harbor__memory_search

A couple of gotchas:

  • the prefix is the MCP server key from config, not necessarily the package name
  • unsafe chars get sanitized, and long names can be capped
  • if you already locked the new room down too tightly, /tools in that room may only show the restricted set; run it from your existing unrestricted/main room first, or temporarily allow bundle-mcp, run /tools verbose, then replace it with the exact tool names

Docs: https://docs.openclaw.ai/plugins/bundles and https://docs.openclaw.ai/gateway/configuration