← Learn
Liveprotocols· 4 min read· #withdraw#liquidity#erc-4626

ERC-4626 withdraw, redeem, and liquidity risk

How Forge vault exits work across yield adapters — withdraw vs redeem, maxWithdraw limits, adapter order, and agent integration patterns.

Last updated: May 26, 2026 · Published 2026-05-26

Forge Treasury smart contracts are unaudited. Yield is variable and not guaranteed. Read Risks & Disclosures before depositing USDC or integrating MCP tools.

Forge vaults are ERC-4626 tokenized vaults: deposit USDC, receive share tokens (fUSDC on Core), redeem shares for USDC. Unlike a simple ERC-20 transfer, withdraw liquidity is not guaranteed at block speed — the vault must pull USDC back from yield adapters (Spark, Morpho, Aave on mainnet Core). Agents planning treasury automation must model redeem latency, partial liquidity, and adapter-order risk. Forge contracts are unaudited; this is educational content, not a liquidity guarantee.

If any adapter in the withdraw path reverts or lacks liquidity, the entire vault `withdraw` / `redeem` may fail. Keep a liquid USDC buffer outside the vault for time-sensitive outflows — see USDC buffer sizing.

withdraw vs redeem — ERC-4626 semantics

FunctionInputOutputAgent use case
withdraw(assets, receiver, owner)USDC amountBurns shares"I need exactly $1,000 USDC"
redeem(shares, receiver, owner)Share amountReturns USDC"Exit my full fUSDC position"
ERC-4626 exit functions (Forge Core)

Both paths invoke Forge's internal adapter unwind logic. The vault does not hold 100% USDC idle — most assets sit in adapter wrappers earning yield. `maxWithdraw` and `maxRedeem` view functions report current withdrawable amounts given adapter liquidity; they can be less than `balanceOf` × share price during stress. Agents should read these views before broadcasting, not assume full balance is instantly exit-able.

How Forge exits adapters

On withdraw, ForgeVault iterates adapters in governance-defined order, requesting USDC from each until the target amount is satisfied. Core book post-MVP routes through Spark Savings, Morpho Steakhouse Prime, and Aave V3 — with Aave configured as last in the sequence to reduce pool stress. P2-C0 expands Core to five legs (Gauntlet Prime, Steakhouse HY, Steakhouse Prime, Spark, Aave) — more adapters mean more hop points where liquidity can fail.

  • Spark Savings — savings vault withdraw; generally deep on Base but not infinite.
  • Morpho MetaMorpho — curated vault shares; exit depends on Morpho market liquidity.
  • Aave V3 supply — pool utilization can cap instant withdraw size; last in Forge order by design.
  • Middle vault adapters (Balanced) — LST swaps, avUSDC, Moonwell add separate exit paths after timelock.

Liquidity risk scenarios agents should log

ScenarioSymptomMitigation
Adapter pool illiquidityrevert on withdrawSmaller partial redeem; retry later; keep buffer
Utilization spike (Aave)maxWithdraw < requestedWithdraw available amount; queue remainder
Governance mid-withdrawAdapter set changes after timelockRe-read adapterCount before large exit
Smart-contract bugUnexpected revert or lossNo mitigation — unaudited risk; cap vault exposure
USDC depegShare NAV drops in USD termsSeparate stablecoin risk — see depeg guide
Withdraw failure modes — not exhaustive

Performance fee interaction on exit

Forge charges a 15% performance fee on profits above high-water mark at withdrawal — not on returned principal. Large redeems during a profitable period may realize fee deductions in USDC terms. Agents reporting "withdrawn amount" should separate gross USDC received, fee line items, and net to wallet. Fee routing intent includes protocol buyback via FeeDistributor; MVP components may be stubbed. Read Risks & Disclosures for fee accounting uncertainty.

Integration checklist for autonomous redeem

  1. Call `maxWithdraw(owner)` or `maxRedeem(owner)` before building tx.
  2. If amount > max, split into partial redeems or wait for adapter liquidity.
  3. Set gas limit generously on multi-adapter exits (post P2-C0: budget similar to deposit ~4M).
  4. Monitor receipt — confirm USDC balance delta matches expectation minus fees.
  5. On failure, log revert reason; do not auto-retry blindly without backoff.
  6. Keep liquid buffer sized for worst-case redeem delay — buffer sizing guide.

MCP tools return withdraw calldata the same way as deposits — agent EOA signs locally. Use Conservative strategy for Core-specific addresses and MCP-native treasury for tool names. Testnet MockYieldAdapter on Base Sepolia has simpler exit paths — do not extrapolate latency to mainnet.

Withdraw liquidity depends on third-party protocols (Spark, Morpho, Aave) and unaudited Forge adapter code. Forge provides no SLA on redemption speed or amount. Principal loss is possible.

Share this article

Draft copy for social posts — review before publishing. URL: https://forgetreasury.com/learn/erc-4626-withdraw-redeem-liquidity-risk

Open Graph / preview card

ERC-4626 withdraw liquidity in Forge vaults withdraw vs redeem, adapter exit order, maxWithdraw limits. Agents need buffers — unaudited contracts. https://forgetreasury.com/learn/erc-4626-withdraw-redeem-liquidity-risk

Twitter / X

Forge vault exits aren't instant USDC transfers — ERC-4626 redeem pulls from Spark/Morpho/Aave adapters. Liquidity risk for agents: https://forgetreasury.com/learn/erc-4626-withdraw-redeem-liquidity-risk

LinkedIn

ERC-4626 vault shares are not cash-equivalent. Forge Core unwinds Spark, Morpho, and Aave adapters on redeem — with latency and failure modes agents must model. Withdraw liquidity guide: https://forgetreasury.com/learn/erc-4626-withdraw-redeem-liquidity-risk