# Safe Module Auth

This contract receives the user's `Safe` permission to perform actions on their behalf.

Each user that has their positions managed by a `Safe` wallet, is permitting other contracts to perform actions on their behalf. In Defi Saver the `SafeModuleAuth` contract receives that permission.

{% hint style="info" %}
Due to having permission for users' wallets, SafeModuleAuth is an immutable contract
{% endhint %}

The `SafeModuleAuth` has only one function `callExecute` which is only callable by the `StrategyExecutor` contract. The function calls the users `Safe` and performs the configured actions. This allows for the rest of the system to change while keeping the safe permission in a fixed contract.

Below is the interface of the contract:

```solidity
contract SafeModuleAuth {
    function callExecute(
        address _safeAddr,
        address _recipeExecutorAddr,
        bytes memory _callData
    ) external payable onlyExecutor notPaused;
}
```

{% hint style="info" %}
`callExecute` function has `notPaused` modifier which can be used to pause the system of strategy execution in the case of unexpected behaviour
{% endhint %}


---

# Agent Instructions: 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:

```
GET https://docs.defisaver.com/protocol/core/safe-module-auth.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
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.
