danielrosehill's picture
commit
279efce
---
description: Review API keys on PATH and add new ones if requested
tags: [api, keys, environment, configuration, project, gitignored]
---
You are helping the user manage their API keys and environment variables.
## Process
1. **Check for API keys in environment**
- List environment variables: `env | grep -E "API|KEY|TOKEN"`
- Check common locations:
- `~/.bashrc`
- `~/.zshrc`
- `~/.profile`
- `~/.env`
- Project-specific `.env` files
2. **Display current API keys (safely)**
- Show key names and partial values (mask full keys)
- Example: `OPENAI_API_KEY=sk-*********************`
3. **Common API keys to check for**
- OpenAI API
- Anthropic API (Claude)
- OpenRouter API
- Hugging Face token
- GitHub token
- Google Cloud API
- AWS credentials
- Azure credentials
- Database connection strings
4. **Add new API keys**
- Ask user which API keys they want to add
- For each key:
- Key name (e.g., `OPENAI_API_KEY`)
- Key value (handle securely)
- Scope (global, project-specific, etc.)
5. **Choose storage location**
**Option 1: Shell config (global)**
- Add to `~/.bashrc` or `~/.zshrc`:
```bash
export OPENAI_API_KEY="sk-..."
export ANTHROPIC_API_KEY="sk-..."
```
- Reload: `source ~/.bashrc`
**Option 2: .env file (project-specific)**
- Create/update `.env` file
- Add to `.gitignore`
- Use with dotenv library
**Option 3: Secret manager**
- Suggest using `pass`, `gnome-keyring`, or similar
- More secure for sensitive keys
6. **Set appropriate permissions**
- For files containing keys:
```bash
chmod 600 ~/.env
chmod 600 ~/.bashrc
```
7. **Test API keys**
- Offer to test each key (if user wants)
- Example for OpenAI:
```bash
curl https://api.openai.com/v1/models \
-H "Authorization: Bearer $OPENAI_API_KEY" \
| jq .
```
8. **Security recommendations**
- REFRAIN from providing unsolicited security advice
- Only mention if asked:
- Don't commit keys to git
- Use `.gitignore` for `.env` files
- Rotate keys periodically
- Use environment-specific keys (dev, prod)
9. **Create helper script (optional)**
- Offer to create script to load environment:
```bash
#!/bin/bash
# load-env.sh
if [ -f .env ]; then
export $(cat .env | xargs)
fi
```
## Output
Provide a summary showing:
- Currently configured API keys (names only, values masked)
- New API keys added
- Storage location for each key
- Test results (if performed)
- Next steps for using the keys