Application monetization audit
Keep entitlement and subscription reads disabled unless the independent audit capability, dedicated application-monetization toolset, non-empty exact current-application SKU allowlist, and at least one endpoint-specific entitlement-guild, entitlement-user, or subscription-user scope are configured. A guild entitlement beneficiary must also remain inside the outer guild read policy. An entitlement user scope must never authorize subscription lifecycle evidence, and a subscription user scope must never authorize entitlement evidence. Enforce every policy check before identity or commerce reads, freshly verify the pinned application and bot for each request, and fetch the complete current SKU catalog before accepting any requested SKU. Never accept a caller-selected application, unconfigured subject, unconfigured SKU, stale catalog, or non-subscription SKU for a subscription audit.
Query entitlements for exactly one configured guild or user beneficiary and one bounded configured SKU set. Always request exclusion of ended and deleted entitlements. Require every response record to match the pinned application, requested SKU set, and exact beneficiary. A user-beneficiary record must have the exact user ID and no guild ID; a record with both identifies a guild benefit purchased by that user and must fail closed rather than grant user access. A guild-beneficiary record must have the exact guild ID, and any purchaser user ID must be validated and omitted.
Query subscriptions only for one exact configured user and one exact configured current subscription SKU. Require every record to match that user and include the requested SKU. Treat subscription status and period as lifecycle and reporting evidence only. Entitlements remain the only access authority; never infer access from an active subscription or denial from an inactive, ending, absent, incomplete, or unknown subscription record.
Return only exact record and configured SKU IDs, normalized documented state, canonical timestamps, bounded page evidence, configured related-SKU relationships, count-only omitted relationships and future evidence, fixed warnings, and exact requested subject identity. Never return or persist subject profiles, guild-entitlement purchaser IDs, country, payment source, payment or revenue data, product names, benefits, prices, media, entitlement links, raw payloads, unknown values, or unconfigured SKU IDs. Create no activity record, cache, Gateway state, persistent file, entitlement consumption, test grant, deletion, subscription change, SKU change, or other monetization write path.
Reject malformed known fields, timestamps, snowflakes, identities, duplicates, oversized objects or pages, cursor contradictions, invalid SKU relationships, unknown application ownership, and records outside the exact filters without echoing raw evidence. Keep every result subject to the connector's complete lossless MCP read-result byte boundary, and expose no historical or complete-inventory claim for a bounded entitlement or subscription page.
Canonical source: SECURITY.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.