@open-everywhere/provider-discord 0.3.0 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -76,6 +76,7 @@ import {
76
76
  type WakeMessageInput,
77
77
  type BindableContext,
78
78
  type AuthorTrustQuery,
79
+ SUPERVISOR_BACKSCROLL_REACHBACK_HOURS,
79
80
  } from "@open-everywhere/core/agent/adapter-api.js";
80
81
  import { discordAuthorRoles } from "../approvals/discord-admin.js";
81
82
 
@@ -307,12 +308,12 @@ export async function fetchDiscordBackscrollLines(
307
308
  // replies of threads hanging off it; that's the deliberate one-endpoint scope, matching the flat
308
309
  // path). FAIL-SOFT ABSOLUTELY throughout, exactly like {@link fetchDiscordBackscrollLines}.
309
310
 
310
- /** Reachback (hours) for the raw Discord window: how far back from the trigger we paginate. Shares
311
- * the SAME env + 7d default as the Slack adapter (slack-wake-backscroll.ts RAW_FETCH_REACHBACK_HOURS)
312
- * — it is one supervisor-backscroll concept, kept in sync by reading the same knob. Generous enough
311
+ /** Reachback (hours) for the raw Discord window: how far back from the trigger we paginate. It is
312
+ * the SAME core constant the Slack adapter takes (slack-wake-backscroll.ts RAW_FETCH_REACHBACK_HOURS)
313
+ * — one supervisor-backscroll concept, so one number. Generous enough
313
314
  * that the spine (the most-recent cluster, exempt from the 36h enrichment cap) still spans a
314
315
  * weekend/overnight gap, yet a hard floor bounding the fetch. */
315
- export const DISCORD_RAW_FETCH_REACHBACK_HOURS = Number(process.env.OE_SUPERVISOR_BACKSCROLL_REACHBACK_HOURS) || 168;
316
+ export const DISCORD_RAW_FETCH_REACHBACK_HOURS = SUPERVISOR_BACKSCROLL_REACHBACK_HOURS;
316
317
 
317
318
  /** `GET /channels/{id}/messages` page size (Discord's max is 100). */
318
319
  const DISCORD_RAW_FETCH_PAGE_LIMIT = 100;
@@ -36,9 +36,6 @@
36
36
  // dropped, and unresolvable payloads are rejected rather than guessed at.
37
37
  //
38
38
  // Env this surface reads at runtime:
39
- // OE_DM_SEAT_ROTATE_* (optional) the DM window's rotation thresholds (core channels/dm-seat.ts),
40
- // never the supervisor's. A DM window itself is unconditional since OPE-368
41
- // retired the OE_DM_SEAT_ROTATION master switch.
42
39
  // OE_RELAY_SECRET (required) HMAC-SHA256 key shared with the relay; unset → all 401.
43
40
  // DISCORD_BOT_TOKEN (required to reply) bot token for the REST create-message/thread calls.
44
41
  // discord.autoThread (optional, default ON) a mention in a base channel opens a thread and
@@ -158,7 +155,7 @@ import {
158
155
  consumeRepliedThisTurn,
159
156
  dropClosingProse,
160
157
  isAllowedDriver,
161
- parseDriverAllowlist,
158
+ configuredDriverAllowlist,
162
159
  // THE DM SEAT (OPE-356) — the same core mint/touch/flag every first-classed DM window uses; the
163
160
  // Slack front route reaches for exactly these three.
164
161
  getOrCreateDmSeat,
@@ -558,7 +555,7 @@ export function authForRelayMessage(msg: DiscordRelayMessage): OpenEverywhereDis
558
555
  // real agent. Fail-closed default-off (no env → unconditional drop, exactly as
559
556
  // before); every acceptance is logged so an armed seam is never invisible.
560
557
  if (!isAllowedDriver(msg.guildId, msg.author.id)) return null;
561
- log(`e2e driver accepted as user: bot ${msg.author.id} in guild ${msg.guildId} (OE_TEST_DRIVER_IDS)`);
558
+ log(`e2e driver accepted as user: bot ${msg.author.id} in guild ${msg.guildId} (wake.driverAllowlist)`);
562
559
  }
563
560
  return buildDiscordAuth({
564
561
  userId: msg.author.id,
@@ -575,7 +572,7 @@ export function authForRelayMessage(msg: DiscordRelayMessage): OpenEverywhereDis
575
572
 
576
573
  /**
577
574
  * Is this bot-authored relay message's author id a KNOWN e2e-driver id (OPE-647) — pinned to
578
- * SOME guild in `OE_TEST_DRIVER_IDS` — but NOT to this message's own guild? `authForRelayMessage`
575
+ * SOME guild in the `wake.driverAllowlist` setting — but NOT to this message's own guild? `authForRelayMessage`
579
576
  * already refuses the message either way: `isAllowedDriver` is guild-pinned by format
580
577
  * (`guildId:botUserId`), so a driver id posting outside its pinned guild never passes. This
581
578
  * classifier exists only to tell that refusal APART from routine "some unrelated real bot
@@ -586,7 +583,7 @@ export function authForRelayMessage(msg: DiscordRelayMessage): OpenEverywhereDis
586
583
  export function isMisplacedDriver(
587
584
  guildId: string | undefined,
588
585
  botUserId: string,
589
- allowlist: ReadonlySet<string> = parseDriverAllowlist(process.env.OE_TEST_DRIVER_IDS),
586
+ allowlist: ReadonlySet<string> = configuredDriverAllowlist(),
590
587
  ): boolean {
591
588
  if (!botUserId) return false;
592
589
  if (guildId !== undefined && allowlist.has(`${guildId}:${botUserId}`)) return false; // pinned HERE — ordinary admission, not a misplacement
@@ -653,8 +650,8 @@ export type DiscordExternalVerdict = "proceed" | "withheld-addressed" | "withhel
653
650
  * `getConfig()` call on this path sits BELOW the DM early-return, so a DM never touched the config
654
651
  * registry before this feature existed; making the policy the first thing that does would let an
655
652
  * unregistered config take DMs off the air. "Could not read the domain registry" means "no domain
656
- * override", which resolves to the shipped org default — today's behaviour, which is the only safe
657
- * answer. A genuinely broken config is still loud everywhere else it is read.
653
+ * override", which resolves to the shipped org default (strict since 2026-10-10), which is the only
654
+ * safe answer. A genuinely broken config is still loud everywhere else it is read.
658
655
  */
659
656
  function externalPolicyForRoom(roomKey: string): ExternalPolicy {
660
657
  try {
@@ -1539,7 +1536,8 @@ export function discordSingleWindowPrivacyOk(
1539
1536
  ): boolean {
1540
1537
  if (!input.guildId) return false; // DM/group-DM: NEVER, unconditionally (no tenant boundary)
1541
1538
  const vouched = deps.vouched ?? isVouchedInternal;
1542
- const trustEnv = "trustEnv" in deps ? deps.trustEnv : process.env.OE_TRUST;
1539
+ // The blanket is the `identity.blanketTrust` setting since OPE-2411 (was OE_TRUST).
1540
+ const trustEnv = "trustEnv" in deps ? deps.trustEnv : getSettings().identity.blanketTrust;
1543
1541
  if (trustEnv === "internal") return true; // the blanket internal-only-deploy switch
1544
1542
  if (vouched(input.workspaceKey, input.surfaceKey)) return true;
1545
1543
  // A thread inherits its parent channel's vouch (the domain-grain key — same widening the
@@ -2357,8 +2355,8 @@ export async function dispatchTurn(
2357
2355
  // nothing and show nothing — an affordance on a suppressed message tells the sender the agent is
2358
2356
  // reading them, which is the opposite of the intended behaviour.
2359
2357
  //
2360
- // Both grains are inert under their shipped values (`taint` / `engage`), so this whole block is a
2361
- // no-op on every deployment that has not opted in.
2358
+ // Both grains are inert only on the `taint` / `engage` opt-out, so this whole block is a no-op
2359
+ // only on a deployment that opted out. The shipped grains suppress here.
2362
2360
  // EXPLICIT ADDRESSING — one fact, read twice: the verdict owes a private notice on it, and the
2363
2361
  // OPE-885 ack keys on it. A DM is addressing by construction; `mentionsBot` is Discord's own
2364
2362
  // mention signal, which a NAME-DROP never sets.
@@ -10,6 +10,6 @@ export const PROVIDER_DOCS: readonly DocEntry[] = [
10
10
  path: "docs/deploy/surfaces/discord.md",
11
11
  title: "Discord",
12
12
  summary: "Run a slash command in your Discord server and Open Everywhere acts as an autonomous teammate — it does the work, replies in the channel, and remembers what it learned, scoped correctly per channel.",
13
- markdown: "# Discord\n\nRun a slash command in your Discord server and Open Everywhere acts as an autonomous teammate — it does the work, replies in the channel, and remembers what it learned, scoped correctly per channel.\n\nThis page is the Discord-specific setup runbook. For the concept of a *surface* and how surfaces plug in, see [Surfaces](../../extending/surfaces.md). For how memory is scoped per server and channel, see [Memory](../../capabilities/memory.md). For how Discord's feature set compares to the other surfaces — including what needs the Gateway relay and why — see the [surface support matrix](./support-matrix.md).\n\n**Discord has two ingestion paths, and this page sets up both.** The HTTPS **interactions** endpoint is interaction-based: on it, the only way to invoke the agent is an explicitly-registered slash command, and a plain `@mention` does nothing. Ambient `@mention`s, DMs, name-drops and channel follow-ups arrive over the separate **Gateway** path instead, which needs the always-on relay ([`deploy/discord-relay/`](../../../deploy/discord-relay/README.md)) — Discord never delivers those to an HTTP endpoint. The [surface support matrix](./support-matrix.md) marks every Gateway-dependent row with footnote ¹.\n\n## How the silo model maps\n\nOpen Everywhere's memory is [opt-in domains and silos](../../capabilities/memory.md), not an\nautomatic per-guild tier stack. A Discord channel/thread/DM is a **surface**; the guild is the\nnatural `workspace` identity key its channels' surface keys share, but sharing memory across\nthem still needs an explicit `domain` or the `org` pseudo-domain fallback — and (see \"Trust\"\nbelow), by default no Discord surface reaches either.\n\n| Open Everywhere concept | Discord thing |\n| --- | --- |\n| `org` (tenant) | your deployment (`deploymentIdentity.org` in `agent/identity/surfaces.ts`, one org per deploy today) |\n| `workspace` (identity key) | the **guild** (server) — its id (`guild_id`) |\n| `surface` (partition key) | the individual **channel or thread** (`channel_id`) |\n| `mode` | `channel` (guild text channel/thread), `dm` (1:1 DM, channel type `1`), `mpim` (group DM, type `3`) |\n| `visibility` | `public` only for a confirmed @everyone-readable guild channel; everything else `private` |\n\n**Visibility is tracked but isn't the memory gate.** Discord interaction payloads carry *no*\nclean public/private bit — channel readability is governed by per-role `@everyone`\n`VIEW_CHANNEL` permission overwrites, which aren't in the payload — so guild channels default\nto **`private`** (`discordVisibility`) until a future enrichment positively confirms\n`@everyone` can view them. DMs (type `1`) and group DMs (type `3`) are inherently private.\nNone of this decides whether memory shares, though — see below.\n\n**Trust is unverified by default — every guild starts `external`.** Open Everywhere has no\nDiscord guest/`@everyone`-membership check yet, so `bindDiscord` leaves `trust` undefined,\nwhich **fails closed to `external`**: a fresh guild channel gets read-only `public` memory at\nmost — never an explicit domain's silo, never the `org` brain — public-looking channel or not.\nA public Discord server is full of strangers, so a guild existing is not proof of org\nmembership. To unlock domain/org memory, the operator explicitly **vouches** it: set\n`OE_TRUST=internal` for a single-tenant deployment where every guild you'll ever be in is\ntrusted, or vouch specific guilds via a `discord/<guild_id>` (or `discord/<channel_id>` for one\nchannel) entry in `agent/identity/surfaces.ts`. Unvouched, the bot still answers slash\ncommands (chat-only, no shared memory); vouched, normal domain/org resolution applies exactly\nas it does for any other internal channel.\n\n**DMs are personal universes.** A DM has no guild, so it keys to the **caller's own user id**\nas the workspace — fully isolated from the server brain and from other users' DMs. The\npersonal DB silo is always writable regardless of trust; only the *shared read layer* on top\nof it needs a vouch (the same DM-partner-trust gate every platform uses).\n\n## Auto-thread (mention conversations)\n\nWhen the bot is reachable over the **Gateway** ingestion surface (ambient `@mention` messages, as opposed to the slash-command interaction path above), a mention starts a **thread** and the whole conversation happens in it — the signature \"one task = one thread\" pattern Open Everywhere uses on Slack.\n\n| Where you mention it | What happens |\n| --- | --- |\n| A **base channel** (guild text or announcement) | The bot **opens a thread** hanging off your message and replies there. That thread is its own **conversation** — its own durable session and per-thread notes — while still counting as part of the parent channel for domains and spend caps (below). Keep talking in the thread — no need to re-mention. |\n| **Already inside a thread** | It replies **in place** (a thread is already its own conversation). |\n| A **DM or group DM** | It replies **in place** (Discord has no threads in DMs). |\n| A **forum** channel | It replies **in place** (a forum post is itself a thread — it doesn't nest). |\n\nEach auto-created thread is named from your message (the mention stripped, truncated to Discord's 100-char cap; an empty message falls back to `Conversation with the agent`). A **second** mention in the base channel starts a **second** thread — one task per thread, by design.\n\n**Threads belong to their channel.** Although a Discord thread is technically its own channel id, Open Everywhere treats a thread as part of its **parent channel** for everything scoped to channels — [memory domain](../../capabilities/memory.md) membership (silo, access bundle, model route), domain-admin standing, and **spend caps** (a cap on the channel accumulates and gates its threads' usage too, and a cap proposed *from* a thread targets the parent channel). This matches Slack, where threads share the channel. Only the *conversation* is per-thread: the durable session, engagement, and the thread's own surface-tier notes. Parent resolution is best-effort — if the one-time lookup fails, that thread simply behaves as an unaffiliated channel for the turn (never blocked).\n\n**Toggle — `discord.autoThread`** (default **on**). Set it to `false` to reply **inline in the base channel** instead of opening a thread. It is a typed setting, not an environment variable, so opting out is a reviewed diff in your own `agent/settings/settings.ts`:\n\n```ts\n// agent/settings/settings.ts\nexport default defineSettings({\n discord: { autoThread: false }, // opt out: reply inline in the base channel, no thread\n});\n```\n\n**Fails open.** If the bot lacks **Create Public Threads** / **Send Messages in Threads** (or Discord rate-limits the create), thread creation is skipped and the turn still runs as an **inline** reply in the base channel — degraded, never dropped. Grant both permissions in [Step 3](#step-3--invite-the-bot) to get threads.\n\n**DMs need no mention.** Over the Gateway surface a direct message (or group DM) to the bot always wakes it — a DM is by definition addressed to the bot, so just talk to it. In guild channels the usual rule applies: an `@mention` starts a conversation; after that the bot follows the thread without re-mentioning.\n\n**Name-drops (opt-in, per domain).** With `nameDropWake: true` on the channel's [memory domain](../../capabilities/memory.md) — same flag as Slack — a guild message that says one of the bot's names without @mentioning it gets a *judged* reply: the bot answers only when the message is clearly for it, and stays silent otherwise. The name-token set is the same rule as Slack's (see [that surface's doc](slack.md)): the bot's **display name** (its server nickname, if set) UNION the deployment's `identity.name`, extended by `wake.nameDrop.include` and narrowed by `wake.nameDrop.exclude` (configuration-reference.md) — exclude always wins. Works in channels *and* un-followed threads (a deliberate extension over Slack, where threads belong to the engagement path). Scope matters for what happens next: a name-drop **in a thread** puts the bot into follow mode for that thread (small scope — same grain as Slack, where a name-drop's reply thread is followed); a name-drop **in a base channel** does *not* — following a whole channel means a judged model turn on every subsequent message, so there you @mention it (or say its name again) to continue. When it does follow a thread off a name-drop, it starts as a **warm watcher** (see *Stopping it following* below). Off by default; requires a Gateway relay recent enough to forward the bot's identity (older relays simply never name-wake). The road is audited on Discord exactly as it is on Slack: an admitted name-drop writes `surface.name_drop_woke` (naming the channel, the message id and `road: \"native\"` — this surface hands off to no standing seat), and a name-drop the domain flag refuses writes `surface.name_drop_silent`. A message that names nobody writes neither row. A judged wake also arrives with a short, **untrusted-wrapped backscroll** of the surrounding conversation (recent messages, capped) so the model can tell whether the message is really for it — the same context an @mention gets.\n\n### Stopping it following\n\nEngagement has no hard timeout, but a lightly-latched surface **sheds itself** — the same model as Slack:\n\n- **Participating** surfaces (you @mentioned the bot, or it actually replied) are **sticky**: they keep following every message there (each one a judged model turn, so a followed surface has a real per-message cost) until you ask it to stop. Just say so, however you'd phrase it to a colleague — \"you can stop following this\", \"we're good here\". This is **judged, not pattern-matched**: the agent reads the intent and calls `stand_down`, which sets a durable marker on the surface. There is deliberately no magic word (the regex that used to look for one disengaged on \"don't stop the deploy\" as readily as on \"stop\"). Mention it again any time to re-engage — that clears the marker. This is a **channel-only** verb — a DM has no `@mention` to clear a marker with, so `stand_down` refuses there instead of trapping the conversation silent for good.\n- **Warm watchers** (a thread the bot entered off a *name-drop* but hasn't yet replied in) are **not** sticky: if it judges \"no reply\" on three consecutive messages, it quietly **disengages** itself — so a one-off name-drop that wasn't really for it never leaves it silently following forever. The moment it does reply (or you @mention it), the surface is promoted to participating and the count resets.\n\n### Stopping a turn that's already running\n\nDifferent problem, different mechanism. Standing down happens *between* turns; stopping a turn\nthat is **in flight** can't be inferred at all, because the bot is the thing that's busy and your\nmessage would queue behind the very turn it's meant to stop. So it's an affordance:\n\n- react **✋** on the message — the host adds it when a turn actually kicks work off (its first\n delegation) and removes it when the turn ends, so it's there to click exactly while a stop means\n something, and never appears on a message the bot merely read;\n- or run **`/oe stop`**, which needs no reaction permission and takes no arguments.\n\nBoth are decided at ingress with **no model call and nothing spent**, so they keep working while\nthe channel is over its spend cap. ⚠️ The ✋ route needs a Gateway relay recent enough to forward\nreactions — an older deployed relay never forwards them, and `/oe stop` covers the gap.\n\nWhat a stop does, precisely: the turn's history rolls back to its last completed model call, but\n**anything already done is done** — tool calls inside the interrupted step had real effects and\nare not undone, and a running sandbox command can't be killed. The acknowledgement says \"stood\ndown\", never \"stopped\", and names what had already run.\n\n### Working indicators (status UX)\n\nWhile a turn runs (often 30s+), the bot shows it's on the case using Discord's native affordances — no extra messages, no edits:\n\n- It reacts **👀** on your message the moment it picks it up (\"seen, working\") — on any direct address (a mention or a DM).\n- While it works, Discord's native **typing indicator** shows (\"*Open Everywhere is typing…*\"), re-triggered as the turn progresses. The answer then arrives as a fresh message.\n- **Judged wakes hold typing back.** On a followed (engaged) surface or a name-drop, the model judges each message and may decide no reply is warranted. Those turns show **no typing at all until the reply is actually being written** — so a judged pass is silent from the first second, instead of \"typing… for 10 seconds, then nothing\" (which reads as a crash). Direct addresses (mentions and DMs) always answer, so they show typing immediately.\n- **On an auto-threaded mention** the 👀 is **removed** when the answer lands in the thread — absence is the done signal, visible from the base channel without opening the thread. (The bot never plants a ✅ — that stays reserved for humans, same convention as Slack.) Elsewhere the 👀 simply stands as the ack; the answer arrives right underneath.\n\n**Toggle — `discord.statusUx`** (default **on**). Like `autoThread` it is a typed setting, not an environment variable: set `discord: { statusUx: false }` in your own `agent/settings/settings.ts` for plain replies with no reaction or typing. All indicators are best-effort: a failed reaction or typing call never delays or drops the answer.\n\n### Reaction ingestion (feedback signal)\n\nOver the **Gateway** relay the bot also *ingests* inbound reactions. A 👍 / 👎 (or any emoji) on one of the **bot's own replies** is recorded as a lightweight human **feedback** signal — durable, append-only, carrying only the reactor's id + the emoji, never any message text. Reactions on *other* messages emit anonymous volume telemetry but aren't stored, and the bot's own status reactions (👀) are never counted. This needs the **Guild Message Reactions** and **Direct Message Reactions** gateway intents, which the relay already requests (they're not privileged — no portal toggle). Older relays that predate this simply never forward reactions, so the feature is silently off until you redeploy the relay.\n\n### Spend caps\n\nGuild channels are subject to the same [monthly spend caps](../../security/spend-and-cost.md) as every surface: a channel (or guild) over its budget **declines** new mentions with a visible message rather than silently ignoring them. The decline message names the exact scope keys, so a follow-up DM proposal can target them.\n\n**Admins are never locked out.** If the sender is an admin over the scope — on the config roster (`Domain.admins`), or a Discord-verified administrator/owner of the guild — the turn proceeds past the cap with a visible `⚠️ … proceeding because you're an admin` line (throttled to once per channel per hour — subsequent bypassed turns proceed quietly) and an audit entry (`spend.cap_bypassed`) on every bypass. Sudo semantics: the cap binds the team's ambient usage; the budget owner steps over it visibly and can raise or clear it right there (\"set this channel's cap to $5\" → approval card).\n\nDMs are capped like any other surface. The escape hatch is the **admin bypass**: an org admin's own DM turn proceeds past the cap with the visible warning and an audit row, so they can still propose an override (passing the scope key from the decline message) and approve it on the card **in the DM** — a DM click is decided by checking the clicker's admin standing in the target guild over REST, since Discord DM interactions carry no member permissions. One default from a DM is still refused: a Discord DM belongs to no server, so a `\"workspace\"` cap defaulted there would target your personal DM bucket rather than the guild you meant — pass an explicit `discord/<serverId>` key. (`level: \"surface\"` from a DM is fine now: it targets that DM, which is a scope the gate really enforces.)\n\n## Prerequisites\n\n- A Discord **server you manage** with the **Manage Server** permission (needed to add the bot and, optionally, to register guild-scoped commands).\n- A reachable Open Everywhere instance — deployed with a **public HTTPS URL**. Discord delivers interactions as signed HTTPS POSTs from its own infrastructure and **cannot reach `localhost`**; for local dev expose your instance with a tunnel (e.g. `ngrok http 3000`) and use that HTTPS URL. See the [docs index](../../README.md) to get the project and the [setup runbook](../setup-runbook.md) for the deployment steps.\n- Your instance's public base URL. The Discord interactions route is **`/eve/v1/discord`**, so Discord calls `https://<your-deploy-url>/eve/v1/discord`.\n\n## Step 1 — Create the Discord application + bot\n\n1. Go to the [Discord Developer Portal](https://discord.com/developers/applications) → **New Application**. Name it (e.g. `Open Everywhere`).\n2. On **General Information**, copy the **Application ID** — this is `DISCORD_APPLICATION_ID`.\n3. Still on **General Information**, copy the **Public Key** — this is `DISCORD_PUBLIC_KEY`. It verifies the Ed25519 signature on every inbound interaction POST.\n4. Go to the **Bot** tab → **Reset Token** → copy the token — this is `DISCORD_BOT_TOKEN`. (Treat it like a password; it's shown once.)\n5. Set the **Interactions Endpoint URL** (on **General Information**) to:\n\n ```\n https://<your-deploy-url>/eve/v1/discord\n ```\n\n When you save this, Discord immediately POSTs a `PING` (interaction type `1`) and expects a signed `PONG` back. **Your instance must already be deployed, running, and reachable with `DISCORD_PUBLIC_KEY` configured** (Step 4) or Discord rejects the URL. Set the env first, deploy, *then* save this field.\n\n > ⚠️ **Use your STABLE production domain here** (e.g. `your-app.vercel.app`), never a\n > deployment-specific URL (`your-app-<hash>-team.vercel.app`). Deployment URLs stay alive\n > forever pointing at that one old build — interactions (including approval-card button\n > clicks) would keep hitting stale code after every redeploy, failing in ways that look\n > like application bugs.\n\n6. *(Optional, recommended)* Go to the **Webhooks** tab → set the **Webhook Events URL** to:\n\n ```\n https://<your-deploy-url>/eve/v1/discord/events\n ```\n\n and subscribe to **`APPLICATION_AUTHORIZED`** and **`APPLICATION_DEAUTHORIZED`**. This is a\n **different URL** from the Interactions Endpoint above — Discord configures the two separately —\n but it is verified with the **same** `DISCORD_PUBLIC_KEY`, so there is nothing new to set.\n\n It gives OE an install/uninstall audit trail: each event writes a `surface.app_installed` /\n `surface.app_uninstalled` row (guild as the workspace, the authorizing user as the principal),\n queryable over the control plane's audit route. Without it OE has no signal that a server added\n or removed the app short of noticing silence.\n\n **Observability only** — this route gates nothing, wakes no session, and drops nothing. Leaving\n it unconfigured changes no behaviour. Note that Webhook Events deliberately do **not** carry chat\n messages: ambient channel content is Gateway-only and still needs the always-on relay (see the\n [surface support matrix](./support-matrix.md)).\n\n## Step 2 — Register the slash command\n\nThe channel handler does **not** filter on a specific command name — its `onCommand` hook accepts *any* registered application command, attaches the real Discord identity, and dispatches. So you register one command and pick its name. The command maps to the model prompt via `commandInteractionMessage`: it uses the value of a string option named **`message`** when present, otherwise it reconstructs `/command opt:value …`. **Register a command with a required `message` string option** so users type their request naturally.\n\nRegister with the Discord API (no helper script ships today). **Guild** commands appear **instantly** in that one server; **global** commands can take **up to an hour** to propagate — use a guild command while testing.\n\nGuild-scoped (instant, recommended for setup):\n\n```bash\ncurl -X POST \\\n \"https://discord.com/api/v10/applications/$DISCORD_APPLICATION_ID/guilds/$GUILD_ID/commands\" \\\n -H \"Authorization: Bot $DISCORD_BOT_TOKEN\" \\\n -H \"Content-Type: application/json\" \\\n -d '{\n \"name\": \"ask\",\n \"type\": 1,\n \"description\": \"Ask Open Everywhere to do something\",\n \"options\": [\n { \"name\": \"message\", \"description\": \"What should it do?\", \"type\": 3, \"required\": true }\n ]\n }'\n```\n\nGlobal (drop `/guilds/$GUILD_ID`, propagation up to ~1h):\n\n```bash\ncurl -X POST \\\n \"https://discord.com/api/v10/applications/$DISCORD_APPLICATION_ID/commands\" \\\n -H \"Authorization: Bot $DISCORD_BOT_TOKEN\" \\\n -H \"Content-Type: application/json\" \\\n -d '{ \"name\": \"ask\", \"type\": 1, \"description\": \"Ask Open Everywhere to do something\",\n \"options\": [ { \"name\": \"message\", \"description\": \"What should it do?\", \"type\": 3, \"required\": true } ] }'\n```\n\n(`type: 1` = CHAT_INPUT slash command; option `type: 3` = STRING. Name it `openeverywhere` instead of `ask` if you prefer.)\n\n## Step 3 — Invite the bot\n\n1. In the Developer Portal → **OAuth2** → **URL Generator**.\n2. Under **Scopes**, tick **`applications.commands`** (required for slash commands) and **`bot`**.\n3. Under **Bot Permissions**, tick:\n - **Send Messages** — post replies (interaction responses and Gateway/REST posts).\n - **Create Public Threads** — open a thread per conversation (see [Auto-thread](#auto-thread-mention-conversations)).\n - **Send Messages in Threads** — reply inside those threads.\n\n Without the two thread permissions the bot **falls back to inline replies** (auto-thread fails open — it never drops a turn), so the minimum for slash commands alone is just **Send Messages**. The agent replies via the interaction token for slash commands, so it doesn't need broad permissions.\n4. Copy the generated URL, open it, pick your server, and **Authorize**. You need **Manage Server** on that server to complete the invite.\n\n## Step 4 — Configure the environment\n\nSet these on your instance, then deploy:\n\n```bash\nDISCORD_APPLICATION_ID=… # Application ID from Step 1.2\nDISCORD_PUBLIC_KEY=… # Public Key from Step 1.3 (verifies signed interaction POSTs)\nDISCORD_BOT_TOKEN=… # Bot token from Step 1.4\n```\n\nOptional, but relevant to the silo model:\n\n```bash\nOE_MEMORY_PROVIDER=git # memory backend — git | sqlite\nOE_MEMORY_DIR=/abs/path/to/store\n```\n\n**Identity binds automatically.** You do **not** set workspace, surface, mode, or visibility by hand. The Discord channel reads the guild/channel/user ids and the channel `type` straight off each inbound interaction into the session auth context (`buildDiscordAuth`), and `bindDiscord` derives workspace = the guild, surface = the channel, plus mode and visibility. The `deploymentIdentity.workspace` / `.surface` declaration in `agent/identity/surfaces.ts` is only the `eve dev` gap-filler — once Discord is wired it is ignored.\n\n## Step 5 — Invoke it\n\n1. In a guild channel, run `/ask summarise the last few messages and list the action items`.\n2. Expected behaviour:\n - Discord shows a **`Thinking…`** typing indicator while the agent works (the channel calls `startTyping()` on dispatch).\n - It **acks within 3 seconds with a deferred response**, then edits that original response in place with the answer once the agent finishes — so longer tasks don't time out.\n - The reply lands in the channel, scoped to that channel's surface silo.\n3. Test a DM: open a direct message with the bot and run `/ask …` there. It responds the same way; the DM surface's memory is isolated to you and `private`.\n\n## Rotating the bot token\n\n**Reset Token** in the Developer Portal (Step 1.4) invalidates the old token immediately. Two\n**deployed** stores hold that token. Each one needs its own update, and neither picks the new value\nup on its own.\n\n| Store | What holds the token | How the new value takes effect |\n| --- | --- | --- |\n| Vercel production | `DISCORD_BOT_TOKEN` on the deployment | an explicit redeploy |\n| Railway | `DISCORD_BOT_TOKEN` on the always-on relay ([`deploy/discord-relay/`](../../../deploy/discord-relay/README.md)) | a relay redeploy |\n\nA rotation that reaches only the deployment leaves the relay dead. That failure is quiet: the slash\ncommand still works, and every HTTPS route still answers.\n\nA local checkout keeps its own copy — `deploy/discord-relay/.env`, and the repo-root `.env`. Those\nare operator copies, not deployed stores. Update one the next time you run it locally.\n\n### The Vercel half\n\n`git push` does not deploy, and a running deployment keeps the value it booted with:\n\n```bash\nvercel env rm DISCORD_BOT_TOKEN production -y # the name exists already — remove, then re-add\nvercel env add DISCORD_BOT_TOKEN production\nvercel deploy --prod\n```\n\n`deploy:census` does **not** see this half. It reads credential rows out of the store, and this\ntoken is an environment variable. Prove it by hand instead: run `/ask …` in a guild channel\n(Step 5). A dead token fails every Discord API call the deployment makes.\n\n### The Railway half\n\n**The relay reads the token ONCE, at boot.** `deploy/discord-relay/index.js` reads\n`process.env.DISCORD_BOT_TOKEN` at module load, then logs in with that value. A variable change alone\nchanges nothing on a running relay. The process holds the dead token until it restarts.\n\n```bash\ncd deploy/discord-relay\nread -rs -p 'new DISCORD_BOT_TOKEN: ' NEW_TOKEN && \\\n railway variables --set DISCORD_BOT_TOKEN=\"$NEW_TOKEN\" --skip-deploys && unset NEW_TOKEN\nrailway redeploy -y\nrailway logs # expect: \"[oe-discord-relay] ready as <bot>#0000 | mode: FORWARD\"\n```\n\n`read -rs` keeps the token out of your **shell history** and off the **screen** — a token typed as a\nliteral argument stays in the history file long after the rotation. `unset` drops it from the\nenvironment as soon as Railway holds it.\n\n🔴 **It does NOT hide the token from the process table.** The shell expands `\"$NEW_TOKEN\"` before it\nruns `railway`, so the value is visible in that process's `ps` and `/proc/<pid>/cmdline` entry for\nthe life of the call. Rotate on a machine you trust, never on a shared box or a runner other\ntenants can read.\n\n`--skip-deploys` holds the restart back, so the redeploy is one explicit step you can watch. The\n`ready as` line is the proof — the relay holds the Gateway socket again, with the new token.\n\n### What a missed relay looks like\n\nDiscord closes the relay's Gateway socket at the reset hour. Ambient channel and DM messages stop\narriving, because Discord delivers them over that socket only. Slash commands keep working, so the\nsurface looks half-alive.\n\n`npm run deploy:census` catches it: `discord.heartbeat` goes red. Read that row correctly. The\n**relay** POSTs the heartbeat on its own timer; the **deployment** writes the row, once the signed\nPOST passes the relay gate. After a token rotation the cause is the stale relay, so the remedy is\nthe relay redeploy above. A red row under a LIVE relay points at the ingest side instead — an\n`OE_RELAY_SECRET` mismatch, or a route that refuses. Check `railway logs` for `ingest rejected`\nbefore you redeploy anything. Restart the relay, then run the census again.\n\nThe check needs Discord mounted, and it needs the census run's OWN `OE_RELAY_HEARTBEAT_MS` mirror\nnon-zero and matching the relay's configured interval. The census reads its own copy of that name,\nnever the relay's — see [rollback](../rollback.md).\n\n### `.env.e2e` does not hold this token\n\nThe e2e tier drives Discord with `E2E_DISCORD_DRIVER_TOKEN`, and that is a **different bot** — the\ntest driver, a second application the `OE_TEST_DRIVER_IDS` allowlist admits\n(`packages/core/scripts/e2e/env.ts`). Resetting the deployment's own bot token does not invalidate\nit. No code in this repository reads the deployment's bot token out of `.env.e2e`, so a rotation\nleaves that file alone.\n\n## What the agent calls itself here\n\nA Discord session's IDENTITY — the name it introduces itself by — comes from one place only: the\n[`identity.name`](../configuration-reference.md) setting. Set it and it **wins on every surface**,\nbyte-identically — the right answer for a deployment that spans Slack and Discord from one window:\none name, everywhere. Unset, the session renders the generic identity line (\"this team's agent\").\nIt never borrows a name from another surface, and never from this surface's own Discord account\nname either — that is a HANDLE, not an identity (OPE-610).\n\nSeparately, the session also carries a HANDLE line — \"your mention/handle here appears as X\" — so\nthe agent recognises its own mentions and backscroll lines under the bot account's real Discord\nname. The agent reads it once per instance from `GET /users/@me` (the same `DISCORD_BOT_TOKEN` this\nintegration already uses to post replies), preferring the account's display name (`global_name`)\nand falling back to its username. A rename on Discord takes effect on the next cold start. If the\nread fails (no token, a transport error), the session simply carries no handle line; the identity\nline above is unaffected either way.\n\n## Reading channel/thread history\n\nDiscord supports the generic `read_channel`/`read_thread` verbs (the same tools Slack and Teams\nuse — since OPE-1145 no per-surface reader stands beside them on any surface), backed by the plain\nDiscord REST API\n(`GET /channels/{id}/messages`) — the **same `DISCORD_BOT_TOKEN`** this integration already uses to\npost replies (Step 1.4/Step 4 above). The read adapter (`packages/providers/discord/agent/channels/discord-read.ts`'s\n`discordReadAdapter`, registered into core's read-adapter registry at boot) reuses that token verbatim, so **there is no extra Discord- or Azure-side\nconfiguration to grant** — unlike Teams, which needs a separate Graph token/permission because its\nBot Framework Connector token can't read history.\n\n- **A Discord thread is its own channel id.** Discord threads aren't a sub-resource of their parent\n channel the way Slack/Teams threads are — a thread IS a channel, with its own id. So\n `read_thread`'s thread identifier for Discord is that thread's channel id, and the adapter simply\n reads it with the same `GET /channels/{id}/messages` call `read_channel` uses against a base\n channel. Both ids come from the turn's own binding — neither verb takes a target.\n- **Bounded, single page.** Unlike Teams' paginated Graph reads, one GET returns up to 100 messages\n (Discord's own per-request cap) — a requested `limit` above 100 is silently clamped, never fanned\n out across pages.\n- **Scope.** The verbs read THE CONTAINER THE WAKE ARRIVED IN and take no target, so no other\n channel is addressable. The domain allowlist still runs inside the adapter as defence in depth.\n An out-of-scope channel is refused before any Discord GET, and every refusal writes a\n `read.refused` audit row naming the channel, the caller's domain and the verdict (ids only, never\n message content) — queryable with `GET /control/v1/audit?since=<iso>&actions=read.refused`.\n\n## Identity linking\n\n[Identity linking](../../how-it-works/identity.md) joins a person's Discord account to their\naccounts elsewhere. Discord supports **both halves** of the preferred *directory* transport, so a\nperson can name their other account instead of carrying a code between two surfaces.\n\n- **The account directory** searches the guilds your domains declare in their `reach` lists\n (`agent/memory/config/domains/<name>.ts`) — one `GET /guilds/{id}/members/search` per guild, so\n Discord itself does the matching. A guild nobody configured is never searched, and bots are\n dropped (a link is a statement about a human).\n- **The DM ask** opens the 1:1 conversation with `POST /users/@me/channels` and posts the consent\n request there. No extra permission: Discord delivers a bot DM when the recipient shares a server\n with the bot and has not turned off direct messages from server members.\n- **Two buttons** ride under the ask, and a tap answers it with no model turn. The tap returns to the\n same **Interactions Endpoint URL** the approval cards already use, so there is nothing extra to\n configure. The answer is **ephemeral** — only the person who tapped\n sees it. A tap from a server channel is refused with a pointer back to the DM.\n\n⚠️ **The directory needs the privileged `SERVER MEMBERS` intent.** Turn on **Privileged Gateway\nIntents → Server Members Intent** on your application's **Bot** page in the Discord developer\nportal. Without it Discord answers `403` to the member endpoints, the directory resolves empty, and\nlinking falls back to the **code** transport — which still works and says which capability was\nmissing. Directory rights are fine to require for the better path; they are never a precondition for\nlinking at all.\n\nBecause Discord can DM, a `link <code>` claim typed **in a channel** is now refused with a pointer to\nthe DM, and the code is not spent. A code is a bearer secret for its whole life, and a room has an\naudience.\n\n## Proactive routines\n\nScheduled [routines](../../capabilities/proactivity-and-routines.md) work on Discord: create one with a slash command (\"every hour, check …\") and the fired result posts back **into the same channel** via the REST create-message endpoint (the bot token from Step 1 — no Gateway websocket involved). The post-back target is captured automatically when the routine is created; nothing to configure. Spend caps apply to guild-channel routines — and to 1:1 DM routines too, same as Slack: a fire never gets the admin bypass, because there is no attending admin to bypass on its behalf.\n\n## Slash commands: `/oe` (zero-inference control-plane)\n\n`/oe` is a **second, separate** slash command from the model-dispatching one registered in [Step 2](#step-2--register-the-slash-command) (`/ask`, or whatever you named it). It's the control-plane escape hatch: pure logic, code-rendered responses, **no model turn** — so it answers even while a channel is over its spend cap, engagement is judging silence, or the model/gateway itself is down. It's intercepted at the **front route** (`channels/discord-front.ts`), before discordChannel's `onCommand` hook ever sees it, so it costs zero inference — unlike every other registered command name, which `onCommand` dispatches to the agent unconditionally.\n\nCommands:\n\n| Command | What it does | Visibility |\n| --- | --- | --- |\n| `/oe status` | Deploy sanity: the deployment sha and eve pin that identify this build, the app version when the deploy carries one, primary/utility model config, the context window and the token count compaction fires at, memory provider. | Ephemeral (only you see it) |\n| `/oe budget status` | This channel's and server's effective spend caps (tokens + USD) and current-month spend — the SAME figures the spend gate enforces. | Ephemeral |\n| `/oe budget raise <usd>` | Proposes a new monthly USD cap for this channel: posts the SAME public approval card `set_spend_limit` posts (Approve/Reject buttons); an admin decides. The ephemeral ack also shows **your own domain's recent spend** from the ledger — see [Spend & cost](../../security/spend-and-cost.md#the-domain-spend-scan-behind-oe-budget-raise). A Discord channel the operator has not declared internal is `external`, so no domain resolves there and the ack says so instead. | Card: public in-channel. Ack: ephemeral |\n| `/oe budget clear` | Proposes clearing this channel's spend-limit override back to the config-as-code cap: posts the SAME public approval card `clear_spend_limit` posts. | Card: public in-channel. Ack: ephemeral |\n| `/oe stop` | Stands down the turn currently running in this channel. **No model turn, nothing spent** — it works while the channel is over its cap, which is when you're most likely to want it. | Ephemeral |\n| `/oe rate <1-5>` | Records one human mark on the [model A/B test](../../extending/models-and-gateway.md#ab-testing-a-challenger-model): rates this channel's most recent champion/challenger turn, on the arm that turn actually ran. Answers \"nothing to rate\" — the normal reply — while the test is off. | Ephemeral |\n| `/oe help` | Lists the commands. | Ephemeral |\n\nDiscord requires picking a concrete subcommand — you can't invoke the bare group (`/oe budget` isn't itself invokable; type `/oe budget status`). Slack's equivalent free-text grammar (`/oe budget`) is more forgiving; see the [Slack guide](./slack.md#slash-commands-oe-zero-inference-control-plane).\n\n### Register `/oe` — the deployment does it itself\n\n**You register nothing.** The deployment reconciles `/oe` against Discord on its own, once per process\nstart: it reads the commands Discord holds for your application at each declared guild, compares them\nwith the command set the code declares, and writes only when they differ. Deploy a build that adds a\nsubcommand and the next cold start registers it.\n\nName the guilds in `agent/commands/discord-commands.ts`:\n\n```ts\nexport const DISCORD_COMMAND_GUILDS: readonly string[] = [\n \"1300000000000000100\", // your server's guild id\n];\n```\n\nA guild id is **tracked config**, not an environment variable — it lives in Git and changes by pull\nrequest, like every other room key ([Config-as-code](../../how-it-works/config-as-code.md)). The two\ncredentials stay environment: `DISCORD_APPLICATION_ID` (Step 1.2) says which application this\ndeployment speaks as, and `DISCORD_BOT_TOKEN` (Step 1.4) authenticates the call. Either one absent and\nthe reconcile reports `skipped` in the boot log and registers nothing — it never fails the boot, and\nneither does a Discord outage: the worst outcome is the command list you already had.\n\nWatch for one line per platform in the deployment's boot log:\n\n```\n[open-everywhere:command-registration] discord: unchanged — guild 152…: \"/oe\" already matches what this deployment declares\n```\n\n**The deployment's write is additive.** It uses Discord's per-command `POST` (create-or-update by\nname), so a command you registered yourself at the same scope — the `/ask`-style command from\n[Step 2](#step-2--register-the-slash-command) — is never touched.\n\nDeclare no guild and the deployment registers nothing and makes no Discord call at all.\n\n⚠️ **Every process holding both credentials reconciles — a local `eve dev`/`eve start` included, and\nit writes the command shape of the checkout that is running.** Do not run a branch that changes the\n`/oe` command set against the deployment's own `DISCORD_BOT_TOKEN`: your server will show that\nbranch's `/oe` until the deployment's next cold start writes it back. Develop such a branch against a\nDiscord application of your own, or with the bot token unset.\n\n#### The one-off CLI, for a global registration\n\n`npm run register:discord-commands` still ships, for the one thing the deployment does not do:\nregistering `/oe` **globally** (every server the app is in). A global command takes up to an hour to\npropagate, which no boot-time check can prove landed, so it stays a deliberate operator step. It\nreads:\n\n```bash\nDISCORD_APPLICATION_ID=… # from Step 1.2\nDISCORD_BOT_TOKEN=… # from Step 1.4\nDISCORD_GUILD_ID=… # optional: guild-scoped (instant) instead of global (~1h propagation)\n```\n\n⚠️ **The CLI is a bulk `PUT`, not an upsert** — unlike the deployment's own additive write above.\nDiscord's bulk endpoint *replaces every command registered at that scope* with exactly the array the\nscript sends (today: `[\"/oe\"]` alone). If you've also registered `/ask` (or anything else) at the\n**same scope** (same guild, or both global), running this script **deletes it** — re-register\neverything you want to keep in one pass.\n\n### Spend caps deliberately do NOT gate `/oe`\n\nThere is no model turn to decline, so `/oe` isn't a \"new spend\" origin — it works in a ⛔'d channel exactly as well as in one with headroom. `/oe budget raise`/`clear` still go through the real approval-card machinery; a human's click, not the command, is what actually changes anything.\n\n## Gotchas\n\n- **Slash command vs. mention.** The **interaction** channel documented here is slash-command-only — a plain `@mention` does nothing on that path. Ambient `@mention` messages (and the [auto-thread](#auto-thread-mention-conversations) behaviour) are served by the separate **Gateway** ingestion surface, which needs the always-on relay configured. If `/ask` doesn't appear, the command isn't registered for that scope, or a global command hasn't propagated yet.\n- **Public Key verification.** Every inbound interaction POST is Ed25519-verified against `DISCORD_PUBLIC_KEY`. If it's wrong or unset, Discord requests are rejected (including the initial PING), the **Interactions Endpoint URL** won't save, and the bot stays silent — check this first.\n- **PING handshake needs the endpoint live first.** Saving the Interactions Endpoint URL triggers an immediate `PING` (type `1`); your instance must already be running with the public key set so it can return the signed `PONG`. Set env → deploy → *then* save the URL.\n- **3-second ack / deferred response.** Discord requires an interaction acknowledgement within 3 seconds. Open Everywhere handles this for you (deferred ack, then edits the original response), so the agent can take as long as it needs — no extra wiring required.\n- **Global vs guild propagation.** Guild commands are instant; global commands can take up to an hour to appear. Register a guild command for setup and testing.\n- **No domain/org memory until the guild is vouched.** Every guild starts `external` (no membership check exists yet — see [Trust is unverified by default](#how-the-silo-model-maps) above), so a fresh guild channel's memory stays wherever the `public` pseudo-domain reaches at most, regardless of whether Discord could confirm the channel `@everyone`-readable. Vouch the guild (`OE_TRUST=internal` or `surfaces.ts`) to unlock an explicit domain or the org brain.\n- **Webhook Events *do* need a separate URL.** The one exception to \"Discord has only one public endpoint per app\": install/uninstall events (Step 1.6) are configured on the **Webhooks** tab with their own URL (`/eve/v1/discord/events`), not the Interactions Endpoint. They share `DISCORD_PUBLIC_KEY`, and they carry **no chat messages** — the feature name misleads; ambient content stays Gateway-only.\n- **`/oe` needs no separate URL.** It rides the SAME Interactions Endpoint URL as everything else in Step 1.5 — Discord has only the one public endpoint per app, so there's nothing extra to configure beyond registering the command itself ([above](#register-oe)).\n",
13
+ markdown: "# Discord\n\nRun a slash command in your Discord server and Open Everywhere acts as an autonomous teammate — it does the work, replies in the channel, and remembers what it learned, scoped correctly per channel.\n\nThis page is the Discord-specific setup runbook. For the concept of a *surface* and how surfaces plug in, see [Surfaces](../../extending/surfaces.md). For how memory is scoped per server and channel, see [Memory](../../capabilities/memory.md). For how Discord's feature set compares to the other surfaces — including what needs the Gateway relay and why — see the [surface support matrix](./support-matrix.md).\n\n**Discord has two ingestion paths, and this page sets up both.** The HTTPS **interactions** endpoint is interaction-based: on it, the only way to invoke the agent is an explicitly-registered slash command, and a plain `@mention` does nothing. Ambient `@mention`s, DMs, name-drops and channel follow-ups arrive over the separate **Gateway** path instead, which needs the always-on relay ([`deploy/discord-relay/`](../../../deploy/discord-relay/README.md)) — Discord never delivers those to an HTTP endpoint. The [surface support matrix](./support-matrix.md) marks every Gateway-dependent row with footnote ¹.\n\n## How the silo model maps\n\nOpen Everywhere's memory is [opt-in domains and silos](../../capabilities/memory.md), not an\nautomatic per-guild tier stack. A Discord channel/thread/DM is a **surface**; the guild is the\nnatural `workspace` identity key its channels' surface keys share, but sharing memory across\nthem still needs an explicit `domain` or the `org` pseudo-domain fallback — and (see \"Trust\"\nbelow), by default no Discord surface reaches either.\n\n| Open Everywhere concept | Discord thing |\n| --- | --- |\n| `org` (tenant) | your deployment (`deploymentIdentity.org` in `agent/identity/surfaces.ts`, one org per deploy today) |\n| `workspace` (identity key) | the **guild** (server) — its id (`guild_id`) |\n| `surface` (partition key) | the individual **channel or thread** (`channel_id`) |\n| `mode` | `channel` (guild text channel/thread), `dm` (1:1 DM, channel type `1`), `mpim` (group DM, type `3`) |\n| `visibility` | `public` only for a confirmed @everyone-readable guild channel; everything else `private` |\n\n**Visibility is tracked but isn't the memory gate.** Discord interaction payloads carry *no*\nclean public/private bit — channel readability is governed by per-role `@everyone`\n`VIEW_CHANNEL` permission overwrites, which aren't in the payload — so guild channels default\nto **`private`** (`discordVisibility`) until a future enrichment positively confirms\n`@everyone` can view them. DMs (type `1`) and group DMs (type `3`) are inherently private.\nNone of this decides whether memory shares, though — see below.\n\n**Trust is unverified by default — every guild starts `external`.** Open Everywhere has no\nDiscord guest/`@everyone`-membership check yet, so `bindDiscord` leaves `trust` undefined,\nwhich **fails closed to `external`**: a fresh guild channel gets read-only `public` memory at\nmost — never an explicit domain's silo, never the `org` brain — public-looking channel or not.\nA public Discord server is full of strangers, so a guild existing is not proof of org\nmembership. To unlock domain/org memory, the operator explicitly **vouches** it: set\n`identity.blanketTrust: \"internal\"` in `agent/settings/settings.ts` for a single-tenant deployment where every guild you'll ever be in is\ntrusted, or vouch specific guilds via a `discord/<guild_id>` (or `discord/<channel_id>` for one\nchannel) entry in `agent/identity/surfaces.ts`. Unvouched, the bot still answers slash\ncommands (chat-only, no shared memory); vouched, normal domain/org resolution applies exactly\nas it does for any other internal channel.\n\n**DMs are personal universes.** A DM has no guild, so it keys to the **caller's own user id**\nas the workspace — fully isolated from the server brain and from other users' DMs. The\npersonal DB silo is always writable regardless of trust; only the *shared read layer* on top\nof it needs a vouch (the same DM-partner-trust gate every platform uses).\n\n## Auto-thread (mention conversations)\n\nWhen the bot is reachable over the **Gateway** ingestion surface (ambient `@mention` messages, as opposed to the slash-command interaction path above), a mention starts a **thread** and the whole conversation happens in it — the signature \"one task = one thread\" pattern Open Everywhere uses on Slack.\n\n| Where you mention it | What happens |\n| --- | --- |\n| A **base channel** (guild text or announcement) | The bot **opens a thread** hanging off your message and replies there. That thread is its own **conversation** — its own durable session and per-thread notes — while still counting as part of the parent channel for domains and spend caps (below). Keep talking in the thread — no need to re-mention. |\n| **Already inside a thread** | It replies **in place** (a thread is already its own conversation). |\n| A **DM or group DM** | It replies **in place** (Discord has no threads in DMs). |\n| A **forum** channel | It replies **in place** (a forum post is itself a thread — it doesn't nest). |\n\nEach auto-created thread is named from your message (the mention stripped, truncated to Discord's 100-char cap; an empty message falls back to `Conversation with the agent`). A **second** mention in the base channel starts a **second** thread — one task per thread, by design.\n\n**Threads belong to their channel.** Although a Discord thread is technically its own channel id, Open Everywhere treats a thread as part of its **parent channel** for everything scoped to channels — [memory domain](../../capabilities/memory.md) membership (silo, access bundle, model route), domain-admin standing, and **spend caps** (a cap on the channel accumulates and gates its threads' usage too, and a cap proposed *from* a thread targets the parent channel). This matches Slack, where threads share the channel. Only the *conversation* is per-thread: the durable session, engagement, and the thread's own surface-tier notes. Parent resolution is best-effort — if the one-time lookup fails, that thread simply behaves as an unaffiliated channel for the turn (never blocked).\n\n**Toggle — `discord.autoThread`** (default **on**). Set it to `false` to reply **inline in the base channel** instead of opening a thread. It is a typed setting, not an environment variable, so opting out is a reviewed diff in your own `agent/settings/settings.ts`:\n\n```ts\n// agent/settings/settings.ts\nexport default defineSettings({\n discord: { autoThread: false }, // opt out: reply inline in the base channel, no thread\n});\n```\n\n**Fails open.** If the bot lacks **Create Public Threads** / **Send Messages in Threads** (or Discord rate-limits the create), thread creation is skipped and the turn still runs as an **inline** reply in the base channel — degraded, never dropped. Grant both permissions in [Step 3](#step-3--invite-the-bot) to get threads.\n\n**DMs need no mention.** Over the Gateway surface a direct message (or group DM) to the bot always wakes it — a DM is by definition addressed to the bot, so just talk to it. In guild channels the usual rule applies: an `@mention` starts a conversation; after that the bot follows the thread without re-mentioning.\n\n**Name-drops (opt-in, per domain).** With `nameDropWake: true` on the channel's [memory domain](../../capabilities/memory.md) — same flag as Slack — a guild message that says one of the bot's names without @mentioning it gets a *judged* reply: the bot answers only when the message is clearly for it, and stays silent otherwise. The name-token set is the same rule as Slack's (see [that surface's doc](slack.md)): the bot's **display name** (its server nickname, if set) UNION the deployment's `identity.name`, extended by `wake.nameDrop.include` and narrowed by `wake.nameDrop.exclude` (configuration-reference.md) — exclude always wins. Works in channels *and* un-followed threads (a deliberate extension over Slack, where threads belong to the engagement path). Scope matters for what happens next: a name-drop **in a thread** puts the bot into follow mode for that thread (small scope — same grain as Slack, where a name-drop's reply thread is followed); a name-drop **in a base channel** does *not* — following a whole channel means a judged model turn on every subsequent message, so there you @mention it (or say its name again) to continue. When it does follow a thread off a name-drop, it starts as a **warm watcher** (see *Stopping it following* below). Off by default; requires a Gateway relay recent enough to forward the bot's identity (older relays simply never name-wake). The road is audited on Discord exactly as it is on Slack: an admitted name-drop writes `surface.name_drop_woke` (naming the channel, the message id and `road: \"native\"` — this surface hands off to no standing seat), and a name-drop the domain flag refuses writes `surface.name_drop_silent`. A message that names nobody writes neither row. A judged wake also arrives with a short, **untrusted-wrapped backscroll** of the surrounding conversation (recent messages, capped) so the model can tell whether the message is really for it — the same context an @mention gets.\n\n### Stopping it following\n\nEngagement has no hard timeout, but a lightly-latched surface **sheds itself** — the same model as Slack:\n\n- **Participating** surfaces (you @mentioned the bot, or it actually replied) are **sticky**: they keep following every message there (each one a judged model turn, so a followed surface has a real per-message cost) until you ask it to stop. Just say so, however you'd phrase it to a colleague — \"you can stop following this\", \"we're good here\". This is **judged, not pattern-matched**: the agent reads the intent and calls `stand_down`, which sets a durable marker on the surface. There is deliberately no magic word (the regex that used to look for one disengaged on \"don't stop the deploy\" as readily as on \"stop\"). Mention it again any time to re-engage — that clears the marker. This is a **channel-only** verb — a DM has no `@mention` to clear a marker with, so `stand_down` refuses there instead of trapping the conversation silent for good.\n- **Warm watchers** (a thread the bot entered off a *name-drop* but hasn't yet replied in) are **not** sticky: if it judges \"no reply\" on three consecutive messages, it quietly **disengages** itself — so a one-off name-drop that wasn't really for it never leaves it silently following forever. The moment it does reply (or you @mention it), the surface is promoted to participating and the count resets.\n\n### Stopping a turn that's already running\n\nDifferent problem, different mechanism. Standing down happens *between* turns; stopping a turn\nthat is **in flight** can't be inferred at all, because the bot is the thing that's busy and your\nmessage would queue behind the very turn it's meant to stop. So it's an affordance:\n\n- react **✋** on the message — the host adds it when a turn actually kicks work off (its first\n delegation) and removes it when the turn ends, so it's there to click exactly while a stop means\n something, and never appears on a message the bot merely read;\n- or run **`/oe stop`**, which needs no reaction permission and takes no arguments.\n\nBoth are decided at ingress with **no model call and nothing spent**, so they keep working while\nthe channel is over its spend cap. ⚠️ The ✋ route needs a Gateway relay recent enough to forward\nreactions — an older deployed relay never forwards them, and `/oe stop` covers the gap.\n\nWhat a stop does, precisely: the turn's history rolls back to its last completed model call, but\n**anything already done is done** — tool calls inside the interrupted step had real effects and\nare not undone, and a running sandbox command can't be killed. The acknowledgement says \"stood\ndown\", never \"stopped\", and names what had already run.\n\n### Working indicators (status UX)\n\nWhile a turn runs (often 30s+), the bot shows it's on the case using Discord's native affordances — no extra messages, no edits:\n\n- It reacts **👀** on your message the moment it picks it up (\"seen, working\") — on any direct address (a mention or a DM).\n- While it works, Discord's native **typing indicator** shows (\"*Open Everywhere is typing…*\"), re-triggered as the turn progresses. The answer then arrives as a fresh message.\n- **Judged wakes hold typing back.** On a followed (engaged) surface or a name-drop, the model judges each message and may decide no reply is warranted. Those turns show **no typing at all until the reply is actually being written** — so a judged pass is silent from the first second, instead of \"typing… for 10 seconds, then nothing\" (which reads as a crash). Direct addresses (mentions and DMs) always answer, so they show typing immediately.\n- **On an auto-threaded mention** the 👀 is **removed** when the answer lands in the thread — absence is the done signal, visible from the base channel without opening the thread. (The bot never plants a ✅ — that stays reserved for humans, same convention as Slack.) Elsewhere the 👀 simply stands as the ack; the answer arrives right underneath.\n\n**Toggle — `discord.statusUx`** (default **on**). Like `autoThread` it is a typed setting, not an environment variable: set `discord: { statusUx: false }` in your own `agent/settings/settings.ts` for plain replies with no reaction or typing. All indicators are best-effort: a failed reaction or typing call never delays or drops the answer.\n\n### Reaction ingestion (feedback signal)\n\nOver the **Gateway** relay the bot also *ingests* inbound reactions. A 👍 / 👎 (or any emoji) on one of the **bot's own replies** is recorded as a lightweight human **feedback** signal — durable, append-only, carrying only the reactor's id + the emoji, never any message text. Reactions on *other* messages emit anonymous volume telemetry but aren't stored, and the bot's own status reactions (👀) are never counted. This needs the **Guild Message Reactions** and **Direct Message Reactions** gateway intents, which the relay already requests (they're not privileged — no portal toggle). Older relays that predate this simply never forward reactions, so the feature is silently off until you redeploy the relay.\n\n### Spend caps\n\nGuild channels are subject to the same [monthly spend caps](../../security/spend-and-cost.md) as every surface: a channel (or guild) over its budget **declines** new mentions with a visible message rather than silently ignoring them. The decline message names the exact scope keys, so a follow-up DM proposal can target them.\n\n**Admins are never locked out.** If the sender is an admin over the scope — on the config roster (`Domain.admins`), or a Discord-verified administrator/owner of the guild — the turn proceeds past the cap with a visible `⚠️ … proceeding because you're an admin` line (throttled to once per channel per hour — subsequent bypassed turns proceed quietly) and an audit entry (`spend.cap_bypassed`) on every bypass. Sudo semantics: the cap binds the team's ambient usage; the budget owner steps over it visibly and can raise or clear it right there (\"set this channel's cap to $5\" → approval card).\n\nDMs are capped like any other surface. The escape hatch is the **admin bypass**: an org admin's own DM turn proceeds past the cap with the visible warning and an audit row, so they can still propose an override (passing the scope key from the decline message) and approve it on the card **in the DM** — a DM click is decided by checking the clicker's admin standing in the target guild over REST, since Discord DM interactions carry no member permissions. One default from a DM is still refused: a Discord DM belongs to no server, so a `\"workspace\"` cap defaulted there would target your personal DM bucket rather than the guild you meant — pass an explicit `discord/<serverId>` key. (`level: \"surface\"` from a DM is fine now: it targets that DM, which is a scope the gate really enforces.)\n\n## Prerequisites\n\n- A Discord **server you manage** with the **Manage Server** permission (needed to add the bot and, optionally, to register guild-scoped commands).\n- A reachable Open Everywhere instance — deployed with a **public HTTPS URL**. Discord delivers interactions as signed HTTPS POSTs from its own infrastructure and **cannot reach `localhost`**; for local dev expose your instance with a tunnel (e.g. `ngrok http 3000`) and use that HTTPS URL. See the [docs index](../../README.md) to get the project and the [setup runbook](../setup-runbook.md) for the deployment steps.\n- Your instance's public base URL. The Discord interactions route is **`/eve/v1/discord`**, so Discord calls `https://<your-deploy-url>/eve/v1/discord`.\n\n## Step 1 — Create the Discord application + bot\n\n1. Go to the [Discord Developer Portal](https://discord.com/developers/applications) → **New Application**. Name it (e.g. `Open Everywhere`). Upload [`brand/png/mark-square-1024.png`](../../../brand/png/mark-square-1024.png), the project mark, as the **App Icon** on **General Information** and as the bot's **Icon** on the **Bot** tab. Skip this when you set [`identity.name`](../configuration-reference.md) and chose your own icon: with no name configured the agent presents as the project, so the project mark is its default avatar.\n2. On **General Information**, copy the **Application ID** — this is `DISCORD_APPLICATION_ID`.\n3. Still on **General Information**, copy the **Public Key** — this is `DISCORD_PUBLIC_KEY`. It verifies the Ed25519 signature on every inbound interaction POST.\n4. Go to the **Bot** tab → **Reset Token** → copy the token — this is `DISCORD_BOT_TOKEN`. (Treat it like a password; it's shown once.)\n5. Set the **Interactions Endpoint URL** (on **General Information**) to:\n\n ```\n https://<your-deploy-url>/eve/v1/discord\n ```\n\n When you save this, Discord immediately POSTs a `PING` (interaction type `1`) and expects a signed `PONG` back. **Your instance must already be deployed, running, and reachable with `DISCORD_PUBLIC_KEY` configured** (Step 4) or Discord rejects the URL. Set the env first, deploy, *then* save this field.\n\n > ⚠️ **Use your STABLE production domain here** (e.g. `your-app.vercel.app`), never a\n > deployment-specific URL (`your-app-<hash>-team.vercel.app`). Deployment URLs stay alive\n > forever pointing at that one old build — interactions (including approval-card button\n > clicks) would keep hitting stale code after every redeploy, failing in ways that look\n > like application bugs.\n\n6. *(Optional, recommended)* Go to the **Webhooks** tab → set the **Webhook Events URL** to:\n\n ```\n https://<your-deploy-url>/eve/v1/discord/events\n ```\n\n and subscribe to **`APPLICATION_AUTHORIZED`** and **`APPLICATION_DEAUTHORIZED`**. This is a\n **different URL** from the Interactions Endpoint above — Discord configures the two separately —\n but it is verified with the **same** `DISCORD_PUBLIC_KEY`, so there is nothing new to set.\n\n It gives OE an install/uninstall audit trail: each event writes a `surface.app_installed` /\n `surface.app_uninstalled` row (guild as the workspace, the authorizing user as the principal),\n queryable over the control plane's audit route. Without it OE has no signal that a server added\n or removed the app short of noticing silence.\n\n **Observability only** — this route gates nothing, wakes no session, and drops nothing. Leaving\n it unconfigured changes no behaviour. Note that Webhook Events deliberately do **not** carry chat\n messages: ambient channel content is Gateway-only and still needs the always-on relay (see the\n [surface support matrix](./support-matrix.md)).\n\n## Step 2 — Register the slash command\n\nThe channel handler does **not** filter on a specific command name — its `onCommand` hook accepts *any* registered application command, attaches the real Discord identity, and dispatches. So you register one command and pick its name. The command maps to the model prompt via `commandInteractionMessage`: it uses the value of a string option named **`message`** when present, otherwise it reconstructs `/command opt:value …`. **Register a command with a required `message` string option** so users type their request naturally.\n\nRegister with the Discord API (no helper script ships today). **Guild** commands appear **instantly** in that one server; **global** commands can take **up to an hour** to propagate — use a guild command while testing.\n\nGuild-scoped (instant, recommended for setup):\n\n```bash\ncurl -X POST \\\n \"https://discord.com/api/v10/applications/$DISCORD_APPLICATION_ID/guilds/$GUILD_ID/commands\" \\\n -H \"Authorization: Bot $DISCORD_BOT_TOKEN\" \\\n -H \"Content-Type: application/json\" \\\n -d '{\n \"name\": \"ask\",\n \"type\": 1,\n \"description\": \"Ask Open Everywhere to do something\",\n \"options\": [\n { \"name\": \"message\", \"description\": \"What should it do?\", \"type\": 3, \"required\": true }\n ]\n }'\n```\n\nGlobal (drop `/guilds/$GUILD_ID`, propagation up to ~1h):\n\n```bash\ncurl -X POST \\\n \"https://discord.com/api/v10/applications/$DISCORD_APPLICATION_ID/commands\" \\\n -H \"Authorization: Bot $DISCORD_BOT_TOKEN\" \\\n -H \"Content-Type: application/json\" \\\n -d '{ \"name\": \"ask\", \"type\": 1, \"description\": \"Ask Open Everywhere to do something\",\n \"options\": [ { \"name\": \"message\", \"description\": \"What should it do?\", \"type\": 3, \"required\": true } ] }'\n```\n\n(`type: 1` = CHAT_INPUT slash command; option `type: 3` = STRING. Name it `openeverywhere` instead of `ask` if you prefer.)\n\n## Step 3 — Invite the bot\n\n1. In the Developer Portal → **OAuth2** → **URL Generator**.\n2. Under **Scopes**, tick **`applications.commands`** (required for slash commands) and **`bot`**.\n3. Under **Bot Permissions**, tick:\n - **Send Messages** — post replies (interaction responses and Gateway/REST posts).\n - **Create Public Threads** — open a thread per conversation (see [Auto-thread](#auto-thread-mention-conversations)).\n - **Send Messages in Threads** — reply inside those threads.\n\n Without the two thread permissions the bot **falls back to inline replies** (auto-thread fails open — it never drops a turn), so the minimum for slash commands alone is just **Send Messages**. The agent replies via the interaction token for slash commands, so it doesn't need broad permissions.\n4. Copy the generated URL, open it, pick your server, and **Authorize**. You need **Manage Server** on that server to complete the invite.\n\n## Step 4 — Configure the environment\n\nSet these on your instance, then deploy:\n\n```bash\nDISCORD_APPLICATION_ID=… # Application ID from Step 1.2\nDISCORD_PUBLIC_KEY=… # Public Key from Step 1.3 (verifies signed interaction POSTs)\nDISCORD_BOT_TOKEN=… # Bot token from Step 1.4\n```\n\nOptional, but relevant to the silo model:\n\n```bash\nOE_MEMORY_PROVIDER=git # memory backend — git | sqlite\nOE_MEMORY_DIR=/abs/path/to/store\n```\n\n**Identity binds automatically.** You do **not** set workspace, surface, mode, or visibility by hand. The Discord channel reads the guild/channel/user ids and the channel `type` straight off each inbound interaction into the session auth context (`buildDiscordAuth`), and `bindDiscord` derives workspace = the guild, surface = the channel, plus mode and visibility. The `deploymentIdentity.workspace` / `.surface` declaration in `agent/identity/surfaces.ts` is only the `eve dev` gap-filler — once Discord is wired it is ignored.\n\n## Step 5 — Invoke it\n\n1. In a guild channel, run `/ask summarise the last few messages and list the action items`.\n2. Expected behaviour:\n - Discord shows a **`Thinking…`** typing indicator while the agent works (the channel calls `startTyping()` on dispatch).\n - It **acks within 3 seconds with a deferred response**, then edits that original response in place with the answer once the agent finishes — so longer tasks don't time out.\n - The reply lands in the channel, scoped to that channel's surface silo.\n3. Test a DM: open a direct message with the bot and run `/ask …` there. It responds the same way; the DM surface's memory is isolated to you and `private`.\n\n## Rotating the bot token\n\n**Reset Token** in the Developer Portal (Step 1.4) invalidates the old token immediately. Two\n**deployed** stores hold that token. Each one needs its own update, and neither picks the new value\nup on its own.\n\n| Store | What holds the token | How the new value takes effect |\n| --- | --- | --- |\n| Vercel production | `DISCORD_BOT_TOKEN` on the deployment | an explicit redeploy |\n| Railway | `DISCORD_BOT_TOKEN` on the always-on relay ([`deploy/discord-relay/`](../../../deploy/discord-relay/README.md)) | a relay redeploy |\n\nA rotation that reaches only the deployment leaves the relay dead. That failure is quiet: the slash\ncommand still works, and every HTTPS route still answers.\n\nA local checkout keeps its own copy — `deploy/discord-relay/.env`, and the repo-root `.env`. Those\nare operator copies, not deployed stores. Update one the next time you run it locally.\n\n### The Vercel half\n\n`git push` does not deploy, and a running deployment keeps the value it booted with:\n\n```bash\nvercel env rm DISCORD_BOT_TOKEN production -y # the name exists already — remove, then re-add\nvercel env add DISCORD_BOT_TOKEN production\nvercel deploy --prod\n```\n\n`deploy:census` does **not** see this half. It reads credential rows out of the store, and this\ntoken is an environment variable. Prove it by hand instead: run `/ask …` in a guild channel\n(Step 5). A dead token fails every Discord API call the deployment makes.\n\n### The Railway half\n\n**The relay reads the token ONCE, at boot.** `deploy/discord-relay/index.js` reads\n`process.env.DISCORD_BOT_TOKEN` at module load, then logs in with that value. A variable change alone\nchanges nothing on a running relay. The process holds the dead token until it restarts.\n\n```bash\ncd deploy/discord-relay\nread -rs -p 'new DISCORD_BOT_TOKEN: ' NEW_TOKEN && \\\n railway variables --set DISCORD_BOT_TOKEN=\"$NEW_TOKEN\" --skip-deploys && unset NEW_TOKEN\nrailway redeploy -y\nrailway logs # expect: \"[oe-discord-relay] ready as <bot>#0000 | mode: FORWARD\"\n```\n\n`read -rs` keeps the token out of your **shell history** and off the **screen** — a token typed as a\nliteral argument stays in the history file long after the rotation. `unset` drops it from the\nenvironment as soon as Railway holds it.\n\n🔴 **It does NOT hide the token from the process table.** The shell expands `\"$NEW_TOKEN\"` before it\nruns `railway`, so the value is visible in that process's `ps` and `/proc/<pid>/cmdline` entry for\nthe life of the call. Rotate on a machine you trust, never on a shared box or a runner other\ntenants can read.\n\n`--skip-deploys` holds the restart back, so the redeploy is one explicit step you can watch. The\n`ready as` line is the proof — the relay holds the Gateway socket again, with the new token.\n\n### What a missed relay looks like\n\nDiscord closes the relay's Gateway socket at the reset hour. Ambient channel and DM messages stop\narriving, because Discord delivers them over that socket only. Slash commands keep working, so the\nsurface looks half-alive.\n\n`npm run deploy:census` catches it: `discord.heartbeat` goes red. Read that row correctly. The\n**relay** POSTs the heartbeat on its own timer; the **deployment** writes the row, once the signed\nPOST passes the relay gate. After a token rotation the cause is the stale relay, so the remedy is\nthe relay redeploy above. A red row under a LIVE relay points at the ingest side instead — an\n`OE_RELAY_SECRET` mismatch, or a route that refuses. Check `railway logs` for `ingest rejected`\nbefore you redeploy anything. Restart the relay, then run the census again.\n\nThe check needs Discord mounted, and it needs the census run's OWN `OE_RELAY_HEARTBEAT_MS` mirror\nnon-zero and matching the relay's configured interval. The census reads its own copy of that name,\nnever the relay's — see [rollback](../rollback.md).\n\n### `.env.e2e` does not hold this token\n\nThe e2e tier drives Discord with `E2E_DISCORD_DRIVER_TOKEN`, and that is a **different bot** — the\ntest driver, a second application the `wake.driverAllowlist` setting admits\n(`packages/core/scripts/e2e/env.ts`). Resetting the deployment's own bot token does not invalidate\nit. No code in this repository reads the deployment's bot token out of `.env.e2e`, so a rotation\nleaves that file alone.\n\n## What the agent calls itself here\n\nA Discord session's IDENTITY — the name it introduces itself by — comes from one place only: the\n[`identity.name`](../configuration-reference.md) setting. Set it and it **wins on every surface**,\nbyte-identically — the right answer for a deployment that spans Slack and Discord from one window:\none name, everywhere. Unset, the session renders the generic identity line (\"this team's agent\").\nIt never borrows a name from another surface, and never from this surface's own Discord account\nname either — that is a HANDLE, not an identity (OPE-610).\n\nSeparately, the session also carries a HANDLE line — \"your mention/handle here appears as X\" — so\nthe agent recognises its own mentions and backscroll lines under the bot account's real Discord\nname. The agent reads it once per instance from `GET /users/@me` (the same `DISCORD_BOT_TOKEN` this\nintegration already uses to post replies), preferring the account's display name (`global_name`)\nand falling back to its username. A rename on Discord takes effect on the next cold start. If the\nread fails (no token, a transport error), the session simply carries no handle line; the identity\nline above is unaffected either way.\n\n## Reading channel/thread history\n\nDiscord supports the generic `read_channel`/`read_thread` verbs (the same tools Slack and Teams\nuse — since OPE-1145 no per-surface reader stands beside them on any surface), backed by the plain\nDiscord REST API\n(`GET /channels/{id}/messages`) — the **same `DISCORD_BOT_TOKEN`** this integration already uses to\npost replies (Step 1.4/Step 4 above). The read adapter (`packages/providers/discord/agent/channels/discord-read.ts`'s\n`discordReadAdapter`, registered into core's read-adapter registry at boot) reuses that token verbatim, so **there is no extra Discord- or Azure-side\nconfiguration to grant** — unlike Teams, which needs a separate Graph token/permission because its\nBot Framework Connector token can't read history.\n\n- **A Discord thread is its own channel id.** Discord threads aren't a sub-resource of their parent\n channel the way Slack/Teams threads are — a thread IS a channel, with its own id. So\n `read_thread`'s thread identifier for Discord is that thread's channel id, and the adapter simply\n reads it with the same `GET /channels/{id}/messages` call `read_channel` uses against a base\n channel. Both ids come from the turn's own binding — neither verb takes a target.\n- **Bounded, single page.** Unlike Teams' paginated Graph reads, one GET returns up to 100 messages\n (Discord's own per-request cap) — a requested `limit` above 100 is silently clamped, never fanned\n out across pages.\n- **Scope.** The verbs read THE CONTAINER THE WAKE ARRIVED IN and take no target, so no other\n channel is addressable. The domain allowlist still runs inside the adapter as defence in depth.\n An out-of-scope channel is refused before any Discord GET, and every refusal writes a\n `read.refused` audit row naming the channel, the caller's domain and the verdict (ids only, never\n message content) — queryable with `GET /control/v1/audit?since=<iso>&actions=read.refused`.\n\n## Identity linking\n\n[Identity linking](../../how-it-works/identity.md) joins a person's Discord account to their\naccounts elsewhere. Discord supports **both halves** of the preferred *directory* transport, so a\nperson can name their other account instead of carrying a code between two surfaces.\n\n- **The account directory** searches the guilds your domains declare in their `reach` lists\n (`agent/memory/config/domains/<name>.ts`) — one `GET /guilds/{id}/members/search` per guild, so\n Discord itself does the matching. A guild nobody configured is never searched, and bots are\n dropped (a link is a statement about a human).\n- **The DM ask** opens the 1:1 conversation with `POST /users/@me/channels` and posts the consent\n request there. No extra permission: Discord delivers a bot DM when the recipient shares a server\n with the bot and has not turned off direct messages from server members.\n- **Two buttons** ride under the ask, and a tap answers it with no model turn. The tap returns to the\n same **Interactions Endpoint URL** the approval cards already use, so there is nothing extra to\n configure. The answer is **ephemeral** — only the person who tapped\n sees it. A tap from a server channel is refused with a pointer back to the DM.\n\n⚠️ **The directory needs the privileged `SERVER MEMBERS` intent.** Turn on **Privileged Gateway\nIntents → Server Members Intent** on your application's **Bot** page in the Discord developer\nportal. Without it Discord answers `403` to the member endpoints, the directory resolves empty, and\nlinking falls back to the **code** transport — which still works and says which capability was\nmissing. Directory rights are fine to require for the better path; they are never a precondition for\nlinking at all.\n\nBecause Discord can DM, a `link <code>` claim typed **in a channel** is now refused with a pointer to\nthe DM, and the code is not spent. A code is a bearer secret for its whole life, and a room has an\naudience.\n\n## Proactive routines\n\nScheduled [routines](../../capabilities/proactivity-and-routines.md) work on Discord: create one with a slash command (\"every hour, check …\") and the fired result posts back **into the same channel** via the REST create-message endpoint (the bot token from Step 1 — no Gateway websocket involved). The post-back target is captured automatically when the routine is created; nothing to configure. Spend caps apply to guild-channel routines — and to 1:1 DM routines too, same as Slack: a fire never gets the admin bypass, because there is no attending admin to bypass on its behalf.\n\n## Slash commands: `/oe` (zero-inference control-plane)\n\n`/oe` is a **second, separate** slash command from the model-dispatching one registered in [Step 2](#step-2--register-the-slash-command) (`/ask`, or whatever you named it). It's the control-plane escape hatch: pure logic, code-rendered responses, **no model turn** — so it answers even while a channel is over its spend cap, engagement is judging silence, or the model/gateway itself is down. It's intercepted at the **front route** (`channels/discord-front.ts`), before discordChannel's `onCommand` hook ever sees it, so it costs zero inference — unlike every other registered command name, which `onCommand` dispatches to the agent unconditionally.\n\nCommands:\n\n| Command | What it does | Visibility |\n| --- | --- | --- |\n| `/oe status` | Deploy sanity: the deployment sha and eve pin that identify this build, the app version when the deploy carries one, primary/utility model config, the context window and the token count compaction fires at, memory provider. | Ephemeral (only you see it) |\n| `/oe budget status` | This channel's and server's effective spend caps (tokens + USD) and current-month spend — the SAME figures the spend gate enforces. | Ephemeral |\n| `/oe budget raise <usd>` | Proposes a new monthly USD cap for this channel: posts the SAME public approval card `set_spend_limit` posts (Approve/Reject buttons); an admin decides. The ephemeral ack also shows **your own domain's recent spend** from the ledger — see [Spend & cost](../../security/spend-and-cost.md#the-domain-spend-scan-behind-oe-budget-raise). A Discord channel the operator has not declared internal is `external`, so no domain resolves there and the ack says so instead. | Card: public in-channel. Ack: ephemeral |\n| `/oe budget clear` | Proposes clearing this channel's spend-limit override back to the config-as-code cap: posts the SAME public approval card `clear_spend_limit` posts. | Card: public in-channel. Ack: ephemeral |\n| `/oe stop` | Stands down the turn currently running in this channel. **No model turn, nothing spent** — it works while the channel is over its cap, which is when you're most likely to want it. | Ephemeral |\n| `/oe rate <1-5>` | Records one human mark on the [model A/B test](../../extending/models-and-gateway.md#ab-testing-a-challenger-model): rates this channel's most recent champion/challenger turn, on the arm that turn actually ran. Answers \"nothing to rate\" — the normal reply — while the test is off. | Ephemeral |\n| `/oe help` | Lists the commands. | Ephemeral |\n\nDiscord requires picking a concrete subcommand — you can't invoke the bare group (`/oe budget` isn't itself invokable; type `/oe budget status`). Slack's equivalent free-text grammar (`/oe budget`) is more forgiving; see the [Slack guide](./slack.md#slash-commands-oe-zero-inference-control-plane).\n\n### Register `/oe` — the deployment does it itself\n\n**You register nothing.** The deployment reconciles `/oe` against Discord on its own, once per process\nstart: it reads the commands Discord holds for your application at each declared guild, compares them\nwith the command set the code declares, and writes only when they differ. Deploy a build that adds a\nsubcommand and the next cold start registers it.\n\nName the guilds in `agent/commands/discord-commands.ts`:\n\n```ts\nexport const DISCORD_COMMAND_GUILDS: readonly string[] = [\n \"1300000000000000100\", // your server's guild id\n];\n```\n\nA guild id is **tracked config**, not an environment variable — it lives in Git and changes by pull\nrequest, like every other room key ([Config-as-code](../../how-it-works/config-as-code.md)). The two\ncredentials stay environment: `DISCORD_APPLICATION_ID` (Step 1.2) says which application this\ndeployment speaks as, and `DISCORD_BOT_TOKEN` (Step 1.4) authenticates the call. Either one absent and\nthe reconcile reports `skipped` in the boot log and registers nothing — it never fails the boot, and\nneither does a Discord outage: the worst outcome is the command list you already had.\n\nWatch for one line per platform in the deployment's boot log:\n\n```\n[open-everywhere:command-registration] discord: unchanged — guild 152…: \"/oe\" already matches what this deployment declares\n```\n\n**The deployment's write is additive.** It uses Discord's per-command `POST` (create-or-update by\nname), so a command you registered yourself at the same scope — the `/ask`-style command from\n[Step 2](#step-2--register-the-slash-command) — is never touched.\n\nDeclare no guild and the deployment registers nothing and makes no Discord call at all.\n\n⚠️ **Every process holding both credentials reconciles — a local `eve dev`/`eve start` included, and\nit writes the command shape of the checkout that is running.** Do not run a branch that changes the\n`/oe` command set against the deployment's own `DISCORD_BOT_TOKEN`: your server will show that\nbranch's `/oe` until the deployment's next cold start writes it back. Develop such a branch against a\nDiscord application of your own, or with the bot token unset.\n\n#### The one-off CLI, for a global registration\n\n`npm run register:discord-commands` still ships, for the one thing the deployment does not do:\nregistering `/oe` **globally** (every server the app is in). A global command takes up to an hour to\npropagate, which no boot-time check can prove landed, so it stays a deliberate operator step. It\nreads:\n\n```bash\nDISCORD_APPLICATION_ID=… # from Step 1.2\nDISCORD_BOT_TOKEN=… # from Step 1.4\nDISCORD_GUILD_ID=… # optional: guild-scoped (instant) instead of global (~1h propagation)\n```\n\n⚠️ **The CLI is a bulk `PUT`, not an upsert** — unlike the deployment's own additive write above.\nDiscord's bulk endpoint *replaces every command registered at that scope* with exactly the array the\nscript sends (today: `[\"/oe\"]` alone). If you've also registered `/ask` (or anything else) at the\n**same scope** (same guild, or both global), running this script **deletes it** — re-register\neverything you want to keep in one pass.\n\n### Spend caps deliberately do NOT gate `/oe`\n\nThere is no model turn to decline, so `/oe` isn't a \"new spend\" origin — it works in a ⛔'d channel exactly as well as in one with headroom. `/oe budget raise`/`clear` still go through the real approval-card machinery; a human's click, not the command, is what actually changes anything.\n\n## Gotchas\n\n- **Slash command vs. mention.** The **interaction** channel documented here is slash-command-only — a plain `@mention` does nothing on that path. Ambient `@mention` messages (and the [auto-thread](#auto-thread-mention-conversations) behaviour) are served by the separate **Gateway** ingestion surface, which needs the always-on relay configured. If `/ask` doesn't appear, the command isn't registered for that scope, or a global command hasn't propagated yet.\n- **Public Key verification.** Every inbound interaction POST is Ed25519-verified against `DISCORD_PUBLIC_KEY`. If it's wrong or unset, Discord requests are rejected (including the initial PING), the **Interactions Endpoint URL** won't save, and the bot stays silent — check this first.\n- **PING handshake needs the endpoint live first.** Saving the Interactions Endpoint URL triggers an immediate `PING` (type `1`); your instance must already be running with the public key set so it can return the signed `PONG`. Set env → deploy → *then* save the URL.\n- **3-second ack / deferred response.** Discord requires an interaction acknowledgement within 3 seconds. Open Everywhere handles this for you (deferred ack, then edits the original response), so the agent can take as long as it needs — no extra wiring required.\n- **Global vs guild propagation.** Guild commands are instant; global commands can take up to an hour to appear. Register a guild command for setup and testing.\n- **No domain/org memory until the guild is vouched.** Every guild starts `external` (no membership check exists yet — see [Trust is unverified by default](#how-the-silo-model-maps) above), so a fresh guild channel's memory stays wherever the `public` pseudo-domain reaches at most, regardless of whether Discord could confirm the channel `@everyone`-readable. Vouch the guild (`identity.blanketTrust: \"internal\"` or `surfaces.ts`) to unlock an explicit domain or the org brain.\n- **Webhook Events *do* need a separate URL.** The one exception to \"Discord has only one public endpoint per app\": install/uninstall events (Step 1.6) are configured on the **Webhooks** tab with their own URL (`/eve/v1/discord/events`), not the Interactions Endpoint. They share `DISCORD_PUBLIC_KEY`, and they carry **no chat messages** — the feature name misleads; ambient content stays Gateway-only.\n- **`/oe` needs no separate URL.** It rides the SAME Interactions Endpoint URL as everything else in Step 1.5 — Discord has only the one public endpoint per app, so there's nothing extra to configure beyond registering the command itself ([above](#register-oe)).\n",
14
14
  },
15
15
  ];
@@ -98,12 +98,12 @@ export declare function fetchDiscordBackscrollLines(input: DiscordBackscrollInpu
98
98
  readonly lines: ContextLine[];
99
99
  readonly source: string;
100
100
  } | undefined>;
101
- /** Reachback (hours) for the raw Discord window: how far back from the trigger we paginate. Shares
102
- * the SAME env + 7d default as the Slack adapter (slack-wake-backscroll.ts RAW_FETCH_REACHBACK_HOURS)
103
- * — it is one supervisor-backscroll concept, kept in sync by reading the same knob. Generous enough
101
+ /** Reachback (hours) for the raw Discord window: how far back from the trigger we paginate. It is
102
+ * the SAME core constant the Slack adapter takes (slack-wake-backscroll.ts RAW_FETCH_REACHBACK_HOURS)
103
+ * — one supervisor-backscroll concept, so one number. Generous enough
104
104
  * that the spine (the most-recent cluster, exempt from the 36h enrichment cap) still spans a
105
105
  * weekend/overnight gap, yet a hard floor bounding the fetch. */
106
- export declare const DISCORD_RAW_FETCH_REACHBACK_HOURS: number;
106
+ export declare const DISCORD_RAW_FETCH_REACHBACK_HOURS = 168;
107
107
  /**
108
108
  * The creation time (epoch ms) encoded in a Discord snowflake id: the top 42 bits are
109
109
  * `(unix_ms - DISCORD_EPOCH_MS)`. Robust — every message id carries it, so we can derive a time even
@@ -1 +1 @@
1
- {"version":3,"file":"discord-backscroll.d.ts","sourceRoot":"","sources":["../../../agent/channels/discord-backscroll.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"discord-backscroll.d.ts","sourceRoot":"","sources":["../../../agent/channels/discord-backscroll.ts"],"names":[],"mappings":"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"}
@@ -60,7 +60,7 @@
60
60
  // siblings (discord-gateway.ts `divertDiscordWakeToUnifiedWindow`). The BOOTSTRAP half — a fresh
61
61
  // generation's first wake — still carries the recorded tail rather than a platform fetch.
62
62
  // The flat path (1) continues to serve the mention/name-drop hydration on every Discord wake.
63
- import { sinceLastAgentReply, WAKE_BACKSCROLL_MAX, fetchedBackscroll, resolveWakeTrustFromContext, armedAuthorTrustTenants, catchUpSender, } from "@open-everywhere/core/agent/adapter-api.js";
63
+ import { sinceLastAgentReply, WAKE_BACKSCROLL_MAX, fetchedBackscroll, resolveWakeTrustFromContext, armedAuthorTrustTenants, catchUpSender, SUPERVISOR_BACKSCROLL_REACHBACK_HOURS, } from "@open-everywhere/core/agent/adapter-api.js";
64
64
  import { discordAuthorRoles } from "../approvals/discord-admin.js";
65
65
  // Direct bot-token GET to the Discord REST API. Mirrors discord-gateway.ts's own fetch calls
66
66
  // (`Bot <token>` header; the token is a SECRET — never logged). Fail-soft: no token / non-ok /
@@ -259,12 +259,12 @@ export async function fetchDiscordBackscrollLines(input, deps = liveDeps) {
259
259
  // bounded thread-reply fan-out to mirror (a base-channel window here does NOT reach into the
260
260
  // replies of threads hanging off it; that's the deliberate one-endpoint scope, matching the flat
261
261
  // path). FAIL-SOFT ABSOLUTELY throughout, exactly like {@link fetchDiscordBackscrollLines}.
262
- /** Reachback (hours) for the raw Discord window: how far back from the trigger we paginate. Shares
263
- * the SAME env + 7d default as the Slack adapter (slack-wake-backscroll.ts RAW_FETCH_REACHBACK_HOURS)
264
- * — it is one supervisor-backscroll concept, kept in sync by reading the same knob. Generous enough
262
+ /** Reachback (hours) for the raw Discord window: how far back from the trigger we paginate. It is
263
+ * the SAME core constant the Slack adapter takes (slack-wake-backscroll.ts RAW_FETCH_REACHBACK_HOURS)
264
+ * — one supervisor-backscroll concept, so one number. Generous enough
265
265
  * that the spine (the most-recent cluster, exempt from the 36h enrichment cap) still spans a
266
266
  * weekend/overnight gap, yet a hard floor bounding the fetch. */
267
- export const DISCORD_RAW_FETCH_REACHBACK_HOURS = Number(process.env.OE_SUPERVISOR_BACKSCROLL_REACHBACK_HOURS) || 168;
267
+ export const DISCORD_RAW_FETCH_REACHBACK_HOURS = SUPERVISOR_BACKSCROLL_REACHBACK_HOURS;
268
268
  /** `GET /channels/{id}/messages` page size (Discord's max is 100). */
269
269
  const DISCORD_RAW_FETCH_PAGE_LIMIT = 100;
270
270
  /** Max history pages to paginate — bounds a busy channel's fetch at ≤300 messages so a burst can't
@@ -1 +1 @@
1
- {"version":3,"file":"discord-backscroll.js","sourceRoot":"","sources":["../../../agent/channels/discord-backscroll.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"discord-backscroll.js","sourceRoot":"","sources":["../../../agent/channels/discord-backscroll.ts"],"names":[],"mappings":"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"}
@@ -133,7 +133,7 @@ export declare function relayGate(signatureHeader: string | null, rawBody: strin
133
133
  export declare function authForRelayMessage(msg: DiscordRelayMessage): OpenEverywhereDiscordAuth | null;
134
134
  /**
135
135
  * Is this bot-authored relay message's author id a KNOWN e2e-driver id (OPE-647) — pinned to
136
- * SOME guild in `OE_TEST_DRIVER_IDS` — but NOT to this message's own guild? `authForRelayMessage`
136
+ * SOME guild in the `wake.driverAllowlist` setting — but NOT to this message's own guild? `authForRelayMessage`
137
137
  * already refuses the message either way: `isAllowedDriver` is guild-pinned by format
138
138
  * (`guildId:botUserId`), so a driver id posting outside its pinned guild never passes. This
139
139
  * classifier exists only to tell that refusal APART from routine "some unrelated real bot
@@ -1 +1 @@
1
- {"version":3,"file":"discord-gateway.d.ts","sourceRoot":"","sources":["../../../agent/channels/discord-gateway.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"discord-gateway.d.ts","sourceRoot":"","sources":["../../../agent/channels/discord-gateway.ts"],"names":[],"mappings":"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"}
@@ -36,9 +36,6 @@
36
36
  // dropped, and unresolvable payloads are rejected rather than guessed at.
37
37
  //
38
38
  // Env this surface reads at runtime:
39
- // OE_DM_SEAT_ROTATE_* (optional) the DM window's rotation thresholds (core channels/dm-seat.ts),
40
- // never the supervisor's. A DM window itself is unconditional since OPE-368
41
- // retired the OE_DM_SEAT_ROTATION master switch.
42
39
  // OE_RELAY_SECRET (required) HMAC-SHA256 key shared with the relay; unset → all 401.
43
40
  // DISCORD_BOT_TOKEN (required to reply) bot token for the REST create-message/thread calls.
44
41
  // discord.autoThread (optional, default ON) a mention in a base channel opens a thread and
@@ -62,7 +59,7 @@ import { finalMessageAction, nameDropPattern, wakeNameDropTokens, NO_REPLY_SENTI
62
59
  // post-back below) keeps compiling — the implementation moved to discord-post.ts so the
63
60
  // unified reply arm (unified-reply.ts) can split without importing this whole channel module.
64
61
  export { splitForDiscord };
65
- import { bumpThreadSilentStreak, disengageThread, getThreadEngagement, markThreadEngaged, auditNameDropWoke, auditNameDropSilent, WARM_SILENT_LIMIT, ingressSpendGate, consumeCardPostedThisTurn, peekCardPostedThisTurn, consumeRepliedThisTurn, dropClosingProse, isAllowedDriver, parseDriverAllowlist,
62
+ import { bumpThreadSilentStreak, disengageThread, getThreadEngagement, markThreadEngaged, auditNameDropWoke, auditNameDropSilent, WARM_SILENT_LIMIT, ingressSpendGate, consumeCardPostedThisTurn, peekCardPostedThisTurn, consumeRepliedThisTurn, dropClosingProse, isAllowedDriver, configuredDriverAllowlist,
66
63
  // THE DM SEAT (OPE-356) — the same core mint/touch/flag every first-classed DM window uses; the
67
64
  // Slack front route reaches for exactly these three.
68
65
  getOrCreateDmSeat, touchDmSeat, buildIngestedReaction, ingestReaction, liveReactionSink, consumeNoReplyThisTurn, consumeStandDownSilenceThisTurn, STAND_DOWN_SILENCE_REASON, NO_REPLY_SENTINEL_REASON, auditNoReplySentinelObserved, getSettings, authPrincipalId, } from "@open-everywhere/core/agent/adapter-api.js";
@@ -308,7 +305,7 @@ export function authForRelayMessage(msg) {
308
305
  // before); every acceptance is logged so an armed seam is never invisible.
309
306
  if (!isAllowedDriver(msg.guildId, msg.author.id))
310
307
  return null;
311
- log(`e2e driver accepted as user: bot ${msg.author.id} in guild ${msg.guildId} (OE_TEST_DRIVER_IDS)`);
308
+ log(`e2e driver accepted as user: bot ${msg.author.id} in guild ${msg.guildId} (wake.driverAllowlist)`);
312
309
  }
313
310
  return buildDiscordAuth({
314
311
  userId: msg.author.id,
@@ -324,7 +321,7 @@ export function authForRelayMessage(msg) {
324
321
  }
325
322
  /**
326
323
  * Is this bot-authored relay message's author id a KNOWN e2e-driver id (OPE-647) — pinned to
327
- * SOME guild in `OE_TEST_DRIVER_IDS` — but NOT to this message's own guild? `authForRelayMessage`
324
+ * SOME guild in the `wake.driverAllowlist` setting — but NOT to this message's own guild? `authForRelayMessage`
328
325
  * already refuses the message either way: `isAllowedDriver` is guild-pinned by format
329
326
  * (`guildId:botUserId`), so a driver id posting outside its pinned guild never passes. This
330
327
  * classifier exists only to tell that refusal APART from routine "some unrelated real bot
@@ -332,7 +329,7 @@ export function authForRelayMessage(msg) {
332
329
  * instead of vanishing into the ordinary bot-drop silence. Pure — no I/O — so every branch is
333
330
  * unit-tested against a hand-built allowlist, with no live Discord and no store.
334
331
  */
335
- export function isMisplacedDriver(guildId, botUserId, allowlist = parseDriverAllowlist(process.env.OE_TEST_DRIVER_IDS)) {
332
+ export function isMisplacedDriver(guildId, botUserId, allowlist = configuredDriverAllowlist()) {
336
333
  if (!botUserId)
337
334
  return false;
338
335
  if (guildId !== undefined && allowlist.has(`${guildId}:${botUserId}`))
@@ -381,8 +378,8 @@ export function authorFacts(msg) {
381
378
  * `getConfig()` call on this path sits BELOW the DM early-return, so a DM never touched the config
382
379
  * registry before this feature existed; making the policy the first thing that does would let an
383
380
  * unregistered config take DMs off the air. "Could not read the domain registry" means "no domain
384
- * override", which resolves to the shipped org default — today's behaviour, which is the only safe
385
- * answer. A genuinely broken config is still loud everywhere else it is read.
381
+ * override", which resolves to the shipped org default (strict since 2026-10-10), which is the only
382
+ * safe answer. A genuinely broken config is still loud everywhere else it is read.
386
383
  */
387
384
  function externalPolicyForRoom(roomKey) {
388
385
  try {
@@ -1107,7 +1104,8 @@ export function discordSingleWindowPrivacyOk(input, deps = {}) {
1107
1104
  if (!input.guildId)
1108
1105
  return false; // DM/group-DM: NEVER, unconditionally (no tenant boundary)
1109
1106
  const vouched = deps.vouched ?? isVouchedInternal;
1110
- const trustEnv = "trustEnv" in deps ? deps.trustEnv : process.env.OE_TRUST;
1107
+ // The blanket is the `identity.blanketTrust` setting since OPE-2411 (was OE_TRUST).
1108
+ const trustEnv = "trustEnv" in deps ? deps.trustEnv : getSettings().identity.blanketTrust;
1111
1109
  if (trustEnv === "internal")
1112
1110
  return true; // the blanket internal-only-deploy switch
1113
1111
  if (vouched(input.workspaceKey, input.surfaceKey))
@@ -1729,8 +1727,8 @@ receive) {
1729
1727
  // nothing and show nothing — an affordance on a suppressed message tells the sender the agent is
1730
1728
  // reading them, which is the opposite of the intended behaviour.
1731
1729
  //
1732
- // Both grains are inert under their shipped values (`taint` / `engage`), so this whole block is a
1733
- // no-op on every deployment that has not opted in.
1730
+ // Both grains are inert only on the `taint` / `engage` opt-out, so this whole block is a no-op
1731
+ // only on a deployment that opted out. The shipped grains suppress here.
1734
1732
  // EXPLICIT ADDRESSING — one fact, read twice: the verdict owes a private notice on it, and the
1735
1733
  // OPE-885 ack keys on it. A DM is addressing by construction; `mentionsBot` is Discord's own
1736
1734
  // mention signal, which a NAME-DROP never sets.
@@ -1 +1 @@
1
- {"version":3,"file":"discord-gateway.js","sourceRoot":"","sources":["../../../agent/channels/discord-gateway.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"discord-gateway.js","sourceRoot":"","sources":["../../../agent/channels/discord-gateway.ts"],"names":[],"mappings":"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"}
@@ -7,7 +7,7 @@ export const PROVIDER_DOCS = [
7
7
  path: "docs/deploy/surfaces/discord.md",
8
8
  title: "Discord",
9
9
  summary: "Run a slash command in your Discord server and Open Everywhere acts as an autonomous teammate — it does the work, replies in the channel, and remembers what it learned, scoped correctly per channel.",
10
- markdown: "# Discord\n\nRun a slash command in your Discord server and Open Everywhere acts as an autonomous teammate — it does the work, replies in the channel, and remembers what it learned, scoped correctly per channel.\n\nThis page is the Discord-specific setup runbook. For the concept of a *surface* and how surfaces plug in, see [Surfaces](../../extending/surfaces.md). For how memory is scoped per server and channel, see [Memory](../../capabilities/memory.md). For how Discord's feature set compares to the other surfaces — including what needs the Gateway relay and why — see the [surface support matrix](./support-matrix.md).\n\n**Discord has two ingestion paths, and this page sets up both.** The HTTPS **interactions** endpoint is interaction-based: on it, the only way to invoke the agent is an explicitly-registered slash command, and a plain `@mention` does nothing. Ambient `@mention`s, DMs, name-drops and channel follow-ups arrive over the separate **Gateway** path instead, which needs the always-on relay ([`deploy/discord-relay/`](../../../deploy/discord-relay/README.md)) — Discord never delivers those to an HTTP endpoint. The [surface support matrix](./support-matrix.md) marks every Gateway-dependent row with footnote ¹.\n\n## How the silo model maps\n\nOpen Everywhere's memory is [opt-in domains and silos](../../capabilities/memory.md), not an\nautomatic per-guild tier stack. A Discord channel/thread/DM is a **surface**; the guild is the\nnatural `workspace` identity key its channels' surface keys share, but sharing memory across\nthem still needs an explicit `domain` or the `org` pseudo-domain fallback — and (see \"Trust\"\nbelow), by default no Discord surface reaches either.\n\n| Open Everywhere concept | Discord thing |\n| --- | --- |\n| `org` (tenant) | your deployment (`deploymentIdentity.org` in `agent/identity/surfaces.ts`, one org per deploy today) |\n| `workspace` (identity key) | the **guild** (server) — its id (`guild_id`) |\n| `surface` (partition key) | the individual **channel or thread** (`channel_id`) |\n| `mode` | `channel` (guild text channel/thread), `dm` (1:1 DM, channel type `1`), `mpim` (group DM, type `3`) |\n| `visibility` | `public` only for a confirmed @everyone-readable guild channel; everything else `private` |\n\n**Visibility is tracked but isn't the memory gate.** Discord interaction payloads carry *no*\nclean public/private bit — channel readability is governed by per-role `@everyone`\n`VIEW_CHANNEL` permission overwrites, which aren't in the payload — so guild channels default\nto **`private`** (`discordVisibility`) until a future enrichment positively confirms\n`@everyone` can view them. DMs (type `1`) and group DMs (type `3`) are inherently private.\nNone of this decides whether memory shares, though — see below.\n\n**Trust is unverified by default — every guild starts `external`.** Open Everywhere has no\nDiscord guest/`@everyone`-membership check yet, so `bindDiscord` leaves `trust` undefined,\nwhich **fails closed to `external`**: a fresh guild channel gets read-only `public` memory at\nmost — never an explicit domain's silo, never the `org` brain — public-looking channel or not.\nA public Discord server is full of strangers, so a guild existing is not proof of org\nmembership. To unlock domain/org memory, the operator explicitly **vouches** it: set\n`OE_TRUST=internal` for a single-tenant deployment where every guild you'll ever be in is\ntrusted, or vouch specific guilds via a `discord/<guild_id>` (or `discord/<channel_id>` for one\nchannel) entry in `agent/identity/surfaces.ts`. Unvouched, the bot still answers slash\ncommands (chat-only, no shared memory); vouched, normal domain/org resolution applies exactly\nas it does for any other internal channel.\n\n**DMs are personal universes.** A DM has no guild, so it keys to the **caller's own user id**\nas the workspace — fully isolated from the server brain and from other users' DMs. The\npersonal DB silo is always writable regardless of trust; only the *shared read layer* on top\nof it needs a vouch (the same DM-partner-trust gate every platform uses).\n\n## Auto-thread (mention conversations)\n\nWhen the bot is reachable over the **Gateway** ingestion surface (ambient `@mention` messages, as opposed to the slash-command interaction path above), a mention starts a **thread** and the whole conversation happens in it — the signature \"one task = one thread\" pattern Open Everywhere uses on Slack.\n\n| Where you mention it | What happens |\n| --- | --- |\n| A **base channel** (guild text or announcement) | The bot **opens a thread** hanging off your message and replies there. That thread is its own **conversation** — its own durable session and per-thread notes — while still counting as part of the parent channel for domains and spend caps (below). Keep talking in the thread — no need to re-mention. |\n| **Already inside a thread** | It replies **in place** (a thread is already its own conversation). |\n| A **DM or group DM** | It replies **in place** (Discord has no threads in DMs). |\n| A **forum** channel | It replies **in place** (a forum post is itself a thread — it doesn't nest). |\n\nEach auto-created thread is named from your message (the mention stripped, truncated to Discord's 100-char cap; an empty message falls back to `Conversation with the agent`). A **second** mention in the base channel starts a **second** thread — one task per thread, by design.\n\n**Threads belong to their channel.** Although a Discord thread is technically its own channel id, Open Everywhere treats a thread as part of its **parent channel** for everything scoped to channels — [memory domain](../../capabilities/memory.md) membership (silo, access bundle, model route), domain-admin standing, and **spend caps** (a cap on the channel accumulates and gates its threads' usage too, and a cap proposed *from* a thread targets the parent channel). This matches Slack, where threads share the channel. Only the *conversation* is per-thread: the durable session, engagement, and the thread's own surface-tier notes. Parent resolution is best-effort — if the one-time lookup fails, that thread simply behaves as an unaffiliated channel for the turn (never blocked).\n\n**Toggle — `discord.autoThread`** (default **on**). Set it to `false` to reply **inline in the base channel** instead of opening a thread. It is a typed setting, not an environment variable, so opting out is a reviewed diff in your own `agent/settings/settings.ts`:\n\n```ts\n// agent/settings/settings.ts\nexport default defineSettings({\n discord: { autoThread: false }, // opt out: reply inline in the base channel, no thread\n});\n```\n\n**Fails open.** If the bot lacks **Create Public Threads** / **Send Messages in Threads** (or Discord rate-limits the create), thread creation is skipped and the turn still runs as an **inline** reply in the base channel — degraded, never dropped. Grant both permissions in [Step 3](#step-3--invite-the-bot) to get threads.\n\n**DMs need no mention.** Over the Gateway surface a direct message (or group DM) to the bot always wakes it — a DM is by definition addressed to the bot, so just talk to it. In guild channels the usual rule applies: an `@mention` starts a conversation; after that the bot follows the thread without re-mentioning.\n\n**Name-drops (opt-in, per domain).** With `nameDropWake: true` on the channel's [memory domain](../../capabilities/memory.md) — same flag as Slack — a guild message that says one of the bot's names without @mentioning it gets a *judged* reply: the bot answers only when the message is clearly for it, and stays silent otherwise. The name-token set is the same rule as Slack's (see [that surface's doc](slack.md)): the bot's **display name** (its server nickname, if set) UNION the deployment's `identity.name`, extended by `wake.nameDrop.include` and narrowed by `wake.nameDrop.exclude` (configuration-reference.md) — exclude always wins. Works in channels *and* un-followed threads (a deliberate extension over Slack, where threads belong to the engagement path). Scope matters for what happens next: a name-drop **in a thread** puts the bot into follow mode for that thread (small scope — same grain as Slack, where a name-drop's reply thread is followed); a name-drop **in a base channel** does *not* — following a whole channel means a judged model turn on every subsequent message, so there you @mention it (or say its name again) to continue. When it does follow a thread off a name-drop, it starts as a **warm watcher** (see *Stopping it following* below). Off by default; requires a Gateway relay recent enough to forward the bot's identity (older relays simply never name-wake). The road is audited on Discord exactly as it is on Slack: an admitted name-drop writes `surface.name_drop_woke` (naming the channel, the message id and `road: \"native\"` — this surface hands off to no standing seat), and a name-drop the domain flag refuses writes `surface.name_drop_silent`. A message that names nobody writes neither row. A judged wake also arrives with a short, **untrusted-wrapped backscroll** of the surrounding conversation (recent messages, capped) so the model can tell whether the message is really for it — the same context an @mention gets.\n\n### Stopping it following\n\nEngagement has no hard timeout, but a lightly-latched surface **sheds itself** — the same model as Slack:\n\n- **Participating** surfaces (you @mentioned the bot, or it actually replied) are **sticky**: they keep following every message there (each one a judged model turn, so a followed surface has a real per-message cost) until you ask it to stop. Just say so, however you'd phrase it to a colleague — \"you can stop following this\", \"we're good here\". This is **judged, not pattern-matched**: the agent reads the intent and calls `stand_down`, which sets a durable marker on the surface. There is deliberately no magic word (the regex that used to look for one disengaged on \"don't stop the deploy\" as readily as on \"stop\"). Mention it again any time to re-engage — that clears the marker. This is a **channel-only** verb — a DM has no `@mention` to clear a marker with, so `stand_down` refuses there instead of trapping the conversation silent for good.\n- **Warm watchers** (a thread the bot entered off a *name-drop* but hasn't yet replied in) are **not** sticky: if it judges \"no reply\" on three consecutive messages, it quietly **disengages** itself — so a one-off name-drop that wasn't really for it never leaves it silently following forever. The moment it does reply (or you @mention it), the surface is promoted to participating and the count resets.\n\n### Stopping a turn that's already running\n\nDifferent problem, different mechanism. Standing down happens *between* turns; stopping a turn\nthat is **in flight** can't be inferred at all, because the bot is the thing that's busy and your\nmessage would queue behind the very turn it's meant to stop. So it's an affordance:\n\n- react **✋** on the message — the host adds it when a turn actually kicks work off (its first\n delegation) and removes it when the turn ends, so it's there to click exactly while a stop means\n something, and never appears on a message the bot merely read;\n- or run **`/oe stop`**, which needs no reaction permission and takes no arguments.\n\nBoth are decided at ingress with **no model call and nothing spent**, so they keep working while\nthe channel is over its spend cap. ⚠️ The ✋ route needs a Gateway relay recent enough to forward\nreactions — an older deployed relay never forwards them, and `/oe stop` covers the gap.\n\nWhat a stop does, precisely: the turn's history rolls back to its last completed model call, but\n**anything already done is done** — tool calls inside the interrupted step had real effects and\nare not undone, and a running sandbox command can't be killed. The acknowledgement says \"stood\ndown\", never \"stopped\", and names what had already run.\n\n### Working indicators (status UX)\n\nWhile a turn runs (often 30s+), the bot shows it's on the case using Discord's native affordances — no extra messages, no edits:\n\n- It reacts **👀** on your message the moment it picks it up (\"seen, working\") — on any direct address (a mention or a DM).\n- While it works, Discord's native **typing indicator** shows (\"*Open Everywhere is typing…*\"), re-triggered as the turn progresses. The answer then arrives as a fresh message.\n- **Judged wakes hold typing back.** On a followed (engaged) surface or a name-drop, the model judges each message and may decide no reply is warranted. Those turns show **no typing at all until the reply is actually being written** — so a judged pass is silent from the first second, instead of \"typing… for 10 seconds, then nothing\" (which reads as a crash). Direct addresses (mentions and DMs) always answer, so they show typing immediately.\n- **On an auto-threaded mention** the 👀 is **removed** when the answer lands in the thread — absence is the done signal, visible from the base channel without opening the thread. (The bot never plants a ✅ — that stays reserved for humans, same convention as Slack.) Elsewhere the 👀 simply stands as the ack; the answer arrives right underneath.\n\n**Toggle — `discord.statusUx`** (default **on**). Like `autoThread` it is a typed setting, not an environment variable: set `discord: { statusUx: false }` in your own `agent/settings/settings.ts` for plain replies with no reaction or typing. All indicators are best-effort: a failed reaction or typing call never delays or drops the answer.\n\n### Reaction ingestion (feedback signal)\n\nOver the **Gateway** relay the bot also *ingests* inbound reactions. A 👍 / 👎 (or any emoji) on one of the **bot's own replies** is recorded as a lightweight human **feedback** signal — durable, append-only, carrying only the reactor's id + the emoji, never any message text. Reactions on *other* messages emit anonymous volume telemetry but aren't stored, and the bot's own status reactions (👀) are never counted. This needs the **Guild Message Reactions** and **Direct Message Reactions** gateway intents, which the relay already requests (they're not privileged — no portal toggle). Older relays that predate this simply never forward reactions, so the feature is silently off until you redeploy the relay.\n\n### Spend caps\n\nGuild channels are subject to the same [monthly spend caps](../../security/spend-and-cost.md) as every surface: a channel (or guild) over its budget **declines** new mentions with a visible message rather than silently ignoring them. The decline message names the exact scope keys, so a follow-up DM proposal can target them.\n\n**Admins are never locked out.** If the sender is an admin over the scope — on the config roster (`Domain.admins`), or a Discord-verified administrator/owner of the guild — the turn proceeds past the cap with a visible `⚠️ … proceeding because you're an admin` line (throttled to once per channel per hour — subsequent bypassed turns proceed quietly) and an audit entry (`spend.cap_bypassed`) on every bypass. Sudo semantics: the cap binds the team's ambient usage; the budget owner steps over it visibly and can raise or clear it right there (\"set this channel's cap to $5\" → approval card).\n\nDMs are capped like any other surface. The escape hatch is the **admin bypass**: an org admin's own DM turn proceeds past the cap with the visible warning and an audit row, so they can still propose an override (passing the scope key from the decline message) and approve it on the card **in the DM** — a DM click is decided by checking the clicker's admin standing in the target guild over REST, since Discord DM interactions carry no member permissions. One default from a DM is still refused: a Discord DM belongs to no server, so a `\"workspace\"` cap defaulted there would target your personal DM bucket rather than the guild you meant — pass an explicit `discord/<serverId>` key. (`level: \"surface\"` from a DM is fine now: it targets that DM, which is a scope the gate really enforces.)\n\n## Prerequisites\n\n- A Discord **server you manage** with the **Manage Server** permission (needed to add the bot and, optionally, to register guild-scoped commands).\n- A reachable Open Everywhere instance — deployed with a **public HTTPS URL**. Discord delivers interactions as signed HTTPS POSTs from its own infrastructure and **cannot reach `localhost`**; for local dev expose your instance with a tunnel (e.g. `ngrok http 3000`) and use that HTTPS URL. See the [docs index](../../README.md) to get the project and the [setup runbook](../setup-runbook.md) for the deployment steps.\n- Your instance's public base URL. The Discord interactions route is **`/eve/v1/discord`**, so Discord calls `https://<your-deploy-url>/eve/v1/discord`.\n\n## Step 1 — Create the Discord application + bot\n\n1. Go to the [Discord Developer Portal](https://discord.com/developers/applications) → **New Application**. Name it (e.g. `Open Everywhere`).\n2. On **General Information**, copy the **Application ID** — this is `DISCORD_APPLICATION_ID`.\n3. Still on **General Information**, copy the **Public Key** — this is `DISCORD_PUBLIC_KEY`. It verifies the Ed25519 signature on every inbound interaction POST.\n4. Go to the **Bot** tab → **Reset Token** → copy the token — this is `DISCORD_BOT_TOKEN`. (Treat it like a password; it's shown once.)\n5. Set the **Interactions Endpoint URL** (on **General Information**) to:\n\n ```\n https://<your-deploy-url>/eve/v1/discord\n ```\n\n When you save this, Discord immediately POSTs a `PING` (interaction type `1`) and expects a signed `PONG` back. **Your instance must already be deployed, running, and reachable with `DISCORD_PUBLIC_KEY` configured** (Step 4) or Discord rejects the URL. Set the env first, deploy, *then* save this field.\n\n > ⚠️ **Use your STABLE production domain here** (e.g. `your-app.vercel.app`), never a\n > deployment-specific URL (`your-app-<hash>-team.vercel.app`). Deployment URLs stay alive\n > forever pointing at that one old build — interactions (including approval-card button\n > clicks) would keep hitting stale code after every redeploy, failing in ways that look\n > like application bugs.\n\n6. *(Optional, recommended)* Go to the **Webhooks** tab → set the **Webhook Events URL** to:\n\n ```\n https://<your-deploy-url>/eve/v1/discord/events\n ```\n\n and subscribe to **`APPLICATION_AUTHORIZED`** and **`APPLICATION_DEAUTHORIZED`**. This is a\n **different URL** from the Interactions Endpoint above — Discord configures the two separately —\n but it is verified with the **same** `DISCORD_PUBLIC_KEY`, so there is nothing new to set.\n\n It gives OE an install/uninstall audit trail: each event writes a `surface.app_installed` /\n `surface.app_uninstalled` row (guild as the workspace, the authorizing user as the principal),\n queryable over the control plane's audit route. Without it OE has no signal that a server added\n or removed the app short of noticing silence.\n\n **Observability only** — this route gates nothing, wakes no session, and drops nothing. Leaving\n it unconfigured changes no behaviour. Note that Webhook Events deliberately do **not** carry chat\n messages: ambient channel content is Gateway-only and still needs the always-on relay (see the\n [surface support matrix](./support-matrix.md)).\n\n## Step 2 — Register the slash command\n\nThe channel handler does **not** filter on a specific command name — its `onCommand` hook accepts *any* registered application command, attaches the real Discord identity, and dispatches. So you register one command and pick its name. The command maps to the model prompt via `commandInteractionMessage`: it uses the value of a string option named **`message`** when present, otherwise it reconstructs `/command opt:value …`. **Register a command with a required `message` string option** so users type their request naturally.\n\nRegister with the Discord API (no helper script ships today). **Guild** commands appear **instantly** in that one server; **global** commands can take **up to an hour** to propagate — use a guild command while testing.\n\nGuild-scoped (instant, recommended for setup):\n\n```bash\ncurl -X POST \\\n \"https://discord.com/api/v10/applications/$DISCORD_APPLICATION_ID/guilds/$GUILD_ID/commands\" \\\n -H \"Authorization: Bot $DISCORD_BOT_TOKEN\" \\\n -H \"Content-Type: application/json\" \\\n -d '{\n \"name\": \"ask\",\n \"type\": 1,\n \"description\": \"Ask Open Everywhere to do something\",\n \"options\": [\n { \"name\": \"message\", \"description\": \"What should it do?\", \"type\": 3, \"required\": true }\n ]\n }'\n```\n\nGlobal (drop `/guilds/$GUILD_ID`, propagation up to ~1h):\n\n```bash\ncurl -X POST \\\n \"https://discord.com/api/v10/applications/$DISCORD_APPLICATION_ID/commands\" \\\n -H \"Authorization: Bot $DISCORD_BOT_TOKEN\" \\\n -H \"Content-Type: application/json\" \\\n -d '{ \"name\": \"ask\", \"type\": 1, \"description\": \"Ask Open Everywhere to do something\",\n \"options\": [ { \"name\": \"message\", \"description\": \"What should it do?\", \"type\": 3, \"required\": true } ] }'\n```\n\n(`type: 1` = CHAT_INPUT slash command; option `type: 3` = STRING. Name it `openeverywhere` instead of `ask` if you prefer.)\n\n## Step 3 — Invite the bot\n\n1. In the Developer Portal → **OAuth2** → **URL Generator**.\n2. Under **Scopes**, tick **`applications.commands`** (required for slash commands) and **`bot`**.\n3. Under **Bot Permissions**, tick:\n - **Send Messages** — post replies (interaction responses and Gateway/REST posts).\n - **Create Public Threads** — open a thread per conversation (see [Auto-thread](#auto-thread-mention-conversations)).\n - **Send Messages in Threads** — reply inside those threads.\n\n Without the two thread permissions the bot **falls back to inline replies** (auto-thread fails open — it never drops a turn), so the minimum for slash commands alone is just **Send Messages**. The agent replies via the interaction token for slash commands, so it doesn't need broad permissions.\n4. Copy the generated URL, open it, pick your server, and **Authorize**. You need **Manage Server** on that server to complete the invite.\n\n## Step 4 — Configure the environment\n\nSet these on your instance, then deploy:\n\n```bash\nDISCORD_APPLICATION_ID=… # Application ID from Step 1.2\nDISCORD_PUBLIC_KEY=… # Public Key from Step 1.3 (verifies signed interaction POSTs)\nDISCORD_BOT_TOKEN=… # Bot token from Step 1.4\n```\n\nOptional, but relevant to the silo model:\n\n```bash\nOE_MEMORY_PROVIDER=git # memory backend — git | sqlite\nOE_MEMORY_DIR=/abs/path/to/store\n```\n\n**Identity binds automatically.** You do **not** set workspace, surface, mode, or visibility by hand. The Discord channel reads the guild/channel/user ids and the channel `type` straight off each inbound interaction into the session auth context (`buildDiscordAuth`), and `bindDiscord` derives workspace = the guild, surface = the channel, plus mode and visibility. The `deploymentIdentity.workspace` / `.surface` declaration in `agent/identity/surfaces.ts` is only the `eve dev` gap-filler — once Discord is wired it is ignored.\n\n## Step 5 — Invoke it\n\n1. In a guild channel, run `/ask summarise the last few messages and list the action items`.\n2. Expected behaviour:\n - Discord shows a **`Thinking…`** typing indicator while the agent works (the channel calls `startTyping()` on dispatch).\n - It **acks within 3 seconds with a deferred response**, then edits that original response in place with the answer once the agent finishes — so longer tasks don't time out.\n - The reply lands in the channel, scoped to that channel's surface silo.\n3. Test a DM: open a direct message with the bot and run `/ask …` there. It responds the same way; the DM surface's memory is isolated to you and `private`.\n\n## Rotating the bot token\n\n**Reset Token** in the Developer Portal (Step 1.4) invalidates the old token immediately. Two\n**deployed** stores hold that token. Each one needs its own update, and neither picks the new value\nup on its own.\n\n| Store | What holds the token | How the new value takes effect |\n| --- | --- | --- |\n| Vercel production | `DISCORD_BOT_TOKEN` on the deployment | an explicit redeploy |\n| Railway | `DISCORD_BOT_TOKEN` on the always-on relay ([`deploy/discord-relay/`](../../../deploy/discord-relay/README.md)) | a relay redeploy |\n\nA rotation that reaches only the deployment leaves the relay dead. That failure is quiet: the slash\ncommand still works, and every HTTPS route still answers.\n\nA local checkout keeps its own copy — `deploy/discord-relay/.env`, and the repo-root `.env`. Those\nare operator copies, not deployed stores. Update one the next time you run it locally.\n\n### The Vercel half\n\n`git push` does not deploy, and a running deployment keeps the value it booted with:\n\n```bash\nvercel env rm DISCORD_BOT_TOKEN production -y # the name exists already — remove, then re-add\nvercel env add DISCORD_BOT_TOKEN production\nvercel deploy --prod\n```\n\n`deploy:census` does **not** see this half. It reads credential rows out of the store, and this\ntoken is an environment variable. Prove it by hand instead: run `/ask …` in a guild channel\n(Step 5). A dead token fails every Discord API call the deployment makes.\n\n### The Railway half\n\n**The relay reads the token ONCE, at boot.** `deploy/discord-relay/index.js` reads\n`process.env.DISCORD_BOT_TOKEN` at module load, then logs in with that value. A variable change alone\nchanges nothing on a running relay. The process holds the dead token until it restarts.\n\n```bash\ncd deploy/discord-relay\nread -rs -p 'new DISCORD_BOT_TOKEN: ' NEW_TOKEN && \\\n railway variables --set DISCORD_BOT_TOKEN=\"$NEW_TOKEN\" --skip-deploys && unset NEW_TOKEN\nrailway redeploy -y\nrailway logs # expect: \"[oe-discord-relay] ready as <bot>#0000 | mode: FORWARD\"\n```\n\n`read -rs` keeps the token out of your **shell history** and off the **screen** — a token typed as a\nliteral argument stays in the history file long after the rotation. `unset` drops it from the\nenvironment as soon as Railway holds it.\n\n🔴 **It does NOT hide the token from the process table.** The shell expands `\"$NEW_TOKEN\"` before it\nruns `railway`, so the value is visible in that process's `ps` and `/proc/<pid>/cmdline` entry for\nthe life of the call. Rotate on a machine you trust, never on a shared box or a runner other\ntenants can read.\n\n`--skip-deploys` holds the restart back, so the redeploy is one explicit step you can watch. The\n`ready as` line is the proof — the relay holds the Gateway socket again, with the new token.\n\n### What a missed relay looks like\n\nDiscord closes the relay's Gateway socket at the reset hour. Ambient channel and DM messages stop\narriving, because Discord delivers them over that socket only. Slash commands keep working, so the\nsurface looks half-alive.\n\n`npm run deploy:census` catches it: `discord.heartbeat` goes red. Read that row correctly. The\n**relay** POSTs the heartbeat on its own timer; the **deployment** writes the row, once the signed\nPOST passes the relay gate. After a token rotation the cause is the stale relay, so the remedy is\nthe relay redeploy above. A red row under a LIVE relay points at the ingest side instead — an\n`OE_RELAY_SECRET` mismatch, or a route that refuses. Check `railway logs` for `ingest rejected`\nbefore you redeploy anything. Restart the relay, then run the census again.\n\nThe check needs Discord mounted, and it needs the census run's OWN `OE_RELAY_HEARTBEAT_MS` mirror\nnon-zero and matching the relay's configured interval. The census reads its own copy of that name,\nnever the relay's — see [rollback](../rollback.md).\n\n### `.env.e2e` does not hold this token\n\nThe e2e tier drives Discord with `E2E_DISCORD_DRIVER_TOKEN`, and that is a **different bot** — the\ntest driver, a second application the `OE_TEST_DRIVER_IDS` allowlist admits\n(`packages/core/scripts/e2e/env.ts`). Resetting the deployment's own bot token does not invalidate\nit. No code in this repository reads the deployment's bot token out of `.env.e2e`, so a rotation\nleaves that file alone.\n\n## What the agent calls itself here\n\nA Discord session's IDENTITY — the name it introduces itself by — comes from one place only: the\n[`identity.name`](../configuration-reference.md) setting. Set it and it **wins on every surface**,\nbyte-identically — the right answer for a deployment that spans Slack and Discord from one window:\none name, everywhere. Unset, the session renders the generic identity line (\"this team's agent\").\nIt never borrows a name from another surface, and never from this surface's own Discord account\nname either — that is a HANDLE, not an identity (OPE-610).\n\nSeparately, the session also carries a HANDLE line — \"your mention/handle here appears as X\" — so\nthe agent recognises its own mentions and backscroll lines under the bot account's real Discord\nname. The agent reads it once per instance from `GET /users/@me` (the same `DISCORD_BOT_TOKEN` this\nintegration already uses to post replies), preferring the account's display name (`global_name`)\nand falling back to its username. A rename on Discord takes effect on the next cold start. If the\nread fails (no token, a transport error), the session simply carries no handle line; the identity\nline above is unaffected either way.\n\n## Reading channel/thread history\n\nDiscord supports the generic `read_channel`/`read_thread` verbs (the same tools Slack and Teams\nuse — since OPE-1145 no per-surface reader stands beside them on any surface), backed by the plain\nDiscord REST API\n(`GET /channels/{id}/messages`) — the **same `DISCORD_BOT_TOKEN`** this integration already uses to\npost replies (Step 1.4/Step 4 above). The read adapter (`packages/providers/discord/agent/channels/discord-read.ts`'s\n`discordReadAdapter`, registered into core's read-adapter registry at boot) reuses that token verbatim, so **there is no extra Discord- or Azure-side\nconfiguration to grant** — unlike Teams, which needs a separate Graph token/permission because its\nBot Framework Connector token can't read history.\n\n- **A Discord thread is its own channel id.** Discord threads aren't a sub-resource of their parent\n channel the way Slack/Teams threads are — a thread IS a channel, with its own id. So\n `read_thread`'s thread identifier for Discord is that thread's channel id, and the adapter simply\n reads it with the same `GET /channels/{id}/messages` call `read_channel` uses against a base\n channel. Both ids come from the turn's own binding — neither verb takes a target.\n- **Bounded, single page.** Unlike Teams' paginated Graph reads, one GET returns up to 100 messages\n (Discord's own per-request cap) — a requested `limit` above 100 is silently clamped, never fanned\n out across pages.\n- **Scope.** The verbs read THE CONTAINER THE WAKE ARRIVED IN and take no target, so no other\n channel is addressable. The domain allowlist still runs inside the adapter as defence in depth.\n An out-of-scope channel is refused before any Discord GET, and every refusal writes a\n `read.refused` audit row naming the channel, the caller's domain and the verdict (ids only, never\n message content) — queryable with `GET /control/v1/audit?since=<iso>&actions=read.refused`.\n\n## Identity linking\n\n[Identity linking](../../how-it-works/identity.md) joins a person's Discord account to their\naccounts elsewhere. Discord supports **both halves** of the preferred *directory* transport, so a\nperson can name their other account instead of carrying a code between two surfaces.\n\n- **The account directory** searches the guilds your domains declare in their `reach` lists\n (`agent/memory/config/domains/<name>.ts`) — one `GET /guilds/{id}/members/search` per guild, so\n Discord itself does the matching. A guild nobody configured is never searched, and bots are\n dropped (a link is a statement about a human).\n- **The DM ask** opens the 1:1 conversation with `POST /users/@me/channels` and posts the consent\n request there. No extra permission: Discord delivers a bot DM when the recipient shares a server\n with the bot and has not turned off direct messages from server members.\n- **Two buttons** ride under the ask, and a tap answers it with no model turn. The tap returns to the\n same **Interactions Endpoint URL** the approval cards already use, so there is nothing extra to\n configure. The answer is **ephemeral** — only the person who tapped\n sees it. A tap from a server channel is refused with a pointer back to the DM.\n\n⚠️ **The directory needs the privileged `SERVER MEMBERS` intent.** Turn on **Privileged Gateway\nIntents → Server Members Intent** on your application's **Bot** page in the Discord developer\nportal. Without it Discord answers `403` to the member endpoints, the directory resolves empty, and\nlinking falls back to the **code** transport — which still works and says which capability was\nmissing. Directory rights are fine to require for the better path; they are never a precondition for\nlinking at all.\n\nBecause Discord can DM, a `link <code>` claim typed **in a channel** is now refused with a pointer to\nthe DM, and the code is not spent. A code is a bearer secret for its whole life, and a room has an\naudience.\n\n## Proactive routines\n\nScheduled [routines](../../capabilities/proactivity-and-routines.md) work on Discord: create one with a slash command (\"every hour, check …\") and the fired result posts back **into the same channel** via the REST create-message endpoint (the bot token from Step 1 — no Gateway websocket involved). The post-back target is captured automatically when the routine is created; nothing to configure. Spend caps apply to guild-channel routines — and to 1:1 DM routines too, same as Slack: a fire never gets the admin bypass, because there is no attending admin to bypass on its behalf.\n\n## Slash commands: `/oe` (zero-inference control-plane)\n\n`/oe` is a **second, separate** slash command from the model-dispatching one registered in [Step 2](#step-2--register-the-slash-command) (`/ask`, or whatever you named it). It's the control-plane escape hatch: pure logic, code-rendered responses, **no model turn** — so it answers even while a channel is over its spend cap, engagement is judging silence, or the model/gateway itself is down. It's intercepted at the **front route** (`channels/discord-front.ts`), before discordChannel's `onCommand` hook ever sees it, so it costs zero inference — unlike every other registered command name, which `onCommand` dispatches to the agent unconditionally.\n\nCommands:\n\n| Command | What it does | Visibility |\n| --- | --- | --- |\n| `/oe status` | Deploy sanity: the deployment sha and eve pin that identify this build, the app version when the deploy carries one, primary/utility model config, the context window and the token count compaction fires at, memory provider. | Ephemeral (only you see it) |\n| `/oe budget status` | This channel's and server's effective spend caps (tokens + USD) and current-month spend — the SAME figures the spend gate enforces. | Ephemeral |\n| `/oe budget raise <usd>` | Proposes a new monthly USD cap for this channel: posts the SAME public approval card `set_spend_limit` posts (Approve/Reject buttons); an admin decides. The ephemeral ack also shows **your own domain's recent spend** from the ledger — see [Spend & cost](../../security/spend-and-cost.md#the-domain-spend-scan-behind-oe-budget-raise). A Discord channel the operator has not declared internal is `external`, so no domain resolves there and the ack says so instead. | Card: public in-channel. Ack: ephemeral |\n| `/oe budget clear` | Proposes clearing this channel's spend-limit override back to the config-as-code cap: posts the SAME public approval card `clear_spend_limit` posts. | Card: public in-channel. Ack: ephemeral |\n| `/oe stop` | Stands down the turn currently running in this channel. **No model turn, nothing spent** — it works while the channel is over its cap, which is when you're most likely to want it. | Ephemeral |\n| `/oe rate <1-5>` | Records one human mark on the [model A/B test](../../extending/models-and-gateway.md#ab-testing-a-challenger-model): rates this channel's most recent champion/challenger turn, on the arm that turn actually ran. Answers \"nothing to rate\" — the normal reply — while the test is off. | Ephemeral |\n| `/oe help` | Lists the commands. | Ephemeral |\n\nDiscord requires picking a concrete subcommand — you can't invoke the bare group (`/oe budget` isn't itself invokable; type `/oe budget status`). Slack's equivalent free-text grammar (`/oe budget`) is more forgiving; see the [Slack guide](./slack.md#slash-commands-oe-zero-inference-control-plane).\n\n### Register `/oe` — the deployment does it itself\n\n**You register nothing.** The deployment reconciles `/oe` against Discord on its own, once per process\nstart: it reads the commands Discord holds for your application at each declared guild, compares them\nwith the command set the code declares, and writes only when they differ. Deploy a build that adds a\nsubcommand and the next cold start registers it.\n\nName the guilds in `agent/commands/discord-commands.ts`:\n\n```ts\nexport const DISCORD_COMMAND_GUILDS: readonly string[] = [\n \"1300000000000000100\", // your server's guild id\n];\n```\n\nA guild id is **tracked config**, not an environment variable — it lives in Git and changes by pull\nrequest, like every other room key ([Config-as-code](../../how-it-works/config-as-code.md)). The two\ncredentials stay environment: `DISCORD_APPLICATION_ID` (Step 1.2) says which application this\ndeployment speaks as, and `DISCORD_BOT_TOKEN` (Step 1.4) authenticates the call. Either one absent and\nthe reconcile reports `skipped` in the boot log and registers nothing — it never fails the boot, and\nneither does a Discord outage: the worst outcome is the command list you already had.\n\nWatch for one line per platform in the deployment's boot log:\n\n```\n[open-everywhere:command-registration] discord: unchanged — guild 152…: \"/oe\" already matches what this deployment declares\n```\n\n**The deployment's write is additive.** It uses Discord's per-command `POST` (create-or-update by\nname), so a command you registered yourself at the same scope — the `/ask`-style command from\n[Step 2](#step-2--register-the-slash-command) — is never touched.\n\nDeclare no guild and the deployment registers nothing and makes no Discord call at all.\n\n⚠️ **Every process holding both credentials reconciles — a local `eve dev`/`eve start` included, and\nit writes the command shape of the checkout that is running.** Do not run a branch that changes the\n`/oe` command set against the deployment's own `DISCORD_BOT_TOKEN`: your server will show that\nbranch's `/oe` until the deployment's next cold start writes it back. Develop such a branch against a\nDiscord application of your own, or with the bot token unset.\n\n#### The one-off CLI, for a global registration\n\n`npm run register:discord-commands` still ships, for the one thing the deployment does not do:\nregistering `/oe` **globally** (every server the app is in). A global command takes up to an hour to\npropagate, which no boot-time check can prove landed, so it stays a deliberate operator step. It\nreads:\n\n```bash\nDISCORD_APPLICATION_ID=… # from Step 1.2\nDISCORD_BOT_TOKEN=… # from Step 1.4\nDISCORD_GUILD_ID=… # optional: guild-scoped (instant) instead of global (~1h propagation)\n```\n\n⚠️ **The CLI is a bulk `PUT`, not an upsert** — unlike the deployment's own additive write above.\nDiscord's bulk endpoint *replaces every command registered at that scope* with exactly the array the\nscript sends (today: `[\"/oe\"]` alone). If you've also registered `/ask` (or anything else) at the\n**same scope** (same guild, or both global), running this script **deletes it** — re-register\neverything you want to keep in one pass.\n\n### Spend caps deliberately do NOT gate `/oe`\n\nThere is no model turn to decline, so `/oe` isn't a \"new spend\" origin — it works in a ⛔'d channel exactly as well as in one with headroom. `/oe budget raise`/`clear` still go through the real approval-card machinery; a human's click, not the command, is what actually changes anything.\n\n## Gotchas\n\n- **Slash command vs. mention.** The **interaction** channel documented here is slash-command-only — a plain `@mention` does nothing on that path. Ambient `@mention` messages (and the [auto-thread](#auto-thread-mention-conversations) behaviour) are served by the separate **Gateway** ingestion surface, which needs the always-on relay configured. If `/ask` doesn't appear, the command isn't registered for that scope, or a global command hasn't propagated yet.\n- **Public Key verification.** Every inbound interaction POST is Ed25519-verified against `DISCORD_PUBLIC_KEY`. If it's wrong or unset, Discord requests are rejected (including the initial PING), the **Interactions Endpoint URL** won't save, and the bot stays silent — check this first.\n- **PING handshake needs the endpoint live first.** Saving the Interactions Endpoint URL triggers an immediate `PING` (type `1`); your instance must already be running with the public key set so it can return the signed `PONG`. Set env → deploy → *then* save the URL.\n- **3-second ack / deferred response.** Discord requires an interaction acknowledgement within 3 seconds. Open Everywhere handles this for you (deferred ack, then edits the original response), so the agent can take as long as it needs — no extra wiring required.\n- **Global vs guild propagation.** Guild commands are instant; global commands can take up to an hour to appear. Register a guild command for setup and testing.\n- **No domain/org memory until the guild is vouched.** Every guild starts `external` (no membership check exists yet — see [Trust is unverified by default](#how-the-silo-model-maps) above), so a fresh guild channel's memory stays wherever the `public` pseudo-domain reaches at most, regardless of whether Discord could confirm the channel `@everyone`-readable. Vouch the guild (`OE_TRUST=internal` or `surfaces.ts`) to unlock an explicit domain or the org brain.\n- **Webhook Events *do* need a separate URL.** The one exception to \"Discord has only one public endpoint per app\": install/uninstall events (Step 1.6) are configured on the **Webhooks** tab with their own URL (`/eve/v1/discord/events`), not the Interactions Endpoint. They share `DISCORD_PUBLIC_KEY`, and they carry **no chat messages** — the feature name misleads; ambient content stays Gateway-only.\n- **`/oe` needs no separate URL.** It rides the SAME Interactions Endpoint URL as everything else in Step 1.5 — Discord has only the one public endpoint per app, so there's nothing extra to configure beyond registering the command itself ([above](#register-oe)).\n",
10
+ markdown: "# Discord\n\nRun a slash command in your Discord server and Open Everywhere acts as an autonomous teammate — it does the work, replies in the channel, and remembers what it learned, scoped correctly per channel.\n\nThis page is the Discord-specific setup runbook. For the concept of a *surface* and how surfaces plug in, see [Surfaces](../../extending/surfaces.md). For how memory is scoped per server and channel, see [Memory](../../capabilities/memory.md). For how Discord's feature set compares to the other surfaces — including what needs the Gateway relay and why — see the [surface support matrix](./support-matrix.md).\n\n**Discord has two ingestion paths, and this page sets up both.** The HTTPS **interactions** endpoint is interaction-based: on it, the only way to invoke the agent is an explicitly-registered slash command, and a plain `@mention` does nothing. Ambient `@mention`s, DMs, name-drops and channel follow-ups arrive over the separate **Gateway** path instead, which needs the always-on relay ([`deploy/discord-relay/`](../../../deploy/discord-relay/README.md)) — Discord never delivers those to an HTTP endpoint. The [surface support matrix](./support-matrix.md) marks every Gateway-dependent row with footnote ¹.\n\n## How the silo model maps\n\nOpen Everywhere's memory is [opt-in domains and silos](../../capabilities/memory.md), not an\nautomatic per-guild tier stack. A Discord channel/thread/DM is a **surface**; the guild is the\nnatural `workspace` identity key its channels' surface keys share, but sharing memory across\nthem still needs an explicit `domain` or the `org` pseudo-domain fallback — and (see \"Trust\"\nbelow), by default no Discord surface reaches either.\n\n| Open Everywhere concept | Discord thing |\n| --- | --- |\n| `org` (tenant) | your deployment (`deploymentIdentity.org` in `agent/identity/surfaces.ts`, one org per deploy today) |\n| `workspace` (identity key) | the **guild** (server) — its id (`guild_id`) |\n| `surface` (partition key) | the individual **channel or thread** (`channel_id`) |\n| `mode` | `channel` (guild text channel/thread), `dm` (1:1 DM, channel type `1`), `mpim` (group DM, type `3`) |\n| `visibility` | `public` only for a confirmed @everyone-readable guild channel; everything else `private` |\n\n**Visibility is tracked but isn't the memory gate.** Discord interaction payloads carry *no*\nclean public/private bit — channel readability is governed by per-role `@everyone`\n`VIEW_CHANNEL` permission overwrites, which aren't in the payload — so guild channels default\nto **`private`** (`discordVisibility`) until a future enrichment positively confirms\n`@everyone` can view them. DMs (type `1`) and group DMs (type `3`) are inherently private.\nNone of this decides whether memory shares, though — see below.\n\n**Trust is unverified by default — every guild starts `external`.** Open Everywhere has no\nDiscord guest/`@everyone`-membership check yet, so `bindDiscord` leaves `trust` undefined,\nwhich **fails closed to `external`**: a fresh guild channel gets read-only `public` memory at\nmost — never an explicit domain's silo, never the `org` brain — public-looking channel or not.\nA public Discord server is full of strangers, so a guild existing is not proof of org\nmembership. To unlock domain/org memory, the operator explicitly **vouches** it: set\n`identity.blanketTrust: \"internal\"` in `agent/settings/settings.ts` for a single-tenant deployment where every guild you'll ever be in is\ntrusted, or vouch specific guilds via a `discord/<guild_id>` (or `discord/<channel_id>` for one\nchannel) entry in `agent/identity/surfaces.ts`. Unvouched, the bot still answers slash\ncommands (chat-only, no shared memory); vouched, normal domain/org resolution applies exactly\nas it does for any other internal channel.\n\n**DMs are personal universes.** A DM has no guild, so it keys to the **caller's own user id**\nas the workspace — fully isolated from the server brain and from other users' DMs. The\npersonal DB silo is always writable regardless of trust; only the *shared read layer* on top\nof it needs a vouch (the same DM-partner-trust gate every platform uses).\n\n## Auto-thread (mention conversations)\n\nWhen the bot is reachable over the **Gateway** ingestion surface (ambient `@mention` messages, as opposed to the slash-command interaction path above), a mention starts a **thread** and the whole conversation happens in it — the signature \"one task = one thread\" pattern Open Everywhere uses on Slack.\n\n| Where you mention it | What happens |\n| --- | --- |\n| A **base channel** (guild text or announcement) | The bot **opens a thread** hanging off your message and replies there. That thread is its own **conversation** — its own durable session and per-thread notes — while still counting as part of the parent channel for domains and spend caps (below). Keep talking in the thread — no need to re-mention. |\n| **Already inside a thread** | It replies **in place** (a thread is already its own conversation). |\n| A **DM or group DM** | It replies **in place** (Discord has no threads in DMs). |\n| A **forum** channel | It replies **in place** (a forum post is itself a thread — it doesn't nest). |\n\nEach auto-created thread is named from your message (the mention stripped, truncated to Discord's 100-char cap; an empty message falls back to `Conversation with the agent`). A **second** mention in the base channel starts a **second** thread — one task per thread, by design.\n\n**Threads belong to their channel.** Although a Discord thread is technically its own channel id, Open Everywhere treats a thread as part of its **parent channel** for everything scoped to channels — [memory domain](../../capabilities/memory.md) membership (silo, access bundle, model route), domain-admin standing, and **spend caps** (a cap on the channel accumulates and gates its threads' usage too, and a cap proposed *from* a thread targets the parent channel). This matches Slack, where threads share the channel. Only the *conversation* is per-thread: the durable session, engagement, and the thread's own surface-tier notes. Parent resolution is best-effort — if the one-time lookup fails, that thread simply behaves as an unaffiliated channel for the turn (never blocked).\n\n**Toggle — `discord.autoThread`** (default **on**). Set it to `false` to reply **inline in the base channel** instead of opening a thread. It is a typed setting, not an environment variable, so opting out is a reviewed diff in your own `agent/settings/settings.ts`:\n\n```ts\n// agent/settings/settings.ts\nexport default defineSettings({\n discord: { autoThread: false }, // opt out: reply inline in the base channel, no thread\n});\n```\n\n**Fails open.** If the bot lacks **Create Public Threads** / **Send Messages in Threads** (or Discord rate-limits the create), thread creation is skipped and the turn still runs as an **inline** reply in the base channel — degraded, never dropped. Grant both permissions in [Step 3](#step-3--invite-the-bot) to get threads.\n\n**DMs need no mention.** Over the Gateway surface a direct message (or group DM) to the bot always wakes it — a DM is by definition addressed to the bot, so just talk to it. In guild channels the usual rule applies: an `@mention` starts a conversation; after that the bot follows the thread without re-mentioning.\n\n**Name-drops (opt-in, per domain).** With `nameDropWake: true` on the channel's [memory domain](../../capabilities/memory.md) — same flag as Slack — a guild message that says one of the bot's names without @mentioning it gets a *judged* reply: the bot answers only when the message is clearly for it, and stays silent otherwise. The name-token set is the same rule as Slack's (see [that surface's doc](slack.md)): the bot's **display name** (its server nickname, if set) UNION the deployment's `identity.name`, extended by `wake.nameDrop.include` and narrowed by `wake.nameDrop.exclude` (configuration-reference.md) — exclude always wins. Works in channels *and* un-followed threads (a deliberate extension over Slack, where threads belong to the engagement path). Scope matters for what happens next: a name-drop **in a thread** puts the bot into follow mode for that thread (small scope — same grain as Slack, where a name-drop's reply thread is followed); a name-drop **in a base channel** does *not* — following a whole channel means a judged model turn on every subsequent message, so there you @mention it (or say its name again) to continue. When it does follow a thread off a name-drop, it starts as a **warm watcher** (see *Stopping it following* below). Off by default; requires a Gateway relay recent enough to forward the bot's identity (older relays simply never name-wake). The road is audited on Discord exactly as it is on Slack: an admitted name-drop writes `surface.name_drop_woke` (naming the channel, the message id and `road: \"native\"` — this surface hands off to no standing seat), and a name-drop the domain flag refuses writes `surface.name_drop_silent`. A message that names nobody writes neither row. A judged wake also arrives with a short, **untrusted-wrapped backscroll** of the surrounding conversation (recent messages, capped) so the model can tell whether the message is really for it — the same context an @mention gets.\n\n### Stopping it following\n\nEngagement has no hard timeout, but a lightly-latched surface **sheds itself** — the same model as Slack:\n\n- **Participating** surfaces (you @mentioned the bot, or it actually replied) are **sticky**: they keep following every message there (each one a judged model turn, so a followed surface has a real per-message cost) until you ask it to stop. Just say so, however you'd phrase it to a colleague — \"you can stop following this\", \"we're good here\". This is **judged, not pattern-matched**: the agent reads the intent and calls `stand_down`, which sets a durable marker on the surface. There is deliberately no magic word (the regex that used to look for one disengaged on \"don't stop the deploy\" as readily as on \"stop\"). Mention it again any time to re-engage — that clears the marker. This is a **channel-only** verb — a DM has no `@mention` to clear a marker with, so `stand_down` refuses there instead of trapping the conversation silent for good.\n- **Warm watchers** (a thread the bot entered off a *name-drop* but hasn't yet replied in) are **not** sticky: if it judges \"no reply\" on three consecutive messages, it quietly **disengages** itself — so a one-off name-drop that wasn't really for it never leaves it silently following forever. The moment it does reply (or you @mention it), the surface is promoted to participating and the count resets.\n\n### Stopping a turn that's already running\n\nDifferent problem, different mechanism. Standing down happens *between* turns; stopping a turn\nthat is **in flight** can't be inferred at all, because the bot is the thing that's busy and your\nmessage would queue behind the very turn it's meant to stop. So it's an affordance:\n\n- react **✋** on the message — the host adds it when a turn actually kicks work off (its first\n delegation) and removes it when the turn ends, so it's there to click exactly while a stop means\n something, and never appears on a message the bot merely read;\n- or run **`/oe stop`**, which needs no reaction permission and takes no arguments.\n\nBoth are decided at ingress with **no model call and nothing spent**, so they keep working while\nthe channel is over its spend cap. ⚠️ The ✋ route needs a Gateway relay recent enough to forward\nreactions — an older deployed relay never forwards them, and `/oe stop` covers the gap.\n\nWhat a stop does, precisely: the turn's history rolls back to its last completed model call, but\n**anything already done is done** — tool calls inside the interrupted step had real effects and\nare not undone, and a running sandbox command can't be killed. The acknowledgement says \"stood\ndown\", never \"stopped\", and names what had already run.\n\n### Working indicators (status UX)\n\nWhile a turn runs (often 30s+), the bot shows it's on the case using Discord's native affordances — no extra messages, no edits:\n\n- It reacts **👀** on your message the moment it picks it up (\"seen, working\") — on any direct address (a mention or a DM).\n- While it works, Discord's native **typing indicator** shows (\"*Open Everywhere is typing…*\"), re-triggered as the turn progresses. The answer then arrives as a fresh message.\n- **Judged wakes hold typing back.** On a followed (engaged) surface or a name-drop, the model judges each message and may decide no reply is warranted. Those turns show **no typing at all until the reply is actually being written** — so a judged pass is silent from the first second, instead of \"typing… for 10 seconds, then nothing\" (which reads as a crash). Direct addresses (mentions and DMs) always answer, so they show typing immediately.\n- **On an auto-threaded mention** the 👀 is **removed** when the answer lands in the thread — absence is the done signal, visible from the base channel without opening the thread. (The bot never plants a ✅ — that stays reserved for humans, same convention as Slack.) Elsewhere the 👀 simply stands as the ack; the answer arrives right underneath.\n\n**Toggle — `discord.statusUx`** (default **on**). Like `autoThread` it is a typed setting, not an environment variable: set `discord: { statusUx: false }` in your own `agent/settings/settings.ts` for plain replies with no reaction or typing. All indicators are best-effort: a failed reaction or typing call never delays or drops the answer.\n\n### Reaction ingestion (feedback signal)\n\nOver the **Gateway** relay the bot also *ingests* inbound reactions. A 👍 / 👎 (or any emoji) on one of the **bot's own replies** is recorded as a lightweight human **feedback** signal — durable, append-only, carrying only the reactor's id + the emoji, never any message text. Reactions on *other* messages emit anonymous volume telemetry but aren't stored, and the bot's own status reactions (👀) are never counted. This needs the **Guild Message Reactions** and **Direct Message Reactions** gateway intents, which the relay already requests (they're not privileged — no portal toggle). Older relays that predate this simply never forward reactions, so the feature is silently off until you redeploy the relay.\n\n### Spend caps\n\nGuild channels are subject to the same [monthly spend caps](../../security/spend-and-cost.md) as every surface: a channel (or guild) over its budget **declines** new mentions with a visible message rather than silently ignoring them. The decline message names the exact scope keys, so a follow-up DM proposal can target them.\n\n**Admins are never locked out.** If the sender is an admin over the scope — on the config roster (`Domain.admins`), or a Discord-verified administrator/owner of the guild — the turn proceeds past the cap with a visible `⚠️ … proceeding because you're an admin` line (throttled to once per channel per hour — subsequent bypassed turns proceed quietly) and an audit entry (`spend.cap_bypassed`) on every bypass. Sudo semantics: the cap binds the team's ambient usage; the budget owner steps over it visibly and can raise or clear it right there (\"set this channel's cap to $5\" → approval card).\n\nDMs are capped like any other surface. The escape hatch is the **admin bypass**: an org admin's own DM turn proceeds past the cap with the visible warning and an audit row, so they can still propose an override (passing the scope key from the decline message) and approve it on the card **in the DM** — a DM click is decided by checking the clicker's admin standing in the target guild over REST, since Discord DM interactions carry no member permissions. One default from a DM is still refused: a Discord DM belongs to no server, so a `\"workspace\"` cap defaulted there would target your personal DM bucket rather than the guild you meant — pass an explicit `discord/<serverId>` key. (`level: \"surface\"` from a DM is fine now: it targets that DM, which is a scope the gate really enforces.)\n\n## Prerequisites\n\n- A Discord **server you manage** with the **Manage Server** permission (needed to add the bot and, optionally, to register guild-scoped commands).\n- A reachable Open Everywhere instance — deployed with a **public HTTPS URL**. Discord delivers interactions as signed HTTPS POSTs from its own infrastructure and **cannot reach `localhost`**; for local dev expose your instance with a tunnel (e.g. `ngrok http 3000`) and use that HTTPS URL. See the [docs index](../../README.md) to get the project and the [setup runbook](../setup-runbook.md) for the deployment steps.\n- Your instance's public base URL. The Discord interactions route is **`/eve/v1/discord`**, so Discord calls `https://<your-deploy-url>/eve/v1/discord`.\n\n## Step 1 — Create the Discord application + bot\n\n1. Go to the [Discord Developer Portal](https://discord.com/developers/applications) → **New Application**. Name it (e.g. `Open Everywhere`). Upload [`brand/png/mark-square-1024.png`](../../../brand/png/mark-square-1024.png), the project mark, as the **App Icon** on **General Information** and as the bot's **Icon** on the **Bot** tab. Skip this when you set [`identity.name`](../configuration-reference.md) and chose your own icon: with no name configured the agent presents as the project, so the project mark is its default avatar.\n2. On **General Information**, copy the **Application ID** — this is `DISCORD_APPLICATION_ID`.\n3. Still on **General Information**, copy the **Public Key** — this is `DISCORD_PUBLIC_KEY`. It verifies the Ed25519 signature on every inbound interaction POST.\n4. Go to the **Bot** tab → **Reset Token** → copy the token — this is `DISCORD_BOT_TOKEN`. (Treat it like a password; it's shown once.)\n5. Set the **Interactions Endpoint URL** (on **General Information**) to:\n\n ```\n https://<your-deploy-url>/eve/v1/discord\n ```\n\n When you save this, Discord immediately POSTs a `PING` (interaction type `1`) and expects a signed `PONG` back. **Your instance must already be deployed, running, and reachable with `DISCORD_PUBLIC_KEY` configured** (Step 4) or Discord rejects the URL. Set the env first, deploy, *then* save this field.\n\n > ⚠️ **Use your STABLE production domain here** (e.g. `your-app.vercel.app`), never a\n > deployment-specific URL (`your-app-<hash>-team.vercel.app`). Deployment URLs stay alive\n > forever pointing at that one old build — interactions (including approval-card button\n > clicks) would keep hitting stale code after every redeploy, failing in ways that look\n > like application bugs.\n\n6. *(Optional, recommended)* Go to the **Webhooks** tab → set the **Webhook Events URL** to:\n\n ```\n https://<your-deploy-url>/eve/v1/discord/events\n ```\n\n and subscribe to **`APPLICATION_AUTHORIZED`** and **`APPLICATION_DEAUTHORIZED`**. This is a\n **different URL** from the Interactions Endpoint above — Discord configures the two separately —\n but it is verified with the **same** `DISCORD_PUBLIC_KEY`, so there is nothing new to set.\n\n It gives OE an install/uninstall audit trail: each event writes a `surface.app_installed` /\n `surface.app_uninstalled` row (guild as the workspace, the authorizing user as the principal),\n queryable over the control plane's audit route. Without it OE has no signal that a server added\n or removed the app short of noticing silence.\n\n **Observability only** — this route gates nothing, wakes no session, and drops nothing. Leaving\n it unconfigured changes no behaviour. Note that Webhook Events deliberately do **not** carry chat\n messages: ambient channel content is Gateway-only and still needs the always-on relay (see the\n [surface support matrix](./support-matrix.md)).\n\n## Step 2 — Register the slash command\n\nThe channel handler does **not** filter on a specific command name — its `onCommand` hook accepts *any* registered application command, attaches the real Discord identity, and dispatches. So you register one command and pick its name. The command maps to the model prompt via `commandInteractionMessage`: it uses the value of a string option named **`message`** when present, otherwise it reconstructs `/command opt:value …`. **Register a command with a required `message` string option** so users type their request naturally.\n\nRegister with the Discord API (no helper script ships today). **Guild** commands appear **instantly** in that one server; **global** commands can take **up to an hour** to propagate — use a guild command while testing.\n\nGuild-scoped (instant, recommended for setup):\n\n```bash\ncurl -X POST \\\n \"https://discord.com/api/v10/applications/$DISCORD_APPLICATION_ID/guilds/$GUILD_ID/commands\" \\\n -H \"Authorization: Bot $DISCORD_BOT_TOKEN\" \\\n -H \"Content-Type: application/json\" \\\n -d '{\n \"name\": \"ask\",\n \"type\": 1,\n \"description\": \"Ask Open Everywhere to do something\",\n \"options\": [\n { \"name\": \"message\", \"description\": \"What should it do?\", \"type\": 3, \"required\": true }\n ]\n }'\n```\n\nGlobal (drop `/guilds/$GUILD_ID`, propagation up to ~1h):\n\n```bash\ncurl -X POST \\\n \"https://discord.com/api/v10/applications/$DISCORD_APPLICATION_ID/commands\" \\\n -H \"Authorization: Bot $DISCORD_BOT_TOKEN\" \\\n -H \"Content-Type: application/json\" \\\n -d '{ \"name\": \"ask\", \"type\": 1, \"description\": \"Ask Open Everywhere to do something\",\n \"options\": [ { \"name\": \"message\", \"description\": \"What should it do?\", \"type\": 3, \"required\": true } ] }'\n```\n\n(`type: 1` = CHAT_INPUT slash command; option `type: 3` = STRING. Name it `openeverywhere` instead of `ask` if you prefer.)\n\n## Step 3 — Invite the bot\n\n1. In the Developer Portal → **OAuth2** → **URL Generator**.\n2. Under **Scopes**, tick **`applications.commands`** (required for slash commands) and **`bot`**.\n3. Under **Bot Permissions**, tick:\n - **Send Messages** — post replies (interaction responses and Gateway/REST posts).\n - **Create Public Threads** — open a thread per conversation (see [Auto-thread](#auto-thread-mention-conversations)).\n - **Send Messages in Threads** — reply inside those threads.\n\n Without the two thread permissions the bot **falls back to inline replies** (auto-thread fails open — it never drops a turn), so the minimum for slash commands alone is just **Send Messages**. The agent replies via the interaction token for slash commands, so it doesn't need broad permissions.\n4. Copy the generated URL, open it, pick your server, and **Authorize**. You need **Manage Server** on that server to complete the invite.\n\n## Step 4 — Configure the environment\n\nSet these on your instance, then deploy:\n\n```bash\nDISCORD_APPLICATION_ID=… # Application ID from Step 1.2\nDISCORD_PUBLIC_KEY=… # Public Key from Step 1.3 (verifies signed interaction POSTs)\nDISCORD_BOT_TOKEN=… # Bot token from Step 1.4\n```\n\nOptional, but relevant to the silo model:\n\n```bash\nOE_MEMORY_PROVIDER=git # memory backend — git | sqlite\nOE_MEMORY_DIR=/abs/path/to/store\n```\n\n**Identity binds automatically.** You do **not** set workspace, surface, mode, or visibility by hand. The Discord channel reads the guild/channel/user ids and the channel `type` straight off each inbound interaction into the session auth context (`buildDiscordAuth`), and `bindDiscord` derives workspace = the guild, surface = the channel, plus mode and visibility. The `deploymentIdentity.workspace` / `.surface` declaration in `agent/identity/surfaces.ts` is only the `eve dev` gap-filler — once Discord is wired it is ignored.\n\n## Step 5 — Invoke it\n\n1. In a guild channel, run `/ask summarise the last few messages and list the action items`.\n2. Expected behaviour:\n - Discord shows a **`Thinking…`** typing indicator while the agent works (the channel calls `startTyping()` on dispatch).\n - It **acks within 3 seconds with a deferred response**, then edits that original response in place with the answer once the agent finishes — so longer tasks don't time out.\n - The reply lands in the channel, scoped to that channel's surface silo.\n3. Test a DM: open a direct message with the bot and run `/ask …` there. It responds the same way; the DM surface's memory is isolated to you and `private`.\n\n## Rotating the bot token\n\n**Reset Token** in the Developer Portal (Step 1.4) invalidates the old token immediately. Two\n**deployed** stores hold that token. Each one needs its own update, and neither picks the new value\nup on its own.\n\n| Store | What holds the token | How the new value takes effect |\n| --- | --- | --- |\n| Vercel production | `DISCORD_BOT_TOKEN` on the deployment | an explicit redeploy |\n| Railway | `DISCORD_BOT_TOKEN` on the always-on relay ([`deploy/discord-relay/`](../../../deploy/discord-relay/README.md)) | a relay redeploy |\n\nA rotation that reaches only the deployment leaves the relay dead. That failure is quiet: the slash\ncommand still works, and every HTTPS route still answers.\n\nA local checkout keeps its own copy — `deploy/discord-relay/.env`, and the repo-root `.env`. Those\nare operator copies, not deployed stores. Update one the next time you run it locally.\n\n### The Vercel half\n\n`git push` does not deploy, and a running deployment keeps the value it booted with:\n\n```bash\nvercel env rm DISCORD_BOT_TOKEN production -y # the name exists already — remove, then re-add\nvercel env add DISCORD_BOT_TOKEN production\nvercel deploy --prod\n```\n\n`deploy:census` does **not** see this half. It reads credential rows out of the store, and this\ntoken is an environment variable. Prove it by hand instead: run `/ask …` in a guild channel\n(Step 5). A dead token fails every Discord API call the deployment makes.\n\n### The Railway half\n\n**The relay reads the token ONCE, at boot.** `deploy/discord-relay/index.js` reads\n`process.env.DISCORD_BOT_TOKEN` at module load, then logs in with that value. A variable change alone\nchanges nothing on a running relay. The process holds the dead token until it restarts.\n\n```bash\ncd deploy/discord-relay\nread -rs -p 'new DISCORD_BOT_TOKEN: ' NEW_TOKEN && \\\n railway variables --set DISCORD_BOT_TOKEN=\"$NEW_TOKEN\" --skip-deploys && unset NEW_TOKEN\nrailway redeploy -y\nrailway logs # expect: \"[oe-discord-relay] ready as <bot>#0000 | mode: FORWARD\"\n```\n\n`read -rs` keeps the token out of your **shell history** and off the **screen** — a token typed as a\nliteral argument stays in the history file long after the rotation. `unset` drops it from the\nenvironment as soon as Railway holds it.\n\n🔴 **It does NOT hide the token from the process table.** The shell expands `\"$NEW_TOKEN\"` before it\nruns `railway`, so the value is visible in that process's `ps` and `/proc/<pid>/cmdline` entry for\nthe life of the call. Rotate on a machine you trust, never on a shared box or a runner other\ntenants can read.\n\n`--skip-deploys` holds the restart back, so the redeploy is one explicit step you can watch. The\n`ready as` line is the proof — the relay holds the Gateway socket again, with the new token.\n\n### What a missed relay looks like\n\nDiscord closes the relay's Gateway socket at the reset hour. Ambient channel and DM messages stop\narriving, because Discord delivers them over that socket only. Slash commands keep working, so the\nsurface looks half-alive.\n\n`npm run deploy:census` catches it: `discord.heartbeat` goes red. Read that row correctly. The\n**relay** POSTs the heartbeat on its own timer; the **deployment** writes the row, once the signed\nPOST passes the relay gate. After a token rotation the cause is the stale relay, so the remedy is\nthe relay redeploy above. A red row under a LIVE relay points at the ingest side instead — an\n`OE_RELAY_SECRET` mismatch, or a route that refuses. Check `railway logs` for `ingest rejected`\nbefore you redeploy anything. Restart the relay, then run the census again.\n\nThe check needs Discord mounted, and it needs the census run's OWN `OE_RELAY_HEARTBEAT_MS` mirror\nnon-zero and matching the relay's configured interval. The census reads its own copy of that name,\nnever the relay's — see [rollback](../rollback.md).\n\n### `.env.e2e` does not hold this token\n\nThe e2e tier drives Discord with `E2E_DISCORD_DRIVER_TOKEN`, and that is a **different bot** — the\ntest driver, a second application the `wake.driverAllowlist` setting admits\n(`packages/core/scripts/e2e/env.ts`). Resetting the deployment's own bot token does not invalidate\nit. No code in this repository reads the deployment's bot token out of `.env.e2e`, so a rotation\nleaves that file alone.\n\n## What the agent calls itself here\n\nA Discord session's IDENTITY — the name it introduces itself by — comes from one place only: the\n[`identity.name`](../configuration-reference.md) setting. Set it and it **wins on every surface**,\nbyte-identically — the right answer for a deployment that spans Slack and Discord from one window:\none name, everywhere. Unset, the session renders the generic identity line (\"this team's agent\").\nIt never borrows a name from another surface, and never from this surface's own Discord account\nname either — that is a HANDLE, not an identity (OPE-610).\n\nSeparately, the session also carries a HANDLE line — \"your mention/handle here appears as X\" — so\nthe agent recognises its own mentions and backscroll lines under the bot account's real Discord\nname. The agent reads it once per instance from `GET /users/@me` (the same `DISCORD_BOT_TOKEN` this\nintegration already uses to post replies), preferring the account's display name (`global_name`)\nand falling back to its username. A rename on Discord takes effect on the next cold start. If the\nread fails (no token, a transport error), the session simply carries no handle line; the identity\nline above is unaffected either way.\n\n## Reading channel/thread history\n\nDiscord supports the generic `read_channel`/`read_thread` verbs (the same tools Slack and Teams\nuse — since OPE-1145 no per-surface reader stands beside them on any surface), backed by the plain\nDiscord REST API\n(`GET /channels/{id}/messages`) — the **same `DISCORD_BOT_TOKEN`** this integration already uses to\npost replies (Step 1.4/Step 4 above). The read adapter (`packages/providers/discord/agent/channels/discord-read.ts`'s\n`discordReadAdapter`, registered into core's read-adapter registry at boot) reuses that token verbatim, so **there is no extra Discord- or Azure-side\nconfiguration to grant** — unlike Teams, which needs a separate Graph token/permission because its\nBot Framework Connector token can't read history.\n\n- **A Discord thread is its own channel id.** Discord threads aren't a sub-resource of their parent\n channel the way Slack/Teams threads are — a thread IS a channel, with its own id. So\n `read_thread`'s thread identifier for Discord is that thread's channel id, and the adapter simply\n reads it with the same `GET /channels/{id}/messages` call `read_channel` uses against a base\n channel. Both ids come from the turn's own binding — neither verb takes a target.\n- **Bounded, single page.** Unlike Teams' paginated Graph reads, one GET returns up to 100 messages\n (Discord's own per-request cap) — a requested `limit` above 100 is silently clamped, never fanned\n out across pages.\n- **Scope.** The verbs read THE CONTAINER THE WAKE ARRIVED IN and take no target, so no other\n channel is addressable. The domain allowlist still runs inside the adapter as defence in depth.\n An out-of-scope channel is refused before any Discord GET, and every refusal writes a\n `read.refused` audit row naming the channel, the caller's domain and the verdict (ids only, never\n message content) — queryable with `GET /control/v1/audit?since=<iso>&actions=read.refused`.\n\n## Identity linking\n\n[Identity linking](../../how-it-works/identity.md) joins a person's Discord account to their\naccounts elsewhere. Discord supports **both halves** of the preferred *directory* transport, so a\nperson can name their other account instead of carrying a code between two surfaces.\n\n- **The account directory** searches the guilds your domains declare in their `reach` lists\n (`agent/memory/config/domains/<name>.ts`) — one `GET /guilds/{id}/members/search` per guild, so\n Discord itself does the matching. A guild nobody configured is never searched, and bots are\n dropped (a link is a statement about a human).\n- **The DM ask** opens the 1:1 conversation with `POST /users/@me/channels` and posts the consent\n request there. No extra permission: Discord delivers a bot DM when the recipient shares a server\n with the bot and has not turned off direct messages from server members.\n- **Two buttons** ride under the ask, and a tap answers it with no model turn. The tap returns to the\n same **Interactions Endpoint URL** the approval cards already use, so there is nothing extra to\n configure. The answer is **ephemeral** — only the person who tapped\n sees it. A tap from a server channel is refused with a pointer back to the DM.\n\n⚠️ **The directory needs the privileged `SERVER MEMBERS` intent.** Turn on **Privileged Gateway\nIntents → Server Members Intent** on your application's **Bot** page in the Discord developer\nportal. Without it Discord answers `403` to the member endpoints, the directory resolves empty, and\nlinking falls back to the **code** transport — which still works and says which capability was\nmissing. Directory rights are fine to require for the better path; they are never a precondition for\nlinking at all.\n\nBecause Discord can DM, a `link <code>` claim typed **in a channel** is now refused with a pointer to\nthe DM, and the code is not spent. A code is a bearer secret for its whole life, and a room has an\naudience.\n\n## Proactive routines\n\nScheduled [routines](../../capabilities/proactivity-and-routines.md) work on Discord: create one with a slash command (\"every hour, check …\") and the fired result posts back **into the same channel** via the REST create-message endpoint (the bot token from Step 1 — no Gateway websocket involved). The post-back target is captured automatically when the routine is created; nothing to configure. Spend caps apply to guild-channel routines — and to 1:1 DM routines too, same as Slack: a fire never gets the admin bypass, because there is no attending admin to bypass on its behalf.\n\n## Slash commands: `/oe` (zero-inference control-plane)\n\n`/oe` is a **second, separate** slash command from the model-dispatching one registered in [Step 2](#step-2--register-the-slash-command) (`/ask`, or whatever you named it). It's the control-plane escape hatch: pure logic, code-rendered responses, **no model turn** — so it answers even while a channel is over its spend cap, engagement is judging silence, or the model/gateway itself is down. It's intercepted at the **front route** (`channels/discord-front.ts`), before discordChannel's `onCommand` hook ever sees it, so it costs zero inference — unlike every other registered command name, which `onCommand` dispatches to the agent unconditionally.\n\nCommands:\n\n| Command | What it does | Visibility |\n| --- | --- | --- |\n| `/oe status` | Deploy sanity: the deployment sha and eve pin that identify this build, the app version when the deploy carries one, primary/utility model config, the context window and the token count compaction fires at, memory provider. | Ephemeral (only you see it) |\n| `/oe budget status` | This channel's and server's effective spend caps (tokens + USD) and current-month spend — the SAME figures the spend gate enforces. | Ephemeral |\n| `/oe budget raise <usd>` | Proposes a new monthly USD cap for this channel: posts the SAME public approval card `set_spend_limit` posts (Approve/Reject buttons); an admin decides. The ephemeral ack also shows **your own domain's recent spend** from the ledger — see [Spend & cost](../../security/spend-and-cost.md#the-domain-spend-scan-behind-oe-budget-raise). A Discord channel the operator has not declared internal is `external`, so no domain resolves there and the ack says so instead. | Card: public in-channel. Ack: ephemeral |\n| `/oe budget clear` | Proposes clearing this channel's spend-limit override back to the config-as-code cap: posts the SAME public approval card `clear_spend_limit` posts. | Card: public in-channel. Ack: ephemeral |\n| `/oe stop` | Stands down the turn currently running in this channel. **No model turn, nothing spent** — it works while the channel is over its cap, which is when you're most likely to want it. | Ephemeral |\n| `/oe rate <1-5>` | Records one human mark on the [model A/B test](../../extending/models-and-gateway.md#ab-testing-a-challenger-model): rates this channel's most recent champion/challenger turn, on the arm that turn actually ran. Answers \"nothing to rate\" — the normal reply — while the test is off. | Ephemeral |\n| `/oe help` | Lists the commands. | Ephemeral |\n\nDiscord requires picking a concrete subcommand — you can't invoke the bare group (`/oe budget` isn't itself invokable; type `/oe budget status`). Slack's equivalent free-text grammar (`/oe budget`) is more forgiving; see the [Slack guide](./slack.md#slash-commands-oe-zero-inference-control-plane).\n\n### Register `/oe` — the deployment does it itself\n\n**You register nothing.** The deployment reconciles `/oe` against Discord on its own, once per process\nstart: it reads the commands Discord holds for your application at each declared guild, compares them\nwith the command set the code declares, and writes only when they differ. Deploy a build that adds a\nsubcommand and the next cold start registers it.\n\nName the guilds in `agent/commands/discord-commands.ts`:\n\n```ts\nexport const DISCORD_COMMAND_GUILDS: readonly string[] = [\n \"1300000000000000100\", // your server's guild id\n];\n```\n\nA guild id is **tracked config**, not an environment variable — it lives in Git and changes by pull\nrequest, like every other room key ([Config-as-code](../../how-it-works/config-as-code.md)). The two\ncredentials stay environment: `DISCORD_APPLICATION_ID` (Step 1.2) says which application this\ndeployment speaks as, and `DISCORD_BOT_TOKEN` (Step 1.4) authenticates the call. Either one absent and\nthe reconcile reports `skipped` in the boot log and registers nothing — it never fails the boot, and\nneither does a Discord outage: the worst outcome is the command list you already had.\n\nWatch for one line per platform in the deployment's boot log:\n\n```\n[open-everywhere:command-registration] discord: unchanged — guild 152…: \"/oe\" already matches what this deployment declares\n```\n\n**The deployment's write is additive.** It uses Discord's per-command `POST` (create-or-update by\nname), so a command you registered yourself at the same scope — the `/ask`-style command from\n[Step 2](#step-2--register-the-slash-command) — is never touched.\n\nDeclare no guild and the deployment registers nothing and makes no Discord call at all.\n\n⚠️ **Every process holding both credentials reconciles — a local `eve dev`/`eve start` included, and\nit writes the command shape of the checkout that is running.** Do not run a branch that changes the\n`/oe` command set against the deployment's own `DISCORD_BOT_TOKEN`: your server will show that\nbranch's `/oe` until the deployment's next cold start writes it back. Develop such a branch against a\nDiscord application of your own, or with the bot token unset.\n\n#### The one-off CLI, for a global registration\n\n`npm run register:discord-commands` still ships, for the one thing the deployment does not do:\nregistering `/oe` **globally** (every server the app is in). A global command takes up to an hour to\npropagate, which no boot-time check can prove landed, so it stays a deliberate operator step. It\nreads:\n\n```bash\nDISCORD_APPLICATION_ID=… # from Step 1.2\nDISCORD_BOT_TOKEN=… # from Step 1.4\nDISCORD_GUILD_ID=… # optional: guild-scoped (instant) instead of global (~1h propagation)\n```\n\n⚠️ **The CLI is a bulk `PUT`, not an upsert** — unlike the deployment's own additive write above.\nDiscord's bulk endpoint *replaces every command registered at that scope* with exactly the array the\nscript sends (today: `[\"/oe\"]` alone). If you've also registered `/ask` (or anything else) at the\n**same scope** (same guild, or both global), running this script **deletes it** — re-register\neverything you want to keep in one pass.\n\n### Spend caps deliberately do NOT gate `/oe`\n\nThere is no model turn to decline, so `/oe` isn't a \"new spend\" origin — it works in a ⛔'d channel exactly as well as in one with headroom. `/oe budget raise`/`clear` still go through the real approval-card machinery; a human's click, not the command, is what actually changes anything.\n\n## Gotchas\n\n- **Slash command vs. mention.** The **interaction** channel documented here is slash-command-only — a plain `@mention` does nothing on that path. Ambient `@mention` messages (and the [auto-thread](#auto-thread-mention-conversations) behaviour) are served by the separate **Gateway** ingestion surface, which needs the always-on relay configured. If `/ask` doesn't appear, the command isn't registered for that scope, or a global command hasn't propagated yet.\n- **Public Key verification.** Every inbound interaction POST is Ed25519-verified against `DISCORD_PUBLIC_KEY`. If it's wrong or unset, Discord requests are rejected (including the initial PING), the **Interactions Endpoint URL** won't save, and the bot stays silent — check this first.\n- **PING handshake needs the endpoint live first.** Saving the Interactions Endpoint URL triggers an immediate `PING` (type `1`); your instance must already be running with the public key set so it can return the signed `PONG`. Set env → deploy → *then* save the URL.\n- **3-second ack / deferred response.** Discord requires an interaction acknowledgement within 3 seconds. Open Everywhere handles this for you (deferred ack, then edits the original response), so the agent can take as long as it needs — no extra wiring required.\n- **Global vs guild propagation.** Guild commands are instant; global commands can take up to an hour to appear. Register a guild command for setup and testing.\n- **No domain/org memory until the guild is vouched.** Every guild starts `external` (no membership check exists yet — see [Trust is unverified by default](#how-the-silo-model-maps) above), so a fresh guild channel's memory stays wherever the `public` pseudo-domain reaches at most, regardless of whether Discord could confirm the channel `@everyone`-readable. Vouch the guild (`identity.blanketTrust: \"internal\"` or `surfaces.ts`) to unlock an explicit domain or the org brain.\n- **Webhook Events *do* need a separate URL.** The one exception to \"Discord has only one public endpoint per app\": install/uninstall events (Step 1.6) are configured on the **Webhooks** tab with their own URL (`/eve/v1/discord/events`), not the Interactions Endpoint. They share `DISCORD_PUBLIC_KEY`, and they carry **no chat messages** — the feature name misleads; ambient content stays Gateway-only.\n- **`/oe` needs no separate URL.** It rides the SAME Interactions Endpoint URL as everything else in Step 1.5 — Discord has only the one public endpoint per app, so there's nothing extra to configure beyond registering the command itself ([above](#register-oe)).\n",
11
11
  },
12
12
  ];
13
13
  //# sourceMappingURL=docs-generated.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"docs-generated.js","sourceRoot":"","sources":["../../agent/docs-generated.ts"],"names":[],"mappings":"AAAA,2GAA2G;AAC3G,wFAAwF;AACxF,6FAA6F;AAC7F,sFAAsF;AAItF,MAAM,CAAC,MAAM,aAAa,GAAwB;IAChD;QACE,IAAI,EAAE,iCAAiC;QACvC,KAAK,EAAE,SAAS;QAChB,OAAO,EAAE,wMAAwM;QACjN,QAAQ,EAAE,yv0CAAyv0C;KACpw0C;CACF,CAAC"}
1
+ {"version":3,"file":"docs-generated.js","sourceRoot":"","sources":["../../agent/docs-generated.ts"],"names":[],"mappings":"AAAA,2GAA2G;AAC3G,wFAAwF;AACxF,6FAA6F;AAC7F,sFAAsF;AAItF,MAAM,CAAC,MAAM,aAAa,GAAwB;IAChD;QACE,IAAI,EAAE,iCAAiC;QACvC,KAAK,EAAE,SAAS;QAChB,OAAO,EAAE,wMAAwM;QACjN,QAAQ,EAAE,us1CAAus1C;KAClt1C;CACF,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@open-everywhere/provider-discord",
3
- "version": "0.3.0",
3
+ "version": "0.4.0",
4
4
  "description": "Open Everywhere Discord provider — Discord channel and DM surfaces, gateway wiring, identity mapping and approval cards.",
5
5
  "keywords": [
6
6
  "agent",
@@ -168,7 +168,7 @@
168
168
  "test": "echo 'provider-discord: its test suite runs at the APP TIER (root scripts/) because the discord surface composes deeply with core internals (a custom gateway, admin approval cards, guild-admin bypass, routine dispatch) — see the root test chain (test:discord*, test:scenarios*, test:oe-commands, and the read/dispatch/audit/wake integration tests). This keeps the core adapter-api barrel a small port surface rather than exporting test-only internals.'"
169
169
  },
170
170
  "dependencies": {
171
- "@open-everywhere/core": "0.3.0",
171
+ "@open-everywhere/core": "0.4.0",
172
172
  "zod": "4.5.4"
173
173
  },
174
174
  "peerDependencies": {