tscodex
← All tools

skey

Desktop app

Give Claude your API keys without putting them in the chat.

Platforms
macOS, Windows, Linux
Built with
TypeScript, Node
Price
Free
What it is

Working with an assistant on anything that needs a token runs into the same wall: it asks for the key, or it refuses the task. Pasting one solves the moment and creates a permanent problem — the value is now in a transcript, and rotating it is the only way back.

skey keeps keys in the operating system keychain and hands them to commands as environment variables. The assistant runs the command and sees the result; it never sees the value. If a key does leak into the output — an error message echoing a header, a debug dump — it is replaced with ***MASKED*** before it reaches the transcript.

What it does

The keychain your machine already has

Keychain on macOS, Credential Manager on Windows, Secret Service on Linux. No new store, no master password, no file holding your secrets in plaintext.

Passed to the command, not to the chat

skey run --env CF_API_TOKEN -- curl ... puts the value in the child process environment. The assistant writes the command and reads the output; the value is never part of either.

Masked on the way out

Output is filtered line by line for the value and its common encodings — base64, URL-encoded, JSON-escaped. A token echoed back by a failing API arrives as ***MASKED***.

Reading a value needs a real terminal

skey export refuses to run without a TTY. An assistant cannot retrieve a secret even if it decides to try, because the path is closed rather than discouraged.

A browser page for setting keys up

skey ui opens a local page listing what is stored, so keys can be added and removed without typing commands. It binds to localhost, requires a one-time token from the address bar, and never displays a stored value.

The assistant knows how to use it

The bundled Claude skill teaches the pattern: check what exists, ask the person to store what is missing, never request a value. Claude stops refusing work and stops asking for tokens.

Who it is for

Anyone who has pasted an API key into a chat window and regretted it — or been refused a task because the assistant had no safe way to get one.

Need something built on top of this?

We take on custom development and partnerships. Tell us what you have in mind.