Skip to content

safe

Safe multisig operations: propose and execute transactions, manage owners and threshold, attach guards, and install Zodiac modules.

⚗️ Experimental — available at next.evmcrispr.com.

load safe

Config variables are set with set (fully qualified, including the module prefix) and are only readable by their own module and the user script.

VariableTypeDefaultDescription
$safe:serviceUrlstringCustom Safe transaction-service endpoint for the current chain.
$safe:apiKeystringAPI key sent to the Safe transaction service.
CommandDescription
safe:add-ownerAdd an owner to the Safe, optionally updating the threshold (keeps the current one by default).
safe:change-thresholdChange the signature threshold of the Safe.
safe:delegate-execCall a contract function via DELEGATECALL from the Safe. The code runs in the storage context of the Safe — only use audited libraries you trust.
safe:disable-moduleDisable a module on the Safe.
safe:enable-moduleEnable a module on the Safe, allowing it to execute transactions without owner signatures (e.g. a Zodiac module).
safe:executeExecute a Safe transaction on-chain: either a block of commands (connected owner of a 1-threshold Safe) or a fully-confirmed queued transaction by its hash.
safe:install-delayDeploy a Zodiac Delay modifier (timelock) owned by the Safe and enable it as a module.
safe:install-rolesDeploy a Zodiac Roles modifier (fine-grained permissions) owned by the Safe and enable it as a module.
safe:install-scope-guardDeploy a Zodiac ScopeGuard owned by the Safe and set it as the transaction guard of the Safe, limiting which targets and functions owners can call.
safe:newDeploy a new Safe (v1.4.1 L2 singleton) with the given owners, at a deterministic address.
safe:proposePropose a transaction to the Safe queue through the Safe Transaction Service, signed by the connected owner or delegate.
safe:remove-guardRemove the transaction guard of the Safe.
safe:remove-ownerRemove an owner from the Safe, lowering the threshold if it would exceed the remaining owners.
safe:set-fallback-handlerSet the fallback handler contract of the Safe.
safe:set-guardSet a transaction guard on the Safe: a contract that checks every transaction before and after execution (e.g. a Zodiac ScopeGuard).
safe:swap-ownerReplace an owner of the Safe with a new address.
safe:verifyRecompute the EIP-712 domain, message and safeTxHash of a queued Safe transaction locally, check them against the Safe Transaction Service and flag dangerous fields, so signers can verify what their wallet displays.
safe:verify-messageCompute the EIP-712 hashes of an off-chain Safe message (plain string or typed-data JSON) so signers can verify what their wallet displays.
HelperReturnsDescription
@safe:guardaddressTransaction guard address of a Safe (the zero address when no guard is set).
@safe:isOwnerboolWhether an address is an owner of a Safe.
@safe:messageHashbytes32SafeMessage hash of an off-chain message (plain string or typed-data JSON), as signed by Safe owners or SignMessageLib.
@safe:modulesarrayEnabled module addresses of a Safe.
@safe:noncenumberCurrent nonce of a Safe.
@safe:ownersarrayOwner addresses of a Safe.
@safe:thresholdnumberSignature threshold of a Safe.