Penv Cloud
Start free
Docs
Referencesince cloud@2026-09-10

Security and two-factor

Console reference for personal sign-in credentials, step-up confirmation, and the workspace-wide two-factor requirement.

Path: Settings > Security

TabRouteWhat it holds
Sign-in/settings/securityAuthenticator, passkeys, linked accounts
Recovery/settings/security?tab=recoveryRecovery codes, recovery email
CLI sessions/settings/security?tab=sessionsTerminals signed in with penv login
Workspace/settings/security/workspaceThe two-factor requirement and the enrollment roster

Only an owner sets the workspace requirement.

Signing in

Once you enroll an authenticator app or a passkey, every sign-in asks for it: a password, a Google, GitHub or Microsoft click, and single sign-on all stop at Confirm it's you until you enter a code from your app, use a passkey, or enter a recovery code. Signing in with a passkey is both steps at once.

Session ruleValue
IdleWe sign you out after 8 hours without a request
Longest7 days from sign-in
Adding a way inAdding an authenticator, a passkey or a linked account asks for your current factor, or, if you have none, a sign-in from the last 10 minutes
After a changeEvery change to your sign-in methods signs out your other sessions, and we email your sign-in address

Step-up

We ask for step-up ("Confirm it is you") before a sensitive action: writing, deleting or revealing a value, removing someone, minting a machine credential, and the other actions each page's table marks. With a factor enrolled, you answer with it. Without one, you confirm your password, or sign in again if your account has no password.

Some actions need two-factor authentication and a fresh step-up: inviting a member, changing a member's role or granting one, creating or editing a role, exporting values (to a file or an integration), changing single sign-on or directory sync, and lowering a protection (turning off write-only, require approval or the two-factor requirement, stopping the audit stream). Without a factor, we refuse these and tell you to set one up first.

RuleValue
Freshness window15 minutes, with no repeat prompt inside it
You have no factorSigning in counts for 15 minutes; after that we ask for your password
Needs two-factorRefused until you enroll an authenticator or a passkey
OrderWe check the permission first; without it we refuse you, not challenge you

Personal credentials

CardActions
AuthenticatorEnroll a code-generating app, or replace the current one
PasskeysAdd, rename, remove. Each passkey signs in and answers step-up
Recovery codesRegenerate the one-time codes. Shown once a factor exists
Recovery emailAdd a second address, verify, remove, or promote it to the sign-in address
TerminalsEvery terminal signed in to your account, each with a sign-out button
Sign out everywhereEnds every other browser session and every terminal. This browser stays signed in
Linked accountsLink or unlink Google, GitHub and Microsoft sign-in

A terminal signed in with penv login lasts 30 days from last use, and never more than 90 days from sign-in. Signing it out here equals penv logout on that terminal. A password reset, a new sign-in address, replacing your authenticator, removing a passkey or linked account, and Sign out everywhere sign every terminal out too.

The recovery email removal link we send lasts 30 days and needs no session, so you can cut off an address its owner lost.

Workspace two-factor requirement

As an owner, you can require a second factor for every member.

StageWhat happens
OnA grace window starts, with a deadline banner until everybody enrolls
After the deadlineWe hold a member with no factor at /mfa until they add one. Their terminals cannot reach the workspace until they add one and run penv login again
Change the windowYou can't edit it: turn the requirement off and on again

Holders of member:read see how many members are enrolled and the roster: each member's factors (authenticator app, passkey) and status, members without a factor first.

Required permissions

Full matrix: Roles and permissions.

ActionRequiresStep-upAudit entry
Open the pageorg:readNonone
Enroll an authenticatorSigned-in session from the last 10 minutesNomember.mfa_enrolled
Replace an authenticatorSigned-in sessionYesmember.mfa_enrolled
Add or remove a passkeySigned-in sessionYesnot in the action filter
Rename a passkeySigned-in sessionNonot in the action filter
Regenerate recovery codesSigned-in sessionYesnot in the action filter
Add, remove or promote a recovery emailSigned-in sessionYesnot in the action filter
Sign a terminal outSigned-in sessionYesdevice.revoked
Sign out everywhereSigned-in sessionYesdevice.revoked
Unlink a social accountSigned-in sessionYesnot in the action filter
See the enrollment rostermember:readNonone
Turn the requirement onOwnerTwo-factor and freshorg.mfa_required
Turn the requirement offOwnerTwo-factor and freshorg.mfa_requirement_lifted

Each answered challenge records member.step_up_verified, naming who confirmed and when.

Next: Encryption and BYOK.