Appearance
Operations Guide
Workflows for rotation, compliance, and operational tasks.
Secret Rotation
Why Rotate?
- Compromised credentials
- Employee departure
- Regular security hygiene
- Compliance requirements
Rotation via Dashboard
- Navigate to Secrets
- Select the project and environment
- Click the rotate icon next to the secret
- Either:
- Let varsafe auto-generate a new value
- Enter a new value manually
- Preview the change
- Confirm rotation
The old value is immediately invalid. Applications using varsafe run receive the new value on their next run.
Rotation via API
For programmatic rotation, use the API:
bash
curl -X POST "https://api.varsafe.dev/secrets/rotate" \
-H "Authorization: Bearer $VARSAFE_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{"secretId": "secret_xxx", "value": "new-value"}'Rotation Best Practices
Recommended rotation schedule
| Secret Type | Rotation Frequency |
|---|---|
| API keys | Every 90 days |
| Database passwords | Every 90 days |
| Encryption keys | Annually |
| After incident | Immediately |
Handling Running Applications
Applications using varsafe run receive fresh secrets on startup. For running applications:
- Stateless apps — Restart to pick up new secrets
- CI/CD — Each run gets fresh secrets automatically
Encryption Key Management
Environment Keypairs
Each environment has an encryption keypair (X25519) used to encrypt .env file exports. Private keys are KMS-encrypted at rest — they never exist in plaintext in the database.
Checking Key Status
In the dashboard, navigate to Encryption Keys to see keypair status for all environments. Look for exposed status, which means a removed team member previously accessed that environment's private key.
Rotating Keys
Rotate a keypair when:
- A team member with key access is removed
- Key exposure is suspected
- Regular security hygiene (see rotation schedule below)
Rotate from the dashboard under Encryption Keys. After rotation, existing encrypted .env files are automatically re-encrypted on next use with varsafe run --env-file.
Auto-Rotation on Member Removal
By default, varsafe automatically rotates keypairs when a team member is removed, for every environment whose private key they accessed. This is tracked via audit events.
To switch to manual rotation (team setting):
bash
# Via API
curl -X PATCH "https://api.varsafe.dev/teams/$TEAM_ID/settings" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"keyRotationOnMemberRemoval": "manual"}'Rotation schedule
| Key Type | Rotation Frequency |
|---|---|
| Environment keypairs | Auto on member removal, or 1 year |
| After key exposure | Immediately |
API Token Management
Creating Tokens
- Go to your team settings in the dashboard
- Navigate to API Tokens
- Click Create token
- Enter a descriptive name (e.g., "GitHub Actions - Production")
- Copy the token immediately
Token Rotation
Rotate tokens regularly for security:
- Click Rotate next to the token
- Copy the new token
- Update your CI/CD configuration
- The old token is immediately invalidated
Token Revocation
If a token is compromised
- Click Revoke immediately
- Create a new token
- Update your configurations
- Review audit logs for unauthorized access
Environment Rollback
When to Rollback
- Accidental secret deletion
- Bad configuration deployed
- Need to restore previous state
How to Rollback
- Navigate to Secrets in the dashboard
- Select project and environment
- Click History
- Click Rollback next to the target operation
- Review the preview:
- Secrets to delete
- Secrets to restore
- Secrets to revert
- Confirm rollback
What Rollback Does
Rollback restores the environment to its state before the selected operation:
- Created secrets are deleted
- Deleted secrets are restored
- Updated secrets are reverted to previous versions
Compliance Exports
SOC 2 Type II
Export audit trail for SOC 2 audits:
- Navigate to Audit Log
- Set date range (audit period)
- Click Export → SOC 2
- Download JSON file
The export includes:
- All security-relevant events
- User access patterns
- Authentication events
- Secret access logs
GDPR Article 30
Export processing activities record:
- Navigate to Audit Log
- Click Export → GDPR
- Download JSON file
The export includes:
- Data processing activities
- Data subjects affected
- Legal basis for processing
- Retention periods
HIPAA
Export access controls audit:
- Navigate to Audit Log
- Click Export → HIPAA
- Download JSON file
The export includes:
- PHI access events
- User authentication events
- Access control decisions
CSV Export
For general analysis:
- Navigate to Audit Log
- Apply any filters needed
- Click Export CSV
Access Reviews
Quarterly Access Review
List team members:
- Dashboard → Teams → Expand each team
- Note members and their roles
Review for:
- Departed employees (should be removed)
- Role appropriateness (least privilege)
- Inactive accounts
Take action:
- Remove departed members
- Downgrade excessive roles
- Document review completion
Checking API Tokens
- Go to team settings → API Tokens
- Review each token:
- Is it still needed?
- Who created it?
- When was it last used?
- Revoke unused tokens
Audit Log Management
Retention
| Plan | Retention |
|---|---|
| Developer | 7 days |
| Team | 90 days |
TIP
For longer retention, export audit logs regularly and store in your compliance archive.
Alert-worthy Events
Monitor your audit logs for these events
| Event | Concern |
|---|---|
Multiple login_failed | Brute force attempt |
secret.accessed (production) | Verify authorized access |
member_invited (admin role) | Privilege escalation |
2fa_disabled | Security downgrade |
| Unfamiliar IP addresses | Unauthorized access |
Incident Response
Compromised Secret
Immediate actions required
- Rotate immediately — Dashboard → Secrets → Rotate, or via API for automation
- Review audit logs — Who had access? When? From what IP addresses?
- Assess impact — What systems use this secret? Was there unauthorized access?
- Document incident — Timeline, actions taken, lessons learned
Compromised Account
Immediate actions required
- Revoke sessions immediately — Profile → Security → Revoke all sessions
- Reset password — Or require passkey-only authentication
- Review audit logs — What did the account access? Were any secrets exported?
- Rotate affected secrets — Assume compromise, rotate all secrets the account had access to
- Report to team — Notify security team, document for compliance
Compromised API Token
Immediate actions required
- Revoke immediately — Team settings → API Tokens → Revoke
- Create new token — With fresh credentials
- Update configurations — CI/CD systems, automated scripts
- Review token usage — Check audit logs for unauthorized access
Troubleshooting
"Authentication required"
bash
varsafe login"Permission denied"
Check:
- Team membership exists
- Role permits the action
- Environment is not protected (for members)
"Project not found"
Either:
- Create the project in dashboard
- Use
varsafe useto set context - Specify with
-pflag
"Rate limited"
Wait and retry. If persistent:
- Check for automation running too frequently
- Contact support for limit increase