# Manage permissions in Discord

> Edit permission rules, check access and run command sync from the /permissions panel

The `/permissions` command opens a private panel in Discord that manages the same rules as **Settings → Permissions** in the dashboard. A change made in the panel appears in the dashboard, and a change made in the dashboard appears in the panel. There is no separate Discord-only configuration.

The panel edits one rule at a time. Bulk edits with a reviewed batch, the full capability catalog and the check-all access matrix stay in the dashboard; see [Set up role-based access](/docs/permissions/admin-guide).

## Open the panel

Run this command in the server:

<Cmd cmd="/permissions" />

Aethor replies with an ephemeral panel that only you can see. Every button and menu updates that same message in place, so the panel never fills the channel with follow-up messages.

<discord-messages class="not-prose">
	<discord-message profile="aethor" ephemeral>
		<discord-embed slot="embeds" embed-title="Server permissions" color="#5865f2">
			<discord-embed-description slot="description">Suggestions · 2 custom rules<br />Tags · 1 custom rule<br />Tickets · inherited defaults<br />Button roles · inherited defaults<br />…and 6 more areas in the menu below</discord-embed-description>
			<discord-embed-fields slot="fields">
				<discord-embed-field field-title="Command sync">Not enabled</discord-embed-field>
			</discord-embed-fields>
		</discord-embed>
		<discord-action-row slot="components">
			<discord-button type="primary">Check access</discord-button>
			<discord-button type="secondary">Sync with Discord</discord-button>
			<discord-button type="secondary">Refresh</discord-button>
		</discord-action-row>
	</discord-message>
</discord-messages>

A select menu under the message lists every feature area. Areas with custom rules are listed first in the embed, and the **Command sync** field shows whether [command visibility sync](/docs/permissions/command-visibility) is enabled and its last outcome.

Viewing the panel requires the manager rule: Discord's **Manage Channels**, **Manage Messages** and **Manage Server**, or being the server owner or a Discord administrator. Every edit is checked again against the same rule when you press the button. These two capabilities are non-overridable, so a custom role rule can never open the panel to a non-manager; see [Access that cannot be delegated away](/docs/permissions#access-that-cannot-be-delegated-away).

The optional `target` argument opens a specific rule directly. Its autocomplete searches the same group and action labels the dashboard shows, so `/permissions target:Suggestions · Moderators` skips the area menu.

## Browse rules by feature area

Pick a feature area in the menu to see its rules:

- **Group rules** lists each level with its current rule, either the Discord default with the required permissions or the selected roles.
- **Action overrides** lists only the actions in that area that have their own exception. The field is absent when there are none.

Names in the panel are the same labels the dashboard uses. Settings that cannot be delegated, such as the permission system itself, never appear in the panel's menus.

## Edit a rule

Choose a rule in the area view to open it. The panel shows the current rule, how many actions the rule applies to, and what the rule falls back to if you reset it.

<discord-messages class="not-prose">
	<discord-message profile="aethor" ephemeral>
		<discord-embed slot="embeds" embed-title="Suggestions · Moderators" color="#5865f2">
			<discord-embed-description slot="description">Current rule: roles: @Suggestion Team</discord-embed-description>
			<discord-embed-fields slot="fields">
				<discord-embed-field field-title="If reset">Falls back to the Discord default: Manage Messages</discord-embed-field>
			</discord-embed-fields>
		</discord-embed>
		<discord-action-row slot="components">
			<discord-button type="secondary">Use Discord default</discord-button>
			<discord-button type="primary">Choose roles…</discord-button>
			<discord-button type="destructive">Reset to inherit</discord-button>
			<discord-button type="secondary">Back</discord-button>
		</discord-action-row>
	</discord-message>
</discord-messages>

The three edit buttons match the dashboard's rule editor:

