fix(discord): add warning log when slash command rejected due to missing allowlist

When a Discord slash command is rejected because no user allowlist is configured,
log a helpful warning message to assist users in debugging the issue.

The warning includes:
- The user ID that was rejected
- Instructions to configure channels.discord.guilds.<id>.users or dm.allowFrom

This maintains the secure-by-default behavior (deny when no allowlist) while
making it easier for users to understand why commands are being rejected.

Example log:
discord: slash command rejected for user 123456 - no allowlist configured.
Configure channels.discord.guilds.<id>.users or channels.discord.dm.allowFrom to allow users.
This commit is contained in:
wakingcan 2026-01-27 00:33:24 -06:00
parent 9daa846457
commit 8b8fce5371

View File

@ -38,6 +38,7 @@ import {
readChannelAllowFromStore,
upsertChannelPairingRequest,
} from "../../pairing/pairing-store.js";
import { logVerbose } from "../../globals.js";
import { resolveAgentRoute } from "../../routing/resolve-route.js";
import { loadWebMedia } from "../../web/media.js";
import { chunkDiscordTextWithMode } from "../chunk.js";
@ -656,6 +657,14 @@ async function dispatchDiscordCommandInteraction(params: {
modeWhenAccessGroupsOff: "configured",
});
if (!commandAuthorized) {
// Log warning when no allowlist is configured to help users debug
const anyAuthorizerConfigured = authorizers.some((entry) => entry.configured);
if (!anyAuthorizerConfigured) {
logVerbose(
`discord: slash command rejected for user ${user.id} - no allowlist configured. ` +
`Configure channels.discord.guilds.<id>.users or channels.discord.dm.allowFrom to allow users.`,
);
}
await respond("You are not authorized to use this command.", { ephemeral: true });
return;
}