Skip to content

safe

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

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:guardaddressReturn the transaction guard address of a Safe (the zero address when no guard is set).
@safe:isOwnerboolReturn whether an address is an owner of a Safe.
@safe:messageHashbytes32Return the SafeMessage hash of an off-chain message (plain string or typed-data JSON), as signed by Safe owners or SignMessageLib.
@safe:modulesarrayReturn the enabled module addresses of a Safe.
@safe:noncenumberReturn the current on-chain nonce of a Safe.
@safe:ownersarrayReturn the owner addresses of a Safe.
@safe:thresholdnumberReturn the signature threshold of a Safe.