# Troubleshoot permission access

> Find out why a person, role, command or dashboard action is allowed or denied

Start in **Settings → Permissions → Access** in <a href={DASHBOARD_URL}>the dashboard</a>. Check the real **Person** whenever possible. A role-only result is useful for understanding one role, but it cannot include all of a member's roles, ownership or Discord permissions.

![Capability check results showing allowed and denied actions with their reasons](../../../../../static/screenshots/dashboard/permission-capability-results.png)

## The decision in plain English

For one action, Aethor checks roughly this order:

1. Is this a personal-account action or a server action?
2. Is the Discord information current enough to make a safe decision?
3. Is the person still a member of the server?
4. Is the person the server owner or a Discord administrator?
5. Does an author exception apply, such as editing their own suggestion?
6. Does the action have an override? Otherwise, does its group have a rule? Otherwise, use the built-in Discord permission rule.
7. Does the person have one of the selected roles, or all required Discord permissions?
8. Does Aethor have the Discord permissions needed to carry out the action?
9. Does the server have premium when the action requires it?

The owner/administrator recovery rule bypasses the actor rule, not physical bot permissions or premium.

## What each denial means

### Your Discord permission is missing

The action currently uses **Discord permissions**, and the person lacks one or more required permissions. The capability result lists them.

Fix one of these:

- give the member the required Discord permission through a role; or
- deliberately change the group or action to **Only selected roles**.

Do not grant a broad Discord permission merely to silence the error if a narrow Aethor role rule better matches the person's job.

### Your Discord role is missing

The effective rule is **Only selected roles**, but none of the person's current roles appears in the selected list.

Check the action override as well as the group. An action-level override wins even when the group looks correct. Then confirm the role is assigned to the member in Discord and select **Refresh permissions**.

### Aethor is missing a Discord permission

The actor passed, but the bot cannot physically complete the action. Giving the person another role will not help.

Open the capability result and add the named permission to Aethor's Discord role or the relevant channel override. Also check Discord role hierarchy for role assignment, moderation and ban actions.

### Premium is required

The role rule is valid, but the action is not available on the server's current plan. Custom roles never bypass billing gates. Premium-only actions currently include CSV export, Anti-invite and publishing button roles.

### Permission status is unavailable

Aethor could not establish current, trustworthy Discord state. It denies rather than guessing. Common causes are a temporary Discord/API problem, stale membership data or a role lookup that failed.

Select **Refresh permissions** and retry. If the member recently joined or changed roles, wait briefly for Discord to deliver the update. If the problem affects everyone, check Aethor's status or contact support.

### Access denied or membership missing

The account is not currently a member of the server, the server is not available in this Aethor environment, or the sign-in link is restricted to another server. Sign in with Discord again and confirm the account can see the server.

## The page is read-only

Viewing and changing the permission system is intentionally non-delegable. Both actions require Discord's **Manage Server** permission. A selected Aethor role cannot grant it.

If you can inspect rules but cannot edit them:

1. Confirm the signed-in Discord account still has **Manage Server**.
2. Select **Refresh permissions**.
3. Sign out and sign in again if the Discord permission was just added.
4. Ask the server owner or a Discord administrator to make the change if you should not have Manage Server.

## A group looks right, but one action is wrong

Expand the group and look for an **Override** badge. The action may be set to:

- its own selected roles;
- **Use Discord permissions**, ignoring the group's selected roles; or
- **Follow [group]**, which is the option that truly inherits the group.

Use the **Overrides** filter to show only groups with action exceptions. Remove an exception by editing the action and choosing **Follow [group]**.

## A suggestion author can still edit or delete

This is intentional. `suggestion.content.update` and `suggestion.delete` allow the suggestion's own author through a narrow ownership check. The **Suggestions · Moderators** rule controls staff use of those actions, not the author's self-service action.

The Access tab may label these results **Conditional** when a role-only model cannot know whether the eventual person owns the suggestion.

## An empty selected-role rule still allows someone

An empty role list means nobody qualifies through the stored role rule, but the server owner and Discord administrators remain an unremovable recovery path. Suggestion authors may also retain their two author-specific actions.

## A deleted role still appears in a rule

A stored Discord role ID can remain after that role is deleted. It matches nobody. Aethor does not guess a replacement role with the same name.

Edit the rule, remove the missing role and select the correct current role. Recreating a role in Discord creates a new ID, even if you reuse the old name.

## Someone has the role but Discord hides the command

The Aethor runtime rule and Discord's command picker are separate. Check the banner at the top of the permission page and read [Discord command visibility](/docs/permissions/command-visibility).

Typical fixes are:

- enable visibility sync;
- select **Sync now** when Discord entries differ;
- re-authorize using an administrator who outranks the selected roles;
- check Discord's channel-specific command restrictions.

## Discord shows the command, but Aethor denies it

Discord visibility is not authorization. Run a **Person** access check for the exact capability used by the command path. Look for a missing selected role, an action override, missing bot permission or premium requirement.

For a top-level command with several subcommands, Discord can show the whole command even though Aethor allows only some paths.

## Permission changes will not save

### "Server rules changed" or version conflict

Another administrator saved a newer version. Reload the rules, reproduce the intended draft and review it again. Aethor will not overwrite a newer batch silently.

### Validation failure

Check for a deleted role, `@everyone`, an unknown target or too many selected roles. Aethor accepts at most 256 role IDs for one target. In ordinary use, Discord command sync reaches its own 100-entry ceiling first.

### Newer permission rules detected

The active server returned a stored target that this dashboard build does not recognize. The dashboard leaves that target active and does not save an incomplete table. Refresh or update the dashboard. Contact support if the versions remain mismatched.

## Command sync fails or only partly succeeds

A valid Aethor rule remains saved. The failure concerns Discord's visibility mirror.

Check, in order:

1. Does the authorizing administrator still have enough Discord permissions?
2. Is that administrator above every selected role?
3. Can that administrator run the affected command?
4. Did someone edit command permissions directly in Discord?
5. Would selected roles plus preserved channel/user entries exceed Discord's 100-entry limit?

Re-authorize when the original authorization is stale or belongs to the wrong administrator. Use **Sync now** for ordinary drift. Do not repeatedly save the same Aethor rule; saving it again does not fix the Discord-side authority problem.

## Include these details when asking for help

When asking for help, include:

- the friendly action label and capability ID;
- whether you checked a **Person** or a **Role**;
- the displayed result and missing requirement;
- the group rule and any action override;
- the command sync status, if a slash command is involved;
- whether **Refresh permissions** changed the result.

Do not send session cookies, OAuth tokens, bot tokens or private dashboard sign-in links. A screenshot of the capability result is usually enough.
