# Full Reference

All CLI commands on a single page.

Source: https://keyenv.dev/docs/cli/reference/

Quick reference for all KeyEnv CLI commands.

## Authentication

| Command | Description |
|---------|-------------|
| <code>keyenv login</code> | Authenticate with KeyEnv |
| <code>keyenv logout</code> | Clear stored credentials |
| <code>keyenv whoami</code> | Display current user |

## Projects

| Command | Description |
|---------|-------------|
| <code>keyenv init</code> | Initialize project in current directory |
| <code>keyenv projects</code> | List all projects |
| <code>keyenv switch &lt;project&gt;</code> | Switch to a different project |

## Secrets

| Command | Description |
|---------|-------------|
| <code>keyenv pull</code> | Pull secrets to .env file |
| <code>keyenv push</code> | Push .env secrets to server |
| <code>keyenv list</code> | List secret keys |
| <code>keyenv get &lt;key&gt;</code> | Get a secret value |
| <code>keyenv set &lt;key&gt; &lt;value&gt;</code> | Set a secret |
| <code>keyenv delete &lt;key&gt;</code> | Delete a secret |
| <code>keyenv export</code> | Export secrets to various formats |

## Export

Export secrets to various formats (dotenv, JSON).

| Command | Description |
|---------|-------------|
| <code>keyenv export</code> | Export secrets to stdout |
| <code>keyenv export -e &lt;env&gt;</code> | Export from specific environment |
| <code>keyenv export -f &lt;format&gt;</code> | Export in format (dotenv, json) |
| <code>keyenv export -o &lt;file&gt;</code> | Export to file |

### Options

| Option | Description |
|--------|-------------|
| <code>-e, --env &lt;ENV&gt;</code> | Environment to export from (default: development) |
| <code>-f, --format &lt;FORMAT&gt;</code> | Output format: dotenv, json (default: dotenv) |
| <code>-o, --output &lt;FILE&gt;</code> | Write output to file instead of stdout |

### Examples

```bash
# Export as dotenv to stdout
keyenv export

# Export production secrets as JSON
keyenv export -e production -f json

# Export to a file
keyenv export -o .env.local
```

## Workflow

| Command | Description |
|---------|-------------|
| <code>keyenv run -- &lt;cmd&gt;</code> | Run command with secrets |
| <code>keyenv diff</code> | Compare local and remote |
| <code>keyenv history &lt;key&gt;</code> | View secret history |

## Permissions

| Command | Description |
|---------|-------------|
| <code>keyenv permissions list</code> | List permissions for an environment |
| <code>keyenv permissions set &lt;email&gt; &lt;role&gt;</code> | Set a user's permission (none/read/write/admin) |
| <code>keyenv permissions delete &lt;email&gt;</code> | Remove a user's permission |
| <code>keyenv permissions my</code> | Show your permissions for all environments |

## Tokens

Manage service tokens for CI/CD and programmatic access.

| Command | Description |
|---------|-------------|
| <code>keyenv tokens list</code> | List all service tokens |
| <code>keyenv tokens create --name &lt;name&gt; --scope &lt;scope&gt;</code> | Create a new service token |
| <code>keyenv tokens revoke &lt;id&gt;</code> | Revoke a service token |
| <code>keyenv tokens rotate &lt;id&gt;</code> | Rotate a service token |

### Options

| Option | Commands | Description |
|--------|----------|-------------|
| <code>-n, --name &lt;NAME&gt;</code> | create | Token name |
| <code>-s, --scope &lt;SCOPE&gt;</code> | create | Token scope: read, write, admin (repeatable) |
| <code>-p, --project &lt;ID&gt;</code> | create | Project ID (defaults to current project) |
| <code>-e, --env &lt;ID&gt;</code> | create | Restrict to a specific environment ID |
| <code>--expires &lt;DAYS&gt;</code> | create | Token expiry in days (omit for never) |
| <code>-y, --yes</code> | revoke | Skip confirmation prompt |
| <code>--grace-period &lt;MINS&gt;</code> | rotate | Grace period in minutes for old token (default: 5, max: 60) |

### Examples

```bash
# List all tokens
keyenv tokens list

# Create a read-only token for CI
keyenv tokens create --name deploy-ci --scope read

# Create an admin token that expires in 90 days
keyenv tokens create --name admin-token --scope admin --expires 90

# Revoke a token
keyenv tokens revoke st_abc123

# Revoke without confirmation
keyenv tokens revoke st_abc123 --yes

# Rotate a token with 30-minute grace period
keyenv tokens rotate st_abc123 --grace-period 30
```

## Teams

Manage teams and team members.

| Command | Description |
|---------|-------------|
| <code>keyenv team list</code> | List your teams |
| <code>keyenv team create &lt;name&gt;</code> | Create a new team |
| <code>keyenv team show &lt;id&gt;</code> | Show team details and members |
| <code>keyenv team use &lt;id&gt;</code> | Set default team for current session |
| <code>keyenv team invite &lt;email&gt; [role] [--team &lt;team_id&gt;]</code> | Invite a member (default: member) |
| <code>keyenv team role &lt;team&gt; &lt;user&gt; &lt;role&gt;</code> | Update a member's role |
| <code>keyenv team remove &lt;team&gt; &lt;user&gt;</code> | Remove a member from a team |
| <code>keyenv team invitations &lt;team&gt;</code> | List pending invitations |
| <code>keyenv team revoke-invite &lt;team&gt; &lt;invitation&gt;</code> | Revoke a pending invitation |
| <code>keyenv team resend-invite &lt;team&gt; &lt;invitation&gt;</code> | Resend an invitation email |
| <code>keyenv team delete &lt;team&gt;</code> | Delete a team |
| <code>keyenv team audit &lt;team&gt;</code> | View team audit log |

