> For the complete documentation index, see [llms.txt](https://docs.venn.build/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.venn.build/venn-network/getting-started/safe-guard/bypass-mechanism.md).

# Bypass Mechanism

Bypass Mechanism Purpose

The bypass functionality enables you to execute transactions that don't meet the normal Venn Guard validation requirements when:

* Emergency situations require actions that don't conform to standard rules
* Technical issues prevent normal transaction patterns
* Unanticipated scenarios arise that were unknown during the initial guard setup

***

## How It Works

The bypass mechanism uses a **timelock approach**:

1. Safe owners propose and sign a transaction
2. A bypass request is submitted with signatures meeting the Safe threshold
3. After a waiting period (set once when the guard is deployed and configurable for up to 7 days), the transaction can be executed

This provides a security balance - allowing flexibility while preventing the immediate execution of potentially high-risk transactions.

***

## Select a Bypass Path

<details>

<summary>Bypass via Venn UI (Recommended)</summary>

{% hint style="info" %}
**Prefer a no-code path?** You can complete the bypass flow using a dedicated UI - no scripts or Etherscan interaction needed.
{% endhint %}

#### Prerequisites

* Venn Guard is installed on your Safe.
* You’re connected with a Safe owner wallet to the [Venn UI](https://explorer.venn.build/toolkit/venn-safe-guard).

#### Steps:&#x20;

1. **Open the Venn platform** and navigate to the [Guard Dashboard](https://explorer.venn.build/toolkit/venn-safe-guard).
2. **Create or import the transaction:**\
   • Build the transaction in Venn’s Tx Builder, or\
   • Upload an existing transaction to Venn, or\
   • Use the Send Tokens page for simple transfers.
3. **Select transaction type = Bypass**\
   In the Venn UI **(**&#x62;efore you sign the transaction), select the transaction type as <kbd>Bypass</kbd>.
4. **Navigate to the** [**Bypass page**](https://explorer.venn.build/toolkit/venn-safe-guard/bypass-guard)**,** and complete these steps:

* **Signers confirmations**: Other owners sign the transaction as they normally would in the Safe interface.
* **Send Bypass Transaction**: Once the threshold is met, you can send the Bypass Transaction.
* **Wait for the timelock countdown to finish**.
* **Execute the Transaction** once the timelock finishes.

</details>

<details>

<summary>Bypass via Direct Contract Calls (Programmatic)</summary>

#### Step 1: Create and Sign the Transaction

Create the transaction you want to bypass through the Safe UI:

* Specify the transaction details (recipient, value, data, etc.)
* Have the required number of owners sign it

{% hint style="warning" %}
&#x20;**Important**: Don't execute the transaction yet - keep it in the transaction queue by selecting:\ <kbd>No, later</kbd> option, and then you can sign the transaction.
{% endhint %}

#### Step 2: Collect Required Signatures

* Ensure enough Safe owners have signed the transaction to meet the Safe's threshold requirement.
* Signers can add their signature just as they normally would - through the Safe UI, or via API integration with the Safe Transaction Service.

#### Step 3: Submit Bypass Request

* Call the ⁠`bypassGuard()` function on the VennGuard contract with the following parameters copied from the queued transaction:

{% hint style="success" %}
Tip: You can find the address of the guard from the Safe UI under **Settings --> Modules**
{% endhint %}

<table data-header-hidden data-full-width="false"><thead><tr><th valign="top"></th><th valign="top"></th><th valign="top"></th></tr></thead><tbody><tr><td valign="top"><strong>Parameter</strong></td><td valign="top"><strong>Description</strong></td><td valign="top"><strong>Where to Find It</strong></td></tr><tr><td valign="top">to</td><td valign="top">Destination address</td><td valign="top">Transaction details in Safe UI</td></tr><tr><td valign="top">value</td><td valign="top">ETH amount (in wei)</td><td valign="top">Transaction details in Safe UI</td></tr><tr><td valign="top">data</td><td valign="top">Transaction calldata</td><td valign="top">Transaction details in Safe UI (0x for no data)</td></tr><tr><td valign="top">operation</td><td valign="top">Call type (0=Call, 1=DelegateCall)</td><td valign="top">Usually 0 (Call)</td></tr><tr><td valign="top">safeTxGas</td><td valign="top">Gas for the Safe transaction</td><td valign="top">Transaction details in Safe UI</td></tr><tr><td valign="top">baseGas</td><td valign="top">Base gas amount</td><td valign="top">Transaction details in Safe UI</td></tr><tr><td valign="top">gasPrice</td><td valign="top">Gas price for the transaction</td><td valign="top">Transaction details in Safe UI</td></tr><tr><td valign="top">gasToken</td><td valign="top">Token used for gas payment</td><td valign="top">Transaction details in Safe UI (0x0 for ETH)</td></tr><tr><td valign="top">refundReceiver</td><td valign="top">Address to receive gas refund</td><td valign="top">Transaction details in Safe UI</td></tr><tr><td valign="top">signatures</td><td valign="top">Collected owner signatures</td><td valign="top">Transaction details in Safe UI</td></tr></tbody></table>

* To send this `bypassGuard()`transaction, you could either use Etherscan's Write Contract functionality or write a custom script interacting with the guard contract.

#### Step 4: Wait for the Time-Lock Period

After submitting the bypass request, you must wait for the configured ⁠`bypassGuardWaitTime` to pass. This period is set during guard initialization, cannot be changed afterward, and cannot exceed 7 days.

#### Step 5: Execute the Transaction

Once the waiting period has elapsed:

1. Return to the Safe UI
2. Find the queued transaction
3. Execute it normally

{% hint style="success" %}
The guard will now recognize it as a bypassed transaction and allow execution.
{% endhint %}

#### Troubleshooting

<table data-header-hidden data-full-width="false"><thead><tr><th valign="top"></th><th valign="top"></th></tr></thead><tbody><tr><td valign="top"><strong>Issue</strong></td><td valign="top"><strong>Solution</strong></td></tr><tr><td valign="top">Error: <code>bypassGuard already called</code></td><td valign="top">A bypass request has already been submitted for this transaction. You may proceed to execute the transaction as normal</td></tr><tr><td valign="top">Transaction still fails after waiting</td><td valign="top">Verify the wait time has fully elapsed and the bypass request transaction parameters exactly match the proposed transaction parameters</td></tr><tr><td valign="top">Signatures rejected</td><td valign="top">Ensure signatures meet the Safe's threshold and are properly formatted</td></tr></tbody></table>

#### Emitted Events

The bypass mechanism emits the following events:

<table><thead><tr><th>Event</th><th>Signature</th><th>Description</th></tr></thead><tbody><tr><td><strong>Bypass Guard</strong></td><td><pre class="language-solidity"><code class="lang-solidity">BypassGuard(
   bytes32 safeTxHash,
   uint256 initTime
)
</code></pre></td><td>Emitted when a <strong>Bypass Request</strong> transaction was submitted to the guard <em>(see</em> <a href="#step-3-submit-bypass-request"><em>Step 3</em></a> <em>above)</em></td></tr><tr><td><strong>Transaction Bypassed</strong></td><td><pre class="language-solidity"><code class="lang-solidity">TransactionBypassed(
    bytes32 safeTxHash
)
</code></pre></td><td>Emitted when a <strong>Bypass Transaction</strong> was <strong>Executed</strong> on chain <em>(see</em> <a href="#step-5-execute-the-transaction"><em>Step 5</em></a> <em>above)</em></td></tr></tbody></table>

</details>

***

## Technical Details

The bypass mechanism works through these key processes:

**Transaction Identification**\
The guard calculates a unique hash for each transaction based on its parameters

**Bypass Registry**\
Stores the timestamp when a bypass was initiated for each transaction hash

**Time Verification**\
During transaction execution, the guard checks if:

1. The transaction has a registered bypass request
2. The required wait time has elapsed since the bypass was initiated

***

## Security Considerations

* The bypass mechanism requires signatures meeting the Safe's threshold
* The mandatory waiting period provides time to detect and react to unauthorized bypass attempts
* Safe owners should be notified when bypass requests are submitted
* Monitor bypass requests carefully - they circumvent normal security controls
* Consider setting a longer wait time for higher-value Safes

***
