Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Collect sensitive values from users via secure local prompts, never in chat. Use when asking for API keys, tokens, passwords, or any secret that should remain hidden from logs.
| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-05 | ✗→✓ | ▲ Improved | 58% | 0% |
| case-01 | ✗→✓ | ▲ Improved | 108% | 0% |
| case-02 | ✗→✓ | ▲ Improved | 238% | 0% |
| case-10 | ✗→✓ | ▲ Improved | 82% | 0% |
| case-16 | ✗→✓ | ▲ Improved | 86% | 0% |
Use this skill when an AI agent needs a user to provide any sensitive or private value such as API keys, tokens, cookies, session IDs, passwords, app IDs, client secrets, or recovery codes.
Never ask the user to paste a secret into chat. Instead, open a visible local terminal or secure prompt window with clear labeling.
Default flow:
Read-Host -AsSecureString on Windows, or read -s in bash on Unix)..env file (excluded from version control)Never print the actual value.
When opening a local input window, make the purpose unambiguous. The user may see it out of context.
Title:
Secure Input - API_KEY_NAMEBody:
An AI assistant needs a sensitive value.
Label: API_KEY_NAME
Purpose: Authentication with service XYZ
Destination: Project .env and credential vault
Type or paste it here, not in the chat.
The value will not be printed or logged.Choose the narrowest, most durable storage that fits the use case:
| Use Case | Storage | Notes | |----------|---------|-------| | Project runtime secret | .env file + ignore in git | Simple, local, secure if .gitignore is enforced | | Long-lived credential | Credential manager (Bitwarden, 1Password, macOS Keychain, Windows Credential Manager, etc.) | Encrypted, shareable, centralized | | One-shot command/session secret | Process-local memory only | Discarded when process exits | | CI/CD pipeline secret | Platform secret store (GitHub Secrets, GitLab CI Variables, etc.) | Never in .env or repo files |
Do NOT store raw secrets in:
If a raw secret is accidentally exposed (pasted in chat, logged to file, stored in docs, etc.):
Does the user need to provide a new credential/secret?
├─ NO → use it from storage, don't ask
└─ YES
├─ Is this a one-shot test or demo? → local input (process memory only)
├─ Will it be reused across sessions? → local input + persistent storage
├─ Is it part of initial setup (e.g., first-time credential creation)?
├─ Can the service generate it and display it once? → user sees it in browser, AI collects via local input
├─ Can the user generate it offline? → user provides via local input
└─ Does it require user's real password or MFA? → acknowledge user must go to web UI first, then collect result via local input (not in chat)
└─ Could the user reasonably enter it via local prompt? (most API keys, auth tokens, recovery codes → YES)
→ Use secure local input. Never ask for chat entry.Purpose: User wants to configure a service (e.g., OpenAI, Stripe, etc.)
Flow:
1. Check: Does .env already have OPENAI_API_KEY? If yes, use it.
2. If not: Open a local prompt titled "Secure Input - OPENAI_API_KEY"
3. User pastes their key (masked).
4. Write to .env: OPENAI_API_KEY=<value>
5. Write to credential manager if long-term: item named "OpenAI API Key" with the value.
6. Print: "✓ API key configured. Using local environment variable OPENAI_API_KEY."
7. Do not print the key itself.Purpose: AI needs to access stored secrets (e.g., Bitwarden, 1Password) but the vault is locked.
Flow:
1. Open a secure prompt or unlock window (native to the credential manager).
2. Collect the master password or passphrase (masked).
3. Authenticate to the vault (process-local, no chat).
4. Proceed with downstream access.
5. Print: "✓ Vault unlocked. You have N credentials available."
6. Do not print the master password.Purpose: User needs to save a recovery code or MFA backup.
Flow:
1. Explain: "I can store your recovery code securely in your credential manager."
2. Open a local prompt titled "Secure Input - Recovery Code"
3. User pastes the code (masked in entry, but visible as bullets/dots).
4. Write to credential manager with a clear label (e.g., "Service XYZ Recovery Code - YYYY-MM-DD").
5. Print: "✓ Recovery code saved to your credential vault under 'Service XYZ Recovery Code'."
6. Do not print the code itself in chat or logs.Read-Host -AsSecureString) on Windows, read -s in bash on Unix/macOS, native prompts in applications.Other measured skills in the registry, with their headline benchmark lift.