Guardian
Per-actor 2FA confirmation layer that intercepts dangerous permission changes before they land.
Overview
Guardian sits on top of antinuke as a second line of defense. Where antinuke punishes a whitelisted admin who nukes, Guardian asks “is that really you?” before the change even takes effect. When a whitelisted admin’s account is hijacked — stolen token, cookie theft, compromised session — the attacker inherits full trust and can bypass antinuke entirely. Guardian closes that gap by requiring the real admin’s personal credential (a password in their head or a TOTP code from their authenticator) before any dangerous role or permission change is re-applied.How it works
When an admin or attacker grants a dangerous permission to a role or member:Intercept flow
Intercept flow
What counts as dangerous
Credential ladder
When resolving a challenge, the input is checked in this order:
Three wrong attempts on the same challenge locks it permanently — the change stays reverted.
Setup
1
Server owner: set master password
;guardian master status.2
Each admin: enroll in DM
Optionally lock high-value roles so any grant triggers a challenge regardless of permissions:
;guardian lock @AdminRole (master-pw)Trust legitimate bots (reaction role bots, etc.) to skip challenges: ;guardian trust add @Bot (master-pw)Master password commands
Server owner only. All credential commands auto-delete after running.Set master password
Set master password
- Syntax
- Example
Rotate master password
Rotate master password
- Syntax
- Example
Enable / Disable
Enable / Disable
- Syntax
- Example
Status
Status
- Syntax
- Example
Require enrollment approval
Require enrollment approval
- Syntax
- Example
on, anyone who enrolls is in a pending state until the owner approves them. The server owner is always auto-approved. Aliases: approval, require_approval.Manage triggers
Manage triggers
- Syntax
- Example
role_admin_grant, role_dangerous_perm_grant, member_admin_role_grant, locked_role_grant.Enrollment
Run all enrollment commands in DM with the bot. They auto-delete on success.If the server has require-approval enabled, your enrollment lands in a pending state after you enroll. The server owner gets a DM and must run
;guardian admin approve @you (master) before your credential can confirm any challenge. The server owner is always auto-approved. If approval is not required, enrollment is active immediately.Set personal password
Set personal password
- Syntax
- Example
Set up TOTP (authenticator app)
Set up TOTP (authenticator app)
- Syntax
- Example
Verify TOTP
Verify TOTP
- Syntax
- Example
Check enrollment status
Check enrollment status
- Syntax
- Example
Remove enrollment
Remove enrollment
- Syntax
- Example
credential is password, totp, or all. DM only.Role locking
Lock a role so that any grant of it triggers a challenge, regardless of the role’s permissions.Lock a role
Lock a role
- Syntax
- Example
Unlock a role
Unlock a role
- Syntax
- Example
List locked roles
List locked roles
- Syntax
- Example
Trusted bots
Bots in the trust list skip all Guardian challenges — useful for reaction role bots, auto-role bots, or any bot that legitimately grants roles.Trust a bot
Trust a bot
- Syntax
- Example
Untrust a bot
Untrust a bot
- Syntax
- Example
List trusted bots
List trusted bots
- Syntax
- Example
Admin commands
Approve a pending enrollment
Approve a pending enrollment
- Syntax
- Example
Reject a pending enrollment
Reject a pending enrollment
- Syntax
- Example
;guardian admin unenroll to revoke an already-approved one.List pending enrollments
List pending enrollments
- Syntax
- Example
Force-unenroll a user
Force-unenroll a user
- Syntax
- Example
Temporarily disable
Temporarily disable
- Syntax
- Example
View audit log
View audit log
- Syntax
- Example
Confirming a challenge
When Guardian intercepts a dangerous action, you receive a DM with a challenge ID. Reply in DM to confirm:- Syntax
- Example
credential is your TOTP code, recovery code, personal password, or the server master password. DM only — auto-deletes on success.If you didn’t initiate the action — just ignore the DM. The change stays reverted automatically after 60 seconds.

