Plugins
Permanent Burn Delegate
Last updated January 31, 2026
The Permanent Burn Delegate Plugin provides irrevocable burn authority that persists forever. The delegate can burn Assets even when frozen, making it ideal for games and subscription services.
What You'll Learn
- Create Assets with permanent burn capability
- Enable collection-wide burn authority
- Burn frozen Assets (
forceApprovebehavior) - Use cases: games, subscriptions, automated cleanup
Summary
The Permanent Burn Delegate is a permanent plugin that can only be added at creation time. The delegate can burn the Asset at any time, even when the Asset is frozen.
- Can only be added at Asset/Collection creation
- Authority persists forever (never revoked)
- Uses
forceApprove- can burn even when frozen - Collection-level: allows burning any Asset in the Collection
Out of Scope
Regular burn delegate (see Burn Delegate), conditional burns, and Token Metadata burn authority.
Quick Start
Jump to: Create Asset
- Add
PermanentBurnDelegateplugin at Asset/Collection creation - Set the authority to your program or delegate address
- The delegate can burn the Asset at any time, even if frozen
Permanent vs Regular Burn Delegate
| Feature | Burn Delegate | Permanent Burn Delegate |
|---|---|---|
| Add after creation | ✅ Yes | ❌ Creation only |
| Authority persists on transfer | ❌ Revokes | ✅ Persists forever |
| Can burn frozen Assets | ❌ No | ✅ Yes (forceApprove) |
| Works with Collections | ❌ No | ✅ Yes |
| Emergency destruction | ❌ Limited | ✅ Best choice |
| Choose Burn Delegate for user-revocable burn permissions. | ||
| Choose Permanent Burn Delegate for games, emergency destruction, or automated cleanup. |
Common Use Cases
- Game mechanics: Destroy Assets when items are consumed, lost, or destroyed in-game
- Subscription expiration: Auto-burn expired subscription tokens even if frozen
- Emergency destruction: Remove compromised or unwanted Assets regardless of state
- Crafting systems: Burn ingredient NFTs when crafting (even if locked)
- Time-limited assets: Automatically destroy expired content
- Compliance: Remove Assets that violate terms, even if owner tries to freeze them
Works With
| MPL Core Asset | ✅ |
| MPL Core Collection | ✅ |
Behaviours
- Asset: Allows burning of the Asset using the delegated address.
- Collection: Allows burning of any Asset in the collection using the collection authority. It does not burn all at once.
Arguments
The Permanent Burn Plugin doesn't contain any arguments to pass in.
Creating an Asset with a Permanent Burn Plugin
Creating an Asset with a Permanent Freeze plugin
import { publicKey } from '@metaplex-foundation/umi'
import { create } from '@metaplex-foundation/mpl-core'
const assetSigner = generateSigner(umi)
const delegate = publicKey('33333333333333333333333333333')
await create(umi, {
asset: assetSigner,
name: 'My Asset',
uri: 'https://example.com/my-asset.json',
plugins: [
{
type: 'PermanentBurnDelegate',
authority: { type: 'Address', address: delegate },
},
],
}).sendAndConfirm(umi)
Common Errors
Cannot add permanent plugin after creation
Permanent plugins can only be added at Asset/Collection creation. You cannot add a Permanent Burn Delegate to an existing Asset.
Authority mismatch
Only the plugin authority can burn. Verify you're signing with the correct keypair.
Notes
- On creation only: Cannot be added after Asset/Collection exists
- Force approve: Can burn even when frozen
- Collection behavior: Can burn any Asset in the Collection individually
- Persists forever: Authority is never revoked
- Irreversible: Burned Assets cannot be recovered
FAQ
What's the difference between Burn Delegate and Permanent Burn Delegate?
Regular Burn Delegate cannot burn frozen Assets and is revoked on transfer. Permanent Burn Delegate can burn frozen Assets (forceApprove) and persists forever.
Can Permanent Burn Delegate burn frozen Assets?
Yes. Permanent plugins use forceApprove, which overrides freeze rejections. This is useful for game mechanics where items must be destroyable.
Can I add this to an existing Asset?
No. Permanent plugins can only be added at Asset creation time. Use regular Burn Delegate for existing Assets.
How does Collection-level Permanent Burn Delegate work?
The delegate can burn any individual Asset in the Collection, but not all at once. Each burn is a separate transaction.
Is this safe to use?
Use with caution. The delegate can burn Assets at any time without owner approval. Only assign to trusted programs or addresses.
Related Plugins
- Burn Delegate - Revocable burn authority
- Permanent Freeze Delegate - Permanent freeze authority
- Permanent Transfer Delegate - Permanent transfer authority
Glossary
| Term | Definition |
|---|---|
| Permanent Plugin | Plugin that can only be added at creation and persists forever |
| forceApprove | Validation that overrides other plugin rejections |
| Collection Burn | Ability to burn any Asset in a Collection |
