Skip to main content
Save a login once and every agent can use it. Skyvern fills the username, password and 2FA code into the page for you. The model that drives the browser gets placeholders, not your values. Skyvern swaps in the real value only when it types into the field. A typed value can still show up in later screenshots and page text, so turn on Mask Secrets in an agent’s settings to hide it there too. Saved passwords, card numbers and secrets are never shown again in the app or returned by the API.

Store a credential

1

Open Credentials

Click Credentials in the left sidebar. Its sub-items open the Passwords, Credit Cards, Secrets, 2FA and Magic Links tabs.Credentials in the sidebar with Passwords, Credit Cards, Secrets, 2FA and Magic Links
2

Click Add

Choose Password, Credit Card or Secret.Add menu with Password, Credit Card and Secret
3

Fill in the form and click Save

The credential is available to agents right away.
Credentials page with Folders and the Passwords, Credit Cards, Secrets, 2FA and Magic Links tabsPassword fields:
  • Name: a label you will recognize, such as “Vendor portal”.
  • Login Page URL: where the sign-in form lives.
  • Username or Email and Password.
  • Save browser session for future logins: Skyvern signs in once, checks it worked, and saves the signed-in browser so later runs skip the login form. Needs the Login Page URL. You can add Login instructions (optional), such as “Click the SSO button first”.
  • Two-Factor Authentication: see Two-factor authentication.
  • Use a consistent IP address: signs in from the same residential IP each time, which avoids extra 2FA prompts, captchas and lockouts caused by a new location.
Add Credential dialog for a passwordCredit Card fields: Name, Cardholder Name, Number, Brand, Expiration (MM/YY) and CVV. Billing Details (address, Billing Email, Billing Phone) are optional; fill them in when checkout pages ask for a billing address. After you save, only the last four digits are shown.Add Credential dialog for a credit card, with card fields and Billing DetailsSecret fields: Name, Secret Label (optional) and Secret Value. Use secrets for API keys and tokens.Group credentials with + New folder. Click a folder card to filter the list.To edit a credential, click the pencil icon on its row. Saved values are never shown again. The name, username and 2FA method stay filled in; leave the password blank to keep it, and re-enter the other secret values, such as the authenticator key or card number. The edit dialog also has Run workflows sequentially for this credential, which lets only one run use the account at a time.Click the trash icon to delete a credential. Deletion is permanent, and agents that use it fail until you pick another one.

Use a credential in an agent

  • Login block: in Studio, add a Login block and pick a saved login in its Credential field. Skyvern enters the username, password and 2FA code.
  • Credential input: to choose the account per run, open Inputs, click Add Input and set the value type to credential. Pick the credential type (Password, Secret or Credit Card) and the source (Skyvern, or a connected vault). Whoever runs the agent picks the credential from a dropdown.
  • Credit cards need no field mapping. A Browser Task or Browser Action block on a checkout page fills the card number, name, expiration and CVV from the credential input.
  • Secrets go where a block takes text, such as an HTTP Request or Code block. Reference the input’s key: {{ my_secret.secret_value }}.
See the blocks reference for every Login block setting.

Use your own vault

If your team already keeps logins in a vault, connect it and Skyvern reads items at run time. On Integrations, connect one of the Credentials tiles: Then add a credential input and choose the vault as its source. The input asks for the item to use: a Bitwarden collection ID and item ID (or a URL parameter key to match by site), a 1Password vault ID and item ID, or an Azure vault name with the names of the secrets that hold the username, password and optional authenticator key. Items from connected 1Password and Bitwarden vaults also show on the Passwords tab.
1Password does not expose a card’s native expiration field. For credit cards stored in 1Password, add a text field named Expire Date, Expiry Date or Expiration Date in MM/YYYY or MM/YY format.
With a custom service connected, the Add dialog shows Store in Custom Credential Service. Skyvern then calls your API with Authorization: Bearer <API Token>:Self-hosted Skyvern reads the same settings from CREDENTIAL_VAULT_TYPE=custom, CUSTOM_CREDENTIAL_API_BASE_URL and CUSTOM_CREDENTIAL_API_TOKEN. The other vaults (CREDENTIAL_VAULT_TYPE values skyvern, bitwarden, azure_vault, gcp), including a self-hosted Bitwarden or Vaultwarden setup, are in the configuration reference.

Two-factor authentication

