Safe owner change alert
Template: safe-owner-change-alert ยท category: security ยท risk: monitor_only
Pages the moment a Safe multisig is rewired: AddedOwner, RemovedOwner and
ChangedThreshold. The owner-add/remove alerts read the CURRENT
getThreshold() so you see the resulting m-of-n in the same message. A focused
governance watch โ see safe-monitor when you also
want execution and module events.
When to use it
- know instantly when a treasury multisig's owner set or threshold changes
- catch an unauthorized owner addition (a compromised signer)
- a lightweight governance watch with no bundled ABI blob
Generate it
rflow new --template safe-owner-change-alert
# or add the workflow to an existing project
rflow add workflow safe-owner-change-alertNon-interactive (CI/agents):
rflow new --template safe-owner-change-alert --yes --output ./safe \
--answer safe_address=0x0000000000000000000000000000000000000000Inputs
| key | type | default |
|---|---|---|
project_name | string | safe-owner-change-alert |
network / chain_id / rpc_env / rpc_url | network / chain_id / env_var / string | ethereum / 1 / ETH_RPC / a public RPC |
safe_name / safe_address | contract / address | Safe / zero placeholder (replace!) |
channel | string | ops |
Required env vars
DATABASE_URL, the RPC env var (default ETH_RPC), TG_BOT_TOKEN,
TG_CHAT_ID โ all listed in the generated .env.example.
Safety notes
Monitor-only: no signer: and no relayers:, so the relayer engine never
boots. The Safe v1 ABI is materialized from the builtin standard (v1.3 and
v1.4 share these event signatures), and every workflow ends in
on_failure: dead_letter.
Run it locally
docker compose up -d # postgres on localhost:5448
# fill .env, set safe_address
rflow validate
rflow startCommon modifications
- add a
ChangedThreshold-only project for the strictest change alarm - swap the channel for slack/discord/pagerduty:
rflow add notification - graduate to
safe-monitorfor execution events