- **Use Discord default** stores an explicit rule that uses the built-in Discord permission requirement.
- **Choose roles…** opens a role picker, pre-filled with the currently selected roles. Submitting the picker saves immediately. An empty selection is rejected; use the Discord default instead when nobody should qualify through roles.
- **Reset to inherit** removes the stored rule. A group falls back to its Discord default; an action override falls back to its group rule.

There is no draft or review step in Discord. Each edit saves on its own, the panel confirms with a **Saved** view, and the change is [recorded in the audit log](/docs/audit-log) like a dashboard edit. A saved rule is not destructive: edit the same rule again to change it back.

A role rule replaces the normal Discord permission requirement, exactly as it does in the dashboard. Read [Permissions and capabilities](/docs/permissions) before delegating a group for the first time.

## When someone edits at the same time

Every save checks that the rules have not changed since the panel rendered. If another manager saved from the dashboard, or from their own panel, while you were editing, the panel shows **Settings changed elsewhere**: nothing was saved, and the panel refreshes to the current rules so you can repeat the edit against them. This is the same version conflict the dashboard reports.

## Check a member's access

**Check access** on the home view answers the same question as the dashboard's **Access** tab: what can this person actually do? Pick a member, pick a feature area, then pick an action. The panel shows the decision and the rule that produced it:

- **Allowed**, naming the role rule or the Discord default that matched; or
- **Not allowed**, naming the missing roles or Discord permissions, or another blocking check such as membership, Aethor's own Discord permissions or a Premium requirement.

The check uses the same server-side evaluator as the dashboard and the commands themselves. For checking every action at once, or checking a role instead of a person, use the dashboard's **Access** tab.

## Sync with Discord

**Sync with Discord** on the home view runs the [command visibility sync](/docs/permissions/command-visibility), which mirrors role rules into Discord's command picker.

When sync is already enabled for the server, the panel runs it immediately and shows the per-command report: how many commands were updated, already in sync, not mirrored, or failed.

When sync is not enabled, enabling it requires a one-time authorization in a browser, because Discord only accepts command-permission updates with that consent. The panel shows a link button instead of running the sync:

<discord-messages class="not-prose">
	<discord-message profile="aethor" ephemeral>
		<discord-embed slot="embeds" embed-title="Discord command sync — not enabled" color="#f0b232">
			<discord-embed-description slot="description">Discord needs a one-time authorization in your browser before Aethor can mirror these rules onto command visibility. The link signs you in, asks for consent, and finishes on its own — this message updates when it's done.<br /><br /><small>The link works once, only for you, and expires in 60 seconds.</small></discord-embed-description>
		</discord-embed>
		<discord-action-row slot="components">
			<discord-button url="/docs/permissions/command-visibility">Enable sync in browser</discord-button>
			<discord-button type="secondary">Back</discord-button>
		</discord-action-row>
	</discord-message>
</discord-messages>

The link is single-use, only works for the person who opened the panel, and expires after 60 seconds. Opening it signs you in, asks for Discord's consent, and ends on a page that tells you the tab can be closed. Aethor then runs the sync and updates the panel message in Discord with the result. If the panel was open too long for that update to arrive, return to the home view and select **Refresh** to see the current sync status.

The account that authorizes must meet the same requirements as enabling sync from the dashboard: it needs enough Discord authority and must outrank the mirrored roles. See [Enabling sync](/docs/permissions/command-visibility#enabling-sync).

## Related guides

<div class="not-prose doc-link-card-grid">
	<DocLinkCard
		href="/docs/permissions/admin-guide"
		eyebrow="Admin guide"
		title="Set up role-based access"
		description="Plan a delegation, edit rules in a reviewed batch, and test the result."
	/>
	<DocLinkCard
		href="/docs/permissions/command-visibility"
		eyebrow="Discord"
		title="Command visibility"
		description="Understand what the sync writes to Discord and its status values."
	/>
	<DocLinkCard
		href="/docs/permissions/troubleshooting"
		eyebrow="Troubleshooting"
		title="Resolve access problems"
		description="Check denials, stale data, and command-sync statuses."
	/>
</div>
