Connect providers

Discord

Channels, DMs, reactions, threads. Bot OAuth with per-server consent.

Discord integration uses bot OAuth. Each Discord server (guild) approves Nomos separately.

Connect

  1. 1
    Open picker

    ConnectionsDiscord.

  2. 2
    Pick server + approve

    Discord shows the server picker. Bot scopes: bot, applications.commands, messages.read. Pick the server, approve.

    Discord OAuth consent screen with server picker
    One server per consent. Run the flow again for additional servers.
  3. 3
    Invite the bot to channels

    The bot has to be in a channel to read/write. Discord defaults to "All channels" but you can narrow it per-server via Server Settings → Integrations.

Commands

  • /discord/channel/list, /discord/channel/get
  • /discord/message/list, /discord/message/get, /discord/message/create, /discord/message/update, /discord/message/delete (step-up)
  • /discord/thread/create, /discord/thread/archive
  • /discord/reaction/add, /discord/reaction/remove
  • /discord/user/get, /discord/dm/create

Starter policies

  • discord:read-only — channel + message list/get; user lookups.
  • discord:notification-bot — read + message create on a pinned channel.

Cedar fragment

cedar
permit (
  principal,
  action in [Action::"/discord/message/list", Action::"/discord/message/create"],
  resource
) when {
  resource.channelId == "1234567890123456"
};

forbid (
  principal,
  action == Action::"/discord/message/delete",
  resource
) when { !context.cosigner };