mcpField
V
vaultguard

vaultguard

ローカル
github.comセキュリティ06 週間前に更新

vaultguard について

vaultguardは、Obsidianに秘密情報を保存するユーザー向けのローカルツールで、値を会話に露出させず、名前でエージェントに使わせます。MCP経由でコマンド環境に秘密情報を渡し、暗号化保存、アクセス監査、出力のマスキングを行います。

主な機能

  1. 01AES-256-GCMによるObsidian秘密情報の暗号化
  2. 02MCP経由で名前を指定して秘密情報にアクセス
  3. 03値を返さずコマンド環境へ秘密情報を注入
  4. 04アクセス監査とコマンド出力のマスキング
  5. 05追加・ローテーション・再暗号化用CLIコマンド

活用シーン

  1. 01値を露出させずデータベースURLでクエリを実行
  2. 02Obsidianに保存した秘密情報をローテーション
  3. 03アクセス記録とコマンド結果を確認

MCP 対応

ローカルstdio MCPサーバーとして`run_with_secret`と、既定で無効な`get_secret`ツールを提供します。通常、秘密情報はコマンド環境にのみ注入され、呼び出しの監査やコマンド出力からの値のマスキングも可能です。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"ashishrao-4-vaultguard": {
"command": "npx",
"args": [
"-y",
"@ashishrao-4/vaultguard"
],
"env": {
"VAULTGUARD_PASSPHRASE": "<VAULTGUARD_PASSPHRASE>",
"VAULTGUARD_VAULT_PATH": "<VAULTGUARD_VAULT_PATH>",
"VAULTGUARD_HOME": "<VAULTGUARD_HOME>",
"VAULTGUARD_ALLOW_GET_SECRET": "<VAULTGUARD_ALLOW_GET_SECRET>"
}
}
}
}
起動コマンドnpx -y @ashishrao-4/vaultguard
設定が必要な環境変数
VAULTGUARD_PASSPHRASEシークレットPassphrase that decrypts the encrypted secret blocks in your Obsidian vault.
VAULTGUARD_VAULT_PATHPath to your Obsidian vault (overrides the one in ~/.vaultguard/config.json).
VAULTGUARD_HOMEConfig directory (defaults to ~/.vaultguard).
VAULTGUARD_ALLOW_GET_SECRETシークレットSet to 1 to enable get_secret (default: disabled so values never reach the agent).

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
npm@ashishrao-4/vaultguard0.1.2

ツール

2

掲載時のツール一覧 · 2 週間前に更新

このツールにパラメーターはありません。

詳細

vaultguard
🔐 vaultguard
Obsidian の Vault を、AI エージェントから守ります。

npx @ashishrao-4/vaultguard init · 依存関係ゼロ · 純粋な Node · クロスプラットフォーム


問題

AI エージェントは強力です。コードを作成し、コマンドを実行し、いつかこう尋ねるでしょう。「データベースの URL を教えてください」

それを渡すと、その値は会話のすべてのトランスクリプト、ログ、チェックポイント、バックアップに残ります。1 か月後、あるいは 1 年後にローテーションしても、古い値はまだ残っています。

Vault 自体 — Obsidian — は、自分で暗号化しない限り暗号化されません。そして、エージェントにノートを読ませるということは、秘密情報も読ませるということです。

vaultguard の機能

秘密情報は、あなたの Obsidian Vault に AES-256-GCM の暗号文として保存されます。エージェントは MCP 経由で名前を指定して秘密情報を取得します。値を環境に注入してコマンドを実行するため、エージェントが値を目にすることはありません。また、アクセスはすべて監査されます。

vaultguard のアーキテクチャ
シンプルに説明すると、エージェントが名前を指定して要求し、vaultguard が必要に応じて復号します。値が会話に含まれることはありません。

  • データはあなたが所有します。 クラウド、SaaS、サーバーは不要です。暗号化されたブロックは通常の Markdown です。
  • Obsidian で読めます。 暗号化されたブロックはノートのように見え、ワンクリックで表示できます。
  • 秘密情報を使って処理を実行するようエージェントに指示できます。 値がトランスクリプトに現れることはありません。
  • npm 依存関係ゼロ。 純粋な Node ≥ 18。Windows / macOS / Linux に対応。

クイックスタート

1 · インストール
npm install -g @ashishrao-4/vaultguard
2 · Vault を指定する
vaultguard init --vault "C:\Users\you\Documents\Obsidian Vault"

パスフレーズを求められます。Vault 内のすべてのブロックを暗号化・復号するための鍵です。 その後、次の処理が行われます。

  • Vault に Secrets.md を作成します。
  • Inline Secret Block プラグインを Vault に自動インストールします。
  • ~/.vaultguard/config.json に設定を書き込みます。パスフレーズは含まれません(VAULTGUARD_PASSPHRASE 経由で指定します)。

Obsidian を再起動して、プラグインを有効にしてください:設定 → コミュニティプラグイン → Inline Secret Block → 有効化。

