Leave penv
Pull each environment into plain value files, decrypt any encrypted values, remove penv's files and credential, then delete your workspace.
Value files are the interchange format. To leave, run one penv pull per environment, decrypt, then remove penv's files and your workspace.
Pull the values
penv pull --env development # writes .env
penv pull --env production # writes .env.production
penv decrypt # only if [local] encrypt is onpull writes development to .env and every other environment to .env.<env>, readable by you only, and adds .env, .env.* and !.env.schema to .gitignore when absent.
| Case | Behaviour |
|---|---|
[local] encrypt is on | Sensitive values are written as enc:v1:... under a key in your OS keychain. Run penv decrypt before you uninstall, or the files stay unreadable |
| A value with no portable spelling | Left out, named with the reason; the rest of the pull continues. The value stays with us until you delete the workspace |
| A key with no value yet | Not written; penv names it |
| An agent session | Exit 2 (agent_session), for pull and decrypt. Pass --i-am-human to pull yourself. To run a command instead, penv run writes no values |
Codes: errors.
Remove penv from your repository
| File | Path | Effect of removal |
|---|---|---|
| Schema | .env.schema | No validation before a process starts |
| Settings | .penv/config.toml, .penv/<name>.tmpl, .penv/<env>.bundle | Typed files are no longer regenerated; bundles no longer read |
| Generated typed file | The target's output path | Your code loses the typed object. Keep or replace it |
| Harness rules | .claude/, .codex/, .cursor/ and the rest | Your coding agent can read .env again |
penv merges its harness rules into existing files. Remove the lines it added: deny entries naming .env and .env.*, and hooks that run penv hook <harness>.
Remove the credential and binary
penv logout
rm -rf ~/.penv # Windows: %USERPROFILE%\.penvpenv logout asks us to revoke the stored credential, removes it from your OS keychain, and drops the encrypted cache sealed against it. ~/.penv holds the binary (~/.penv/bin unless you set PENV_INSTALL_DIR) and any user-level target folders.
Delete the workspace
Settings then Danger Zone. Gates, the 30-day soft-delete window and the support-only restore: danger zone.
Access ends for everyone when you confirm the delete. Pull every environment first: after that, a value you did not pull is a support request, not a command.
Procedure
Run penv pull --env <env> for every environment, then penv decrypt if [local] encrypt is on.
Open each file and confirm every expected key is present.
Cancel a live subscription under Settings then Billing. A live subscription blocks deletion; cancellation takes effect at the end of the paid period.
Delete .env.schema and .penv/, and remove penv's lines from your harness configs.
Run penv logout, then remove ~/.penv.
Delete the workspace under Settings then Danger Zone, typing its name.