Plugins
Delegating and Revoking Plugins
Last updated January 31, 2026
This guide shows how to delegate and revoke plugin authorities on Core Assets. Transfer control of plugins to other addresses or make plugin data permanently immutable.
What You'll Learn
- Delegate plugin authority to another address
- Revoke delegated authority
- Understand revocation behavior for different plugin types
- Make plugin data immutable
Summary
Delegate plugin authority using approvePluginAuthority() and revoke with revokePluginAuthority(). Different plugin types have different revocation behaviors.
- Owner Managed: Revokes back to
Ownerauthority - Authority Managed: Revokes back to
UpdateAuthority - Set authority to
Noneto make plugin immutable - Owner Managed plugins auto-revoke on Asset transfer
Out of Scope
Plugin removal (see Removing Plugins), adding plugins (see Adding Plugins), and permanent plugin authority changes.
Quick Start
Jump to: Delegate Authority · Revoke Authority · Make Immutable
- Call
approvePluginAuthority()with the new authority address - To revoke: call
revokePluginAuthority() - To make immutable: set authority to
None
Delegating an Authority
Plugins can be delegated to another address with a Delegate Authority instruction update. Delegated plugins allow addresses other than the main authority to have control over that plugins functionality.
Delegate a Plugin Authority
import { publicKey } from '@metaplex-foundation/umi'
import { approvePluginAuthority } from '@metaplex-foundation/mpl-core'
const assetAddress = publicKey('11111111111111111111111111111111')
const delegate = publicKey('33333333333333333333333333333')
await approvePluginAuthority(umi, {
asset: assetAddress,
plugin: { type: 'Attributes' },
newAuthority: { type: 'Address', address: delegate },
}).sendAndConfirm(umi)
Revoking an Authority
Revoking an Authority on a plugin results in different behaviours depending on the plugin type that's being revoked.
- Owner Managed Plugins: If an address is revoked from an
Owner Managed Pluginthen the plugin will default back to theOwnerauthority type. - Authority Managed Plugins: If an address is revoked from an
Authority Managed Pluginthen the plugin will default back to theUpdateAuthorityauthority type.
Who can Revoke a Plugin?
Owner Managed Plugins
- An Owner Managed Plugin can be revoked by the owner which revokes the delegate and sets the pluginAuthority type to
Owner. - The delegated Authority of the plugin can revoke themselves which then sets the plugin authority type to
Owner. - On Transfer, delegated Authorities of owner managed plugins are automatically revoked back to the
Owner Authoritytype.
Authority Managed Plugins
- The Update Authority of an Asset can revoke a delegate which thens sets the pluginAuthority type to
UpdateAuthority. - The delegated Authority of the plugin can revoke themselves which then sets the plugin authority type to
UpdateAuthority. A list of plugins and their types can be viewed on the Plugins Overview page.
Revoking a Plugin Authority
import { publicKey } from '@metaplex-foundation/umi'
import { revokePluginAuthority } from '@metaplex-foundation/mpl-core'
await revokePluginAuthority(umi, {
asset: asset.publicKey,
plugin: { type: 'Attributes' },
}).sendAndConfirm(umi)
Delegate Resets Upon Asset Transfer
All Owner Managed plugins will have their delegated authorities revoked and set back to the authority type of Owner upon Transfer of an Asset. This includes:
- Freeze Delegate
- Transfer Delegate
- Burn Delegate
Making Plugin Data Immutable
By updating your plugin's authority to a None value will effectively make your plugin's data immutable.
WARNING - Doing so will leave your plugin data immutable. Proceed with caution!
Making a Plugin Immutable
import {
approvePluginAuthority
} from '@metaplex-foundation/mpl-core'
await approvePluginAuthority(umi, {
asset: asset.publicKey,
plugin: { type: 'FreezeDelegate' },
newAuthority: { type: 'None' },
}).sendAndConfirm(umi)
Common Errors
Authority mismatch
You don't have permission to delegate or revoke this plugin. Only the current authority can delegate; only owner/authority can revoke.
Plugin not found
The Asset/Collection doesn't have this plugin type attached.
Cannot revoke None authority
A plugin with None authority is immutable. There's no authority to revoke.
Notes
- Delegation transfers control but doesn't remove the original authority's ability to revoke
- Setting authority to
Noneis permanent and irreversible - Owner Managed plugins auto-revoke when the Asset transfers to a new owner
- Revocation returns authority to the default type (Owner or UpdateAuthority)
Quick Reference
Revocation Behavior by Plugin Type
| Plugin Type | Revokes To |
|---|---|
| Owner Managed | Owner authority |
| Authority Managed | UpdateAuthority |
Who Can Delegate/Revoke
| Action | Owner Managed | Authority Managed |
|---|---|---|
| Delegate | Owner | Update Authority |
| Revoke | Owner or Delegate | Update Authority or Delegate |
FAQ
What's the difference between revoking and removing a plugin?
Revoking only changes who controls the plugin—the plugin and its data remain. Removing deletes the plugin entirely.
Can I delegate to multiple addresses?
No. Each plugin has only one authority at a time. Delegating to a new address replaces the previous authority.
What happens to delegated plugins when I transfer an Asset?
Owner Managed plugins automatically revoke back to Owner authority. Authority Managed plugins remain unchanged.
Can I undo setting authority to None?
No. Setting authority to None makes the plugin permanently immutable. This cannot be reversed.
Can a delegate revoke themselves?
Yes. A delegated authority can revoke their own access, which returns control to the default authority type.
Related Operations
- Adding Plugins - Add plugins to Assets/Collections
- Removing Plugins - Delete plugins entirely
- Updating Plugins - Modify plugin data
- Plugins Overview - Full list of available plugins
Glossary
| Term | Definition |
|---|---|
| Delegate | Address given temporary control of a plugin |
| Revoke | Remove delegated authority, returning to default |
| None Authority | Special authority type making plugin immutable |
| Auto-revoke | Automatic revocation of Owner Managed plugins on transfer |
| Plugin Authority | Current address with control over a plugin |
