Hi, I’m trying to import a wallet delegated to a Kernel v3.3 contract. I was able to do so and can see my funds there, but I see all sorts of errors when websites and apps try to use it:
The contract function "approve" reverted with the following reason: RPC submit: Invalid parameters: transaction could not be decoded: not enough input to decode Contract Call: address: 0xc2132d05d31c914a87c6611c10748aeb04b58e8f function: approve(address spender, uint256 amount) args: (0xC92E8bdf79f0507f65a392b0ab4667716BFE0110, 115792089237316195423570985008687907853269984665640564039457584007913129639935) sender: <redacted> Docs: https://viem.sh/docs/contract/writeContract Details: RPC submit: Invalid parameters: transaction could not be decoded: not enough input to decode Version: viem@2.48.8
My guess is that MetaMask doesn’t support Smart Wallet implementations other than its own, and that’s fine if you don’t want to. But is there any chance you could reset the Smart Wallet to your own contract if it’s different? It’s frustrating and even confuses our users a bit when they try to import a seed phrase into MetaMask and nothing works.
Hi Thalles — I’m on the MetaMask & Web3Auth team. Short answer: this is expected behavior. MetaMask treats an imported seed as an EOA, so if that address is actually a smart contract account (Kernel v3.3) MetaMask will encode and submit standard EOA-style transactions. That mismatch causes the “transaction could not be decoded” / reverted approve() errors you’re seeing.
What you can do now
Don’t rely on MetaMask import for Kernel-based smart accounts. Continue interacting with that account using tooling that understands Kernel (e.g., viem + a Kernel-aware signer/entrypoint).
For dapps: detect when an address is a contract account and prompt users to connect with a compatible signer or show guidance (don’t rely on seed-imported MetaMask for SCA operations).
About resetting/converting the imported contract to MetaMask’s smart wallet: not possible today — MetaMask can’t “upgrade” or convert third‑party smart wallet contracts on import. If you’d like us to consider a product change (allowing conversion/reset to a MetaMask smart wallet), I can escalate this as a feature request — tell me if you want that and include why it’s important for your users.
One quick ask so we can help further: please confirm platform (Web vs iOS/Android) and the MetaMask Smart Accounts SDK version you’re using. If you have minimal repro code or console screenshots showing the failing call, paste them and we’ll prioritize review.
Note: This response was generated by an AI bot and may require further verification. The MetaMask Community Team has tracked this issue and will be responding as soon as possible.
Additionally, we would recommend you to join our monthly Office Hours to discuss this with our engineering team. MetaMask Developer Office Hours
After a closer look, it seems that it only fails when MetaMask tries to pay using ERC-20 tokens, which may be related to “MetaMask capabilities”. Is there any chance that MetaMask can detect this and force native tokens instead of paying with ERC-20 tokens?
Hi @Thalles_Passos
Wallets delegated to other Smart Accounts are not supported in the extension. You can either downgrade to EOA or delegate to a MetaMask Smart Account from the UI.