Unwind a Morpho Vault V2

This guide explains how to safely wind down a Morpho Vault V2, ensuring depositors can withdraw their assets while removing market exposure and preventing new capital from entering.

Communicate with depositors before starting. Make sure they are aware of the timeline and that yield will drop to zero as assets move to idle. If possible, also warn borrowers in the underlying markets, as withdrawing liquidity increases utilization and can drive up borrow rates.

Step 1: Prevent New Deposits

In Morpho Vault V2, deposits flow exclusively through the liquidity adapter (if set). Decreasing its cap to 0 is sufficient to block all new deposits. Cap decreases are instant and exempt from timelocks in Morpho Vault V2. See the Managing Adapters Caps tutorial for context on how caps are structured.

The Curator or Sentinel calls decreaseAbsoluteCap and decreaseRelativeCap for the liquidity adapter id:

vault.decreaseAbsoluteCap(liquidityAdapterIdData, 0);
vault.decreaseRelativeCap(liquidityAdapterIdData, 0);

Once the liquidity adapter cap is 0, incoming deposits will revert. Withdrawals remain fully unaffected.

If no liquidity adapter is set, deposits flow directly to idle and there is no cap to zero out. New deposits cannot be blocked at the contract level in that case.

If there are any pending cap increases on the liquidity adapter, revoke them first to prevent them from being accepted during the wind-down period.

bytes memory pendingData = abi.encodeCall(IVaultV2.increaseAbsoluteCap, (liquidityAdapterIdData, newCap));
vault.revoke(pendingData);

Step 2: Remove Market Exposure

The Allocator or Sentinel calls deallocate to withdraw assets from each active market and return them to the vault as idle assets. See the Liquidity Curation tutorial for more context on how allocations and the liquidity adapter interact.

vault.deallocate(adapter, marketData, assets);

The assets parameter requires an exact amount, type(uint256).max is not interpreted as "withdraw all." Query the current allocation and pass the precise value before calling.

If a market is illiquid (high utilization), this step must be repeated incrementally as liquidity becomes available. Set up monitoring to track when assets can be deallocated and an automation to automatically deallocate assets to idle.

Step 3: Move Liquidity Adapter Funds to Idle

If the vault uses a Liquidity Adapter, the Allocator should deallocate all assets from it and move them to pure idle. Pure idle assets have zero yield but are immediately available for withdrawals, which is the priority during a wind-down.

vault.deallocate(liquidityAdapter, data, assets);

Before moving assets to idle, make sure the vault has no active management fee. A management fee accrues continuously against total assets regardless of yield, at 0% yield, it would directly erode depositors' principal over time. Set the management fee to 0 first if needed.

Step 4: Reduce Yield to Zero

Once all assets are held as idle assets in the vault, it yields 0%. This is the natural outcome of completing Steps 1–3. No additional action is required to suppress yield.

Optional: Remove Adapters

Once all assets have been withdrawn from an adapter and its allocation reaches zero, the Curator can formally remove it (more about this process here).

This is optional during wind-down, an adapter with zero allocation and zero caps poses no risk to depositors.


Optional: For Listed Morpho Vault V2

If your vault is listed on the Morpho app, reach out to the Morpho Association to coordinate the off-chain wind-down:

  • Display a deprecation warning on the vault's page in the app, informing depositors that the vault is being wound down.
  • Remove the vault from the main listing once deposits are blocked and the wind-down is underway.
  • Notify users through the usual communication channels (governance forum, curator socials).

On this page