Claude Code・Codex 対応(MCP)· macOS 常駐

API キーを、
コードと Git
から追い出す。

Vaulty は macOS のローカルシークレットストア。API キーは Keychain に保管し、Claude Code や Codex には MCP 経由で——あなたが承認したときだけ——値を渡します。

ローカル完結
なぜ Vaulty か

.env と直書きを、やめる。

API キーは .env やソースに書かれ、うっかり Git に乗り、AI のコンテキストに紛れ込みます。鍵の置き場所を一箇所にまとめます。

これまで

OPENAI_API_KEY=sk-proj-xY7...本物のキー ANTHROPIC_API_KEY=sk-ant-...本物のキー
  • 平文の .env がリポジトリ近くに散在
  • .gitignore 漏れで Git 履歴に残る
  • どのツールに渡したか追えない

Vaulty

// secrets.json に残るのは名前だけ { "version": 1, "secrets": [{ "name": "OPENAI_API_KEY" }] }
  • 生値は macOS Keychain のみ
  • 取得は vault_get_secret(name) 経由だけ
  • 渡すたびに確認ダイアログで承認
仕組み

保存 → 接続 → 承認して渡す

3 ステップ。鍵は Keychain に置いたまま、AI が必要なときだけ、あなたの許可を経て値が渡ります。

01

保存する

メニューバーから金庫を開き、名前と値を入力。生値は macOS Keychain だけに保存され、secrets.json には名前しか残りません。

02

接続する

AI クライアントをローカル MCP に接続。
claude mcp add --transport http vaulty http://127.0.0.1:7832/mcp

03

承認して渡す

AI が vault_get_secret(name) を呼ぶと確認ダイアログが表示。許可すると値が AI に渡ります(20 秒で自動的に拒否)。

vaulty — zsh
画面

これが、Vaulty。

メニューバーから開く金庫、保存済みシークレットの一覧、そして AI に値を渡す前の承認ダイアログ。実際のアプリ画面です。

Vaulty
macOS メニューバー常駐 · ローカルシークレットストア
ハブ — 金庫を開く / Claude Code・Codex を接続
一覧 — 保存済みシークレット(MVP 上限 3 件)
確認 — 値を渡す前に、毎回あなたが承認(20 秒で自動拒否)
特徴

ローカル完結。承認は、あなたの手に。

Keychain だけに保存

生値は macOS Keychain のみ。secrets.json や console に値は出ません。reveal UI も持ちません。

二段階の認可

Tray の全体スイッチ(停止/再開)と、1 件ごとの確認ダイアログ。停止中は vault_get_secret が permission_denied になります。

メニューバー常駐

軽量なトレイ常駐アプリ。ログイン時に自動起動し、いつでもメニューバーから取得の停止・再開ができます。

編集できる

保存済みシークレットの名前・値の更新に対応。鍵のローテーションもメニューバーから。

ローカル完結の MCP

127.0.0.1:7832/mcp バインド固定。読み出しは vault_get_secret のみで、書き込み API は MCP に公開しません。

ログを残さない

永続ログや監査メタは保存しません。値は secrets.json にも console にも書き出しません。

責任範囲

誇張しません。境界を、はっきりと。

Vaulty が守る範囲と、守れない範囲を正直に示します。

やること

  • API キー等を名前付きでローカル保存(生値は Keychain のみ)
  • あなたの承認を経て、AI に値を渡す
  • .env やコードへの直書きを避ける運用を提案

やらないこと(責任範囲外)

  • 承認後に AI へ渡った値のその後(会話履歴・プロバイダ側ログ・学習データへの混入)
  • 永続ログ・監査メタの保存
  • 渡した先の AI / ネットワークの安全性の保証

MVP の制約 — シークレット保存数の上限は 3 件 / 対応 OS は macOS のみ。

クイックスタート

クローンして、起動する。

配布ビルド(.dmg / Homebrew)は Roadmap(Phase 2+)。いまはソースから起動します。

1 — クローンして起動

bash
$ git clone <repo> vaulty
$ cd vaulty
$ npm install
$ npm run dev

2 — AI クライアントを接続

bash
$ claude mcp add --transport http vaulty http://127.0.0.1:7832/mcp

Codex も同様にハブ画面のカードから設定できます。Cursor / Cline 専用の導線は今後(Phase 2+)。MCP 対応クライアントなら手動接続も可能です。

FAQ

よくある質問

シークレットはどこに保存されますか?+
生値は macOS Keychain にだけ保存されます。secrets.json に残るのは名前の一覧で、値は書き出されません。保存済みの値を画面に表示する reveal UI も持ちません。
値は AI に渡りますか?+
vault_get_secret は、あなたが確認ダイアログで許可したときに値を AI へ返します。許可しなければ渡りません(20 秒で自動的に拒否)。なお、いったん渡った後の値の扱い(会話履歴やプロバイダ側のログなど)は Vaulty の責任範囲外です。
取得を一時的に止められますか?+
メニューバーの「停止 / 再開」で取得全体を切り替えられます。停止中は vault_get_secret が permission_denied を返し、名前一覧の vault_list_secrets は引き続き応答します。トレイ表示と内部設定は二方向で同期します。
どの AI クライアントに対応していますか?+
MVP では Claude Code と Codex 向けの設定導線をハブ画面に用意しています。MCP に対応したクライアントであれば http://127.0.0.1:7832/mcp へ手動接続も可能です。Cursor / Cline 専用の導線は Roadmap(Phase 2+)です。
対応 OS は?保存数に上限はありますか?+
対応 OS は macOS のみです。シークレット保存数は MVP の上限として 3 件まで。上限の緩和や配布版(.dmg / Homebrew)は Roadmap(Phase 2+)で検討しています。

鍵は、金庫に。

コードと Git からシークレットを追い出す。最初の 1 本から。