Phantom hands every AI tool a worthless `phm_` token. The local proxy injects the real key at the network layer. Full access. Zero exposure.
Phantom hands every AI tool a worthless phm_ token. The local proxy injects the real key at the network layer. Full access. Zero exposure. Exposed over MCP by the phantom secrets mcp server, that capability becomes something an assistant can invoke while it works, not something you go and do afterwards.
Everything the assistant can do here goes through one of these:
Windows-on — ARM64 not yet packaged — x64 only. Tracker: #1Vault — phantom_list_secrets, phantom_status, phantom_init, phantom_add_secret_interactive, phantom_add_secret (deprecated; refuses plaintext)Local-to-cloud — phantom_wrap, phantom_unwrap, phantom_sync, phantom_cloud_push, phantom_cloud_pull, phantom_cloud_statusTeams — phantom_team_list, phantom_team_create, phantom_team_members, phantom_team_invite, phantom_team_key_publish, phantom_team_vault_pushPre — commit hook** -- Blocks commits containing unprotected secretsTamper — evident audit log** -- PHANTOM_AUDIT=1 writes vault events as JSONL to ~/.phantom/audit.log. Each entry is chained with HMAC-SHA256; phantom auditMulti — project scanner** -- phantom init --all protects every git repo with a .env under in one command (with --dry-run); --jobs N controlsCross — project copy** -- phantom copy shares secrets between project vaultsBuilt — in service routing** -- OpenAI, Anthropic, Stripe, Supabase, and custom services via .phantom.tomlChaCha20 — Poly1305** encryption for file vault and cloud sync, Argon2id key derivationZero — knowledge cloud** -- server stores only ciphertext; encryption key never leaves the clientCrate — RoleYou will need 4 environment variables: OPENAI_BASE_URL, PHANTOM_PROXY_TOKEN, OPENAI_API_KEY, STRIPE_KEY. The server will not start without them, which is usually why the tools fail to appear on a first run. Keep credentials in your client's env block or a secrets manager rather than in a file you might commit.
The server ships on npm as phantom-secrets, so your MCP client can launch it on demand — there is no separate build step. Add the server block to your client's configuration, restart it, and the tools register themselves.
This sits in the developer tooling group, where several servers overlap in what they claim to do but differ sharply once you actually set them up. Phantom Secrets's toolset — Windows-on, Vault, Local-to-cloud and 11 more — is a fair guide to whether it matches your workflow. It is maintained by ashlrai; worth a glance at recent repository activity before you build anything load-bearing on it.
We check each listing at SyncDev against the project's documentation before it goes live — if something here drifts out of date, it is a bug worth reporting.
| Tool | What it does |
|---|---|
| Windows-on | ARM64 not yet packaged — x64 only. Tracker: [#1](https://github.com/ashlrai/phantom-secrets/issues/1). |
| Vault | phantom_list_secrets, phantom_status, phantom_init, phantom_add_secret_interactive, phantom_add_secret (deprecated; refuses plaintext), phantom_remove_secret, phantom_rotate, phantom_copy_secret |
| Local-to-cloud | phantom_wrap, phantom_unwrap, phantom_sync, phantom_cloud_push, phantom_cloud_pull, phantom_cloud_status |
| Teams | phantom_team_list, phantom_team_create, phantom_team_members, phantom_team_invite, phantom_team_key_publish, phantom_team_vault_push, phantom_team_vault_pull |
| Pre | commit hook** -- Blocks commits containing unprotected secrets |
| Tamper | evident audit log** -- PHANTOM_AUDIT=1 writes vault events as JSONL to ~/.phantom/audit.log. Each entry is chained with HMAC-SHA256; phantom audit verify detects tampering. phantom audit show/tail/path for log access. |
| Multi | project scanner** -- phantom init --all <DIR> protects every git repo with a .env under <DIR> in one command (with --dry-run); --jobs N controls parallelism |
| Cross | project copy** -- phantom copy shares secrets between project vaults |
| Built | in service routing** -- OpenAI, Anthropic, Stripe, Supabase, and custom services via .phantom.toml |
| ChaCha20 | Poly1305** encryption for file vault and cloud sync, **Argon2id** key derivation |
| Zero | knowledge cloud** -- server stores only ciphertext; encryption key never leaves the client |
| Crate | Role |
| phantom-core | Config (.phantom.toml), .env parsing/rewriting, token generation, auth, cloud client |
| phantom-vault | VaultBackend trait: OS keychain + encrypted file fallback, ChaCha20-Poly1305 crypto |
{
"mcpServers": {
"phantom-secrets": {
"command": "npx",
"args": ["-y", "phantom-secrets"],
"env": {
"OPENAI_BASE_URL": "your-value",
"PHANTOM_PROXY_TOKEN": "your-value",
"OPENAI_API_KEY": "your-value",
"STRIPE_KEY": "your-value"
}
}
}
}Add to claude_desktop_config.json, then restart Claude Desktop.
| Variable | Description | Required |
|---|---|---|
| OPENAI_BASE_URL | Endpoint or connection string the server talks to. | Yes |
| PHANTOM_PROXY_TOKEN | Credential the server authenticates with. | Yes |
| OPENAI_API_KEY | Credential the server authenticates with. | Yes |
| STRIPE_KEY | Credential the server authenticates with. | Yes |
Kill hallucinated APIs — version-accurate, up-to-date library documentation injected straight into context.
Microsoft's official browser automation server — drive a real browser through the accessibility tree, no screenshots needed.
GitHub's official server — repos, issues, pull requests, Actions and code security, straight from your assistant.
Issue tracking at the speed of conversation — Linear's official hosted server with OAuth and zero install.
Local repository surgery — status, diffs, commits, branches and history for any repo on disk.
Timezone sanity for AI — current time anywhere and correct conversions, without the model doing date math.