デフォルトでは、パスフレーズがディスクに書き込まれることはありません。環境変数の使用を推奨します: VAULTGUARD_PASSPHRASE(または DOORMAN_PASSPHRASE)。利便性のために保存する場合は、 セキュリティが低下することを承知のうえで、代わりに vaultguard init --store-passphrase を実行してください(脅威モデルを参照)。

3 · 最初の秘密情報を追加する — Obsidian を使う方法

Obsidian で Secrets.md を開き、次の平文ブロックを追加します。

```secret DATABASE-URL
Mydatabaseurl@postgres
```

表示をクリックすると、プラグインがすぐに暗号化された secret-lock ブロックに置き換えます。元の値は消え、次の内容だけが残ります。

```secret-lock DATABASE-URL
Nx60U4Ph/+1CO+58Zr00HXhEW9GZ6voHlpS+bEXPpP69avbJaSfafZCC2dpPn6UgdMN+3PJUd+UPm39YAXhFTbHvLUpHDndzbODsL8fOm7IMWC16zjSQCW7CbRWklmUxOGl0lX2qpQ==
```

これで完了です。同じ値をいつでも使えます。もう一度表示をクリックしてください。

Obsidian を使っていない場合は、CLI を使ってください:

vaultguard add DB_URL     # 非表示プロンプト
vaultguard set DB_URL     # その場でローテーション
4 · エージェントを接続する
vaultguard mcp

ハーネス用の設定をすぐに出力します。

opencode — opencode.json(またはアプリで全体設定)に追加します:

{
  "mcp": {
    "vaultguard": {
      "type": "local",
      "command": ["node", "C:/path/to/vaultguard/src/server.mjs"],
      "environment": { "VAULTGUARD_PASSPHRASE": "your-passphrase" }
    }
  }
}

Claude Code:

claude mcp add vaultguard -e VAULTGUARD_PASSPHRASE=your-passphrase -- node C:/path/to/vaultguard/src/server.mjs

Cursor: プロジェクトの .cursor/mcp.json(または MCP 設定タブ)に同じサーバーを追加します:

{
  "mcpServers": {
    "vaultguard": {
      "command": "node",
      "args": ["C:/path/to/vaultguard/src/server.mjs"],
      "env": { "VAULTGUARD_PASSPHRASE": "your-passphrase" }
    }
  }
}
5 · 使用する
you : "run a quick sanity check against DB_URL"
agent: run_with_secret(command: "psql $DB_URL -c 'SELECT 1'", secrets: ["DB_URL"])
you :  ✔ exit 0  ·  audit entry written  ·  no secret leaked
  • run_with_secret — 秘密情報はコマンドの環境にのみ注入されます。
  • 出力は秘匿処理されます。秘密情報が誤って出力された場合は、[REDACTED:NAME] に置き換えられます。
  • get_secret — 値がエージェントに渡らないよう、デフォルトでは無効です。ツールが値を直接必要とする場合は、設定の allowGetSecret: true で有効にしてください。

セキュリティモデル

レイヤー防止するもの
保存時AES-256-GCM、PBKDF2-SHA-256(250,000 回の反復、16 バイトのソルト、値ごとに新しい 12 バイトの IV)。Inline Secret Block プラグインとバイト単位で互換性があります。
承認ゲートrequireApproval: false(または VAULTGUARD_REQUIRE_APPROVAL=0)を設定しない限り、run_with_secret はデフォルトで拒否されます。
シークレットアクセスゲートget_secret はデフォルトで無効です。値がエージェントに渡されることはありません。allowGetSecret: true を設定した場合にのみ有効にしてください。想定される方法は run_with_secret(環境変数への注入により、値が表示されることはありません)です。
ホスト許可リスト名前が指定されたクライアント(MCP の clientInfo から取得)のみがツールを呼び出せます。リストが空の場合はすべて許可します。
コマンド許可リスト指定したコマンドのプレフィックスのみ実行できます(例:["psql", "node", "git"])。空の場合はすべて許可します。
監査ログすべての呼び出しについて、誰が(ホスト)、何を、どのシークレットを使い、結果がどうだったかを ~/.vaultguard/audit.jsonl に追記します。vaultguard audit で確認できます。
出力のマスキングコマンド出力から、シークレットの値と先頭 8 文字を伏せ字にします。
設定

~/.vaultguard/config.json を編集します:

{
  "vaultPath": "C:/Users/you/Documents/Obsidian Vault",
  // passphrase is NOT stored here by default — provide VAULTGUARD_PASSPHRASE instead
  "allowlist": { "hosts": [], "commands": ["psql", "node"] },
  "requireApproval": false,          // true (default) = gate run_with_secret
  "audit": true,
  "allowGetSecret": false            // false (default) = values never reach the agent
}

パスフレーズがこのファイルに保存される唯一の方法は、vaultguard init --store-passphrase を実行して "storePassphraseOnDisk": true を設定し、"passphrase" を含めることです。それ以外の場合、パスフレーズは VAULTGUARD_PASSPHRASE 環境変数または CLI プロンプトから読み取られます。