Set 2FA up on the password credential itself: expand Two-Factor Authentication in the Add or Edit dialog and pick how the site sends codes. Two-Factor Authentication options: Authenticator App, Email, Text Message and Passkey (Enterprise)

Authenticator app

  1. Choose Authenticator App.
  2. Pick the app the site uses: Google Authenticator, Microsoft Authenticator, Okta Verify or Oracle Mobile Authenticator. Google Authenticator covers any standard authenticator setup code.
  3. Paste the key into Authenticator Key, or click Scan QR and upload a screenshot of the site’s QR code.
  4. Click Save.
Authenticator App selected with Google Authenticator, the Authenticator Key field and the Scan QR button
Finding the key. When you turn on 2FA, most sites show a QR code with a “Can’t scan?” or “Enter manually” link that reveals the key, a string like JBSWY3DPEHPK3PXP. Password managers that store 2FA keys show it on the login item. If 2FA is already on and you never saved the key, turn 2FA off and on again on the site to get a new one.

Email and text message codes

  1. Choose Email or Text Message.
  2. Fill in the identifier: the address or phone number that receives codes. For Email, the TOTP Identifier (Username or Email) field lists your connected inboxes under Select a connected account. Click the code icon above it (Enter manually) to type an address instead. For Text Message, enter the number in TOTP Identifier (Phone).
  3. Click Save.
Email selected with the TOTP Identifier field showing Select a connected account When a run reaches the code prompt, Skyvern waits for a code sent to that identifier. In code, pass the same value as totp_identifier to login, run_task or run_workflow. In Studio, blocks that sign in have a 2FA Identifier field.

Connect an inbox

On the 2FA or Magic Links tab, click Connect an inbox. It opens Integrations, where you connect Gmail or Outlook. Skyvern then finds verification codes and magic links in that inbox on its own, with no forwarding.

Push a code

Without a connected inbox, deliver email and SMS codes yourself.
While a run waits for a code, its page shows a “needs 2FA” banner with a countdown. Click Enter Code and paste the message.Or open the 2FA tab on the Credentials page and use Push a 2FA Code:
  • Identifier: the email or phone that received the code.
  • Verification content: the whole message, or just the code. Skyvern extracts the code.
  • OTP Type: Numeric code, or Magic link for a one-time sign-in link.
  • Add optional metadata: when several runs wait on the same identifier, add the Agent run ID, Agent ID or Task ID to target one.
Click Send 2FA Code (it reads Send Magic Link for magic links). The table below the form lists every code received, with filters for identifier, OTP type and count.2FA tab with the Automatic 2FA from your inbox card and the Push a 2FA Code form

Let Skyvern fetch codes from your endpoint

If codes land in a system you control, give Skyvern a URL to ask instead. Skyvern sends a POST with task_id, plus workflow_run_id and workflow_permanent_id for agent runs, signed with the x-skyvern-signature header (see Going to production to verify it). Answer with HTTP 200 and JSON:
Until you have a code, answer 200 with {"verification_code": ""}. Any other status, or a body that isn’t a JSON object, counts as an error. If the wait runs out, the run fails with OTP_TIMEOUT and its failure reason lists the status codes your endpoint returned. Where to set the URL:
  • One-off login or task: pass totp_url.
  • Agent: set 2FA Verification URL on the block that signs in. The run-level totp_url does not fill in a block whose field is empty. For a URL that changes per run, add an input such as totp_url, set the block field to {{ totp_url }} and pass the URL in parameters.
Some sites email a one-time sign-in link instead of a code. With a connected inbox, Skyvern finds and opens the link. Otherwise paste the message into Push a Magic Link on the Magic Links tab, or push it with send_totp_code. Skyvern attaches the link to the waiting run and opens it.

Passkey

Passkey appears as a 2FA option marked Enterprise. See https://www.skyvern.com/pricing for plans. Passkey credentials can’t use Save browser session for future logins.

Timing

  • Skyvern checks for pushed or fetched codes every 10 seconds, for up to 15 minutes.
  • A pushed code stays usable for 10 minutes. The site’s own code may expire sooner.
  • Authenticator codes rotate every 30 seconds. When a code is split across several boxes (one digit per box), or the run uses the skyvern-3.0 engine, Skyvern waits for a fresh code if fewer than 20 seconds remain, so the code doesn’t expire mid-entry.

Troubleshoot logins

For problems that aren’t specific to credentials, see Troubleshooting.

Next