Ownable because teams need a way to expand to new chains, enroll routers, update ISMs, change Hooks, tune rate limits, pause routes, or transfer ownership. For production systems, direct ownership by a hot key or even a multisig can still be risky: if the owner path is compromised, an attacker can execute privileged changes immediately.
A governance timelock puts a delay between proposing an owner action and executing it. This gives your team, integrators, and monitors time to inspect the action and cancel it before it takes effect.
Who should use this
Use timelock governance if you operate:- A Warp Route with meaningful TVL.
- A chain’s Hyperlane Mailbox or core deployment.
- A route integrated by external protocols, lending markets, or risk teams.
- A multisig or ICA setup where signers are not expected to make urgent owner changes.
How OpenZeppelin timelocks work
Hyperlane tooling uses OpenZeppelin’sTimelockController, exposed through Hyperlane’s TimelockController wrapper. The timelock contract becomes the owner of the governed contract.
An owner action then has two phases:
- A proposer schedules the exact call on the timelock.
- After
minDelay, anyone with executor rights can execute that exact call.
Roles
Permissionless execution is usually desirable. Once a valid proposal has waited through the delay, anyone can execute it, so liveness does not depend on the proposer returning online.
In the OpenZeppelin v4.7 implementation used by Hyperlane, initial proposers also receive
CANCELLER_ROLE. Account for that when choosing proposers and vetoers.
Why it is safer
Without a timelock, a compromised owner can immediately change sensitive configuration. For a Warp Route, that could mean replacing the ISM, changing ownership, altering limits, or weakening safety controls. With a timelock:- The malicious or mistaken action is visible before execution.
- Watchers can decode and review the scheduled calldata.
- A configured canceller can veto the operation.
- Integrators get time to react before the change takes effect.
- ICA-based governance is less brittle because a bad ICA message can schedule an action, but cannot execute it immediately.
Hyperlane setup
A typical setup starts with one governance Safe on an owner chain, usually Ethereum. For contracts on that same chain, the Safe can govern directly. For contracts on remote chains, the Safe uses an Interchain Account (ICA) to make authenticated calls on the remote chain. Timelocks are then added as the owner of each governed contract. The Safe or ICA does not execute owner actions immediately. Instead, it proposes actions to the timelock, and the timelock enforces the delay and cancellation window before execution. There are three pieces in the governance path:- Same-chain multisig governance: the owner-chain Safe is the source of governance decisions.
- ICA-based remote governance: the Safe controls remote-chain ICAs so it can govern contracts on other chains from the owner chain.
- Timelock-controlled ownership: each governed contract is owned by its local timelock, which delays execution and allows cancellation.
- The governed contract is owned by the timelock on that same chain.
- The governance Safe has
PROPOSER_ROLEon that timelock. - The Safe schedules actions directly on the timelock.
- The governed contract is owned by a timelock on that remote chain.
- The proposer is an ICA on that remote chain.
- That ICA is controlled by the governance Safe on the owner chain.
- The Safe sends an ICA message, and the ICA schedules the action on the remote timelock.
- The owner-chain Safe creates an ICA transaction.
- The ICA schedules the action on the remote chain’s timelock.
- The action waits for the configured delay. Hyperlane recommends at least 1 day as a production baseline.
- If the proposal is bad, a canceller calls
cancel. - If the proposal is valid, anyone executes the queued operation after the delay.
Example
Suppose a Warp Route on Base is owned by a Base timelock. The timelock has:PROPOSER_ROLE: the Ethereum Safe’s ICA on Base.EXECUTOR_ROLE:address(0).CANCELLER_ROLE: an operational vetoer or security council address.minDelay: at least86400seconds, matching Hyperlane’s 1-day production baseline.
setInterchainSecurityModule(newIsm) call on the Base timelock. The call can only be executed after the delay, and only if it has not been cancelled.
Submitter strategy
When you deploy or update your own Warp Route with the Hyperlane CLI, pass a submitter strategy so the CLI knows how to submit owner transactions. If your route is owned by a timelock, use atimelockController submitter strategy.
The strategy wraps route updates in scheduleBatch and returns the later executeBatch transaction. This lets warp apply propose the update through the timelock instead of trying to call the owned contract directly.
The type names below match the current SDK submitter types: timelockController, interchainAccount, and gnosisSafeTxBuilder. The timelockAddress and proposerSubmitter keys come from the EVM timelock submitter schema, and the internalSubmitter nesting with Safe Tx Builder version: '1.0' matches the current oUSDT strategy config.
Example remote-chain strategy:
What Hyperlane already provides
The Hyperlane monorepo includes:- An OpenZeppelin
TimelockControllerdeployment wrapper. - SDK support for deploying and reading EVM timelocks.
- Submitter support for
timelockControllerstrategies. - ICA submitter nesting, so a Safe can propose on remote timelocks through ICAs. See the oUSDT strategy generator and oUSDT strategy config.
- Scripts to list pending timelock operations and cancel them.
Operational guidance
- Use a delay long enough for monitoring and human review. Hyperlane’s minimum recommended production baseline is 1 day.
- Keep execution permissionless unless you have a specific reason not to.
- Give cancellation rights to parties that can respond quickly.
- Monitor
CallScheduled,CallExecuted, andCancelledevents on every timelock. - Document who can propose, who can cancel, and how emergency cancellation works.
- Avoid using a timelock for actions that must execute immediately during an incident.