Skip to content

Application security posture

audit_application_posture, discord://application/posture, get_connector_status, online doctor, and setup derive a normalized posture from Discord's authenticated Get Current Application response that identity verification already requires. The audit adds no configuration field, environment variable, application mutation, guild scan, Gateway connection, activity record, cache, or persistent file. The tool belongs to the connector toolset; the fixed resource uses the same configured identity and remains private and uncached.

get_connector_status returns verified application and bot IDs, privileged-intent states, the complete bot-installation audit described below, effective policy, application posture, and write-coordination boundaries. Its dedicated versioned envelope omits mutable application and bot profile text, local paths, and raw Discord payloads, persists nothing, and carries an explicit fixed privacy projection. Exact IDs provide the identity proof without introducing unnecessary untrusted display text into an MCP conversation.

The posture result reports only verified application and bot IDs plus fixed or structural evidence: whether the bot is public or requires an OAuth2 code grant, advertised guild and user installation contexts, normalized known default scopes and permission names, Administrator and unknown-authority findings, privileged-intent states, Interaction delivery mode, event-webhook status and counts, role-connection endpoint presence, redirect and RPC-origin counts, selected connector requirements, compatibility decisions, and deterministic remediation findings. Per-context defaults remain distinct from legacy defaults so one authorization shape cannot obscure another. Unknown future context types, enum values, permission bits, scopes, and fields are counted without guessing their meaning.

The posture privacy projection omits application and bot names and descriptions, media hashes, verification data, owner, team, guild identity, URL values, redirect targets, RPC origins, raw flags, raw permission bitfields, webhook event names, and every unknown value. Known evidence is validated under strict item, text, Unicode, bitfield, and object bounds before projection; malformed known evidence fails closed. Discord's flags_new contract is authoritative when that field is present, while a valid legacy numeric flags field remains usable when it is absent. Invalid authoritative evidence or absence of both valid forms is reported as unknown rather than interpreted optimistically.

Connector-fit findings are policy-aware. Guild Members becomes a blocker only when the selected member directory requires it. Message Content becomes a blocker for configured content-dependent writes, a search-availability warning for the messages toolset, or unnecessary otherwise. A configured outgoing Interactions endpoint blocks native Gateway Interaction ingress because Discord supports only one delivery method. Presence intent is reported as unnecessary because the connector never requests it. A public bot, full code-grant requirement, missing Guild Install support, Administrator defaults, unknown default authority, custom install URL, enabled external event webhook, or uncertain future schema each produces a fixed actionable finding without revealing the underlying private value.

Canonical source: docs/reference.md

Documentation generated for guildcontrol@0.0.0. Canonical source and edit history remain in the public repository. GuildControl is an independent project and is not affiliated with or endorsed by Discord Inc. Discord is used only to identify the platform that GuildControl connects to.