Unable to Log In — 2FA Loop (“requires more input” tKey error)

  • Describe your issue or question
    I can’t connect to my Web3Auth account. I’m using 2-factor authorization, but none of the available methods work. Passkey fails, the token code fails, and it always sends me back to the “Choose authentication method” screen. Logging in through Discord also doesn’t work. This happens on all my devices and browsers.

    Which platform or framework are you using?
    Web – browser environment (multiple browsers tested).

    Which Web3Auth / Embedded Wallet SDK (name & version)?
    Web3Auth + MetaMask Embedded Wallet (exact version unknown; using Slingshot DAO login flow).

    What is not working as expected?
    Authentication loop: every login attempt ends up back at the authentication-method selection screen.

    Code snippets
    Not applicable — the issue occurs inside the Web3Auth UI flow, not in custom code.

    Exact error and logs
    The browser console shows:

    Error: requires more input
        at p (index-DvKTgWOE.js:1:2004)
        at w.error (index-DvKTgWOE.js:1:2613)
    Caused by:
    Error: requires more input
        at Object.tryFinishTkeyReconstruction (tkey--40edOpW.js:8:69240)
        at async Jt.l (index-Dt0QB7tt.js:94:681)
    'tkeyinput v2: input passkey error'
    
    

    Package details
    Using Web3Auth / MetaMask Embedded Wallet through Slingshot DAO integration (exact versions not exposed to the user). Occurs in all major browsers.

Hi Filip — thanks for the clear report, and sorry you’re stuck in that 2FA loop. I pulled the key details so the support team can triage quickly, and I’ve included targeted troubleshooting steps and minimal follow-ups to help narrow the root cause.

Summary of what you reported

  • Tone: Reporting an issue (authentication error) — you want this fixed.
  • SDK details: MetaMask Embedded Wallets (via Web3Auth / Slingshot DAO integration)
  • SDK version: unknown (not exposed from your side)
  • Platform: Web — multiple browsers tested (happens on all devices/browsers you tried)
  • What’s failing: Web3Auth login with 2FA always returns to the “Choose authentication method” screen. Passkey, token (TOTP), and Discord login all fail.
  • Console error (copied from your report):
    Error: requires more input
    at p (index-DvKTgWOE.js:1:2004)
    at w.error (index-DvKTgWOE.js:1:2613)
    Caused by:
    Error: requires more input
    at Object.tryFinishTkeyReconstruction (tkey–40edOpW.js:8:69240)
    at async Jt.l (index-Dt0QB7tt.js:94:681)
    ‘tkeyinput v2: input passkey error’
  • Screenshot attached: seen in your post
  • Code snippets: N/A (this occurs inside Web3Auth UI flow)

What the error string likely means (short):

  • The tKey reconstruction step is failing with “requires more input”, which usually indicates the threshold key shares needed for reconstructing the tKey are incomplete or some required input (passkey/WebAuthn response, stored share, or third-party storage) is unavailable or blocked.

Suggested quick troubleshooting (in priority order)

  1. Browser storage / cross-site cookie blocking
    • Make sure your browser isn’t blocking third-party cookies or site data for web3auth / slingshot domains. tKey sometimes stores shares in different places; strict blocking or storage partitioning can prevent reconstruction.
    • Temporarily disable strict privacy/tracking settings or any extensions (adblockers, privacy) and retry.
  2. Passkey / WebAuthn availability
    • Check your browser/device passkeys (Settings → Manage Passkeys). Ensure the passkey the account expects exists and that the browser is allowed to use platform authenticator.
  3. TOTP time sync
    • If you use TOTP, verify device clock/timezone are correct (desynced time causes token rejects).
  4. Try a clean profile/incognito with extensions disabled
    • You said it happens across browsers — try a completely clean profile (no extensions) or a fresh device if possible to rule out local profile corruption.
  5. Try account creation / alternate account
    • If possible, try signing up with a fresh Web3Auth account to see whether new registration succeeds (helps determine whether this is account-specific vs integration-wide).
  6. Check pop-up / redirect blocking for Discord auth
    • OAuth flows can fail if pop-ups or redirects are blocked. Allow pop-ups for the Slingshot auth flow and retry.

Logs & artifacts that will help support (please attach if you can)

  • Full browser console log (copy-paste the entire stack for the tkey error and any preceding warnings/errors). The partial stack you gave is useful but full logs help.
  • A network HAR file for one failed login attempt (this shows requests/responses to Web3Auth/TKey endpoints). How to get it: open DevTools → Network → right-click → Save all as HAR. Attach the HAR.
  • Confirm whether you see any 3rd-party cookie / storage blocked warnings in the console.
  • If you can, get the integration’s Web3Auth / Embedded Wallet SDK version. If you don’t control the integration (Slingshot), please ask Slingshot to share the exact Web3Auth and Embedded Wallet SDK versions they used for their deployed flow.

