Troubleshooting
Connection
No RPC configured
Error: No RPC configured for chain ethereum-testnet-sepolia
Add an RPC endpoint:
- .env
- Command line
RPC_SEPOLIA=https://ethereum-sepolia-rpc.publicnode.com
ccip-cli show 0x... --rpc https://ethereum-sepolia-rpc.publicnode.com
RPC timeout
Error: Request timeout after 30000ms
Error: connect ECONNREFUSED
Causes: RPC endpoint down, rate-limited, or network connectivity issue.
Solutions:
- Use a different RPC provider
- Test RPC connectivity:
Bash
curl -X POST https://your-rpc.com \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}'
Transaction not found
Error: Transaction not found
Causes: Wrong transaction hash, transaction on different network, or RPC using pruned node.
Solutions:
- Verify transaction hash on block explorer
- Ensure RPC is configured for source chain:
Bash
ccip-cli show 0x... --rpc https://source-chain-rpc.com - Use archive node for old transactions
Wallet
Wallet not configured
Error: Wallet required for this command
Commands send and manualExec require a wallet.
- .env
- Ledger
- Keystore
USER_KEY=0xYourPrivateKeyHere
ccip-cli send ... --wallet ledger
export USER_KEY_PASSWORD="your-password"
ccip-cli send ... --wallet /path/to/keystore.json
Insufficient funds
Error: insufficient funds for gas * price + value
Your wallet needs:
- Gas for source transaction
- CCIP fee (check with
--only-get-fee) - Token amounts (if transferring)
Use --fee-token LINK to pay fees in LINK instead of native token.
Ledger connection failed
Error: Cannot open device
Solutions:
- Unlock Ledger and open correct app (Ethereum for EVM)
- Enable blind signing in Ledger app settings
- On Linux, add udev rules:
Bash
sudo curl -o /etc/udev/rules.d/20-hw1.rules \
https://raw.githubusercontent.com/LedgerHQ/udev-rules/master/20-hw1.rules
sudo udevadm control --reload-rules
Message Tracking
Message not found
Error: No CCIP request found in transaction
Causes: Transaction is not a CCIP send, transaction pending, or wrong chain RPC.
Solutions:
- Verify transaction emitted
CCIPSendRequestedevent on block explorer - Wait for transaction confirmation
- Provide source chain RPC:
Bash
ccip-cli show 0x... --rpc https://source-chain-rpc.com
Commit not found
Message not yet committed to destination chain.
Solutions:
- Wait for commit (timing varies by lane)
- Use
--waitflag:Bashccip-cli show 0x... --wait - Verify destination RPC is configured:
Bash
ccip-cli show 0x... \
--rpc https://source-chain-rpc.com \
--rpc https://dest-chain-rpc.com
Execution
Out of gas
State: FAILURE
Return Data: 0x (empty or gas-related)
Receiver contract exceeded gas limit.
Use manualExec with higher gas:
ccip-cli manualExec 0x... --gas-limit 500000 --wallet ledger
Or auto-estimate:
ccip-cli manualExec 0x... --estimate-gas-limit 20 --wallet ledger
Receiver reverted
State: FAILURE
Return Data: 0x08c379a0...
Decode the error:
ccip-cli parse 0x08c379a0...
Fix the issue in receiver contract or adjust parameters.
Message stuck as UNTOUCHED
Causes:
- DON hasn't executed yet
- Earlier message from same sender failed (ordering)
- Rate limiter exhausted
Solutions:
- Wait for execution
- Check for ordering issues:
Bash
ccip-cli manualExec 0xFirstFailedTx... \
--sender-queue \
--exec-failed \
--wallet ledger - Check rate limiter:
Bash
ccip-cli getSupportedTokens -n source -a router -t token
Already executed
Error: Message already executed
Check status:
ccip-cli show 0x...
If state is SUCCESS, no action needed.
Chain-Specific
- EVM
- Solana
- Aptos
Gas price too low
Error: replacement transaction underpriced
Wait for pending transaction to confirm.
Nonce too low
Error: nonce too low
Wait for pending transactions to confirm.
Transaction too large
Error: Transaction too large
Use buffer and lookup table:
ccip-cli manualExec 0x... \
--force-buffer \
--force-lookup-table \
--wallet ledger
Compute units exceeded
Error: Program failed to complete
Increase compute units:
ccip-cli manualExec 0x... \
--compute-units 500000 \
--wallet ledger
Leftover accounts
Error: Account already exists
Clear accounts from failed attempt:
ccip-cli manualExec 0x... \
--clear-leftover-accounts \
--wallet ledger
Module address mismatch
Error: Module address mismatch
Include module suffix in receiver address:
--receiver 0xAddress::module::function
Tokens
Token not supported
Error: UnsupportedToken
Check supported tokens:
ccip-cli getSupportedTokens -n source -a router
Rate limiter depleted
Transfer stuck or rejected due to rate limit.
Check rate limiter status:
ccip-cli getSupportedTokens -n source -a router -t token
Wait for bucket refill or reduce transfer amount.
Token approval failed
Error: ERC20: insufficient allowance
The CLI handles approvals automatically. If approval fails:
- Approve manually on block explorer
- Use
--approve-max:Bashccip-cli send ... --approve-max
Output
JSON parse error
Piping --format json to jq fails due to mixed output.
Redirect stderr:
ccip-cli show 0x... --format json 2>/dev/null | jq '.'
Interactive features not working
Non-TTY environment (scripts, CI).
Use non-interactive options:
ccip-cli show 0x... --log-index 0
ccip-cli show 0x... --format json
Getting Help
Enable verbose logging:
ccip-cli show 0x... --verbose
Check command help:
ccip-cli <command> --help
Report issues: github.com/smartcontractkit/ccip-tools-ts/issues
Related
- Configuration - RPC and wallet setup
- Debugging Failed Messages - Debug workflow
- Token Transfer - Transfer workflow