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.
withdraw vs redeem — ERC-4626 semantics
| Function | Input | Output | Agent use case |
|---|---|---|---|
| withdraw(assets, receiver, owner) | USDC amount | Burns shares | "I need exactly $1,000 USDC" |
| redeem(shares, receiver, owner) | Share amount | Returns USDC | "Exit my full fUSDC position" |
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
| Scenario | Symptom | Mitigation |
|---|---|---|
| Adapter pool illiquidity | revert on withdraw | Smaller partial redeem; retry later; keep buffer |
| Utilization spike (Aave) | maxWithdraw < requested | Withdraw available amount; queue remainder |
| Governance mid-withdraw | Adapter set changes after timelock | Re-read adapterCount before large exit |
| Smart-contract bug | Unexpected revert or loss | No mitigation — unaudited risk; cap vault exposure |
| USDC depeg | Share NAV drops in USD terms | Separate stablecoin risk — see depeg guide |
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
- Call `maxWithdraw(owner)` or `maxRedeem(owner)` before building tx.
- If amount > max, split into partial redeems or wait for adapter liquidity.
- Set gas limit generously on multi-adapter exits (post P2-C0: budget similar to deposit ~4M).
- Monitor receipt — confirm USDC balance delta matches expectation minus fees.
- On failure, log revert reason; do not auto-retry blindly without backoff.
- 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.
External resources
Primary protocol documentation and data sources. Forge is not affiliated with these projects; links are for education only.
Related reading
- USDC buffer sizing for agent treasuriesHow to size liquid USDC buffers vs Forge vault sweeps — safety days, sweep triggers, withdraw latency, and MCP automation patterns.
- Conservative strategy: Core vault explainedThe Conservative agent strategy routes USDC to the Core vault — Spark Savings, Morpho Steakhouse Prime, and Aave V3 on Base mainnet.
- Aave V3 USDC on BaseSupply-side Aave V3 USDC lending on Base and its role in the Forge Core vault adapter book.
- Spark Savings USDC — what's under the hoodHow Spark Savings USDC works on Base, why Forge routes Core vault USDC through it, and what risks agents should understand.
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
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