Safehold

io.github.Spacetime-Technology由 GitHub 帳號 Spacetime-Technology 發布v1.2.0更新於 Oct 24, 2026

Local, encrypted MCP vault for passports, IDs, visas and photos. You control access.

概覽

AI 產生的概覽

本機加密保險庫,讓助理在逐欄位取得你同意後讀取護照號碼等身分證件欄位。

可以做什麼
Safehold 將護照、身分證、駕照、簽證與照片以個別加密的檔案形式存放在你的機器上。工具讓助理新增、列出、更新與刪除證件,並讀取護照、身分證、駕照、簽證、照片或任何證件類型中的指定欄位。每次讀取都帶有用途參數,會在徵求同意時顯示給你,所有存取都會寫入加密的存取記錄,之後可以查看。內建提示詞涵蓋證件建檔、行前檢查、最小化分享與到期稽核。
適用情境
當你希望助理用你自己的證件填寫表單、辦理登機或完成身分驗證,又不想把護照號碼貼進對話,也不想把整個保險庫交給助理時,適合安裝。它適合需要逐欄位授權與存取紀錄的使用者,而不是通用密碼管理器或單純的 JSON 檔案。
執行需求
透過 npm 套件 safehold 以 stdio MCP 伺服器在本機執行,需要 Node.js 20 或更新版本,沒有建置步驟。僅支援桌面用戶端,需在各用戶端的 MCP 設定檔中設定。未宣告帳號、API 金鑰或環境變數;證件與金鑰保存在本機 safehold 目錄下。
安裝前請注意
它保存高度敏感的身分資料:證件由本機主金鑰檔案加密,因此保護好該金鑰與備份很重要。讀取工具會把真實欄位值交給呼叫的助理,新增、更新與刪除工具會修改或永久刪除保險庫內容。存取會記錄在本機,但助理收到的內容仍可能進入對話歷史或服務商日誌。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Safehold,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。

其他 MCP 客戶端

參照 儲存庫 中的啟動說明。

README

Safehold

[npm version] [node] [MCP Registry] [License: MIT]

Your identity documents, on your machine, shared only when you say so.

What it is

Safehold is a local MCP server that stores passports, visas, driving licences, and other identity documents. When an AI agent needs your passport number to book a flight, it asks Safehold. You see what's being requested and why, then approve or deny. Nothing leaves your device.

Why it exists

Your identity data is scattered across dozens of services you don't control: banks, airlines, government portals, SaaS products. Each one holds a copy and decides for itself how to store it, whether to sell it, and how long it'll stick around. AI agents make this worse. Anything an agent can access, every API it touches can reach too.

Safehold is the alternative. The agent gets a field value. You get a consent prompt instead of a privacy policy. Your files stay where they are.

Open source, so none of this requires trust.

What it isn't

A few things that get confused with safehold but solve a different problem.

1Password, Bitwarden, op CLI

You can stuff a passport into 1Password. The op CLI can read specific fields. There's even an official 1Password MCP server now. So yes, parts of this overlap.

What's different is the trust model. Once your 1Password vault is unlocked, anything with that session can read anything in it. No per-field consent, no "why are you asking for this?" prompt. The vault is built for humans typing passwords, not for agents pulling structured fields with a stated reason.

Safehold gates each field individually, every time, with a purpose attached.

Browser autofill, Apple Passwords, iCloud Keychain

Works fine if your agent is a browser filling a form. Doesn't help when it isn't. Agents working over APIs, CLI tools, or other MCP servers never see the autofill layer, so you end up copy-pasting from a passwords app into a chat anyway. Safehold gives a non-browser agent a way to request a passport number without that detour.

Apple Wallet, Google Wallet, government digital ID apps

Locked to the platform. Apple Wallet won't hand your boarding pass to a third-party agent. mDL pilots and the EU eIDAS wallet are issuer-controlled and narrow in scope. None of them speak MCP, and none will let an agent on your laptop request a field from your driving licence.

Pasting it into the chat

People do this. They drop their passport number into a system prompt, or type it into a message and trust the agent to handle it. The number then lives in chat history, gets shipped to the model provider, and sticks around in their logs. You also have no record of which agent used it for what.

Safehold keeps the document on disk, encrypted, and only releases the one field the agent asked for. Nothing extra ends up in the conversation.

A plain JSON file plus the filesystem MCP

Tempting if you're a developer. ~/identity.json plus the filesystem MCP is three lines of config and done. It also gives every other agent on the box the same access, with no encryption at rest, no logging, and no consent step. The first time that file shows up in a backup or a screen share, you have a problem.

Persona, Stripe Identity, Onfido, Plaid

KYC vendors. You send them your documents, they store them, and partner services query them on your behalf. The model assumes you don't hold the keys. Safehold takes the other direction: documents stay on your machine and you approve every release.

HashiCorp Vault, AWS Secrets Manager, Doppler, Infisical

Built for service secrets, not personal identity. No human-facing consent flow, no schema for documents, and operationally heavy for someone who just wants their passport readable by an agent on their laptop.

How it works

Safehold runs as a stdio MCP server. Documents go into ~/.safehold/vault/ as individual encrypted files. Every retrieval is logged to ~/.safehold/access-log.enc.

