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

Approve a reveal

The console page where a person approves or denies a coding agent's request to open one value, within ten minutes.

Path: /approvals/[id]. An agent running penv reveal KEY gets an approval id and exit code 4. We never put the value in that answer.

A harness running penv hook (Claude Code, Cursor, Gemini, Cline, Windsurf) lets penv reveal through to this page from 1.0.0-beta.4. In 1.0.0-beta.3 the hook refuses penv reveal before it runs, so no request reaches this page from there.

Flow: keep agents out of .env.

/approvals lists open change requests and elevated access.

Fields

FieldContent
KeyPath and name requested. Never a value
Project and environmentWhere the key lives
Who askedThe person whose session the agent runs under
Device, harness, sessionThe machine, the tool driving it, the session id

Harness and session are CLI-sent labels, truncated at 128 characters; they authorize nothing and trace which keys one session touched. An answered, expired or foreign-workspace request reads "No such request", so the page never confirms that an approval exists.

Expiry and single use

RuleBehavior
Window10 minutes from filing, for the whole exchange; an uncollected approval expires too
SpendOnce. We claim the row before decryption, so two redemptions cannot both open the value
Re-checkWe read your permission and step-up at the moment you answer

Refusal codes the agent receives: approval codes.

Read the key name and the session before you approve. Your approval opens one specific value to whatever drives that session.

Required permissions

Slugs: roles and permissions. Step-up: security and MFA. We check the permission before step-up.

ActionNeedsStep-upRecorded as
Open the pagesecret:reveal at that environmentNonot recorded
Approvesecret:reveal at that environmentYessecret.reveal_approved
Denysecret:reveal at that environmentYessecret.reveal_denied

Audit entries

EntryActorMeaning
secret.reveal_requestedRequesterThe agent's ask
secret.reveal_approved or secret.reveal_deniedApproverYour answer
secret.readRequesterThe read, in the name of the credential that opened it
secret.revealApprover, beside the sessionWho allowed it
secret.reveal_refusedRequesterA turned-away redemption, with its state: pending, denied, expired or already spent

We settle expired requests without an entry; the secret.reveal_refused a late agent receives is the record.

Next: workspace name and region.