#In-Thread Approval Discord

1 messages · Page 1 of 1 (latest)

lapis oriole
#

I've configured the system to post allow/deny requests to the same thread where all is being discussed. Our config has had no effect (they're all DMs instead). Does Discord support in-thread approvals?

crimson parcelBOT
#

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

full masonBOT
#

Yes — Discord supports approval prompts in the originating channel/thread, not just DMs.

Use the Discord native approval config, not only generic forwarding:

{
  channels: {
    discord: {
      execApprovals: {
        enabled: "auto", // or true
        approvers: ["YOUR_DISCORD_USER_ID"],
        target: "channel" // or "both"
      }
    }
  }
}
#

Key gotchas:

  • Default is target: "dm", so DMs are expected unless changed.
  • approvers must be explicit, or resolvable from commands.ownerAllowFrom.
  • Discord does not infer approvers from allowFrom, dm.allowFrom, or defaultTo.
  • If OpenClaw can’t derive the origin channel/thread from the session, it falls back to DM.
  • Bot needs Send Messages in Threads permission.

Docs: https://docs.openclaw.ai/channels/discord#approvals-in-discord

If that’s already exactly what you set, please paste openclaw --version and the redacted channels.discord.execApprovals config — this may be version-specific.

lapis oriole
#

I've got:

  "execApprovals": {
    "enabled": true,
    "approvers": [
      "xxxxx"
    ],
    "target": "channel"
  },

Still, all goes to DM?

full masonBOT
#

That config should request channel/thread delivery. If it still only DMs, one of these is likely happening:

  1. Origin can’t be resolved, so Discord falls back to approver DM. This happens if the approval wasn’t created from a Discord channel/thread turn, or the session lost its turnSourceThreadId.
  2. Config isn’t on the active Discord account / gateway didn’t reload it.
  3. Older version bug / missing thread metadata propagation.

Please paste:

openclaw --version

And confirm the full path is:

{
#
  "channels": {
    "discord": {
      "execApprovals": {
        "enabled": true,
        "approvers": ["xxxxx"],
        "target": "channel"
      }
    }
  }
}

Also restart the gateway after changing it.

If this is happening from an ACP/subagent/thread-bound session, I’m suspicious the approval request is losing the originating Discord thread context and falling back to DM. In that case it may need a GitHub issue with version + repro: https://github.com/openclaw/openclaw/issues

lapis oriole
#

Okay, now it would seem I'm being prompted to make use of /approve but ... no buttons. Can that be remedied?

full masonBOT
#

Yes — it should be remedied. Discord approval buttons are expected for the native Discord approval path.

If you’re only seeing /approve, that usually means OpenClaw fell back to the generic text approval path, not the native Discord card.

Check these:

channels: {
  discord: {
    execApprovals: {
      enabled: true,
      approvers: ["YOUR_DISCORD_USER_ID"],
      target: "channel"
    }
  }
}
#

Then restart the gateway.

Also verify:

  • approvers are raw Discord user IDs, not usernames.
  • This config is on the active Discord account; for multi-account setups it may need:
    channels.discord.accounts.<accountId>.execApprovals
  • Bot has Send Messages in Threads.
  • You’re not sending to the forum parent — components need the actual thread target.
  • channels.discord.agentComponents.enabled is not the fix; approval buttons are registered separately.

If it still only shows text, check logs for:

openclaw logs --follow
lapis oriole
#

That's already done. There's nothing more to configure, unless you suggest I use "both".