v0.5.1 — Security audit (F1–F10) + vault hardening + landing rebuild
Highlights
This is a security-hardening release. We ran a full security audit between v0.5.0 and this release; ten findings (F1–F10) are addressed below. Plus a meaningful refactor pass and a complete rebuild of phm.dev.
No breaking changes. Existing projects keep working —
npx phantom-secrets@latestorcargo install phantomand you're current.
Security audit (F1–F10)
| # | Area | Fix | PR |
|---|---|---|---|
| F1 | npm wrapper | Verify release-binary SHA-256 before extracting (no more silent supply-chain risk) | #24 |
| F2 | MCP | Destructive vault tools now require confirm: true |
#25 |
| F3 | MCP | Hardened phantom_copy_secret against .. and unresolved targets |
#28 |
| F4 | core | .env rewrites are now atomic — no half-written files on crash |
#27 |
| F5 | core | Enforce HTTPS on PHANTOM_API_URL; reject host-confusion shapes |
#29 |
| F6 | proxy | Constant-time compare for the proxy auth token | #30 |
| F7 | vault | Zeroize plaintext JSON in FileVault::save/load |
#31 |
| F8 | CLI | Write .phantom.pid with mode 0o600 from the first byte |
#32 |
| F10 | CI | Pin third-party Actions to commit SHAs; scope GITHUB_TOKEN per job |
#33 |
Plus: closed remaining zeroize gaps on early-exit paths in cloud push/pull, and the VaultBackend::retrieve trait now returns Zeroizing<String> so callers can't accidentally leak plaintext to a String on the heap.
What's new
- 17 MCP tools (was 10): added
phantom_doctor,phantom_why,phantom_wrap,phantom_unwrap,phantom_check,phantom_env,phantom_sync. Read-only tools are safe to call freely; mutating tools all gate onconfirm: true. - 27 CLI commands total — see the Command Reference in the README.
- 103 tests across the workspace, up from 69 in v0.5.0. New suites cover CLI integration (
init,add/remove,cloud), HTTPS-enforcement, atomic-write atomicity, and constant-time auth. - Refactor pass:
init.rs(was 778 lines) split into focused submodules (config,docs,env,hooks,prompts,vault); MCP tool params extracted into a dedicated module.
phm.dev rebuild
The marketing site got a complete rebuild:
- New scroll-driven hero with a 35-service brand-logo marquee (Claude, Cursor, Windsurf, OpenAI, Stripe, Postgres, …)
- New Comparison section: Phantom vs raw
.env/ Doppler / 1Password CLI / Infisical / AWS Secrets Manager - New visible FAQ section (security-buyer questions)
- Restyled
/pricingwith full design-system alignment - Comprehensive AI-crawl story:
llms.txt,/.well-known/ai-plugin.json, JSON-LD schemas (SoftwareApplication, Organization, HowTo, FAQPage), expanded sitemap, AI-friendly robots
Repo polish
- README hero rebuild with banner, badges, "Why Phantom?" framing, star-history chart, sponsor button
- Issue templates (bug, feature) and PR template now live
CODE_OF_CONDUCT.md(Contributor Covenant 2.1)- All internal/external docs aligned to v0.5.1, 17 tools, 27 commands, 103 tests
Install
# npm (recommended)
npx phantom-secrets@0.5.1 init
# cargo
cargo install phantom
# Homebrew
brew tap ashlrai/phantom && brew install phantom
# MCP server (Claude Code, Cursor, Windsurf, Codex)
claude mcp add phantom-secrets-mcp -- npx phantom-secrets-mcpPre-built binaries for macOS (Intel + Apple Silicon), Linux (x86_64 + aarch64), and Windows (x86_64) are attached below. SHA-256 checksums are in SHA256SUMS.
Verifying the binaries
sha256sum -c SHA256SUMSFull changelog
What's Changed
- fix(mcp): allow dead_code on tool_router by @MasonStation in #20
- v0.5.1: Windows polish (shell syntax, README) by @MasonStation in #22
- fix(cli): silence dead_code for ShellSyntax::Cmd on non-Windows by @MasonStation in #23
- fix(npm): verify release binary SHA-256 before extracting (audit F1) by @MasonStation in #24
- fix(mcp): gate destructive vault tools behind confirm:true (audit F2) by @MasonStation in #25
- fix(core): write .env phantomize atomically (audit F4) by @MasonStation in #27
- fix(mcp): harden phantom_copy_secret target-dir (audit F3) by @MasonStation in #28
- fix(core): enforce HTTPS on PHANTOM_API_URL (audit F5) by @MasonStation in #29
- fix(proxy): constant-time compare for proxy auth token (audit F6) by @MasonStation in #30
- fix(vault): zeroize plaintext JSON in FileVault (audit F7) by @MasonStation in #31
- fix(cli): write .phantom.pid with 0o600 from creation (audit F8) by @MasonStation in #32
- ci: pin third-party Actions to commit SHAs + scope GITHUB_TOKEN (audit F10) by @MasonStation in #33
Full Changelog: v0.5.0...v0.5.1