# A safe that has been created using version 1.40=< will not be compatible with Brahma

Externally created Safe wallets on v1.4.0+ cannot set Brahma's SafeModeratorOverridable guard because it lacks EIP-165 support, breaking ConsoleAccount integration.

- Payout: Audit contest
- Severity: medium
- Program: Brahma
- Found by: bronze_pickaxe
- Disclosed: 2023-11-21
- Write-up quality: 6/10
- Original: https://code4rena.com/reports/2023-10-brahma#m-01
- Library page: https://bugbountylibrary.com/r/c4%3A2023-10-brahma%3AM-01
- Tags: area:web3 domain:web3 impact:dos kind:contest platform:code4rena sev:medium tech:evm tech:solidity vuln:business-logic

**Target:** WalletRegistry / Safe guard integration
**Root cause:** Safe contracts v1.4.0+ require guards to implement EIP-165 supportsInterface in setGuard, but Brahma's SafeModeratorOverridable does not implement IERC165, so setGuard reverts with GS300.
**Steps:**
1. Alice registers an externally created Safe via `WalletRegistry.registerWallet` (succeeds).
2. Alice calls `GnosisSafe.setGuard(address(SafeModeratorOverridable))`.
3. Safe v1.4.0+ executes `require(Guard(guard).supportsInterface(type(Guard).interfaceId), "GS300")`.
4. SafeModeratorOverridable does not implement IERC165, so the call reverts and the guard cannot be installed.
**How found:** Reading Safe's CHANGELOG for v1.4.0 revealed the new EIP-165 require in GuardManager.setGuard, then comparing against Brahma's SafeModeratorOverridable declaration which only implements IGuard.
**Insight:** When integrating with an external contract ecosystem, check that ecosystem's version changelogs for newly added interface requirements (like EIP-165 checks) that your own contracts must satisfy.