Minimum follow-up questions from me (just these, to avoid spam):

  1. Can you attach the full console output and a HAR of one failed attempt? (sensitive data is fine to redact, but the HAR/console are most helpful)
  2. Which exact auth method do you first select when the loop happens? (passkey, TOTP, Discord — and whether the behavior is identical for all)
  3. If you can, can you confirm whether a brand-new Web3Auth signup (not your existing account) succeeds or fails? This tells us if the problem is account-specific.

Relevant docs and links

  • MetaMask Dev docs: https://docs.metamask.io
  • MetaMask Builder Hub: https://builder.metamask.io
    (If you need Web3Auth-specific docs on tKey or WebAuthn flows, the Web3Auth docs and tKey docs will also be helpful — if you’d like, I can add direct links.)

What I’ll do next

  • Once you attach the full console log + HAR and answer the 3 quick questions above, I’ll pass everything to the support engineers with this summarized issue (including that this happens on multiple browsers/devices and that the stack shows tkey reconstruction failure). They’ll triage whether it’s a Web3Auth-side tKey reconstruction bug, an integration issue on Slingshot, or a browser/storage restriction causing the loop.

Thanks again for the detailed initial report, Filip — you’ve already provided the most important clues. If you prefer, attach the logs here and I’ll add them to the support ticket for you.

Note: This response was generated by an AI bot and may require further verification. The MetaMask Community Team has tracked this issue and will be responding as soon as possible.

Additionally, we would recommend you to join our biweekly Office Hours to get this resolved even faster. MetaMask Developer Office Hours

Hey,
I tried all suggested troubleshooting tips. None of them works.

Regarding follow-up questions:

Ad1) Console.log:

inpage.js:1 MetaMask encountered an error setting the global Ethereum provider - this is likely due to another Ethereum wallet extension also setting the global Ethereum provider: TypeError: Cannot assign to read only property 'ethereum' of object '#<Window>'
    at a (inpage.js:1:142132)
    at r.initializeProvider (inpage.js:1:141903)
    at Object.<anonymous> (inpage.js:1:2308)
    at Object.<anonymous> (inpage.js:1:6316)
    at 2.../../shared/modules/provider-injection (inpage.js:1:6329)
    at i (inpage.js:1:254)
    at e (inpage.js:1:412)
    at inpage.js:1:429

1930-d657b8d1dbc677de.js:1  POST https://api.segment.io/v1/i net::ERR_BLOCKED_BY_CLIENT

1930-d657b8d1dbc677de.js:1  POST https://api.segment.io/v1/i net::ERR_BLOCKED_BY_CLIENT

1930-d657b8d1dbc677de.js:1  POST https://api.segment.io/v1/i net::ERR_BLOCKED_BY_CLIENT

1930-d657b8d1dbc677de.js:1  POST https://api.segment.io/v1/t net::ERR_BLOCKED_BY_CLIENT

1930-d657b8d1dbc677de.js:1  POST https://api.segment.io/v1/t net::ERR_BLOCKED_BY_CLIENT

1930-d657b8d1dbc677de.js:1  POST https://api.segment.io/v1/t net::ERR_BLOCKED_BY_CLIENT

1930-d657b8d1dbc677de.js:1  POST https://api.segment.io/v1/t net::ERR_BLOCKED_BY_CLIENT

index-DtV-0gfW.js:5  POST https://o503538.ingest.sentry.io/api/4505759442534400/envelope/?sentry_vers…35bc597…&sentry_client=sentry.javascript.browser%2F9.12.0 net::ERR_BLOCKED_BY_CLIENT

index-bHZjvE8X.js:474  POST https://o503538.ingest.us.sentry.io/api/4506858564419584/envelope/?sentry_v…6953986…&sentry_client=sentry.javascript.vue%2F9.46.0 net::ERR_BLOCKED_BY_CLIENT

index-bHZjvE8X.js:5  POST https://api.segment.io/v1/i net::ERR_BLOCKED_BY_CLIENT

1930-d657b8d1dbc677de.js:1  POST https://api.segment.io/v1/i net::ERR_BLOCKED_BY_CLIENT

1930-d657b8d1dbc677de.js:1  POST https://api.segment.io/v1/t net::ERR_BLOCKED_BY_CLIENT

index-bHZjvE8X.js:5  POST https://api.segment.io/v1/i net::ERR_BLOCKED_BY_CLIENT

index-bHZjvE8X.js:5  POST https://api.segment.io/v1/i net::ERR_BLOCKED_BY_CLIENT

1930-d657b8d1dbc677de.js:1  POST https://api.segment.io/v1/t net::ERR_BLOCKED_BY_CLIENT

index-bHZjvE8X.js:5  POST https://api.segment.io/v1/i net::ERR_BLOCKED_BY_CLIENT

