Skip to main content

Overview

Secrets are encrypted environment variables for sensitive data like API keys, tokens, and credentials. Unlike plain environment variables, secrets:
  • Are encrypted at rest
  • Never appear in logs or error messages
  • Can only be set, not read via API
  • Are bound to your Worker at runtime

Creating Secrets

Interactive Mode

Create a secret with interactive prompt:
You’ll be prompted to enter the secret value (input is hidden):

From stdin

Pipe secret values from other commands:

Bulk Secret Upload

Upload multiple secrets at once:

JSON Format

Create secrets.json:
Then upload:

Environment File Format

Alternatively, use .env format:

From stdin

Bulk Upload Implementation

The bulk command validates and uploads secrets efficiently:

Listing Secrets

View all secrets for a Worker:

Output Formats

Pretty format (default):
JSON format:
Secret values cannot be retrieved via CLI or API. You can only see secret names, not their values.

Deleting Secrets

Remove a secret:
You’ll be asked to confirm:

Secrets with Versions

When using Worker versions, secrets require special handling to avoid accidental deployments.

Version Secret Commands

Use the version-specific commands:

Creating Version with Secret

When you add a secret using wrangler versions secret put, it:
1

Prompts for secret value

2

Creates new version

The command copies the latest version with the new secret:
3

Returns new version ID

Version Secret List

List secrets in currently deployed versions:
Output:
This shows:
  • Which secrets exist in each deployed version
  • Traffic percentage for each version
  • Secret name differences between versions

Latest Version Only

Shows secrets in the most recently uploaded version (even if not deployed).

Standard vs. Version Secrets

Standard Deployment Secrets

  • βœ… Simple single command
  • βœ… Immediate deployment
  • ❌ May trigger unwanted deployment
  • ❌ No gradual rollout
Use when: Using standard deployments without versions.

Version Deployment Secrets

  • βœ… No accidental deployment
  • βœ… Can test before deploying
  • βœ… Gradual rollout support
  • ❌ Two-step process
Use when: Using gradual rollouts with versions.

Secret Deployment Behavior

Standard Deployment

With standard deployments, wrangler secret put may trigger a deployment:
With standard deployments, adding a secret when the latest version isn’t deployed will fail. You must either:
  1. Deploy the latest version first, then add secrets
  2. Use wrangler versions secret put instead

Version Deployment

With version deployments:
  • Secrets create a new version
  • No automatic deployment
  • Explicit wrangler versions deploy required

Accessing Secrets in Code

Secrets are available as environment variables:

TypeScript Types

Define environment types:

Secret Inheritance

When uploading a new version, secrets are inherited from the previous version by default:
This means:
  • New versions automatically include existing secrets
  • You only need to update changed secrets
  • Deleted secrets require explicit removal

Secret Security

Best Practices

  1. Never commit secrets - Use .gitignore for secret files
  2. Rotate regularly - Update secrets periodically
  3. Use least privilege - Only grant necessary permissions
  4. Audit secret access - Monitor which Workers use which secrets
  5. Delete unused secrets - Remove secrets no longer needed

Secret Storage

Secrets are:
  • βœ… Encrypted at rest
  • βœ… Encrypted in transit
  • βœ… Never logged
  • βœ… Never returned by API
  • βœ… Isolated per Worker

What NOT to Use Secrets For

❌ Configuration values - Use environment variables instead ❌ Public API keys - Use plain environment variables ❌ Non-sensitive data - Use environment variables or KV ❌ Large data - Use KV, R2, or D1

Environment-Specific Secrets

For Workers with environments:
Each environment has isolated secrets.

Troubleshooting

Worker Not Found

If the Worker doesn’t exist:
Solution: The CLI will offer to create a draft Worker:

Latest Version Not Deployed

When using versions:
Solution: Use version-specific commands:

Bulk Upload Failures

If bulk upload fails:
Solution: Validate JSON format or use .env format instead.

Next Steps

Deploying

Deploy Workers with secrets

Versioning

Manage Worker versions