I’m building a Web3 app that uses eth_signTypedData_v4 (EIP-712) for wallet ownership verification. MetaMask extension works perfectly in Chrome, but in Brave I get:
Error 4100: The requested account and/or method has not been authorized by the user.
What happens:
- eth_requestAccounts →
works, MetaMask popup appears, account returned - eth_signTypedData_v4 →
4100 in ~15ms (no MetaMask popup ever shown) - Same behavior with personal_sign
- wallet_revokePermissions before connect makes it worse (signing never recovers)
What I tried:
- brave://settings/web3 → “Extensions (no fallback)” → still 4100
- brave://settings/web3 → “None” → still 4100 until full browser restart
- Private window, cleared cache — no change without restart
- Same code, same MetaMask, Chrome → works instantly

Key finding: Changing the wallet setting requires a full Brave restart (all windows closed) to take effect. Page refresh is not enough. After restart with “None” → everything works - once.
Is this expected behavior? It seems like Brave’s crypto middleware stays active in the browser process until restart, even after changing settings. This is confusing for users who change the setting and expect it to work immediately.
Brave version: latest (Feb 2026), MetaMask v12.x