This guide explains how the Pausable ISM works on a Hyperlane Warp Route (HWR) and how to use it in an incident. The Pausable ISM is an emergency stop: when it is paused, every inbound delivery on that destination chain is rejected, regardless of what the other security checks would have accepted. You can confirm an HWR includes a Pausable ISM by runningDocumentation Index
Fetch the complete documentation index at: https://docs.hyperlane.xyz/llms.txt
Use this file to discover all available pages before exploring further.
warp read and looking for type: pausableIsm inside the aggregation’s modules. You can also check the Hyperlane explorer under the Warp Route Security section for your route.
This page covers the operator workflow. For the contract source, see
PausableIsm.sol.Overview
The Pausable ISM has two states:- Unpaused. It accepts every inbound message. Deliveries on the destination chain proceed as normal.
- Paused. It rejects every inbound message. Deliveries on the destination chain revert at the ISM step.
pause() transaction is confirmed on-chain, deliveries on that destination stop. There is no waiting period.
A typical aggregation contains Pausable + Rate Limit + Default Fallback in a 3/3 setup — all three modules must accept a message for it to be delivered. While the Pausable ISM is paused, the aggregation can never accept a message: the paused module rejects everything, and the aggregation requires every module to accept.
What pausing does and does not do
Pausing does:- Cause all inbound deliveries on the paused destination chain to revert at the ISM step.
- Take effect as soon as the
pause()transaction is confirmed on-chain.
- Stop users from sending messages on origin chains. Dispatches still succeed; those messages just will not be delivered until the ISM is unpaused. They accumulate as pending in the meantime.
- Refund already-dispatched messages or fees.
- Affect any other warp route or any other ISM. The pause is scoped to the single Pausable ISM contract being called.
- Reset the rate limit bucket, change ownership, or modify any other module in the aggregation.
What you control as the owner
ThePausableIsm contract is Ownable. The owner is the only address allowed to call pause() and unpause(). The same signing process used for other HWR admin actions applies here.
Pause the HWR
Pausing and unpausing requires the owner of the
PausableIsm — typically
the same multisig that owns the HWR. If you are not the owner, you can still
use warp read to inspect the current state, but you will not be able to
change it.pause() transaction directly to the Pausable ISM contract. The pause takes effect as soon as the transaction is confirmed on-chain.
Step 1: Find the Pausable ISM address
Runwarp read and locate the pausableIsm entry inside the aggregation’s modules. The address field on that entry is the contract to call.
warp read, you should see a similar config under interchainSecurityModule. One of the modules inside the staticAggregationIsm will be type: pausableIsm:
Step 2: Send the pause transaction
From the owner multisig, send a single transaction:- to: the Pausable ISM address
- data:
pause()(function selector0x8456cb59) - value:
0
Step 3: Verify
Once the transaction is confirmed on-chain, the next inbound delivery on that chain will revert. Readingpaused() on the contract should return true.
Repeat on each destination chain that needs to be stopped.
Unpause the HWR
To unpause, the owner sends anunpause() transaction (function selector 0x3f4ba83a) from the owner multisig to the Pausable ISM address. Pending messages will start delivering as the relayer processes them.
Verify with paused() on the contract or re-run warp read — the value should now be false.
Recommendations
- Practice on a testnet route before you need it. A short drill — find the address, build the
pause()transaction, collect signatures, broadcast — surfaces issues with the signing process while the stakes are low. - Document signer availability out of band. The Pausable ISM is only as responsive as the signers behind the owner multisig.
- Pause is containment, not resolution. Pausing stops new deliveries but does not fix the underlying issue. Unpausing requires confidence that the incident has been resolved or mitigated.