A documentation changelog entry for the 2026-08-17 CLMM program update. For the index of all updates, see
reference/changelog. For the protocol’s own historical timeline, see introduction/history-and-milestones.OpenPositionV2 or OpenPositionWithToken22Nft and either underlying vault mint carries a freeze authority from the hardcoded restricted-issuer list.
TL;DR for integrators
- New position NFT mints have a freeze authority, but are not frozen by default.
OpenPosition,OpenPositionV2, andOpenPositionWithToken22Nftset the position’spool_stateas mint freeze authority. Mint authority is still removed after the single NFT is minted. - Freezing requires a V2 path plus an issuer match.
OpenPositionV2andOpenPositionWithToken22Nftinspectvault_0_mint.freeze_authorityandvault_1_mint.freeze_authority. The new NFT account is frozen only if at least one matches the program list. Without a match, it stays unfrozen and transferable. - Frozen means bound to the owner. SPL Token rejects NFT transfer and token-account owner changes with its native
AccountFrozenerror. Increase/decrease liquidity and fee/reward collection continue to work when the NFT owner signs. - Close remains available.
ClosePositiondetects a frozen NFT account, uses the pool PDA to thaw it, then burns the NFT and closes the position atomically. - Frozen close requires one remaining account. The client must append
personal_position.pool_idas the first remaining account. Missing it returns CLMMAccountLack; passing the wrong pool returnsNotApproved. - Existing positions are unaffected. The update does not retroactively change NFT mint authorities or freeze existing token accounts.
- No CLMM state layout or declared IDL account-list change.
PoolState,PersonalPositionState, and instruction arguments stay byte-compatible. The close-path requirement is carried throughremaining_accounts.
Trigger logic
The program evaluates the two vault mints at open time:reference/program-addresses.
The check runs in the shared open-position handler only when vault mint accounts are supplied. This means:
Position NFT authority changes
Before this update, a newly-created classic SPL position NFT mint did not retain a freeze authority. After the update, every new position NFT mint names its pool as freeze authority, including positions in ordinary pools. This authority setting alone does not freeze the NFT token account; ordinary and non-matching positions remain unfrozen. Using the pool PDA instead of a global admin or issuer key narrows authority to one pool. An external party cannot sign as the PDA, and CLMM exposes no general-purpose instruction to freeze or thaw arbitrary position accounts. The new code uses the authority in two places only:- Freeze immediately after minting when the underlying issuer check matches.
- Thaw during
ClosePositionimmediately before burn.
ClosePosition migration
The six declared accounts do not change. For a frozen NFT, add the pool as the first remaining account:
PoolState, derives the pool signer seeds, and performs:
Compatibility matrix
No new CLMM custom error variants or numeric shifts are introduced. SPL Token’s native
AccountFrozen error rejects transfer or owner change attempts.
Pages updated
products/clmm/overview— release summary and restricted transferability caveat.products/clmm/ticks-and-positions— authority model, trigger, owner capabilities, and close migration warning.products/clmm/accounts— position NFT mint and lifecycle behavior.products/clmm/instructions— open postconditions and frozenClosePositionremaining-account path.products/clmm/code-demos— direct Anchor close example and pinned-SDK warning.user-flows/add-remove-liquidity— user-facing restricted-position behavior.user-flows/burn-and-earn— frozen positions cannot transfer into lock escrow.security/oracle-and-token-risks/security/attack-vectors— issuer and transfer-risk boundaries.reference/token-2022-support— distinction between pool allow-listing and position custody.reference/error-codes— expandedAccountLackandNotApprovedcauses.reference/program-addresses— restricted-issuer authority match keys.reference/fee-comparison/reference/glossary— transferability exceptions.
- Pre-release CLMM branch
feat/position-nft-freezeatecb157760776f83f97507fa78c6e32cfb30d92a9. - Commits
2e95310(restricted-issuer NFT freezing) andecb1577(pool-scoped freeze authority), compared withmasterat51fdba2. - Program sources under
instructions/{open_position,open_position_v2,open_position_with_token22_nft,close_position}.rsandutil/token.rs. position-nft-freeze.test.ts, covering ordinary transferability, frozen transfer/owner-change rejection, and V2 plus Token-2022 thaw-before-close flows.