Encryption is XChaCha20-Poly1305 via @noble/ciphers, audited by Cure53, no external dependencies. On first run a 32-byte key is written to ~/.safehold/master.key (mode 0600).

Other MCP clients can request specific fields from your documents. You control what gets shared, every time.

Tools (v1)

ToolDescription
add_documentAdd a document to the vault
list_documentsList stored documents (metadata only)
update_documentUpdate fields on an existing document
delete_documentPermanently delete a document
get_passportRetrieve specific fields from a passport
get_national_idRetrieve specific fields from a national ID
get_driving_licenseRetrieve specific fields from a driving licence
get_visaRetrieve specific fields from a visa
get_photoRetrieve a stored photo (passport style, selfie, or signature)
get_documentRetrieve fields from any document type
get_access_logView what was accessed, by which client, and when

Every retrieval tool accepts a purpose parameter. That purpose is shown to you at consent time so you always know why a field is being requested.

Prompts (v1)

Safehold also ships ready-made workflow prompts. These show up as slash commands in MCP clients (Claude Desktop, Cursor, Claude Code, Zed) so common tasks don't have to be re-prompted from scratch.

PromptDescription
onboard_documentGuided intake to add or update a passport, national ID, driving licence, or visa
travel_preflightCheck passport and visa validity for an upcoming trip
selective_shareShare the minimum a service actually needs, with an explicit consent purpose
expiry_auditSurface anything expiring soon (metadata only, no consent prompts)

Prompts don't access your data themselves. They tell the calling agent which Safehold tools to call, in what order, and with what purpose. Every retrieval still goes through the normal consent flow.

Skills

safehold-skills is a companion package of Claude Code skills that turn Safehold from a vault into finished workflows: airline check-in, ESTA applications, KYC forms, and so on. Each skill pairs Safehold with a browser MCP and asks for fields one at a time with a precise purpose string.

bash
npx safehold-skills install

Quick Install

Requires Node.js >=20. No build step.

Most clients use the same JSON config — just the file path differs:

json
{  "mcpServers": {    "safehold": {      "command": "npx",      "args": ["-y", "safehold@latest"]    }  }}
ClientConfig file
Claude Desktop (macOS)~/Library/Application Support/Claude/claude_desktop_config.json
Claude Desktop (Windows)%APPDATA%\Claude\claude_desktop_config.json
Cursor (project).cursor/mcp.json
Cursor (global)~/.cursor/mcp.json
Windsurf~/.codeium/windsurf/mcp_config.json
Amazon Q Developer (global)~/.aws/amazonq/mcp.json
Amazon Q Developer (project).amazonq/mcp.json

Clients with slightly different config formats:

Claude Code (CLI)

bash
claude mcp add safehold npx -- -y safehold@latest

VS Code (GitHub Copilot) — uses "servers" key, enable Agent mode in Copilot Chat. Edit .vscode/mcp.json (project) or ~/Library/Application Support/Code/User/mcp.json (global, macOS):

json
{  "servers": {    "safehold": {      "command": "npx",      "args": ["-y", "safehold@latest"]    }  }}

Zed — uses "context_servers" key in ~/.config/zed/settings.json:

json
{  "context_servers": {    "safehold": {      "command": "npx",      "args": ["-y", "safehold@latest"]    }  }}

OpenAI Codex CLI — TOML format in ~/.codex/config.toml:

toml
[mcp_servers.safehold]command = "npx"args = ["-y", "safehold@latest"]

Continue.dev — create .continue/mcpServers/safehold.json (enable Agent mode):

json
{  "command": "npx",  "args": ["-y", "safehold@latest"]}

Hermes (Nous Research) — YAML format in ~/.hermes/config.yaml:

yaml
mcp_servers:  safehold:    command: npx    args: ["-y", "safehold@latest"]

OpenClaw — uses "servers" key in ~/.openclaw/mcp.json:

json
{  "servers": {    "safehold": {      "command": "npx",      "args": ["-y", "safehold@latest"]    }  }}

Roadmap

  • get_travel_authorization - ESTA, eTA, UK ETA, and similar
  • get_vaccination_certificate - international vaccination records
  • get_residency_permit - BRP, Green Card, and equivalents
  • get_birth_certificate
  • get_tax_id - NI number, SSN, TFN, and equivalents
  • get_proof_of_address - utility bills, bank letters
  • get_travel_insurance

Development

bash
npm installnpm test          # run testsnpm run typecheck # type checknpm run build     # compile to dist/npm run dev       # run directly with tsx (no build step)

Releasing

bash
npm version patch   # bug fix  (0.1.0 → 0.1.1)npm version minor   # feature  (0.1.0 → 0.2.0)npm version major   # breaking (0.1.0 → 1.0.0)

Checks that you're on a clean, up-to-date main branch, bumps the version, commits, tags, and pushes. CI publishes to npm.

Built by

Spacetime Technology

來源:README.md,提交 4243403

工具

0
SourceWeft 尚未在沙箱中啟動過該軟體包,因此其工具未知。

版本歷史

1
  1. v1.2.0最新Sep 16, 2026

評分

已滿足適用檢查項的 50%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通25 分

    請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。

  • 已宣告認證方式10 分

    請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

  • 已列出工具15 分

    請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。

  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分