Claim with AI
Recipients can claim unlocked Sablier vesting streams from the terminal by asking an AI coding agent in plain English. The agent discovers claimable streams, previews the transaction plan, and asks you to sign with your wallet.
This guide focuses on sablier-withdraw-vesting, the skill for
withdrawing unlocked tokens from Lockup vesting streams on EVM chains and Solana.
For Sablier Payments (Flow) streams, use sablier-withdraw-open-ended-stream. Same philosophy,
different skill.
app.sablier.com is not being deprecated. The EVM app will remain available for claiming until June 2028. The
limitation is creation: new EVM streams cannot be created from app.sablier.com.
solana.sablier.com is the app being deprecated. For Solana claims, use the AI skill or interact with the program
directly.
Prerequisites
Agent
- Claude Code CLI, the terminal tool.
- Codex, OpenAI's coding agent.
The skill runs in Claude Code, the terminal CLI. The Claude desktop app (claude.ai chat client) cannot install
skills or sign on-chain transactions on your behalf.
Shared tools
curlandjq, for talking to the Sablier indexer and parsing transaction receipts.- A wallet that controls the stream recipient address.
- A small native-token balance for transaction fees.
EVM tools
- Foundry, because the skill drives
castfor RPC reads and signing. Yourcastmust support--browser; if you installed Foundry months ago, runfoundryupfirst. - A browser wallet extension, such as MetaMask, Rabby, or Frame, holding the recipient address.
- Enough native token to cover gas, plus the protocol withdraw fee on Lockup v3.0+ (often
0, but not always). The skill previews the exact amount before broadcasting.
Solana tools
- A Solana wallet that controls the recipient public key.
- Enough SOL to cover transaction fees, plus the program withdrawal fee when it is nonzero.
Install
Add the withdraw skill to your agent:
npx skills add sablier-labs/sablier-skills --skill sablier-withdraw-vesting
This pulls the skill from sablier-labs/sablier-skills and registers
it under ~/.claude/skills/sablier-withdraw-vesting (global install) or ./.claude/skills/sablier-withdraw-vesting
(project-local). Claude Code auto-discovers it in new sessions.
EVM Lockup streams
Prompt
Open Claude Code (or Codex) in any working directory and ask in plain English. The skill accepts up to three optional arguments: chain, wallet, and token. It asks for anything missing.
withdraw everything I can claim from Sablier
claim my Sablier streams on Ethereum
withdraw my Sablier USDC vesting on Base for 0xMyWalletAddress
There is no stream URL to copy. The skill queries the Sablier indexer for active, non-depleted streams where your wallet
is the recipient, then keeps only streams with a positive withdrawableAmountOf at the current block.
| Terminal session running the skill |
|---|
![]() |
Discovery and batching
For EVM chains, the skill walks through this flow:
- Chain discovery: if you did not name a chain, it asks the indexer where your wallet has active streams. It auto-picks a single match or asks you to choose.
- Stream discovery: it pulls every non-depleted stream where you are the recipient on the chosen chain, then drops
streams with
withdrawableAmountOf == 0via one Multicall3 round trip. - Selection: it defaults to draining every eligible stream. You can narrow the selection before signing.
- Grouping: it splits the selection by Lockup contract address. Each group becomes one
withdrawMultiplecall and one signature. - Preflight: it estimates gas per group, computes the required
MSG_VALUE(the maxcalculateMinFeeWeion Lockup v3.0+,0on v1.x and v2.x), and verifies that your native-token balance can cover the whole batch. - Preview: it prints the batch and waits for you to reply literally
YES. - Broadcast: it opens one browser tab per group on
localhost:9545; you approve each transaction in your browser wallet.cast send --browserroutes signing to the extension, so your private key never enters the terminal or chat. - Receipt verification: it polls each receipt for up to 5 minutes, then scans logs for
InvalidWithdrawalInWithdrawMultipleevents (Lockup v2.0+) so silently failed streams are surfaced.
This works across every EVM chain where Sablier Lockup is deployed. See Lockup deployments for the full list. One invocation handles one chain; re-run the skill for another chain.
Preview
Before any signature request, the skill prints a human-readable preview covering every group it is about to broadcast. Trimmed example for a wallet holding v1.2 USDC streams and v4.0 SABL streams on the same chain:
Chain: Ethereum (1)
Signer: 0xOwner... (matches recipient)
Total fee: 0.0005 ETH
Estimated gas: 0.0021 ETH
Group 1/2 -- Lockup Linear v1.2
Contract: 0xAAA...
Streams (2):
LL2-1-887 -> 120 USDC (sender 0xc517...063c)
LL2-1-902 -> 45.5 USDC (sender 0xc517...063c)
Group fee: 0 ETH (non-payable)
Group 2/2 -- Lockup v4.0
Contract: 0x93b37Bd5B6b278373217333Ac30D7E74c85fBDCB
Streams (3):
LK3-1-42 -> 1,234.56789 SABL (sender 0xab12...cd34)
LK3-1-58 -> 250 SABL (sender 0xab12...cd34)
LK3-1-77 -> 100 SABL (sender 0x99aa...bbcc)
Group fee: 0.0005 ETH
Per-token totals:
USDC: 165.5
SABL: 1,584.56789
Confirm broadcast for 2 transactions?
Reply exactly: YES
Anything other than a literal YES aborts before any transaction is broadcast.
| Batch preview before broadcast |
|---|
![]() |
Signing and verification
The skill charges no markup. Costs are limited to on-chain gas and, on Lockup v3.0+, the protocol fee returned by
calculateMinFeeWei, which is frequently 0.
| Browser wallet signing prompt |
|---|
![]() |
After each group lands, the skill prints per-stream https://app.sablier.com/vesting/stream/{alias} links so you can
spot-check the result.
| Post-broadcast confirmation |
|---|
![]() |
Solana Lockup streams
Prompt
The same skill covers Solana mainnet-beta. Pass solana as the chain and provide the recipient public key:
withdraw my Sablier streams on Solana for <my-base58-pubkey>
Discovery and batching
Solana uses a single-stream claim flow. There is no withdrawMultiple equivalent that fits Solana's 1232-byte
transaction limit, so re-run the skill once per stream.
The Solana flow is:
- Stream discovery: the skill looks up claimable Solana streams for the recipient public key.
- Selection: you choose one claimable stream.
- Preflight: the skill checks the currently withdrawable amount and the required fee.
- Preview: it shows the stream, token, recipient, and fee before signing.
- Broadcast: you sign one transaction for the selected stream.
- Verification: the skill checks the resulting transaction and prints the outcome.
Costs and app status
The Solana protocol fee is the program's WITHDRAWAL_FEE_USD constant. It is currently 0 on mainnet; otherwise it is
about $1 in SOL via Chainlink.
Sablier on Solana is in maintenance mode. Creating new Solana streams and airdrop campaigns is no longer supported, and
solana.sablier.com is the app being deprecated. See Sablier on Solana for protocol
details.
Troubleshooting
Shared
"No active Sablier streams were found". Either the wallet address is wrong, the connected account is wrong, or the streams live on a different chain than the one you named. Re-run without a chain to let the skill scan indexer-wide.
"Nothing currently unlocked". Streams exist, but every one has withdrawableAmountOf == 0 at this block. Wait for
more tokens to vest and retry.
Insufficient native balance. Fund the wallet with the chain's native token to cover transaction fees, plus any protocol fee. The preview prints the exact shortfall.
Transaction still pending after 5 minutes. The skill stops polling and prints the hash. Check the explorer for the chain. If it confirms later, you are done; if it gets dropped, re-run the skill.
Declined a signature mid-batch. Earlier groups that already broadcast stay confirmed. The skill stops and tells you which groups were not attempted. Re-run the skill to pick up the rest.
EVM
cast: command not found. Foundry is not installed or is not on PATH. Install it from
getfoundry.sh and start a new shell.
cast send does not recognize --browser. Your Foundry is too old. Run foundryup; the skill's prerequisite check
enforces this and stops early.
Some streams silently failed. Lockup v2.0+ emits InvalidWithdrawalInWithdrawMultiple instead of reverting when an
individual stream in the batch cannot be withdrawn. The skill scans receipt logs and prints the affected stream IDs.
Re-run the skill to retry the surviving streams, or check the failed stream on app.sablier.com for a hint (cancelled,
hook revert, etc.).
Solana
Multiple streams are claimable. Re-run the skill once per stream. The Solana transaction size limit prevents one
withdrawMultiple-style claim from covering the whole wallet.
The fee is nonzero. The Solana program fee follows WITHDRAWAL_FEE_USD. Fund the wallet with enough SOL for the
network fee and withdrawal fee, then retry.
Payments streams
For Sablier Payments (Flow) streams, install the sibling skill:
npx skills add sablier-labs/sablier-skills --skill sablier-withdraw-open-ended-stream
Same shape: natural-language prompt, indexer-driven discovery, browser-wallet signing, applied to open-ended Flow streams instead of vesting Lockup streams. See AI Agents for the full skill catalogue.



