Skip to main content
Version: 0.96.0

manualExec

Supported chain families:
EVM iconEVMSolana iconSolanaAptos iconAptos

Manually execute pending or failed CCIP messages on the destination chain.

Synopsis

Bash
ccip-cli manualExec <tx-hash> [options]

Description

The manualExec command allows you to manually trigger the execution of a CCIP message that is stuck or has failed. It retrieves the original request, calculates the merkle proof, fetches any required offchain data, and submits the execution transaction.

Arguments

ArgumentTypeRequiredDescription
<tx-hash>stringYesTransaction hash of the original CCIP request on source chain

Options

Message Selection

OptionTypeDefaultDescription
--log-indexnumber-Select a specific message by log index when multiple messages exist in one transaction

Gas Options

OptionAliasTypeDefaultDescription
--gas-limit-L, --compute-unitsnumber-Override gas limit for receiver callback. 0 keeps the original request value.
--tokens-gas-limit-number-Override gas limit for token pool releaseOrMint calls. 0 keeps original.
--estimate-gas-limit-number-Estimate gas limit with percentage margin (e.g., 10 for +10%). Conflicts with --gas-limit.

Wallet

OptionAliasTypeDescription
--wallet-wstringWallet for signing transactions. See Configuration.

Solana-Specific Options

OptionTypeDefaultDescription
--force-bufferbooleanfalseUse buffer for messages too large for a single transaction.
--force-lookup-tablebooleanfalseCreate a lookup table for accounts to fit in transaction.
--clear-leftover-accountsbooleanfalseClear buffers or lookup tables from previous attempts.

Sui-Specific Options

OptionTypeDefaultDescription
--receiver-object-idsstring[]-Receiver object IDs for Sui execution (e.g., 0xabc...).

Queue Execution

OptionTypeDefaultDescription
--sender-queuebooleanfalseExecute all pending messages from the same sender, starting from the provided transaction.
--exec-failedbooleanfalseInclude failed messages in queue execution. Requires --sender-queue.

See Configuration for global options (--rpcs, --format, etc.).

Command Builder

Build your manualExec command interactively:

ccip-cli manualExec Builder

Manually execute pending or failed CCIP messages

Required Arguments

These values are required to build the command

Transaction hash of the original CCIP request

Message Options

Configure the CCIP message payload

Select specific message by log index

Gas & Execution

Control gas limits and execution behavior

Override gas limit for receiver callback (0 = original). Alias: --compute-units

Override gas limit for token pool releaseOrMint calls

Estimate gas with margin % (e.g., 10 for +10%). Conflicts with --gas-limit.

Solana Options

Options specific to Solana chains

Use buffer for large messages on Solana

Create lookup table for accounts on Solana

Clear buffers/tables from previous attempts

Wallet & Transaction

Configure wallet and transaction settings

Wallet source: ledger[:index], trezor[:index], or private key in USER_KEY env var

Output Options

Control command output format

Format for command output

Enable debug logging

Fill in required fields to generate command
Generated Command
ccip-cli manualExec <tx-hash> --rpcs-file ./.env --format pretty

When to Use

Manual execution is needed when:

ScenarioDescription
Message stuck pendingDON hasn't executed it within expected timeframe
Previous execution failedNeed to retry with different gas parameters
Out-of-order execution blockedEarlier message in sender queue failed

Examples

Execute a pending message

Bash
ccip-cli manualExec 0xafd36a0b99d5457e403c918194cb69cd070d991dcbadc99576acfce5020c0b6b \
--rpc https://eth-sepolia.example.com \
--rpc https://arb-sepolia.example.com \
--wallet ledger

Override gas limit

Bash
ccip-cli manualExec 0xabc123... \
--gas-limit 500000 \
--wallet ledger

Estimate and apply gas limit with margin

Bash
ccip-cli manualExec 0xabc123... \
--estimate-gas-limit 15 \
--wallet ledger

Solana execution with buffer

For large messages on Solana:

Bash
ccip-cli manualExec 0xabc123... \
--wallet ledger \
--gas-limit 500000 \
--force-buffer \
--clear-leftover-accounts

Sui execution with receiver objects

For Sui destinations that require receiver object IDs:

Bash
ccip-cli manualExec 0xabc123... \
--wallet ledger \
--receiver-object-ids 0xabc... 0xdef...

Execution Flow

  1. Fetches the original request from the source chain
  2. Retrieves the commit report from the destination chain
  3. Calculates the merkle proof for manual execution
  4. Fetches any required offchain token data (e.g., CCTP attestations)
  5. Submits the execution transaction to the destination chain

Solana Considerations

Solana transactions have size limits. For large messages:

StepOptionDescription
1--force-bufferSends report in chunks
2--force-lookup-tableCreates address lookup table for accounts
3--clear-leftover-accountsCleans up from aborted attempts

After successful execution, buffers auto-clear. Lookup tables require a grace period before deletion.

See Also

Exit Codes

CodeMeaning
0Success - execution transaction submitted
1Error (network failure, execution failed, invalid arguments)

Use in scripts:

Bash
ccip-cli manualExec $TX_HASH --wallet ledger --format json || exit $?