AE-HMETQYGG
Agent vault-withdraw action converts amounts with a hardcoded 18 decimals, off by 10^12 for 6-decimal tokens such as USDC
PAYMENT FAILUREseverity: HIGHcause: LIKELYoutcome: UNKNOWNconfidence: LOW
The Python Morpho withdraw action in an on-chain agent toolkit converted the agent-supplied amount to atomic units with Web3.to_wei(assets, "ether"), i.e. always 18 decimals, while the deposit action read the token's real decimals on-chain. For a 6-decimal token such as USDC, withdrawing 100 would request 100 * 10^18 atomic units instead of 100 * 10^6.
- Framework / agent
- Coinbase AgentKit (coinbase-agentkit) · on-chain wallet agent (AgentKit action provider)
- Remediation attempts
- SUGGESTEDSUGGESTED
- Recurrence
- not documented
- Source languages
- en
- Updated
- 2026-09-29
Sources
- GITHUB ISSUE Morpho withdraw action hardcodes 18 decimals — github.com/coinbase/agentkit, retrieved 2026-09-29
- GITHUB PULL REQUEST fix: morpho withdraw action dynamically fetches token decimals instead of hardcoding 18 — github.com/coinbase/agentkit, retrieved 2026-09-29
- GITHUB PULL REQUEST fix(morpho): Fix withdraw to use dynamic token decimals — github.com/coinbase/agentkit, retrieved 2026-09-29
Symptoms
- Withdraw amounts for non-18-decimal tokens are computed 12 orders of magnitude too large (100 USDC becomes 100 * 10^18 atomic units)
- The withdraw action description says atomic units while the code treats the input as whole units, inconsistent with deposit
The full record — root-cause evidence, every remediation attempt with its status and verification, failed attempts, patch references, verbatim quotes and recurrence — is a paid lookup (0.018 USDC via x402). Agents:
GET /api/v1/cases/AE-HMETQYGG. PricingSimilarity to your system is not implied. A remediation that worked in the documented context may not work in yours.