1930-d657b8d1dbc677de.js:1  POST https://api.segment.io/v1/t net::ERR_BLOCKED_BY_CLIENT

1930-d657b8d1dbc677de.js:1  POST https://api.segment.io/v1/t net::ERR_BLOCKED_BY_CLIENT

1930-d657b8d1dbc677de.js:1  POST https://api.segment.io/v1/i net::ERR_BLOCKED_BY_CLIENT

1930-d657b8d1dbc677de.js:1  POST https://api.segment.io/v1/t net::ERR_BLOCKED_BY_CLIENT

index-bHZjvE8X.js:5  POST https://api.segment.io/v1/i net::ERR_BLOCKED_BY_CLIENT

1930-d657b8d1dbc677de.js:1  POST https://api.segment.io/v1/t net::ERR_BLOCKED_BY_CLIENT

1930-d657b8d1dbc677de.js:1  POST https://api.segment.io/v1/t net::ERR_BLOCKED_BY_CLIENT

1930-d657b8d1dbc677de.js:1  POST https://api.segment.io/v1/i net::ERR_BLOCKED_BY_CLIENT

index-bHZjvE8X.js:5  POST https://api.segment.io/v1/i net::ERR_BLOCKED_BY_CLIENT

1930-d657b8d1dbc677de.js:1  POST https://api.segment.io/v1/t net::ERR_BLOCKED_BY_CLIENT

1930-d657b8d1dbc677de.js:1  POST https://api.segment.io/v1/t net::ERR_BLOCKED_BY_CLIENT

1930-d657b8d1dbc677de.js:1  POST https://api.segment.io/v1/i net::ERR_BLOCKED_BY_CLIENT

1930-d657b8d1dbc677de.js:1  POST https://api.segment.io/v1/t net::ERR_BLOCKED_BY_CLIENT

index-DtV-0gfW.js:4 Error: requires more input
    at p (index-DrgJ5zIa.js:1:1956)
    at v.error (index-DrgJ5zIa.js:1:2565)

Caused by: Error: requires more input
    at Object.tryFinishTkeyReconstruction (tkey-Bm4vn0El.js:8:59395)
    at async rr.l (index-BeEzRUHL.js:13:681)

'tkeyinput v2: input passkey error'

1930-d657b8d1dbc677de.js:1  POST https://api.segment.io/v1/m net::ERR_BLOCKED_BY_CLIENT

4165-7d7dab9a7a8f727d.js:1 Error sending segment performance metrics TypeError: Failed to fetch
    at o (1930-d657b8d1dbc677de.js:1:60183)
    at e.<anonymous> (1930-d657b8d1dbc677de.js:1:59251)
    at 1930-d657b8d1dbc677de.js:56:69691
    at Object.next (1930-d657b8d1dbc677de.js:56:69796)
    at 1930-d657b8d1dbc677de.js:56:68644
    at new Promise (<anonymous>)
    at h (1930-d657b8d1dbc677de.js:56:68393)
    at e.send (1930-d657b8d1dbc677de.js:1:59028)
    at e.<anonymous> (1930-d657b8d1dbc677de.js:1:58898)
    at 1930-d657b8d1dbc677de.js:56:69691

index-bHZjvE8X.js:5  POST https://api.segment.io/v1/i net::ERR_BLOCKED_BY_CLIENT

1930-d657b8d1dbc677de.js:1  POST https://api.segment.io/v1/t net::ERR_BLOCKED_BY_CLIENT

1930-d657b8d1dbc677de.js:1  POST https://api.segment.io/v1/i net::ERR_BLOCKED_BY_CLIENT

1930-d657b8d1dbc677de.js:1  POST https://api.segment.io/v1/t net::ERR_BLOCKED_BY_CLIENT

index-bHZjvE8X.js:5  POST https://api.segment.io/v1/i net::ERR_BLOCKED_BY_CLIENT



Network Data:
I can’t upload HAR file. This form will not allow me to do that. Is there another way?

Ad 2) Which exact auth method do you first select when the loop happens? (passkey, TOTP, Discord — and whether the behavior is identical for all)

First I use login via Discord which works. Then it asks me for 2FA because new device is detected. I have Passkey and Authenticator App connected. Both used to work. Now it’s looping. Passkey is looping without any indication. I tried the Authenticator App and if I add correct code, it will loop. If I add wrong one, it will say that code is invalid. So both methods acts the same. It seems like after “verification” something is happening after that is not working as it suppose to.

Ad 3) If you can, can you confirm whether a brand-new Web3Auth signup (not your existing account) succeeds or fails? This tells us if the problem is account-specific.
Yes, it’s account specific. I tried to create new account with Apple Sign-in and it’s working as it suppose.

I would like to also mention that it seems like this issue is related to this one Problem reconstructing key after upgrading to v10

Also, not sure if it’s related, but the issue started when I was traveling from Europe to South Africa.

Hi thanks for sharing let me check please