> ## Documentation Index
> Fetch the complete documentation index at: https://docs.hyperlane.xyz/llms.txt
> Use this file to discover all available pages before exploring further.

# Extending an Hyperlane Warp Route

# Using the Hyperlane CLI

After deploying your Hyperlane Warp Route (HWR), you may want to extend it to a new chain. Extending a HWR involves deploying a new token contract on the target chain and enrolling existing tokens with it.

You can extend an existing HWR using the [Hyperlane CLI](https://docs.hyperlane.xyz/docs/reference/developer-tools/cli).

<PrerequisitesPartial />

<Warning>
  Gnosis Safe Users: The EOA that owns the HWR must either be a Safe signer or
  [delegate](https://docs.safe.global/core-api/transaction-service-guides/delegates)
  to be able to propose update transactions.
</Warning>

If you already have the warp config, skip to [Step 1](#step-1-configuration).

To generate the HWR config using the Hyperlane CLI, locate your token symbol on the chain on which it is deployed:

<WarpReadSymbolChainPartial />

<WarpReadSymbolSelectPartial />

You can then choose the HWR to extend.

After running `hyperlane warp read`, the CLI will display a config similar to the following:

```yaml theme={null}
basesepolia:
  mailbox: "0x6966b0E55883d49BFB24539356a2f8A673E02039"
  owner: "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266"
  name: "Ether"
  symbol: "ETH"
  decimals: 18
  totalSupply: "1"
  remoteRouters:
    "11155111": "0x8A73F6E36735d8C4b9A00Af910746173050B754E"
  type: "synthetic"
sepolia:
  mailbox: "0xfFAEF09B3cd11D9b20d1a19bECca54EEC2884766"
  owner: "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266"
  name: "Ether"
  symbol: "ETH"
  decimals: 18
  totalSupply: 0
  remoteRouters:
    "84532": "0x26243aaD2d03AAbafaCE785808Ae64fc32aFB8A1"
  type: "native"
```

This particular config has 2 chains: basesepolia and sepolia. This means messages can be relayed between both chains.

<Info>
  Warp route configs are stored in your local registry at `$HOME/.hyperlane/deployments/warp_routes/<warpRouteId>/`. The `warp read` command outputs the current on-chain config, which you can use as a reference when making updates.
</Info>

## Step 1: Configuration

Edit the warp route deployment config in your local registry (e.g., `$HOME/.hyperlane/deployments/warp_routes/ETH/sepolia-basesepolia/warp-route-deployment.yaml`) to add a new chain.

```diff title="warp-route-deployment.yaml" theme={null}
sepolia:
  mailbox: "0xfFAEF09B3cd11D9b20d1a19bECca54EEC2884766"
  owner: "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266"
  name: "Ether"
  symbol: "ETH"
  decimals: 18
  totalSupply: 0
  remoteRouters:
    "84532": "0x26243aaD2d03AAbafaCE785808Ae64fc32aFB8A1"
  type: "native"
basesepolia:
  mailbox: "0x6966b0E55883d49BFB24539356a2f8A673E02039"
  owner: "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266"
  name: "Ether"
  symbol: "ETH"
  decimals: 18
  totalSupply: "1"
  remoteRouters:
    "11155111": "0x8A73F6E36735d8C4b9A00Af910746173050B754E"
  type: "synthetic"
+ holesky:
+   mailbox: "0x46f7C5D896bbeC89bE1B19e4485e59b4Be49e9Cc"
+   owner: "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266"
+   name: "Ether"
+   symbol: "ETH"
+   decimals: 18
+   totalSupply: "1"
+   type: "synthetic"
```

<Warning>
  EOA Users: The extended config `owner` must match the EOA address from the
  prerequisites step to avoid deployment failure.
</Warning>

## Step 2: Apply

Using the CLI, execute the command applicable to your HWR owner setup:

<Tabs
  defaultValue="eoa"
  values={[
{ label: "EOA", value: "eoa" },
{ label: "Gnosis Safe", value: "gnosis" },
]}
>
  <TabItem value="eoa">
    <WarpApplySymbolConfigDefaultPartial />
  </TabItem>

  <TabItem value="gnosis">
    Use this template to define and save a Gnosis Safe strategy: `yaml
            basesepolia: submitter: type: "gnosisSafe" chain: "basesepolia" safeAddress:
            "0x518489F9ed41Fc35BCD23407C484F31897067ff0" sepolia: submitter: type:
            "gnosisSafe" chain: "sepolia" safeAddress:
            "0x518489F9ed41Fc35BCD23407C484F31897067ff0" holesky: submitter: type:
            "gnosisSafe" chain: "holesky" safeAddress:
            "0x1f9090aaE28b8a3dCeaDf281B0F12828e676c326" ` In this case, each chain is
    a Gnosis Safe strategy with their respective Safe addresses. The Safe
    proposals **must be accepted** to complete the HWR extension.

    <WarpApplySymbolConfigDefaultStrategyPartial />
  </TabItem>
</Tabs>

After executing, you should see a batch of transactions executed on chain, and a final message indicating that the warp config has been updated.

## Step 3: Confirm

To confirm that the HWR was successfully extended using the Hyperlane CLI, run the following command with your token symbol on the chain it is deployed on:

<WarpReadSymbolChainPartial />

After running `warp read`, confirm that the HWR has been extended:

```yaml {23-34} theme={null}
basesepolia:
  mailbox: "0x6966b0E55883d49BFB24539356a2f8A673E02039"
  owner: "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266"
  name: "Ether"
  symbol: "ETH"
  decimals: 18
  totalSupply: 0
  remoteRouters:
    "17000": "0x9B18AfD7aB869C6B011F44638ff71786447B785B"
    "11155111": "0x4e63147e72d029Eb8b37F375B3837B2644622686"
  type: native
sepolia:
  mailbox: "0xfFAEF09B3cd11D9b20d1a19bECca54EEC2884766"
  owner: "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266"
  name: "Ether"
  symbol: "ETH"
  decimals: 18
  totalSupply: "0"
  remoteRouters:
    "17000": "0x9B18AfD7aB869C6B011F44638ff71786447B785B"
    "84532": "0xB38cc797Ccc6D8763439a07CEa052AF253281de6"
  type: "synthetic"
holesky:
  mailbox: "0x46f7C5D896bbeC89bE1B19e4485e59b4Be49e9Cc"
  owner: "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266"
  name: "Ether"
  symbol: "ETH"
  decimals: 18
  totalSupply: "0"
  remoteRouters:
    "84532": "0xB38cc797Ccc6D8763439a07CEa052AF253281de6"
    "11155111": "0x4e63147e72d029Eb8b37F375B3837B2644622686"
  type: "synthetic"
```