環境変数上書きする設定
VAULTGUARD_VAULT_PATH / VAULT_PATHvault のパス
VAULTGUARD_PASSPHRASE / DOORMAN_PASSPHRASEパスフレーズ
VAULTGUARD_HOME設定ディレクトリ(デフォルトは ~/.vaultguard)
VAULTGUARD_REQUIRE_APPROVAL=0自動承認
VAULTGUARD_AUDIT=0監査を無効化
VAULTGUARD_ALLOW_GET_SECRET=1get_secret を有効化(デフォルト:オフ)

パスフレーズの管理: vaultguard は、オプトインしない限りパスフレーズをディスクに書き込みません(init --store-passphrase)。各ハーネスの設定で VAULTGUARD_PASSPHRASE を指定し(手順 4 を参照)、~/.vaultguard を SSH キーと同様に保護してください。パスフレーズを変更しましたか?vaultguard rekey ですべてのブロックを再暗号化してから、設定した環境変数を更新してください。


CLI リファレンス

コマンド機能
vaultguard initvault とパスフレーズを設定し、Secrets.md を作成して、プラグインをインストールします
vaultguard add <NAME>新しいシークレットを暗号化して保存します(対話形式または --value)
vaultguard set <NAME>シークレットをその場でローテーションします
vaultguard rekeyすべてのブロックを新しいパスフレーズで再暗号化します(対話形式、または --old-passphrase/--new-passphrase)
vaultguard listシークレット名を一覧表示します(値は表示しません)
vaultguard audit [--lines n]監査ログの末尾を表示します
vaultguard mcpハーネス固有の MCP 設定を出力します
vaultguard info設定とセキュリティ状況を表示します
vaultguard test暗号化のセルフテストを実行します

脅威モデル — 使用すべきでない場合

vaultguard は便利な機能を提供する薄いレイヤーであり、シークレットマネージャーではありません。AI エージェントのトランスクリプト、ログ、チェックポイントにシークレットの値が残らないようにするのが役割です。

保護できないもの:

  • 侵害されたマシンやハーネス。 パスフレーズ(または保存を明示的に許可した設定)はディスク上にあります。あなたのユーザーとして実行されるプロセス(バックアップツール、ランサムウェア、侵害されたプラグイン、IDE など)は、ファイルを読み取り、ボールトを復号できます。
  • 悪意のあるエージェント。 エージェントが環境内のシークレットを使ってコマンドを実行することが、この仕組みの前提です。これは「エージェントはあなた自身である」と捉えてください。まずはコマンドの許可リストを設定し、vaultguard audit を確認してください。自分自身には許可しないアクセスを付与してはいけません。
  • 弱いパスフレーズ。 AES-256-GCM + PBKDF2 の強度は、パスフレーズ次第です。長くランダムなものを使ってください(パスワードマネージャーで生成して保存できます)。
  • 正規の経路を介した外部流出。 やる気のあるエージェントは、暗号文や生の値を、アクセス可能な場所ならどこへでもコピーできます。vaultguard は障壁であって、境界ではありません。
  • プラグインのサプライチェーン。 vaultguard init は GitHub のリリースから Inline Secret Block プラグインをダウンロードします。パスフレーズを知る悪意のあるプラグインは、すべてを復号できます。必要であれば、バージョンを固定して検証してください。

次のような場合に使用してください: *「シークレットの値をチャットに貼り付けずに、エージェントにシークレットを使って作業させたい」*と考えており、上記の残存リスクを許容できる場合。

次のような場合は使用しないでください: ローテーションポリシー、ハードウェアで保護された鍵、ネイティブプラグインから平文にアクセスできる手順を一切設けないことなど、実際のシークレット管理に必要な保証が必要な場合。共有マシンや CI マシン上の悪意のあるエージェントを脅威モデルに含める場合、またはボールト自体の保存時暗号化が必要な場合も同様です(その場合は Obsidian 独自のボールト暗号化、または暗号化ボリュームが適切です)。


FAQ

ボールトは Git に安全ですか? 暗号化されたブロックは通常の Markdown なので、コミット、同期、または Obsidian が動作する場所への保存に安全です。デフォルトではパスフレーズが ~/.vaultguard/config.json に保存されなくなったため、このファイルをコミットするとボールトのパスや設定は漏えいしますが、鍵は漏えいしません。

パスフレーズを忘れた場合はどうなりますか? ブロックは AES-256-GCM で暗号化されています。復元はできません。それが目的です。

どの Obsidian プラグインを使いますか? Inline Secret Block です。vaultguard init がインストールします。

サーバーは必要ですか? いいえ。ローカルの stdio MCP サーバーです(node src/server.mjs)。ポートをリッスンするものはありません。


ライセンス

MIT © vaultguard の貢献者。

このパッケージは Inline Secret Block プラグイン(こちらも MIT)をインストールします。プラグインは init 時に公式リリースからダウンロードされ、このパッケージに同梱されているわけではありません。このプロジェクトは Node.js の組み込み機能(crypto)のみを使用するため、管理が必要な依存関係のライセンスはありません。


ボールトを守り、エージェントに作業させましょう。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。