Skip to content

Support EIP-1271 validation for SafeWebAuthnSharedSigner owners (enable delegate registration from passkey-only Safes) #2937

Description

Feature request

Problem

Safes that use the canonical SafeWebAuthnSharedSigner (0x94a4F6affBd8975951142c3999aEAB7ecee555c2, from safe-modules) as an owner — the standard gas-optimized passkey setup for ERC-4337 — cannot interact with the Transaction Service:

  • POST /api/v2/delegates/ rejects registrations where the delegator is the shared signer, and
  • proposing multisig transactions signed by it fails the same way,

because signature validation performs the EIP-1271 isValidSignature eth_call without a from address. The shared signer stores each Safe's P-256 public key in the Safe's storage and reads it back through msg.sender, so in a from-less call there is no configuration to find and validation always fails.

Request

When the delegator (or proposal sender) is an owner of the given Safe and provides a contract signature, perform the isValidSignature eth_call with from set to the Safe address. That makes msg.sender-dependent signers like SafeWebAuthnSharedSigner verifiable without changing anything else about the validation.

Support scoped to just the delegates endpoint would already unblock the main use case: a passkey-only Safe could authorize a delegate once, and all subsequent proposing happens through the delegate key. No Safe{Wallet} UI support for shared-signer passkeys is needed for this.

Current workarounds (both work, but are heavy for what they achieve):

  • deploy the credential's SafeWebAuthnSignerProxy via the factory and add it as an additional owner, solely so the service can verify a signature from the same underlying passkey (an extra owner and an on-chain transaction just for API access), or
  • have an EOA owner sign the delegate registration — not possible for passkey-only Safes.

Context: we operate ERC-4337 passkey Safes (shared-signer owner, threshold 1) and want to register a backend delegate so transactions can be queued to the Safe app for co-owners to confirm.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions