0.7.0 (2026-04-24)
What's new
Manage your validators through a Safe multisig. Every operation — switch, consolidate, withdraw, exit — can now be proposed, co-signed by your Safe owners, and executed on-chain through the Safe, using --safe <address>.
The flow is three steps:
- Propose — run any validator command with
--safe; it submits one batched Safe transaction per group of validators. - Sign — other Safe owners run
safe signto add their confirmations. - Execute — when the signing threshold is met, run
safe executeto send the transactions on-chain.
Ledger hardware wallets are supported in all three steps.
Fee handling during execution
Safe transactions lock in the EIP-7002/EIP-7251 contract fee at proposal time. By the time you execute, often hours or days later, the fee may have moved. safe execute checks each transaction against the current on-chain fee before sending it, so you never pay for a transaction that would revert.
If fees rose while your proposal was waiting for signatures, safe execute waits for them to come back down (bounded, so it doesn't hang forever) or lets you cancel the stale transactions and start over. You can control this interactively or via flags:
- Wait it out (default): polls every slot; stops after
--max-fee-wait-blocks(default 50 blocks). - Cancel and re-propose:
--stale-fee-action rejectproposes rejection transactions that invalidate the stale ones. - Fail fast:
--max-fee-wait-blocks 0aborts immediately if any fee is stale. - Unattended runs: combine
--yeswith--stale-fee-actionto run without prompts.
Other improvements
- Pass validator pubkeys from a file (one per line,
#comments supported) in addition to the inline list. - More reliable Ledger error handling — fatal device errors now stop retry loops instead of looping forever.
- and more ...
See also
Full CLI reference, Safe workflow details, fee staleness behavior, and manual test scenarios: see the README.
What's Changed
🚀 Features
- cli: Support file-based validator pubkey input (95792d0)
- safe: Add EIP-1193 Ledger adapter for Protocol Kit (2f3cf57)
- safe: Add Safe multisig support for validator operations (4449f7e)
🐛 Bug Fixes
- deps: update dependency undici to v8 (2d3d71d)
- request: Clamp polling sleep to remaining deadline (4164131)
- request: Dispose BeaconService in sequential broadcast path (59d4ab6)
- safe: Unify stale fee wait semantics (88e4c76)
- signer: Set recoverable false for fatal Ledger error types (1d5aa5f)
📖 Documentation
- general: Update documentation (4cb66c0)
- general: Update documentation (e289fff)
- readme: Add safe feature and optimize documentation (2c88fa7)
🔧 Other
- claude: Add unit test agent (049c08f)
- deps: Update dependencies (29ee80f)
- deps: Update dependencies (a141f0f)
- deps: update dependency eslint-plugin-simple-import-sort to v13 (6ff9619)
- deps: update dependency typescript to v6 (96fee2a)
- deps: update github artifact actions (2b4c2ef)
- deps: update github artifact actions (major) (#45) (fe2df06)
- deps: update npm non-major (dd9c9d4)
- general: Improve unit test coverage (433d6d0)
- general: Pin bun version (456f60c)
- general: Refactor imports, logging colors and cli (2c5f102)
- general: Resolve CI test regressions (e1f0d09)
- renovate: Fix failing github actions for renovate PRs (08e0444)
- safe: Add Safe infrastructure deployment to kurtosis devnet (8e9ea47)
- safe: Add Safe integration test suite (b3b208d)
- scripts: Add scripts to include and fix typecheck errors (5693a74)
- setup: Update Claude setup and skill configuration (07ca3b1)
- setup: Update Claude.md and .gitignore (ff3b7a0)
- src: Refactor import and fix jsdoc (29f4adc)