
26 January 2026
This post is the second instalment in our multi-part series exploring how we approach security at Story. This series shares the principles that guide us, the systems we’ve built, and what we’ve learned along the way. If you missed the first post in the series, which outlines our security philosophy and foundations leading up to our mainnet launch, you can catch up here..
Over the past year, governance mechanisms have become one of the most frequently exploited attack surfaces in crypto protocols. Several high-profile incidents have demonstrated that even when core smart contracts are sound, failures in upgrade execution, multisig signing, or emergency authority can lead to irreversible onchain damage.
As Story transitions from deployment to live operation, governance security is no longer a theoretical nice-to-have, but an existential operational requirement.
This post focuses on how we secure the governance processes that make the ecosystem function. We’ll walk through:
When governance fails, it's rarely because a single smart contract is broken. More often, incidents emerge at the intersection of human decision-making, upgrade complexity, and time pressure. This is especially true during live incidents.
In practice, most governance-related failures fall into a small number of recurring patterns:
The governance model at Story is designed explicitly around these risks. We assume that mistakes will happen, signers are human, and response time matters. We built processes, checks, and counterbalances that reduce the blast radius when things go wrong.
To ensure security and reliability during protocol upgrades, we adhere to a checklist of key elements designed to scrutinize every critical aspect of an upgrade before execution. The key elements we evaluate to ensure a safe upgrade include:
initialize function during the upgrade transaction to ensure the proxy’s state is updated correctly.The full upgrade process is first executed on the Aeneid testnet. After the testnet upgrade, a dedicated round of testing is conducted on the upgraded contracts.
Only after successfully passing testnet testing does an upgrade proceed to mainnet.
One of the most significant governance capabilities at Story involves taking direct, onchain actions that immediately affect both the Story Protocol and the underlying Story Network. These onchain powers include the ability to:
From an execution perspective, all of these actions are carried out through Gnosis Safe multisig wallets. Two multisigs are central to this process: the Governance Multisig and the Security Council Multisig. These multisigs operate in close coordination to ensure that every parameter update, configuration change, or code upgrade is performed smoothly and securely.
A Security Council is an independent, semi-centralized group of trusted individuals or entities empowered to act swiftly to protect a decentralized protocol during emergencies. While fully decentralized governance is the long-term goal, Story deliberately maintains a Security Council with narrowly scoped powers. This is a conscious tradeoff: some risks cannot be mitigated by token voting or timelocks alone, especially during live incidents where response time matters.
The Security Council multisig has the authority to cancel scheduled actions before execution if those actions deviate from the expected change (e.g., incorrect inputs) or appear malicious or unexpected (e.g., in the event of a hack). There are currently six members on the Security Council, and the threshold for canceling an action is three votes. The inaugural members are:
To understand how Governance and Security Council multisigs interact in practice, it’s helpful to note the following:
0xFdece7b8a2f55ceC33b53fd28936B4B1e3153d530x6c7FA8DF1B8Dc29a7481Bb65ad590D2D16787a82
The AccessManager and Timelock contracts have three main functions: schedule, cancel and execute governance actions.
In simplified terms, the process for preparing, reviewing, and executing a governance transaction looks like this:

Prepare schedule / execute / cancel JSONs:
Recent incidents, including the Bybit governance exploit, reinforced a pattern we explicitly design against: multisig signers approving transactions they cannot independently reconstruct and verify. At Story, transaction JSONs and calldata are treated as first-class security artifacts and the primary source of truth for verifying exactly what an onchain governance action will do before it is signed.
Transaction JSONs are prepared to call the schedule, cancel, and execute functions on AccessManager.sol. While simple cases can be handled through the Safe UI, complex or multi-step transactions require a custom script that generates the JSONs. This allows developers and signers to review the calldata beforehand and serves as a source of truth during verification.
Sign schedule transactions:
The Governance multisig proposer submits the schedule transaction to the Governance multisig.
Verify scheduled transactions:
Security Council members review the scheduled transaction data to confirm it matches the originally intended actions. Depending on the outcome:
execute on AccessManager.solcancel on AccessManager.solTo further strengthen governance security, it is essential to clearly define and understand the full scope of governance powers within the Story ecosystem. These powers extend well beyond onchain execution and include a broader set of critical decisions that shape the protocol and the network over time.
As outlined in the Story Constitution, governance actions may include:
These powers demonstrate the significant authority held by governance within Story — particularly when it comes to leadership selection, budget and token allocation, incorporating community feedback, and deciding whether and how proposed improvements are implemented.
As governance decisions increasingly translate into direct, irreversible onchain actions, security and robustness become even more critical. In upcoming posts, we’ll dive deeper into the onchain governance mechanics that underpin these processes.
In the near term, token voting is being explored as a way to expand community participation in governance. Because voting power may vary based on staking status, voting calculations will likely rely on L1 APIs and be executed off-chain. More details will be shared as Story continues working toward more open, community-driven governance.