
Goat LP is experimental. Use small amounts.
The short version
Your NFT stays in your wallet
Automation works through a permission for one position. Where a contract needs the NFT for a moment,
it comes back in the same transaction, or the whole transaction fails.
Smallest possible approvals
Token approvals are for the exact amount. On Uniswap v4 they go through Permit2 and expire after
30 minutes.
Checked before you sign
The app decodes the final transaction and refuses it unless the recipient, minimums, deadline, contract
and fee are all as expected.
No upgrades, slow admin
No proxy, no delegatecall. A Cashmere-controlled Safe owns the contracts. Adding a keeper, a pair or a
price source waits 24 hours in public. See Contracts.
What the app checks before you sign


- Recipient. Every output goes to your connected wallet.
- Paying with ETH. On a WETH pair the deposit goes straight to Uniswap’s position manager and ends with the
refund of unused ETH to your wallet in the same transaction (v3
refundETH, v4SWEEP). The app refuses any request that would leave ETH or WETH in a contract or send it anywhere but your wallet. - Minimums and deadline. Every swap, add and remove has a minimum above zero; deadlines are minutes away.
- Known contracts. Contract addresses come from the app’s own build, never from the analytics API, and automation code is checked on chain against the pinned version.
- Fee. A Goat LP fee may go only to the fee address, at exactly the configured rate.
- Permissions. An automation permission must be for one position, to a Goat automation contract.
- Simulation. Every action is simulated on chain before it is offered for signing.
What you should check
- The address bar: only
app.cashmere.exchange. Cashmere never messages you first. - The contract in your wallet: a Uniswap contract, Permit2, Revert Finance’s V3Utils, or a Goat contract listed on Contracts.
- Approvals: a token approval names the exact amount; a position permission is
approvefor one position number. - Wallet-wide permissions: Goat LP asks for
setApprovalForAllin one place only: Allow for all positions, after its own consent screen, to the one address on Contracts. If anything else asks, stop. - Never sign a message you do not understand, and never type a seed phrase anywhere.
Remove approvals
Leave without the app
You do not need Goat LP to get out, unless the pool’s hook or one of its tokens blocks it. Each step is a transaction you sign on the block explorer (Contract, then Write). Check every argument before signing.1
Remove the permission
On the v3 or v4 position manager, call
approve(0x0000000000000000000000000000000000000000, yourPositionId). Without the permission no automation can touch the position.2
On v4, cancel signed permits
A permit you signed earlier could set the permission again until it is used or expires. Call
revokeNonce(nonce) on the v4 position manager. The app’s Stop does this for you.3
Clear the rule (optional)
Auto-compound:
configToken with an all-off setting on the auto-compound contract. Auto-range or
auto-exit on v4: clearConfig(yourPositionId) on the Steward; it works even when the contract is paused.
On v3: configToken with an all-zero setting on the auto-range or auto-exit contract.4
Withdraw at Uniswap
On v3, call
decreaseLiquidity and then collect to your address. Minimums of 0 accept any price; only
use 0 if you accept that. On v4, use Uniswap’s interface or the Withdraw button in Goat LP, which does
not depend on the analytics API.emergencyWithdrawNFT. Contact us below.
How Goat LP is watched
Keepers, sentinels (the independent safety monitors) and watchers raise alarms, and every alarm reaches the Cashmere team by e-mail. The team can pause at once through the guardian Safe.How an alarm reaches the team
How an alarm reaches the team

