--- title: "AMX Mod X Admin Flags (a-z): Full Reference" excerpt: "The complete AMX Mod X access flag table from a to z, what each flag actually unlocks, common role presets, and how flags map to commands." category: "administration" tags: "flags, admin" image: "" read_time: "8 min read" ---

AMX Mod X access control is a single string of lowercase letters. Each letter unlocks a category of commands, and a plugin decides which flag its command requires. This is the full a-z reference exactly as the flags are defined in AMXX, plus the role presets most servers actually use. Keep this next to your users.ini.

1. The complete flag table

FlagUnlocks
aImmunity — cannot be kicked, banned, slayed or slapped by other admins
bReservation — can join a full server on a reserved slot
camx_kick
damx_ban, amx_banip, amx_unban, amx_addban
eamx_slay, amx_slap
famx_map (change map)
gamx_cvar — change server cvars (not all are exposed)
hamx_cfg — execute config files
iamx_chat and other admin chat commands
jamx_vote and vote commands
kAccess to the sv_password cvar (through amx_cvar)
lamx_rcon and rcon menu access
mCustom level A (for additional plugins)
nCustom level B
oCustom level C
pCustom level D
qCustom level E
rCustom level F
sCustom level G
tCustom level H (commonly used for VIP)
uMenu access (amx_menu and admin menus)
zUser — no admin access at all

There is no v, w, x or y in the standard set. The custom levels m-t are yours: a plugin author picks one and documents it, which is how VIP systems (see building a VIP plugin) attach to flag t.

2. How a flag becomes a command

When a plugin registers a command it names the required flag:

register_concmd("amx_kick", "cmd_kick", ADMIN_KICK)   // ADMIN_KICK == flag c

The constants map one to one: ADMIN_IMMUNITY = a, ADMIN_RESERVATION = b, ADMIN_KICK = c, ADMIN_BAN = d, ADMIN_SLAY = e, ADMIN_MAP = f, ADMIN_CVAR = g, up through ADMIN_LEVEL_A-H (m-t), ADMIN_MENU = u and ADMIN_USER = z. So the flags you grant in users.ini line up exactly with the constants plugin authors use.

At runtime a plugin reads a player's flags as a bitmask and tests the one it cares about:

if (get_user_flags(id) & ADMIN_BAN) {
    // player has flag d
}

This is why flags stack freely — cdef is just four bits set at once. It is also why a plugin author can convert a string to a mask with read_flags("t") and store it, the approach used when a plugin exposes its own _access cvar so admins can rebind which flag a command needs.

3. Reading and rebinding a command's flag

Well-written plugins do not hard-code the flag; they expose a cvar, so you can change the requirement without recompiling. For example a plugin might register amx_slay against a cvar defaulting to e. Check a plugin's .cfg or its documented cvars before assuming a command's flag — two servers can require different flags for the same command name. When in doubt, the AMXX console command amx_help lists the commands available to you given your current flags, which is the quickest way to see the effective mapping on a live server.

4. Practical role presets

Give a (immunity) sparingly. An immune troublemaker cannot be removed by your other admins, only by someone with console/rcon.

Common errors

Verification

Assign a preset in users.ini, run amx_reloadadmins, reconnect, and check amx_who — it lists each online player with their resolved flag string. Then test one command from the granted set and one from a set you deliberately withheld: the withheld command should answer You have no access to that command. That negative test is what proves the flags are doing their job. For placing these flags correctly, return to users.ini explained.