### Options

| Option | Commands | Description |
|--------|----------|-------------|
| <code>role</code> | invite | Role for invited user: admin or member (default: member) |
| <code>-y, --yes</code> | remove, revoke-invite, delete | Skip confirmation prompt |

### Examples

```bash
# List all teams
keyenv team list

# Create a new team
keyenv team create "My Team"

# Show team details
keyenv team show team_abc123

# Set default team for the session
keyenv team use team_abc123

# Invite a member
keyenv team invite user@example.com member --team team_abc123

# Invite as admin
keyenv team invite user@example.com admin --team team_abc123

# Change a member's role
keyenv team role team_abc123 user_xyz admin

# Remove a member
keyenv team remove team_abc123 user_xyz

# List pending invitations
keyenv team invitations team_abc123

# Revoke a pending invitation
keyenv team revoke-invite team_abc123 inv_xyz

# Resend an invitation email
keyenv team resend-invite team_abc123 inv_xyz

# Delete a team (requires confirmation)
keyenv team delete team_abc123

# View audit log
keyenv team audit team_abc123
```

## Security

| Command | Description |
|---------|-------------|
| <code>keyenv scan</code> | Scan directory for hardcoded secrets |
| <code>keyenv scan &lt;path&gt;</code> | Scan specific path |
| <code>keyenv scan --severity &lt;level&gt;</code> | Filter by severity (critical, high, medium, low) |
| <code>keyenv scan --json</code> | Output findings as JSON |
| <code>keyenv scan --upload</code> | Upload scan results to KeyEnv for tracking |
| <code>keyenv scan --hook</code> | Install pre-commit hook |
| <code>keyenv scan --hook --remove</code> | Remove pre-commit hook |

## Update

Check for and install CLI updates.

| Command | Description |
|---------|-------------|
| <code>keyenv update check</code> | Check if a new version is available |
| <code>keyenv update install</code> | Download and install the latest version |

### Examples

```bash
# Check for updates
keyenv update check
# Current version: 0.5.0
# Latest version: 0.6.0
# Run 'keyenv update install' to update

# Install the latest version
keyenv update install
```

## Rotations

Manage automatic secret rotation configurations.

| Command | Description |
|---------|-------------|
| <code>keyenv rotations list</code> | List all rotation configurations |
| <code>keyenv rotations show &lt;id&gt;</code> | Show details of a rotation |
| <code>keyenv rotations trigger &lt;id&gt;</code> | Manually trigger a rotation |
| <code>keyenv rotations history &lt;id&gt;</code> | View rotation execution history |

### Options

| Option | Description |
|--------|-------------|
| <code>-e, --env &lt;ENV&gt;</code> | Environment (default: development) |

### Examples

```bash
# List all rotations
keyenv rotations list

# Show rotation details
keyenv rotations show rot_abc123

# Manually trigger a rotation
keyenv rotations trigger rot_abc123

# View rotation history
keyenv rotations history rot_abc123
```

## Shell Completions

| Command | Description |
|---------|-------------|
| <code>keyenv completions &lt;shell&gt;</code> | Generate shell completion script |

Supported shells: `bash`, `zsh`, `fish`, `powershell`, `elvish`

### Setup

**Bash** (add to `~/.bashrc`):
```bash
source <(keyenv completions bash)
```

**Zsh** (add to `~/.zshrc`):
```bash
# Option 1: Direct source
source <(keyenv completions zsh)

# Option 2: Save to fpath (faster startup)
keyenv completions zsh > ~/.zfunc/_keyenv
# Then ensure ~/.zfunc is in fpath and run: autoload -Uz compinit && compinit
```

**Fish** (run once):
```bash
keyenv completions fish > ~/.config/fish/completions/keyenv.fish
```

**PowerShell** (add to profile):
```powershell
keyenv completions powershell | Out-String | Invoke-Expression
```

## Global Options

| Option | Description |
|--------|-------------|
| <code>--json</code> | JSON output |
| <code>-q, --quiet</code> | Minimal output |
| <code>--no-color</code> | Disable colored output |
| <code>-v, --verbose</code> | Enable verbose output |
| <code>-h, --help</code> | Show help |
| <code>-V, --version</code> | Show version |

## Common Flags

| Flag | Commands | Description |
|------|----------|-------------|
| <code>-e, --env</code> | Most | Target environment |
| <code>-f, --force</code> | pull, push | Overwrite without asking |

## Environment Variables

| Variable | Description |
|----------|-------------|
| <code>KEYENV_TOKEN</code> | Service token for authentication |
| <code>KEYENV_API_URL</code> | Custom API server URL |

## Exit Codes

| Code | Meaning |
|------|---------|
| <code>0</code> | Success |
| <code>1</code> | General error |
| <code>2</code> | Authentication error |
| <code>3</code> | Not found |
