> For the complete documentation index, see [llms.txt](https://csm-docs.cozy.finance/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://csm-docs.cozy.finance/developer-guides/safety-module-states.md).

# Safety Module States

The Safety Module can be in three states:

```solidity
enum SafetyModuleState {
  ACTIVE,
  TRIGGERED,
  PAUSED
}
```

The table below details valid state transitions:

| From      | To        | Notes                                                                                                                                                                                                                                                 |
| --------- | --------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| ACTIVE    | TRIGGERED | <p>Occurs when <code>SafetyModule.trigger(</code></p><p><code>triggerEventId\_)</code> is executed with a valid controller and the SafetyModule is not <code>PAUSED</code> (see <a href="/pages/3MwdRuow7dR1BRLy0kHh">Safety Module Raising</a>).</p> |
| ACTIVE    | PAUSED    | Occurs when either the protocol owner or pauser or the SafetyModule owner or pauser pauses the SafetyModule.                                                                                                                                          |
| TRIGGERED | ACTIVE    | Occurs when safety module has finished paying out all pending raises (see [Safety Module Raising](/developer-guides/safety-module-raises.md)).                                                                                                        |
| TRIGGERED | PAUSED    | Occurs when either the protocol pauser or SafetyModule pauser pauses the SafetyModule.                                                                                                                                                                |
| PAUSED    | ACTIVE    | Occurs when either the protocol owner or the SafetyModule owner unpauses the SafetyModule.                                                                                                                                                            |
| PAUSED    | TRIGGERED | Occurs when either the protocol owner or the SafetyModule owner unpauses the SafetyModule and `SafetyModule.numPendingRaises > 0` (see [Safety Module Raising](/developer-guides/safety-module-raises.md)).                                           |

\
The table below details which actions are allowed in each of these states:

<table><thead><tr><th width="230">Action / State</th><th>Active</th><th>Triggered</th><th>Paused</th></tr></thead><tbody><tr><td><strong>Deposit Reserve Assets</strong></td><td>Y</td><td>Y</td><td>N</td></tr><tr><td><strong>Queue Redeem Reserve Assets</strong></td><td>Y</td><td>N</td><td>N</td></tr><tr><td><strong>Complete Redeem Reserve Assets</strong></td><td>Y</td><td>N</td><td>N</td></tr><tr><td><strong>Instant Redeem Reserve Assets</strong></td><td>N</td><td>N</td><td>Y</td></tr><tr><td><strong>Trigger</strong></td><td>Y</td><td>Y</td><td>Y</td></tr><tr><td><strong>RequestRaise</strong></td><td>N</td><td>Y</td><td>N</td></tr><tr><td><strong>Queue Update Configs</strong></td><td>Y</td><td>N</td><td>Y</td></tr><tr><td><strong>Finalize</strong> <strong>Update Configs</strong></td><td>Y</td><td>N</td><td>Y</td></tr><tr><td><strong>Pause</strong></td><td>Y</td><td>Y</td><td>N</td></tr><tr><td><strong>Unpause</strong></td><td>N</td><td>N</td><td>Y</td></tr><tr><td><strong>Fees Drip</strong></td><td>Y</td><td>N</td><td>N</td></tr><tr><td><strong>Claim Fees</strong></td><td>Y</td><td>Y</td><td>Y</td></tr></tbody></table>


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://csm-docs.cozy.finance/developer-guides/safety-module-states.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
